@openinc/parse-server-opendash 4.1.8 → 4.2.1

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.
Files changed (57) hide show
  1. package/dist/features/openservice/init.js +4 -0
  2. package/dist/features/openservice/schedules/calendarSync/types/Event.d.ts +2 -0
  3. package/dist/features/openservice/serviceSchedules/acl/assignmentAcl.d.ts +30 -0
  4. package/dist/features/openservice/serviceSchedules/acl/assignmentAcl.js +85 -0
  5. package/dist/features/openservice/serviceSchedules/acl/index.d.ts +1 -0
  6. package/dist/features/openservice/serviceSchedules/acl/index.js +6 -0
  7. package/dist/features/openservice/serviceSchedules/calendarSync/functions/eventToPlan.d.ts +50 -0
  8. package/dist/features/openservice/serviceSchedules/calendarSync/functions/eventToPlan.js +115 -0
  9. package/dist/features/openservice/serviceSchedules/calendarSync/functions/outlookRecurrence.d.ts +59 -0
  10. package/dist/features/openservice/serviceSchedules/calendarSync/functions/outlookRecurrence.js +353 -0
  11. package/dist/features/openservice/serviceSchedules/calendarSync/functions/planToEvent.d.ts +27 -0
  12. package/dist/features/openservice/serviceSchedules/calendarSync/functions/planToEvent.js +145 -0
  13. package/dist/features/openservice/serviceSchedules/calendarSync/index.d.ts +8 -0
  14. package/dist/features/openservice/serviceSchedules/calendarSync/index.js +28 -0
  15. package/dist/features/openservice/serviceSchedules/calendarSync/service/ServiceCalendarSyncPoller.d.ts +54 -0
  16. package/dist/features/openservice/serviceSchedules/calendarSync/service/ServiceCalendarSyncPoller.js +248 -0
  17. package/dist/features/openservice/serviceSchedules/calendarSync/service/serviceCalendarMeta.d.ts +55 -0
  18. package/dist/features/openservice/serviceSchedules/calendarSync/service/serviceCalendarMeta.js +109 -0
  19. package/dist/features/openservice/serviceSchedules/calendarSync/service/syncPlanToCalendar.d.ts +26 -0
  20. package/dist/features/openservice/serviceSchedules/calendarSync/service/syncPlanToCalendar.js +122 -0
  21. package/dist/features/openservice/serviceSchedules/calendarSync/types/ServiceSyncTypes.d.ts +55 -0
  22. package/dist/features/openservice/serviceSchedules/calendarSync/types/ServiceSyncTypes.js +8 -0
  23. package/dist/features/openservice/serviceSchedules/initServiceSchedulesFeature.d.ts +10 -0
  24. package/dist/features/openservice/serviceSchedules/initServiceSchedulesFeature.js +39 -0
  25. package/dist/features/openservice/serviceTickets/alarmActions/functions/alarmTicketFields.d.ts +35 -0
  26. package/dist/features/openservice/serviceTickets/alarmActions/functions/alarmTicketFields.js +103 -0
  27. package/dist/features/openservice/serviceTickets/alarmActions/index.d.ts +7 -0
  28. package/dist/features/openservice/serviceTickets/alarmActions/index.js +16 -0
  29. package/dist/features/openservice/serviceTickets/alarmActions/service/createAlarmTicket.d.ts +33 -0
  30. package/dist/features/openservice/serviceTickets/alarmActions/service/createAlarmTicket.js +179 -0
  31. package/dist/features/openservice/serviceTickets/alarmActions/service/ensureAlarmTicketAction.d.ts +22 -0
  32. package/dist/features/openservice/serviceTickets/alarmActions/service/ensureAlarmTicketAction.js +127 -0
  33. package/dist/features/openservice/serviceTickets/alarmActions/types/AlarmTicketTypes.d.ts +80 -0
  34. package/dist/features/openservice/serviceTickets/alarmActions/types/AlarmTicketTypes.js +28 -0
  35. package/dist/features/permissions/types/Permissions.d.ts +1 -2
  36. package/dist/features/permissions/types/Permissions.js +8 -2
  37. package/dist/functions/openinc-openservice-alarm-create-ticket.d.ts +25 -0
  38. package/dist/functions/openinc-openservice-alarm-create-ticket.js +63 -0
  39. package/dist/functions/openinc-openservice-notify-contacts.d.ts +16 -0
  40. package/dist/functions/openinc-openservice-notify-contacts.js +82 -0
  41. package/dist/functions/openinc-openservice-schedule-calendar-sync.d.ts +15 -0
  42. package/dist/functions/openinc-openservice-schedule-calendar-sync.js +60 -0
  43. package/dist/hooks/Service_Schedule.js +89 -16
  44. package/dist/hooks/Service_Schedule_Template.js +28 -7
  45. package/dist/hooks/Service_Ticket.js +2 -2
  46. package/dist/types/Service_Schedule.d.ts +12 -0
  47. package/dist/types/Service_Schedule.js +21 -0
  48. package/dist/types/Service_Schedule_Execution.d.ts +6 -3
  49. package/dist/types/Service_Schedule_Execution.js +6 -0
  50. package/dist/types/Service_Schedule_Template.d.ts +7 -0
  51. package/dist/types/Service_Schedule_Template.js +12 -0
  52. package/package.json +5 -4
  53. package/schema/Service_Schedule.json +17 -0
  54. package/schema/Service_Schedule_Execution.json +5 -0
  55. package/schema/Service_Schedule_Template.json +9 -0
  56. package/dist/features/ruleset/applyRuleSet.d.ts +0 -41
  57. package/dist/features/ruleset/applyRuleSet.js +0 -81
