@openinc/parse-server-opendash 4.0.10 → 4.0.12

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 (27) hide show
  1. package/dist/features/openservice/index.d.ts +8 -7
  2. package/dist/features/openservice/index.js +19 -5
  3. package/dist/features/openservice/messages/initMessages.js +4 -2
  4. package/dist/features/openservice/schedules/mappings/checkStatus.d.ts +1 -1
  5. package/dist/features/openservice/schedules/mappings/checkStatus.js +3 -3
  6. package/dist/features/openservice/types/ScheduleTypes.d.ts +24 -0
  7. package/dist/features/openservice/types/ScheduleTypes.js +2 -0
  8. package/dist/features/translations/services/initTranslation.js +40 -7
  9. package/dist/types/Documentation_Category.d.ts +3 -3
  10. package/dist/types/Documentation_Category.js +6 -6
  11. package/dist/types/Documentation_Config.d.ts +5 -5
  12. package/dist/types/Documentation_Document.d.ts +3 -3
  13. package/dist/types/Documentation_Document.js +6 -6
  14. package/dist/types/Maintenance_Message.d.ts +4 -3
  15. package/dist/types/Maintenance_Schedule_Execution.d.ts +4 -3
  16. package/dist/types/Maintenance_Schedule_Execution_Step.d.ts +4 -3
  17. package/dist/types/Maintenance_Schedule_Template.d.ts +4 -3
  18. package/dist/types/Maintenance_Ticket.d.ts +4 -3
  19. package/dist/types/VirtualKPI.d.ts +7 -0
  20. package/dist/types/VirtualKPI.js +12 -0
  21. package/package.json +10 -10
  22. package/schema/Documentation_Category.json +8 -0
  23. package/schema/Documentation_Config.json +6 -6
  24. package/schema/Documentation_Document.json +8 -0
  25. package/schema/VirtualKPI.json +10 -0
  26. package/dist/features/openservice/functions/saveMedia.d.ts +0 -3
  27. package/dist/features/openservice/functions/saveMedia.js +0 -17
@@ -1,9 +1,3 @@
1
- export { type FetchOptions } from "./types/FetchOptions.js";
2
- export type { Material } from "./types/Material.js";
3
- export type { MessageData } from "./types/MessageData.js";
4
- export { OpenserviceMessageTranslationKeys } from "./types/OpenserviceTranslationKeys.js";
5
- export type { SaveValues } from "./types/SaveValues.js";
6
- export type { TicketData } from "./types/TicketData.js";
7
1
  export { assignUsersAndRoles } from "./functions/assignUsersAndRoles.js";
8
2
  export { getSourceMetaMap } from "./functions/getSourceMetaMap.js";
9
3
  export { getTicketObject } from "./functions/getTicketObject.js";
@@ -13,7 +7,6 @@ export { saveDuedate } from "./functions/saveDuedate.js";
13
7
  export { saveFrequency } from "./functions/saveFrequency.js";
14
8
  export { saveDefaultIssueCategory, saveIssueCategory, } from "./functions/saveIssuecategory.js";
15
9
  export { saveMaterial } from "./functions/saveMaterial.js";
16
- export { saveMedia } from "./functions/saveMedia.js";
17
10
  export { saveMessage } from "./functions/saveMessage.js";
18
11
  export { savePriority } from "./functions/savePriority.js";
19
12
  export { saveProject } from "./functions/saveProject.js";
@@ -23,3 +16,11 @@ export { saveDefaultState, saveState } from "./functions/saveState.js";
23
16
  export { saveTicketMeta } from "./functions/saveTicketMeta.js";
24
17
  export { saveTicketTitle } from "./functions/saveTicketTitle.js";
25
18
  export { init } from "./init.js";
