placementt-core 1.400.1186 → 1.400.1188
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/lib/callables/outreach.d.ts +4 -4
- package/lib/callables/registry.d.ts +32 -32
- package/lib/callables/wonde.d.ts +12 -12
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/kcsie.d.ts +38 -0
- package/lib/kcsie.js +80 -0
- package/lib/kcsie.js.map +1 -0
- package/lib/kcsie.test.d.ts +1 -0
- package/lib/kcsie.test.js +70 -0
- package/lib/kcsie.test.js.map +1 -0
- package/lib/tasksAndTips.d.ts +1 -1
- package/lib/tasksAndTips.js +49 -0
- package/lib/tasksAndTips.js.map +1 -1
- package/lib/typeDefinitions.d.ts +30 -0
- package/lib/typeDefinitions.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/kcsie.test.ts +83 -0
- package/src/kcsie.ts +88 -0
- package/src/tasksAndTips.ts +52 -1
- package/src/typeDefinitions.ts +26 -0
|
@@ -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;
|
|
@@ -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
|
};
|
package/lib/callables/wonde.d.ts
CHANGED
|
@@ -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,38 @@
|
|
|
1
|
+
import { PlacementQuestions, 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 kcsieCheckedOverAYearAgo: (person: Pick<KcsiePerson, "status" | "reviewed">, now?: Date) => boolean;
|
|
8
|
+
export declare const kcsiePeopleDetails: (people?: StudentPlacementData["kcsiePeople"]) => NonNullable<PlacementQuestions["kcsie"]>["people"];
|
|
9
|
+
export declare const matchingKcsiePeople: (previous: NonNullable<PlacementQuestions["kcsie"]>["people"], surname: string) => NonNullable<PlacementQuestions["kcsie"]>["people"];
|
|
10
|
+
export declare const kcsieOutstanding: (status?: StudentPlacementData["kcsie"]) => boolean;
|
|
11
|
+
export declare const workflowRequiresKcsie: (workflow?: WorkflowStage[]) => boolean;
|
|
12
|
+
export declare const placementKcsieFields: (people: NonNullable<StudentPlacementData["kcsiePeople"]>) => Pick<StudentPlacementData, "kcsie" | "kcsieStatuses">;
|
|
13
|
+
export declare const kcsieRowsForPlacement: (placementId: string, placement: StudentPlacementData, status?: StudentPlacementData["kcsie"]) => ({
|
|
14
|
+
placementId: string;
|
|
15
|
+
providerContactId: string | undefined;
|
|
16
|
+
studentForename: string | undefined;
|
|
17
|
+
studentSurname: string | undefined;
|
|
18
|
+
employerName: string;
|
|
19
|
+
startDate: string;
|
|
20
|
+
endDate: string;
|
|
21
|
+
} & {
|
|
22
|
+
status: StudentPlacementData["kcsie"];
|
|
23
|
+
personId?: string;
|
|
24
|
+
person?: KcsiePerson;
|
|
25
|
+
})[];
|
|
26
|
+
export declare const reviewKcsiePerson: ({ oId, providerContactId, personId, dob, previousSurnames, status, note, reviewedBy, reviewedByName }: {
|
|
27
|
+
oId: string;
|
|
28
|
+
providerContactId: string;
|
|
29
|
+
personId: string;
|
|
30
|
+
dob: string;
|
|
31
|
+
previousSurnames?: string[];
|
|
32
|
+
status: KcsiePerson["status"];
|
|
33
|
+
note?: string;
|
|
34
|
+
reviewedBy: string;
|
|
35
|
+
reviewedByName: string;
|
|
36
|
+
}) => Promise<void>;
|
|
37
|
+
export declare const getKcsieCohortCounts: (oId: string, cohortId: string) => Promise<Record<string, number>>;
|
|
38
|
+
export {};
|
package/lib/kcsie.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
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.matchingKcsiePeople = exports.kcsiePeopleDetails = exports.kcsieCheckedOverAYearAgo = 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 firebaseQuery_1 = __importDefault(require("./firebase/firebaseQuery"));
|
|
9
|
+
const firebaseQuery = new firebaseQuery_1.default();
|
|
10
|
+
exports.KCSIE_BARRED_LIST_URL = "https://check-the-childrens-barred-list.education.gov.uk/";
|
|
11
|
+
exports.KCSIE_STATUS_LABELS = {
|
|
12
|
+
pending: "Awaiting check",
|
|
13
|
+
approved: "Approved",
|
|
14
|
+
flagged: "Flagged",
|
|
15
|
+
rejected: "Rejected",
|
|
16
|
+
notRequired: "Not required",
|
|
17
|
+
notRequested: "Not yet requested",
|
|
18
|
+
};
|
|
19
|
+
exports.KCSIE_NOT_REQUESTED = { kcsie: "notRequested", kcsieStatuses: ["notRequested"] };
|
|
20
|
+
// Surname and DOB are what the DfE search uses, so they identify a person across placements.
|
|
21
|
+
const kcsiePersonId = ({ surname, dob }) => `${surname.trim().toLowerCase().replace(/[^a-z]/g, "")}_${dob}`;
|
|
22
|
+
exports.kcsiePersonId = kcsiePersonId;
|
|
23
|
+
// Outcomes carry over indefinitely; the school is just told when one is over a year old.
|
|
24
|
+
const kcsieCheckedOverAYearAgo = (person, now = new Date()) => person.status !== "pending" && Boolean(person.reviewed) && now.getTime() - new Date(person.reviewed).getTime() > 365 * 24 * 60 * 60 * 1000;
|
|
25
|
+
exports.kcsieCheckedOverAYearAgo = kcsieCheckedOverAYearAgo;
|
|
26
|
+
// Just the details the employer enters, e.g. to import people from another placement.
|
|
27
|
+
const kcsiePeopleDetails = (people) => Object.values(people || {}).map(({ forename, surname, dob, previousSurnames }) => ({ forename, surname, dob, ...(previousSurnames?.length ? { previousSurnames } : {}) }));
|
|
28
|
+
exports.kcsiePeopleDetails = kcsiePeopleDetails;
|
|
29
|
+
// Previous individuals whose surname starts with what's been typed, for the employer to pick from.
|
|
30
|
+
const matchingKcsiePeople = (previous, surname) => {
|
|
31
|
+
const typed = surname.trim().toLowerCase();
|
|
32
|
+
return typed.length < 2 ? [] : previous.filter((p) => p.surname.toLowerCase().startsWith(typed));
|
|
33
|
+
};
|
|
34
|
+
exports.matchingKcsiePeople = matchingKcsiePeople;
|
|
35
|
+
const kcsieOutstanding = (status) => status === "pending" || status === "flagged" || status === "rejected";
|
|
36
|
+
exports.kcsieOutstanding = kcsieOutstanding;
|
|
37
|
+
const workflowRequiresKcsie = (workflow) => Boolean(workflow?.some((s) => s.kcsie && s.userType === "Provider"));
|
|
38
|
+
exports.workflowRequiresKcsie = workflowRequiresKcsie;
|
|
39
|
+
// The worst person's status wins, so one rejection holds the placement.
|
|
40
|
+
const placementKcsieFields = (people) => {
|
|
41
|
+
const statuses = Object.values(people).map((p) => p.status);
|
|
42
|
+
const kcsie = statuses.length ? ["rejected", "flagged", "pending", "approved"].find((s) => statuses.includes(s)) : "notRequired";
|
|
43
|
+
return { kcsie, kcsieStatuses: [...new Set(statuses)] };
|
|
44
|
+
};
|
|
45
|
+
exports.placementKcsieFields = placementKcsieFields;
|
|
46
|
+
// One row per person, so a placement naming two people appears twice.
|
|
47
|
+
const kcsieRowsForPlacement = (placementId, placement, status) => {
|
|
48
|
+
const base = { placementId, providerContactId: placement.providerContactId, studentForename: placement.studentForename, studentSurname: placement.studentSurname, employerName: placement.name, startDate: placement.startDate, endDate: placement.endDate };
|
|
49
|
+
const rows = placement.kcsie === "notRequested" ?
|
|
50
|
+
[{ ...base, status: "notRequested" }] :
|
|
51
|
+
Object.entries(placement.kcsiePeople || {}).map(([personId, person]) => ({ ...base, status: person.status, personId, person }));
|
|
52
|
+
return status ? rows.filter((r) => r.status === status) : rows;
|
|
53
|
+
};
|
|
54
|
+
exports.kcsieRowsForPlacement = kcsieRowsForPlacement;
|
|
55
|
+
// Applies the outcome to every placement at the school with this employer naming the person, and saves it on the employer for future placements.
|
|
56
|
+
const reviewKcsiePerson = async ({ oId, providerContactId, personId, dob, previousSurnames, status, note, reviewedBy, reviewedByName }) => {
|
|
57
|
+
const now = new Date();
|
|
58
|
+
const outcome = { status, reviewed: now.toISOString(), reviewedBy, reviewedByName, ...(note?.trim() ? { note: note.trim() } : {}) };
|
|
59
|
+
await firebaseQuery.update(["providerContacts", providerContactId], { [`savedBy.${oId}.kcsie.${personId}`]: { ...outcome, ...(previousSurnames?.length ? { previousSurnames } : {}) } });
|
|
60
|
+
const placements = await firebaseQuery.getDocsWhere(["placements"], [
|
|
61
|
+
(0, firestore_1.where)("oId", "==", oId),
|
|
62
|
+
(0, firestore_1.where)("providerContactId", "==", providerContactId),
|
|
63
|
+
(0, firestore_1.where)(`kcsiePeople.${personId}.dob`, "==", dob),
|
|
64
|
+
]);
|
|
65
|
+
await Promise.all(Object.entries(placements).map(([id, placement]) => {
|
|
66
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
67
|
+
const { note: _, ...person } = placement.kcsiePeople?.[personId];
|
|
68
|
+
const updated = { ...person, ...outcome };
|
|
69
|
+
return firebaseQuery.update(["placements", id], { [`kcsiePeople.${personId}`]: updated, ...(0, exports.placementKcsieFields)({ ...placement.kcsiePeople, [personId]: updated }) });
|
|
70
|
+
}));
|
|
71
|
+
};
|
|
72
|
+
exports.reviewKcsiePerson = reviewKcsiePerson;
|
|
73
|
+
// Placement counts, since a placement can have people at more than one status.
|
|
74
|
+
const getKcsieCohortCounts = async (oId, cohortId) => {
|
|
75
|
+
const statuses = ["pending", "flagged", "rejected", "approved", "notRequested"];
|
|
76
|
+
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)])));
|
|
77
|
+
return Object.fromEntries(statuses.map((s, i) => [s, counts[i]]));
|
|
78
|
+
};
|
|
79
|
+
exports.getKcsieCohortCounts = getKcsieCohortCounts;
|
|
80
|
+
//# sourceMappingURL=kcsie.js.map
|
package/lib/kcsie.js.map
ADDED
|
@@ -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,70 @@
|
|
|
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", extra = {}) => ({
|
|
7
|
+
forename: "Jane", surname, dob: "1980-02-03", status, submitted: "2026-09-01T00:00:00.000Z", ...extra,
|
|
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("kcsieCheckedOverAYearAgo", () => {
|
|
16
|
+
const now = new Date("2026-10-08T12:00:00Z");
|
|
17
|
+
it("flags outcomes over a year old without resetting them", () => {
|
|
18
|
+
expect((0, kcsie_1.kcsieCheckedOverAYearAgo)(person("approved", "Smith", { reviewed: "2025-09-01T00:00:00Z" }), now)).toBe(true);
|
|
19
|
+
expect((0, kcsie_1.kcsieCheckedOverAYearAgo)(person("approved", "Smith", { reviewed: "2026-01-01T00:00:00Z" }), now)).toBe(false);
|
|
20
|
+
expect((0, kcsie_1.kcsieCheckedOverAYearAgo)(person("pending", "Smith", { reviewed: "2025-09-01T00:00:00Z" }), now)).toBe(false);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("kcsiePeopleDetails", () => {
|
|
24
|
+
it("imports names and DOBs from another placement, not its outcomes", () => {
|
|
25
|
+
expect((0, kcsie_1.kcsiePeopleDetails)({ smith: person("approved", "Smith", { previousSurnames: ["Jones"], reviewedBy: "uid1" }) }))
|
|
26
|
+
.toEqual([{ forename: "Jane", surname: "Smith", dob: "1980-02-03", previousSurnames: ["Jones"] }]);
|
|
27
|
+
expect((0, kcsie_1.kcsiePeopleDetails)(undefined)).toEqual([]);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("matchingKcsiePeople", () => {
|
|
31
|
+
const previous = [{ forename: "Jane", surname: "Smith", dob: "1980-02-03" }, { forename: "Bob", surname: "Smythe", dob: "1975-05-05" }, { forename: "Al", surname: "Lee", dob: "1990-01-01" }];
|
|
32
|
+
it("suggests previous individuals by surname once two letters are typed", () => {
|
|
33
|
+
expect((0, kcsie_1.matchingKcsiePeople)(previous, "S")).toEqual([]);
|
|
34
|
+
expect((0, kcsie_1.matchingKcsiePeople)(previous, "sm").map((p) => p.forename)).toEqual(["Jane", "Bob"]);
|
|
35
|
+
expect((0, kcsie_1.matchingKcsiePeople)(previous, "Smi").map((p) => p.forename)).toEqual(["Jane"]);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("kcsieOutstanding", () => {
|
|
39
|
+
it("only holds placements with someone pending, flagged or rejected", () => {
|
|
40
|
+
expect(["pending", "flagged", "rejected"].every((s) => (0, kcsie_1.kcsieOutstanding)(s))).toBe(true);
|
|
41
|
+
expect(["approved", "notRequired", "notRequested", undefined].some((s) => (0, kcsie_1.kcsieOutstanding)(s))).toBe(false);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
describe("workflowRequiresKcsie", () => {
|
|
45
|
+
it("only counts employer stages", () => {
|
|
46
|
+
expect((0, kcsie_1.workflowRequiresKcsie)([{ id: 3, name: "Employer", userType: "Provider", kcsie: true }])).toBe(true);
|
|
47
|
+
expect((0, kcsie_1.workflowRequiresKcsie)([{ id: 2, name: "Staff", userType: "Staff", kcsie: true }])).toBe(false);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("placementKcsieFields", () => {
|
|
51
|
+
it("is not required when nobody was named", () => {
|
|
52
|
+
expect((0, kcsie_1.placementKcsieFields)({})).toEqual({ kcsie: "notRequired", kcsieStatuses: [] });
|
|
53
|
+
});
|
|
54
|
+
it("takes the worst outcome and lists each status once", () => {
|
|
55
|
+
expect((0, kcsie_1.placementKcsieFields)({ a: person("approved"), b: person("flagged"), c: person("approved") }))
|
|
56
|
+
.toEqual({ kcsie: "flagged", kcsieStatuses: ["approved", "flagged"] });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("kcsieRowsForPlacement", () => {
|
|
60
|
+
const placement = (extra) => ({ name: "Northgate", studentForename: "Priya", studentSurname: "Shah", ...extra });
|
|
61
|
+
const people = { smith: person("approved"), lee: person("flagged", "Lee") };
|
|
62
|
+
it("gives one row per person, and filters by status", () => {
|
|
63
|
+
expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "flagged", kcsiePeople: people })).map((r) => [r.personId, r.status])).toEqual([["smith", "approved"], ["lee", "flagged"]]);
|
|
64
|
+
expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "flagged", kcsiePeople: people }), "flagged").map((r) => r.personId)).toEqual(["lee"]);
|
|
65
|
+
});
|
|
66
|
+
it("gives one row for a placement still waiting on the employer", () => {
|
|
67
|
+
expect((0, kcsie_1.kcsieRowsForPlacement)("p1", placement({ kcsie: "notRequested" })).map((r) => r.status)).toEqual(["notRequested"]);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=kcsie.test.js.map
|