@openinc/parse-server-opendash 1.10.1 → 1.12.0

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 (260) hide show
  1. package/dist/functions/_init.js +11 -65
  2. package/dist/functions/getAdminConfig.js +38 -91
  3. package/dist/functions/getSchemaForAdmin.js +5 -54
  4. package/dist/functions/opendash-geo-features.js +13 -58
  5. package/dist/functions/opendash-geo-google-autocomplete.js +53 -112
  6. package/dist/functions/opendash-geo-graphhopper-geocode-reverse.js +30 -83
  7. package/dist/functions/opendash-geo-graphhopper-geocode.js +33 -86
  8. package/dist/helper/pdf2img.d.ts +12 -0
  9. package/dist/helper/pdf2img.js +111 -0
  10. package/dist/hooks/Alarm.d.ts +1 -1
  11. package/dist/hooks/Alarm.js +29 -95
  12. package/dist/hooks/AlarmAction.d.ts +1 -1
  13. package/dist/hooks/AlarmAction.js +9 -64
  14. package/dist/hooks/AlarmWebhook.d.ts +1 -1
  15. package/dist/hooks/AlarmWebhook.js +10 -64
  16. package/dist/hooks/Attachment.d.ts +1 -0
  17. package/dist/hooks/Attachment.js +18 -0
  18. package/dist/hooks/BDE_Form.d.ts +1 -1
  19. package/dist/hooks/BDE_Form.js +57 -114
  20. package/dist/hooks/BDE_List.d.ts +1 -1
  21. package/dist/hooks/BDE_List.js +11 -57
  22. package/dist/hooks/BDE_ListEntry.d.ts +1 -1
  23. package/dist/hooks/BDE_ListEntry.js +11 -57
  24. package/dist/hooks/BDE_Page.d.ts +1 -1
  25. package/dist/hooks/BDE_Page.js +19 -84
  26. package/dist/hooks/BDE_Result.d.ts +1 -1
  27. package/dist/hooks/BDE_Result.js +125 -177
  28. package/dist/hooks/BDE_Unit.d.ts +1 -1
  29. package/dist/hooks/BDE_Unit.js +11 -57
  30. package/dist/hooks/Config.d.ts +1 -1
  31. package/dist/hooks/Config.js +10 -64
  32. package/dist/hooks/Dashboard.d.ts +1 -1
  33. package/dist/hooks/Dashboard.js +26 -86
  34. package/dist/hooks/Group.d.ts +1 -0
  35. package/dist/hooks/Group.js +18 -0
  36. package/dist/hooks/Group_UserRelation.d.ts +1 -0
  37. package/dist/hooks/Group_UserRelation.js +18 -0
  38. package/dist/hooks/Knowledge_Article.d.ts +1 -0
  39. package/dist/hooks/Knowledge_Article.js +18 -0
  40. package/dist/hooks/Knowledge_Category.d.ts +1 -0
  41. package/dist/hooks/Knowledge_Category.js +18 -0
  42. package/dist/hooks/Knowledge_Document.d.ts +1 -0
  43. package/dist/hooks/Knowledge_Document.js +59 -0
  44. package/dist/hooks/Knowledge_DocumentPage.d.ts +1 -0
  45. package/dist/hooks/Knowledge_DocumentPage.js +22 -0
  46. package/dist/hooks/Knowledge_Video.d.ts +1 -0
  47. package/dist/hooks/Knowledge_Video.js +18 -0
  48. package/dist/hooks/Language.d.ts +1 -0
  49. package/dist/hooks/Language.js +18 -0
  50. package/dist/hooks/Maintenance_Article.d.ts +1 -0
  51. package/dist/hooks/Maintenance_Article.js +18 -0
  52. package/dist/hooks/Maintenance_Downtime.d.ts +1 -0
  53. package/dist/hooks/Maintenance_Downtime.js +18 -0
  54. package/dist/hooks/Maintenance_Duedate.d.ts +1 -0
  55. package/dist/hooks/Maintenance_Duedate.js +18 -0
  56. package/dist/hooks/Maintenance_Frequency.d.ts +1 -0
  57. package/dist/hooks/Maintenance_Frequency.js +18 -0
  58. package/dist/hooks/Maintenance_Issuecategory.d.ts +1 -0
  59. package/dist/hooks/Maintenance_Issuecategory.js +18 -0
  60. package/dist/hooks/Maintenance_Kanban_State.d.ts +1 -0
  61. package/dist/hooks/Maintenance_Kanban_State.js +18 -0
  62. package/dist/hooks/Maintenance_Media.d.ts +1 -0
  63. package/dist/hooks/Maintenance_Media.js +18 -0
  64. package/dist/hooks/Maintenance_Priority.d.ts +1 -0
  65. package/dist/hooks/Maintenance_Priority.js +18 -0
  66. package/dist/hooks/Maintenance_Restriction.d.ts +1 -0
  67. package/dist/hooks/Maintenance_Restriction.js +18 -0
  68. package/dist/hooks/Maintenance_Schedule.d.ts +1 -0
  69. package/dist/hooks/Maintenance_Schedule.js +18 -0
  70. package/dist/hooks/Maintenance_Schedule_Step.d.ts +1 -0
  71. package/dist/hooks/Maintenance_Schedule_Step.js +18 -0
  72. package/dist/hooks/Maintenance_Ticket.d.ts +1 -0
  73. package/dist/hooks/Maintenance_Ticket.js +18 -0
  74. package/dist/hooks/Maintenance_Ticket_Issuecategory.d.ts +1 -0
  75. package/dist/hooks/Maintenance_Ticket_Issuecategory.js +18 -0
  76. package/dist/hooks/Maintenance_Ticket_Kanban_State.d.ts +1 -0
  77. package/dist/hooks/Maintenance_Ticket_Kanban_State.js +18 -0
  78. package/dist/hooks/Maintenance_Ticket_Source.d.ts +1 -0
  79. package/dist/hooks/Maintenance_Ticket_Source.js +18 -0
  80. package/dist/hooks/NavigationGroup.d.ts +1 -1
  81. package/dist/hooks/NavigationGroup.js +9 -64
  82. package/dist/hooks/NavigationItem.d.ts +1 -1
  83. package/dist/hooks/NavigationItem.js +10 -64
  84. package/dist/hooks/Notification.d.ts +1 -1
  85. package/dist/hooks/Notification.js +55 -153
  86. package/dist/hooks/Permission.d.ts +1 -1
  87. package/dist/hooks/Permission.js +9 -64
  88. package/dist/hooks/Push.d.ts +1 -1
  89. package/dist/hooks/Push.js +24 -80
  90. package/dist/hooks/Report.d.ts +1 -1
  91. package/dist/hooks/Report.js +10 -64
  92. package/dist/hooks/Share.d.ts +1 -1
  93. package/dist/hooks/Share.js +10 -64
  94. package/dist/hooks/Source.d.ts +1 -1
  95. package/dist/hooks/Source.js +123 -240
  96. package/dist/hooks/SourceMeta.d.ts +1 -1
  97. package/dist/hooks/SourceMeta.js +36 -115
  98. package/dist/hooks/Tenant.d.ts +1 -1
  99. package/dist/hooks/Tenant.js +87 -168
  100. package/dist/hooks/TenantMeta.d.ts +1 -1
  101. package/dist/hooks/TenantMeta.js +6 -56
  102. package/dist/hooks/TenantTrustedDomain.d.ts +1 -1
  103. package/dist/hooks/TenantTrustedDomain.js +6 -56
  104. package/dist/hooks/UserData.d.ts +1 -1
  105. package/dist/hooks/UserData.js +10 -64
  106. package/dist/hooks/WebPush.d.ts +1 -1
  107. package/dist/hooks/WebPush.js +21 -77
  108. package/dist/hooks/Widget.d.ts +1 -1
  109. package/dist/hooks/Widget.js +10 -64
  110. package/dist/hooks/WidgetPreset.d.ts +1 -0
  111. package/dist/hooks/WidgetPreset.js +18 -0
  112. package/dist/hooks/_User.js +102 -208
  113. package/dist/hooks/_beforeLogin.js +16 -71
  114. package/dist/hooks/_init.js +15 -78
  115. package/dist/index.d.ts +4 -0
  116. package/dist/index.js +239 -487
  117. package/dist/ow.js +79 -137
  118. package/dist/types/Alarm.d.ts +25 -5
  119. package/dist/types/Alarm.js +57 -0
  120. package/dist/types/AlarmAction.d.ts +29 -7
  121. package/dist/types/AlarmAction.js +63 -0
  122. package/dist/types/AlarmWebhook.d.ts +30 -9
  123. package/dist/types/AlarmWebhook.js +63 -0
  124. package/dist/types/Attachment.d.ts +21 -0
  125. package/dist/types/Attachment.js +29 -0
  126. package/dist/types/BDE_Form.d.ts +14 -3
  127. package/dist/types/BDE_Form.js +33 -0
  128. package/dist/types/BDE_List.d.ts +6 -1
  129. package/dist/types/BDE_List.js +15 -0
  130. package/dist/types/BDE_ListEntry.d.ts +12 -4
  131. package/dist/types/BDE_ListEntry.js +27 -0
  132. package/dist/types/BDE_Page.d.ts +9 -2
  133. package/dist/types/BDE_Page.js +21 -0
  134. package/dist/types/BDE_Result.d.ts +11 -2
  135. package/dist/types/BDE_Result.js +27 -0
  136. package/dist/types/BDE_Unit.d.ts +14 -3
  137. package/dist/types/BDE_Unit.js +33 -0
  138. package/dist/types/Config.d.ts +14 -3
  139. package/dist/types/Config.js +33 -0
  140. package/dist/types/Dashboard.d.ts +24 -5
  141. package/dist/types/Dashboard.js +51 -0
  142. package/dist/types/Group.d.ts +18 -0
  143. package/dist/types/Group.js +23 -0
  144. package/dist/types/Group_UserRelation.d.ts +19 -0
  145. package/dist/types/Group_UserRelation.js +23 -0
  146. package/dist/types/Knowledge_Article.d.ts +29 -0
  147. package/dist/types/Knowledge_Article.js +41 -0
  148. package/dist/types/Knowledge_Category.d.ts +25 -0
  149. package/dist/types/Knowledge_Category.js +35 -0
  150. package/dist/types/Knowledge_Document.d.ts +29 -0
  151. package/dist/types/Knowledge_Document.js +41 -0
  152. package/dist/types/Knowledge_DocumentPage.d.ts +27 -0
  153. package/dist/types/Knowledge_DocumentPage.js +41 -0
  154. package/dist/types/Knowledge_Video.d.ts +35 -0
  155. package/dist/types/Knowledge_Video.js +53 -0
  156. package/dist/types/Language.d.ts +14 -0
  157. package/dist/types/Language.js +17 -0
  158. package/dist/types/Maintenance_Article.d.ts +33 -0
  159. package/dist/types/Maintenance_Article.js +47 -0
  160. package/dist/types/Maintenance_Downtime.d.ts +26 -0
  161. package/dist/types/Maintenance_Downtime.js +35 -0
  162. package/dist/types/Maintenance_Duedate.d.ts +35 -0
  163. package/dist/types/Maintenance_Duedate.js +53 -0
  164. package/dist/types/Maintenance_Frequency.d.ts +26 -0
  165. package/dist/types/Maintenance_Frequency.js +35 -0
  166. package/dist/types/Maintenance_Issuecategory.d.ts +34 -0
  167. package/dist/types/Maintenance_Issuecategory.js +53 -0
  168. package/dist/types/Maintenance_Kanban_State.d.ts +33 -0
  169. package/dist/types/Maintenance_Kanban_State.js +53 -0
  170. package/dist/types/Maintenance_Media.d.ts +21 -0
  171. package/dist/types/Maintenance_Media.js +29 -0
  172. package/dist/types/Maintenance_Priority.d.ts +26 -0
  173. package/dist/types/Maintenance_Priority.js +35 -0
  174. package/dist/types/Maintenance_Restriction.d.ts +26 -0
  175. package/dist/types/Maintenance_Restriction.js +35 -0
  176. package/dist/types/Maintenance_Schedule.d.ts +29 -0
  177. package/dist/types/Maintenance_Schedule.js +41 -0
  178. package/dist/types/Maintenance_Schedule_Step.d.ts +34 -0
  179. package/dist/types/Maintenance_Schedule_Step.js +53 -0
  180. package/dist/types/Maintenance_Ticket.d.ts +25 -0
  181. package/dist/types/Maintenance_Ticket.js +35 -0
  182. package/dist/types/Maintenance_Ticket_Issuecategory.d.ts +27 -0
  183. package/dist/types/Maintenance_Ticket_Issuecategory.js +35 -0
  184. package/dist/types/Maintenance_Ticket_Kanban_State.d.ts +27 -0
  185. package/dist/types/Maintenance_Ticket_Kanban_State.js +35 -0
  186. package/dist/types/Maintenance_Ticket_Source.d.ts +27 -0
  187. package/dist/types/Maintenance_Ticket_Source.js +35 -0
  188. package/dist/types/NavigationGroup.d.ts +14 -3
  189. package/dist/types/NavigationGroup.js +33 -0
  190. package/dist/types/NavigationItem.d.ts +36 -9
  191. package/dist/types/NavigationItem.js +81 -0
  192. package/dist/types/Notification.d.ts +20 -5
  193. package/dist/types/Notification.js +45 -0
  194. package/dist/types/Permission.d.ts +9 -2
  195. package/dist/types/Permission.js +21 -0
  196. package/dist/types/Push.d.ts +18 -5
  197. package/dist/types/Push.js +39 -0
  198. package/dist/types/Report.d.ts +16 -3
  199. package/dist/types/Report.js +39 -0
  200. package/dist/types/Share.d.ts +25 -8
  201. package/dist/types/Share.js +51 -0
  202. package/dist/types/Source.d.ts +20 -5
  203. package/dist/types/Source.js +45 -0
  204. package/dist/types/SourceMeta.d.ts +9 -2
  205. package/dist/types/SourceMeta.js +21 -0
  206. package/dist/types/Tenant.d.ts +20 -5
  207. package/dist/types/Tenant.js +45 -0
  208. package/dist/types/TenantMeta.d.ts +7 -2
  209. package/dist/types/TenantMeta.js +15 -0
  210. package/dist/types/TenantTrustedDomain.d.ts +10 -3
  211. package/dist/types/TenantTrustedDomain.js +21 -0
  212. package/dist/types/UserData.d.ts +12 -3
  213. package/dist/types/UserData.js +27 -0
  214. package/dist/types/WebPush.d.ts +13 -4
  215. package/dist/types/WebPush.js +27 -0
  216. package/dist/types/Widget.d.ts +14 -3
  217. package/dist/types/Widget.js +33 -0
  218. package/dist/types/WidgetPreset.d.ts +40 -0
  219. package/dist/types/WidgetPreset.js +65 -0
  220. package/dist/types/_Role.d.ts +3 -3
  221. package/dist/types/_Session.d.ts +5 -5
  222. package/dist/types/_User.d.ts +11 -9
  223. package/dist/types/index.d.ts +108 -29
  224. package/dist/types/index.js +104 -0
  225. package/package.json +3 -2
  226. package/schema/Alarm.json +4 -0
  227. package/schema/AlarmAction.json +5 -0
  228. package/schema/Attachment.json +44 -0
  229. package/schema/BDE_Form.json +9 -10
  230. package/schema/BDE_List.json +7 -9
  231. package/schema/BDE_ListEntry.json +7 -9
  232. package/schema/BDE_Page.json +7 -9
  233. package/schema/BDE_Result.json +7 -9
  234. package/schema/BDE_Unit.json +9 -8
  235. package/schema/Dashboard.json +9 -0
  236. package/schema/Group.json +39 -0
  237. package/schema/Group_UserRelation.json +40 -0
  238. package/schema/Knowledge_Article.json +54 -0
  239. package/schema/Knowledge_Category.json +50 -0
  240. package/schema/Knowledge_Document.json +54 -0
  241. package/schema/Knowledge_DocumentPage.json +53 -0
  242. package/schema/Knowledge_Video.json +62 -0
  243. package/schema/Language.json +35 -0
  244. package/schema/Maintenance_Article.json +56 -0
  245. package/schema/Maintenance_Downtime.json +48 -0
  246. package/schema/Maintenance_Duedate.json +61 -0
  247. package/schema/Maintenance_Frequency.json +48 -0
  248. package/schema/Maintenance_Issuecategory.json +60 -0
  249. package/schema/Maintenance_Kanban_State.json +60 -0
  250. package/schema/Maintenance_Media.json +43 -0
  251. package/schema/Maintenance_Priority.json +48 -0
  252. package/schema/Maintenance_Restriction.json +48 -0
  253. package/schema/Maintenance_Schedule.json +53 -0
  254. package/schema/Maintenance_Schedule_Step.json +60 -0
  255. package/schema/Maintenance_Ticket.json +47 -0
  256. package/schema/Maintenance_Ticket_Issuecategory.json +48 -0
  257. package/schema/Maintenance_Ticket_Kanban_State.json +48 -0
  258. package/schema/Maintenance_Ticket_Source.json +48 -0
  259. package/schema/Tenant.json +3 -0
  260. package/schema/WidgetPreset.json +79 -0
