placementt-core 1.400.1041 → 1.400.1043

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.
@@ -20,9 +20,9 @@ export default class FirebaseQuery {
20
20
  }): Promise<DocumentReference<DocumentData>>;
21
21
  getUniqueDocName(path: string[] | string, name: string, oId: string, product: Products): Promise<string>;
22
22
  getDocData(path: string[] | string): Promise<DocumentData>;
23
- getDocsWhere(path: string[] | string, constraints?: QueryConstraint[] | QueryConstraint, rawDocs?: boolean): Promise<void | import("@firebase/firestore").QuerySnapshot<DocumentData> | {
23
+ getDocsWhere(path: string[] | string, constraints?: QueryConstraint[] | QueryConstraint, rawDocs?: boolean): Promise<import("@firebase/firestore").QuerySnapshot<DocumentData> | {
24
24
  [k: string]: any;
25
- }>;
25
+ } | undefined>;
26
26
  collectionUpdate(data: {
27
27
  [key: string]: unknown;
28
28
  }, path: string[] | string, constraints?: QueryConstraint[] | QueryConstraint): Promise<void>;
@@ -3,6 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const firestore_1 = require("firebase/firestore");
4
4
  const firebaseConfig_1 = require("./firebaseConfig");
5
5
  const util_1 = require("./util");
