@openinc/parse-server-opendash 1.10.2 → 1.11.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 (258) 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/hooks/Alarm.d.ts +1 -1
  9. package/dist/hooks/Alarm.js +29 -95
  10. package/dist/hooks/AlarmAction.d.ts +1 -1
  11. package/dist/hooks/AlarmAction.js +9 -64
  12. package/dist/hooks/AlarmWebhook.d.ts +1 -1
  13. package/dist/hooks/AlarmWebhook.js +10 -64
  14. package/dist/hooks/Attachment.d.ts +1 -0
  15. package/dist/hooks/Attachment.js +18 -0
  16. package/dist/hooks/BDE_Form.d.ts +1 -1
  17. package/dist/hooks/BDE_Form.js +57 -114
  18. package/dist/hooks/BDE_List.d.ts +1 -1
  19. package/dist/hooks/BDE_List.js +11 -57
  20. package/dist/hooks/BDE_ListEntry.d.ts +1 -1
  21. package/dist/hooks/BDE_ListEntry.js +11 -57
  22. package/dist/hooks/BDE_Page.d.ts +1 -1
  23. package/dist/hooks/BDE_Page.js +19 -84
  24. package/dist/hooks/BDE_Result.d.ts +1 -1
  25. package/dist/hooks/BDE_Result.js +125 -177
  26. package/dist/hooks/BDE_Unit.d.ts +1 -1
  27. package/dist/hooks/BDE_Unit.js +11 -57
  28. package/dist/hooks/Config.d.ts +1 -1
  29. package/dist/hooks/Config.js +10 -64
  30. package/dist/hooks/Dashboard.d.ts +1 -1
  31. package/dist/hooks/Dashboard.js +26 -96
  32. package/dist/hooks/Group.d.ts +1 -0
  33. package/dist/hooks/Group.js +18 -0
  34. package/dist/hooks/Group_UserRelation.d.ts +1 -0
  35. package/dist/hooks/Group_UserRelation.js +18 -0
  36. package/dist/hooks/Knowledge_Article.d.ts +1 -0
  37. package/dist/hooks/Knowledge_Article.js +18 -0
  38. package/dist/hooks/Knowledge_Category.d.ts +1 -0
  39. package/dist/hooks/Knowledge_Category.js +18 -0
  40. package/dist/hooks/Knowledge_Document.d.ts +1 -0
  41. package/dist/hooks/Knowledge_Document.js +18 -0
  42. package/dist/hooks/Knowledge_DocumentPage.d.ts +1 -0
  43. package/dist/hooks/Knowledge_DocumentPage.js +18 -0
  44. package/dist/hooks/Knowledge_Video.d.ts +1 -0
  45. package/dist/hooks/Knowledge_Video.js +18 -0
  46. package/dist/hooks/Language.d.ts +1 -0
  47. package/dist/hooks/Language.js +18 -0
  48. package/dist/hooks/Maintenance_Article.d.ts +1 -0
  49. package/dist/hooks/Maintenance_Article.js +18 -0
  50. package/dist/hooks/Maintenance_Downtime.d.ts +1 -0
  51. package/dist/hooks/Maintenance_Downtime.js +18 -0
  52. package/dist/hooks/Maintenance_Duedate.d.ts +1 -0
  53. package/dist/hooks/Maintenance_Duedate.js +18 -0
  54. package/dist/hooks/Maintenance_Frequency.d.ts +1 -0
  55. package/dist/hooks/Maintenance_Frequency.js +18 -0
  56. package/dist/hooks/Maintenance_Issuecategory.d.ts +1 -0
  57. package/dist/hooks/Maintenance_Issuecategory.js +18 -0
  58. package/dist/hooks/Maintenance_Kanban_State.d.ts +1 -0
  59. package/dist/hooks/Maintenance_Kanban_State.js +18 -0
  60. package/dist/hooks/Maintenance_Media.d.ts +1 -0
  61. package/dist/hooks/Maintenance_Media.js +18 -0
  62. package/dist/hooks/Maintenance_Priority.d.ts +1 -0
  63. package/dist/hooks/Maintenance_Priority.js +18 -0
  64. package/dist/hooks/Maintenance_Restriction.d.ts +1 -0
  65. package/dist/hooks/Maintenance_Restriction.js +18 -0
  66. package/dist/hooks/Maintenance_Schedule.d.ts +1 -0
  67. package/dist/hooks/Maintenance_Schedule.js +18 -0
  68. package/dist/hooks/Maintenance_Schedule_Step.d.ts +1 -0
  69. package/dist/hooks/Maintenance_Schedule_Step.js +18 -0
  70. package/dist/hooks/Maintenance_Ticket.d.ts +1 -0
  71. package/dist/hooks/Maintenance_Ticket.js +18 -0
  72. package/dist/hooks/Maintenance_Ticket_Issuecategory.d.ts +1 -0
  73. package/dist/hooks/Maintenance_Ticket_Issuecategory.js +18 -0
  74. package/dist/hooks/Maintenance_Ticket_Kanban_State.d.ts +1 -0
  75. package/dist/hooks/Maintenance_Ticket_Kanban_State.js +18 -0
  76. package/dist/hooks/Maintenance_Ticket_Source.d.ts +1 -0
  77. package/dist/hooks/Maintenance_Ticket_Source.js +18 -0
  78. package/dist/hooks/NavigationGroup.d.ts +1 -1
  79. package/dist/hooks/NavigationGroup.js +9 -64
  80. package/dist/hooks/NavigationItem.d.ts +1 -1
  81. package/dist/hooks/NavigationItem.js +10 -64
  82. package/dist/hooks/Notification.d.ts +1 -1
  83. package/dist/hooks/Notification.js +55 -153
  84. package/dist/hooks/Permission.d.ts +1 -1
  85. package/dist/hooks/Permission.js +9 -64
  86. package/dist/hooks/Push.d.ts +1 -1
  87. package/dist/hooks/Push.js +24 -80
  88. package/dist/hooks/Report.d.ts +1 -1
  89. package/dist/hooks/Report.js +10 -64
  90. package/dist/hooks/Share.d.ts +1 -1
  91. package/dist/hooks/Share.js +10 -64
  92. package/dist/hooks/Source.d.ts +1 -1
  93. package/dist/hooks/Source.js +123 -240
  94. package/dist/hooks/SourceMeta.d.ts +1 -1
  95. package/dist/hooks/SourceMeta.js +36 -115
  96. package/dist/hooks/Tenant.d.ts +1 -1
  97. package/dist/hooks/Tenant.js +87 -168
  98. package/dist/hooks/TenantMeta.d.ts +1 -1
  99. package/dist/hooks/TenantMeta.js +6 -56
  100. package/dist/hooks/TenantTrustedDomain.d.ts +1 -1
  101. package/dist/hooks/TenantTrustedDomain.js +6 -56
  102. package/dist/hooks/UserData.d.ts +1 -1
  103. package/dist/hooks/UserData.js +10 -64
  104. package/dist/hooks/WebPush.d.ts +1 -1
  105. package/dist/hooks/WebPush.js +21 -77
  106. package/dist/hooks/Widget.d.ts +1 -1
  107. package/dist/hooks/Widget.js +10 -64
  108. package/dist/hooks/WidgetPreset.d.ts +1 -0
  109. package/dist/hooks/WidgetPreset.js +18 -0
  110. package/dist/hooks/_User.js +102 -208
  111. package/dist/hooks/_beforeLogin.js +16 -71
  112. package/dist/hooks/_init.js +15 -78
  113. package/dist/index.d.ts +4 -0
  114. package/dist/index.js +241 -487
  115. package/dist/ow.js +79 -137
  116. package/dist/types/Alarm.d.ts +25 -5
  117. package/dist/types/Alarm.js +57 -0
  118. package/dist/types/AlarmAction.d.ts +29 -7
  119. package/dist/types/AlarmAction.js +63 -0
  120. package/dist/types/AlarmWebhook.d.ts +30 -9
  121. package/dist/types/AlarmWebhook.js +63 -0
  122. package/dist/types/Attachment.d.ts +21 -0
  123. package/dist/types/Attachment.js +29 -0
  124. package/dist/types/BDE_Form.d.ts +14 -3
  125. package/dist/types/BDE_Form.js +33 -0
  126. package/dist/types/BDE_List.d.ts +6 -1
  127. package/dist/types/BDE_List.js +15 -0
  128. package/dist/types/BDE_ListEntry.d.ts +12 -4
  129. package/dist/types/BDE_ListEntry.js +27 -0
  130. package/dist/types/BDE_Page.d.ts +9 -2
  131. package/dist/types/BDE_Page.js +21 -0
  132. package/dist/types/BDE_Result.d.ts +11 -2
  133. package/dist/types/BDE_Result.js +27 -0
  134. package/dist/types/BDE_Unit.d.ts +14 -3
  135. package/dist/types/BDE_Unit.js +33 -0
  136. package/dist/types/Config.d.ts +14 -3
  137. package/dist/types/Config.js +33 -0
  138. package/dist/types/Dashboard.d.ts +24 -5
  139. package/dist/types/Dashboard.js +51 -0
  140. package/dist/types/Group.d.ts +18 -0
  141. package/dist/types/Group.js +23 -0
  142. package/dist/types/Group_UserRelation.d.ts +19 -0
  143. package/dist/types/Group_UserRelation.js +23 -0
  144. package/dist/types/Knowledge_Article.d.ts +29 -0
  145. package/dist/types/Knowledge_Article.js +41 -0
  146. package/dist/types/Knowledge_Category.d.ts +25 -0
  147. package/dist/types/Knowledge_Category.js +35 -0
  148. package/dist/types/Knowledge_Document.d.ts +29 -0
  149. package/dist/types/Knowledge_Document.js +41 -0
  150. package/dist/types/Knowledge_DocumentPage.d.ts +27 -0
  151. package/dist/types/Knowledge_DocumentPage.js +41 -0
  152. package/dist/types/Knowledge_Video.d.ts +35 -0
  153. package/dist/types/Knowledge_Video.js +53 -0
  154. package/dist/types/Language.d.ts +14 -0
  155. package/dist/types/Language.js +17 -0
  156. package/dist/types/Maintenance_Article.d.ts +33 -0
  157. package/dist/types/Maintenance_Article.js +47 -0
  158. package/dist/types/Maintenance_Downtime.d.ts +26 -0
  159. package/dist/types/Maintenance_Downtime.js +35 -0
  160. package/dist/types/Maintenance_Duedate.d.ts +35 -0
  161. package/dist/types/Maintenance_Duedate.js +53 -0
  162. package/dist/types/Maintenance_Frequency.d.ts +26 -0
  163. package/dist/types/Maintenance_Frequency.js +35 -0
  164. package/dist/types/Maintenance_Issuecategory.d.ts +34 -0
  165. package/dist/types/Maintenance_Issuecategory.js +53 -0
  166. package/dist/types/Maintenance_Kanban_State.d.ts +33 -0
  167. package/dist/types/Maintenance_Kanban_State.js +53 -0
  168. package/dist/types/Maintenance_Media.d.ts +21 -0
  169. package/dist/types/Maintenance_Media.js +29 -0
  170. package/dist/types/Maintenance_Priority.d.ts +26 -0
  171. package/dist/types/Maintenance_Priority.js +35 -0
  172. package/dist/types/Maintenance_Restriction.d.ts +26 -0
  173. package/dist/types/Maintenance_Restriction.js +35 -0
  174. package/dist/types/Maintenance_Schedule.d.ts +29 -0
  175. package/dist/types/Maintenance_Schedule.js +41 -0
  176. package/dist/types/Maintenance_Schedule_Step.d.ts +34 -0
  177. package/dist/types/Maintenance_Schedule_Step.js +53 -0
  178. package/dist/types/Maintenance_Ticket.d.ts +25 -0
  179. package/dist/types/Maintenance_Ticket.js +35 -0
  180. package/dist/types/Maintenance_Ticket_Issuecategory.d.ts +27 -0
  181. package/dist/types/Maintenance_Ticket_Issuecategory.js +35 -0
  182. package/dist/types/Maintenance_Ticket_Kanban_State.d.ts +27 -0
  183. package/dist/types/Maintenance_Ticket_Kanban_State.js +35 -0
  184. package/dist/types/Maintenance_Ticket_Source.d.ts +27 -0
  185. package/dist/types/Maintenance_Ticket_Source.js +35 -0
  186. package/dist/types/NavigationGroup.d.ts +14 -3
  187. package/dist/types/NavigationGroup.js +33 -0
  188. package/dist/types/NavigationItem.d.ts +36 -9
  189. package/dist/types/NavigationItem.js +81 -0
  190. package/dist/types/Notification.d.ts +20 -5
  191. package/dist/types/Notification.js +45 -0
  192. package/dist/types/Permission.d.ts +9 -2
  193. package/dist/types/Permission.js +21 -0
  194. package/dist/types/Push.d.ts +18 -5
  195. package/dist/types/Push.js +39 -0
  196. package/dist/types/Report.d.ts +16 -3
  197. package/dist/types/Report.js +39 -0
  198. package/dist/types/Share.d.ts +25 -8
  199. package/dist/types/Share.js +51 -0
  200. package/dist/types/Source.d.ts +20 -5
  201. package/dist/types/Source.js +45 -0
  202. package/dist/types/SourceMeta.d.ts +9 -2
  203. package/dist/types/SourceMeta.js +21 -0
  204. package/dist/types/Tenant.d.ts +20 -5
  205. package/dist/types/Tenant.js +45 -0
  206. package/dist/types/TenantMeta.d.ts +7 -2
  207. package/dist/types/TenantMeta.js +15 -0
  208. package/dist/types/TenantTrustedDomain.d.ts +10 -3
  209. package/dist/types/TenantTrustedDomain.js +21 -0
  210. package/dist/types/UserData.d.ts +12 -3
  211. package/dist/types/UserData.js +27 -0
  212. package/dist/types/WebPush.d.ts +13 -4
  213. package/dist/types/WebPush.js +27 -0
  214. package/dist/types/Widget.d.ts +14 -3
  215. package/dist/types/Widget.js +33 -0
  216. package/dist/types/WidgetPreset.d.ts +40 -0
  217. package/dist/types/WidgetPreset.js +65 -0
  218. package/dist/types/_Role.d.ts +3 -3
  219. package/dist/types/_Session.d.ts +5 -5
  220. package/dist/types/_User.d.ts +11 -9
  221. package/dist/types/index.d.ts +108 -29
  222. package/dist/types/index.js +104 -0
  223. package/package.json +2 -2
  224. package/schema/Alarm.json +4 -0
  225. package/schema/AlarmAction.json +5 -0
  226. package/schema/Attachment.json +44 -0
  227. package/schema/BDE_Form.json +9 -10
  228. package/schema/BDE_List.json +7 -9
  229. package/schema/BDE_ListEntry.json +7 -9
  230. package/schema/BDE_Page.json +7 -9
  231. package/schema/BDE_Result.json +7 -9
  232. package/schema/BDE_Unit.json +9 -8
  233. package/schema/Dashboard.json +9 -0
  234. package/schema/Group.json +39 -0
  235. package/schema/Group_UserRelation.json +40 -0
  236. package/schema/Knowledge_Article.json +54 -0
  237. package/schema/Knowledge_Category.json +50 -0
  238. package/schema/Knowledge_Document.json +54 -0
  239. package/schema/Knowledge_DocumentPage.json +53 -0
  240. package/schema/Knowledge_Video.json +62 -0
  241. package/schema/Language.json +35 -0
  242. package/schema/Maintenance_Article.json +56 -0
  243. package/schema/Maintenance_Downtime.json +48 -0
  244. package/schema/Maintenance_Duedate.json +61 -0
  245. package/schema/Maintenance_Frequency.json +48 -0
  246. package/schema/Maintenance_Issuecategory.json +60 -0
  247. package/schema/Maintenance_Kanban_State.json +60 -0
  248. package/schema/Maintenance_Media.json +43 -0
  249. package/schema/Maintenance_Priority.json +48 -0
  250. package/schema/Maintenance_Restriction.json +48 -0
  251. package/schema/Maintenance_Schedule.json +53 -0
  252. package/schema/Maintenance_Schedule_Step.json +60 -0
  253. package/schema/Maintenance_Ticket.json +47 -0
  254. package/schema/Maintenance_Ticket_Issuecategory.json +48 -0
  255. package/schema/Maintenance_Ticket_Kanban_State.json +48 -0
  256. package/schema/Maintenance_Ticket_Source.json +48 -0
  257. package/schema/Tenant.json +3 -0
  258. package/schema/WidgetPreset.json +79 -0