19
+ export { type FetchOptions } from "./types/FetchOptions.js";
20
+ export type { Material } from "./types/Material.js";
21
+ export type { MessageData } from "./types/MessageData.js";
22
+ export { OpenserviceMessageTranslationKeys } from "./types/OpenserviceTranslationKeys.js";
23
+ export type { SaveValues } from "./types/SaveValues.js";
24
+ export * from "./types/ScheduleTypes.js";
25
+ export type { TicketData } from "./types/TicketData.js";
26
+ export * from "./types/TicketMeta.js";
@@ -1,8 +1,20 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.init = exports.saveTicketTitle = exports.saveTicketMeta = exports.saveState = exports.saveDefaultState = exports.saveSource = exports.saveRestriction = exports.saveProject = exports.savePriority = exports.saveMessage = exports.saveMedia = exports.saveMaterial = exports.saveIssueCategory = exports.saveDefaultIssueCategory = exports.saveFrequency = exports.saveDuedate = exports.saveDowntime = exports.saveDescription = exports.getTicketObject = exports.getSourceMetaMap = exports.assignUsersAndRoles = exports.OpenserviceMessageTranslationKeys = void 0;
4
- var OpenserviceTranslationKeys_js_1 = require("./types/OpenserviceTranslationKeys.js");
5
- Object.defineProperty(exports, "OpenserviceMessageTranslationKeys", { enumerable: true, get: function () { return OpenserviceTranslationKeys_js_1.OpenserviceMessageTranslationKeys; } });
17
+ exports.OpenserviceMessageTranslationKeys = exports.init = exports.saveTicketTitle = exports.saveTicketMeta = exports.saveState = exports.saveDefaultState = exports.saveSource = exports.saveRestriction = exports.saveProject = exports.savePriority = exports.saveMessage = exports.saveMaterial = exports.saveIssueCategory = exports.saveDefaultIssueCategory = exports.saveFrequency = exports.saveDuedate = exports.saveDowntime = exports.saveDescription = exports.getTicketObject = exports.getSourceMetaMap = exports.assignUsersAndRoles = void 0;
6
18
  var assignUsersAndRoles_js_1 = require("./functions/assignUsersAndRoles.js");
7
19
  Object.defineProperty(exports, "assignUsersAndRoles", { enumerable: true, get: function () { return assignUsersAndRoles_js_1.assignUsersAndRoles; } });
8
20
  var getSourceMetaMap_js_1 = require("./functions/getSourceMetaMap.js");