6
+ /**
7
+ * Report a read that failed, and carry on with an empty result.
8
+ *
9
+ * Both readers below answer a failure with 0 or {} so that one bad query cannot blank
10
+ * a page. That is worth keeping — but it used to report the failure with `console.log`,
11
+ * which put it in the same undifferentiated stream as the "GET COUNT" line above it
12
+ * and left it out of the console's error filter entirely. A missing composite index is
13
+ * the error that costs most to miss: Firestore answers `failed-precondition` with the
14
+ * URL that creates the index, and the empty result it turns into is indistinguishable
15
+ * from a collection that genuinely has nothing in it.
16
+ *
17
+ * So: still not fatal, but no longer quiet, and carrying the query that failed rather
18
+ * than the error alone — a bare index error names a collection and nothing about which
19
+ * of the dozen reads against it went wrong.
20
+ *
21
+ * @param {string} kind which reader failed.
22
+ * @param {string[]|string} path the collection it was reading.
23
+ * @param {*} constraints the query's constraints.
24
+ * @param {*} error what Firestore threw.
25
+ * @return {undefined} nothing, so the caller falls back to its empty result.
26
+ */
27
+ const queryFailed = (kind, path, constraints, error) => {
28
+ console.error(`GET ${kind} FAILED — ${typeof path === "string" ? path : path.join("/")}`, { constraints, error });
29
+ return undefined;
30
+ };
6
31
  class FirebaseQuery {
7
32
  createQuery(queryType, path, constraints) {
8
33
  switch (queryType) {
@@ -14,7 +39,7 @@ class FirebaseQuery {
14
39
  }
15
40
  async getCount(path, constraints) {
16
41
  console.log("GET COUNT", path, constraints);
17
- const countObject = await (0, firestore_1.getCountFromServer)(this.createQuery("collection", path, constraints)).catch((e) => console.log(e));
42
+ const countObject = await (0, firestore_1.getCountFromServer)(this.createQuery("collection", path, constraints)).catch((e) => queryFailed("COUNT", path, constraints, e));
18
43
  if (!countObject)
19
44
  return 0;
20
45
  return (countObject).data().count;
@@ -79,7 +104,7 @@ class FirebaseQuery {
79
104
  }
80
105
  async getDocsWhere(path, constraints, rawDocs = false) {
81
106
  const q = this.createQuery("collection", path, constraints);
82
- const docs = await (0, firestore_1.getDocs)(q).catch((e) => console.log(e, q));
107
+ const docs = await (0, firestore_1.getDocs)(q).catch((e) => queryFailed("DOCS", path, constraints, e));
83
108
  if (rawDocs)
84
109
  return docs;
85
110
  if (!docs)
@@ -1 +1 @@
1
- {"version":3,"file":"firebaseQuery.js","sourceRoot":"","sources":["../../src/firebase/firebaseQuery.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebaseQuery.js","sourceRoot":"","sources":["../../src/firebase/firebaseQuery.tsx"],"names":[],"mappings":"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"}
@@ -28,8 +28,8 @@ export declare const getPlacementsWhere: ({ w, oId, uid, raw }: {
28
28
  oId?: string;
29
29
  uid?: string;
30
30
  raw?: boolean;
31
- }) => Promise<void | import("@firebase/firestore").QuerySnapshot<import("@firebase/firestore").DocumentData> | {
31
+ }) => Promise<import("@firebase/firestore").QuerySnapshot<import("@firebase/firestore").DocumentData> | {
32
32
  [k: string]: any;
33
- }>;
33
+ } | undefined>;
34
34
  export declare const checkPlacementConflicts: (instituteId: string, userGroupId: string) => Promise<number>;
35
35
  export declare const getPlacementListingsById: (placementListings: string[]) => Promise<[string, PlacementListing][]>;
@@ -118,9 +118,9 @@ export declare function useStudent({ user }: {
118
118
  add: (formData: StudentPlacementData) => Promise<void>;
119
119
  update: (placementId: string, attributes: Partial<StudentPlacementData>) => Promise<void>;
120
120
  delete: (id: string) => Promise<void>;
121
- getUserPlacements: () => Promise<void | import("@firebase/firestore").QuerySnapshot<DocumentData> | {
121
+ getUserPlacements: () => Promise<import("@firebase/firestore").QuerySnapshot<DocumentData> | {
122
122
  [k: string]: any;
123
- }>;
123
+ } | undefined>;
124
124
  getPlacementsStart: (start: Date, end: Date) => Promise<{
125
125
  [key: string]: StudentPlacementData;
126
126
  }>;
@@ -334,9 +334,9 @@ export declare function useInstituteStudent({ user }: {
334
334
  add: (formData: StudentPlacementData) => Promise<void>;
335
335
  update: (placementId: string, attributes: Partial<StudentPlacementData>) => Promise<void>;
336
336
  delete: (id: string) => Promise<void>;
337
- getUserPlacements: () => Promise<void | import("@firebase/firestore").QuerySnapshot<DocumentData> | {
337
+ getUserPlacements: () => Promise<import("@firebase/firestore").QuerySnapshot<DocumentData> | {
338
338
  [k: string]: any;
339
- }>;
339
+ } | undefined>;
340
340
  getPlacementsStart: (start: Date, end: Date) => Promise<{
341
341
  [key: string]: StudentPlacementData;
342
342
  }>;
@@ -1184,6 +1184,7 @@ export type InstituteData = {
1184
1184
  }[];
1185
1185
  feedback?: CohortData["feedback"];
1186
1186
  feedbackText?: CohortData["feedbackText"];
1187
+ emailParentOnStatusChange?: boolean;
1187
1188
  };
1188
1189
  };
1189
1190
  cs?: CustomerSuccessData;
@@ -1368,6 +1369,7 @@ export type CohortData = {
1368
1369
  trackAttendance?: boolean;
1369
1370
  attendanceReportingEmail?: string;
1370
1371
  hardLimitOnSubmissions?: boolean;
1372
+ emailParentOnStatusChange?: boolean;
1371
1373
  targetHours?: number;
1372
1374
  manuallySendFeedback?: boolean;
1373
1375
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "private": false,
3
3
  "name": "placementt-core",
4
4
  "author": "Placementt",
5
- "version": "1.400.1041",
5
+ "version": "1.400.1043",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
@@ -7,6 +7,40 @@ import {pathToArr} from "./util";
7
7
  import {Products} from "../typeDefinitions";
8
8
  import { AppDispatch } from "../config";
9
9
 
10
+ /**
11
+ * Report a read that failed, and carry on with an empty result.
12
+ *
13
+ * Both readers below answer a failure with 0 or {} so that one bad query cannot blank
14
+ * a page. That is worth keeping — but it used to report the failure with `console.log`,
15
+ * which put it in the same undifferentiated stream as the "GET COUNT" line above it
16
+ * and left it out of the console's error filter entirely. A missing composite index is
17
+ * the error that costs most to miss: Firestore answers `failed-precondition` with the
18
+ * URL that creates the index, and the empty result it turns into is indistinguishable
19
+ * from a collection that genuinely has nothing in it.
20
+ *
21
+ * So: still not fatal, but no longer quiet, and carrying the query that failed rather
22
+ * than the error alone — a bare index error names a collection and nothing about which
23
+ * of the dozen reads against it went wrong.
24
+ *
25
+ * @param {string} kind which reader failed.
26
+ * @param {string[]|string} path the collection it was reading.
27
+ * @param {*} constraints the query's constraints.
28
+ * @param {*} error what Firestore threw.
29
+ * @return {undefined} nothing, so the caller falls back to its empty result.
30
+ */
31
+ const queryFailed = (
32
+ kind: "COUNT"|"DOCS",
33
+ path: string[]|string,
34
+ constraints: QueryConstraint[]|QueryConstraint|undefined,
35
+ error: unknown,
36
+ ): undefined => {
37
+ console.error(
38
+ `GET ${kind} FAILED — ${typeof path === "string" ? path : path.join("/")}`,
39
+ {constraints, error},
40
+ );
41
+ return undefined;
42
+ };
43
+
10
44
  export default class FirebaseQuery {
11
45
  private createQuery(queryType:"collection"|"doc", path:string[]|string, constraints?:QueryConstraint[]|QueryConstraint) {
12
46
  switch (queryType) {
@@ -19,7 +53,7 @@ export default class FirebaseQuery {
19
53
 
20
54
  async getCount(path:string[]|string, constraints?:QueryConstraint[]|QueryConstraint):Promise<number> {
21
55
  console.log("GET COUNT", path, constraints);
22
- const countObject = await getCountFromServer(this.createQuery("collection", path, constraints) as Query).catch((e) => console.log(e));
56
+ const countObject = await getCountFromServer(this.createQuery("collection", path, constraints) as Query).catch((e) => queryFailed("COUNT", path, constraints, e));
23
57
  if (!countObject) return 0;
24
58
  return (countObject).data().count;
25
59
  }
@@ -93,7 +127,7 @@ export default class FirebaseQuery {
93
127
  async getDocsWhere(path: string[]|string, constraints?:QueryConstraint[]|QueryConstraint, rawDocs=false) {
94
128
  const q = this.createQuery("collection", path, constraints);
95
129
 
96
- const docs = await getDocs(q as Query).catch((e) => console.log(e, q));
130
+ const docs = await getDocs(q as Query).catch((e) => queryFailed("DOCS", path, constraints, e));
97
131
  if (rawDocs) return docs;
98
132
  if (!docs) return {};
99
133
  console.log("GET DOCS WHERE", docs.size, path, constraints);
@@ -1215,6 +1215,7 @@ export type InstituteData = {
1215
1215
  }[],
1216
1216
  feedback?: CohortData["feedback"], // promoted feedback form config
1217
1217
  feedbackText?: CohortData["feedbackText"],
1218
+ emailParentOnStatusChange?: boolean,
1218
1219
  }
1219
1220
  },
1220
1221
  cs?: CustomerSuccessData,
@@ -1410,6 +1411,7 @@ export type CohortData = {
1410
1411
  trackAttendance?: boolean,
1411
1412
  attendanceReportingEmail?: string, // Optionally set email address
1412
1413
  hardLimitOnSubmissions?: boolean,
1414
+ emailParentOnStatusChange?: boolean
1413
1415
  targetHours?: number,
1414
1416
  manuallySendFeedback?: boolean,
1415
1417
  }