@openinc/parse-server-opendash 3.29.13 → 3.31.25
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/dist/featuremap.json +1 -0
- package/dist/features/config/helper/customOptions.js +8 -0
- package/dist/features/config/types/ConfigKeys.d.ts +0 -1
- package/dist/features/config/types/ConfigKeys.js +0 -1
- package/dist/features/openservice/functions/assignUsersAndRoles.js +12 -0
- package/dist/features/openservice/types/SaveValues.d.ts +0 -1
- package/dist/features/openservice/types/TicketData.d.ts +2 -1
- package/dist/functions/openinc-openservice-save-ticket-data.d.ts +1 -0
- package/dist/functions/openinc-openservice-save-ticket-data.js +42 -8
- package/dist/functions/openinc-openservice-ticket-data.d.ts +2 -0
- package/dist/functions/openinc-openservice-ticket-data.js +9 -0
- package/dist/hooks/MIAAS_MDSEndpoint.js +1 -1
- package/dist/hooks/_ChangeLog.d.ts +1 -0
- package/dist/hooks/_ChangeLog.js +93 -0
- package/dist/hooks/_init.js +1 -0
- package/dist/types/Changelog.d.ts +34 -0
- package/dist/types/Changelog.js +59 -0
- package/dist/types/Maintenance_Ticket_Data.d.ts +22 -0
- package/dist/types/Maintenance_Ticket_Data.js +29 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +7 -3
- package/package.json +17 -13
- package/schema/Changelog.json +69 -0
- package/schema/Maintenance_Ticket_Data.json +50 -0
- package/dist/jobs/index.d.ts +0 -0
- package/dist/jobs/index.js +0 -2
package/dist/featuremap.json
CHANGED
|
@@ -525,4 +525,12 @@ exports.customoptions = {
|
|
|
525
525
|
public: false,
|
|
526
526
|
description: "Application ID for Microsoft authentication. This is the Application (client) ID from the Azure portal.",
|
|
527
527
|
},
|
|
528
|
+
CHANGELOG_BLACKLIST: {
|
|
529
|
+
env: "OPENINC_PARSE_CHANGELOG_BLACKLIST",
|
|
530
|
+
type: "string",
|
|
531
|
+
required: false,
|
|
532
|
+
secret: false,
|
|
533
|
+
public: false,
|
|
534
|
+
description: "Comma separated list of class names which should be excluded from ChangeLog entries.",
|
|
535
|
+
},
|
|
528
536
|
};
|
|
@@ -3,7 +3,6 @@ export declare namespace ConfigKeys {
|
|
|
3
3
|
closedTicketsLifetime = "OPENSERVICE_CLOSED_TICKET_LIFETIME",
|
|
4
4
|
ticketCreationForm = "OPENSERVICE_CREATE_TICKET_FORM",
|
|
5
5
|
scheduleMetaFields = "OPENSERVICE_SCHEDULE_META_FIELDS",
|
|
6
|
-
sampledataCreated = "OPENSERVICE_SAMPLEDATA_CREATED",
|
|
7
6
|
createTicketOnSchedule = "OPENSERVICE_CREATE_TICKET_ON_SCHEDULE"
|
|
8
7
|
}
|
|
9
8
|
}
|
|
@@ -8,7 +8,6 @@ var ConfigKeys;
|
|
|
8
8
|
OpenService["closedTicketsLifetime"] = "OPENSERVICE_CLOSED_TICKET_LIFETIME";
|
|
9
9
|
OpenService["ticketCreationForm"] = "OPENSERVICE_CREATE_TICKET_FORM";
|
|
10
10
|
OpenService["scheduleMetaFields"] = "OPENSERVICE_SCHEDULE_META_FIELDS";
|
|
11
|
-
OpenService["sampledataCreated"] = "OPENSERVICE_SAMPLEDATA_CREATED";
|
|
12
11
|
OpenService["createTicketOnSchedule"] = "OPENSERVICE_CREATE_TICKET_ON_SCHEDULE";
|
|
13
12
|
})(OpenService = ConfigKeys.OpenService || (ConfigKeys.OpenService = {}));
|
|
14
13
|
})(ConfigKeys || (exports.ConfigKeys = ConfigKeys = {}));
|
|
@@ -58,6 +58,10 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
|
|
|
58
58
|
user: ticket.get("user"),
|
|
59
59
|
batchStamp: batchTime,
|
|
60
60
|
}));
|
|
61
|
+
if (assignedTo.id === assigningUser?.id) {
|
|
62
|
+
// Don't notify the user who created the ticket
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
61
65
|
await new types_1.Notification({
|
|
62
66
|
data: {
|
|
63
67
|
ticketId: ticket.id,
|
|
@@ -91,6 +95,10 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
|
|
|
91
95
|
.query()
|
|
92
96
|
.find(fetchOptions);
|
|
93
97
|
for await (const roleUser of roleUsers) {
|
|
98
|
+
if (roleUser.id === assigningUser?.id) {
|
|
99
|
+
// Don't notify the user who created the ticket
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
94
102
|
if (userNotifiedIds.includes(roleUser.id))
|
|
95
103
|
continue;
|
|
96
104
|
const resipientlanguage = await (0, getUserLanguage_1.getUserLanguage)(roleUser);
|
|
@@ -121,6 +129,10 @@ async function assignUsersAndRoles(ticket, assignedTo, fetchOptions, assigningUs
|
|
|
121
129
|
await types_1.Maintenance_Ticket_Assignment.saveAll(assignments, fetchOptions);
|
|
122
130
|
//Set ACLs for assigned users and roles on ticket
|
|
123
131
|
const acl = new Parse.ACL();
|
|
132
|
+
if (assigningUser) {
|
|
133
|
+
acl.setReadAccess(assigningUser, true);
|
|
134
|
+
acl.setWriteAccess(assigningUser, true);
|
|
135
|
+
}
|
|
124
136
|
for (const assignedUser of newUsers) {
|
|
125
137
|
acl.setReadAccess(assignedUser, true);
|
|
126
138
|
acl.setWriteAccess(assignedUser, true);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Project, Maintenance_Restriction, Maintenance_Ticket, Maintenance_Ticket_Material, Source } from "../../../types";
|
|
1
|
+
import { Assets, Maintenance_Downtime, Maintenance_Duedate, Maintenance_Frequency, Maintenance_Issuecategory, Maintenance_Kanban_State, Maintenance_Message, Maintenance_Priority, Maintenance_Project, Maintenance_Restriction, Maintenance_Ticket, Maintenance_Ticket_Material, Source } from "../../../types";
|
|
2
2
|
export type TicketData = {
|
|
3
3
|
ticket: Maintenance_Ticket;
|
|
4
4
|
downtime?: Maintenance_Downtime;
|
|
@@ -14,4 +14,5 @@ export type TicketData = {
|
|
|
14
14
|
assignedTo?: Array<Parse.User | Parse.Role>;
|
|
15
15
|
material?: Maintenance_Ticket_Material;
|
|
16
16
|
project?: Maintenance_Project;
|
|
17
|
+
assets?: Assets[];
|
|
17
18
|
};
|
|
@@ -3,3 +3,4 @@ import { _User, Maintenance_Ticket } from "../types";
|
|
|
3
3
|
export declare function getUsername(user: _User | undefined): string;
|
|
4
4
|
export declare function init(name: string): Promise<void>;
|
|
5
5
|
export declare function saveTicketData(data: SaveValues, user?: _User, overrideFetchOptions?: FetchOptions): Promise<Maintenance_Ticket>;
|
|
6
|
+
export declare function serializeTicketData(obj: any): any;
|
|
@@ -3,11 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getUsername = getUsername;
|
|
4
4
|
exports.init = init;
|
|
5
5
|
exports.saveTicketData = saveTicketData;
|
|
6
|
+
exports.serializeTicketData = serializeTicketData;
|
|
6
7
|
const parse_1 = require("parse");
|
|
7
8
|
const openservice_1 = require("../features/openservice");
|
|
8
9
|
const openware_1 = require("../features/openware");
|
|
9
10
|
const catchError_1 = require("../helper/catchError");
|
|
10
11
|
const types_1 = require("../types");
|
|
12
|
+
const openinc_openservice_ticket_data_1 = require("./openinc-openservice-ticket-data");
|
|
11
13
|
function getUsername(user) {
|
|
12
14
|
if (!user)
|
|
13
15
|
return "System";
|
|
@@ -184,14 +186,6 @@ async function saveTicketData(data, user, overrideFetchOptions) {
|
|
|
184
186
|
owticketobj.state = fetchedSavedState;
|
|
185
187
|
}
|
|
186
188
|
}
|
|
187
|
-
if (data.media && data.media.length > 0) {
|
|
188
|
-
try {
|
|
189
|
-
await (0, openservice_1.saveMedia)(ticket, data.media, fetchOptions);
|
|
190
|
-
}
|
|
191
|
-
catch (error) {
|
|
192
|
-
console.error(`Error saving media for ticket ${ticket.id}:`, error);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
189
|
if (data.material) {
|
|
196
190
|
try {
|
|
197
191
|
await (0, openservice_1.saveMaterial)(ticket, data.material, fetchOptions);
|
|
@@ -250,6 +244,25 @@ async function saveTicketData(data, user, overrideFetchOptions) {
|
|
|
250
244
|
? ticketsource.get("source").get("tag")
|
|
251
245
|
: "");
|
|
252
246
|
}
|
|
247
|
+
// save TicketData in TicketData Table
|
|
248
|
+
const [ticketData] = await (0, openinc_openservice_ticket_data_1.getTicketData)([ticket]);
|
|
249
|
+
if (ticketData) {
|
|
250
|
+
const ticketDataEntry = new types_1.Maintenance_Ticket_Data({
|
|
251
|
+
ticket: ticket,
|
|
252
|
+
data: serializeTicketData(ticketData),
|
|
253
|
+
tenant: ticket.get("tenant"),
|
|
254
|
+
});
|
|
255
|
+
const fallbackACL = new Parse.ACL();
|
|
256
|
+
fallbackACL.setPublicReadAccess(false);
|
|
257
|
+
fallbackACL.setPublicWriteAccess(false);
|
|
258
|
+
const user = ticket.get("user");
|
|
259
|
+
if (user) {
|
|
260
|
+
fallbackACL.setReadAccess(user.id, true);
|
|
261
|
+
fallbackACL.setWriteAccess(user.id, true);
|
|
262
|
+
}
|
|
263
|
+
ticketDataEntry.setACL(ticket.getACL() ?? ticket.get("tenant")?.getACL() ?? fallbackACL);
|
|
264
|
+
await ticketDataEntry.save(null, { useMasterKey: true });
|
|
265
|
+
}
|
|
253
266
|
return ticket;
|
|
254
267
|
}
|
|
255
268
|
/**
|
|
@@ -377,3 +390,24 @@ async function publishToOpenWare(owticketobj, ticket, source) {
|
|
|
377
390
|
console.error("Error publishing ticket to openware", error);
|
|
378
391
|
}
|
|
379
392
|
}
|
|
393
|
+
function serializeTicketData(obj) {
|
|
394
|
+
if (!obj)
|
|
395
|
+
return obj;
|
|
396
|
+
// Parse.Object → convert to JSON
|
|
397
|
+
if (obj instanceof Parse.Object) {
|
|
398
|
+
return { ...obj.toJSON(), className: obj.className };
|
|
399
|
+
}
|
|
400
|
+
// Array
|
|
401
|
+
if (Array.isArray(obj)) {
|
|
402
|
+
return obj.map(serializeTicketData);
|
|
403
|
+
}
|
|
404
|
+
// Plain object
|
|
405
|
+
if (typeof obj === "object") {
|
|
406
|
+
const out = {};
|
|
407
|
+
for (const key in obj) {
|
|
408
|
+
out[key] = serializeTicketData(obj[key]);
|
|
409
|
+
}
|
|
410
|
+
return out;
|
|
411
|
+
}
|
|
412
|
+
return obj; // primitive values
|
|
413
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TicketData } from "../features/openservice";
|
|
1
2
|
import { Maintenance_Ticket, Maintenance_Ticket_Material, Maintenance_Ticket_Source } from "../types";
|
|
2
3
|
type FilterParams = {
|
|
3
4
|
attribute: "objectId" | "state" | "issuecategory" | "user" | "role" | "userRole" | "createdUser" | "source" | "project" | "title";
|
|
@@ -21,6 +22,7 @@ export type FetchParams = {
|
|
|
21
22
|
config: Array<FetchObject>;
|
|
22
23
|
};
|
|
23
24
|
export declare function init(name: string): Promise<void>;
|
|
25
|
+
export declare function getTicketData(tickets: Maintenance_Ticket[]): Promise<TicketData[]>;
|
|
24
26
|
/**
|
|
25
27
|
* Fetches the material for a ticket
|
|
26
28
|
* @param ticket
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.init = init;
|
|
4
|
+
exports.getTicketData = getTicketData;
|
|
4
5
|
exports.getTicketMaterial = getTicketMaterial;
|
|
5
6
|
exports.getTicketSource = getTicketSource;
|
|
6
7
|
exports.arrayToDistinct = arrayToDistinct;
|
|
@@ -107,6 +108,7 @@ async function getTicketData(tickets) {
|
|
|
107
108
|
const material = getTicketMaterial(ticket);
|
|
108
109
|
const project = (0, catchError_1.catchError)(ticket.get("project")?.fetch({ useMasterKey: true }) ??
|
|
109
110
|
new Promise((res) => res(undefined)));
|
|
111
|
+
const assets = getTicketAssets(ticket);
|
|
110
112
|
const dataPromises = await Promise.all([
|
|
111
113
|
downtimes,
|
|
112
114
|
duedate,
|
|
@@ -119,6 +121,7 @@ async function getTicketData(tickets) {
|
|
|
119
121
|
messages,
|
|
120
122
|
material,
|
|
121
123
|
project,
|
|
124
|
+
assets,
|
|
122
125
|
]);
|
|
123
126
|
return {
|
|
124
127
|
ticket: ticket,
|
|
@@ -135,10 +138,16 @@ async function getTicketData(tickets) {
|
|
|
135
138
|
assignedTo: [...assignedusers, ...assignedroles],
|
|
136
139
|
material: dataPromises[9],
|
|
137
140
|
project: dataPromises[10]?.[1],
|
|
141
|
+
assets: dataPromises[11],
|
|
138
142
|
};
|
|
139
143
|
});
|
|
140
144
|
return await Promise.all(ticketDataPromises);
|
|
141
145
|
}
|
|
146
|
+
async function getTicketAssets(ticket) {
|
|
147
|
+
return await new Parse.Query(types_1.Assets)
|
|
148
|
+
.equalTo("context", `ticket-media-${ticket.id}`)
|
|
149
|
+
.find({ useMasterKey: true });
|
|
150
|
+
}
|
|
142
151
|
/**
|
|
143
152
|
* Fetches the downtime for a ticket
|
|
144
153
|
* @param ticket
|
|
@@ -7,7 +7,7 @@ async function init() {
|
|
|
7
7
|
(0, __1.beforeSaveHook)(types_1.MIAAS_MDSEndpoint, async (request) => {
|
|
8
8
|
const { object, original, user } = request;
|
|
9
9
|
await (0, __1.defaultHandler)(request);
|
|
10
|
-
await (0, __1.defaultAclHandler)(request);
|
|
10
|
+
await (0, __1.defaultAclHandler)(request, { allowCustomACL: true });
|
|
11
11
|
// TODO
|
|
12
12
|
});
|
|
13
13
|
(0, __1.afterSaveHook)(types_1.MIAAS_MDSEndpoint, async (request) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function init(): Promise<void>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.init = init;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const types_1 = require("../types");
|
|
6
|
+
async function init() {
|
|
7
|
+
const schema = await Parse.Schema.all();
|
|
8
|
+
const blacklistedClasses = [
|
|
9
|
+
"_Session",
|
|
10
|
+
"_Installation",
|
|
11
|
+
...(process.env.OPENINC_PARSE_CHANGELOG_BLACKLIST || "")
|
|
12
|
+
.split(",")
|
|
13
|
+
.map((c) => c.trim())
|
|
14
|
+
.filter((c) => c.length > 0),
|
|
15
|
+
];
|
|
16
|
+
console.log(`ChangeLog blacklisted classes: ${blacklistedClasses.join(", ") || "None"}`);
|
|
17
|
+
(0, __1.beforeSaveHook)(types_1.Changelog.className, async (request) => {
|
|
18
|
+
const { object, original, user } = request;
|
|
19
|
+
await (0, __1.defaultHandler)(request);
|
|
20
|
+
await (0, __1.defaultAclHandler)(request);
|
|
21
|
+
if (user && object && object.getACL()) {
|
|
22
|
+
object.getACL().setReadAccess(user.id, true);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
schema.forEach((classSchema) => {
|
|
26
|
+
if (!classSchema.className ||
|
|
27
|
+
classSchema.className === types_1.Changelog.className ||
|
|
28
|
+
classSchema.className === types_1.Permission.className) {
|
|
29
|
+
console.log(`Skipping ChangeLog hook for class ${classSchema.className}`);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (blacklistedClasses.includes(classSchema.className)) {
|
|
33
|
+
console.log(`Class ${classSchema.className} is blacklisted from ChangeLog entries.`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log(`Registering ChangeLog hook for class ${classSchema?.className || "CLASSNAME_MISSING"}`);
|
|
37
|
+
(0, __1.beforeDeleteHook)(classSchema.className, async (request) => {
|
|
38
|
+
console.log(`Creating ChangeLog entry for DELETE on class ${classSchema.className} and object ${request.object.id}`);
|
|
39
|
+
try {
|
|
40
|
+
const { object, user, master } = request;
|
|
41
|
+
if (blacklistedClasses.includes(classSchema.className)) {
|
|
42
|
+
console.log(`Skipping ChangeLog entry for class ${classSchema.className} and object ${object.id} due to blacklisted class.`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const changelog = new types_1.Changelog();
|
|
46
|
+
changelog.set("nameOfClass", classSchema.className);
|
|
47
|
+
changelog.set("changedObject", object.id);
|
|
48
|
+
changelog.set("operation", "delete");
|
|
49
|
+
changelog.set("actingUser", user);
|
|
50
|
+
changelog.set("masterkey", master ? true : false);
|
|
51
|
+
changelog.set("context", null);
|
|
52
|
+
changelog.set("value", null);
|
|
53
|
+
changelog.set("original", object ? object.toJSON() : null);
|
|
54
|
+
await changelog.save({}, { useMasterKey: true });
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
console.error("\n" + "-".repeat(80) + "\n", "Error creating ChangeLog entry for DELETE on class " +
|
|
58
|
+
classSchema.className +
|
|
59
|
+
" and object " +
|
|
60
|
+
(request.object ? request.object.id : "unknown") +
|
|
61
|
+
":", JSON.stringify(e), "\n" + "-".repeat(80) + "\n");
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
(0, __1.afterSaveHook)(classSchema.className, async (request) => {
|
|
65
|
+
console.log(`Creating ChangeLog entry for class ${classSchema.className} and object ${request.object.id}`);
|
|
66
|
+
try {
|
|
67
|
+
const { object, original, user, master, context } = request;
|
|
68
|
+
if (context.skipChangelog ||
|
|
69
|
+
blacklistedClasses.includes(classSchema.className)) {
|
|
70
|
+
console.log(`Skipping ChangeLog entry for class ${classSchema.className} and object ${object.id} due to ${context.skipChangelog ? "context flag" : "blacklisted class"}.`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const changelog = new types_1.Changelog();
|
|
74
|
+
changelog.set("nameOfClass", classSchema.className);
|
|
75
|
+
changelog.set("changedObject", object.id);
|
|
76
|
+
changelog.set("operation", original ? "update" : "create");
|
|
77
|
+
changelog.set("actingUser", user);
|
|
78
|
+
changelog.set("masterkey", master ? true : false);
|
|
79
|
+
changelog.set("context", context ? context : null);
|
|
80
|
+
changelog.set("value", object ? object.toJSON() : null);
|
|
81
|
+
changelog.set("original", original ? original.toJSON() : null);
|
|
82
|
+
await changelog.save({}, { useMasterKey: true });
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
console.error("\n" + "-".repeat(80) + "\n", "Error creating ChangeLog entry for class " +
|
|
86
|
+
classSchema.className +
|
|
87
|
+
" and object " +
|
|
88
|
+
(request.object ? request.object.id : "unknown") +
|
|
89
|
+
":", JSON.stringify(e), "\n" + "-".repeat(80) + "\n");
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
package/dist/hooks/_init.js
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { _User } from "./_User";
|
|
2
|
+
export interface ChangelogAttributes {
|
|
3
|
+
id: string;
|
|
4
|
+
changedObject: string;
|
|
5
|
+
createdAt: Date;
|
|
6
|
+
updatedAt: Date;
|
|
7
|
+
context?: any | undefined;
|
|
8
|
+
masterkey: boolean;
|
|
9
|
+
nameOfClass: string;
|
|
10
|
+
operation: string;
|
|
11
|
+
original?: any | undefined;
|
|
12
|
+
actingUser?: _User | undefined;
|
|
13
|
+
value?: any | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare class Changelog extends Parse.Object<ChangelogAttributes> {
|
|
16
|
+
static className: string;
|
|
17
|
+
constructor(data?: Partial<ChangelogAttributes>);
|
|
18
|
+
get context(): any | undefined;
|
|
19
|
+
set context(value: any | undefined);
|
|
20
|
+
get masterkey(): boolean;
|
|
21
|
+
set masterkey(value: boolean);
|
|
22
|
+
get nameOfClass(): string;
|
|
23
|
+
set nameOfClass(value: string);
|
|
24
|
+
get operation(): string;
|
|
25
|
+
set operation(value: string);
|
|
26
|
+
get original(): any | undefined;
|
|
27
|
+
set original(value: any | undefined);
|
|
28
|
+
get actingUser(): _User | undefined;
|
|
29
|
+
set actingUser(value: _User | undefined);
|
|
30
|
+
get value(): any | undefined;
|
|
31
|
+
set value(value: any | undefined);
|
|
32
|
+
get changedObject(): string;
|
|
33
|
+
set changedObject(value: string);
|
|
34
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Changelog = void 0;
|
|
4
|
+
class Changelog extends Parse.Object {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
super("OD3_Changelog", data);
|
|
7
|
+
}
|
|
8
|
+
get context() {
|
|
9
|
+
return super.get("context");
|
|
10
|
+
}
|
|
11
|
+
set context(value) {
|
|
12
|
+
super.set("context", value);
|
|
13
|
+
}
|
|
14
|
+
get masterkey() {
|
|
15
|
+
return super.get("masterkey");
|
|
16
|
+
}
|
|
17
|
+
set masterkey(value) {
|
|
18
|
+
super.set("masterkey", value);
|
|
19
|
+
}
|
|
20
|
+
get nameOfClass() {
|
|
21
|
+
return super.get("nameOfClass");
|
|
22
|
+
}
|
|
23
|
+
set nameOfClass(value) {
|
|
24
|
+
super.set("nameOfClass", value);
|
|
25
|
+
}
|
|
26
|
+
get operation() {
|
|
27
|
+
return super.get("operation");
|
|
28
|
+
}
|
|
29
|
+
set operation(value) {
|
|
30
|
+
super.set("operation", value);
|
|
31
|
+
}
|
|
32
|
+
get original() {
|
|
33
|
+
return super.get("original");
|
|
34
|
+
}
|
|
35
|
+
set original(value) {
|
|
36
|
+
super.set("original", value);
|
|
37
|
+
}
|
|
38
|
+
get actingUser() {
|
|
39
|
+
return super.get("actingUser");
|
|
40
|
+
}
|
|
41
|
+
set actingUser(value) {
|
|
42
|
+
super.set("actingUser", value);
|
|
43
|
+
}
|
|
44
|
+
get value() {
|
|
45
|
+
return super.get("value");
|
|
46
|
+
}
|
|
47
|
+
set value(value) {
|
|
48
|
+
super.set("value", value);
|
|
49
|
+
}
|
|
50
|
+
get changedObject() {
|
|
51
|
+
return super.get("changedObject");
|
|
52
|
+
}
|
|
53
|
+
set changedObject(value) {
|
|
54
|
+
super.set("changedObject", value);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.Changelog = Changelog;
|
|
58
|
+
Changelog.className = "OD3_Changelog";
|
|
59
|
+
Parse.Object.registerSubclass("OD3_Changelog", Changelog);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Tenant } from "./Tenant";
|
|
2
|
+
import type { Maintenance_Ticket } from "./Maintenance_Ticket";
|
|
3
|
+
import { TicketData } from "../features/openservice";
|
|
4
|
+
export interface Maintenance_Ticket_DataAttributes {
|
|
5
|
+
id: string;
|
|
6
|
+
objectId: string;
|
|
7
|
+
createdAt: Date;
|
|
8
|
+
updatedAt: Date;
|
|
9
|
+
data: TicketData;
|
|
10
|
+
tenant?: Tenant | undefined;
|
|
11
|
+
ticket: Maintenance_Ticket;
|
|
12
|
+
}
|
|
13
|
+
export declare class Maintenance_Ticket_Data extends Parse.Object<Maintenance_Ticket_DataAttributes> {
|
|
14
|
+
static className: string;
|
|
15
|
+
constructor(data?: Partial<Maintenance_Ticket_DataAttributes>);
|
|
16
|
+
get data(): TicketData;
|
|
17
|
+
set data(value: TicketData);
|
|
18
|
+
get tenant(): Tenant | undefined;
|
|
19
|
+
set tenant(value: Tenant | undefined);
|
|
20
|
+
get ticket(): Maintenance_Ticket;
|
|
21
|
+
set ticket(value: Maintenance_Ticket);
|
|
22
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Maintenance_Ticket_Data = void 0;
|
|
4
|
+
class Maintenance_Ticket_Data extends Parse.Object {
|
|
5
|
+
constructor(data) {
|
|
6
|
+
super("OD3_Maintenance_Ticket_Data", data);
|
|
7
|
+
}
|
|
8
|
+
get data() {
|
|
9
|
+
return super.get("data");
|
|
10
|
+
}
|
|
11
|
+
set data(value) {
|
|
12
|
+
super.set("data", value);
|
|
13
|
+
}
|
|
14
|
+
get tenant() {
|
|
15
|
+
return super.get("tenant");
|
|
16
|
+
}
|
|
17
|
+
set tenant(value) {
|
|
18
|
+
super.set("tenant", value);
|
|
19
|
+
}
|
|
20
|
+
get ticket() {
|
|
21
|
+
return super.get("ticket");
|
|
22
|
+
}
|
|
23
|
+
set ticket(value) {
|
|
24
|
+
super.set("ticket", value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.Maintenance_Ticket_Data = Maintenance_Ticket_Data;
|
|
28
|
+
Maintenance_Ticket_Data.className = "OD3_Maintenance_Ticket_Data";
|
|
29
|
+
Parse.Object.registerSubclass("OD3_Maintenance_Ticket_Data", Maintenance_Ticket_Data);
|
package/dist/types/index.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export { BDE_Result } from "./BDE_Result";
|
|
|
20
20
|
export type { BDE_ResultAttributes } from "./BDE_Result";
|
|
21
21
|
export { BDE_Unit } from "./BDE_Unit";
|
|
22
22
|
export type { BDE_UnitAttributes } from "./BDE_Unit";
|
|
23
|
+
export { Changelog } from "./Changelog";
|
|
24
|
+
export type { ChangelogAttributes } from "./Changelog";
|
|
23
25
|
export { Company } from "./Company";
|
|
24
26
|
export type { CompanyAttributes } from "./Company";
|
|
25
27
|
export { Config } from "./Config";
|
|
@@ -136,6 +138,8 @@ export { Maintenance_Ticket } from "./Maintenance_Ticket";
|
|
|
136
138
|
export type { Maintenance_TicketAttributes } from "./Maintenance_Ticket";
|
|
137
139
|
export { Maintenance_Ticket_Assignment } from "./Maintenance_Ticket_Assignment";
|
|
138
140
|
export type { Maintenance_Ticket_AssignmentAttributes } from "./Maintenance_Ticket_Assignment";
|
|
141
|
+
export { Maintenance_Ticket_Data } from "./Maintenance_Ticket_Data";
|
|
142
|
+
export type { Maintenance_Ticket_DataAttributes } from "./Maintenance_Ticket_Data";
|
|
139
143
|
export { Maintenance_Ticket_FormConfig } from "./Maintenance_Ticket_FormConfig";
|
|
140
144
|
export type { Maintenance_Ticket_FormConfigAttributes } from "./Maintenance_Ticket_FormConfig";
|
|
141
145
|
export { Maintenance_Ticket_Issuecategory } from "./Maintenance_Ticket_Issuecategory";
|
package/dist/types/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = void 0;
|
|
3
|
+
exports.Mail_Groups = exports.MailTemplate = exports.ML_DataSelection = exports.MIAAS_MDSEndpoint = exports.MES_OrderPlan = exports.MES_Order = exports.MES_Article = 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.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.Documentation_Document = exports.Documentation_Config = exports.Documentation_Category = exports.Dashboard = exports.Core_Token = exports.Core_Email = exports.Contact = exports.Config = exports.Company = exports.Changelog = exports.BDE_Unit = exports.BDE_Result = exports.BDE_Page = exports.BDE_ListEntry = exports.BDE_List = exports.BDE_Form = exports.Attachment = exports.Assets = exports.AlarmWebhook = exports.AlarmAction = exports.Alarm = void 0;
|
|
4
|
+
exports.TenantTrustedDomain = exports.TenantMeta = exports.Tenant = exports.SourceMeta = exports.Source = exports.Share = exports.Report = exports.Push = exports.Permission = exports.OWPlcItem = exports.OWPlcDevice = exports.Notification_Setting = exports.Notification = exports.NavigationItem = exports.NavigationGroup = exports.Monitoring_Slideshow = exports.Monitoring_ReportImage = exports.Monitoring_ParseTableSensor = exports.Monitoring_Jobs = exports.Monitoring_DataHierachies = exports.Maintenance_Ticket_Title = exports.Maintenance_Ticket_Source = exports.Maintenance_Ticket_QR_Code = exports.Maintenance_Ticket_Project = exports.Maintenance_Ticket_Material = exports.Maintenance_Ticket_Kanban_State_Current = exports.Maintenance_Ticket_Kanban_State = exports.Maintenance_Ticket_Issuecategory = exports.Maintenance_Ticket_FormConfig = exports.Maintenance_Ticket_Data = exports.Maintenance_Ticket_Assignment = exports.Maintenance_Ticket = exports.Maintenance_Source_File = exports.Maintenance_Schedule_Template = exports.Maintenance_Schedule_Step = exports.Maintenance_Schedule_Execution_Step = exports.Maintenance_Schedule_Execution = exports.Maintenance_Schedule = exports.Maintenance_Restriction = exports.Maintenance_Project = exports.Maintenance_Priority = exports.Maintenance_Order = exports.Maintenance_Message = exports.Maintenance_Media = exports.Maintenance_Kanban_State = exports.Maintenance_Item = exports.Maintenance_Issuecategory = exports.Maintenance_Frequency = exports.Maintenance_Duedate = exports.Maintenance_Downtime = void 0;
|
|
5
|
+
exports.WidgetPreset = exports.Widget = exports.WebPush = exports.VirtualKPI = exports.User_Setting = exports.UserData = void 0;
|
|
6
6
|
var Alarm_1 = require("./Alarm");
|
|
7
7
|
Object.defineProperty(exports, "Alarm", { enumerable: true, get: function () { return Alarm_1.Alarm; } });
|
|
8
8
|
var AlarmAction_1 = require("./AlarmAction");
|
|
@@ -25,6 +25,8 @@ var BDE_Result_1 = require("./BDE_Result");
|
|
|
25
25
|
Object.defineProperty(exports, "BDE_Result", { enumerable: true, get: function () { return BDE_Result_1.BDE_Result; } });
|
|
26
26
|
var BDE_Unit_1 = require("./BDE_Unit");
|
|
27
27
|
Object.defineProperty(exports, "BDE_Unit", { enumerable: true, get: function () { return BDE_Unit_1.BDE_Unit; } });
|
|
28
|
+
var Changelog_1 = require("./Changelog");
|
|
29
|
+
Object.defineProperty(exports, "Changelog", { enumerable: true, get: function () { return Changelog_1.Changelog; } });
|
|
28
30
|
var Company_1 = require("./Company");
|
|
29
31
|
Object.defineProperty(exports, "Company", { enumerable: true, get: function () { return Company_1.Company; } });
|
|
30
32
|
var Config_1 = require("./Config");
|
|
@@ -141,6 +143,8 @@ var Maintenance_Ticket_1 = require("./Maintenance_Ticket");
|
|
|
141
143
|
Object.defineProperty(exports, "Maintenance_Ticket", { enumerable: true, get: function () { return Maintenance_Ticket_1.Maintenance_Ticket; } });
|
|
142
144
|
var Maintenance_Ticket_Assignment_1 = require("./Maintenance_Ticket_Assignment");
|
|
143
145
|
Object.defineProperty(exports, "Maintenance_Ticket_Assignment", { enumerable: true, get: function () { return Maintenance_Ticket_Assignment_1.Maintenance_Ticket_Assignment; } });
|
|
146
|
+
var Maintenance_Ticket_Data_1 = require("./Maintenance_Ticket_Data");
|
|
147
|
+
Object.defineProperty(exports, "Maintenance_Ticket_Data", { enumerable: true, get: function () { return Maintenance_Ticket_Data_1.Maintenance_Ticket_Data; } });
|
|
144
148
|
var Maintenance_Ticket_FormConfig_1 = require("./Maintenance_Ticket_FormConfig");
|
|
145
149
|
Object.defineProperty(exports, "Maintenance_Ticket_FormConfig", { enumerable: true, get: function () { return Maintenance_Ticket_FormConfig_1.Maintenance_Ticket_FormConfig; } });
|
|
146
150
|
var Maintenance_Ticket_Issuecategory_1 = require("./Maintenance_Ticket_Issuecategory");
|
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openinc/parse-server-opendash",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.31.25",
|
|
4
4
|
"description": "Parse Server Cloud Code for open.INC Stack.",
|
|
5
|
-
"packageManager": "pnpm@10.
|
|
5
|
+
"packageManager": "pnpm@10.26.2",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"parse",
|
|
8
8
|
"opendash"
|
|
9
9
|
],
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public",
|
|
12
|
+
"registry": "https://registry.npmjs.org/"
|
|
13
|
+
},
|
|
10
14
|
"repository": {
|
|
11
15
|
"type": "git",
|
|
12
16
|
"url": "git+https://github.com/open-inc/node-parse-server-opendash.git"
|
|
@@ -64,7 +68,7 @@
|
|
|
64
68
|
"dependencies": {
|
|
65
69
|
"@openinc/parse-server-schema": "^3.0.6",
|
|
66
70
|
"@opentelemetry/api-logs": "^0.208.0",
|
|
67
|
-
"@opentelemetry/auto-instrumentations-node": "^0.67.
|
|
71
|
+
"@opentelemetry/auto-instrumentations-node": "^0.67.3",
|
|
68
72
|
"@opentelemetry/exporter-logs-otlp-http": "^0.208.0",
|
|
69
73
|
"@opentelemetry/exporter-trace-otlp-http": "^0.208.0",
|
|
70
74
|
"@opentelemetry/resources": "^2.2.0",
|
|
@@ -72,21 +76,21 @@
|
|
|
72
76
|
"@opentelemetry/sdk-node": "^0.208.0",
|
|
73
77
|
"@opentelemetry/semantic-conventions": "^1.38.0",
|
|
74
78
|
"@opentelemetry/winston-transport": "^0.19.0",
|
|
75
|
-
"cron": "^4.
|
|
79
|
+
"cron": "^4.4.0",
|
|
76
80
|
"dayjs": "^1.11.19",
|
|
77
|
-
"fast-equals": "^5.
|
|
78
|
-
"i18next": "^25.
|
|
81
|
+
"fast-equals": "^5.4.0",
|
|
82
|
+
"i18next": "^25.7.3",
|
|
79
83
|
"i18next-fs-backend": "^2.6.1",
|
|
80
|
-
"jsonwebtoken": "^9.0.
|
|
84
|
+
"jsonwebtoken": "^9.0.3",
|
|
81
85
|
"jwks-rsa": "^3.2.0",
|
|
82
|
-
"nodemailer": "^7.0.
|
|
86
|
+
"nodemailer": "^7.0.12",
|
|
83
87
|
"nunjucks": "^3.2.4",
|
|
84
|
-
"parse-server": "^
|
|
88
|
+
"parse-server": "^9.1.1",
|
|
85
89
|
"pdf-img-convert": "2.0.0",
|
|
86
90
|
"semantic-release": "^25.0.2",
|
|
87
91
|
"table": "^6.9.0",
|
|
88
92
|
"web-push": "^3.6.7",
|
|
89
|
-
"winston": "^3.
|
|
93
|
+
"winston": "^3.19.0"
|
|
90
94
|
},
|
|
91
95
|
"devDependencies": {
|
|
92
96
|
"@semantic-release/changelog": "^6.0.3",
|
|
@@ -94,10 +98,10 @@
|
|
|
94
98
|
"@semantic-release/exec": "^7.1.0",
|
|
95
99
|
"@semantic-release/git": "^10.0.1",
|
|
96
100
|
"@semantic-release/github": "^12.0.2",
|
|
97
|
-
"@semantic-release/npm": "^13.1.
|
|
101
|
+
"@semantic-release/npm": "^13.1.3",
|
|
98
102
|
"@semantic-release/release-notes-generator": "^14.1.0",
|
|
99
103
|
"@types/jsonwebtoken": "^9.0.10",
|
|
100
|
-
"@types/node": "^24.10.
|
|
104
|
+
"@types/node": "^24.10.4",
|
|
101
105
|
"@types/nodemailer": "^7.0.4",
|
|
102
106
|
"@types/nunjucks": "^3.2.6",
|
|
103
107
|
"@types/parse": "^3.0.9",
|
|
@@ -106,7 +110,7 @@
|
|
|
106
110
|
"concurrently": "^9.2.1",
|
|
107
111
|
"semantic-release-export-data": "^1.2.0",
|
|
108
112
|
"ts-node": "^10.9.2",
|
|
109
|
-
"typedoc": "^0.28.
|
|
113
|
+
"typedoc": "^0.28.15",
|
|
110
114
|
"typedoc-plugin-markdown": "^4.9.0",
|
|
111
115
|
"typescript": "^5.9.3"
|
|
112
116
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"actingUser": {
|
|
4
|
+
"type": "Pointer",
|
|
5
|
+
"targetClass": "_User",
|
|
6
|
+
"required": false
|
|
7
|
+
},
|
|
8
|
+
"masterkey": {
|
|
9
|
+
"type": "Boolean",
|
|
10
|
+
"required": true,
|
|
11
|
+
"default": false
|
|
12
|
+
},
|
|
13
|
+
"context": {
|
|
14
|
+
"type": "Object",
|
|
15
|
+
"required": false
|
|
16
|
+
},
|
|
17
|
+
"nameOfClass": {
|
|
18
|
+
"type": "String",
|
|
19
|
+
"required": true
|
|
20
|
+
},
|
|
21
|
+
"changedObject": {
|
|
22
|
+
"type": "String",
|
|
23
|
+
"required": true
|
|
24
|
+
},
|
|
25
|
+
"operation": {
|
|
26
|
+
"type": "String",
|
|
27
|
+
"required": true
|
|
28
|
+
},
|
|
29
|
+
"value": {
|
|
30
|
+
"type": "Object",
|
|
31
|
+
"required": false
|
|
32
|
+
},
|
|
33
|
+
"original": {
|
|
34
|
+
"type": "Object",
|
|
35
|
+
"required": false
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"classLevelPermissions": {
|
|
39
|
+
"find": {
|
|
40
|
+
"requiresAuthentication": true,
|
|
41
|
+
"role:od-admin": true
|
|
42
|
+
},
|
|
43
|
+
"count": {
|
|
44
|
+
"requiresAuthentication": true,
|
|
45
|
+
"role:od-admin": true
|
|
46
|
+
},
|
|
47
|
+
"get": {
|
|
48
|
+
"requiresAuthentication": true,
|
|
49
|
+
"role:od-admin": true
|
|
50
|
+
},
|
|
51
|
+
"create": {
|
|
52
|
+
"role:od-admin": true
|
|
53
|
+
},
|
|
54
|
+
"update": {
|
|
55
|
+
"requiresAuthentication": true,
|
|
56
|
+
"role:od-admin": true
|
|
57
|
+
},
|
|
58
|
+
"delete": {
|
|
59
|
+
"requiresAuthentication": true,
|
|
60
|
+
"role:od-admin": true
|
|
61
|
+
},
|
|
62
|
+
"addField": {
|
|
63
|
+
"role:od-admin": true
|
|
64
|
+
},
|
|
65
|
+
"protectedFields": {
|
|
66
|
+
"*": []
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fields": {
|
|
3
|
+
"data": {
|
|
4
|
+
"type": "Object",
|
|
5
|
+
"required": true
|
|
6
|
+
},
|
|
7
|
+
"tenant": {
|
|
8
|
+
"type": "Pointer",
|
|
9
|
+
"targetClass": "{{PREFIX}}Tenant",
|
|
10
|
+
"required": false
|
|
11
|
+
},
|
|
12
|
+
"ticket": {
|
|
13
|
+
"type": "Pointer",
|
|
14
|
+
"targetClass": "{{PREFIX}}Maintenance_Ticket",
|
|
15
|
+
"required": true
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"classLevelPermissions": {
|
|
19
|
+
"ACL": {
|
|
20
|
+
"*": {
|
|
21
|
+
"read": true,
|
|
22
|
+
"write": true
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"find": {
|
|
26
|
+
"*": true
|
|
27
|
+
},
|
|
28
|
+
"count": {
|
|
29
|
+
"*": true
|
|
30
|
+
},
|
|
31
|
+
"get": {
|
|
32
|
+
"*": true
|
|
33
|
+
},
|
|
34
|
+
"create": {
|
|
35
|
+
"*": true
|
|
36
|
+
},
|
|
37
|
+
"update": {
|
|
38
|
+
"*": true
|
|
39
|
+
},
|
|
40
|
+
"delete": {
|
|
41
|
+
"*": true
|
|
42
|
+
},
|
|
43
|
+
"addField": {
|
|
44
|
+
"*": true
|
|
45
|
+
},
|
|
46
|
+
"protectedFields": {
|
|
47
|
+
"*": []
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/dist/jobs/index.d.ts
DELETED
|
File without changes
|
package/dist/jobs/index.js
DELETED