package/dist/index.js CHANGED
@@ -1,267 +1,111 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
39
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
40
4
  };
41
5
  Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.afterDeleteHook = exports.beforeDeleteHook = exports.afterSaveHook = exports.beforeSaveHook = exports.defaultHandler = exports.immutableField = exports.ensureRole = exports.getEnvBoolean = exports.getEnv = exports.getConfigBoolean = exports.getConfig = exports.requirePermission = exports.hasPermission = exports.init = exports.PREFIX = void 0;
43
- var web_push_1 = __importDefault(require("web-push"));
44
- var path_1 = require("path");
45
- var parse_server_schema_1 = require("@openinc/parse-server-schema");
46
- var _init_1 = require("./hooks/_init");
47
- var _init_2 = require("./functions/_init");
48
- var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
6
+ exports.afterDeleteHook = exports.beforeDeleteHook = exports.afterSaveHook = exports.beforeSaveHook = exports.defaultAclHandler = exports.defaultHandler = exports.immutableField = exports.ensureRole = exports.getEnvBoolean = exports.getEnv = exports.getConfigBoolean = exports.getConfig = exports.requirePermission = exports.hasPermission = exports.init = exports.PREFIX = void 0;
7
+ const web_push_1 = __importDefault(require("web-push"));
8
+ const path_1 = require("path");
9
+ const parse_server_schema_1 = require("@openinc/parse-server-schema");
10
+ const _init_1 = require("./hooks/_init");
11
+ const _init_2 = require("./functions/_init");
12
+ const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
49
13
  exports.PREFIX = "OD3_";
