clefbase 2.0.8 → 2.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.
- package/README.md +748 -55
- package/dist/__tests__/full-feature-validation.test.d.ts +6 -0
- package/dist/__tests__/full-feature-validation.test.d.ts.map +1 -0
- package/dist/__tests__/full-feature-validation.test.js +329 -0
- package/dist/__tests__/full-feature-validation.test.js.map +1 -0
- package/dist/ai.d.ts +294 -9
- package/dist/ai.d.ts.map +1 -1
- package/dist/ai.js +198 -8
- package/dist/ai.js.map +1 -1
- package/dist/app.d.ts +7 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +18 -3
- package/dist/app.js.map +1 -1
- package/dist/auth/index.d.ts +28 -3
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +71 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/cli-src/cli/commands/init.js +43 -1
- package/dist/cli-src/cli/config.js +3 -0
- package/dist/cli.js +45 -2
- package/dist/db/index.d.ts +38 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +55 -1
- package/dist/db/index.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/react/index.d.ts +0 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +1 -3
- package/dist/react/index.js.map +1 -1
- package/dist/storage/index.d.ts +3 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +9 -5
- package/dist/storage/index.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-feature-validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/full-feature-validation.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Comprehensive feature validation test suite for clefbase SDK
|
|
4
|
+
* Tests all implemented features to ensure they work correctly
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const vitest_1 = require("vitest");
|
|
8
|
+
const index_1 = require("../index");
|
|
9
|
+
// ─── Test Configuration ──────────────────────────────────────────────────────
|
|
10
|
+
const TEST_CONFIG = {
|
|
11
|
+
serverUrl: "http://localhost:3000",
|
|
12
|
+
projectId: "test-project",
|
|
13
|
+
apiKey: "test-api-key",
|
|
14
|
+
gatewayUrl: "http://localhost:8080/auth",
|
|
15
|
+
};
|
|
16
|
+
let app;
|
|
17
|
+
(0, vitest_1.beforeEach)(() => {
|
|
18
|
+
app = (0, index_1.initClefbase)(TEST_CONFIG, `test-${Date.now()}`);
|
|
19
|
+
});
|
|
20
|
+
(0, vitest_1.afterEach)(() => {
|
|
21
|
+
vitest_1.vi.clearAllMocks();
|
|
22
|
+
});
|
|
23
|
+
// ─── Gateway URL Configuration ────────────────────────────────────────────────
|
|
24
|
+
(0, vitest_1.describe)("Gateway URL Configuration", () => {
|
|
25
|
+
(0, vitest_1.it)("should use default gateway URL when not specified", () => {
|
|
26
|
+
const defaultApp = (0, index_1.initClefbase)({
|
|
27
|
+
serverUrl: "http://localhost:3000",
|
|
28
|
+
projectId: "test",
|
|
29
|
+
apiKey: "key",
|
|
30
|
+
});
|
|
31
|
+
const auth = (0, index_1.getAuth)(defaultApp);
|
|
32
|
+
(0, vitest_1.expect)(auth.gatewayUrl).toBe("https://auth.cleforyx.com");
|
|
33
|
+
});
|
|
34
|
+
(0, vitest_1.it)("should use custom gateway URL from config", () => {
|
|
35
|
+
const customApp = (0, index_1.initClefbase)({
|
|
36
|
+
serverUrl: "http://localhost:3000",
|
|
37
|
+
projectId: "test",
|
|
38
|
+
apiKey: "key",
|
|
39
|
+
gatewayUrl: "https://custom-auth.example.com",
|
|
40
|
+
});
|
|
41
|
+
const auth = (0, index_1.getAuth)(customApp);
|
|
42
|
+
(0, vitest_1.expect)(auth.gatewayUrl).toBe("https://custom-auth.example.com");
|
|
43
|
+
});
|
|
44
|
+
(0, vitest_1.it)("should update gateway URL using setGatewayUrl()", () => {
|
|
45
|
+
const auth = (0, index_1.getAuth)(app);
|
|
46
|
+
const originalUrl = auth.gatewayUrl;
|
|
47
|
+
const newUrl = "https://new-auth.example.com";
|
|
48
|
+
(0, index_1.setGatewayUrl)(app, newUrl);
|
|
49
|
+
(0, vitest_1.expect)(auth.gatewayUrl).toBe(newUrl);
|
|
50
|
+
(0, vitest_1.expect)(auth.gatewayUrl).not.toBe(originalUrl);
|
|
51
|
+
});
|
|
52
|
+
(0, vitest_1.it)("should trim trailing slashes from gateway URL", () => {
|
|
53
|
+
const auth = (0, index_1.getAuth)(app);
|
|
54
|
+
(0, index_1.setGatewayUrl)(app, "https://auth.example.com///");
|
|
55
|
+
(0, vitest_1.expect)(auth.gatewayUrl).toBe("https://auth.example.com");
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
// ─── Public Auth Methods ──────────────────────────────────────────────────────
|
|
59
|
+
(0, vitest_1.describe)("Public Auth Methods", () => {
|
|
60
|
+
(0, vitest_1.it)("should have requestPasswordReset method", () => {
|
|
61
|
+
const auth = (0, index_1.getAuth)(app);
|
|
62
|
+
(0, vitest_1.expect)(auth.requestPasswordReset).toBeDefined();
|
|
63
|
+
(0, vitest_1.expect)(typeof auth.requestPasswordReset).toBe("function");
|
|
64
|
+
});
|
|
65
|
+
(0, vitest_1.it)("should have resetPassword method", () => {
|
|
66
|
+
const auth = (0, index_1.getAuth)(app);
|
|
67
|
+
(0, vitest_1.expect)(auth.resetPassword).toBeDefined();
|
|
68
|
+
(0, vitest_1.expect)(typeof auth.resetPassword).toBe("function");
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.it)("should have requestEmailVerification method", () => {
|
|
71
|
+
const auth = (0, index_1.getAuth)(app);
|
|
72
|
+
(0, vitest_1.expect)(auth.requestEmailVerification).toBeDefined();
|
|
73
|
+
(0, vitest_1.expect)(typeof auth.requestEmailVerification).toBe("function");
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.it)("should have verifyEmail method", () => {
|
|
76
|
+
const auth = (0, index_1.getAuth)(app);
|
|
77
|
+
(0, vitest_1.expect)(auth.verifyEmail).toBeDefined();
|
|
78
|
+
(0, vitest_1.expect)(typeof auth.verifyEmail).toBe("function");
|
|
79
|
+
});
|
|
80
|
+
(0, vitest_1.it)("methods should accept correct parameter types", async () => {
|
|
81
|
+
const auth = (0, index_1.getAuth)(app);
|
|
82
|
+
// These should return promises
|
|
83
|
+
(0, vitest_1.expect)(auth.requestPasswordReset("test@example.com")).toBeInstanceOf(Promise);
|
|
84
|
+
(0, vitest_1.expect)(auth.resetPassword("token", "newpass")).toBeInstanceOf(Promise);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
// ─── Batch Delete ───────────────────────────────────────────────────────────
|
|
88
|
+
(0, vitest_1.describe)("Batch Delete", () => {
|
|
89
|
+
(0, vitest_1.it)("should have batchDelete method on collections", () => {
|
|
90
|
+
const db = (0, index_1.getDatabase)(app);
|
|
91
|
+
const collection = db.collection("test");
|
|
92
|
+
(0, vitest_1.expect)(collection.batchDelete).toBeDefined();
|
|
93
|
+
(0, vitest_1.expect)(typeof collection.batchDelete).toBe("function");
|
|
94
|
+
});
|
|
95
|
+
(0, vitest_1.it)("should require non-empty array of IDs", async () => {
|
|
96
|
+
const db = (0, index_1.getDatabase)(app);
|
|
97
|
+
const collection = db.collection("test");
|
|
98
|
+
await (0, vitest_1.expect)(collection.batchDelete([])).rejects.toThrow("ids must be a non-empty array");
|
|
99
|
+
});
|
|
100
|
+
(0, vitest_1.it)("should enforce max 500 documents per batch", async () => {
|
|
101
|
+
const db = (0, index_1.getDatabase)(app);
|
|
102
|
+
const collection = db.collection("test");
|
|
103
|
+
const tooManyIds = Array.from({ length: 501 }, (_, i) => `id-${i}`);
|
|
104
|
+
await (0, vitest_1.expect)(collection.batchDelete(tooManyIds)).rejects.toThrow("Cannot batch delete more than 500 documents at once");
|
|
105
|
+
});
|
|
106
|
+
(0, vitest_1.it)("should accept array of document IDs", async () => {
|
|
107
|
+
const db = (0, index_1.getDatabase)(app);
|
|
108
|
+
const collection = db.collection("test");
|
|
109
|
+
const ids = ["doc1", "doc2", "doc3"];
|
|
110
|
+
// This will fail with network error in test, but should validate the call
|
|
111
|
+
try {
|
|
112
|
+
await collection.batchDelete(ids);
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
// Expected in test environment
|
|
116
|
+
(0, vitest_1.expect)(err.message).toContain("ECONNREFUSED");
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
// ─── Pagination Cursors ────────────────────────────────────────────────────
|
|
121
|
+
(0, vitest_1.describe)("Pagination Cursors", () => {
|
|
122
|
+
(0, vitest_1.it)("should have startAfter method", () => {
|
|
123
|
+
const db = (0, index_1.getDatabase)(app);
|
|
124
|
+
const query = db.collection("test").startAfter("doc123");
|
|
125
|
+
(0, vitest_1.expect)(query._startAfter).toBe("doc123");
|
|
126
|
+
});
|
|
127
|
+
(0, vitest_1.it)("should have endBefore method", () => {
|
|
128
|
+
const db = (0, index_1.getDatabase)(app);
|
|
129
|
+
const query = db.collection("test").endBefore("doc456");
|
|
130
|
+
(0, vitest_1.expect)(query._endBefore).toBe("doc456");
|
|
131
|
+
});
|
|
132
|
+
(0, vitest_1.it)("startAfter should clear endBefore", () => {
|
|
133
|
+
const db = (0, index_1.getDatabase)(app);
|
|
134
|
+
const query = db.collection("test")
|
|
135
|
+
.endBefore("doc456")
|
|
136
|
+
.startAfter("doc123");
|
|
137
|
+
(0, vitest_1.expect)(query._startAfter).toBe("doc123");
|
|
138
|
+
(0, vitest_1.expect)(query._endBefore).toBeUndefined();
|
|
139
|
+
});
|
|
140
|
+
(0, vitest_1.it)("endBefore should clear startAfter", () => {
|
|
141
|
+
const db = (0, index_1.getDatabase)(app);
|
|
142
|
+
const query = db.collection("test")
|
|
143
|
+
.startAfter("doc123")
|
|
144
|
+
.endBefore("doc456");
|
|
145
|
+
(0, vitest_1.expect)(query._endBefore).toBe("doc456");
|
|
146
|
+
(0, vitest_1.expect)(query._startAfter).toBeUndefined();
|
|
147
|
+
});
|
|
148
|
+
(0, vitest_1.it)("should chain with other query methods", () => {
|
|
149
|
+
const db = (0, index_1.getDatabase)(app);
|
|
150
|
+
const query = db.collection("test")
|
|
151
|
+
.where({ status: "active" })
|
|
152
|
+
.orderBy("createdAt", "desc")
|
|
153
|
+
.startAfter("doc123")
|
|
154
|
+
.limit(50);
|
|
155
|
+
(0, vitest_1.expect)(query._startAfter).toBe("doc123");
|
|
156
|
+
(0, vitest_1.expect)(query._limit).toBe(50);
|
|
157
|
+
(0, vitest_1.expect)(query._sort).toEqual({ field: "createdAt", dir: "desc" });
|
|
158
|
+
});
|
|
159
|
+
(0, vitest_1.it)("should support cursor pagination workflow", () => {
|
|
160
|
+
const db = (0, index_1.getDatabase)(app);
|
|
161
|
+
// First page
|
|
162
|
+
const page1 = db.collection("posts")
|
|
163
|
+
.orderBy("_createdAt", "desc")
|
|
164
|
+
.limit(10);
|
|
165
|
+
(0, vitest_1.expect)(page1._limit).toBe(10);
|
|
166
|
+
// Next page (cursor-based)
|
|
167
|
+
const page2 = db.collection("posts")
|
|
168
|
+
.orderBy("_createdAt", "desc")
|
|
169
|
+
.startAfter("last-doc-from-page1")
|
|
170
|
+
.limit(10);
|
|
171
|
+
(0, vitest_1.expect)(page2._startAfter).toBe("last-doc-from-page1");
|
|
172
|
+
(0, vitest_1.expect)(page2._limit).toBe(10);
|
|
173
|
+
// Previous page
|
|
174
|
+
const page3 = db.collection("posts")
|
|
175
|
+
.orderBy("_createdAt", "desc")
|
|
176
|
+
.endBefore("first-doc-from-page1")
|
|
177
|
+
.limit(10);
|
|
178
|
+
(0, vitest_1.expect)(page3._endBefore).toBe("first-doc-from-page1");
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
// ─── Real-time Subscriptions (SSE) ────────────────────────────────────────────
|
|
182
|
+
(0, vitest_1.describe)("Real-time Subscriptions", () => {
|
|
183
|
+
(0, vitest_1.it)("should have onSnapshot method on document references", () => {
|
|
184
|
+
const db = (0, index_1.getDatabase)(app);
|
|
185
|
+
const docRef = db.collection("test").doc("doc123");
|
|
186
|
+
(0, vitest_1.expect)(docRef.onSnapshot).toBeDefined();
|
|
187
|
+
(0, vitest_1.expect)(typeof docRef.onSnapshot).toBe("function");
|
|
188
|
+
});
|
|
189
|
+
(0, vitest_1.it)("should return an unsubscribe function", () => {
|
|
190
|
+
// Note: In a real environment, this would open an SSE connection
|
|
191
|
+
// For this test, we're just checking the method signature
|
|
192
|
+
const db = (0, index_1.getDatabase)(app);
|
|
193
|
+
const docRef = db.collection("test").doc("doc123");
|
|
194
|
+
// Mock EventSource to avoid actual SSE connection in test
|
|
195
|
+
const mockUnsubscribe = vitest_1.vi.fn();
|
|
196
|
+
globalThis.EventSource = vitest_1.vi.fn(() => ({
|
|
197
|
+
onmessage: null,
|
|
198
|
+
onerror: null,
|
|
199
|
+
close: mockUnsubscribe,
|
|
200
|
+
}));
|
|
201
|
+
const unsubscribe = docRef.onSnapshot(() => {
|
|
202
|
+
// callback
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.expect)(typeof unsubscribe).toBe("function");
|
|
205
|
+
});
|
|
206
|
+
(0, vitest_1.it)("should support error callback", () => {
|
|
207
|
+
const db = (0, index_1.getDatabase)(app);
|
|
208
|
+
const docRef = db.collection("test").doc("doc123");
|
|
209
|
+
const errorCallback = vitest_1.vi.fn();
|
|
210
|
+
const unsubscribe = docRef.onSnapshot(() => { }, errorCallback);
|
|
211
|
+
(0, vitest_1.expect)(typeof unsubscribe).toBe("function");
|
|
212
|
+
});
|
|
213
|
+
(0, vitest_1.it)("should construct correct SSE endpoint", () => {
|
|
214
|
+
const db = (0, index_1.getDatabase)(app);
|
|
215
|
+
const docRef = db.collection("users").doc("alice");
|
|
216
|
+
// Mock EventSource to capture the URL
|
|
217
|
+
let ssePath = "";
|
|
218
|
+
globalThis.EventSource = vitest_1.vi.fn((url) => {
|
|
219
|
+
ssePath = url;
|
|
220
|
+
return {
|
|
221
|
+
onmessage: null,
|
|
222
|
+
onerror: null,
|
|
223
|
+
close: vitest_1.vi.fn(),
|
|
224
|
+
};
|
|
225
|
+
});
|
|
226
|
+
docRef.onSnapshot(() => { });
|
|
227
|
+
// Should construct path like: http://localhost:3000/db/users/alice/stream
|
|
228
|
+
(0, vitest_1.expect)(ssePath).toContain("/users/alice/stream");
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
// ─── Collection Operations ────────────────────────────────────────────────
|
|
232
|
+
(0, vitest_1.describe)("Database Collection Operations", () => {
|
|
233
|
+
(0, vitest_1.it)("should support batch operations alongside regular CRUD", () => {
|
|
234
|
+
const db = (0, index_1.getDatabase)(app);
|
|
235
|
+
const collection = db.collection("items");
|
|
236
|
+
// Should have all methods available
|
|
237
|
+
(0, vitest_1.expect)(collection.add).toBeDefined();
|
|
238
|
+
(0, vitest_1.expect)(collection.doc).toBeDefined();
|
|
239
|
+
(0, vitest_1.expect)(collection.where).toBeDefined();
|
|
240
|
+
(0, vitest_1.expect)(collection.orderBy).toBeDefined();
|
|
241
|
+
(0, vitest_1.expect)(collection.limit).toBeDefined();
|
|
242
|
+
(0, vitest_1.expect)(collection.batchDelete).toBeDefined();
|
|
243
|
+
});
|
|
244
|
+
(0, vitest_1.it)("should support subcollections", () => {
|
|
245
|
+
const db = (0, index_1.getDatabase)(app);
|
|
246
|
+
const docRef = db.collection("posts").doc("p1");
|
|
247
|
+
const comments = docRef.collection("comments");
|
|
248
|
+
(0, vitest_1.expect)(comments).toBeDefined();
|
|
249
|
+
(0, vitest_1.expect)(comments.add).toBeDefined();
|
|
250
|
+
(0, vitest_1.expect)(comments.batchDelete).toBeDefined();
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
// ─── API Endpoint Routing ────────────────────────────────────────────────────
|
|
254
|
+
(0, vitest_1.describe)("API Endpoint Routing", () => {
|
|
255
|
+
(0, vitest_1.it)("should construct correct DB endpoints", () => {
|
|
256
|
+
const db = (0, index_1.getDatabase)(app);
|
|
257
|
+
const docRef = db.collection("users").doc("alice");
|
|
258
|
+
(0, vitest_1.expect)(docRef.path).toBe("users/alice");
|
|
259
|
+
(0, vitest_1.expect)(docRef.collectionPath).toBe("users");
|
|
260
|
+
(0, vitest_1.expect)(docRef.id).toBe("alice");
|
|
261
|
+
});
|
|
262
|
+
(0, vitest_1.it)("should construct correct subcollection endpoints", () => {
|
|
263
|
+
const db = (0, index_1.getDatabase)(app);
|
|
264
|
+
const comments = db.collection("posts").doc("p1").collection("comments");
|
|
265
|
+
(0, vitest_1.expect)(comments.path).toBe("posts/p1/comments");
|
|
266
|
+
});
|
|
267
|
+
(0, vitest_1.it)("should construct correct batch delete endpoint", () => {
|
|
268
|
+
const db = (0, index_1.getDatabase)(app);
|
|
269
|
+
const collection = db.collection("drafts");
|
|
270
|
+
// The endpoint should be /{path}/batch-delete
|
|
271
|
+
(0, vitest_1.expect)(collection.path).toBe("drafts");
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
// ─── Feature Completeness ─────────────────────────────────────────────────
|
|
275
|
+
(0, vitest_1.describe)("Feature Completeness Checklist", () => {
|
|
276
|
+
(0, vitest_1.it)("✅ Gateway URL is configurable and customizable", () => {
|
|
277
|
+
(0, vitest_1.expect)(TEST_CONFIG.gatewayUrl).toBeDefined();
|
|
278
|
+
const auth = (0, index_1.getAuth)(app);
|
|
279
|
+
(0, vitest_1.expect)(auth.gatewayUrl).toBe(TEST_CONFIG.gatewayUrl);
|
|
280
|
+
});
|
|
281
|
+
(0, vitest_1.it)("✅ Public auth methods are exposed", () => {
|
|
282
|
+
const auth = (0, index_1.getAuth)(app);
|
|
283
|
+
const methods = [
|
|
284
|
+
"requestPasswordReset",
|
|
285
|
+
"resetPassword",
|
|
286
|
+
"requestEmailVerification",
|
|
287
|
+
"verifyEmail",
|
|
288
|
+
];
|
|
289
|
+
methods.forEach(method => {
|
|
290
|
+
(0, vitest_1.expect)(auth[method]).toBeDefined();
|
|
291
|
+
(0, vitest_1.expect)(typeof auth[method]).toBe("function");
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
(0, vitest_1.it)("✅ Batch delete is available on collections", () => {
|
|
295
|
+
const db = (0, index_1.getDatabase)(app);
|
|
296
|
+
(0, vitest_1.expect)(db.collection("test").batchDelete).toBeDefined();
|
|
297
|
+
});
|
|
298
|
+
(0, vitest_1.it)("✅ Pagination cursors are implemented", () => {
|
|
299
|
+
const db = (0, index_1.getDatabase)(app);
|
|
300
|
+
const query = db.collection("test");
|
|
301
|
+
(0, vitest_1.expect)(query.startAfter).toBeDefined();
|
|
302
|
+
(0, vitest_1.expect)(query.endBefore).toBeDefined();
|
|
303
|
+
});
|
|
304
|
+
(0, vitest_1.it)("✅ Real-time subscriptions are available", () => {
|
|
305
|
+
const db = (0, index_1.getDatabase)(app);
|
|
306
|
+
(0, vitest_1.expect)(db.collection("test").doc("id").onSnapshot).toBeDefined();
|
|
307
|
+
});
|
|
308
|
+
(0, vitest_1.it)("✅ All features work with the correct endpoints", () => {
|
|
309
|
+
// Database endpoints
|
|
310
|
+
const db = (0, index_1.getDatabase)(app);
|
|
311
|
+
(0, vitest_1.expect)(db.collection("items").path).toBe("items");
|
|
312
|
+
// Auth endpoints
|
|
313
|
+
const auth = (0, index_1.getAuth)(app);
|
|
314
|
+
(0, vitest_1.expect)(auth.requestPasswordReset).toBeDefined();
|
|
315
|
+
(0, vitest_1.expect)(auth.signIn).toBeDefined();
|
|
316
|
+
(0, vitest_1.expect)(auth.signOut).toBeDefined();
|
|
317
|
+
// Storage endpoints
|
|
318
|
+
const storage = (0, index_1.getStorage)(app);
|
|
319
|
+
(0, vitest_1.expect)(storage.ref).toBeDefined();
|
|
320
|
+
// Functions
|
|
321
|
+
const functions = (0, index_1.getFunctions)(app);
|
|
322
|
+
(0, vitest_1.expect)(functions.httpsCallable).toBeDefined();
|
|
323
|
+
// AI
|
|
324
|
+
const ai = (0, index_1.getAI)(app);
|
|
325
|
+
(0, vitest_1.expect)(ai.text).toBeDefined();
|
|
326
|
+
(0, vitest_1.expect)(ai.image).toBeDefined();
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
//# sourceMappingURL=full-feature-validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"full-feature-validation.test.js","sourceRoot":"","sources":["../../src/__tests__/full-feature-validation.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAAyE;AACzE,oCAQkB;AAGlB,gFAAgF;AAEhF,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,uBAAuB;IAClC,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,4BAA4B;CACzC,CAAC;AAEF,IAAI,GAAgB,CAAC;AAErB,IAAA,mBAAU,EAAC,GAAG,EAAE;IACd,GAAG,GAAG,IAAA,oBAAY,EAAC,WAAW,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAA,kBAAS,EAAC,GAAG,EAAE;IACb,WAAE,CAAC,aAAa,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,IAAA,WAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,UAAU,GAAG,IAAA,oBAAY,EAAC;YAC9B,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,UAAU,CAAC,CAAC;QACjC,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC;YAC7B,SAAS,EAAE,uBAAuB;YAClC,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,iCAAiC;SAC9C,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,SAAS,CAAC,CAAC;QAChC,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,WAAW,GAAI,IAAY,CAAC,UAAU,CAAC;QAE7C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,IAAA,qBAAa,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAE3B,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,qBAAa,EAAC,GAAG,EAAE,6BAA6B,CAAC,CAAC;QAClD,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAE1B,+BAA+B;QAC/B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,IAAA,iBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAA,WAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,IAAA,eAAM,EAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEzC,MAAM,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtD,+BAA+B,CAChC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEpE,MAAM,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAC9D,qDAAqD,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAErC,0EAA0E;QAC1E,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,+BAA+B;YAC/B,IAAA,eAAM,EAAE,GAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAE9E,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,SAAS,CAAC,QAAQ,CAAC;aACnB,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,UAAU,CAAC,QAAQ,CAAC;aACpB,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEvB,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;aAChC,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;aAC3B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;aAC5B,UAAU,CAAC,QAAQ,CAAC;aACpB,KAAK,CAAC,EAAE,CAAC,CAAC;QAEb,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAA,eAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAE5B,aAAa;QACb,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,2BAA2B;QAC3B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,UAAU,CAAC,qBAAqB,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtD,IAAA,eAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE9B,gBAAgB;QAChB,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;aACjC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;aAC7B,SAAS,CAAC,sBAAsB,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,IAAA,iBAAQ,EAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAA,WAAE,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAA,eAAM,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,IAAA,eAAM,EAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,iEAAiE;QACjE,0DAA0D;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,0DAA0D;QAC1D,MAAM,eAAe,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,UAAkB,CAAC,WAAW,GAAG,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7C,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,eAAe;SACvB,CAAC,CAAC,CAAC;QAEJ,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACzC,WAAW;QACb,CAAC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEnD,MAAM,aAAa,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CACnC,GAAG,EAAE,GAAiB,CAAC,EACvB,aAAa,CACd,CAAC;QAEF,IAAA,eAAM,EAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,sCAAsC;QACtC,IAAI,OAAO,GAAG,EAAE,CAAC;QAChB,UAAkB,CAAC,WAAW,GAAG,WAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE;YACtD,OAAO,GAAG,GAAG,CAAC;YACd,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,WAAE,CAAC,EAAE,EAAE;aACf,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5B,0EAA0E;QAC1E,IAAA,eAAM,EAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAE7E,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAE1C,oCAAoC;QACpC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAA,eAAM,EAAC,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,IAAA,eAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,UAAU,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,IAAA,eAAM,EAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,UAAU,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAA,eAAM,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,IAAA,eAAM,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,IAAA,eAAM,EAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAEhF,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,WAAE,EAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAA,eAAM,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,IAAA,eAAM,EAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAEzE,IAAA,eAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE3C,8CAA8C;QAC9C,IAAA,eAAM,EAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAE7E,IAAA,iBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,IAAA,eAAM,EAAC,WAAW,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAE,IAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG;YACd,sBAAsB;YACtB,eAAe;YACf,0BAA0B;YAC1B,aAAa;SACd,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAA,eAAM,EAAE,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAA,eAAM,EAAC,OAAQ,IAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,IAAA,eAAM,EAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;QAC5B,IAAA,eAAM,EAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAElD,iBAAiB;QACjB,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;QAC1B,IAAA,eAAM,EAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,IAAA,eAAM,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnC,oBAAoB;QACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,GAAG,CAAC,CAAC;QAChC,IAAA,eAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAElC,YAAY;QACZ,MAAM,SAAS,GAAG,IAAA,oBAAY,EAAC,GAAG,CAAC,CAAC;QACpC,IAAA,eAAM,EAAC,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QAE9C,KAAK;QACL,MAAM,EAAE,GAAG,IAAA,aAAK,EAAC,GAAG,CAAC,CAAC;QACtB,IAAA,eAAM,EAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAA,eAAM,EAAC,EAAE,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|