@openinc/parse-server-opendash 2.4.45 → 2.4.46

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.
@@ -10,11 +10,12 @@
10
10
  "OD3_BDE_Result": "BDE",
11
11
  "OD3_BDE_Unit": "BDE",
12
12
  "OD3_Company": "CORE",
13
- "OD3_Contact": "CORE",
14
13
  "OD3_Config": "CORE",
14
+ "OD3_Contact": "CORE",
15
15
  "OD3_Core_Email": "CORE",
16
16
  "OD3_Core_Token": "CORE",
17
17
  "OD3_Dashboard": "MONITORING",
18
+ "OD3_Group": "CORE",
18
19
  "OD3_GTFS_Agency": "GTFS",
19
20
  "OD3_GTFS_Bikes_Allowed": "GTFS",
20
21
  "OD3_GTFS_Calendar": "GTFS",
@@ -28,7 +29,6 @@
28
29
  "OD3_GTFS_Trip": "GTFS",
29
30
  "OD3_GTFS_Wheelchair_Accessible": "GTFS",
30
31
  "OD3_GTFS_Wheelchair_Boarding": "GTFS",
31
- "OD3_Group": "CORE",
32
32
  "OD3_Knowledge_Article": "KNOWLEDGE",
33
33
  "OD3_Knowledge_Category": "KNOWLEDGE",
34
34
  "OD3_Knowledge_Document": "KNOWLEDGE",
@@ -36,12 +36,12 @@
36
36
  "OD3_Knowledge_Video": "KNOWLEDGE",
37
37
  "OD3_Language": "CORE",
38
38
  "OD3_Log": "CORE",
39
- "OD3_MIAAS_MDSEndpoint": "MIAAS",
40
39
  "OD3_MailTemplate": "MONITORING",
41
40
  "OD3_Maintenance_Article": "MAINTENANCE",
42
41
  "OD3_Maintenance_DailySchedule": "MAINTENANCE",
43
42
  "OD3_Maintenance_Downtime": "MAINTENANCE",
44
43
  "OD3_Maintenance_Duedate": "MAINTENANCE",
44
+ "OD3_Maintenance_File": "MAINTENANCE",
45
45
  "OD3_Maintenance_Frequency": "MAINTENANCE",
46
46
  "OD3_Maintenance_Issuecategory": "MAINTENANCE",
47
47
  "OD3_Maintenance_Item": "MAINTENANCE",
@@ -57,10 +57,13 @@
57
57
  "OD3_Maintenance_Schedule_Execution_Step": "MAINTENANCE",
58
58
  "OD3_Maintenance_Schedule_Step": "MAINTENANCE",
59
59
  "OD3_Maintenance_SourceMeta": "MAINTENANCE",
60
+ "OD3_Maintenance_Source_File": "MAINTENANCE",
60
61
  "OD3_Maintenance_Ticket": "MAINTENANCE",
61
62
  "OD3_Maintenance_Ticket_Issuecategory": "MAINTENANCE",
62
63
  "OD3_Maintenance_Ticket_Kanban_State": "MAINTENANCE",
64
+ "OD3_Maintenance_Ticket_Kanban_State_Current": "MAINTENANCE",
63
65
  "OD3_Maintenance_Ticket_Source": "MAINTENANCE",
66
+ "OD3_MIAAS_MDSEndpoint": "MIAAS",
64
67
  "OD3_Monitoring_DataHierachies": "MONITORING",
65
68
  "OD3_Monitoring_Jobs": "MONITORING",
66
69
  "OD3_Monitoring_ReportImage": "MONITORING",
@@ -4,12 +4,11 @@ exports.init = init;
4
4
  const __1 = require("..");
5
5
  const types_1 = require("../types");
