placementt-core 1.400.1066 → 1.400.1067

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.
@@ -96,6 +96,28 @@ export declare const slotMMDDForYear: (slot: SurveySlot, academicStartYear: numb
96
96
  * survey on the timeline and send it by hand.
97
97
  */
98
98
  export declare const resolveSlotsForYear: (slots: SurveySlot[] | undefined, academicStartYear: number) => ResolvedSurveySlot[];
99
+ /**
100
+ * Whether a shared schedule's slot is one this year group actually gets.
101
+ *
102
+ * A slot with no year groups named is the normal case: the schedule describes the
103
+ * programme, and the programme runs for every year group on it. Naming year groups
104
+ * narrows one slot to some of them, which is how "everybody has the October
105
+ * conversation, only Year 11 has the February one" is said without giving Year 11 a
106
+ * schedule of its own.
107
+ *
108
+ * @param {SurveySlot} slot the scheduled send.
109
+ * @param {string} yearGroup the year group the schedule is being laid out for.
110
+ * @return {boolean} true when this year group gets it.
111
+ */
112
+ export declare const slotAppliesToYearGroup: (slot: Pick<SurveySlot, "yearGroups">, yearGroup: string) => boolean;
113
+ /**
114
+ * A shared schedule as one year group runs it.
115
+ *
116
+ * @param {SurveySlot[]} [slots] the shared schedule.
117
+ * @param {string} yearGroup the year group.
118
+ * @return {SurveySlot[]} the slots that year group gets, in the order given.
119
+ */
120
+ export declare const slotsForYearGroup: <T extends Pick<SurveySlot, "yearGroups">>(slots: T[] | undefined, yearGroup: string) => T[];
99
121
  /**
100
122
  * Is this slot's send day the given date? Compares MM-DD, resolving any rule against
101
123
  * the academic year `date` sits in, which is how the daily crons decide what to fire.
@@ -30,7 +30,7 @@
30
30
  * callers move onto the engine, so new writes agree with migrated ones.
31
31
  */
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.programmeAcademicYear = exports.programmeStartYear = exports.programmeSendDatesForYear = exports.resolveLeaverLegsForYearGroup = exports.isSlotDueOn = exports.resolveSlotsForYear = exports.slotMMDDForYear = exports.mmddToISO = exports.surveyRuleToMMDD = exports.surveyRuleToDate = exports.resolveNthWeekday = exports.normaliseAcademicYear = exports.academicYearSlashLabel = exports.academicYearOf = exports.academicYearLabel = exports.currentAcademicStartYear = exports.academicCalendarYear = exports.toMMDD = void 0;
33
+ exports.programmeAcademicYear = exports.programmeStartYear = exports.programmeSendDatesForYear = exports.resolveLeaverLegsForYearGroup = exports.isSlotDueOn = exports.slotsForYearGroup = exports.slotAppliesToYearGroup = exports.resolveSlotsForYear = exports.slotMMDDForYear = exports.mmddToISO = exports.surveyRuleToMMDD = exports.surveyRuleToDate = exports.resolveNthWeekday = exports.normaliseAcademicYear = exports.academicYearSlashLabel = exports.academicYearOf = exports.academicYearLabel = exports.currentAcademicStartYear = exports.academicCalendarYear = exports.toMMDD = void 0;
34
34
  const pad2 = (n) => String(n).padStart(2, "0");
35
35
  /** "MM-DD" for a date, in local time — the format survey slots are stored in. */
36
36
  const toMMDD = (date = new Date()) => `${pad2(date.getMonth() + 1)}-${pad2(date.getDate())}`;
@@ -140,6 +140,30 @@ const resolveSlotsForYear = (slots, academicStartYear) => (slots || [])
140
140
  .filter((slot) => Boolean(slot.sendISO))
141
141
  .sort((a, b) => a.sendISO.localeCompare(b.sendISO));
142
142
  exports.resolveSlotsForYear = resolveSlotsForYear;
143
+ /**
144
+ * Whether a shared schedule's slot is one this year group actually gets.
145
+ *
146
+ * A slot with no year groups named is the normal case: the schedule describes the
147
+ * programme, and the programme runs for every year group on it. Naming year groups
148
+ * narrows one slot to some of them, which is how "everybody has the October
149
+ * conversation, only Year 11 has the February one" is said without giving Year 11 a
150
+ * schedule of its own.
151
+ *
152
+ * @param {SurveySlot} slot the scheduled send.
153
+ * @param {string} yearGroup the year group the schedule is being laid out for.
154
+ * @return {boolean} true when this year group gets it.
155
+ */
156
+ const slotAppliesToYearGroup = (slot, yearGroup) => !slot.yearGroups?.length || slot.yearGroups.map(String).includes(String(yearGroup));
157
+ exports.slotAppliesToYearGroup = slotAppliesToYearGroup;
158
+ /**
159
+ * A shared schedule as one year group runs it.
160
+ *
161
+ * @param {SurveySlot[]} [slots] the shared schedule.
162
+ * @param {string} yearGroup the year group.
163
+ * @return {SurveySlot[]} the slots that year group gets, in the order given.
164
+ */
165
+ const slotsForYearGroup = (slots, yearGroup) => (slots ?? []).filter((slot) => (0, exports.slotAppliesToYearGroup)(slot, yearGroup));
166
+ exports.slotsForYearGroup = slotsForYearGroup;
143
167
  /**
144
168
  * Is this slot's send day the given date? Compares MM-DD, resolving any rule against
145
169
  * the academic year `date` sits in, which is how the daily crons decide what to fire.
@@ -209,7 +233,10 @@ const programmeSendDatesForYear = (institute, scope, academicStartYear) => {
209
233
  if (!cfg?.enabled || !cfg.yearGroups?.length)
210
234
  return [];
211
235
  for (const yearGroup of cfg.yearGroups) {
212
- const slots = cfg.surveysByYearGroup?.[String(yearGroup)] ?? cfg.surveys ?? [];
236
+ // A year group's own schedule is already about one year group; the shared
237
+ // one is narrowed to the slots this year group is actually on.
238
+ const slots = cfg.surveysByYearGroup?.[String(yearGroup)] ??
239
+ (0, exports.slotsForYearGroup)(cfg.surveys, String(yearGroup));
213
240
  dates.push(...(0, exports.resolveSlotsForYear)(slots, academicStartYear).map((s) => s.sendISO));
214
241
  }
215
242
  }
@@ -237,7 +264,8 @@ const programmeSendDatesForYear = (institute, scope, academicStartYear) => {
237
264
  if (!cfg?.enabled || !cfg.yearGroups?.length)
238
265
  return [];
239
266
  for (const yearGroup of cfg.yearGroups) {
240
- const slots = cfg.slotsByYearGroup?.[String(yearGroup)] ?? cfg.slots ?? [];
267
+ const slots = cfg.slotsByYearGroup?.[String(yearGroup)] ??
268
+ (0, exports.slotsForYearGroup)(cfg.slots, String(yearGroup));
241
269
  dates.push(...(0, exports.resolveSlotsForYear)(slots, academicStartYear).map((s) => s.sendISO));
242
270
  }
243
271
  // A named group's own slots count too: a cohort whose only 1:1 this year is
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/surveys/schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/surveys/schedule.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,18 @@ export type SurveySlot = {
55
55
  /** The per-survey auto-send switch. Absent = enabled; false means the cron
56
56
  * provisions/keeps the cycle but never sends it without staff action. */
57
57
  enabled?: boolean;
58
+ /**
59
+ * Which of the programme's year groups this slot is for. Absent or empty means
60
+ * every year group the programme runs, which is what a schedule usually
61
+ * describes.
62
+ *
63
+ * Only meaningful on a SHARED schedule, where one list of slots is laid out for
64
+ * each year group in turn: it is how a school says "everybody gets the October
65
+ * one, but only Year 11 gets the February one" without giving those year groups
66
+ * a whole schedule of their own. A year group's own schedule is already about
67
+ * one year group, so the field is ignored there.
68
+ */
69
+ yearGroups?: string[];
58
70
  };