package/dist/index.js CHANGED
@@ -1,267 +1,113 @@
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 config = await Parse.Config.get();
22
+ exports.PREFIX = config.get("OPENDASH_CLASS_PREFIX") || exports.PREFIX;
23
+ const schemaConfig = await (0, parse_server_schema_1.loadConfig)(cfg.configPath);
24
+ try {
25
+ await (0, parse_server_schema_1.up)(schemaConfig, (0, path_1.resolve)(__dirname, "../schema"), {
26
+ prefix: exports.PREFIX,
27
+ deleteClasses: false,
28
+ deleteFields: false,
105
29
  });
106
- });
30
+ }
31
+ catch (error) {
32
+ console.error("Error while updating schema");
33
+ console.error(error);
34
+ }
35
+ schema = Object.fromEntries((await Parse.Schema.all()).map((schema) => [schema.className, schema]));
36
+ await initDefaultRoles();
37
+ await initWebPush();
38
+ await (0, _init_1.init)();
39
+ await (0, _init_2.init)();
107
40
  }
108
41
  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
- }
42
+ async function initDefaultRoles() {
43
+ try {
44
+ await ensureRole("Admin");
45
+ await ensureRole("od-user");
46
+ await ensureRole("od-admin", {
47
+ childRoles: ["Admin"],
146
48
  });
147
- });
49
+ await ensureRole("od-tenant-user");
50
+ await ensureRole("od-tenant-verified");
51
+ await ensureRole("od-tenant-global-visible");
52
+ await ensureRole("od-tenant-admin");
53
+ }
54
+ catch (error) {
55
+ console.error(error);
56
+ }
148
57
  }
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
- });
58
+ async function initWebPush() {
59
+ try {
60
+ if (!(await getConfigBoolean("WEB_PUSH_ENABLED"))) {
61
+ return;
62
+ }
63
+ web_push_1.default.setVapidDetails((await getConfig("WEB_PUSH_HOST")), (await getConfig("WEB_PUSH_VAPID_PUBLIC_KEY")), (await getConfig("WEB_PUSH_VAPID_PRIVATE_KEY")));
64
+ web_push_1.default.setGCMAPIKey((await getConfig("WEB_PUSH_FCM_KEY")));
65
+ }
66
+ catch (error) {
67
+ console.error(error);
68
+ }
184
69
  }
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
- });
70
+ async function hasPermission(sessionToken, key) {
71
+ const result = await new Parse.Query(`${exports.PREFIX}Permission`)
72
+ .equalTo("key", key)
73
+ .first({ sessionToken });
74
+ return !!result;
199
75
  }