@@ -31,6 +31,12 @@ class Service_Schedule_Template extends node_1.default.Object {
31
31
  set description(value) {
32
32
  super.set("description", value);
33
33
  }
34
+ get notifications() {
35
+ return super.get("notifications");
36
+ }
37
+ set notifications(value) {
38
+ super.set("notifications", value);
39
+ }
34
40
  get serviceProviders() {
35
41
  return super.get("serviceProviders");
36
42
  }
@@ -55,6 +61,12 @@ class Service_Schedule_Template extends node_1.default.Object {
55
61
  set title(value) {
56
62
  super.set("title", value);
57
63
  }
64
+ get user() {
65
+ return super.get("user");
66
+ }
67
+ set user(value) {
68
+ super.set("user", value);
69
+ }
58
70
  }
59
71
  exports.Service_Schedule_Template = Service_Schedule_Template;
60
72
  node_1.default.Object.registerSubclass("OD3_Service_Schedule_Template", Service_Schedule_Template);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "4.1.8",
3
+ "version": "4.2.1",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
5
  "packageManager": "pnpm@11.25.0",
6
6
  "keywords": [
@@ -69,14 +69,15 @@
69
69
  "seed:v1": "node dist/scripts/seed-v1-testdata.js"
70
70
  },
71
71
  "dependencies": {
72
+ "@opendash/ruleset-core": "0.1.1-nightly.1",
72
73
  "@openinc/parse-server-schema": "^4.1.1",
73
74
  "amqplib": "^0.10.9",
74
75
  "cron": "^4.4.0",
75
76
  "dayjs": "^1.11.23",
76
77
  "dotenv": "^17.4.2",
77
- "fast-equals": "^6.0.2",
78
- "i18next": "^26.4.1",
79
- "i18next-fs-backend": "^2.6.7",
78
+ "fast-equals": "^6.0.3",
79
+ "i18next": "^26.4.2",
80
+ "i18next-fs-backend": "^2.6.8",
80
81
  "jsonwebtoken": "^9.0.3",
81
82
  "jwks-rsa": "^4.1.0",
82
83
  "nodemailer": "^9.1.1",
@@ -13,6 +13,10 @@
13
13
  "targetClass": "_Role",
14
14
  "required": false
15
15
  },
16
+ "assignedUsers": {
17
+ "type": "Relation",
18
+ "targetClass": "_User"
19
+ },
16
20
  "cadence": {
17
21
  "type": "Object",
18
22
  "required": true
@@ -21,6 +25,10 @@
21
25
  "type": "Array",
22
26
  "required": false
23
27
  },
28
+ "color": {
29
+ "type": "String",
30
+ "required": false
31
+ },
24
32
  "coversTasks": {
25
33
  "type": "Array",
26
34
  "defaultValue": []
@@ -49,6 +57,11 @@
49
57
  "type": "Number",
50
58
  "required": false
51
59
  },
60
+ "notifications": {
61
+ "type": "Array",
62
+ "required": false,
63
+ "defaultValue": []
64
+ },
52
65
  "pausedUntil": {
53
66
  "type": "Date",
54
67
  "required": false
@@ -72,6 +85,10 @@
72
85
  "title": {
73
86
  "type": "String",
74
87
  "required": true
88
+ },
89
+ "user": {
90
+ "type": "Pointer",
91
+ "targetClass": "_User"
75
92
  }
76
93
  },
77
94
  "classLevelPermissions": {
@@ -29,6 +29,11 @@
29
29
  "type": "Pointer",
30
30
  "targetClass": "{{PREFIX}}Tenant",
31
31
  "required": true
32
+ },
33
+ "user": {
34
+ "type": "Pointer",
35
+ "targetClass": "_User",
36
+ "required": false
32
37
  }
33
38
  },