6
6
  async function init() {
7
- // initCurrentTicketStates();
7
+ await initCurrentTicketStates();
8
8
  (0, __1.beforeSaveHook)(types_1.Maintenance_Ticket_Kanban_State_Current, async (request) => {
9
9
  const { object, original, user } = request;
10
10
  await (0, __1.defaultHandler)(request);
11
11
  await (0, __1.defaultAclHandler)(request);
12
- // TODO
13
12
  });
14
13
  (0, __1.afterSaveHook)(types_1.Maintenance_Ticket_Kanban_State_Current, async (request) => {
15
14
  const { object, original, user } = request;
@@ -20,11 +19,12 @@ async function init() {
20
19
  * If the ticket has no state, initialize it with the inbox state.
21
20
  */
22
21
  async function initCurrentTicketStates() {
23
- // Getting the tickets that have no entry in the current ticket states table
24
- const currentTicketStatesQuery = new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current);
25
- const ticketsQuery = new Parse.Query(types_1.Maintenance_Ticket);
26
- ticketsQuery.doesNotMatchKeyInQuery("objectId", "ticket", currentTicketStatesQuery);
27
- const ticketsWithoutEntry = await ticketsQuery.find({ useMasterKey: true });
22
+ // Getting the tickets that have no entry in the current ticket states table (OD3_Maintenance_Ticket_Kanban_State_Current)
23
+ const ticketsWithoutEntry = await new Parse.Query(types_1.Maintenance_Ticket)
24
+ .doesNotMatchKeyInQuery("objectId",
25
+ //@ts-ignore
26
+ "ticket.objectId", new Parse.Query(types_1.Maintenance_Ticket_Kanban_State_Current).select("ticket"))
27
+ .find({ useMasterKey: true });
28
28
  // for each ticket not in the table, create an entry
29
29
  for (const ticket of ticketsWithoutEntry) {
30
30
  const currentTicketState = await new Parse.Query(types_1.Maintenance_Ticket_Kanban_State)
@@ -32,14 +32,28 @@ async function initCurrentTicketStates() {
32
32
  .equalTo("ticket", ticket)
33
33
  .descending("createdAt")
34
34
  .first({ useMasterKey: true });
35
+ const tenant = ticket.get("tenant");
36
+ const user = ticket.get("user");
37
+ if (typeof tenant === "undefined" || typeof user === "undefined") {
38
+ console.error("Tenant or user is undefined for ticket", ticket.id);
39
+ continue;
40
+ }
35
41
  // if the ticket has a state, create an entry in the current ticket states table
36
42
  if (currentTicketState) {
37
43
  const newTicketState = new types_1.Maintenance_Ticket_Kanban_State_Current({
38
44
  ticket: ticket,
39
45
  ticketState: currentTicketState,
40
46
  state: currentTicketState?.get("state"),
41
- tenant: ticket.get("tenant"),
47
+ tenant: tenant,
42
48
  });
49
+ const acl = new Parse.ACL();
50
+ acl.setRoleReadAccess("od-admin", true);
51
+ acl.setRoleWriteAccess("od-admin", true);
52
+ acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
53
+ acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
54
+ acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
55
+ acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
56
+ newTicketState.setACL(acl);
43
57
  await newTicketState.save(null, { useMasterKey: true });
44
58
  }
45
59
  else {
@@ -48,12 +62,23 @@ async function initCurrentTicketStates() {
48
62
  .equalTo("isInbox", true)
49
63
  .first({ useMasterKey: true });
50
64
  // saving the ticket state will automatically create an entry in the current ticket states table due to the afterSave-Hook
51
- await new types_1.Maintenance_Ticket_Kanban_State({
65
+ const newkanbanstate = new types_1.Maintenance_Ticket_Kanban_State({
52
66
  ticket: ticket,
53
67
  state: inboxState,
54
- tenant: ticket.get("tenant"),
55
- user: ticket.user,
56
- }).save();
68
+ tenant: tenant,
69
+ user: user,
70
+ });
71
+ const acl = new Parse.ACL();
72
+ acl.setRoleReadAccess("od-admin", true);
73
+ acl.setRoleWriteAccess("od-admin", true);
74
+ acl.setReadAccess(user.id, true);
75
+ acl.setWriteAccess(user.id, true);
76
+ acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
77
+ acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
78
+ acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
79
+ acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
80
+ newkanbanstate.setACL(acl);
81
+ await newkanbanstate.save();
57
82
  }
58
83
  }
59
84
  }
@@ -0,0 +1,10 @@
1
+ export interface Knowledge_ChatAttributes {
2
+ id: string;
3
+ objectId: string;
4
+ createdAt: Date;
5
+ updatedAt: Date;
6
+ }
7
+ export declare class Knowledge_Chat extends Parse.Object<Knowledge_ChatAttributes> {
8
+ static className: string;
9
+ constructor(data?: Partial<Knowledge_ChatAttributes>);
10
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Knowledge_Chat = void 0;
4
+ class Knowledge_Chat extends Parse.Object {
5
+ constructor(data) {
6
+ super("OD3_Knowledge_Chat", data);
7
+ }
8
+ }
9
+ exports.Knowledge_Chat = Knowledge_Chat;
10
+ Knowledge_Chat.className = "OD3_Knowledge_Chat";
11
+ Parse.Object.registerSubclass("OD3_Knowledge_Chat", Knowledge_Chat);
@@ -0,0 +1,20 @@
1
+ import type { Knowledge_Chat } from "./Knowledge_Chat";
2
+ export interface Knowledge_ChatMessageAttributes {
3
+ id: string;
4
+ objectId: string;
5
+ createdAt: Date;
6
+ updatedAt: Date;
7
+ isBotMessage: boolean;
8
+ message: string;
9
+ parentChat: Knowledge_Chat;
10
+ }
11
+ export declare class Knowledge_ChatMessage extends Parse.Object<Knowledge_ChatMessageAttributes> {
12
+ static className: string;
13
+ constructor(data?: Partial<Knowledge_ChatMessageAttributes>);
14
+ get isBotMessage(): boolean;
15
+ set isBotMessage(value: boolean);
16
+ get message(): string;
17
+ set message(value: string);
18
+ get parentChat(): Knowledge_Chat;
19
+ set parentChat(value: Knowledge_Chat);
20
+ }
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Knowledge_ChatMessage = void 0;
4
+ class Knowledge_ChatMessage extends Parse.Object {
5
+ constructor(data) {
6
+ super("OD3_Knowledge_ChatMessage", data);
7
+ }
8
+ get isBotMessage() {
9
+ return super.get("isBotMessage");
10
+ }
11
+ set isBotMessage(value) {
12
+ super.set("isBotMessage", value);
13
+ }
14
+ get message() {
15
+ return super.get("message");
16
+ }
17
+ set message(value) {
18
+ super.set("message", value);
19
+ }
20
+ get parentChat() {
21
+ return super.get("parentChat");
22
+ }
23
+ set parentChat(value) {
24
+ super.set("parentChat", value);
25
+ }
26
+ }
27
+ exports.Knowledge_ChatMessage = Knowledge_ChatMessage;
28
+ Knowledge_ChatMessage.className = "OD3_Knowledge_ChatMessage";
29
+ Parse.Object.registerSubclass("OD3_Knowledge_ChatMessage", Knowledge_ChatMessage);
@@ -62,6 +62,10 @@ export { Knowledge_Article } from "./Knowledge_Article";
62
62
  export type { Knowledge_ArticleAttributes } from "./Knowledge_Article";
63
63
  export { Knowledge_Category } from "./Knowledge_Category";
64
64
  export type { Knowledge_CategoryAttributes } from "./Knowledge_Category";
65
+ export { Knowledge_Chat } from "./Knowledge_Chat";
66
+ export type { Knowledge_ChatAttributes } from "./Knowledge_Chat";
67
+ export { Knowledge_ChatMessage } from "./Knowledge_ChatMessage";
68
+ export type { Knowledge_ChatMessageAttributes } from "./Knowledge_ChatMessage";
65
69
  export { Knowledge_Document } from "./Knowledge_Document";
66
70
  export type { Knowledge_DocumentAttributes } from "./Knowledge_Document";
67
71
  export { Knowledge_DocumentPage } from "./Knowledge_DocumentPage";
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = exports.Maintenance_File = exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_DailySchedule = exports.Maintenance_Article = exports.MailTemplate = exports.MIAAS_MDSEndpoint = exports.Log = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_Category = exports.Knowledge_Article = exports.Group = exports.GTFS_Wheelchair_Boarding = exports.GTFS_Wheelchair_Accessible = exports.GTFS_Trip = exports.GTFS_Stop_Times = exports.GTFS_Stop = exports.GTFS_Route_Type = exports.GTFS_Route = exports.GTFS_Location_Type = exports.GTFS_Level = exports.GTFS_Direction = exports.GTFS_Calendar = exports.GTFS_Bikes_Allowed = exports.GTFS_Agency = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
4
- exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Schedule = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = void 0;
3
+ exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = exports.Maintenance_File = exports.Maintenance_Duedate = exports.Maintenance_Downtime = exports.Maintenance_DailySchedule = exports.Maintenance_Article = exports.MailTemplate = exports.MIAAS_MDSEndpoint = exports.Log = exports.Language = exports.Knowledge_Video = exports.Knowledge_DocumentPage = exports.Knowledge_Document = exports.Knowledge_ChatMessage = exports.Knowledge_Chat = exports.Knowledge_Category = exports.Knowledge_Article = exports.Group = exports.GTFS_Wheelchair_Boarding = exports.GTFS_Wheelchair_Accessible = exports.GTFS_Trip = exports.GTFS_Stop_Times = exports.GTFS_Stop = exports.GTFS_Route_Type = exports.GTFS_Route = exports.GTFS_Location_Type = exports.GTFS_Level = exports.GTFS_Direction = exports.GTFS_Calendar = exports.GTFS_Bikes_Allowed = exports.GTFS_Agency = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
4
+ exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.UserData = exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_SourceMeta = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Schedule = exports.Maintenance_Restriction = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message_Body = exports.Maintenance_Message = exports.Maintenance_Media = void 0;
5
5
  var Alarm_1 = require("./Alarm");
6
6
  Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
7
7
  var AlarmAction_1 = require("./AlarmAction");
@@ -66,6 +66,10 @@ var Knowledge_Article_1 = require("./Knowledge_Article");
66
66
  Object.defineProperty(exports, "Knowledge_Article", { enumerable: true, get: function () { return Knowledge_Article_1.Knowledge_Article; } });
67
67
  var Knowledge_Category_1 = require("./Knowledge_Category");
68
68
  Object.defineProperty(exports, "Knowledge_Category", { enumerable: true, get: function () { return Knowledge_Category_1.Knowledge_Category; } });
69
+ var Knowledge_Chat_1 = require("./Knowledge_Chat");
70
+ Object.defineProperty(exports, "Knowledge_Chat", { enumerable: true, get: function () { return Knowledge_Chat_1.Knowledge_Chat; } });
71
+ var Knowledge_ChatMessage_1 = require("./Knowledge_ChatMessage");
72
+ Object.defineProperty(exports, "Knowledge_ChatMessage", { enumerable: true, get: function () { return Knowledge_ChatMessage_1.Knowledge_ChatMessage; } });
69
73
  var Knowledge_Document_1 = require("./Knowledge_Document");
70
74
  Object.defineProperty(exports, "Knowledge_Document", { enumerable: true, get: function () { return Knowledge_Document_1.Knowledge_Document; } });
71
75
  var Knowledge_DocumentPage_1 = require("./Knowledge_DocumentPage");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "2.4.45",
3
+ "version": "2.4.46",
4
4
  "description": "Parse Server Cloud Code for open.DASH",
5
5
  "keywords": [
6
6
  "parse",
@@ -17,29 +17,33 @@
17
17
  "build": "tsc",
18
18
  "deploy": "opendash deploy",
19
19
  "schema-down": "parse-server-schema down --prefix OD3_ ./schema",
20
+ "schema-up": "parse-server-schema up --prefix OD3_ ./schema",
20
21
  "schema-ts": "parse-server-schema typescript --prefix OD3_ --global-sdk ./src/types",
21
- "typedoc": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --out docs src/index.ts"
22
+ "typedoc": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --out docs src/index.ts",
23
+ "predevstart": "cd /usr/src/app && pnpm config set strict-ssl false && echo 'Installing additional packages: ' ${OPENINC_PARSE_ADDITIONAL_PACKAGES} && pnpm install ${OPENINC_PARSE_ADDITIONAL_PACKAGES} && echo 'Fetching schema from parse' && pnpm parse-server-schema down --prefix OD3_ ./packages/schema/",
24
+ "devstart": "parse-server ./config.js"
22
25
  },
23
26
  "dependencies": {
24
- "@openinc/parse-server-schema": "^1.6.0",
27
+ "@openinc/parse-server-schema": "^1.7.6",
25
28
  "fast-equals": "^5.0.1",
26
29
  "jsonwebtoken": "^9.0.2",
27
30
  "node-fetch": "^2.7.0",
28
31
  "nodemailer": "^6.9.15",
29
32
  "nunjucks": "^3.2.4",
33
+ "parse-server": "^6.5.8",
30
34
  "pdf-img-convert": "1.0.6",
31
35
  "web-push": "^3.6.7"
32
36
  },
33
37
  "devDependencies": {
34
38
  "@types/jsonwebtoken": "^9.0.7",
35
- "@types/node": "^18.19.50",
39
+ "@types/node": "^18.19.54",
36
40
  "@types/node-fetch": "^2.6.11",
37
41
  "@types/nodemailer": "^6.4.16",
38
42
  "@types/nunjucks": "^3.2.6",
39
43
  "@types/parse": "^3.0.9",
40
44
  "@types/web-push": "^3.6.3",
41
45
  "typedoc": "^0.26.7",
42
- "typedoc-plugin-markdown": "^4.2.7",
46
+ "typedoc-plugin-markdown": "^4.2.8",
43
47
  "typescript": "^5.6.2"
44
48
  }
45
49
  }
@@ -0,0 +1,29 @@
1
+ {
2
+ "fields": {},
3
+ "classLevelPermissions": {
4
+ "find": {
5
+ "*": true
6
+ },
7
+ "count": {
8
+ "*": true
9
+ },
10
+ "get": {
11
+ "*": true
12
+ },
13
+ "create": {
14
+ "*": true
15
+ },
16
+ "update": {
17
+ "*": true
18
+ },
19
+ "delete": {
20
+ "*": true
21
+ },
22
+ "addField": {
23
+ "*": true
24
+ },
25
+ "protectedFields": {
26
+ "*": []
27
+ }
28
+ }
29
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "fields": {
3
+ "isBotMessage": {
4
+ "type": "Boolean",
5
+ "required": true
6
+ },
7
+ "message": {
8
+ "type": "String",
9
+ "required": true
10
+ },
11
+ "parentChat": {
12
+ "type": "Pointer",
13
+ "targetClass": "{{PREFIX}}Knowledge_Chat",
14
+ "required": true
15
+ }
16
+ },
17
+ "classLevelPermissions": {
18
+ "find": {
19
+ "*": true
20
+ },
21
+ "count": {
22
+ "*": true
23
+ },
24
+ "get": {
25
+ "*": true
26
+ },
27
+ "create": {
28
+ "*": true
29
+ },
30
+ "update": {
31
+ "*": true
32
+ },
33
+ "delete": {
34
+ "*": true
35
+ },
36
+ "addField": {
37
+ "*": true
38
+ },
39
+ "protectedFields": {
40
+ "*": []
41
+ }
42
+ }
43
+ }