200
76
  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
- });
77
+ async function requirePermission(request, key, message) {
78
+ if (request.master) {
79
+ return;
80
+ }
81
+ if (!key) {
82
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
83
+ }
84
+ const sessionToken = request.user?.getSessionToken();
85
+ if (!sessionToken) {
86
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
87
+ }
88
+ const p = await hasPermission(sessionToken, key);
89
+ if (!p) {
90
+ throw new Parse.Error(119, "Missing Permission: " + (message || key || "Master Key Only"));
91
+ }
228
92
  }
229
93
  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
- });
94
+ async function getConfig(key) {
95
+ const result = await new Parse.Query(`${exports.PREFIX}Config`)
96
+ .equalTo("key", key)
97
+ .first({
98
+ useMasterKey: true,
247
99
  });
100
+ const value = result?.get("value");
101
+ console.log("[@openinc/parse-server-opendash][Config]", key, value);
102
+ return value || "";
248
103
  }
249
104
  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
- });
105
+ async function getConfigBoolean(key) {
106
+ const value = await getConfig(key);
107
+ if (!value || value.toLowerCase() === "false" || value === "0") {
108
+ return false;
109
+ }
110
+ return true;
265
111
  }
266
112
  exports.getConfigBoolean = getConfigBoolean;
267
113
  function getEnv(key) {
@@ -269,288 +115,196 @@ function getEnv(key) {
269
115
  }
270
116
  exports.getEnv = getEnv;
271
117
  function getEnvBoolean(key) {
272
- var value = getEnv(key);
118
+ const value = getEnv(key);
273
119
  if (!value || value.toLowerCase() === "false" || value === "0") {
274
120
  return false;
275
121
  }
276
122
  return true;
277
123
  }
278
124
  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
- }
125
+ async function ensureRole(name, options) {
126
+ const label = options?.label || undefined;
127
+ const acl = options?.acl || new Parse.ACL();
128
+ const childRoles = options?.childRoles || undefined;
129
+ console.log(`[@openinc/parse-server-opendash] ensureRole(${name})`, JSON.stringify({ label, acl, childRoles }, null, 2));
130
+ let role = await new Parse.Query(Parse.Role)
131
+ .equalTo("name", name)
132
+ .first({ useMasterKey: true });
133
+ if (!role) {
134
+ role = new Parse.Role(name, acl);
135
+ role.set("label", label);
136
+ await role.save(null, {
137
+ useMasterKey: true,
351
138
  });
352
- });
139
+ }
140
+ let changed = false;
141
+ if (role.get("label") !== label) {
142
+ role.set("label", label);
143
+ changed = true;
144
+ }
145
+ if (!(0, fast_deep_equal_1.default)(acl.toJSON(), role.getACL()?.toJSON())) {
146
+ role.setACL(acl);
147
+ changed = true;
148
+ }
149
+ if (Array.isArray(childRoles) && childRoles.length > 0) {
150
+ const relation = role.getRoles();
151
+ const currentChildRoles = await relation
152
+ .query()
153
+ .find({ useMasterKey: true });
154
+ const currentChildRoleNames = currentChildRoles.map((role) => role.get("name"));
155
+ for (const childRoleName of childRoles) {
156
+ if (currentChildRoleNames.includes(childRoleName)) {
157
+ continue;
158
+ }
159
+ const childRole = await new Parse.Query(Parse.Role)
160
+ .equalTo("name", childRoleName)
161
+ .find({ useMasterKey: true });
162
+ relation.add(childRole);
163
+ changed = true;
164
+ }
165
+ }
166
+ if (changed) {
167
+ await role.save(null, { useMasterKey: true });
168
+ }
353
169
  }
