@citolab/qti-backend-firebase 0.0.3

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 (111) hide show
  1. package/LICENSE.md +674 -0
  2. package/dist/api/app-specific/base/application-specific-base.d.ts +45 -0
  3. package/dist/api/app-specific/base/application-specific-base.d.ts.map +1 -0
  4. package/dist/api/app-specific/base/application-specific-base.js +503 -0
  5. package/dist/api/app-specific/base/application-specific-base.js.map +1 -0
  6. package/dist/api/app-specific/base/cheerio-helper.d.ts +5 -0
  7. package/dist/api/app-specific/base/cheerio-helper.d.ts.map +1 -0
  8. package/dist/api/app-specific/base/cheerio-helper.js +16 -0
  9. package/dist/api/app-specific/base/cheerio-helper.js.map +1 -0
  10. package/dist/api/app-specific/baseImplementation.d.ts +6 -0
  11. package/dist/api/app-specific/baseImplementation.d.ts.map +1 -0
  12. package/dist/api/app-specific/baseImplementation.js +11 -0
  13. package/dist/api/app-specific/baseImplementation.js.map +1 -0
  14. package/dist/api/app-specific/index.d.ts +4 -0
  15. package/dist/api/app-specific/index.d.ts.map +1 -0
  16. package/dist/api/app-specific/index.js +4 -0
  17. package/dist/api/app-specific/index.js.map +1 -0
  18. package/dist/api/app-specific/interface/IApplicationSpecific.d.ts +31 -0
  19. package/dist/api/app-specific/interface/IApplicationSpecific.d.ts.map +1 -0
  20. package/dist/api/app-specific/interface/IApplicationSpecific.js +2 -0
  21. package/dist/api/app-specific/interface/IApplicationSpecific.js.map +1 -0
  22. package/dist/api/app-specific/specific.d.ts +1 -0
  23. package/dist/api/app-specific/specific.d.ts.map +1 -0
  24. package/dist/api/app-specific/specific.js +31 -0
  25. package/dist/api/app-specific/specific.js.map +1 -0
  26. package/dist/api/index.d.ts +3 -0
  27. package/dist/api/index.d.ts.map +1 -0
  28. package/dist/api/index.js +15 -0
  29. package/dist/api/index.js.map +1 -0
  30. package/dist/api/qti-data.d.ts +4 -0
  31. package/dist/api/qti-data.d.ts.map +1 -0
  32. package/dist/api/qti-data.js +622 -0
  33. package/dist/api/qti-data.js.map +1 -0
  34. package/dist/api/qti-resources.d.ts +4 -0
  35. package/dist/api/qti-resources.d.ts.map +1 -0
  36. package/dist/api/qti-resources.js +348 -0
  37. package/dist/api/qti-resources.js.map +1 -0
  38. package/dist/api/qti-teacher.d.ts +6 -0
  39. package/dist/api/qti-teacher.d.ts.map +1 -0
  40. package/dist/api/qti-teacher.js +807 -0
  41. package/dist/api/qti-teacher.js.map +1 -0
  42. package/dist/api/qti-tools.d.ts +3 -0
  43. package/dist/api/qti-tools.d.ts.map +1 -0
  44. package/dist/api/qti-tools.js +450 -0
  45. package/dist/api/qti-tools.js.map +1 -0
  46. package/dist/console.d.ts +2 -0
  47. package/dist/console.d.ts.map +1 -0
  48. package/dist/console.js +30 -0
  49. package/dist/console.js.map +1 -0
  50. package/dist/express-test.d.ts +2 -0
  51. package/dist/express-test.d.ts.map +1 -0
  52. package/dist/express-test.js +19 -0
  53. package/dist/express-test.js.map +1 -0
  54. package/dist/helpers/ci-bootstap.d.ts +4 -0
  55. package/dist/helpers/ci-bootstap.d.ts.map +1 -0
  56. package/dist/helpers/ci-bootstap.js +96 -0
  57. package/dist/helpers/ci-bootstap.js.map +1 -0
  58. package/dist/helpers/database.d.ts +110 -0
  59. package/dist/helpers/database.d.ts.map +1 -0
  60. package/dist/helpers/database.js +151 -0
  61. package/dist/helpers/database.js.map +1 -0
  62. package/dist/helpers/db.d.ts +3 -0
  63. package/dist/helpers/db.d.ts.map +1 -0
  64. package/dist/helpers/db.js +10 -0
  65. package/dist/helpers/db.js.map +1 -0
  66. package/dist/helpers/endpoint-helpers.d.ts +33 -0
  67. package/dist/helpers/endpoint-helpers.d.ts.map +1 -0
  68. package/dist/helpers/endpoint-helpers.js +149 -0
  69. package/dist/helpers/endpoint-helpers.js.map +1 -0
  70. package/dist/helpers/firebase.d.ts +7 -0
  71. package/dist/helpers/firebase.d.ts.map +1 -0
  72. package/dist/helpers/firebase.js +15 -0
  73. package/dist/helpers/firebase.js.map +1 -0
  74. package/dist/helpers/index.d.ts +11 -0
  75. package/dist/helpers/index.d.ts.map +1 -0
  76. package/dist/helpers/index.js +11 -0
  77. package/dist/helpers/index.js.map +1 -0
  78. package/dist/helpers/local-helpers.d.ts +2 -0
  79. package/dist/helpers/local-helpers.d.ts.map +1 -0
  80. package/dist/helpers/local-helpers.js +11 -0
  81. package/dist/helpers/local-helpers.js.map +1 -0
  82. package/dist/helpers/logic.d.ts +73 -0
  83. package/dist/helpers/logic.d.ts.map +1 -0
  84. package/dist/helpers/logic.js +759 -0
  85. package/dist/helpers/logic.js.map +1 -0
  86. package/dist/helpers/package-upload.d.ts +16 -0
  87. package/dist/helpers/package-upload.d.ts.map +1 -0
  88. package/dist/helpers/package-upload.js +160 -0
  89. package/dist/helpers/package-upload.js.map +1 -0
  90. package/dist/helpers/package.d.ts +32 -0
  91. package/dist/helpers/package.d.ts.map +1 -0
  92. package/dist/helpers/package.js +373 -0
  93. package/dist/helpers/package.js.map +1 -0
  94. package/dist/helpers/request-headers.d.ts +27 -0
  95. package/dist/helpers/request-headers.d.ts.map +1 -0
  96. package/dist/helpers/request-headers.js +144 -0
  97. package/dist/helpers/request-headers.js.map +1 -0
  98. package/dist/helpers/storage.d.ts +10 -0
  99. package/dist/helpers/storage.d.ts.map +1 -0
  100. package/dist/helpers/storage.js +132 -0
  101. package/dist/helpers/storage.js.map +1 -0
  102. package/dist/helpers/utils.d.ts +42 -0
  103. package/dist/helpers/utils.d.ts.map +1 -0
  104. package/dist/helpers/utils.js +228 -0
  105. package/dist/helpers/utils.js.map +1 -0
  106. package/dist/main.d.ts +2 -0
  107. package/dist/main.d.ts.map +1 -0
  108. package/dist/main.js +14 -0
  109. package/dist/main.js.map +1 -0
  110. package/package.json +101 -0
  111. package/readme.md +11 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-teacher.js","sourceRoot":"","sources":["../../src/api/qti-teacher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Express } from "express";
