@royalschedule/validators 2.10.49 → 2.10.51

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.
@@ -15,19 +15,50 @@ exports.default = joi_1.default.object({
15
15
  .valid('parallel', 'sequential', 'custom'),
16
16
  anchor: joi_1.default.when('type', {
17
17
  is: 'parallel',
18
- then: joi_1.default.string().valid('start', 'middle', 'end').required(),
19
- otherwise: joi_1.default.forbidden()
18
+ then: joi_1.default.string().valid('start', 'middle', 'end').required()
20
19
  }),
21
20
  gap: joi_1.default.when('type', {
22
21
  is: 'sequential',
23
22
  then: joi_1.default.object({
24
23
  min: joi_1.default.number().required(),
25
24
  max: joi_1.default.number().required()
26
- }).required(),
27
- otherwise: joi_1.default.forbidden()
25
+ }).required()
26
+ }),
27
+ configurations: joi_1.default.when('type', {
28
+ is: 'custom',
29
+ then: joi_1.default.array()
30
+ .items(joi_1.default.array()
31
+ .items(joi_1.default.object({
32
+ eventId: joi_1.default.string().required(),
33
+ offset: joi_1.default.number().required(),
34
+ anchor: joi_1.default.string().valid('start', 'middle', 'end').required()
35
+ }))).required(),
36
+ otherwise: joi_1.default.array()
37
+ .items(joi_1.default.array()
38
+ .items(joi_1.default.object({
39
+ eventId: joi_1.default.string().required(),
40
+ offset: joi_1.default.number().required(),
41
+ anchor: joi_1.default.string().valid('start', 'middle', 'end').required()
42
+ })))
28
43
  }),
29
44
  createdAt: date_1.default.isDate(),
30
45
  updatedAt: date_1.default.isDate().allow(null),
31
46
  ORIGIN: joi_1.default.string().allow(null)
47
+ }).custom((value, helpers) => {
48
+ const { events, configurations } = value;
49
+ if (value.type !== 'custom' || !configurations || !events || events.length === 0)
50
+ return value;
51
+ const eventIds = events.map((e) => (typeof e === 'string' ? e : e.id));
52
+ for (let i = 0; i < configurations.length; i++) {
53
+ const config = configurations[i];
54
+ const configIds = config.map((item) => item.eventId);
55
+ const hasDuplicates = new Set(configIds).size !== configIds.length;
56
+ const missing = eventIds.filter((id) => !configIds.includes(id));
57
+ const extra = configIds.filter((id) => !eventIds.includes(id));
58
+ if (hasDuplicates || missing.length > 0 || extra.length > 0) {
59
+ return helpers.error('any.invalid');
60
+ }
61
+ }
62
+ return value;
32
63
  });
33
64
  //# sourceMappingURL=linked-event-sets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linked-event-sets.js","sourceRoot":"","sources":["../../src/validators/linked-event-sets.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsD;AACtD,mCAAyD;AAGzD,yCAAiE;AACjE,0DAAiE;AAGjE,kBAAe,aAAG,CAAC,MAAM,CAAM;IAC7B,EAAE,EAAW,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC;IAElD,MAAM,EAAO,aAAG,CAAC,KAAK,EAAE;SACP,KAAK,CACJ,aAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CACpB,aAAG,CAAC,MAAM,EAAE,EACZ,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACrE,CACF;IAEjB,IAAI,EAAS,aAAG,CAAC,MAAM,EAAE;SACR,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAC;IAG1D,MAAM,EAAO,aAAG,CAAC,IAAI,CAAC,MAAM,EAAE;QACd,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE;QAC7D,SAAS,EAAE,aAAG,CAAC,SAAS,EAAE;KAC3B,CAAC;IAGhB,GAAG,EAAU,aAAG,CAAC,IAAI,CAAC,MAAM,EAAE;QACd,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,aAAG,CAAC,MAAM,CAAC;YACf,GAAG,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,GAAG,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC7B,CAAC,CAAC,QAAQ,EAAE;QACb,SAAS,EAAE,aAAG,CAAC,SAAS,EAAE;KAC3B,CAAC;IAEhB,SAAS,EAAI,cAAQ,CAAC,MAAM,EAAE;IAC9B,SAAS,EAAI,cAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1C,MAAM,EAAO,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;CACtC,CAAC,CAAC"}