354
170
  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
- });
171
+ async function immutableField(request, fieldName, permissionName = "parse:edit-immutable-fields") {
172
+ if (!request.original || request.master) {
173
+ return;
174
+ }
175
+ const previousValue = JSON.stringify(request.original.get(fieldName));
176
+ const nextValue = JSON.stringify(request.object.get(fieldName));
177
+ if ((0, fast_deep_equal_1.default)(previousValue, nextValue)) {
178
+ return;
179
+ }
180
+ await requirePermission(request, permissionName, `You are not allowed to edit the '${fieldName}' field.`);
377
181
  }
378
182
  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
- });
183
+ async function defaultHandler(request) {
184
+ const className = request.object.className;
185
+ if (request.master) {
186
+ console.log(`[@openinc/parse-server-opendash] Skipping default beforeSave() handler of ${className} for masterkey`);
187
+ return;
188
+ }
189
+ if (!request.user) {
190
+ throw new Error();
191
+ }
192
+ const currentSchema = schema[className];
193
+ if (!currentSchema) {
194
+ console.warn(`[@openinc/parse-server-opendash] Skipping default beforeSave() handler, no schema found for ${className}`);
195
+ return;
196
+ }
197
+ const userField = !!currentSchema?.fields?.user;
198
+ const tenantField = !!currentSchema?.fields?.tenant;
199
+ if (userField) {
200
+ await immutableField(request, "user");
201
+ }
202
+ if (tenantField) {
203
+ await immutableField(request, "tenant");
204
+ }
205
+ if (!request.original) {
206
+ if (userField) {
207
+ request.object.set("user", request.user);
208
+ }
209
+ if (tenantField) {
210
+ const user = (await request.user?.fetch({
211
+ useMasterKey: true,
212
+ }));
213
+ request.object.set("tenant", user.get("tenant"));
214
+ }
215
+ }
429
216
  }