2
+ export declare function addQtiToolsEndpoints(app: Express): void;
3
+ //# sourceMappingURL=qti-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-tools.d.ts","sourceRoot":"","sources":["../../src/api/qti-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AA4HrD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,QA4dhD"}
@@ -0,0 +1,450 @@
1
+ import { convertPackageToStorage } from "@citolab/qti-convert/qti-convert-node";
2
+ import { handleFileUpload, unzipPackage } from "./../helpers/package-upload";
3
+ import { getAppId } from "../helpers/request-headers";
4
+ import { DATABASE } from "../helpers/database";
5
+ import { getFirestore, getStorage } from "./../helpers/firebase";
6
+ import { getDownloadURL } from "firebase-admin/storage";
7
+ import { deleteFilesRecursive } from "../helpers/storage";
8
+ import { BaseImplementation } from "./app-specific/baseImplementation";
9
+ import multer from "multer";
10
+ import { createRateLimit, handleValidationErrors, requireAuth, sendError, sendSuccess, } from "../helpers/endpoint-helpers";
11
+ // File upload configuration for QTI packages
12
+ const qtiUploadConfig = multer({
13
+ storage: multer.memoryStorage(),
14
+ limits: {
15
+ fileSize: 100 * 1024 * 1024, // 100MB limit for QTI packages
16
+ files: 1,
17
+ },
18
+ fileFilter: (req, file, cb) => {
19
+ // Accept ZIP files and common QTI package extensions
20
+ const allowedMimeTypes = [
21
+ "application/zip",
22
+ "application/x-zip-compressed",
23
+ "application/octet-stream",
24
+ ];
25
+ const allowedExtensions = [".zip", ".qti"];
26
+ const fileExtension = file.originalname.toLowerCase().split(".").pop();
27
+ if (allowedMimeTypes.includes(file.mimetype) ||
28
+ (fileExtension && allowedExtensions.includes(`.${fileExtension}`))) {
29
+ cb(null, true);
30
+ }
31
+ else {
32
+ cb(new Error("Only ZIP and QTI package files are allowed"));
33
+ }
34
+ },
35
+ });
36
+ // Cleanup helper function
37
+ async function cleanupResources(uploadResult, appId, error) {
38
+ if (!uploadResult)
39
+ return;
40
+ try {
41
+ const storage = getStorage();
42
+ const bucket = storage.bucket();
43
+ const firestore = getFirestore();
44
+ const db = new DATABASE(appId || "base");
45
+ // Clean up uploaded files
46
+ const file = bucket.file(uploadResult.filename);
47
+ const [exists] = await file.exists();
48
+ if (exists) {
49
+ await file.delete();
50
+ }
51
+ // Clean up converted file if it exists
52
+ const convertedFileName = uploadResult.filename.split(".").slice(0, -1).join(".") + "_qti3.zip";
53
+ const convertedFile = bucket.file(convertedFileName);
54
+ const [convertedExists] = await convertedFile.exists();
55
+ if (convertedExists) {
56
+ await convertedFile.delete();
57
+ }
58
+ // Clean up database entry
59
+ await firestore.doc(db.PACKAGE.DOC(uploadResult.hash)).delete();
60
+ console.log(`Cleaned up resources for failed upload: ${uploadResult.hash}`);
61
+ }
62
+ catch (cleanupError) {
63
+ console.error("Failed to clean up resources:", cleanupError);
64
+ }
65
+ }
66
+ // Force garbage collection if available
67
+ function forceGarbageCollection() {
68
+ if (global.gc) {
69
+ try {
70
+ global.gc();
71
+ }
72
+ catch (error) {
73
+ console.warn("Garbage collection failed:", error);
74
+ }
75
+ }
76
+ }
77
+ export function addQtiToolsEndpoints(app) {
78
+ // Rate limiting - more restrictive for file uploads
79
+ const uploadRateLimit = createRateLimit(60 * 60 * 1000, 5); // 5 uploads per hour
80
+ /**
81
+ * @openapi
82
+ * /qti-tools/upload:
83
+ * post:
84
+ * tags:
85
+ * - Tools
86
+ * description: Uploads and processes a QTI package (requires authentication)
87
+ * security:
88
+ * - bearerAuth: []
89
+ * requestBody:
90
+ * required: true
91
+ * content:
92
+ * multipart/form-data:
93
+ * schema:
94
+ * type: object
95
+ * required:
96
+ * - file
97
+ * properties:
98
+ * file:
99
+ * type: string
100
+ * format: binary
101
+ * description: The QTI package file to be uploaded (ZIP format, max 100MB)
102
+ * responses:
103
+ * 200:
104
+ * description: Successfully processed QTI package
105
+ * content:
106
+ * application/json:
107
+ * schema:
108
+ * type: object
109
+ * properties:
110
+ * success:
111
+ * type: boolean
112
+ * data:
113
+ * type: object
114
+ * properties:
115
+ * packageId:
116
+ * type: string
117
+ * packageName:
118
+ * type: string
119
+ * uploaded:
120
+ * type: integer
121
+ * format: int64
122
+ * assessmentInfo:
123
+ * type: array
124
+ * items:
125
+ * $ref: '#/components/schemas/AssessmentInfo'
126
+ * downloadUrl:
127
+ * type: string
128
+ * downloadUrlQti3:
129
+ * type: string
130
+ * 400:
131
+ * description: Invalid file or request
132
+ * 401:
133
+ * description: Authentication required
134
+ * 413:
135
+ * description: File too large
136
+ * 429:
137
+ * description: Too many upload requests
138
+ * 500:
139
+ * description: Server error during processing
140
+ */
141
+ app.post("/qti-tools/upload", [
142
+ uploadRateLimit,
143
+ requireAuth,
144
+ qtiUploadConfig.single("file"),
145
+ handleValidationErrors,
146
+ ], async (req, res) => {
147
+ let uploadResult = null;
148
+ const appId = getAppId(req);
149
+ try {
150
+ // Validate file upload
151
+ if (!req.file) {
152
+ return sendError(res, 400, "No file uploaded. Please provide a QTI package file.");
153
+ }
154
+ // Initialize Saxon if needed
155
+ if (!globalThis.SaxonJS) {
156
+ try {
157
+ const saxonModule = await import("saxon-js");
158
+ globalThis.SaxonJS = saxonModule.default || saxonModule;
159
+ }
160
+ catch (saxonError) {
161
+ console.error("Failed to initialize Saxon:", saxonError);
162
+ return sendError(res, 500, "Failed to initialize QTI processing engine");
163
+ }
164
+ }
165
+ // Handle file upload
166
+ try {
167
+ uploadResult = (await handleFileUpload(req));
168
+ if (!uploadResult) {
169
+ return sendError(res, 500, "Failed to process uploaded file");
170
+ }
171
+ }
172
+ catch (uploadError) {
173
+ console.error("File upload error:", uploadError);
174
+ return sendError(res, 400, "Invalid file upload. Please ensure you are uploading a valid QTI package.");
175
+ }
176
+ const storage = getStorage();
177
+ const bucket = storage.bucket();
178
+ const db = new DATABASE(appId || "base");
179
+ const firestore = getFirestore();
180
+ // Check if package already exists
181
+ if (uploadResult.existed) {
182
+ const packageDocRef = await firestore
183
+ .doc(db.PACKAGE.DOC(uploadResult.hash))
184
+ .get();
185
+ if (packageDocRef.exists) {
186
+ const packageInfo = packageDocRef.data();
187
+ return sendSuccess(res, packageInfo, "Package already exists and was retrieved successfully");
188
+ }
189
+ else {
190
+ // File exists but no database entry - treat as new upload
191
+ console.warn(`Package file exists but no database entry found for hash: ${uploadResult.hash}`);
192
+ }
193
+ }
194
+ const file = bucket.file(uploadResult.filename);
195
+ const downloadUrl = await getDownloadURL(file);
196
+ let downloadUrlQti3 = "";
197
+ // Process new upload
198
+ try {
199
+ // Unzip and validate package
200
+ let unzipped = await unzipPackage(uploadResult.filename);
201
+ if (!unzipped.success) {
202
+ await cleanupResources(uploadResult, appId);
203
+ return sendError(res, 400, `Invalid QTI package: ${unzipped.message}`);
204
+ }
205
+ // Convert to QTI 3.0 if needed
206
+ if (unzipped.qtiVersion !== 3) {
207
+ console.log(`Converting QTI ${unzipped.qtiVersion} package to QTI 3.0`);
208
+ const newFileName = uploadResult.filename.split(".").slice(0, -1).join(".") +
209
+ "_qti3.zip";
210
+ const newFile = bucket.file(newFileName);
211
+ const oldPackageName = uploadResult.filename;
212
+ try {
213
+ await convertPackageToStorage(file, newFile);
214
+ uploadResult.filename = newFileName;
215
+ downloadUrlQti3 = await getDownloadURL(newFile);
216
+ // Clean up intermediate files
217
+ const dirName = uploadResult.filename
218
+ .split("/")
219
+ .slice(0, -1)
220
+ .join("/");
221
+ const getFileNameFromPath = (path) => path.split("/").pop();
222
+ await deleteFilesRecursive(bucket, dirName, [
223
+ getFileNameFromPath(oldPackageName),
224
+ getFileNameFromPath(newFileName),
225
+ ]);
226
+ // Re-unzip the converted package
227
+ unzipped = await unzipPackage(uploadResult.filename);
228
+ if (!unzipped.success) {
229
+ await cleanupResources(uploadResult, appId);
230
+ return sendError(res, 500, "Failed to process converted QTI package");
231
+ }
232
+ forceGarbageCollection();
233
+ }
234
+ catch (conversionError) {
235
+ console.error("Package conversion error:", conversionError);
236
+ await cleanupResources(uploadResult, appId);
237
+ return sendError(res, 500, "Failed to convert package to QTI 3.0. Please ensure your package is valid.");
238
+ }
239
+ }
240
+ // Process the package with BaseImplementation
241
+ const logic = new BaseImplementation();
242
+ // Determine API URL
243
+ let apiUrl = process.env.QTI_BACKEND_API_URL;
244
+ if (!apiUrl) {
245
+ const region = process.env.FUNCTION_REGION || "europe-west4";
246
+ const project = process.env.GCLOUD_PROJECT;
247
+ const functionName = process.env.FUNCTION_NAME || "api";
248
+ apiUrl = `https://${region}-${project}.cloudfunctions.net/${functionName}`;
249
+ }
250
+ const packageName = uploadResult.filename.split("/").pop() || "unknown-package";
251
+ try {
252
+ // Modify package files and convert to database format
253
+ await logic.modifyPackageFiles(uploadResult.filename);
254
+ const assessmentInfo = await logic.convertPackageAndAddToDatabase(uploadResult.filename, `${apiUrl}/application/${appId}/package/${uploadResult.hash}`, {
255
+ packageId: uploadResult.hash,
256
+ packageName,
257
+ prefixAssessmentId: uploadResult.hash,
258
+ });
259
+ // Create package info
260
+ const packageInfo = {
261
+ assessmentInfo,
262
+ downloadUrl,
263
+ downloadUrlQti3,
264
+ packageName,
265
+ packageId: uploadResult.hash,
266
+ uploaded: new Date().getTime(),
267
+ uploadedBy: req.user?.uid,
268
+ };
269
+ // Save to database
270
+ await firestore
271
+ .doc(db.PACKAGE.DOC(uploadResult.hash))
272
+ .set(packageInfo);
273
+ forceGarbageCollection();
274
+ return sendSuccess(res, packageInfo, "QTI package uploaded and processed successfully");
275
+ }
276
+ catch (processingError) {
277
+ console.error("Package processing error:", processingError);
278
+ await cleanupResources(uploadResult, appId);
279
+ return sendError(res, 500, "Failed to process QTI package. Please verify the package structure and content.");
280
+ }
281
+ }
282
+ catch (packageError) {
283
+ console.error("Package handling error:", packageError);
284
+ await cleanupResources(uploadResult, appId);
285
+ return sendError(res, 500, "Failed to handle QTI package");
286
+ }
287
+ }
288
+ catch (error) {
289
+ console.error("QTI Tools upload error:", error);
290
+ // Cleanup on any error
291
+ if (uploadResult) {
292
+ await cleanupResources(uploadResult, appId, error);
293
+ }
294
+ forceGarbageCollection();
295
+ // Handle specific error types
296
+ if (error instanceof multer.MulterError) {
297
+ if (error.code === "LIMIT_FILE_SIZE") {
298
+ return sendError(res, 413, "File too large. Maximum size is 100MB.");
299
+ }
300
+ return sendError(res, 400, "File upload error");
301
+ }
302
+ if (error.message ===
303
+ "Only ZIP and QTI package files are allowed") {
304
+ return sendError(res, 400, "Invalid file type. Only ZIP and QTI package files are allowed.");
305
+ }
306
+ return sendError(res, 500, "An unexpected error occurred during package upload");
307
+ }
308
+ });
309
+ /**
310
+ * @openapi
311
+ * /qti-tools/packages:
312
+ * get:
313
+ * tags:
314
+ * - Tools
315
+ * summary: Get uploaded packages
316
+ * description: Retrieves a list of uploaded QTI packages for the authenticated user
317
+ * security:
318
+ * - bearerAuth: []
319
+ * responses:
320
+ * 200:
321
+ * description: Successfully retrieved packages
322
+ * content:
323
+ * application/json:
324
+ * schema:
325
+ * type: object
326
+ * properties:
327
+ * success:
328
+ * type: boolean
329
+ * data:
330
+ * type: array
331
+ * items:
332
+ * type: object
333
+ * properties:
334
+ * packageId:
335
+ * type: string
336
+ * packageName:
337
+ * type: string
338
+ * uploaded:
339
+ * type: integer
340
+ * assessmentCount:
341
+ * type: integer
342
+ * 401:
343
+ * description: Authentication required
344
+ * 500:
345
+ * description: Server error
346
+ */
347
+ app.get("/qti-tools/packages", [
348
+ createRateLimit(15 * 60 * 1000, 50), // 50 requests per 15 minutes
349
+ requireAuth,
350
+ ], async (req, res) => {
351
+ try {
352
+ const appId = getAppId(req);
353
+ const db = new DATABASE(appId || "base");
354
+ const firestore = getFirestore();
355
+ // Query packages uploaded by this user
356
+ const packagesQuery = firestore
357
+ .collection(db.PACKAGE.COLLECTION())
358
+ .where("uploadedBy", "==", req.user.uid)
359
+ .orderBy("uploaded", "desc")
360
+ .limit(100);
361
+ const packagesSnapshot = await packagesQuery.get();
362
+ const packages = packagesSnapshot.docs.map((doc) => {
363
+ const data = doc.data();
364
+ return {
365
+ packageId: data.packageId,
366
+ packageName: data.packageName,
367
+ uploaded: data.uploaded,
368
+ assessmentCount: data.assessmentInfo?.length || 0,
369
+ };
370
+ });
371
+ return sendSuccess(res, packages);
372
+ }
373
+ catch (error) {
374
+ console.error("Error retrieving packages:", error);
375
+ return sendError(res, 500, "Failed to retrieve packages");
376
+ }
377
+ });
378
+ /**
379
+ * @openapi
380
+ * /qti-tools/package/{packageId}:
381
+ * delete:
382
+ * tags:
383
+ * - Tools
384
+ * summary: Delete a QTI package
385
+ * description: Deletes a QTI package and all associated resources
386
+ * security:
387
+ * - bearerAuth: []
388
+ * parameters:
389
+ * - in: path
390
+ * name: packageId
391
+ * required: true
392
+ * schema:
393
+ * type: string
394
+ * description: The ID of the package to delete
395
+ * responses:
396
+ * 200:
397
+ * description: Package deleted successfully
398
+ * 401:
399
+ * description: Authentication required
400
+ * 403:
401
+ * description: Not authorized to delete this package
402
+ * 404:
403
+ * description: Package not found
404
+ * 500:
405
+ * description: Server error
406
+ */
407
+ app.delete("/qti-tools/package/:packageId", [
408
+ createRateLimit(60 * 60 * 1000, 10), // 10 deletions per hour
409
+ requireAuth,
410
+ ], async (req, res) => {
411
+ try {
412
+ const { packageId } = req.params;
413
+ const appId = getAppId(req);
414
+ const db = new DATABASE(appId || "base");
415
+ const firestore = getFirestore();
416
+ const storage = getStorage();
417
+ const bucket = storage.bucket();
418
+ if (!packageId || packageId.length < 1 || packageId.length > 100) {
419
+ return sendError(res, 400, "Invalid package ID");
420
+ }
421
+ // Get package info
422
+ const packageDoc = await firestore.doc(db.PACKAGE.DOC(packageId)).get();
423
+ if (!packageDoc.exists) {
424
+ return sendError(res, 404, "Package not found");
425
+ }
426
+ const packageData = packageDoc.data();
427
+ // Check if user owns this package
428
+ if (packageData.uploadedBy !== req.user.uid) {
429
+ return sendError(res, 403, "Not authorized to delete this package");
430
+ }
431
+ // Delete storage files
432
+ try {
433
+ const packageDir = `packages/${packageId}`;
434
+ await deleteFilesRecursive(bucket, packageDir, []);
435
+ }
436
+ catch (storageError) {
437
+ console.warn("Failed to delete some storage files:", storageError);
438
+ // Continue with database deletion even if storage cleanup fails
439
+ }
440
+ // Delete database entry
441
+ await firestore.doc(db.PACKAGE.DOC(packageId)).delete();
442
+ return sendSuccess(res, undefined, "Package deleted successfully");
443
+ }
444
+ catch (error) {
445
+ console.error("Error deleting package:", error);
446
+ return sendError(res, 500, "Failed to delete package");
447
+ }
448
+ });
449
+ }
450
+ //# sourceMappingURL=qti-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-tools.js","sourceRoot":"","sources":["../../src/api/qti-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAEL,eAAe,EAEf,sBAAsB,EACtB,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,6BAA6B,CAAC;AA0BrC,6CAA6C;AAC7C,MAAM,eAAe,GAAG,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE;IAC/B,MAAM,EAAE;QACN,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,+BAA+B;QAC5D,KAAK,EAAE,CAAC;KACT;IACD,UAAU,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAC5B,qDAAqD;QACrD,MAAM,gBAAgB,GAAG;YACvB,iBAAiB;YACjB,8BAA8B;YAC9B,0BAA0B;SAC3B,CAAC;QAEF,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAEvE,IACE,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxC,CAAC,aAAa,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC,EAClE,CAAC;YACD,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,0BAA0B;AAC1B,KAAK,UAAU,gBAAgB,CAC7B,YAAiC,EACjC,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,YAAY;QAAE,OAAO;IAE1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;QAEzC,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;QAED,uCAAuC;QACvC,MAAM,iBAAiB,GACrB,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;QACxE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC;QACvD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC;QAC/B,CAAC;QAED,0BAA0B;QAC1B,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAEhE,OAAO,CAAC,GAAG,CAAC,2CAA2C,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,YAAY,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,wCAAwC;AACxC,SAAS,sBAAsB;IAC7B,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,oDAAoD;IACpD,MAAM,eAAe,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB;IAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4DG;IACH,GAAG,CAAC,IAAI,CACN,mBAAmB,EACnB;QACE,eAAe;QACf,WAAW;QACX,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,sBAAsB;KACvB,EACD,KAAK,EAAE,GAAyB,EAAE,GAAa,EAAE,EAAE;QACjD,IAAI,YAAY,GAAwB,IAAI,CAAC;QAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,CAAC;YACH,uBAAuB;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,sDAAsD,CACvD,CAAC;YACJ,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAE,UAAkB,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;oBAC5C,UAAkB,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC;gBACnE,CAAC;gBAAC,OAAO,UAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;oBACzD,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,4CAA4C,CAC7C,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC;gBACH,YAAY,GAAG,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAiB,CAAC;gBAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,iCAAiC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;YAEjC,kCAAkC;YAClC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,aAAa,GAAG,MAAM,SAAS;qBAClC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;qBACtC,GAAG,EAAE,CAAC;gBAET,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;oBACzB,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,EAAiB,CAAC;oBACxD,OAAO,WAAW,CAChB,GAAG,EACH,WAAW,EACX,uDAAuD,CACxD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,OAAO,CAAC,IAAI,CACV,6DAA6D,YAAY,CAAC,IAAI,EAAE,CACjF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,eAAe,GAAG,EAAE,CAAC;YAEzB,qBAAqB;YACrB,IAAI,CAAC;gBACH,6BAA6B;gBAC7B,IAAI,QAAQ,GAAgB,MAAM,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACtB,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAC5C,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,wBAAwB,QAAQ,CAAC,OAAO,EAAE,CAC3C,CAAC;gBACJ,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,QAAQ,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CACT,kBAAkB,QAAQ,CAAC,UAAU,qBAAqB,CAC3D,CAAC;oBAEF,MAAM,WAAW,GACf,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBACvD,WAAW,CAAC;oBACd,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBACzC,MAAM,cAAc,GAAG,YAAY,CAAC,QAAQ,CAAC;oBAE7C,IAAI,CAAC;wBACH,MAAM,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAC7C,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC;wBACpC,eAAe,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;wBAEhD,8BAA8B;wBAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ;6BAClC,KAAK,CAAC,GAAG,CAAC;6BACV,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6BACZ,IAAI,CAAC,GAAG,CAAC,CAAC;wBACb,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;wBAExB,MAAM,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE;4BAC1C,mBAAmB,CAAC,cAAc,CAAE;4BACpC,mBAAmB,CAAC,WAAW,CAAE;yBAClC,CAAC,CAAC;wBAEH,iCAAiC;wBACjC,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;wBACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;4BACtB,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;4BAC5C,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,yCAAyC,CAC1C,CAAC;wBACJ,CAAC;wBAED,sBAAsB,EAAE,CAAC;oBAC3B,CAAC;oBAAC,OAAO,eAAe,EAAE,CAAC;wBACzB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,eAAe,CAAC,CAAC;wBAC5D,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;wBAC5C,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,4EAA4E,CAC7E,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,8CAA8C;gBAC9C,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBAEvC,oBAAoB;gBACpB,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;gBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,cAAc,CAAC;oBAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;oBAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC;oBACxD,MAAM,GAAG,WAAW,MAAM,IAAI,OAAO,uBAAuB,YAAY,EAAE,CAAC;gBAC7E,CAAC;gBAED,MAAM,WAAW,GACf,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;gBAE9D,IAAI,CAAC;oBACH,sDAAsD;oBACtD,MAAM,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACtD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,8BAA8B,CAC/D,YAAY,CAAC,QAAQ,EACrB,GAAG,MAAM,gBAAgB,KAAK,YAAY,YAAY,CAAC,IAAI,EAAE,EAC7D;wBACE,SAAS,EAAE,YAAY,CAAC,IAAI;wBAC5B,WAAW;wBACX,kBAAkB,EAAE,YAAY,CAAC,IAAI;qBACtC,CACF,CAAC;oBAEF,sBAAsB;oBACtB,MAAM,WAAW,GAAgB;wBAC/B,cAAc;wBACd,WAAW;wBACX,eAAe;wBACf,WAAW;wBACX,SAAS,EAAE,YAAY,CAAC,IAAI;wBAC5B,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;wBAC9B,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG;qBAC1B,CAAC;oBAEF,mBAAmB;oBACnB,MAAM,SAAS;yBACZ,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;yBACtC,GAAG,CAAC,WAAW,CAAC,CAAC;oBAEpB,sBAAsB,EAAE,CAAC;oBACzB,OAAO,WAAW,CAChB,GAAG,EACH,WAAW,EACX,iDAAiD,CAClD,CAAC;gBACJ,CAAC;gBAAC,OAAO,eAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,eAAe,CAAC,CAAC;oBAC5D,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBAC5C,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,iFAAiF,CAClF,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;gBACvD,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,8BAA8B,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAEhD,uBAAuB;YACvB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,gBAAgB,CAAC,YAAY,EAAE,KAAK,EAAE,KAAc,CAAC,CAAC;YAC9D,CAAC;YAED,sBAAsB,EAAE,CAAC;YAEzB,8BAA8B;YAC9B,IAAI,KAAK,YAAY,MAAM,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACrC,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,wCAAwC,CACzC,CAAC;gBACJ,CAAC;gBACD,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAClD,CAAC;YAED,IACG,KAAe,CAAC,OAAO;gBACxB,4CAA4C,EAC5C,CAAC;gBACD,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,gEAAgE,CACjE,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CACd,GAAG,EACH,GAAG,EACH,oDAAoD,CACrD,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,GAAG,CAAC,GAAG,CACL,qBAAqB,EACrB;QACE,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,6BAA6B;QAClE,WAAW;KACZ,EACD,KAAK,EAAE,GAAyB,EAAE,GAAa,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;YAEjC,uCAAuC;YACvC,MAAM,aAAa,GAAG,SAAS;iBAC5B,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;iBACnC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAK,CAAC,GAAG,CAAC;iBACxC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;iBAC3B,KAAK,CAAC,GAAG,CAAC,CAAC;YAEd,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,CAAC;YAEnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAiB,CAAC;gBACvC,OAAO;oBACL,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,eAAe,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC;iBAClD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CACF,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,GAAG,CAAC,MAAM,CACR,+BAA+B,EAC/B;QACE,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,wBAAwB;QAC7D,WAAW;KACZ,EACD,KAAK,EAAE,GAAyB,EAAE,GAAa,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YAEhC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACjE,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACnD,CAAC;YAED,mBAAmB;YACnB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACxE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;gBACvB,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;YAClD,CAAC;YAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,EAAiB,CAAC;YAErD,kCAAkC;YAClC,IAAI,WAAW,CAAC,UAAU,KAAK,GAAG,CAAC,IAAK,CAAC,GAAG,EAAE,CAAC;gBAC7C,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,uCAAuC,CAAC,CAAC;YACtE,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,YAAY,SAAS,EAAE,CAAC;gBAC3C,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,OAAO,YAAY,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;gBACnE,gEAAgE;YAClE,CAAC;YAED,wBAAwB;YACxB,MAAM,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAExD,OAAO,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,8BAA8B,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function uploadPackageToStorage(extractedPackageFolders: string[]): Promise<void>;
2
+ //# sourceMappingURL=console.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AA6BA,wBAAsB,sBAAsB,CAC1C,uBAAuB,EAAE,MAAM,EAAE,iBAclC"}
@@ -0,0 +1,30 @@
1
+ import * as admin from "firebase-admin";
2
+ import { readFileSync } from "fs";
3
+ import { uploadFolderToStorage } from "./helpers/logic";
4
+ // EXAMPLE CONSOLE SCRIPT
5
+ (async () => {
6
+ try {
7
+ const isStaging = process.env["NODE_ENV"] === "staging";
8
+ const firebaseConfigPath = `${process.cwd()}/apps/functions/my-project${isStaging ? "-staging" : ""}-firebase-adminsdk.json`;
9
+ const firebaseContent = readFileSync(firebaseConfigPath, "utf8");
10
+ const config = JSON.parse(firebaseContent);
11
+ admin.initializeApp({
12
+ credential: admin.credential.cert(config),
13
+ databaseURL: `https://my-project${isStaging ? "-staging" : ""}.firebaseio.com`,
14
+ storageBucket: `gs://my-project${isStaging ? "-staging" : ""}.appspot.com`,
15
+ });
16
+ }
17
+ catch (e) {
18
+ console.error(e);
19
+ }
20
+ })();
21
+ export async function uploadPackageToStorage(extractedPackageFolders) {
22
+ for (const packageLocation of extractedPackageFolders) {
23
+ const uploadFolderToStoragePromises = [];
24
+ // get last foldername
25
+ const lastFolderName = packageLocation.split("/").pop();
26
+ await uploadFolderToStorage(packageLocation, `packages/${lastFolderName}`, uploadFolderToStoragePromises);
27
+ await Promise.all(uploadFolderToStoragePromises);
28
+ }
29
+ }
30
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD,yBAAyB;AAEzB,CAAC,KAAK,IAAI,EAAE;IACV,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;QACxD,MAAM,kBAAkB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,6BACzC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,yBAAyB,CAAC;QAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE3C,KAAK,CAAC,aAAa,CAAC;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;YACzC,WAAW,EAAE,qBACX,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,iBAAiB;YACjB,aAAa,EAAE,kBACb,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,cAAc;SACf,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,uBAAiC;IAEjC,KAAK,MAAM,eAAe,IAAI,uBAAuB,EAAE,CAAC;QACtD,MAAM,6BAA6B,GAAuB,EAAE,CAAC;QAC7D,sBAAsB;QACtB,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAExD,MAAM,qBAAqB,CACzB,eAAe,EACf,YAAY,cAAc,EAAE,EAC5B,6BAA6B,CAC9B,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=express-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-test.d.ts","sourceRoot":"","sources":["../src/express-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ /* eslint-disable @typescript-eslint/no-var-requires */
2
+ import { readFileSync } from "fs";
3
+ import expressApp from "./api";
4
+ import * as admin from "firebase-admin";
5
+ const port = process.env["port"] || 3333;
6
+ const isStaging = process.env["NODE_ENV"] === "staging";
7
+ const projectId = process.env["GCLOUD_PROJECT"] || "my-default-project";
8
+ const firebaseConfigPath = `${process.cwd()}/apps/functions/${projectId}${isStaging ? "-staging" : ""}-firebase-adminsdk.json`;
9
+ const firebaseContent = readFileSync(firebaseConfigPath, "utf8");
10
+ const config = JSON.parse(firebaseContent);
11
+ admin.initializeApp({
12
+ credential: admin.credential.cert(config),
13
+ databaseURL: `https://${projectId}d${isStaging ? "-staging" : ""}.firebaseio.com`,
14
+ storageBucket: `gs://${projectId}${isStaging ? "-staging" : ""}.appspot.com`,
15
+ });
16
+ expressApp.listen(port, () => {
17
+ console.log(`Listening at http://localhost:${port}`);
18
+ });
19
+ //# sourceMappingURL=express-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-test.js","sourceRoot":"","sources":["../src/express-test.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,UAAU,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC;AACxD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,oBAAoB,CAAC;AAExE,MAAM,kBAAkB,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,SAAS,GACrE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,yBAAyB,CAAC;AAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;AAE3C,KAAK,CAAC,aAAa,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IACzC,WAAW,EAAE,WAAW,SAAS,IAC/B,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAC3B,iBAAiB;IACjB,aAAa,EAAE,QAAQ,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc;CAC7E,CAAC,CAAC;AAEH,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const CES = "\nconst postToParentWindows = (type, data) => {\n window.top.postMessage(data ? { type, data } : { type }, '*');\n let w = window.parent;\n while (w) {\n if (w !== window.top) {\n w.postMessage({ type, data }, '*');\n }\n if (w !== w.parent) {\n w = w.parent;\n } else {\n w = null;\n }\n }\n};\n\n window.CES = {\n media: null,\n response: null,\n load: () => {\n let resolveCount = 0;\n\n const handleMessage = (event) => {\n if (event.data.type === \"mediaData\") {\n const media = event.data.data;\n CES.media = media;\n resolveCount++;\n } else if (event.data.type === \"responseData\") {\n const response = event.data.data;\n if (response && Array.isArray(response) && response.length > 0) {\n // state is stored in the first element of the array\n CES.response = response[0];\n // Wait a short moment to ensure CES.response is set\n setTimeout(() => {\n // Re-create the Controller instance if it exists\n if (typeof Controller === 'function') {\n console.log(\"Re-creating Controller instance\");\n ctrl = new Controller();\n }\n }, 50);\n } else { \n CES.response = response;\n }\n resolveCount++;\n }\n if (resolveCount === 2) {\n //window.removeEventListener(\"message\", handleMessage);\n }\n };\n window.addEventListener(\"message\", handleMessage);\n postToParentWindows(\"getMedia\");\n postToParentWindows(\"getResponse\");\n },\n setResponse: (data) => {\n postToParentWindows(\"setResponse\", data);\n },\n getResponse: () => {\n return CES.response;\n },\n getMedia: () => {\n return CES.media;\n },\n setStageHeight: () => {\n postToParentWindows(\"setResponse\");\n },\n };\n";
2
+ export declare const ciBootstrap = "\n window.onload = async function () {\n const handleMessage = event => {\n if (event.data.type === 'mediaData') {\n const media = event.data.data;\n var n = document.createElement('iframe');\n n.frameBorder = '0';\n n.scrolling = 'no';\n n.src = media[0];\n document.body.appendChild(n);\n window.removeEventListener('message', handleMessage);\n }\n };\n window.addEventListener('message', handleMessage);\n let w = window.parent;\n while (w) {\n w.postMessage({ type: 'getMedia' }, '*');\n if (w !== w.parent) {\n w = w.parent;\n } else {\n w = null;\n }\n }\n};\n";
3
+ export declare const registerCES = "\nconst postToParentWindows = (type, data) => {\n window.top.postMessage(data ? { type, data } : { type }, '*');\n let w = window.parent;\n while (w) {\n if (w !== window.top) {\n w.postMessage({ type, data }, '*');\n }\n if (w !== w.parent) {\n w = w.parent;\n } else {\n w = null;\n }\n }\n};\n\n window.CES = {\n media: null,\n response: null,\n load: () => {\n let resolveCount = 0;\n\n const handleMessage = (event) => {\n if (event.data.type === \"mediaData\") {\n const media = event.data.data;\n CES.media = media;\n resolveCount++;\n } else if (event.data.type === \"responseData\") {\n const response = event.data.data;\n if (response && Array.isArray(response) && response.length > 0) {\n // state is stored in the first element of the array\n CES.response = response[0];\n // Wait a short moment to ensure CES.response is set\n setTimeout(() => {\n // Re-create the Controller instance if it exists\n if (typeof Controller === 'function') {\n console.log(\"Re-creating Controller instance\");\n ctrl = new Controller();\n }\n }, 50);\n } else { \n CES.response = response;\n }\n resolveCount++;\n }\n if (resolveCount === 2) {\n //window.removeEventListener(\"message\", handleMessage);\n }\n };\n window.addEventListener(\"message\", handleMessage);\n postToParentWindows(\"getMedia\");\n postToParentWindows(\"getResponse\");\n },\n setResponse: (data) => {\n postToParentWindows(\"setResponse\", data);\n },\n getResponse: () => {\n return CES.response;\n },\n getMedia: () => {\n return CES.media;\n },\n setStageHeight: () => {\n postToParentWindows(\"setResponse\");\n },\n };\n\n CES.load();\n;";
4
+ //# sourceMappingURL=ci-bootstap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ci-bootstap.d.ts","sourceRoot":"","sources":["../../src/helpers/ci-bootstap.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,o9DAkEf,CAAC;AAEF,eAAO,MAAM,WAAW,2qBAwBvB,CAAC;AAEF,eAAO,MAAM,WAAW,w+DAEtB,CAAC"}