@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.
- package/LICENSE.md +674 -0
- package/dist/api/app-specific/base/application-specific-base.d.ts +45 -0
- package/dist/api/app-specific/base/application-specific-base.d.ts.map +1 -0
- package/dist/api/app-specific/base/application-specific-base.js +503 -0
- package/dist/api/app-specific/base/application-specific-base.js.map +1 -0
- package/dist/api/app-specific/base/cheerio-helper.d.ts +5 -0
- package/dist/api/app-specific/base/cheerio-helper.d.ts.map +1 -0
- package/dist/api/app-specific/base/cheerio-helper.js +16 -0
- package/dist/api/app-specific/base/cheerio-helper.js.map +1 -0
- package/dist/api/app-specific/baseImplementation.d.ts +6 -0
- package/dist/api/app-specific/baseImplementation.d.ts.map +1 -0
- package/dist/api/app-specific/baseImplementation.js +11 -0
- package/dist/api/app-specific/baseImplementation.js.map +1 -0
- package/dist/api/app-specific/index.d.ts +4 -0
- package/dist/api/app-specific/index.d.ts.map +1 -0
- package/dist/api/app-specific/index.js +4 -0
- package/dist/api/app-specific/index.js.map +1 -0
- package/dist/api/app-specific/interface/IApplicationSpecific.d.ts +31 -0
- package/dist/api/app-specific/interface/IApplicationSpecific.d.ts.map +1 -0
- package/dist/api/app-specific/interface/IApplicationSpecific.js +2 -0
- package/dist/api/app-specific/interface/IApplicationSpecific.js.map +1 -0
- package/dist/api/app-specific/specific.d.ts +1 -0
- package/dist/api/app-specific/specific.d.ts.map +1 -0
- package/dist/api/app-specific/specific.js +31 -0
- package/dist/api/app-specific/specific.js.map +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +15 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/qti-data.d.ts +4 -0
- package/dist/api/qti-data.d.ts.map +1 -0
- package/dist/api/qti-data.js +622 -0
- package/dist/api/qti-data.js.map +1 -0
- package/dist/api/qti-resources.d.ts +4 -0
- package/dist/api/qti-resources.d.ts.map +1 -0
- package/dist/api/qti-resources.js +348 -0
- package/dist/api/qti-resources.js.map +1 -0
- package/dist/api/qti-teacher.d.ts +6 -0
- package/dist/api/qti-teacher.d.ts.map +1 -0
- package/dist/api/qti-teacher.js +807 -0
- package/dist/api/qti-teacher.js.map +1 -0
- package/dist/api/qti-tools.d.ts +3 -0
- package/dist/api/qti-tools.d.ts.map +1 -0
- package/dist/api/qti-tools.js +450 -0
- package/dist/api/qti-tools.js.map +1 -0
- package/dist/console.d.ts +2 -0
- package/dist/console.d.ts.map +1 -0
- package/dist/console.js +30 -0
- package/dist/console.js.map +1 -0
- package/dist/express-test.d.ts +2 -0
- package/dist/express-test.d.ts.map +1 -0
- package/dist/express-test.js +19 -0
- package/dist/express-test.js.map +1 -0
- package/dist/helpers/ci-bootstap.d.ts +4 -0
- package/dist/helpers/ci-bootstap.d.ts.map +1 -0
- package/dist/helpers/ci-bootstap.js +96 -0
- package/dist/helpers/ci-bootstap.js.map +1 -0
- package/dist/helpers/database.d.ts +110 -0
- package/dist/helpers/database.d.ts.map +1 -0
- package/dist/helpers/database.js +151 -0
- package/dist/helpers/database.js.map +1 -0
- package/dist/helpers/db.d.ts +3 -0
- package/dist/helpers/db.d.ts.map +1 -0
- package/dist/helpers/db.js +10 -0
- package/dist/helpers/db.js.map +1 -0
- package/dist/helpers/endpoint-helpers.d.ts +33 -0
- package/dist/helpers/endpoint-helpers.d.ts.map +1 -0
- package/dist/helpers/endpoint-helpers.js +149 -0
- package/dist/helpers/endpoint-helpers.js.map +1 -0
- package/dist/helpers/firebase.d.ts +7 -0
- package/dist/helpers/firebase.d.ts.map +1 -0
- package/dist/helpers/firebase.js +15 -0
- package/dist/helpers/firebase.js.map +1 -0
- package/dist/helpers/index.d.ts +11 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +11 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/local-helpers.d.ts +2 -0
- package/dist/helpers/local-helpers.d.ts.map +1 -0
- package/dist/helpers/local-helpers.js +11 -0
- package/dist/helpers/local-helpers.js.map +1 -0
- package/dist/helpers/logic.d.ts +73 -0
- package/dist/helpers/logic.d.ts.map +1 -0
- package/dist/helpers/logic.js +759 -0
- package/dist/helpers/logic.js.map +1 -0
- package/dist/helpers/package-upload.d.ts +16 -0
- package/dist/helpers/package-upload.d.ts.map +1 -0
- package/dist/helpers/package-upload.js +160 -0
- package/dist/helpers/package-upload.js.map +1 -0
- package/dist/helpers/package.d.ts +32 -0
- package/dist/helpers/package.d.ts.map +1 -0
- package/dist/helpers/package.js +373 -0
- package/dist/helpers/package.js.map +1 -0
- package/dist/helpers/request-headers.d.ts +27 -0
- package/dist/helpers/request-headers.d.ts.map +1 -0
- package/dist/helpers/request-headers.js +144 -0
- package/dist/helpers/request-headers.js.map +1 -0
- package/dist/helpers/storage.d.ts +10 -0
- package/dist/helpers/storage.d.ts.map +1 -0
- package/dist/helpers/storage.js +132 -0
- package/dist/helpers/storage.js.map +1 -0
- package/dist/helpers/utils.d.ts +42 -0
- package/dist/helpers/utils.d.ts.map +1 -0
- package/dist/helpers/utils.js +228 -0
- package/dist/helpers/utils.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +14 -0
- package/dist/main.js.map +1 -0
- package/package.json +101 -0
- 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 @@
|
|
|
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":"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"}
|
|
@@ -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"}
|
package/dist/console.js
ADDED
|
@@ -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 @@
|
|
|
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"}
|