430
217
  exports.defaultHandler = defaultHandler;
431
- var beforeSaveHooks = {};
218
+ async function defaultAclHandler(request, options) {
219
+ const className = request.object.className;
220
+ const currentSchema = schema[className];
221
+ if (!currentSchema) {
222
+ console.warn(`[@openinc/parse-server-opendash] Skipping default beforeSave() ACL handler, no schema found for ${className}`);
223
+ return;
224
+ }
225
+ const userField = !!currentSchema?.fields?.user;
226
+ const tenantField = !!currentSchema?.fields?.tenant;
227
+ if (!options?.allowCustomACL || !request.object.getACL()) {
228
+ request.object.setACL(new Parse.ACL());
229
+ }
230
+ const acl = request.object.getACL();
231
+ acl.setRoleReadAccess("od-admin", true);
232
+ acl.setRoleWriteAccess("od-admin", true);
233
+ if (userField) {
234
+ const user = request.object.get("user");
235
+ if (user) {
236
+ acl.setReadAccess(user.id, true);
237
+ acl.setWriteAccess(user.id, true);
238
+ }
239
+ }
240
+ if (tenantField) {
241
+ const tenant = request.object.get("tenant");
242
+ if (tenant) {
243
+ acl.setRoleReadAccess(`od-tenant-user-${tenant.id}`, true);
244
+ if (options?.allowTenantUserWrite) {
245
+ acl.setRoleWriteAccess(`od-tenant-user-${tenant.id}`, true);
246
+ }
247
+ acl.setRoleReadAccess(`od-tenant-admin-${tenant.id}`, true);
248
+ acl.setRoleWriteAccess(`od-tenant-admin-${tenant.id}`, true);
249
+ }
250
+ }
251
+ }
252
+ exports.defaultAclHandler = defaultAclHandler;
253
+ const beforeSaveHooks = {};
432
254
  function beforeSaveHook(target, callback) {
433
- var className = typeof target === "string" ? target : new target().className;
255
+ // @ts-ignore
256
+ const className = typeof target === "string" ? target : target.className;
434
257
  if (!beforeSaveHooks[className]) {
435
258
  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
- });
259
+ Parse.Cloud.beforeSave(className, async function beforeSaveHookFunction(request) {
260
+ for (const fn of beforeSaveHooks[className]) {
261
+ await fn(request);
262
+ }
458
263
  });