34
39
  "classLevelPermissions": {
@@ -18,6 +18,11 @@
18
18
  "type": "String",
19
19
  "required": false
20
20
  },
21
+ "notifications": {
22
+ "type": "Array",
23
+ "required": false,
24
+ "defaultValue": []
25
+ },
21
26
  "serviceProviders": {
22
27
  "type": "Array",
23
28
  "required": false,
@@ -36,6 +41,10 @@
36
41
  "title": {
37
42
  "type": "String",
38
43
  "required": true
44
+ },
45
+ "user": {
46
+ "type": "Pointer",
47
+ "targetClass": "_User"
39
48
  }
40
49
  },
41
50
  "classLevelPermissions": {
@@ -1,41 +0,0 @@
1
- /**
2
- * Backend port of the `@opendash/ui` ruleset evaluator
3
- * (`libs/ui/src/features/ruleset/functions/applyRuleSet.ts`).
4
- *
5
- * The frontend authors condition trees with the RuleSet editor and stores them
6
- * as JSON; notifications must be created server-side, so the same evaluation
7
- * logic has to run here. This is a faithful, dependency-free copy of the pure
8
- * evaluation core — keep the operator semantics in sync with the frontend.
9
- */
10
- export type RuleOperator = "equals" | "notEquals" | "contains" | "notContains" | "startsWith" | "endsWith" | "isEmpty" | "isNotEmpty" | "gt" | "gte" | "lt" | "lte" | "between" | "isTrue" | "isFalse" | "before" | "after";
11
- /** A single comparison against one field. */
12
- export interface Rule {
13
- id: string;
14
- kind: "rule";
15
- field: string;
16
- operator: RuleOperator;
17
- value?: string | number | boolean;
18
- /** Secondary value — only used for the "between" operator. */
19
- value2?: number;
20
- }
21
- /** A logical group that chains rules and nested groups via AND / OR. */
22
- export interface RuleGroup {
23
- id: string;
24
- kind: "group";
25
- conjunction: "AND" | "OR";
26
- rules: Array<Rule | RuleGroup>;
27
- }
28
- export type RuleSetValue = RuleGroup;
29
- /** A saved ruleset-function entry as produced by the RuleSet editor. */
30
- export interface RuleSetFunctionEntry {
31
- ruleset: RuleSetValue;
32
- function: string;
33
- params?: Record<string, unknown>;
34
- }
35
- /** Resolves the current value for a given field name. */
36
- export type GetValueFn = (fieldName: string) => unknown;
37
- /**
38
- * Evaluates a `RuleSetValue` against live data. An empty rule group always
39
- * returns `true` (matches the frontend semantics).
40
- */
41
- export declare function applyRuleSet(ruleSet: RuleSetValue, getValue: GetValueFn): boolean;
@@ -1,81 +0,0 @@
1
- "use strict";
2
- /**
3
- * Backend port of the `@opendash/ui` ruleset evaluator
4
- * (`libs/ui/src/features/ruleset/functions/applyRuleSet.ts`).
5
- *
6
- * The frontend authors condition trees with the RuleSet editor and stores them
7
- * as JSON; notifications must be created server-side, so the same evaluation
8
- * logic has to run here. This is a faithful, dependency-free copy of the pure
9
- * evaluation core — keep the operator semantics in sync with the frontend.
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.applyRuleSet = applyRuleSet;
13
- function evaluateRule(rule, getValue) {
14
- const fieldValue = getValue(rule.field);
15
- switch (rule.operator) {
16
- case "equals":
17
- // eslint-disable-next-line eqeqeq
18
- return fieldValue == rule.value;
19
- case "notEquals":
20
- // eslint-disable-next-line eqeqeq
21
- return fieldValue != rule.value;
22
- case "contains":
23
- return (typeof fieldValue === "string" &&
24
- fieldValue.includes(String(rule.value ?? "")));
25
- case "notContains":
26
- return (typeof fieldValue === "string" &&
27
- !fieldValue.includes(String(rule.value ?? "")));
28
- case "startsWith":
29
- return (typeof fieldValue === "string" &&
30
- fieldValue.startsWith(String(rule.value ?? "")));
31
- case "endsWith":
32
- return (typeof fieldValue === "string" &&
33
- fieldValue.endsWith(String(rule.value ?? "")));
34
- case "isEmpty":
35
- return (fieldValue === null || fieldValue === undefined || fieldValue === "");
36
- case "isNotEmpty":
37
- return (fieldValue !== null && fieldValue !== undefined && fieldValue !== "");
38
- case "gt":
39
- return Number(fieldValue) > Number(rule.value);
40
- case "gte":
41
- return Number(fieldValue) >= Number(rule.value);
42
- case "lt":
43
- return Number(fieldValue) < Number(rule.value);
44
- case "lte":
45
- return Number(fieldValue) <= Number(rule.value);
46
- case "between":
47
- return (Number(fieldValue) >= Number(rule.value) &&
48
- Number(fieldValue) <= Number(rule.value2));
49
- case "isTrue":
50
- return fieldValue === true;
51
- case "isFalse":
52
- return fieldValue === false;
53
- case "before":
54
- return new Date(String(fieldValue)) < new Date(String(rule.value ?? ""));
55
- case "after":
56
- return new Date(String(fieldValue)) > new Date(String(rule.value ?? ""));
57
- default:
58
- return false;
59
- }
60
- }
61
- function evaluateGroup(group, getValue) {
62
- if (group.rules.length === 0)
63
- return true;
64
- if (group.conjunction === "AND") {
65
- return group.rules.every((item) => item.kind === "rule"
66
- ? evaluateRule(item, getValue)
67
- : evaluateGroup(item, getValue));
68
- }
69
- return group.rules.some((item) => item.kind === "rule"
70
- ? evaluateRule(item, getValue)
71
- : evaluateGroup(item, getValue));
72
- }
73
- /**
74
- * Evaluates a `RuleSetValue` against live data. An empty rule group always
75
- * returns `true` (matches the frontend semantics).
76
- */
77
- function applyRuleSet(ruleSet, getValue) {
78
- if (!ruleSet || ruleSet.kind !== "group")
79
- return false;
80
- return evaluateGroup(ruleSet, getValue);
81
- }