59
71
  export type SurveyCycleStatus = "draft" | "scheduled" | "sending" | "active" | "closed";
60
72
  export type SurveyRequestStatus = "pending" | "sent" | "completed" | "bounced";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/surveys/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAuBH,0FAA0F;AAC7E,QAAA,iBAAiB,GAAiB;IAC3C,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe;IAChG,oBAAoB,EAAE,iBAAiB;CAC1C,CAAC;AAuOF,uDAAuD;AAC1C,QAAA,mBAAmB,GAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAExG;;;;;;;;GAQG;AACI,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,KAAa,EAAU,EAAE,CAC7E,GAAG,KAAK,IAAI,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;AAD5B,QAAA,cAAc,kBACc;AAEzC;;;;;;;;;;;GAWG;AACI,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AADhF,QAAA,eAAe,mBACiE;AAE7F,wDAAwD;AAC3C,QAAA,uBAAuB,GAA2C;IAC3E,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,SAAS;IAC3B,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAC1B,kBAAkB,EAAE,SAAS;IAC7B,eAAe,EAAE,UAAU;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/surveys/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAuBH,0FAA0F;AAC7E,QAAA,iBAAiB,GAAiB;IAC3C,QAAQ,EAAE,aAAa,EAAE,kBAAkB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe;IAChG,oBAAoB,EAAE,iBAAiB;CAC1C,CAAC;AAmPF,uDAAuD;AAC1C,QAAA,mBAAmB,GAAuB,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAExG;;;;;;;;GAQG;AACI,MAAM,cAAc,GAAG,CAAC,KAAuB,EAAE,KAAa,EAAU,EAAE,CAC7E,GAAG,KAAK,IAAI,IAAA,uBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;AAD5B,QAAA,cAAc,kBACc;AAEzC;;;;;;;;;;;GAWG;AACI,MAAM,eAAe,GAAG,CAAC,GAAW,EAAU,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;AADhF,QAAA,eAAe,mBACiE;AAE7F,wDAAwD;AAC3C,QAAA,uBAAuB,GAA2C;IAC3E,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,gBAAgB,EAAE,SAAS;IAC3B,aAAa,EAAE,SAAS;IACxB,eAAe,EAAE,SAAS;IAC1B,kBAAkB,EAAE,SAAS;IAC7B,eAAe,EAAE,UAAU;CAC9B,CAAC"}
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.1066",
5
+ "version": "1.400.1067",
6
6
  "main": "lib/index.js",