459
264
  }
460
265
  beforeSaveHooks[className].push(callback);
461
266
  }
462
267
  exports.beforeSaveHook = beforeSaveHook;
463
- var afterSaveHooks = {};
268
+ const afterSaveHooks = {};
464
269
  function afterSaveHook(target, callback) {
465
- var className = typeof target === "string" ? target : new target().className;
270
+ // @ts-ignore
271
+ const className = typeof target === "string" ? target : target.className;
466
272
  if (!afterSaveHooks[className]) {
467
273
  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
- });
274
+ Parse.Cloud.afterSave(className, async function afterSaveHookFunction(request) {
275
+ for (const fn of afterSaveHooks[className]) {
276
+ await fn(request);
277
+ }
490
278
  });
491
279
  }
492
280
  afterSaveHooks[className].push(callback);
493
281
  }
494
282
  exports.afterSaveHook = afterSaveHook;
495
- var beforeDeleteHooks = {};
283
+ const beforeDeleteHooks = {};
496
284
  function beforeDeleteHook(target, callback) {
497
- var className = typeof target === "string" ? target : new target().className;
285
+ // @ts-ignore
286
+ const className = typeof target === "string" ? target : target.className;
498
287
  if (!beforeDeleteHooks[className]) {
499
288
  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
- });
289
+ Parse.Cloud.beforeDelete(className, async function beforeDeleteHookFunction(request) {
290
+ for (const fn of beforeDeleteHooks[className]) {
291
+ await fn(request);
292
+ }
522
293
  });
523
294
  }
524
295
  beforeDeleteHooks[className].push(callback);
525
296
  }
526
297
  exports.beforeDeleteHook = beforeDeleteHook;
527
- var afterDeleteHooks = {};
298
+ const afterDeleteHooks = {};
528
299
  function afterDeleteHook(target, callback) {
529
- var className = typeof target === "string" ? target : new target().className;
300
+ // @ts-ignore
301
+ const className = typeof target === "string" ? target : target.className;
530
302
  if (!afterDeleteHooks[className]) {
531
303
  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
- });
304
+ Parse.Cloud.afterDelete(className, async function afterDeleteHookFunction(request) {
305
+ for (const fn of afterDeleteHooks[className]) {
306
+ await fn(request);
307
+ }
554
308
  });
555
309
  }
556
310
  afterDeleteHooks[className].push(callback);