1
+ {"version":3,"file":"linked-event-sets.js","sourceRoot":"","sources":["../../src/validators/linked-event-sets.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@royalschedule/validators",
3
- "version": "2.10.49",
3
+ "version": "2.10.51",
4
4
  "description": "validators",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -1,3 +0,0 @@
1
- import Joi from 'joi';
2
- declare const _default: Joi.ObjectSchema<Omit<import("@royalschedule/maps/dist/core/v2/types/calendar-exceptions").CalendarException, "belongsTo">>;
3
- export default _default;
@@ -1,41 +0,0 @@
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
- const joi_1 = __importDefault(require("joi"));
7
- const util_1 = require("../common/util");
8
- const date_1 = __importDefault(require("../common/date"));
9
- const collections = ['courses', 'courseevents'];
10
- exports.default = joi_1.default.object({
11
- id: joi_1.default.string(),
12
- description: joi_1.default.string().allow(null, ''),
13
- reason: joi_1.default.string().allow(null, ''),
14
- action: joi_1.default.string().valid('cancel', 'remove', 'reschedule', 'add', 'substitute'),
15
- start: date_1.default.isDate(),
16
- end: date_1.default.isDate().allow(null).greater(joi_1.default.ref('start')),
17
- sources: joi_1.default.array()
18
- .items(joi_1.default.object({
19
- to: [
20
- joi_1.default.string(),
21
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./course-events'))),
22
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./courses'))),
23
- ],
24
- toModel: joi_1.default.string().valid(...collections)
25
- })),
26
- exception: joi_1.default.object({
27
- to: [
28
- joi_1.default.string(),
29
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./groups'))),
30
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./courses'))),
31
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./teachers'))),
32
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./locations'))),
33
- joi_1.default.custom(util_1.Util.functions.schemaWrapper(require('./persons'))),
34
- ],
35
- toModel: joi_1.default.string().valid('groups', 'courses', 'teachers', 'locations', 'persons'),
36
- include: joi_1.default.boolean(),
37
- start: date_1.default.isDate(),
38
- end: date_1.default.isDate().greater(joi_1.default.ref('start')),
39
- }),
40
- });
41
- //# sourceMappingURL=calendar-exceptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar-exceptions.js","sourceRoot":"","sources":["../../src/validators/calendar-exceptions.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsD;AAGtD,yCAAiE;AACjE,0DAAiE;AAIjE,MAAM,WAAW,GAAa,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAE1D,kBAAe,aAAG,CAAC,MAAM,CAAoD;IAC3E,EAAE,EAAW,aAAG,CAAC,MAAM,EAAE;IAEzB,WAAW,EAAO,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC9C,MAAM,EAAY,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC9C,MAAM,EAAY,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC;IAE3F,KAAK,EAAa,cAAQ,CAAC,MAAM,EAAE;IACnC,GAAG,EAAe,cAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzE,OAAO,EAAW,aAAG,CAAC,KAAK,EAAE;SACV,KAAK,CACJ,aAAG,CAAC,MAAM,CAAC;QACT,EAAE,EAAE;YACF,aAAG,CAAC,MAAM,EAAE;YACZ,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACpE,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;SAC/D;QACA,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;KAC5C,CAAC,CACH;IACpB,SAAS,EAAS,aAAG,CAAC,MAAM,CAAC;QACT,EAAE,EAAE;YACF,aAAG,CAAC,MAAM,EAAE;YACZ,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;YAC/D,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;YAChE,aAAG,CAAC,MAAM,CAAC,WAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;SAC/D;QACD,OAAO,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC;QACpF,OAAO,EAAE,aAAG,CAAC,OAAO,EAAE;QACtB,KAAK,EAAI,cAAQ,CAAC,MAAM,EAAE;QAC1B,GAAG,EAAM,cAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;KACrD,CAAC;CACrB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import Joi from 'joi';
2
- declare const _default: Joi.ObjectSchema<Omit<import("@royalschedule/maps/dist/core/v2/types/syllabus").Syllabus, "belongsTo">>;
3
- export default _default;
@@ -1,19 +0,0 @@
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
- const joi_1 = __importDefault(require("joi"));
7
- exports.default = joi_1.default.object({
8
- id: joi_1.default.string(),
9
- schoolType: joi_1.default.string(),
10
- subjectCode: joi_1.default.string().allow(null, ''),
11
- subjectName: joi_1.default.string().allow(null, ''),
12
- subjectDesignation: joi_1.default.string().allow(null, ''),
13
- courseCode: joi_1.default.string().allow(null, ''),
14
- courseName: joi_1.default.string().allow(null, ''),
15
- point: joi_1.default.number().min(0).allow(null),
16
- official: joi_1.default.boolean(),
17
- ids: joi_1.default.string(),
18
- });
19
- //# sourceMappingURL=syllabus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"syllabus.js","sourceRoot":"","sources":["../../src/validators/syllabus.ts"],"names":[],"mappings":";;;;;AAAA,8CAAsD;AAQtD,kBAAe,aAAG,CAAC,MAAM,CAA2C;IAClE,EAAE,EAA0B,aAAG,CAAC,MAAM,EAAE;IACxC,UAAU,EAAkB,aAAG,CAAC,MAAM,EAAE;IACxC,WAAW,EAAiB,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,WAAW,EAAiB,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,kBAAkB,EAAU,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,UAAU,EAAkB,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,UAAU,EAAkB,aAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IACxD,KAAK,EAAuB,aAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3D,QAAQ,EAAoB,aAAG,CAAC,OAAO,EAAE;IACzC,GAAG,EAAyB,aAAG,CAAC,MAAM,EAAE;CACzC,CAAC,CAAC"}