7
7
  "types": "lib/index.d.ts",
8
8
  "scripts": {
@@ -161,6 +161,33 @@ export const resolveSlotsForYear = (
161
161
  .filter((slot) => Boolean(slot.sendISO))
162
162
  .sort((a, b) => a.sendISO.localeCompare(b.sendISO));
163
163
 
164
+ /**
165
+ * Whether a shared schedule's slot is one this year group actually gets.
166
+ *
167
+ * A slot with no year groups named is the normal case: the schedule describes the
168
+ * programme, and the programme runs for every year group on it. Naming year groups
169
+ * narrows one slot to some of them, which is how "everybody has the October
170
+ * conversation, only Year 11 has the February one" is said without giving Year 11 a
171
+ * schedule of its own.
172
+ *
173
+ * @param {SurveySlot} slot the scheduled send.
174
+ * @param {string} yearGroup the year group the schedule is being laid out for.
175
+ * @return {boolean} true when this year group gets it.
176
+ */
177
+ export const slotAppliesToYearGroup = (slot: Pick<SurveySlot, "yearGroups">, yearGroup: string): boolean =>
178
+ !slot.yearGroups?.length || slot.yearGroups.map(String).includes(String(yearGroup));
179
+
180
+ /**
181
+ * A shared schedule as one year group runs it.
182
+ *
183
+ * @param {SurveySlot[]} [slots] the shared schedule.
184
+ * @param {string} yearGroup the year group.
185
+ * @return {SurveySlot[]} the slots that year group gets, in the order given.
186
+ */
187
+ export const slotsForYearGroup = <T extends Pick<SurveySlot, "yearGroups">>(
188
+ slots: T[] | undefined, yearGroup: string,
189
+ ): T[] => (slots ?? []).filter((slot) => slotAppliesToYearGroup(slot, yearGroup));
190
+
164
191
  /**
165
192
  * Is this slot's send day the given date? Compares MM-DD, resolving any rule against
166
193
  * the academic year `date` sits in, which is how the daily crons decide what to fire.
@@ -268,7 +295,10 @@ export const programmeSendDatesForYear = (
268
295
  const cfg = institute.destinationsConfig?.aspirations;
269
296
  if (!cfg?.enabled || !cfg.yearGroups?.length) return [];
270
297
  for (const yearGroup of cfg.yearGroups) {
271
- const slots = cfg.surveysByYearGroup?.[String(yearGroup)] ?? cfg.surveys ?? [];
298
+ // A year group's own schedule is already about one year group; the shared
299
+ // one is narrowed to the slots this year group is actually on.
300
+ const slots = cfg.surveysByYearGroup?.[String(yearGroup)] ??
301
+ slotsForYearGroup(cfg.surveys, String(yearGroup));
272
302
  dates.push(...resolveSlotsForYear(slots, academicStartYear).map((s) => s.sendISO));
273
303
  }
274
304
  }
@@ -295,7 +325,8 @@ export const programmeSendDatesForYear = (
295
325
  const cfg = institute.guidanceConfig;
296
326
  if (!cfg?.enabled || !cfg.yearGroups?.length) return [];
297
327
  for (const yearGroup of cfg.yearGroups) {
298
- const slots = cfg.slotsByYearGroup?.[String(yearGroup)] ?? cfg.slots ?? [];
328
+ const slots = cfg.slotsByYearGroup?.[String(yearGroup)] ??
329
+ slotsForYearGroup(cfg.slots, String(yearGroup));
299
330
  dates.push(...resolveSlotsForYear(slots, academicStartYear).map((s) => s.sendISO));
300
331
  }
301
332
  // A named group's own slots count too: a cohort whose only 1:1 this year is
@@ -76,6 +76,18 @@ export type SurveySlot = {
76
76
  /** The per-survey auto-send switch. Absent = enabled; false means the cron
77
77
  * provisions/keeps the cycle but never sends it without staff action. */
78
78
  enabled?: boolean,
79
+ /**
80
+ * Which of the programme's year groups this slot is for. Absent or empty means
81
+ * every year group the programme runs, which is what a schedule usually
82
+ * describes.
83
+ *
84
+ * Only meaningful on a SHARED schedule, where one list of slots is laid out for
85
+ * each year group in turn: it is how a school says "everybody gets the October
86
+ * one, but only Year 11 gets the February one" without giving those year groups
87
+ * a whole schedule of their own. A year group's own schedule is already about
88
+ * one year group, so the field is ignored there.
89
+ */
90
+ yearGroups?: string[],
79
91
  };
80
92
 
81
93
  export type SurveyCycleStatus = "draft"|"scheduled"|"sending"|"active"|"closed";