@citolab/qti-backend-firebase 0.0.3 → 0.0.5
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/dist/api/app-specific/base/application-specific-base.d.ts +11 -20
- package/dist/api/app-specific/base/application-specific-base.d.ts.map +1 -1
- package/dist/api/app-specific/base/application-specific-base.js +73 -88
- package/dist/api/app-specific/base/application-specific-base.js.map +1 -1
- package/dist/api/app-specific/baseImplementation.d.ts +2 -3
- package/dist/api/app-specific/baseImplementation.d.ts.map +1 -1
- package/dist/api/app-specific/baseImplementation.js +2 -6
- package/dist/api/app-specific/baseImplementation.js.map +1 -1
- package/dist/api/app-specific/index.d.ts +1 -0
- package/dist/api/app-specific/index.d.ts.map +1 -1
- package/dist/api/app-specific/index.js +1 -0
- package/dist/api/app-specific/index.js.map +1 -1
- package/dist/api/app-specific/interface/IApplicationSpecific.d.ts +10 -20
- package/dist/api/app-specific/interface/IApplicationSpecific.d.ts.map +1 -1
- package/dist/api/qti-data.d.ts.map +1 -1
- package/dist/api/qti-data.js +619 -271
- package/dist/api/qti-data.js.map +1 -1
- package/dist/api/qti-resources.d.ts.map +1 -1
- package/dist/api/qti-resources.js +134 -131
- package/dist/api/qti-resources.js.map +1 -1
- package/dist/api/qti-teacher.d.ts.map +1 -1
- package/dist/api/qti-teacher.js +563 -424
- package/dist/api/qti-teacher.js.map +1 -1
- package/dist/api/qti-tools.d.ts.map +1 -1
- package/dist/api/qti-tools.js +213 -41
- package/dist/api/qti-tools.js.map +1 -1
- package/dist/helpers/database.d.ts +35 -24
- package/dist/helpers/database.d.ts.map +1 -1
- package/dist/helpers/database.js +47 -36
- package/dist/helpers/database.js.map +1 -1
- package/dist/helpers/db.d.ts +1 -1
- package/dist/helpers/db.d.ts.map +1 -1
- package/dist/helpers/db.js +3 -7
- package/dist/helpers/db.js.map +1 -1
- package/dist/helpers/endpoint-helpers.d.ts +2 -2
- package/dist/helpers/endpoint-helpers.d.ts.map +1 -1
- package/dist/helpers/endpoint-helpers.js +59 -17
- package/dist/helpers/endpoint-helpers.js.map +1 -1
- package/dist/helpers/excel-helper.d.ts +29 -0
- package/dist/helpers/excel-helper.d.ts.map +1 -0
- package/dist/helpers/excel-helper.js +150 -0
- package/dist/helpers/excel-helper.js.map +1 -0
- package/dist/helpers/general.d.ts +15 -0
- package/dist/helpers/general.d.ts.map +1 -0
- package/dist/helpers/general.js +148 -0
- package/dist/helpers/general.js.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +2 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/logic.d.ts +100 -41
- package/dist/helpers/logic.d.ts.map +1 -1
- package/dist/helpers/logic.js +523 -413
- package/dist/helpers/logic.js.map +1 -1
- package/dist/helpers/package-upload.d.ts.map +1 -1
- package/dist/helpers/package-upload.js +2 -3
- package/dist/helpers/package-upload.js.map +1 -1
- package/dist/helpers/package.d.ts +3 -4
- package/dist/helpers/package.d.ts.map +1 -1
- package/dist/helpers/package.js +12 -17
- package/dist/helpers/package.js.map +1 -1
- package/dist/helpers/request-headers.d.ts +4 -0
- package/dist/helpers/request-headers.d.ts.map +1 -1
- package/dist/helpers/request-headers.js +2 -2
- package/dist/helpers/request-headers.js.map +1 -1
- package/dist/helpers/resource-cache.d.ts +35 -0
- package/dist/helpers/resource-cache.d.ts.map +1 -0
- package/dist/helpers/resource-cache.js +171 -0
- package/dist/helpers/resource-cache.js.map +1 -0
- package/dist/helpers/storage.d.ts +2 -2
- package/dist/helpers/storage.d.ts.map +1 -1
- package/dist/helpers/storage.js +16 -15
- package/dist/helpers/storage.js.map +1 -1
- package/dist/helpers/utils.d.ts +4 -3
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js +73 -51
- package/dist/helpers/utils.js.map +1 -1
- package/package.json +12 -9
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import NodeCache from "node-cache";
|
|
2
|
+
import { getStorage } from "./firebase";
|
|
3
|
+
import { getStorageRef } from "./package";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import mime from "mime";
|
|
6
|
+
class ResourceCacheManager {
|
|
7
|
+
cache;
|
|
8
|
+
stats;
|
|
9
|
+
MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
|
|
10
|
+
DEFAULT_TTL = 30 * 60; // 30 minutes
|
|
11
|
+
constructor() {
|
|
12
|
+
this.cache = new NodeCache({
|
|
13
|
+
stdTTL: this.DEFAULT_TTL,
|
|
14
|
+
checkperiod: 5 * 60, // Check for expired keys every 5 minutes
|
|
15
|
+
maxKeys: 1000, // Limit number of cached items
|
|
16
|
+
useClones: false, // Don't clone objects for better performance
|
|
17
|
+
});
|
|
18
|
+
this.stats = {
|
|
19
|
+
hits: 0,
|
|
20
|
+
misses: 0,
|
|
21
|
+
totalSize: 0,
|
|
22
|
+
};
|
|
23
|
+
// Log cache statistics periodically
|
|
24
|
+
setInterval(() => {
|
|
25
|
+
const keys = this.cache.keys().length;
|
|
26
|
+
console.log(`Resource Cache Stats - Keys: ${keys}, Hits: ${this.stats.hits}, Misses: ${this.stats.misses}, Hit Rate: ${this.getHitRate()}%`);
|
|
27
|
+
}, 10 * 60 * 1000); // Every 10 minutes
|
|
28
|
+
}
|
|
29
|
+
getHitRate() {
|
|
30
|
+
const total = this.stats.hits + this.stats.misses;
|
|
31
|
+
return total > 0 ? Math.round((this.stats.hits / total) * 100) : 0;
|
|
32
|
+
}
|
|
33
|
+
getCacheKey(packageId, relativeUrl) {
|
|
34
|
+
return `${packageId}:${relativeUrl}`;
|
|
35
|
+
}
|
|
36
|
+
shouldCache(relativeUrl, fileSize) {
|
|
37
|
+
const ext = path.extname(relativeUrl).toLowerCase();
|
|
38
|
+
// Don't cache large files
|
|
39
|
+
if (fileSize && fileSize > this.MAX_FILE_SIZE) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
// Cache these file types
|
|
43
|
+
const cacheableExtensions = [
|
|
44
|
+
".xml",
|
|
45
|
+
".css",
|
|
46
|
+
".js",
|
|
47
|
+
".json", // Text files
|
|
48
|
+
".png",
|
|
49
|
+
".jpg",
|
|
50
|
+
".jpeg",
|
|
51
|
+
".gif",
|
|
52
|
+
".svg", // Images
|
|
53
|
+
".woff",
|
|
54
|
+
".woff2",
|
|
55
|
+
".ttf",
|
|
56
|
+
".eot", // Fonts
|
|
57
|
+
".html",
|
|
58
|
+
".htm",
|
|
59
|
+
".txt", // Other text
|
|
60
|
+
];
|
|
61
|
+
// Don't cache video/audio files (they use streaming)
|
|
62
|
+
const streamingExtensions = [
|
|
63
|
+
".mp4",
|
|
64
|
+
".webm",
|
|
65
|
+
".ogg",
|
|
66
|
+
".mp3",
|
|
67
|
+
".wav",
|
|
68
|
+
".m4a",
|
|
69
|
+
];
|
|
70
|
+
if (streamingExtensions.includes(ext)) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
return cacheableExtensions.includes(ext) || ext === "";
|
|
74
|
+
}
|
|
75
|
+
getTTL(relativeUrl) {
|
|
76
|
+
// Standardize all cached resources to 30 minutes TTL
|
|
77
|
+
// This ensures content updates are reflected relatively quickly
|
|
78
|
+
// while still providing significant performance benefits
|
|
79
|
+
return 30 * 60; // 30 minutes for all cached files
|
|
80
|
+
}
|
|
81
|
+
async get(packageId, relativeUrl) {
|
|
82
|
+
if (!this.shouldCache(relativeUrl)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const cacheKey = this.getCacheKey(packageId, relativeUrl);
|
|
86
|
+
const cached = this.cache.get(cacheKey);
|
|
87
|
+
if (cached) {
|
|
88
|
+
this.stats.hits++;
|
|
89
|
+
return cached;
|
|
90
|
+
}
|
|
91
|
+
this.stats.misses++;
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
async set(packageId, relativeUrl, buffer, contentType, etag) {
|
|
95
|
+
if (!this.shouldCache(relativeUrl, buffer.length)) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const cacheKey = this.getCacheKey(packageId, relativeUrl);
|
|
99
|
+
const ttl = this.getTTL(relativeUrl);
|
|
100
|
+
const cachedResource = {
|
|
101
|
+
buffer,
|
|
102
|
+
contentType,
|
|
103
|
+
lastModified: new Date(),
|
|
104
|
+
etag: etag || this.generateETag(buffer),
|
|
105
|
+
};
|
|
106
|
+
this.cache.set(cacheKey, cachedResource, ttl);
|
|
107
|
+
this.stats.totalSize += buffer.length;
|
|
108
|
+
}
|
|
109
|
+
generateETag(buffer) {
|
|
110
|
+
const crypto = require("crypto");
|
|
111
|
+
return crypto.createHash("md5").update(buffer).digest("hex");
|
|
112
|
+
}
|
|
113
|
+
async fetchAndCache(packageId, relativeUrl) {
|
|
114
|
+
try {
|
|
115
|
+
const storageRef = getStorageRef(relativeUrl, packageId);
|
|
116
|
+
const bucket = getStorage().bucket();
|
|
117
|
+
const fileRef = bucket.file(storageRef);
|
|
118
|
+
// Check if file exists
|
|
119
|
+
const [exists] = await fileRef.exists();
|
|
120
|
+
if (!exists) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
// Get file metadata for size check
|
|
124
|
+
const [metadata] = await fileRef.getMetadata();
|
|
125
|
+
const fileSize = Number(metadata.size);
|
|
126
|
+
if (!this.shouldCache(relativeUrl, fileSize)) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
// Download file
|
|
130
|
+
const [buffer] = await fileRef.download();
|
|
131
|
+
const ext = path.extname(relativeUrl).toLowerCase();
|
|
132
|
+
const contentType = mime.getType(ext) || "application/octet-stream";
|
|
133
|
+
const etag = metadata.etag;
|
|
134
|
+
// Cache it
|
|
135
|
+
await this.set(packageId, relativeUrl, buffer, contentType, etag);
|
|
136
|
+
return {
|
|
137
|
+
buffer,
|
|
138
|
+
contentType,
|
|
139
|
+
lastModified: new Date(metadata.updated || Date.now()),
|
|
140
|
+
etag: etag || this.generateETag(buffer),
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error(`Error fetching and caching resource ${packageId}:${relativeUrl}:`, error);
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Method to clear cache for a specific package (useful when package is updated)
|
|
149
|
+
clearPackage(packageId) {
|
|
150
|
+
const keys = this.cache.keys();
|
|
151
|
+
const packageKeys = keys.filter((key) => key.startsWith(`${packageId}:`));
|
|
152
|
+
packageKeys.forEach((key) => this.cache.del(key));
|
|
153
|
+
console.log(`Cleared ${packageKeys.length} cached resources for package ${packageId}`);
|
|
154
|
+
}
|
|
155
|
+
// Method to get cache statistics
|
|
156
|
+
getStats() {
|
|
157
|
+
return {
|
|
158
|
+
...this.stats,
|
|
159
|
+
keys: this.cache.keys().length,
|
|
160
|
+
hitRate: this.getHitRate(),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// Method to clear all cache
|
|
164
|
+
clear() {
|
|
165
|
+
this.cache.flushAll();
|
|
166
|
+
this.stats = { hits: 0, misses: 0, totalSize: 0 };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// Export singleton instance
|
|
170
|
+
export const resourceCache = new ResourceCacheManager();
|
|
171
|
+
//# sourceMappingURL=resource-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-cache.js","sourceRoot":"","sources":["../../src/helpers/resource-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import * as cheerio from
|
|
2
|
-
import { Bucket } from
|
|
1
|
+
import * as cheerio from "cheerio";
|
|
2
|
+
import { Bucket } from "@google-cloud/storage";
|
|
3
3
|
export declare const storeXml: (location: string, xml: string) => Promise<void>;
|
|
4
4
|
export declare const storageFileToXml: (file: {
|
|
5
5
|
download: () => Promise<Buffer[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/helpers/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/helpers/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAG/C,eAAO,MAAM,QAAQ,GAAU,UAAU,MAAM,EAAE,KAAK,MAAM,kBAI3D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,MAAM;IAC3C,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACnC,KAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAgB7B,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,eAAO,MAAM,kBAAkB,GAC7B,YAAY,MAAM,EAClB,SAAS,MAAM,EACf,oBAAe,8DAgBhB,CAAC;AA0FF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,oBAAoB,MAAM,EAC1B,kBAAkB,MAAM,kBAgBzB,CAAC"}
|
package/dist/helpers/storage.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { readFileSync } from
|
|
2
|
-
import * as cheerio from
|
|
3
|
-
import * as admin from
|
|
4
|
-
import fs from
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import { getStorage } from './firebase';
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import * as cheerio from "cheerio";
|
|
3
|
+
import * as admin from "firebase-admin";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import { getStorage } from "./firebase";
|
|
8
7
|
export const storeXml = async (location, xml) => {
|
|
9
8
|
const storage = getStorage();
|
|
10
9
|
const file = storage.bucket().file(`${location}`);
|
|
@@ -14,21 +13,23 @@ export const storageFileToXml = async (file) => {
|
|
|
14
13
|
try {
|
|
15
14
|
const downloadResult = await file.download();
|
|
16
15
|
if (downloadResult) {
|
|
17
|
-
|
|
16
|
+
// Dynamically import to avoid top-level await issues
|
|
17
|
+
const { cleanXMLString } = await import("@citolab/qti-convert/qti-convert");
|
|
18
|
+
const content = cleanXMLString(downloadResult[0].toString("utf8"));
|
|
18
19
|
return cheerio.load(content, { xmlMode: true, xml: true });
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
22
|
catch (e) {
|
|
22
|
-
console.log(
|
|
23
|
+
console.log("could not download or parse xml file: " + e);
|
|
23
24
|
}
|
|
24
|
-
return cheerio.load(
|
|
25
|
+
return cheerio.load("", { xmlMode: true, xml: true });
|
|
25
26
|
};
|
|
26
27
|
export async function deleteFilesRecursive(bucket, directory, excludeFiles = []) {
|
|
27
28
|
try {
|
|
28
29
|
// List all files in the directory
|
|
29
30
|
const [files] = await bucket.getFiles({ prefix: directory });
|
|
30
31
|
// Filter files to exclude the ones specified in excludeFiles array
|
|
31
|
-
const filesToDelete = files.filter((file) => !excludeFiles.includes(file.name.replace(directory,
|
|
32
|
+
const filesToDelete = files.filter((file) => !excludeFiles.includes(file.name.replace(directory, "").replace("/", "")));
|
|
32
33
|
// Delete the files
|
|
33
34
|
const deletePromises = filesToDelete.map((file) => file.delete());
|
|
34
35
|
// Wait for all deletions to complete
|
|
@@ -36,7 +37,7 @@ export async function deleteFilesRecursive(bucket, directory, excludeFiles = [])
|
|
|
36
37
|
console.log(`Deleted ${filesToDelete.length} files from ${directory}`);
|
|
37
38
|
}
|
|
38
39
|
catch (error) {
|
|
39
|
-
console.error(
|
|
40
|
+
console.error("Error deleting files:", error);
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
export const pollForStorageFile = async (bucketname, fileRef, maxAttempts = 8) => {
|
|
@@ -58,7 +59,7 @@ export const pollForStorageFile = async (bucketname, fileRef, maxAttempts = 8) =
|
|
|
58
59
|
};
|
|
59
60
|
// Initialize Firebase Admin for two different projects
|
|
60
61
|
const initFirebaseApp = (adminSdkJson, appName) => {
|
|
61
|
-
const firebaseContent = readFileSync(adminSdkJson,
|
|
62
|
+
const firebaseContent = readFileSync(adminSdkJson, "utf8");
|
|
62
63
|
const config = JSON.parse(firebaseContent);
|
|
63
64
|
return admin.initializeApp({
|
|
64
65
|
credential: admin.credential.cert(config),
|
|
@@ -119,8 +120,8 @@ const copyFilesRecursively = async (originBucket, destBucket, originPath, destPa
|
|
|
119
120
|
};
|
|
120
121
|
export const copyStorageFiles = async (originPath, destPath, adminSdkJsonOrigin, adminSdkJsonDest) => {
|
|
121
122
|
// Initialize the Firebase applications
|
|
122
|
-
const originApp = initFirebaseApp(adminSdkJsonOrigin,
|
|
123
|
-
const destApp = initFirebaseApp(adminSdkJsonDest,
|
|
123
|
+
const originApp = initFirebaseApp(adminSdkJsonOrigin, "originApp");
|
|
124
|
+
const destApp = initFirebaseApp(adminSdkJsonDest, "destApp");
|
|
124
125
|
// Get the buckets
|
|
125
126
|
const orginStorage = getStorage(originApp);
|
|
126
127
|
const destStorage = getStorage(destApp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/helpers/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/helpers/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers/utils.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VariableDeclaration } from
|
|
1
|
+
import { VariableDeclaration } from "@citolab/qti-components/exports/variables.js";
|
|
2
2
|
export declare const sum: (items: number[]) => number;
|
|
3
3
|
export declare function sumField<T>(items: T[], getKey: (item: T) => number): number;
|
|
4
4
|
export declare function avgField<T>(items: T[], getKey: (item: T) => number): number;
|
|
@@ -11,6 +11,7 @@ export declare const toQtiCompatibleId: (id: string) => string;
|
|
|
11
11
|
export declare function sort<T, K>(list: T[], getKey: (item: T) => K, desc?: boolean): T[];
|
|
12
12
|
export declare const trimStart: (text: string, chars: string[]) => string;
|
|
13
13
|
export declare const dateId: () => string;
|
|
14
|
+
export declare const dateIdToDate: (dateId: string) => Date;
|
|
14
15
|
export declare const todayId: () => string;
|
|
15
16
|
export declare function convertFirebaseDate(dateObject: {
|
|
16
17
|
seconds: number;
|
|
@@ -21,7 +22,7 @@ export declare function splitArray<T>(flatArray: T[], numCols: number): T[][];
|
|
|
21
22
|
export declare function groupBy<T, K>(list: T[], getKey: (item: T) => K): [K, T[]][];
|
|
22
23
|
export declare const timeout: (ms: number) => Promise<unknown>;
|
|
23
24
|
export declare const getReadableResponseFromVariables: (variables: readonly VariableDeclaration<string | string[]>[]) => string;
|
|
24
|
-
export declare const createCode: (length: number) => string;
|
|
25
|
+
export declare const createCode: (length: number, type?: "numeric" | "alphabetic" | "alphanumeric") => string;
|
|
25
26
|
export declare const randomInt: (min: number, max: number) => number;
|
|
26
27
|
export declare const parseUrl: (url: string) => {
|
|
27
28
|
hash: string;
|
|
@@ -38,5 +39,5 @@ export declare const parseUrl: (url: string) => {
|
|
|
38
39
|
} | null;
|
|
39
40
|
export declare const truncate: (text: string, length: number) => string;
|
|
40
41
|
export declare const trim: (s: string, c: string) => string;
|
|
41
|
-
export declare function httpCall<ResponseType, BodyType>(url: string | undefined, method:
|
|
42
|
+
export declare function httpCall<ResponseType, BodyType>(url: string | undefined, method: "GET" | "POST" | "PATCH", data?: BodyType): Promise<ResponseType | null>;
|
|
42
43
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,WACiB,CAAC;AAErD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,UAElE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,UAIlE;AACD,wBAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAEnD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,WAE1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,6BAE/C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,WAM9D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAO9C;AAED,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,WAK3C,CAAC;AAEF,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,UAAQ,OAazE;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,WAatD,CAAC;AAEF,eAAO,MAAM,MAAM,cAUlB,CAAC;AAEF,eAAO,MAAM,OAAO,cAMnB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,QAY5D;AAOD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAG1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAUpE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAY9D;AAED,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEtD,eAAO,MAAM,gCAAgC,GAC3C,WAAW,SAAS,mBAAmB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,WAY7D,CAAC;AAEF,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,eAAO,MAAM,GAAG,GAAI,OAAO,MAAM,EAAE,WACiB,CAAC;AAErD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,UAElE;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,UAIlE;AACD,wBAAgB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAEnD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,WAE1C;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,6BAE/C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,WAM9D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,UAO9C;AAED,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,WAK3C,CAAC;AAEF,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,UAAQ,OAazE;AAED,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,WAatD,CAAC;AAEF,eAAO,MAAM,MAAM,cAUlB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,SAS1C,CAAC;AAEF,eAAO,MAAM,OAAO,cAMnB,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,UAAU,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,QAY5D;AAOD,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAG1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAUpE;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,cAY9D;AAED,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,qBACmB,CAAC;AAEtD,eAAO,MAAM,gCAAgC,GAC3C,WAAW,SAAS,mBAAmB,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,WAY7D,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,QAAQ,MAAM,EACd,OAAM,SAAS,GAAG,YAAY,GAAG,cAA+B,WAuBjE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,WAGjD,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM;;;;;;;;;;;;QA2BnC,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,WAEpD,CAAC;AAEF,eAAO,MAAM,IAAI,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,WAKxC,CAAC;AAEF,wBAAsB,QAAQ,CAAC,YAAY,EAAE,QAAQ,EACnD,GAAG,oBAAK,EACR,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,EAChC,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA0B9B"}
|
package/dist/helpers/utils.js
CHANGED
|
@@ -19,24 +19,24 @@ export function IsNullOrUndefined(value) {
|
|
|
19
19
|
}
|
|
20
20
|
export function IsTrue(value) {
|
|
21
21
|
// lower case if it's a string
|
|
22
|
-
if (typeof value ===
|
|
22
|
+
if (typeof value === "string") {
|
|
23
23
|
value = value.toLowerCase();
|
|
24
24
|
}
|
|
25
|
-
return value ===
|
|
25
|
+
return value === "true" || value === true;
|
|
26
26
|
}
|
|
27
27
|
export function removeDoubleSlashes(str) {
|
|
28
28
|
const singleForwardSlashes = str
|
|
29
|
-
.replace(/([^:]\/)\/+/g,
|
|
30
|
-
.replace(/\/\//g,
|
|
31
|
-
.replace(
|
|
32
|
-
.replace(
|
|
29
|
+
.replace(/([^:]\/)\/+/g, "$1")
|
|
30
|
+
.replace(/\/\//g, "/")
|
|
31
|
+
.replace("http:/", "http://")
|
|
32
|
+
.replace("https:/", "https://");
|
|
33
33
|
return singleForwardSlashes;
|
|
34
34
|
}
|
|
35
35
|
export const toQtiCompatibleId = (id) => {
|
|
36
|
-
if (id.startsWith(
|
|
36
|
+
if (id.startsWith("ITM-")) {
|
|
37
37
|
return id;
|
|
38
38
|
}
|
|
39
|
-
return `ITM-${id.replaceAll(
|
|
39
|
+
return `ITM-${id.replaceAll(" ", "_")}`;
|
|
40
40
|
};
|
|
41
41
|
export function sort(list, getKey, desc = false) {
|
|
42
42
|
list.sort((a, b) => {
|
|
@@ -72,19 +72,29 @@ export const trimStart = (text, chars) => {
|
|
|
72
72
|
export const dateId = () => {
|
|
73
73
|
const dt = new Date();
|
|
74
74
|
const year = dt.getFullYear();
|
|
75
|
-
const month = (dt.getMonth() + 1).toString().padStart(2,
|
|
76
|
-
const day = dt.getDate().toString().padStart(2,
|
|
77
|
-
const hour = dt.getHours().toString().padStart(2,
|
|
78
|
-
const minutes = dt.getMinutes().toString().padStart(2,
|
|
79
|
-
const seconds = dt.getSeconds().toString().padStart(2,
|
|
80
|
-
const milliseconds = dt.getMilliseconds().toString().padStart(3,
|
|
75
|
+
const month = (dt.getMonth() + 1).toString().padStart(2, "0");
|
|
76
|
+
const day = dt.getDate().toString().padStart(2, "0");
|
|
77
|
+
const hour = dt.getHours().toString().padStart(2, "0");
|
|
78
|
+
const minutes = dt.getMinutes().toString().padStart(2, "0");
|
|
79
|
+
const seconds = dt.getSeconds().toString().padStart(2, "0");
|
|
80
|
+
const milliseconds = dt.getMilliseconds().toString().padStart(3, "0");
|
|
81
81
|
return `${year}${month}${day}${hour}${minutes}${seconds}${milliseconds}`;
|
|
82
82
|
};
|
|
83
|
+
export const dateIdToDate = (dateId) => {
|
|
84
|
+
const year = parseInt(dateId.substring(0, 4), 10);
|
|
85
|
+
const month = parseInt(dateId.substring(4, 6), 10) - 1; // Months are zero-based
|
|
86
|
+
const day = parseInt(dateId.substring(6, 8), 10);
|
|
87
|
+
const hour = parseInt(dateId.substring(8, 10), 10);
|
|
88
|
+
const minutes = parseInt(dateId.substring(10, 12), 10);
|
|
89
|
+
const seconds = parseInt(dateId.substring(12, 14), 10);
|
|
90
|
+
const milliseconds = parseInt(dateId.substring(14, 17), 10);
|
|
91
|
+
return new Date(year, month, day, hour, minutes, seconds, milliseconds);
|
|
92
|
+
};
|
|
83
93
|
export const todayId = () => {
|
|
84
94
|
const dt = new Date();
|
|
85
95
|
const year = dt.getFullYear();
|
|
86
|
-
const month = (dt.getMonth() + 1).toString().padStart(2,
|
|
87
|
-
const day = dt.getDate().toString().padStart(2,
|
|
96
|
+
const month = (dt.getMonth() + 1).toString().padStart(2, "0");
|
|
97
|
+
const day = dt.getDate().toString().padStart(2, "0");
|
|
88
98
|
return `${year}${month}${day}`;
|
|
89
99
|
};
|
|
90
100
|
export function convertFirebaseDate(dateObject) {
|
|
@@ -132,22 +142,34 @@ export function groupBy(list, getKey) {
|
|
|
132
142
|
});
|
|
133
143
|
return Array.from(map);
|
|
134
144
|
}
|
|
135
|
-
export const timeout = (ms) => new Promise((res) => setTimeout(() => res(
|
|
145
|
+
export const timeout = (ms) => new Promise((res) => setTimeout(() => res(""), ms));
|
|
136
146
|
export const getReadableResponseFromVariables = (variables) => {
|
|
137
147
|
const response = variables
|
|
138
|
-
.filter((i) => i.identifier.toLocaleLowerCase().startsWith(
|
|
148
|
+
.filter((i) => i.identifier.toLocaleLowerCase().startsWith("response"))
|
|
139
149
|
.map((i) => {
|
|
140
150
|
if (Array.isArray(i.value)) {
|
|
141
|
-
return i.value.join(
|
|
151
|
+
return i.value.join("&");
|
|
142
152
|
}
|
|
143
153
|
return i.value;
|
|
144
154
|
})
|
|
145
|
-
.join(
|
|
155
|
+
.join(" , ");
|
|
146
156
|
return response;
|
|
147
157
|
};
|
|
148
|
-
export const createCode = (length) => {
|
|
149
|
-
let result =
|
|
150
|
-
|
|
158
|
+
export const createCode = (length, type = "alphanumeric") => {
|
|
159
|
+
let result = "";
|
|
160
|
+
let characters;
|
|
161
|
+
switch (type) {
|
|
162
|
+
case "numeric":
|
|
163
|
+
characters = "23456789";
|
|
164
|
+
break;
|
|
165
|
+
case "alphabetic":
|
|
166
|
+
characters = "BCDFGHJKLMNPQRSTVWXYZ";
|
|
167
|
+
break;
|
|
168
|
+
case "alphanumeric":
|
|
169
|
+
default:
|
|
170
|
+
characters = "BCDFGHJKLMNPQRSTVWXYZ23456789";
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
151
173
|
const charactersLength = characters.length;
|
|
152
174
|
for (let i = 0; i < length; i++) {
|
|
153
175
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
@@ -164,21 +186,21 @@ export const parseUrl = (url) => {
|
|
|
164
186
|
/^(([^:\/?#]+:)?(?:\/\/((?:([^\/?#:]*):([^\/?#:]*)@)?([^\/?#:]*)(?::([^\/?#:]*))?)))?([^?#]*)(\?[^#]*)?(#.*)?$/);
|
|
165
187
|
if (m) {
|
|
166
188
|
const r = {
|
|
167
|
-
hash: m[10] ||
|
|
168
|
-
host: m[3] ||
|
|
169
|
-
hostname: m[6] ||
|
|
170
|
-
href: m[0] ||
|
|
171
|
-
origin: m[1] ||
|
|
172
|
-
pathname: m[8] || (m[1] ?
|
|
173
|
-
port: m[7] ||
|
|
174
|
-
protocol: m[2] ||
|
|
175
|
-
search: m[9] ||
|
|
176
|
-
username: m[4] ||
|
|
177
|
-
password: m[5] ||
|
|
189
|
+
hash: m[10] || "", // #asd
|
|
190
|
+
host: m[3] || "", // localhost:257
|
|
191
|
+
hostname: m[6] || "", // localhost
|
|
192
|
+
href: m[0] || "", // http://username:password@localhost:257/deploy/?asd=asd#asd
|
|
193
|
+
origin: m[1] || "", // http://username:password@localhost:257
|
|
194
|
+
pathname: m[8] || (m[1] ? "/" : ""), // /deploy/
|
|
195
|
+
port: m[7] || "", // 257
|
|
196
|
+
protocol: m[2] || "", // http:
|
|
197
|
+
search: m[9] || "", // ?asd=asd
|
|
198
|
+
username: m[4] || "", // username
|
|
199
|
+
password: m[5] || "", // password
|
|
178
200
|
};
|
|
179
201
|
if (r.protocol.length == 2) {
|
|
180
|
-
r.protocol =
|
|
181
|
-
r.origin = r.protocol +
|
|
202
|
+
r.protocol = "file:///" + r.protocol.toUpperCase();
|
|
203
|
+
r.origin = r.protocol + "//" + r.host;
|
|
182
204
|
}
|
|
183
205
|
r.href = r.origin + r.pathname + r.search + r.hash;
|
|
184
206
|
return r;
|
|
@@ -186,27 +208,27 @@ export const parseUrl = (url) => {
|
|
|
186
208
|
return null;
|
|
187
209
|
};
|
|
188
210
|
export const truncate = (text, length) => {
|
|
189
|
-
return text.length > length ? text.substring(0, length - 3) +
|
|
211
|
+
return text.length > length ? text.substring(0, length - 3) + "..." : text;
|
|
190
212
|
};
|
|
191
213
|
export const trim = (s, c) => {
|
|
192
|
-
if (c ===
|
|
193
|
-
c =
|
|
194
|
-
if (c ===
|
|
195
|
-
c =
|
|
196
|
-
if (c ===
|
|
197
|
-
c =
|
|
198
|
-
return s.replace(new RegExp(
|
|
214
|
+
if (c === "]")
|
|
215
|
+
c = "\\]";
|
|
216
|
+
if (c === "^")
|
|
217
|
+
c = "\\^";
|
|
218
|
+
if (c === "\\")
|
|
219
|
+
c = "\\\\";
|
|
220
|
+
return s.replace(new RegExp("^[" + c + "]+|[" + c + "]+$", "g"), "");
|
|
199
221
|
};
|
|
200
|
-
export async function httpCall(url =
|
|
201
|
-
const headers = {
|
|
222
|
+
export async function httpCall(url = "", method, data) {
|
|
223
|
+
const headers = { "Content-Type": "application/json" };
|
|
202
224
|
let requestInit = {
|
|
203
225
|
method, // *GET, POST, PUT, DELETE, etc.
|
|
204
|
-
mode:
|
|
205
|
-
cache:
|
|
206
|
-
credentials:
|
|
226
|
+
mode: "cors", // no-cors, *cors, same-origin
|
|
227
|
+
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
|
|
228
|
+
credentials: "same-origin", // include, *same-origin, omit
|
|
207
229
|
headers,
|
|
208
|
-
redirect:
|
|
209
|
-
referrerPolicy:
|
|
230
|
+
redirect: "follow", // manual, *follow, error
|
|
231
|
+
referrerPolicy: "no-referrer", // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
|
|
210
232
|
};
|
|
211
233
|
if (data) {
|
|
212
234
|
requestInit = { ...requestInit, body: JSON.stringify(data) };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/helpers/utils.ts"],"names":[],"mappings":"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"}
|