@@ -22,8 +34,6 @@ Object.defineProperty(exports, "saveDefaultIssueCategory", { enumerable: true, g
22
34
  Object.defineProperty(exports, "saveIssueCategory", { enumerable: true, get: function () { return saveIssuecategory_js_1.saveIssueCategory; } });
23
35
  var saveMaterial_js_1 = require("./functions/saveMaterial.js");
24
36
  Object.defineProperty(exports, "saveMaterial", { enumerable: true, get: function () { return saveMaterial_js_1.saveMaterial; } });
25
- var saveMedia_js_1 = require("./functions/saveMedia.js");
26
- Object.defineProperty(exports, "saveMedia", { enumerable: true, get: function () { return saveMedia_js_1.saveMedia; } });
27
37
  var saveMessage_js_1 = require("./functions/saveMessage.js");
28
38
  Object.defineProperty(exports, "saveMessage", { enumerable: true, get: function () { return saveMessage_js_1.saveMessage; } });
29
39
  var savePriority_js_1 = require("./functions/savePriority.js");
@@ -43,3 +53,7 @@ var saveTicketTitle_js_1 = require("./functions/saveTicketTitle.js");
43
53
  Object.defineProperty(exports, "saveTicketTitle", { enumerable: true, get: function () { return saveTicketTitle_js_1.saveTicketTitle; } });
44
54
  var init_js_1 = require("./init.js");
45
55
  Object.defineProperty(exports, "init", { enumerable: true, get: function () { return init_js_1.init; } });
56
+ var OpenserviceTranslationKeys_js_1 = require("./types/OpenserviceTranslationKeys.js");
57
+ Object.defineProperty(exports, "OpenserviceMessageTranslationKeys", { enumerable: true, get: function () { return OpenserviceTranslationKeys_js_1.OpenserviceMessageTranslationKeys; } });
58
+ __exportStar(require("./types/ScheduleTypes.js"), exports);
59
+ __exportStar(require("./types/TicketMeta.js"), exports);
@@ -35,7 +35,7 @@ async function initializeMessages() {
35
35
  await convertTicketDataToMessages();
36
36
  await convertScheduleExecutionToMessage();
37
37
  await sanatizeMessagesDisplayAt();
38
- console.log("Initializing messages is finished");
38
+ console.log("Initializing messages finished");
39
39
  }
40
40
  async function convertTicketDataToMessages() {
41
41
  // we get all ticket sources and convert them to messages
@@ -76,7 +76,9 @@ async function convertToMessage(config) {
76
76
  // check if ticket entry is valid, might be corrupted
77
77
  if (!config.isValueValid(entry) ||
78
78
  !entry.get("ticket") ||
79
- (previous && (!config.isValueValid(previous) || !previous.get("ticket"))))
79
+ (previous &&
80
+ (!config.isValueValid(previous) || !previous.get("ticket"))) ||
81
+ !entry.id)
80
82
  continue;
81
83
  const source = getSourceForTime(config.timeMap, entry.get("ticket").id, entry.get("createdAt"));
82
84
  const message = new index_js_1.Maintenance_Message({
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Checks the status field of each Maintenance_Schedule_Execution and updates it accordingly.
3
- * Ensures that if the status is not set, it defaults to "default", and if finishedAt is set, the status is "finished".
3
+ * Ensures that if the status is not set, it defaults to "default", and if finishedAt is set, the status is "completed".
4
4
  * @returns
5
5
  */
6
6
  export declare function checkStatus(): Promise<void>;
@@ -9,11 +9,11 @@ const catchError_js_1 = require("../../../../helper/catchError.js");
9
9
  const index_js_1 = require("../../../../types/index.js");
10
10
  /**
11
11
  * Checks the status field of each Maintenance_Schedule_Execution and updates it accordingly.
12
- * Ensures that if the status is not set, it defaults to "default", and if finishedAt is set, the status is "finished".
12
+ * Ensures that if the status is not set, it defaults to "default", and if finishedAt is set, the status is "completed".
13
13
  * @returns
14
14
  */
15
15
  async function checkStatus() {
16
- // Maintenance_Schedule_Execution: For every entry: check the field "status" and set it to "default" if not set/undefined or set to "finished" if field "finishedAt" is set
16
+ // Maintenance_Schedule_Execution: For every entry: check the field "status" and set it to "default" if not set/undefined or set to "completed" if field "finishedAt" is set
17
17
  const [error, executions] = await (0, catchError_js_1.catchError)(new node_1.default.Query(index_js_1.Maintenance_Schedule_Execution).findAll({
18
18
  useMasterKey: true,
19
19
  }));
@@ -28,7 +28,7 @@ async function checkStatus() {
28
28
  execution.set("status", "default");
29
29
  }
30
30
  else if (finishedAt) {
31
- execution.set("status", "finished");
31
+ execution.set("status", "completed");
32
32
  }
33
33
  await execution.save(null, { useMasterKey: true });
34
34
  }
@@ -0,0 +1,24 @@
1
+ import dayjs from "dayjs";
2
+ import { Maintenance_Schedule, Maintenance_Schedule_Step, Maintenance_Schedule_Template, Source } from "../../../types";
3
+ export type ScheduleDataObjectType<T extends dayjs.Dayjs | Date = Date> = TimestampSchedule<T>;
4
+ export type CronSchedule = {
5
+ schedule_type: "cron";
6
+ cron: string;
7
+ };
8
+ export type TimestampSchedule<T extends dayjs.Dayjs | Date = Date> = {
9
+ schedule_type: "timestamp";
10
+ timestamp: TimestampValue<T>;
11
+ };
12
+ export type TimestampValue<T extends dayjs.Dayjs | Date = Date> = {
13
+ startDate?: T;
14
+ endDate?: T;
15
+ number?: number;
16
+ unit?: "days" | "weeks" | "months" | "years";
17
+ onlyWeeks?: boolean;
18
+ };
19
+ export type ScheduleState = {
20
+ schedule: Maintenance_Schedule | Maintenance_Schedule_Template;
21
+ steps: Maintenance_Schedule_Step[];
22
+ sources: Source[];
23
+ };
24
+ export type ScheduleExecutionStatusType = "default" | "pending" | "running" | "failed" | "completed" | "terminated";
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
37
  };
@@ -6,7 +39,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
39
  exports.initTranslations = initTranslations;
7
40
  const i18next_1 = __importDefault(require("i18next"));
8
41
  const i18next_fs_backend_1 = __importDefault(require("i18next-fs-backend"));
9
- const path_1 = __importDefault(require("path"));
42
+ const path = __importStar(require("path"));
10
43
  /**
11
44
  * @file Init Translations
12
45
  * @description Initializes the translation service for the application.
@@ -14,9 +47,9 @@ const path_1 = __importDefault(require("path"));
14
47
  async function initTranslations() {
15
48
  try {
16
49
  console.log("[@openinc/parse-server-opendash] Init translations");
17
- const i18npath = path_1.default.join(__dirname, "../../../i18n");
18
- const loadPath = path_1.default.join(i18npath, "{{lng}}/{{ns}}.json");
19
- const addPath = path_1.default.join(i18npath, "{{lng}}/{{ns}}.missing.json");
50
+ const i18npath = path.join(__dirname, "../../../i18n");
51
+ const loadPath = path.join(i18npath, "{{lng}}/{{ns}}.json");
52
+ const addPath = path.join(i18npath, "{{lng}}/{{ns}}.missing.json");
20
53
  // Initialize i18next with backend configuration
21
54
  await i18next_1.default.use(i18next_fs_backend_1.default).init({
22
55
  // Backend configuration
@@ -29,11 +62,11 @@ async function initTranslations() {
29
62
  fallbackLng: "en-US",
30
63
  // Specify available languages to match your directories
31
64
  supportedLngs: ["de-DE", "en-US"],
32
- ns: ["maintenance"],
65
+ ns: ["server", "maintenance"],
33
66
  defaultNS: "server",
34
67
  debug: false,
35
- // Ensure resources are loaded
36
- initImmediate: false,
68
+ // Load resources asynchronously (await init promise)
69
+ initAsync: true,
37
70
  });
38
71
  console.log("[@openinc/parse-server-opendash] Current language:", i18next_1.default.language);
39
72
  }
@@ -7,8 +7,8 @@ export interface Documentation_CategoryAttributes {
7
7
  createdAt: Date;
8
8
  updatedAt: Date;
9
9
  gitPath?: string | undefined;
10
- isDefault: boolean;
11
10
  icon?: string | undefined;
11
+ isDefault?: boolean | undefined;
12
12
  name: string;
13
13
  order: number;
14
14
  parent?: Documentation_Category | undefined;
@@ -20,10 +20,10 @@ export declare class Documentation_Category extends Parse.Object<Documentation_C
20
20
  constructor(data?: Partial<Documentation_CategoryAttributes>);
21
21
  get gitPath(): string | undefined;
22
22
  set gitPath(value: string | undefined);
23
- get isDefault(): boolean;
24
- set isDefault(value: boolean);
25
23
  get icon(): string | undefined;
26
24
  set icon(value: string | undefined);
25
+ get isDefault(): boolean | undefined;
26
+ set isDefault(value: boolean | undefined);
27
27
  get name(): string;
28
28
  set name(value: string);
29
29
  get order(): number;
@@ -16,18 +16,18 @@ class Documentation_Category extends node_1.default.Object {
16
16
  set gitPath(value) {
17
17
  super.set("gitPath", value);
18
18
  }
19
- get isDefault() {
20
- return super.get("isDefault");
21
- }
22
- set isDefault(value) {
23
- super.set("isDefault", value);
24
- }
25
19
  get icon() {
26
20
  return super.get("icon");
27
21
  }
28
22
  set icon(value) {
29
23
  super.set("icon", value);
30
24
  }
25
+ get isDefault() {
26
+ return super.get("isDefault");
27
+ }
28
+ set isDefault(value) {
29
+ super.set("isDefault", value);
30
+ }
31
31
  get name() {
32
32
  return super.get("name");
33
33
  }
@@ -1,14 +1,14 @@
1
1
  import Parse from "parse/node";
2
- import type { _User } from "./_User.js";
3
- import { Tenant } from "./Tenant.js";
2
+ import type { Tenant } from "./Tenant";
3
+ import type { _User } from "./_User";
4
4
  export interface Documentation_ConfigAttributes {
5
5
  id: string;
6
6
  objectId: string;
7
7
  createdAt: Date;
8
8
  updatedAt: Date;
9
- lastCommitSha?: string;
10
- tenant?: Tenant;
11
- user?: _User;
9
+ lastCommitSha?: string | undefined;
10
+ tenant?: Tenant | undefined;
11
+ user?: _User | undefined;
12
12
  }
13
13
  export declare class Documentation_Config extends Parse.Object<Documentation_ConfigAttributes> {
14
14
  static className: string;
@@ -10,8 +10,8 @@ export interface Documentation_DocumentAttributes {
10
10
  category: Documentation_Category;
11
11
  content: string;
12
12
  gitPath?: string | undefined;
13
- isDefault: boolean;
14
13
  icon?: string | undefined;
14
+ isDefault?: boolean | undefined;
15
15
  locationPattern?: string | undefined;
16
16
  locations?: any[] | undefined;
17
17
  order: number;
@@ -28,10 +28,10 @@ export declare class Documentation_Document extends Parse.Object<Documentation_D
28
28
  set content(value: string);
29
29
  get gitPath(): string | undefined;
30
30
  set gitPath(value: string | undefined);
31
- get isDefault(): boolean;
32
- set isDefault(value: boolean);
33
31
  get icon(): string | undefined;
34
32
  set icon(value: string | undefined);
33
+ get isDefault(): boolean | undefined;
34
+ set isDefault(value: boolean | undefined);
35
35
  get locationPattern(): string | undefined;
36
36
  set locationPattern(value: string | undefined);
37
37
  get locations(): any[] | undefined;
@@ -28,18 +28,18 @@ class Documentation_Document extends node_1.default.Object {
28
28
  set gitPath(value) {
29
29
  super.set("gitPath", value);
30
30
  }
31
- get isDefault() {
32
- return super.get("isDefault");
33
- }
34
- set isDefault(value) {
35
- super.set("isDefault", value);
36
- }
37
31
  get icon() {
38
32
  return super.get("icon");
39
33
  }
40
34
  set icon(value) {
41
35
  super.set("icon", value);
42
36
  }
37
+ get isDefault() {
38
+ return super.get("isDefault");
39
+ }
40
+ set isDefault(value) {
41
+ super.set("isDefault", value);
42
+ }
43
43
  get locationPattern() {
44
44
  return super.get("locationPattern");
45
45
  }
@@ -1,4 +1,5 @@
1
1
  import Parse from "parse/node";
2
+ import { MessageData } from "../features/openservice";
2
3
  import type { Maintenance_Media } from "./Maintenance_Media";
3
4
  import type { Tenant } from "./Tenant";
4
5
  import type { _User } from "./_User";
@@ -9,7 +10,7 @@ export interface Maintenance_MessageAttributes {
9
10
  updatedAt: Date;
10
11
  classname: string;
11
12
  content?: string | undefined;
12
- data?: any | undefined;
13
+ data?: MessageData | undefined;
13
14
  displayAt?: Date | undefined;
14
15
  media: Parse.Relation<Maintenance_Message, Maintenance_Media>;
15
16
  referencedObjectId: string;
@@ -25,8 +26,8 @@ export declare class Maintenance_Message extends Parse.Object<Maintenance_Messag
25
26
  set classname(value: string);
26
27
  get content(): string | undefined;
27
28
  set content(value: string | undefined);
28
- get data(): any | undefined;
29
- set data(value: any | undefined);
29
+ get data(): MessageData | undefined;
30
+ set data(value: MessageData | undefined);
30
31
  get displayAt(): Date | undefined;
31
32
  set displayAt(value: Date | undefined);
32
33
  get media(): Parse.Relation<Maintenance_Message, Maintenance_Media>;
@@ -1,4 +1,5 @@
1
1
  import Parse from "parse/node";
2
+ import { ScheduleExecutionStatusType } from "../features/openservice";
2
3
  import type { Maintenance_Media } from "./Maintenance_Media";
3
4
  import type { Maintenance_Schedule_Template } from "./Maintenance_Schedule_Template";
4
5
  import type { Maintenance_Schedule } from "./Maintenance_Schedule";
@@ -18,7 +19,7 @@ export interface Maintenance_Schedule_ExecutionAttributes {
18
19
  origin_cron?: any | undefined;
19
20
  schedule?: Maintenance_Schedule | undefined;
20
21
  source?: Source | undefined;
21
- status: string;
22
+ status: ScheduleExecutionStatusType;
22
23
  tenant?: Tenant | undefined;
23
24
  title?: string | undefined;
24
25
  user: _User;
@@ -41,8 +42,8 @@ export declare class Maintenance_Schedule_Execution extends Parse.Object<Mainten
41
42
  set schedule(value: Maintenance_Schedule | undefined);
42
43
  get source(): Source | undefined;
43
44
  set source(value: Source | undefined);
44
- get status(): string;
45
- set status(value: string);
45
+ get status(): ScheduleExecutionStatusType;
46
+ set status(value: ScheduleExecutionStatusType);
46
47
  get tenant(): Tenant | undefined;
47
48
  set tenant(value: Tenant | undefined);
48
49
  get title(): string | undefined;
@@ -1,4 +1,5 @@
1
1
  import Parse from "parse/node";
2
+ import { TicketTypedMetaField } from "../features/openservice";
2
3
  import type { Maintenance_Media } from "./Maintenance_Media";
3
4
  import type { _Role } from "./_Role";
4
5
  import type { Maintenance_Schedule_Execution } from "./Maintenance_Schedule_Execution";
@@ -14,7 +15,7 @@ export interface Maintenance_Schedule_Execution_StepAttributes {
14
15
  done: boolean;
15
16
  fields: any[];
16
17
  media: Parse.Relation<Maintenance_Schedule_Execution_Step, Maintenance_Media>;
17
- meta: any[];
18
+ meta: TicketTypedMetaField[];
18
19
  order: number;
19
20
  roles: Parse.Relation<Maintenance_Schedule_Execution_Step, _Role>;
20
21
  scheduleexecution?: Maintenance_Schedule_Execution | undefined;
@@ -34,8 +35,8 @@ export declare class Maintenance_Schedule_Execution_Step extends Parse.Object<Ma
34
35
  get fields(): any[];
35
36
  set fields(value: any[]);
36
37
  get media(): Parse.Relation<Maintenance_Schedule_Execution_Step, Maintenance_Media>;
37
- get meta(): any[];
38
- set meta(value: any[]);
38
+ get meta(): TicketTypedMetaField[];
39
+ set meta(value: TicketTypedMetaField[]);
39
40
  get order(): number;
40
41
  set order(value: number);
41
42
  get roles(): Parse.Relation<Maintenance_Schedule_Execution_Step, _Role>;
@@ -1,4 +1,5 @@
1
1
  import Parse from "parse/node";
2
+ import { ScheduleDataObjectType } from "../features/openservice";
2
3
  import type { Contact } from "./Contact";
3
4
  import type { Source } from "./Source";
4
5
  import type { Maintenance_Schedule_Step } from "./Maintenance_Schedule_Step";
@@ -10,7 +11,7 @@ export interface Maintenance_Schedule_TemplateAttributes {
10
11
  updatedAt: Date;
11
12
  color?: string | undefined;
12
13
  contacts: Parse.Relation<Maintenance_Schedule_Template, Contact>;
13
- cron?: any | undefined;
14
+ cron?: ScheduleDataObjectType | undefined;
14
15
  description?: string | undefined;
15
16
  enabled: boolean;
16
17
  notifyBeforeDue: any;
@@ -25,8 +26,8 @@ export declare class Maintenance_Schedule_Template extends Parse.Object<Maintena
25
26
  get color(): string | undefined;
26
27
  set color(value: string | undefined);
27
28
  get contacts(): Parse.Relation<Maintenance_Schedule_Template, Contact>;
28
- get cron(): any | undefined;
29
- set cron(value: any | undefined);
29
+ get cron(): ScheduleDataObjectType | undefined;
30
+ set cron(value: ScheduleDataObjectType | undefined);
30
31
  get description(): string | undefined;
31
32
  set description(value: string | undefined);
32
33
  get enabled(): boolean;
@@ -1,4 +1,5 @@
1
1
  import Parse from "parse/node";
2
+ import { TicketMeta } from "../features/openservice";
2
3
  import type { _Role } from "./_Role";
3
4
  import type { _User } from "./_User";
4
5
  import type { Maintenance_Project } from "./Maintenance_Project";
@@ -13,7 +14,7 @@ export interface Maintenance_TicketAttributes {
13
14
  description?: string | undefined;
14
15
  enabled: boolean;
15
16
  latestPriorityValue?: number | undefined;
16
- meta?: any | undefined;
17
+ meta?: TicketMeta | undefined;
17
18
  project?: Maintenance_Project | undefined;
18
19
  tenant?: Tenant | undefined;
19
20
  title?: string | undefined;
@@ -30,8 +31,8 @@ export declare class Maintenance_Ticket extends Parse.Object<Maintenance_TicketA
30
31
  set enabled(value: boolean);
31
32
  get latestPriorityValue(): number | undefined;
32
33
  set latestPriorityValue(value: number | undefined);
33
- get meta(): any | undefined;
34
- set meta(value: any | undefined);
34
+ get meta(): TicketMeta | undefined;
35
+ set meta(value: TicketMeta | undefined);
35
36
  get project(): Maintenance_Project | undefined;
36
37
  set project(value: Maintenance_Project | undefined);
37
38
  get tenant(): Tenant | undefined;
@@ -1,24 +1,31 @@
1
1
  import Parse from "parse/node";
2
2
  import type { Tenant } from "./Tenant";
3
+ import type { _User } from "./_User";
3
4
  export interface VirtualKPIAttributes {
4
5
  id: string;
5
6
  objectId: string;
6
7
  createdAt: Date;
7
8
  updatedAt: Date;
8
9
  label: string;
10
+ liveOffset: number;
9
11
  pipe: any;
10
12
  template: any;
11
13
  tenant?: Tenant | undefined;
14
+ user: _User;
12
15
  }
13
16
  export declare class VirtualKPI extends Parse.Object<VirtualKPIAttributes> {
14
17
  static className: string;
15
18
  constructor(data?: Partial<VirtualKPIAttributes>);
16
19
  get label(): string;
17
20
  set label(value: string);
21
+ get liveOffset(): number;
22
+ set liveOffset(value: number);
18
23
  get pipe(): any;
19
24
  set pipe(value: any);
20
25
  get template(): any;
21
26
  set template(value: any);
22
27
  get tenant(): Tenant | undefined;
23
28
  set tenant(value: Tenant | undefined);
29
+ get user(): _User;
30
+ set user(value: _User);
24
31
  }
@@ -16,6 +16,12 @@ class VirtualKPI extends node_1.default.Object {
16
16
  set label(value) {
17
17
  super.set("label", value);
18
18
  }
19
+ get liveOffset() {
20
+ return super.get("liveOffset");
21
+ }
22
+ set liveOffset(value) {
23
+ super.set("liveOffset", value);
24
+ }
19
25
  get pipe() {
20
26
  return super.get("pipe");
21
27
  }
@@ -34,6 +40,12 @@ class VirtualKPI extends node_1.default.Object {
34
40
  set tenant(value) {
35
41
  super.set("tenant", value);
36
42
  }
43
+ get user() {
44
+ return super.get("user");
45
+ }
46
+ set user(value) {
47
+ super.set("user", value);
48
+ }
37
49
  }
38
50
  exports.VirtualKPI = VirtualKPI;
39
51
  node_1.default.Object.registerSubclass("OD3_VirtualKPI", VirtualKPI);
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@openinc/parse-server-opendash",
3
- "version": "4.0.10",
3
+ "version": "4.0.12",
4
4
  "description": "Parse Server Cloud Code for open.INC Stack.",
5
- "packageManager": "pnpm@10.32.1",
5
+ "packageManager": "pnpm@10.33.0",
6
6
  "keywords": [
7
7
  "parse",
8
8
  "opendash"
@@ -56,7 +56,7 @@
56
56
  "deploy": "opendash deploy",
57
57
  "schema-down": "parse-server-schema down --prefix OD3_ ./schema",
58
58
  "schema-up": "parse-server-schema up --prefix OD3_ ./schema",
59
- "schema-ts": "parse-server-schema typescript --import-parse-statement=\"import Parse from \\\"parse/node\\\";\" --prefix OD3_ ./src/types",
59
+ "schema-ts": "parse-server-schema typescript --import-parse-statement=\"import Parse from \\\"parse/node\\\";\" --custom-class-field-types-config=./parse-server.custom-class-field.config.json --prefix OD3_ ./src/types",
60
60
  "typedoc": "typedoc --plugin typedoc-plugin-markdown --hideBreadcrumbs --out docs src/index.ts",
61
61
  "predevstart": "./setup_scripts/installDeps.sh",
62
62
  "devstart": "parse-server ./config.js",
@@ -66,19 +66,19 @@
66
66
  "docker:rebuild": "cd ./docker-dev && powershell -NoProfile -ExecutionPolicy Bypass -File rebuild_and_restart.ps1"
67
67
  },
68
68
  "dependencies": {
69
- "@openinc/parse-server-schema": "^4.0.0",
69
+ "@openinc/parse-server-schema": "^4.1.0",
70
70
  "amqplib": "^0.10.9",
71
71
  "cron": "^4.4.0",
72
72
  "dayjs": "^1.11.20",
73
73
  "fast-equals": "^6.0.0",
74
- "i18next": "^25.10.9",
75
- "i18next-fs-backend": "^2.6.1",
74
+ "i18next": "^26.0.4",
75
+ "i18next-fs-backend": "^2.6.3",
76
76
  "jsonwebtoken": "^9.0.3",
77
77
  "jwks-rsa": "^4.0.1",
78
- "nodemailer": "^8.0.4",
78
+ "nodemailer": "^8.0.5",
79
79
  "nunjucks": "^3.2.4",
80
80
  "parse": "^8.5.0",
81
- "parse-server": "9.6.1",
81
+ "parse-server": "9.8.0",
82
82
  "pdf-img-convert": "2.0.0",
83
83
  "rimraf": "^6.1.3",
84
84
  "semantic-release": "^25.0.3",
@@ -95,7 +95,7 @@
95
95
  "@semantic-release/npm": "^13.1.5",
96
96
  "@semantic-release/release-notes-generator": "^14.1.0",
97
97
  "@types/jsonwebtoken": "^9.0.10",
98
- "@types/node": "^25.5.0",
98
+ "@types/node": "^25.6.0",
99
99
  "@types/nodemailer": "^7.0.11",
100
100
  "@types/nunjucks": "^3.2.6",
101
101
  "@types/safe-timers": "^1.1.2",
@@ -103,7 +103,7 @@
103
103
  "concurrently": "^9.2.1",
104
104
  "semantic-release-export-data": "^1.2.0",
105
105
  "ts-node": "^10.9.2",
106
- "typedoc": "^0.28.18",
106
+ "typedoc": "^0.28.19",
107
107
  "typedoc-plugin-markdown": "^4.11.0",
108
108
  "typescript": "^5.9.3"
109
109
  }
@@ -1,9 +1,17 @@
1
1
  {
2
2
  "fields": {
3
+ "gitPath": {
4
+ "type": "String",
5
+ "required": false
6
+ },
3
7
  "icon": {
4
8
  "type": "String",
5
9
  "required": false
6
10
  },
11
+ "isDefault": {
12
+ "type": "Boolean",
13
+ "required": false
14
+ },
7
15
  "name": {
8
16
  "type": "String",
9
17
  "required": true,
@@ -16,6 +16,12 @@
16
16
  }
17
17
  },
18
18
  "classLevelPermissions": {
19
+ "ACL": {
20
+ "*": {
21
+ "read": true,
22
+ "write": true
23
+ }
24
+ },
19
25
  "find": {
20
26
  "*": true
21
27
  },
@@ -39,12 +45,6 @@
39
45
  },
40
46
  "protectedFields": {
41
47
  "*": []
42
- },
43
- "ACL": {
44
- "*": {
45
- "read": true,
46
- "write": true
47
- }
48
48
  }
49
49
  }
50
50
  }
@@ -9,10 +9,18 @@
9
9
  "type": "String",
10
10
  "required": true
11
11
  },
12
+ "gitPath": {
13
+ "type": "String",
14
+ "required": false
15
+ },
12
16
  "icon": {
13
17
  "type": "String",
14
18
  "required": false
15
19
  },
20
+ "isDefault": {
21
+ "type": "Boolean",
22
+ "required": false
23
+ },
16
24
  "locationPattern": {
17
25
  "type": "String"
18
26
  },
@@ -5,6 +5,11 @@
5
5
  "required": true,
6
6
  "defaultValue": "VKPI-Label"
7
7
  },
8
+ "liveOffset": {
9
+ "type": "Number",
10
+ "required": false,
11
+ "defaultValue": 1
12
+ },
8
13
  "pipe": {
9
14
  "type": "Object",
10
15
  "required": false,
@@ -21,6 +26,11 @@
21
26
  "type": "Pointer",
22
27
  "targetClass": "{{PREFIX}}Tenant",
23
28
  "required": false
29
+ },
30
+ "user": {
31
+ "type": "Pointer",
32
+ "targetClass": "_User",
33
+ "required": true
24
34
  }
25
35
  },
26
36
  "classLevelPermissions": {
@@ -1,3 +0,0 @@
1
- import { Maintenance_Ticket } from "../../../types/index.js";
2
- import { FetchOptions } from "../types/FetchOptions.js";
3
- export declare function saveMedia(ticket: Maintenance_Ticket, media: string[], fetchOptions: FetchOptions): Promise<void>;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.saveMedia = saveMedia;
4
- const index_js_1 = require("../../../types/index.js");
5
- async function saveMedia(ticket, media, fetchOptions) {
6
- const message = new index_js_1.Maintenance_Message({
7
- referencedObjectId: ticket.id,
8
- classname: index_js_1.Maintenance_Ticket.className,
9
- data: { type: "media" },
10
- tenant: ticket.get("tenant"),
11
- user: ticket.get("user"),
12
- });
13
- message
14
- .relation("media")
15
- .add(media.map((m) => new index_js_1.Maintenance_Media({ objectId: m })));
16
- await message.save(null, fetchOptions);
17
- }