50
- var schema = {};
51
- function init(cfg) {
52
- if (cfg === void 0) { cfg = {}; }
53
- return __awaiter(this, void 0, void 0, function () {
54
- var pkg, config, schemaConfig, error_1, _a, _b;
55
- return __generator(this, function (_c) {
56
- switch (_c.label) {
57
- case 0:
58
- try {
59
- pkg = require("../package.json");
60
- console.log("[".concat(pkg.name, "] init (v").concat(pkg.version, ")"));
61
- }
62
- catch (error) { }
63
- return [4 /*yield*/, Parse.Config.get()];
64
- case 1:
65
- config = _c.sent();
66
- exports.PREFIX = config.get("OPENDASH_CLASS_PREFIX") || exports.PREFIX;
67
- return [4 /*yield*/, (0, parse_server_schema_1.loadConfig)(cfg.configPath)];
68
- case 2:
69
- schemaConfig = _c.sent();
70
- _c.label = 3;
71
- case 3:
72
- _c.trys.push([3, 5, , 6]);
73
- return [4 /*yield*/, (0, parse_server_schema_1.up)(schemaConfig, (0, path_1.resolve)(__dirname, "../schema"), {
74
- prefix: exports.PREFIX,
75
- deleteClasses: false,
76
- deleteFields: false,
77
- })];
78
- case 4:
79
- _c.sent();
80
- return [3 /*break*/, 6];
81
- case 5:
82
- error_1 = _c.sent();
83
- console.error("Error while updating schema");
84
- console.error(error_1);
85
- return [3 /*break*/, 6];
86
- case 6:
87
- _b = (_a = Object).fromEntries;
88
- return [4 /*yield*/, Parse.Schema.all()];
89
- case 7:
90
- schema = _b.apply(_a, [(_c.sent()).map(function (schema) { return [schema.className, schema]; })]);
91
- return [4 /*yield*/, initDefaultRoles()];
92
- case 8:
93
- _c.sent();
94
- return [4 /*yield*/, initWebPush()];
95
- case 9:
96
- _c.sent();
97
- return [4 /*yield*/, (0, _init_1.init)()];
98
- case 10:
99
- _c.sent();
100
- return [4 /*yield*/, (0, _init_2.init)()];
101
- case 11:
102
- _c.sent();
103
- return [2 /*return*/];
104
- }
14
+ let schema = {};
15
+ async function init(cfg = {}) {
16
+ try {
17
+ const pkg = require("../package.json");
18
+ console.log(`[${pkg.name}] init (v${pkg.version})`);
19
+ }
20
+ catch (error) { }
21
+ const schemaConfig = await (0, parse_server_schema_1.loadConfig)(cfg.configPath);
22
+ try {
23
+ await (0, parse_server_schema_1.up)(schemaConfig, (0, path_1.resolve)(__dirname, "../schema"), {
24
+ prefix: exports.PREFIX,
25
+ deleteClasses: false,
26
+ deleteFields: false,
105
27
  });
106
- });
28
+ }
29
+ catch (error) {
30
+ console.error("Error while updating schema");
31
+ console.error(error);
32
+ }
33
+ schema = Object.fromEntries((await Parse.Schema.all()).map((schema) => [schema.className, schema]));
34
+ await initDefaultRoles();
35
+ await initWebPush();
36
+ await (0, _init_1.init)();
37
+ await (0, _init_2.init)();
107
38
  }
108
39
  exports.init = init;
109
- function initDefaultRoles() {
110
- return __awaiter(this, void 0, void 0, function () {
111
- var error_2;
112
- return __generator(this, function (_a) {
113
- switch (_a.label) {
114
- case 0:
115
- _a.trys.push([0, 8, , 9]);
116
- return [4 /*yield*/, ensureRole("Admin")];
117
- case 1:
118
- _a.sent();
119
- return [4 /*yield*/, ensureRole("od-user")];
120
- case 2:
121
- _a.sent();
122
- return [4 /*yield*/, ensureRole("od-admin", {
123
- childRoles: ["Admin"],
124
- })];
125
- case 3:
126
- _a.sent();
127
- return [4 /*yield*/, ensureRole("od-tenant-user")];
128
- case 4:
129
- _a.sent();
130
- return [4 /*yield*/, ensureRole("od-tenant-verified")];
131
- case 5:
132
- _a.sent();
133
- return [4 /*yield*/, ensureRole("od-tenant-global-visible")];
134
- case 6:
135
- _a.sent();
136
- return [4 /*yield*/, ensureRole("od-tenant-admin")];
137
- case 7:
138
- _a.sent();
139
- return [3 /*break*/, 9];
140
- case 8:
141
- error_2 = _a.sent();
142
- console.error(error_2);
143
- return [3 /*break*/, 9];
144
- case 9: return [2 /*return*/];
145
- }
40
+ async function initDefaultRoles() {
41
+ try {
42
+ await ensureRole("Admin");
43
+ await ensureRole("od-user");
44
+ await ensureRole("od-admin", {
45
+ childRoles: ["Admin"],
146
46
  });
147
- });
47
+ await ensureRole("od-tenant-user");
48
+ await ensureRole("od-tenant-verified");
49
+ await ensureRole("od-tenant-global-visible");
50
+ await ensureRole("od-tenant-admin");
51
+ }
52
+ catch (error) {
53
+ console.error(error);
54
+ }
148
55
  }
149
- function initWebPush() {
150
- return __awaiter(this, void 0, void 0, function () {
151
- var _a, _b, _c, _d, _e, error_3;
152
- return __generator(this, function (_f) {
153
- switch (_f.label) {
154
- case 0:
155
- _f.trys.push([0, 6, , 7]);
156
- return [4 /*yield*/, getConfigBoolean("WEB_PUSH_ENABLED")];
157
- case 1:
158
- if (!(_f.sent())) {
159
- return [2 /*return*/];
160
- }
161
- _b = (_a = web_push_1.default).setVapidDetails;
162
- return [4 /*yield*/, getConfig("WEB_PUSH_HOST")];
163
- case 2:
164
- _c = [(_f.sent())];
165
- return [4 /*yield*/, getConfig("WEB_PUSH_VAPID_PUBLIC_KEY")];
166
- case 3:
167
- _c = _c.concat([(_f.sent())]);
168
- return [4 /*yield*/, getConfig("WEB_PUSH_VAPID_PRIVATE_KEY")];
169
- case 4:
170
- _b.apply(_a, _c.concat([(_f.sent())]));
171
- _e = (_d = web_push_1.default).setGCMAPIKey;
172
- return [4 /*yield*/, getConfig("WEB_PUSH_FCM_KEY")];
173
- case 5:
174
- _e.apply(_d, [(_f.sent())]);
175
- return [3 /*break*/, 7];
176
- case 6:
177
- error_3 = _f.sent();
178
- console.error(error_3);
179
- return [3 /*break*/, 7];
180
- case 7: return [2 /*return*/];
181
- }
182
- });
183
- });
56
+ async function initWebPush() {
57
+ try {
58
+ if (!(await getConfigBoolean("WEB_PUSH_ENABLED"))) {
59
+ return;
60
+ }
61
+ web_push_1.default.setVapidDetails((await getConfig("WEB_PUSH_HOST")), (await getConfig("WEB_PUSH_VAPID_PUBLIC_KEY")), (await getConfig("WEB_PUSH_VAPID_PRIVATE_KEY")));
62
+ web_push_1.default.setGCMAPIKey((await getConfig("WEB_PUSH_FCM_KEY")));
63
+ }
64
+ catch (error) {
65
+ console.error(error);
66
+ }
184
67
  }
185
- function hasPermission(sessionToken, key) {
186
- return __awaiter(this, void 0, void 0, function () {
187
- var result;
188
- return __generator(this, function (_a) {
189
- switch (_a.label) {
190
- case 0: return [4 /*yield*/, new Parse.Query("".concat(exports.PREFIX, "Permission"))
191
- .equalTo("key", key)
192
- .first({ sessionToken: sessionToken })];
193
- case 1:
194
- result = _a.sent();
195
- return [2 /*return*/, !!result];
196
- }
197
- });
198
- });
68
+ async function hasPermission(sessionToken, key) {
69
+ const result = await new Parse.Query(`${exports.PREFIX}Permission`)
70
+ .equalTo("key", key)
71
+ .first({ sessionToken });
72
+ return !!result;
199
73
  }
200
74
  exports.hasPermission = hasPermission;
201
- function requirePermission(request, key, message) {
202
- var _a;
203
- return __awaiter(this, void 0, void 0, function () {
204
- var sessionToken, p;
205
- return __generator(this, function (_b) {
206
- switch (_b.label) {
207
- case 0:
208
- if (request.master) {
209
- return [2 /*return*/];
210
- }
211
- if (!key) {
212
- throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
213
- }
214
- sessionToken = (_a = request.user) === null || _a === void 0 ? void 0 : _a.getSessionToken();
215
- if (!sessionToken) {
216
- throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
217
- }
218
- return [4 /*yield*/, hasPermission(sessionToken, key)];
219
- case 1:
220
- p = _b.sent();
221
- if (!p) {
222
- throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
223
- }
224
- return [2 /*return*/];
225
- }
226
- });
227
- });
75
+ async function requirePermission(request, key, message) {
76
+ if (request.master) {
77
+ return;
78
+ }
79
+ if (!key) {
80
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
81
+ }
82
+ const sessionToken = request.user?.getSessionToken();
83
+ if (!sessionToken) {
84
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
85
+ }
86
+ const p = await hasPermission(sessionToken, key);
87
+ if (!p) {
88
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
89
+ }
228
90
  }
229
91
  exports.requirePermission = requirePermission;
230
- function getConfig(key) {
231
- return __awaiter(this, void 0, void 0, function () {
232
- var result, value;
233
- return __generator(this, function (_a) {
234
- switch (_a.label) {
235
- case 0: return [4 /*yield*/, new Parse.Query("".concat(exports.PREFIX, "Config"))
236
- .equalTo("key", key)
237
- .first({
238
- useMasterKey: true,
239
- })];
240
- case 1:
241
- result = _a.sent();
242
- value = result === null || result === void 0 ? void 0 : result.get("value");
243
- console.log("[@openinc/parse-server-opendash][Config]", key, value);
244
- return [2 /*return*/, value || ""];
245
- }
246
- });
92
+ async function getConfig(key) {
93
+ const result = await new Parse.Query(`${exports.PREFIX}Config`)
94
+ .equalTo("key", key)
95
+ .first({
96
+ useMasterKey: true,
247
97
  });
98
+ const value = result?.get("value");
99
+ console.log("[@openinc/parse-server-opendash][Config]", key, value);
100
+ return value || "";
248
101
  }
249
102
  exports.getConfig = getConfig;
250
- function getConfigBoolean(key) {
251
- return __awaiter(this, void 0, void 0, function () {
252
- var value;
253
- return __generator(this, function (_a) {
254
- switch (_a.label) {
255
- case 0: return [4 /*yield*/, getConfig(key)];
256
- case 1:
257
- value = _a.sent();
258
- if (!value || value.toLowerCase() === "false" || value === "0") {
259
- return [2 /*return*/, false];
260
- }
261
- return [2 /*return*/, true];
262
- }
263
- });
264
- });
103
+ async function getConfigBoolean(key) {
104
+ const value = await getConfig(key);
105
+ if (!value || value.toLowerCase() === "false" || value === "0") {
106
+ return false;
107
+ }
108
+ return true;
265
109
  }
266
110
  exports.getConfigBoolean = getConfigBoolean;
267
111
  function getEnv(key) {
@@ -269,288 +113,196 @@ function getEnv(key) {
269
113
  }
270
114
  exports.getEnv = getEnv;
271
115
  function getEnvBoolean(key) {
272
- var value = getEnv(key);
116
+ const value = getEnv(key);
273
117
  if (!value || value.toLowerCase() === "false" || value === "0") {
274
118
  return false;
275
119
  }
276
120
  return true;
277
121
  }
278
122
  exports.getEnvBoolean = getEnvBoolean;
279
- function ensureRole(name, options) {
280
- var _a;
281
- return __awaiter(this, void 0, void 0, function () {
282
- var label, acl, childRoles, role, changed, relation, currentChildRoles, currentChildRoleNames, _i, childRoles_1, childRoleName, childRole;
283
- return __generator(this, function (_b) {
284
- switch (_b.label) {
285
- case 0:
286
- label = (options === null || options === void 0 ? void 0 : options.label) || undefined;
287
- acl = (options === null || options === void 0 ? void 0 : options.acl) || new Parse.ACL();
288
- childRoles = (options === null || options === void 0 ? void 0 : options.childRoles) || undefined;
289
- console.log("[@openinc/parse-server-opendash] ensureRole(".concat(name, ")"), JSON.stringify({ label: label, acl: acl, childRoles: childRoles }, null, 2));
290
- return [4 /*yield*/, new Parse.Query(Parse.Role)
291
- .equalTo("name", name)
292
- .first({ useMasterKey: true })];
293
- case 1:
294
- role = _b.sent();
295
- if (!!role) return [3 /*break*/, 3];
296
- role = new Parse.Role(name, acl);
297
- role.set("label", label);
298
- return [4 /*yield*/, role.save(null, {
299
- useMasterKey: true,
300
- })];
301
- case 2:
302
- _b.sent();
303
- _b.label = 3;
304
- case 3:
305
- changed = false;
306
- if (role.get("label") !== label) {
307
- role.set("label", label);
308
- changed = true;
309
- }
310
- if (!(0, fast_deep_equal_1.default)(acl.toJSON(), (_a = role.getACL()) === null || _a === void 0 ? void 0 : _a.toJSON())) {
311
- role.setACL(acl);
312
- changed = true;
313
- }
314
- if (!(Array.isArray(childRoles) && childRoles.length > 0)) return [3 /*break*/, 8];
315
- relation = role.getRoles();
316
- return [4 /*yield*/, relation
317
- .query()
318
- .find({ useMasterKey: true })];
319
- case 4:
320
- currentChildRoles = _b.sent();
321
- currentChildRoleNames = currentChildRoles.map(function (role) {
322
- return role.get("name");
323
- });
324
- _i = 0, childRoles_1 = childRoles;
325
- _b.label = 5;
326
- case 5:
327
- if (!(_i < childRoles_1.length)) return [3 /*break*/, 8];
328
- childRoleName = childRoles_1[_i];
329
- if (currentChildRoleNames.includes(childRoleName)) {
330
- return [3 /*break*/, 7];
331
- }
332
- return [4 /*yield*/, new Parse.Query(Parse.Role)
333
- .equalTo("name", childRoleName)
334
- .find({ useMasterKey: true })];
335
- case 6:
336
- childRole = _b.sent();
337
- relation.add(childRole);
338
- changed = true;
339
- _b.label = 7;
340
- case 7:
341
- _i++;
342
- return [3 /*break*/, 5];
343
- case 8:
344
- if (!changed) return [3 /*break*/, 10];
345
- return [4 /*yield*/, role.save(null, { useMasterKey: true })];
346
- case 9:
347
- _b.sent();
348
- _b.label = 10;
349
- case 10: return [2 /*return*/];
350
- }
123
+ async function ensureRole(name, options) {
124
+ const label = options?.label || undefined;
125
+ const acl = options?.acl || new Parse.ACL();
126
+ const childRoles = options?.childRoles || undefined;
127
+ console.log(`[@openinc/parse-server-opendash] ensureRole(${name})`, JSON.stringify({ label, acl, childRoles }, null, 2));
128
+ let role = await new Parse.Query(Parse.Role)
129
+ .equalTo("name", name)
130
+ .first({ useMasterKey: true });
131
+ if (!role) {
132
+ role = new Parse.Role(name, acl);
133
+ role.set("label", label);
134
+ await role.save(null, {
135
+ useMasterKey: true,
351
136
  });
352
- });
137
+ }
138
+ let changed = false;
139
+ if (role.get("label") !== label) {
140
+ role.set("label", label);
141
+ changed = true;
142
+ }
143
+ if (!(0, fast_deep_equal_1.default)(acl.toJSON(), role.getACL()?.toJSON())) {
144
+ role.setACL(acl);
145
+ changed = true;
146
+ }
147
+ if (Array.isArray(childRoles) && childRoles.length > 0) {
148
+ const relation = role.getRoles();
149
+ const currentChildRoles = await relation
150
+ .query()
151
+ .find({ useMasterKey: true });
152
+ const currentChildRoleNames = currentChildRoles.map((role) => role.get("name"));
153
+ for (const childRoleName of childRoles) {
154
+ if (currentChildRoleNames.includes(childRoleName)) {
155
+ continue;
156
+ }
157
+ const childRole = await new Parse.Query(Parse.Role)
158
+ .equalTo("name", childRoleName)
159
+ .find({ useMasterKey: true });
160
+ relation.add(childRole);
161
+ changed = true;
162
+ }
163
+ }
164
+ if (changed) {
165
+ await role.save(null, { useMasterKey: true });
166
+ }
353
167
  }
354
168
  exports.ensureRole = ensureRole;
355
- function immutableField(request, fieldName, permissionName) {
356
- if (permissionName === void 0) { permissionName = "parse:edit-immutable-fields"; }
357
- return __awaiter(this, void 0, void 0, function () {
358
- var previousValue, nextValue;
359
- return __generator(this, function (_a) {
360
- switch (_a.label) {
361
- case 0:
362
- if (!request.original || request.master) {
363
- return [2 /*return*/];
364
- }
365
- previousValue = JSON.stringify(request.original.get(fieldName));
366
- nextValue = JSON.stringify(request.object.get(fieldName));
367
- if ((0, fast_deep_equal_1.default)(previousValue, nextValue)) {
368
- return [2 /*return*/];
369
- }
370
- return [4 /*yield*/, requirePermission(request, permissionName, "You are not allowed to edit the '".concat(fieldName, "' field."))];
371
- case 1:
372
- _a.sent();
373
- return [2 /*return*/];
374
- }
375
- });
376
- });
169
+ async function immutableField(request, fieldName, permissionName = "parse:edit-immutable-fields") {
170
+ if (!request.original || request.master) {
171
+ return;
172
+ }
173
+ const previousValue = JSON.stringify(request.original.get(fieldName));
174
+ const nextValue = JSON.stringify(request.object.get(fieldName));
175
+ if ((0, fast_deep_equal_1.default)(previousValue, nextValue)) {
176
+ return;
177
+ }
178
+ await requirePermission(request, permissionName, `You are not allowed to edit the '${fieldName}' field.`);
377
179
  }
378
180
  exports.immutableField = immutableField;
379
- function defaultHandler(request) {
380
- var _a, _b, _c;
381
- return __awaiter(this, void 0, void 0, function () {
382
- var className, currentSchema, userField, tenantField, user;
383
- return __generator(this, function (_d) {
384
- switch (_d.label) {
385
- case 0:
386
- className = request.object.className;
387
- if (request.master) {
388
- console.log("[@openinc/parse-server-opendash] Skipping default beforeSave() handler of ".concat(className, " for masterkey"));
389
- return [2 /*return*/];
390
- }
391
- if (!request.user) {
392
- throw new Error();
393
- }
394
- currentSchema = schema[className];
395
- if (!currentSchema) {
396
- console.warn("[@openinc/parse-server-opendash] Skipping default beforeSave() handler, no schema found for ".concat(className));
397
- return [2 /*return*/];
398
- }
399
- userField = !!((_a = currentSchema === null || currentSchema === void 0 ? void 0 : currentSchema.fields) === null || _a === void 0 ? void 0 : _a.user);
400
- tenantField = !!((_b = currentSchema === null || currentSchema === void 0 ? void 0 : currentSchema.fields) === null || _b === void 0 ? void 0 : _b.tenant);
401
- if (!userField) return [3 /*break*/, 2];
402
- return [4 /*yield*/, immutableField(request, "user")];
403
- case 1:
404
- _d.sent();
405
- _d.label = 2;
406
- case 2:
407
- if (!tenantField) return [3 /*break*/, 4];
408
- return [4 /*yield*/, immutableField(request, "tenant")];
409
- case 3:
410
- _d.sent();
411
- _d.label = 4;
412
- case 4:
413
- if (!!request.original) return [3 /*break*/, 6];
414
- if (userField) {
415
- request.object.set("user", request.user);
416
- }
417
- if (!tenantField) return [3 /*break*/, 6];
418
- return [4 /*yield*/, ((_c = request.user) === null || _c === void 0 ? void 0 : _c.fetch({
419
- useMasterKey: true,
420
- }))];
421
- case 5:
422
- user = (_d.sent());
423
- request.object.set("tenant", user.get("tenant"));
424
- _d.label = 6;
425
- case 6: return [2 /*return*/];
426
- }
427
- });
428
- });
181
+ async function defaultHandler(request) {
182
+ const className = request.object.className;
183
+ if (request.master) {
184
+ console.log(`[@openinc/parse-server-opendash] Skipping default beforeSave() handler of ${className} for masterkey`);
185
+ return;
186
+ }
187
+ if (!request.user) {
188
+ throw new Error();
189
+ }
190
+ const currentSchema = schema[className];
191
+ if (!currentSchema) {
192
+ console.warn(`[@openinc/parse-server-opendash] Skipping default beforeSave() handler, no schema found for ${className}`);
193
+ return;
194
+ }
195
+ const userField = !!currentSchema?.fields?.user;
196
+ const tenantField = !!currentSchema?.fields?.tenant;
197
+ if (userField) {
198
+ await immutableField(request, "user");
199
+ }
200
+ if (tenantField) {
201
+ await immutableField(request, "tenant");
202
+ }
203
+ if (!request.original) {
204
+ if (userField) {
205
+ request.object.set("user", request.user);
206
+ }
207
+ if (tenantField) {
208
+ const user = (await request.user?.fetch({
209
+ useMasterKey: true,
210
+ }));
211
+ request.object.set("tenant", user.get("tenant"));
212
+ }
213
+ }
429
214
  }
430
215
  exports.defaultHandler = defaultHandler;
431
- var beforeSaveHooks = {};
216
+ async function defaultAclHandler(request, options) {
217
+ const className = request.object.className;
218
+ const currentSchema = schema[className];
219
+ if (!currentSchema) {
220
+ console.warn(`[@openinc/parse-server-opendash] Skipping default beforeSave() ACL handler, no schema found for ${className}`);
221
+ return;
222
+ }
223
+ const userField = !!currentSchema?.fields?.user;
224
+ const tenantField = !!currentSchema?.fields?.tenant;
225
+ if (!options?.allowCustomACL || !request.object.getACL()) {
226
+ request.object.setACL(new Parse.ACL());
227
+ }
228
+ const acl = request.object.getACL();
229
+ acl.setRoleReadAccess("od-admin", true);
230
+ acl.setRoleWriteAccess("od-admin", true);
231
+ if (userField) {
232
+ const user = request.object.get("user");
233
+ if (user) {
234
+ acl.setReadAccess(user.id, true);
235
+ acl.setWriteAccess(user.id, true);
236
+ }
237
+ }
238
+ if (tenantField) {
239
+ const tenant = request.object.get("tenant");
240
+ if (tenant) {
241
+ acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
242
+ if (options?.allowTenantUserWrite) {
243
+ acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
244
+ }
245
+ acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
246
+ acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
247
+ }
248
+ }
249
+ }
250
+ exports.defaultAclHandler = defaultAclHandler;
251
+ const beforeSaveHooks = {};
432
252
  function beforeSaveHook(target, callback) {
433
- var className = typeof target === "string" ? target : new target().className;
253
+ // @ts-ignore
254
+ const className = typeof target === "string" ? target : target.className;
434
255
  if (!beforeSaveHooks[className]) {
435
256
  beforeSaveHooks[className] = [];
436
- Parse.Cloud.beforeSave(className, function beforeSaveHookFunction(request) {
437
- return __awaiter(this, void 0, void 0, function () {
438
- var _i, _a, fn;
439
- return __generator(this, function (_b) {
440
- switch (_b.label) {
441
- case 0:
442
- _i = 0, _a = beforeSaveHooks[className];
443
- _b.label = 1;
444
- case 1:
445
- if (!(_i < _a.length)) return [3 /*break*/, 4];
446
- fn = _a[_i];
447
- return [4 /*yield*/, fn(request)];
448
- case 2:
449
- _b.sent();
450
- _b.label = 3;
451
- case 3:
452
- _i++;
453
- return [3 /*break*/, 1];
454
- case 4: return [2 /*return*/];
455
- }
456
- });
457
- });
257
+ Parse.Cloud.beforeSave(className, async function beforeSaveHookFunction(request) {
258
+ for (const fn of beforeSaveHooks[className]) {
259
+ await fn(request);
260
+ }
458
261
  });
459
262
  }
460
263
  beforeSaveHooks[className].push(callback);
461
264
  }
462
265
  exports.beforeSaveHook = beforeSaveHook;
463
- var afterSaveHooks = {};
266
+ const afterSaveHooks = {};
464
267
  function afterSaveHook(target, callback) {
465
- var className = typeof target === "string" ? target : new target().className;
268
+ // @ts-ignore
269
+ const className = typeof target === "string" ? target : target.className;
466
270
  if (!afterSaveHooks[className]) {
467
271
  afterSaveHooks[className] = [];
468
- Parse.Cloud.afterSave(className, function afterSaveHookFunction(request) {
469
- return __awaiter(this, void 0, void 0, function () {
470
- var _i, _a, fn;
471
- return __generator(this, function (_b) {
472
- switch (_b.label) {
473
- case 0:
474
- _i = 0, _a = afterSaveHooks[className];
475
- _b.label = 1;
476
- case 1:
477
- if (!(_i < _a.length)) return [3 /*break*/, 4];
478
- fn = _a[_i];
479
- return [4 /*yield*/, fn(request)];
480
- case 2:
481
- _b.sent();
482
- _b.label = 3;
483
- case 3:
484
- _i++;
485
- return [3 /*break*/, 1];
486
- case 4: return [2 /*return*/];
487
- }
488
- });
489
- });
272
+ Parse.Cloud.afterSave(className, async function afterSaveHookFunction(request) {
273
+ for (const fn of afterSaveHooks[className]) {
274
+ await fn(request);
275
+ }
490
276
  });
491
277
  }
492
278
  afterSaveHooks[className].push(callback);
493
279
  }
494
280
  exports.afterSaveHook = afterSaveHook;
495
- var beforeDeleteHooks = {};
281
+ const beforeDeleteHooks = {};
496
282
  function beforeDeleteHook(target, callback) {
497
- var className = typeof target === "string" ? target : new target().className;
283
+ // @ts-ignore
284
+ const className = typeof target === "string" ? target : target.className;
498
285
  if (!beforeDeleteHooks[className]) {
499
286
  beforeDeleteHooks[className] = [];
500
- Parse.Cloud.beforeDelete(className, function beforeDeleteHookFunction(request) {
501
- return __awaiter(this, void 0, void 0, function () {
502
- var _i, _a, fn;
503
- return __generator(this, function (_b) {
504
- switch (_b.label) {
505
- case 0:
506
- _i = 0, _a = beforeDeleteHooks[className];
507
- _b.label = 1;
508
- case 1:
509
- if (!(_i < _a.length)) return [3 /*break*/, 4];
510
- fn = _a[_i];
511
- return [4 /*yield*/, fn(request)];
512
- case 2:
513
- _b.sent();
514
- _b.label = 3;
515
- case 3:
516
- _i++;
517
- return [3 /*break*/, 1];
518
- case 4: return [2 /*return*/];
519
- }
520
- });
521
- });
287
+ Parse.Cloud.beforeDelete(className, async function beforeDeleteHookFunction(request) {
288
+ for (const fn of beforeDeleteHooks[className]) {
289
+ await fn(request);
290
+ }
522
291
  });
523
292
  }
524
293
  beforeDeleteHooks[className].push(callback);
525
294
  }
526
295
  exports.beforeDeleteHook = beforeDeleteHook;
527
- var afterDeleteHooks = {};
296
+ const afterDeleteHooks = {};
528
297
  function afterDeleteHook(target, callback) {
529
- var className = typeof target === "string" ? target : new target().className;
298
+ // @ts-ignore
299
+ const className = typeof target === "string" ? target : target.className;
530
300
  if (!afterDeleteHooks[className]) {
531
301
  afterDeleteHooks[className] = [];
532
- Parse.Cloud.afterDelete(className, function afterDeleteHookFunction(request) {
533
- return __awaiter(this, void 0, void 0, function () {
534
- var _i, _a, fn;
535
- return __generator(this, function (_b) {
536
- switch (_b.label) {
537
- case 0:
538
- _i = 0, _a = afterDeleteHooks[className];
539
- _b.label = 1;
540
- case 1:
541
- if (!(_i < _a.length)) return [3 /*break*/, 4];
542
- fn = _a[_i];
543
- return [4 /*yield*/, fn(request)];
544
- case 2:
545
- _b.sent();
546
- _b.label = 3;
547
- case 3:
548
- _i++;
549
- return [3 /*break*/, 1];
550
- case 4: return [2 /*return*/];
551
- }
552
- });
553
- });
302
+ Parse.Cloud.afterDelete(className, async function afterDeleteHookFunction(request) {
303
+ for (const fn of afterDeleteHooks[className]) {
304
+ await fn(request);
305
+ }
554
306
  });
555
307
  }
556
308
  afterDeleteHooks[className].push(callback);