placementt-core 1.400.1185 → 1.400.1187

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.
@@ -37,12 +37,12 @@ export declare const destinationsConfigCallables: {
37
37
  academicYear: z.ZodString;
38
38
  }, "strip", z.ZodTypeAny, {
39
39
  created: number;
40
- provisioned: boolean;
41
40
  academicYear: string;
41
+ provisioned: boolean;
42
42
  }, {
43
43
  created: number;
44
- provisioned: boolean;
45
44
  academicYear: string;
45
+ provisioned: boolean;
46
46
  }>;
47
47
  };
48
48
  };
@@ -172,9 +172,9 @@ export declare const outreachCallables: {
172
172
  assignee: string;
173
173
  events?: boolean | undefined;
174
174
  wex?: boolean | undefined;
175
- docCheck?: boolean | undefined;
176
175
  forename?: string | undefined;
177
176
  surname?: string | undefined;
177
+ docCheck?: boolean | undefined;
178
178
  personalNotes?: any[] | undefined;
179
179
  generalNotes?: any[] | undefined;
180
180
  }, {
@@ -183,9 +183,9 @@ export declare const outreachCallables: {
183
183
  assignee: string;
184
184
  events?: boolean | undefined;
185
185
  wex?: boolean | undefined;
186
- docCheck?: boolean | undefined;
187
186
  forename?: string | undefined;
188
187
  surname?: string | undefined;
188
+ docCheck?: boolean | undefined;
189
189
  personalNotes?: any[] | undefined;
190
190
  generalNotes?: any[] | undefined;
191
191
  }>;
@@ -196,9 +196,9 @@ export declare const outreachCallables: {
196
196
  assignee: string;
197
197
  events?: boolean | undefined;
198
198
  wex?: boolean | undefined;
199
- docCheck?: boolean | undefined;
200
199
  forename?: string | undefined;
201
200
  surname?: string | undefined;
201
+ docCheck?: boolean | undefined;
202
202
  personalNotes?: any[] | undefined;
203
203
  generalNotes?: any[] | undefined;
204
204
  };
@@ -210,9 +210,9 @@ export declare const outreachCallables: {
210
210
  assignee: string;
211
211
  events?: boolean | undefined;
212
212
  wex?: boolean | undefined;
213
- docCheck?: boolean | undefined;
214
213
  forename?: string | undefined;
215
214
  surname?: string | undefined;
215
+ docCheck?: boolean | undefined;
216
216
  personalNotes?: any[] | undefined;
217
217
  generalNotes?: any[] | undefined;
218
218
  };
@@ -409,9 +409,9 @@ export declare const allCallables: {
409
409
  assignee: string;
410
410
  events?: boolean | undefined;
411
411
  wex?: boolean | undefined;
412
- docCheck?: boolean | undefined;
413
412
  forename?: string | undefined;
414
413
  surname?: string | undefined;
414
+ docCheck?: boolean | undefined;
415
415
  personalNotes?: any[] | undefined;
416
416
  generalNotes?: any[] | undefined;
417
417
  }, {
@@ -420,9 +420,9 @@ export declare const allCallables: {
420
420
  assignee: string;
421
421
  events?: boolean | undefined;
422
422
  wex?: boolean | undefined;
423
- docCheck?: boolean | undefined;
424
423
  forename?: string | undefined;
425
424
  surname?: string | undefined;
425
+ docCheck?: boolean | undefined;
426
426
  personalNotes?: any[] | undefined;
427
427
  generalNotes?: any[] | undefined;
428
428
  }>;
@@ -433,9 +433,9 @@ export declare const allCallables: {
433
433
  assignee: string;
434
434
  events?: boolean | undefined;
435
435
  wex?: boolean | undefined;
436
- docCheck?: boolean | undefined;
437
436
  forename?: string | undefined;
438
437
  surname?: string | undefined;
438
+ docCheck?: boolean | undefined;
439
439
  personalNotes?: any[] | undefined;
440
440
  generalNotes?: any[] | undefined;
441
441
  };
@@ -447,9 +447,9 @@ export declare const allCallables: {
447
447
  assignee: string;
448
448
  events?: boolean | undefined;
449
449
  wex?: boolean | undefined;
450
- docCheck?: boolean | undefined;
451
450
  forename?: string | undefined;
452
451
  surname?: string | undefined;
452
+ docCheck?: boolean | undefined;
453
453
  personalNotes?: any[] | undefined;
454
454
  generalNotes?: any[] | undefined;
455
455
  };
@@ -890,10 +890,10 @@ export declare const allCallables: {
890
890
  enrolmentStatus: string | null;
891
891
  }>, "many">;
892
892
  }, "strip", z.ZodTypeAny, {
893
- upn: string | null;
894
- matchedOn: "upn" | "nameDob";
895
893
  forename: string;
896
894
  surname: string;
895
+ upn: string | null;
896
+ matchedOn: "upn" | "nameDob";
897
897
  dateOfBirth: string | null;
898
898
  enrolments: {
899
899
  email: string | null;
@@ -906,10 +906,10 @@ export declare const allCallables: {
906
906
  enrolmentStatus: string | null;
907
907
  }[];
908
908
  }, {
909
- upn: string | null;
910
- matchedOn: "upn" | "nameDob";
911
909
  forename: string;
912
910
  surname: string;
911
+ upn: string | null;
912
+ matchedOn: "upn" | "nameDob";
913
913
  dateOfBirth: string | null;
914
914
  enrolments: {
915
915
  email: string | null;
@@ -936,9 +936,9 @@ export declare const allCallables: {
936
936
  }, "strip", z.ZodTypeAny, {
937
937
  year: string | null;
938
938
  oId: string;
939
- schoolName: string;
940
939
  forename: string;
941
940
  surname: string;
941
+ schoolName: string;
942
942
  dateOfBirth: string | null;
943
943
  wondeId: string;
944
944
  formGroup: string | null;
@@ -947,9 +947,9 @@ export declare const allCallables: {
947
947
  }, {
948
948
  year: string | null;
949
949
  oId: string;
950
- schoolName: string;
951
950
  forename: string;
952
951
  surname: string;
952
+ schoolName: string;
953
953
  dateOfBirth: string | null;
954
954
  wondeId: string;
955
955
  formGroup: string | null;
@@ -963,10 +963,10 @@ export declare const allCallables: {
963
963
  oId: string;
964
964
  }[];
965
965
  matches: {
966
- upn: string | null;
967
- matchedOn: "upn" | "nameDob";
968
966
  forename: string;
969
967
  surname: string;
968
+ upn: string | null;
969
+ matchedOn: "upn" | "nameDob";
970
970
  dateOfBirth: string | null;
971
971
  enrolments: {
972
972
  email: string | null;
@@ -993,9 +993,9 @@ export declare const allCallables: {
993
993
  dualStatus: {
994
994
  year: string | null;
995
995
  oId: string;
996
- schoolName: string;
997
996
  forename: string;
998
997
  surname: string;
998
+ schoolName: string;
999
999
  dateOfBirth: string | null;
1000
1000
  wondeId: string;
1001
1001
  formGroup: string | null;
@@ -1009,10 +1009,10 @@ export declare const allCallables: {
1009
1009
  oId: string;
1010
1010
  }[];
1011
1011
  matches: {
1012
- upn: string | null;
1013
- matchedOn: "upn" | "nameDob";
1014
1012
  forename: string;
1015
1013
  surname: string;
1014
+ upn: string | null;
1015
+ matchedOn: "upn" | "nameDob";
1016
1016
  dateOfBirth: string | null;
1017
1017
  enrolments: {
1018
1018
  email: string | null;
@@ -1039,9 +1039,9 @@ export declare const allCallables: {
1039
1039
  dualStatus: {
1040
1040
  year: string | null;
1041
1041
  oId: string;
1042
- schoolName: string;
1043
1042
  forename: string;
1044
1043
  surname: string;
1044
+ schoolName: string;
1045
1045
  dateOfBirth: string | null;
1046
1046
  wondeId: string;
1047
1047
  formGroup: string | null;
@@ -2645,12 +2645,12 @@ export declare const allCallables: {
2645
2645
  academicYear: z.ZodString;
2646
2646
  }, "strip", z.ZodTypeAny, {
2647
2647
  created: number;
2648
- provisioned: boolean;
2649
2648
  academicYear: string;
2649
+ provisioned: boolean;
2650
2650
  }, {
2651
2651
  created: number;
2652
- provisioned: boolean;
2653
2652
  academicYear: string;
2653
+ provisioned: boolean;
2654
2654
  }>;
2655
2655
  };
2656
2656
  };
@@ -2690,12 +2690,12 @@ export declare const callableGroups: {
2690
2690
  academicYear: z.ZodString;
2691
2691
  }, "strip", z.ZodTypeAny, {
2692
2692
  created: number;
2693
- provisioned: boolean;
2694
2693
  academicYear: string;
2694
+ provisioned: boolean;
2695
2695
  }, {
2696
2696
  created: number;
2697
- provisioned: boolean;
2698
2697
  academicYear: string;
2698
+ provisioned: boolean;
2699
2699
  }>;
2700
2700
  };
2701
2701
  };
@@ -4407,10 +4407,10 @@ export declare const callableGroups: {
4407
4407
  enrolmentStatus: string | null;
4408
4408
  }>, "many">;
4409
4409
  }, "strip", z.ZodTypeAny, {
4410
- upn: string | null;
4411
- matchedOn: "upn" | "nameDob";
4412
4410
  forename: string;
4413
4411
  surname: string;
4412
+ upn: string | null;
4413
+ matchedOn: "upn" | "nameDob";
4414
4414
  dateOfBirth: string | null;
4415
4415
  enrolments: {
4416
4416
  email: string | null;
@@ -4423,10 +4423,10 @@ export declare const callableGroups: {
4423
4423
  enrolmentStatus: string | null;
4424
4424
  }[];
4425
4425
  }, {
4426
- upn: string | null;
4427
- matchedOn: "upn" | "nameDob";
4428
4426
  forename: string;
4429
4427
  surname: string;
4428
+ upn: string | null;
4429
+ matchedOn: "upn" | "nameDob";
4430
4430
  dateOfBirth: string | null;
4431
4431
  enrolments: {
4432
4432
  email: string | null;
@@ -4453,9 +4453,9 @@ export declare const callableGroups: {
4453
4453
  }, "strip", z.ZodTypeAny, {
4454
4454
  year: string | null;
4455
4455
  oId: string;
4456
- schoolName: string;
4457
4456
  forename: string;
4458
4457
  surname: string;
4458
+ schoolName: string;
4459
4459
  dateOfBirth: string | null;
4460
4460
  wondeId: string;
4461
4461
  formGroup: string | null;
@@ -4464,9 +4464,9 @@ export declare const callableGroups: {
4464
4464
  }, {
4465
4465
  year: string | null;
4466
4466
  oId: string;
4467
- schoolName: string;
4468
4467
  forename: string;
4469
4468
  surname: string;
4469
+ schoolName: string;
4470
4470
  dateOfBirth: string | null;
4471
4471
  wondeId: string;
4472
4472
  formGroup: string | null;
@@ -4480,10 +4480,10 @@ export declare const callableGroups: {
4480
4480
  oId: string;
4481
4481
  }[];
4482
4482
  matches: {
4483
- upn: string | null;
4484
- matchedOn: "upn" | "nameDob";
4485
4483
  forename: string;
4486
4484
  surname: string;
4485
+ upn: string | null;
4486
+ matchedOn: "upn" | "nameDob";
4487
4487
  dateOfBirth: string | null;
4488
4488
  enrolments: {
4489
4489
  email: string | null;
@@ -4510,9 +4510,9 @@ export declare const callableGroups: {
4510
4510
  dualStatus: {
4511
4511
  year: string | null;
4512
4512
  oId: string;
4513
- schoolName: string;
4514
4513
  forename: string;
4515
4514
  surname: string;
4515
+ schoolName: string;
4516
4516
  dateOfBirth: string | null;
4517
4517
  wondeId: string;
4518
4518
  formGroup: string | null;
@@ -4526,10 +4526,10 @@ export declare const callableGroups: {
4526
4526
  oId: string;
4527
4527
  }[];
4528
4528
  matches: {
4529
- upn: string | null;
4530
- matchedOn: "upn" | "nameDob";
4531
4529
  forename: string;
4532
4530
  surname: string;
4531
+ upn: string | null;
4532
+ matchedOn: "upn" | "nameDob";
4533
4533
  dateOfBirth: string | null;
4534
4534
  enrolments: {
4535
4535
  email: string | null;
@@ -4556,9 +4556,9 @@ export declare const callableGroups: {
4556
4556
  dualStatus: {
4557
4557
  year: string | null;
4558
4558
  oId: string;
4559
- schoolName: string;
4560
4559
  forename: string;
4561
4560
  surname: string;
4561
+ schoolName: string;
4562
4562
  dateOfBirth: string | null;
4563
4563
  wondeId: string;
4564
4564
  formGroup: string | null;
@@ -4915,9 +4915,9 @@ export declare const callableGroups: {
4915
4915
  assignee: string;
4916
4916
  events?: boolean | undefined;
4917
4917
  wex?: boolean | undefined;
4918
- docCheck?: boolean | undefined;
4919
4918
  forename?: string | undefined;
4920
4919
  surname?: string | undefined;
4920
+ docCheck?: boolean | undefined;
4921
4921
  personalNotes?: any[] | undefined;
4922
4922
  generalNotes?: any[] | undefined;
4923
4923
  }, {
@@ -4926,9 +4926,9 @@ export declare const callableGroups: {
4926
4926
  assignee: string;
4927
4927
  events?: boolean | undefined;
4928
4928
  wex?: boolean | undefined;
4929
- docCheck?: boolean | undefined;
4930
4929
  forename?: string | undefined;
4931
4930
  surname?: string | undefined;
4931
+ docCheck?: boolean | undefined;
4932
4932
  personalNotes?: any[] | undefined;
4933
4933
  generalNotes?: any[] | undefined;
4934
4934
  }>;
@@ -4939,9 +4939,9 @@ export declare const callableGroups: {
4939
4939
  assignee: string;
4940
4940
  events?: boolean | undefined;
4941
4941
  wex?: boolean | undefined;
4942
- docCheck?: boolean | undefined;
4943
4942
  forename?: string | undefined;
4944
4943
  surname?: string | undefined;
4944
+ docCheck?: boolean | undefined;
4945
4945
  personalNotes?: any[] | undefined;
4946
4946
  generalNotes?: any[] | undefined;
4947
4947
  };
@@ -4953,9 +4953,9 @@ export declare const callableGroups: {
4953
4953
  assignee: string;
4954
4954
  events?: boolean | undefined;
4955
4955
  wex?: boolean | undefined;
4956
- docCheck?: boolean | undefined;
4957
4956
  forename?: string | undefined;
4958
4957
  surname?: string | undefined;
4958
+ docCheck?: boolean | undefined;
4959
4959
  personalNotes?: any[] | undefined;
4960
4960
  generalNotes?: any[] | undefined;
4961
4961
  };
@@ -132,10 +132,10 @@ export declare const wondeCallables: {
132
132
  enrolmentStatus: string | null;
133
133
  }>, "many">;
134
134
  }, "strip", z.ZodTypeAny, {
135
- upn: string | null;
136
- matchedOn: "upn" | "nameDob";
137
135
  forename: string;
138
136
  surname: string;
137
+ upn: string | null;
138
+ matchedOn: "upn" | "nameDob";
139
139
  dateOfBirth: string | null;
140
140
  enrolments: {
141
141
  email: string | null;
@@ -148,10 +148,10 @@ export declare const wondeCallables: {
148
148
  enrolmentStatus: string | null;
149
149
  }[];
150
150
  }, {
151
- upn: string | null;
152
- matchedOn: "upn" | "nameDob";
153
151
  forename: string;
154
152
  surname: string;
153
+ upn: string | null;
154
+ matchedOn: "upn" | "nameDob";
155
155
  dateOfBirth: string | null;
156
156
  enrolments: {
157
157
  email: string | null;
@@ -180,9 +180,9 @@ export declare const wondeCallables: {
180
180
  }, "strip", z.ZodTypeAny, {
181
181
  year: string | null;
182
182
  oId: string;
183
- schoolName: string;
184
183
  forename: string;
185
184
  surname: string;
185
+ schoolName: string;
186
186
  dateOfBirth: string | null;
187
187
  wondeId: string;
188
188
  formGroup: string | null;
@@ -191,9 +191,9 @@ export declare const wondeCallables: {
191
191
  }, {
192
192
  year: string | null;
193
193
  oId: string;
194
- schoolName: string;
195
194
  forename: string;
196
195
  surname: string;
196
+ schoolName: string;
197
197
  dateOfBirth: string | null;
198
198
  wondeId: string;
199
199
  formGroup: string | null;
@@ -207,10 +207,10 @@ export declare const wondeCallables: {
207
207
  oId: string;
208
208
  }[];
209
209
  matches: {
210
- upn: string | null;
211
- matchedOn: "upn" | "nameDob";
212
210
  forename: string;
213
211
  surname: string;
212
+ upn: string | null;
213
+ matchedOn: "upn" | "nameDob";
214
214
  dateOfBirth: string | null;
215
215
  enrolments: {
216
216
  email: string | null;
@@ -237,9 +237,9 @@ export declare const wondeCallables: {
237
237
  dualStatus: {
238
238
  year: string | null;
239
239
  oId: string;
240
- schoolName: string;
241
240
  forename: string;
242
241
  surname: string;
242
+ schoolName: string;
243
243
  dateOfBirth: string | null;
244
244
  wondeId: string;
245
245
  formGroup: string | null;
@@ -253,10 +253,10 @@ export declare const wondeCallables: {
253
253
  oId: string;
254
254
  }[];
255
255
  matches: {
256
- upn: string | null;
257
- matchedOn: "upn" | "nameDob";
258
256
  forename: string;
259
257
  surname: string;
258
+ upn: string | null;
259
+ matchedOn: "upn" | "nameDob";
260
260
  dateOfBirth: string | null;
261
261
  enrolments: {
262
262
  email: string | null;
@@ -283,9 +283,9 @@ export declare const wondeCallables: {
283
283
  dualStatus: {
284
284
  year: string | null;
285
285
  oId: string;
286
- schoolName: string;
287
286
  forename: string;
288
287
  surname: string;
288
+ schoolName: string;
289
289
  dateOfBirth: string | null;
290
290
  wondeId: string;
291
291
  formGroup: string | null;
package/lib/index.d.ts CHANGED
@@ -41,6 +41,7 @@ export * from "./compassGuidanceExport";
41
41
  export * from "./destinations";
42
42
  export * from "./benchmarkEvidenceRules";
43
43
  export * from "./benchmarkAggregate";
44
+ export * from "./kcsie";
44
45
  export * from "./portfolioAggregate";
45
46
  export * from "./tutorialTips";
46
47
  export * from "./constants";
package/lib/index.js CHANGED
@@ -61,6 +61,7 @@ __exportStar(require("./compassGuidanceExport"), exports);
61
61
  __exportStar(require("./destinations"), exports);
62
62
  __exportStar(require("./benchmarkEvidenceRules"), exports);
63
63
  __exportStar(require("./benchmarkAggregate"), exports);
64
+ __exportStar(require("./kcsie"), exports);
64
65
  __exportStar(require("./portfolioAggregate"), exports);
65
66
  __exportStar(require("./tutorialTips"), exports);
66
67
  __exportStar(require("./constants"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,sDAAoC;AACpC,gEAA8C;AAC9C,0DAAwC;AACxC,2DAAyC;AACzC,kDAAgC;AAChC,uDAAqC;AACrC,4DAA0C;AAC1C,2DAAyC;AAEzC,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAChC,qDAAmC;AACnC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,mDAAiC;AACjC,+CAA6B;AAC7B,oDAAkC;AAClC,iDAA+B;AAC/B,qDAAmC;AACnC,uDAAqC;AACrC,gDAA8B;AAC9B,4CAA0B;AAC1B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,oDAAkC;AAClC,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,wDAAsC;AACtC,kDAAgC;AAChC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,0DAAwC;AACxC,iDAA+B;AAC/B,2DAAyC;AACzC,uDAAqC;AACrC,uDAAqC;AACrC,iDAA+B;AAC/B,8CAA4B;AAC5B,4CAA0B;AAC1B,qDAAmC;AACnC,0CAAwB;AACxB,kDAAgC;AAChC,yCAAuB;AACvB,4DAA0C;AAC1C,kDAAgC;AAChC,iDAA+B;AAC/B,2CAAyB;AACzB,4DAA0C;AAC1C,oEAAiD;AACjD,yEAAuD;AACvD,kEAAgD;AAChD,kEAAgD;AAChD,oEAAkD;AAClD,yGAAuF;AACvF,0GAAwF;AACxF,+FAA6E;AAC7E,4DAA0C;AAC1C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,2EAAyD;AACzD,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AACvC,mDAAiC;AACjC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,sDAAoC;AACpC,gEAA8C;AAC9C,0DAAwC;AACxC,2DAAyC;AACzC,kDAAgC;AAChC,uDAAqC;AACrC,4DAA0C;AAC1C,2DAAyC;AAEzC,oDAAkC;AAClC,8CAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAChC,qDAAmC;AACnC,mDAAiC;AACjC,qDAAmC;AACnC,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,mDAAiC;AACjC,+CAA6B;AAC7B,oDAAkC;AAClC,iDAA+B;AAC/B,qDAAmC;AACnC,uDAAqC;AACrC,gDAA8B;AAC9B,4CAA0B;AAC1B,wCAAsB;AACtB,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,oDAAkC;AAClC,4CAA0B;AAC1B,8CAA4B;AAC5B,2CAAyB;AACzB,wDAAsC;AACtC,kDAAgC;AAChC,uDAAqC;AACrC,oDAAkC;AAClC,kDAAgC;AAChC,0DAAwC;AACxC,iDAA+B;AAC/B,2DAAyC;AACzC,uDAAqC;AACrC,0CAAwB;AACxB,uDAAqC;AACrC,iDAA+B;AAC/B,8CAA4B;AAC5B,4CAA0B;AAC1B,qDAAmC;AACnC,0CAAwB;AACxB,kDAAgC;AAChC,yCAAuB;AACvB,4DAA0C;AAC1C,kDAAgC;AAChC,iDAA+B;AAC/B,2CAAyB;AACzB,4DAA0C;AAC1C,oEAAiD;AACjD,yEAAuD;AACvD,kEAAgD;AAChD,kEAAgD;AAChD,oEAAkD;AAClD,yGAAuF;AACvF,0GAAwF;AACxF,+FAA6E;AAC7E,4DAA0C;AAC1C,oEAAkD;AAClD,iEAA+C;AAC/C,gEAA8C;AAC9C,2EAAyD;AACzD,6CAA2B;AAC3B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AACvC,mDAAiC;AACjC,mDAAiC"}
package/lib/kcsie.d.ts ADDED
@@ -0,0 +1,36 @@
1
+ import { StudentPlacementData, WorkflowStage } from "./typeDefinitions";
2
+ type KcsiePerson = NonNullable<StudentPlacementData["kcsiePeople"]>[string];
3
+ export declare const KCSIE_BARRED_LIST_URL = "https://check-the-childrens-barred-list.education.gov.uk/";
4
+ export declare const KCSIE_STATUS_LABELS: Record<NonNullable<StudentPlacementData["kcsie"]>, string>;
5
+ export declare const KCSIE_NOT_REQUESTED: Pick<StudentPlacementData, "kcsie" | "kcsieStatuses">;
6
+ export declare const kcsiePersonId: ({ surname, dob }: Pick<KcsiePerson, "surname" | "dob">) => string;
7
+ export declare const currentKcsieStatus: (person: Pick<KcsiePerson, "status" | "academicYear">, date?: Date) => KcsiePerson["status"];
8
+ export declare const kcsieOutstanding: (status?: StudentPlacementData["kcsie"]) => boolean;
9
+ export declare const workflowRequiresKcsie: (workflow?: WorkflowStage[]) => boolean;
10
+ export declare const placementKcsieFields: (people: NonNullable<StudentPlacementData["kcsiePeople"]>) => Pick<StudentPlacementData, "kcsie" | "kcsieStatuses">;
11
+ export declare const kcsieRowsForPlacement: (placementId: string, placement: StudentPlacementData, status?: StudentPlacementData["kcsie"]) => ({
12
+ placementId: string;
13
+ providerContactId: string | undefined;
14
+ studentForename: string | undefined;
15
+ studentSurname: string | undefined;
16
+ employerName: string;
17
+ startDate: string;
18
+ endDate: string;
19
+ } & {
20
+ status: StudentPlacementData["kcsie"];
21
+ personId?: string;
22
+ person?: KcsiePerson;
23
+ })[];
24
+ export declare const reviewKcsiePerson: ({ oId, providerContactId, personId, dob, previousSurnames, status, note, reviewedBy, reviewedByName }: {
25
+ oId: string;
26
+ providerContactId: string;
27
+ personId: string;
28
+ dob: string;
29
+ previousSurnames?: string[];
30
+ status: KcsiePerson["status"];
31
+ note?: string;
32
+ reviewedBy: string;
33
+ reviewedByName: string;
34
+ }) => Promise<void>;
35
+ export declare const getKcsieCohortCounts: (oId: string, cohortId: string) => Promise<Record<string, number>>;
36
+ export {};
package/lib/kcsie.js ADDED
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getKcsieCohortCounts = exports.reviewKcsiePerson = exports.kcsieRowsForPlacement = exports.placementKcsieFields = exports.workflowRequiresKcsie = exports.kcsieOutstanding = exports.currentKcsieStatus = exports.kcsiePersonId = exports.KCSIE_NOT_REQUESTED = exports.KCSIE_STATUS_LABELS = exports.KCSIE_BARRED_LIST_URL = void 0;
7
+ const firestore_1 = require("firebase/firestore");
8
+ const benchmarkEvidenceRules_1 = require("./benchmarkEvidenceRules");
9
+ const firebaseQuery_1 = __importDefault(require("./firebase/firebaseQuery"));
10
+ const firebaseQuery = new firebaseQuery_1.default();
11
+ exports.KCSIE_BARRED_LIST_URL = "https://check-the-childrens-barred-list.education.gov.uk/";
12
+ exports.KCSIE_STATUS_LABELS = {
13
+ pending: "Awaiting check",
14
+ approved: "Approved",
15
+ flagged: "Flagged",
16
+ rejected: "Rejected",
17
+ notRequired: "Not required",
18
+ notRequested: "Not yet requested",
19
+ };
20
+ exports.KCSIE_NOT_REQUESTED = { kcsie: "notRequested", kcsieStatuses: ["notRequested"] };
21
+ // Surname and DOB are what the DfE search uses, so they identify a person across placements.
22
+ const kcsiePersonId = ({ surname, dob }) => `${surname.trim().toLowerCase().replace(/[^a-z]/g, "")}_${dob}`;
23
+ exports.kcsiePersonId = kcsiePersonId;
24
+ // Outcomes from an earlier academic year need checking again.
25
+ const currentKcsieStatus = (person, date = new Date()) => person.academicYear === (0, benchmarkEvidenceRules_1.academicYearForDate)(date) ? person.status : "pending";
26
+ exports.currentKcsieStatus = currentKcsieStatus;
27
+ const kcsieOutstanding = (status) => status === "pending" || status === "flagged" || status === "rejected";
28
+ exports.kcsieOutstanding = kcsieOutstanding;
29
+ const workflowRequiresKcsie = (workflow) => Boolean(workflow?.some((s) => s.kcsie && s.userType === "Provider"));
30
+ exports.workflowRequiresKcsie = workflowRequiresKcsie;
31
+ // The worst person's status wins, so one rejection holds the placement.
32
+ const placementKcsieFields = (people) => {
33
+ const statuses = Object.values(people).map((p) => p.status);
34
+ const kcsie = statuses.length ? ["rejected", "flagged", "pending", "approved"].find((s) => statuses.includes(s)) : "notRequired";
35
+ return { kcsie, kcsieStatuses: [...new Set(statuses)] };
36
+ };
37
+ exports.placementKcsieFields = placementKcsieFields;
38
+ // One row per person, so a placement naming two people appears twice.
39
+ const kcsieRowsForPlacement = (placementId, placement, status) => {
40
+ const base = { placementId, providerContactId: placement.providerContactId, studentForename: placement.studentForename, studentSurname: placement.studentSurname, employerName: placement.name, startDate: placement.startDate, endDate: placement.endDate };
41
+ const rows = placement.kcsie === "notRequested" ?
42
+ [{ ...base, status: "notRequested" }] :
43
+ Object.entries(placement.kcsiePeople || {}).map(([personId, person]) => ({ ...base, status: person.status, personId, person }));
44
+ return status ? rows.filter((r) => r.status === status) : rows;
45
+ };
46
+ exports.kcsieRowsForPlacement = kcsieRowsForPlacement;
47
+ // Applies the outcome to every placement at the school with this employer naming the person, and saves it on the employer for future placements.
48
+ const reviewKcsiePerson = async ({ oId, providerContactId, personId, dob, previousSurnames, status, note, reviewedBy, reviewedByName }) => {
49
+ const now = new Date();
50
+ const outcome = { status, academicYear: (0, benchmarkEvidenceRules_1.academicYearForDate)(now), reviewed: now.toISOString(), reviewedBy, reviewedByName, ...(note?.trim() ? { note: note.trim() } : {}) };
51
+ await firebaseQuery.update(["providerContacts", providerContactId], { [`savedBy.${oId}.kcsie.${personId}`]: { ...outcome, ...(previousSurnames?.length ? { previousSurnames } : {}) } });
52
+ const placements = await firebaseQuery.getDocsWhere(["placements"], [
53
+ (0, firestore_1.where)("oId", "==", oId),
54
+ (0, firestore_1.where)("providerContactId", "==", providerContactId),
55
+ (0, firestore_1.where)(`kcsiePeople.${personId}.dob`, "==", dob),
56
+ ]);
57
+ await Promise.all(Object.entries(placements).map(([id, placement]) => {
58
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
59
+ const { note: _, ...person } = placement.kcsiePeople?.[personId];
60
+ const updated = { ...person, ...outcome };
61
+ return firebaseQuery.update(["placements", id], { [`kcsiePeople.${personId}`]: updated, ...(0, exports.placementKcsieFields)({ ...placement.kcsiePeople, [personId]: updated }) });
62
+ }));
63
+ };
64
+ exports.reviewKcsiePerson = reviewKcsiePerson;
65
+ // Placement counts, since a placement can have people at more than one status.
66
+ const getKcsieCohortCounts = async (oId, cohortId) => {
67
+ const statuses = ["pending", "flagged", "rejected", "approved", "notRequested"];
68
+ const counts = await Promise.all(statuses.map((s) => firebaseQuery.getCount(["placements"], [(0, firestore_1.where)("oId", "==", oId), (0, firestore_1.where)("cohort", "==", cohortId), (0, firestore_1.where)("kcsieStatuses", "array-contains", s)])));
69
+ return Object.fromEntries(statuses.map((s, i) => [s, counts[i]]));
70
+ };
71
+ exports.getKcsieCohortCounts = getKcsieCohortCounts;
72
+ //# sourceMappingURL=kcsie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kcsie.js","sourceRoot":"","sources":["../src/kcsie.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ jest.mock("firebase/firestore", () => ({ where: jest.fn() }));
4
+ jest.mock("./firebase/firebaseQuery", () => jest.fn());
5
+ const kcsie_1 = require("./kcsie");
6
+ const person = (status, surname = "Smith", academicYear = "2026-27") => ({
7
+ forename: "Jane", surname, dob: "1980-02-03", status, academicYear, submitted: "2026-09-01T00:00:00.000Z",
8
+ });
9
+ describe("kcsiePersonId", () => {
10
+ it("matches the same surname and DOB however it is typed", () => {
11
+ expect((0, kcsie_1.kcsiePersonId)({ surname: " O'Brien ", dob: "1980-02-03" })).toBe((0, kcsie_1.kcsiePersonId)({ surname: "OBRIEN", dob: "1980-02-03" }));
12
+ expect((0, kcsie_1.kcsiePersonId)({ surname: "Smith", dob: "1980-02-03" })).not.toBe((0, kcsie_1.kcsiePersonId)({ surname: "Smith", dob: "1981-02-03" }));
13
+ });
14
+ });
15
+ describe("currentKcsieStatus", () => {
16
+ const date = new Date("2026-10-08T12:00:00Z");
17
+ it("keeps this year's outcome and resets last year's to pending", () => {
18
+ expect((0, kcsie_1.currentKcsieStatus)({ status: "approved", academicYear: "2026-27" }, date)).toBe("approved");
19
+ expect((0, kcsie_1.currentKcsieStatus)({ status: "rejected", academicYear: "2025-26" }, date)).toBe("pending");
20
+ });
21
+ });
22
+ describe("kcsieOutstanding", () => {
23
+ it("only holds placements with someone pending, flagged or rejected", () => {
24
+ expect(["pending", "flagged", "rejected"].every((s) => (0, kcsie_1.kcsieOutstanding)(s))).toBe(true);
25
+ expect(["approved", "notRequired", "notRequested", undefined].some((s) => (0, kcsie_1.kcsieOutstanding)(s))).toBe(false);
26
+ });
27
+ });
28
+ describe("workflowRequiresKcsie", () => {
29
+ it("only counts employer stages", () => {
30
+ expect((0, kcsie_1.workflowRequiresKcsie)([{ id: 3, name: "Employer", userType: "Provider", kcsie: true }])).toBe(true);
31
+ expect((0, kcsie_1.workflowRequiresKcsie)([{ id: 2, name: "Staff", userType: "Staff", kcsie: true }])).toBe(false);
32
+ });
33
+ });
34
+ describe("placementKcsieFields", () => {
35
+ it("is not required when nobody was named", () => {
36
+ expect((0, kcsie_1.placementKcsieFields)({})).toEqual({ kcsie: "notRequired", kcsieStatuses: [] });
37
+ });
38
+ it("takes the worst outcome and lists each status once", () => {
39
+ expect((0, kcsie_1.placementKcsieFields)({ a: person("approved"), b: person("flagged"), c: person("approved") }))
40
+ .toEqual({ kcsie: "flagged", kcsieStatuses: ["approved", "flagged"] });
41
+ });
42
+ });
43
+ describe("kcsieRowsForPlacement", () => {
44
+ const placement = (extra) => ({ name: "Northgate", studentForename: "Priya", studentSurname: "Shah", ...extra });
45
+ const people = { smith: person("approved"), lee: person("flagged", "Lee") };
46
+ it("gives one row per person, and filters by status", () => {
47
+ expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "flagged", kcsiePeople: people })).map((r) => [r.personId, r.status])).toEqual([["smith", "approved"], ["lee", "flagged"]]);
48
+ expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "flagged", kcsiePeople: people }), "flagged").map((r) => r.personId)).toEqual(["lee"]);
49
+ });
50
+ it("gives one row for a placement still waiting on the employer", () => {
51
+ expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "notRequested" })).map((r) => r.status)).toEqual(["notRequested"]);
52
+ });
53
+ });
54
+ //# sourceMappingURL=kcsie.test.js.map