placementt-core 1.400.870 → 1.400.871
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.
|
@@ -18,6 +18,16 @@ export type RegistrationData = {
|
|
|
18
18
|
family_name: string;
|
|
19
19
|
};
|
|
20
20
|
export declare const register: (credentials: RegistrationData, type: "Institute" | "Provider" | "Student") => Promise<string>;
|
|
21
|
+
export type CallableLog = {
|
|
22
|
+
functionName: string;
|
|
23
|
+
data: unknown;
|
|
24
|
+
timestamp: string;
|
|
25
|
+
userId: string | null;
|
|
26
|
+
userEmail: string | null;
|
|
27
|
+
url: string | null;
|
|
28
|
+
outcome: "pending" | "success" | "error";
|
|
29
|
+
error?: string;
|
|
30
|
+
};
|
|
21
31
|
export declare const executeCallable: (functionName: string, data: unknown) => Promise<{
|
|
22
32
|
data: any;
|
|
23
33
|
}>;
|
package/lib/firebase/firebase.js
CHANGED
|
@@ -45,13 +45,41 @@ const register = async (credentials, type) => {
|
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
47
|
exports.register = register;
|
|
48
|
+
const SENSITIVE_KEYS = new Set(["password", "passwordOne", "passwordTwo", "token", "secret"]);
|
|
49
|
+
function sanitiseData(data) {
|
|
50
|
+
if (!data || typeof data !== "object")
|
|
51
|
+
return data;
|
|
52
|
+
if (Array.isArray(data))
|
|
53
|
+
return data.map(sanitiseData);
|
|
54
|
+
return Object.fromEntries(Object.entries(data).map(([k, v]) => [
|
|
55
|
+
k,
|
|
56
|
+
SENSITIVE_KEYS.has(k) ? "[REDACTED]" : sanitiseData(v),
|
|
57
|
+
]));
|
|
58
|
+
}
|
|
48
59
|
const executeCallable = async (functionName, data) => {
|
|
60
|
+
const currentUser = firebaseConfig_1.auth.currentUser;
|
|
61
|
+
const firebaseQuery = new firebaseQuery_1.default();
|
|
62
|
+
const logEntry = {
|
|
63
|
+
functionName,
|
|
64
|
+
data: sanitiseData(data),
|
|
65
|
+
timestamp: new Date().toISOString(),
|
|
66
|
+
userId: currentUser?.uid ?? null,
|
|
67
|
+
userEmail: currentUser?.email ?? null,
|
|
68
|
+
url: typeof window !== "undefined" ? window.location.href : null,
|
|
69
|
+
outcome: "pending",
|
|
70
|
+
};
|
|
71
|
+
const logRef = firebaseQuery.add(["callableLogs"], logEntry);
|
|
49
72
|
const funcCallable = (0, functions_1.httpsCallable)(firebaseConfig_1.functions, functionName);
|
|
50
|
-
|
|
73
|
+
try {
|
|
74
|
+
const res = await funcCallable(data);
|
|
75
|
+
logRef.then((doc) => firebaseQuery.update(["callableLogs", doc.id], { outcome: "success" }));
|
|
76
|
+
return res;
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
51
79
|
console.log("callableError", functionName, e);
|
|
80
|
+
logRef.then((doc) => firebaseQuery.update(["callableLogs", doc.id], { outcome: "error", error: e?.message ?? String(e) }));
|
|
52
81
|
throw e;
|
|
53
|
-
}
|
|
54
|
-
return res;
|
|
82
|
+
}
|
|
55
83
|
};
|
|
56
84
|
exports.executeCallable = executeCallable;
|
|
57
85
|
function useExecuteCallableJob({ user }) {
|
|
@@ -212,6 +240,10 @@ function useExecuteCallableJob({ user }) {
|
|
|
212
240
|
updated: date.toISOString(),
|
|
213
241
|
oId: user.oId,
|
|
214
242
|
product: user.product,
|
|
243
|
+
functionName,
|
|
244
|
+
userId: user.id ?? null,
|
|
245
|
+
userEmail: user.email ?? null,
|
|
246
|
+
dataSent: sanitiseData(data),
|
|
215
247
|
};
|
|
216
248
|
const jobId = (await firebaseQuery.add(["jobs"], jobObject)).id;
|
|
217
249
|
console.log("jobId", jobId);
|
|
@@ -228,6 +260,14 @@ function useExecuteCallableJob({ user }) {
|
|
|
228
260
|
jobId: jobId,
|
|
229
261
|
data: jobResolved
|
|
230
262
|
}));
|
|
263
|
+
}).catch(async (e) => {
|
|
264
|
+
const errorUpdate = {
|
|
265
|
+
status: "error",
|
|
266
|
+
updated: new Date().toISOString(),
|
|
267
|
+
error: e?.message ?? String(e),
|
|
268
|
+
};
|
|
269
|
+
await firebaseQuery.update(["jobs", jobId], errorUpdate);
|
|
270
|
+
dispatch((0, jobsSlice_1.updateJob)({ jobId, data: errorUpdate }));
|
|
231
271
|
});
|
|
232
272
|
return {
|
|
233
273
|
severity: "success",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/firebase/firebase.tsx"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"firebase.js","sourceRoot":"","sources":["../../src/firebase/firebase.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -54,14 +54,56 @@ export const register = async (credentials: RegistrationData, type:"Institute"|"
|
|
|
54
54
|
});
|
|
55
55
|
};
|
|
56
56
|
|
|
57
|
+
const SENSITIVE_KEYS = new Set(["password", "passwordOne", "passwordTwo", "token", "secret"]);
|
|
58
|
+
|
|
59
|
+
function sanitiseData(data: unknown): unknown {
|
|
60
|
+
if (!data || typeof data !== "object") return data;
|
|
61
|
+
if (Array.isArray(data)) return data.map(sanitiseData);
|
|
62
|
+
return Object.fromEntries(
|
|
63
|
+
Object.entries(data as Record<string, unknown>).map(([k, v]) => [
|
|
64
|
+
k,
|
|
65
|
+
SENSITIVE_KEYS.has(k) ? "[REDACTED]" : sanitiseData(v),
|
|
66
|
+
])
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type CallableLog = {
|
|
71
|
+
functionName: string;
|
|
72
|
+
data: unknown;
|
|
73
|
+
timestamp: string;
|
|
74
|
+
userId: string | null;
|
|
75
|
+
userEmail: string | null;
|
|
76
|
+
url: string | null;
|
|
77
|
+
outcome: "pending" | "success" | "error";
|
|
78
|
+
error?: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
57
81
|
export const executeCallable = async (functionName: string, data: unknown) => {
|
|
82
|
+
const currentUser = auth.currentUser;
|
|
83
|
+
const firebaseQuery = new FirebaseQuery();
|
|
84
|
+
|
|
85
|
+
const logEntry: CallableLog = {
|
|
86
|
+
functionName,
|
|
87
|
+
data: sanitiseData(data),
|
|
88
|
+
timestamp: new Date().toISOString(),
|
|
89
|
+
userId: currentUser?.uid ?? null,
|
|
90
|
+
userEmail: currentUser?.email ?? null,
|
|
91
|
+
url: typeof window !== "undefined" ? window.location.href : null,
|
|
92
|
+
outcome: "pending",
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const logRef = firebaseQuery.add(["callableLogs"], logEntry as unknown as {[key: string]: unknown});
|
|
96
|
+
|
|
58
97
|
const funcCallable = httpsCallable(functions, functionName);
|
|
59
|
-
|
|
98
|
+
try {
|
|
99
|
+
const res = await funcCallable(data);
|
|
100
|
+
logRef.then((doc) => firebaseQuery.update(["callableLogs", doc.id], {outcome: "success"}));
|
|
101
|
+
return res as {data: any};
|
|
102
|
+
} catch (e: any) {
|
|
60
103
|
console.log("callableError", functionName, e);
|
|
104
|
+
logRef.then((doc) => firebaseQuery.update(["callableLogs", doc.id], {outcome: "error", error: e?.message ?? String(e)}));
|
|
61
105
|
throw e;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return res as {data: any};
|
|
106
|
+
}
|
|
65
107
|
};
|
|
66
108
|
|
|
67
109
|
|
|
@@ -242,6 +284,10 @@ export function useExecuteCallableJob({user}:{user: UserData}) {
|
|
|
242
284
|
updated: date.toISOString(),
|
|
243
285
|
oId: user.oId,
|
|
244
286
|
product: user.product,
|
|
287
|
+
functionName,
|
|
288
|
+
userId: user.id ?? null,
|
|
289
|
+
userEmail: user.email ?? null,
|
|
290
|
+
dataSent: sanitiseData(data),
|
|
245
291
|
};
|
|
246
292
|
|
|
247
293
|
const jobId = (await firebaseQuery.add(["jobs"], jobObject)).id;
|
|
@@ -262,6 +308,14 @@ export function useExecuteCallableJob({user}:{user: UserData}) {
|
|
|
262
308
|
jobId: jobId,
|
|
263
309
|
data: jobResolved
|
|
264
310
|
} as Partial<Job>));
|
|
311
|
+
}).catch(async (e: any) => {
|
|
312
|
+
const errorUpdate = {
|
|
313
|
+
status: "error",
|
|
314
|
+
updated: new Date().toISOString(),
|
|
315
|
+
error: e?.message ?? String(e),
|
|
316
|
+
};
|
|
317
|
+
await firebaseQuery.update(["jobs", jobId], errorUpdate);
|
|
318
|
+
dispatch(updateJob({jobId, data: errorUpdate} as Partial<Job>));
|
|
265
319
|
});
|
|
266
320
|
return {
|
|
267
321
|
severity: "success",
|