@olympeio-extensions/scheduler 2.7.4 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/.Scheduler.newRel.json +6 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Create_Scheduled_Task.newInst.json +2 -2
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Find_Scheduled_Tasks.newInst.json +77 -306
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Find_Scheduled_Tasks.newRel.json +551 -1097
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Find_Scheduled_Tasks.updateInst.json +6 -16
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduled_Task.newInst.json +35 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduled_Task.newRel.json +60 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduled_Tasks_List.newInst.json +389 -298
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduled_Tasks_List.newRel.json +1929 -1311
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduled_Tasks_List.updateInst.json +10 -14
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduler_Service.newInst.json +49 -417
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduler_Service.newRel.json +258 -1392
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Scheduler_Service.updateInst.json +8 -8
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Stop_Scheduled_Task.newInst.json +24 -5
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Stop_Scheduled_Task.newRel.json +96 -18
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Subscribe_To_Instance.newInst.json +53 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/Subscribe_To_Instance.newRel.json +133 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/.test.newRel.json +12 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Attach_Data_To_Project.newInst.json +187 -66
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Attach_Data_To_Project.newRel.json +718 -244
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Attach_Data_To_Project.updateInst.json +57 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Create_Test_Data.newInst.json +313 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Create_Test_Data.newRel.json +1189 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Create_Test_Data.updateInst.json +27 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Scheduler_test.newInst.json +314 -234
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Scheduler_test.newRel.json +1373 -1001
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Scheduler_test.updateInst.json +21 -1
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Test_Data_Model.newInst.json +44 -0
- package/codeAsData/olympeio-extensions.scheduler/Olympe/Extensions/Others/Scheduler/test/Test_Data_Model.newRel.json +109 -0
- package/main-node.js +38 -1
- package/main-node.js.map +1 -1
- package/main-web.js +38 -1
- package/main-web.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"p": {
|
|
6
6
|
"016be61ab921cb3bdef9": {
|
|
7
7
|
"c": 8,
|
|
8
|
-
"t": "
|
|
8
|
+
"t": "018fa524530d5fa2a710"
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"t": "017f44bad891e2055eb4"
|
|
@@ -20,6 +20,16 @@
|
|
|
20
20
|
},
|
|
21
21
|
"t": "017f44bb07f6d933a6f3"
|
|
22
22
|
},
|
|
23
|
+
{
|
|
24
|
+
"o": 2,
|
|
25
|
+
"p": {
|
|
26
|
+
"017c9d106f97b95801bb": {
|
|
27
|
+
"c": 8,
|
|
28
|
+
"t": "018fa5ff871b1fe1bcc9"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"t": "017f46009d37acec345b"
|
|
32
|
+
},
|
|
23
33
|
{
|
|
24
34
|
"o": 2,
|
|
25
35
|
"p": {
|
|
@@ -73,6 +83,16 @@
|
|
|
73
83
|
}
|
|
74
84
|
},
|
|
75
85
|
"t": "01808f0ae04d8d886481"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"o": 2,
|
|
89
|
+
"p": {
|
|
90
|
+
"0168a431d91f25780001": {
|
|
91
|
+
"c": 8,
|
|
92
|
+
"t": "018fa5117f44edc70017"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"t": "018fa511771a687accb1"
|
|
76
96
|
}
|
|
77
97
|
],
|
|
78
98
|
"optionalOperations": [
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"operations": [
|
|
3
|
+
{
|
|
4
|
+
"o": 1,
|
|
5
|
+
"p": {
|
|
6
|
+
"ff023000000000000011": "Test Data Model"
|
|
7
|
+
},
|
|
8
|
+
"t": "018fa51723ab6ee7f733"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"o": 1,
|
|
12
|
+
"p": {
|
|
13
|
+
"01621f6ab58c2f884654": 19864.5,
|
|
14
|
+
"01621f6ab6ac89348f20": 19813.5
|
|
15
|
+
},
|
|
16
|
+
"t": "018fa51740e40af83301"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"o": 1,
|
|
20
|
+
"p": {
|
|
21
|
+
"fdff023000000000000011": "Test Data",
|
|
22
|
+
"ff023000000000000011": "Test Data"
|
|
23
|
+
},
|
|
24
|
+
"t": "018fa51740e42282ca17"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"o": 1,
|
|
28
|
+
"p": {
|
|
29
|
+
"ff023000000000000011": "now date"
|
|
30
|
+
},
|
|
31
|
+
"t": "018fa517526b89c426ec"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"o": 1,
|
|
35
|
+
"p": {
|
|
36
|
+
"016d1bb681929c2cc3f1": 0
|
|
37
|
+
},
|
|
38
|
+
"t": "01916bda44d165f0cb76"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"optionalOperations": [
|
|
42
|
+
],
|
|
43
|
+
"rootTag": "018fa51723ab6ee7f733"
|
|
44
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"operations": [
|
|
3
|
+
{
|
|
4
|
+
"l": "018fa51723ab6ee7f733",
|
|
5
|
+
"m": "016a697ef00ce7554692",
|
|
6
|
+
"o": 4,
|
|
7
|
+
"r": "018fa51740e42282ca17"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"l": "018fa51723ab6ee7f733",
|
|
11
|
+
"m": "ff022000000000000000",
|
|
12
|
+
"o": 4,
|
|
13
|
+
"r": "0163a68ce44f3d1fa84c"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"l": "018fa51723ab6ee7f733",
|
|
17
|
+
"m": "ff02200000000000000f",
|
|
18
|
+
"o": 4,
|
|
19
|
+
"r": "018fa51740e42282ca17"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"l": "018fa51740e40af83301",
|
|
23
|
+
"m": "ff022000000000000000",
|
|
24
|
+
"o": 4,
|
|
25
|
+
"r": "01621f6ab29d770a3bba"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"l": "018fa51740e42282ca17",
|
|
29
|
+
"m": "0161ae97622bb21f335b",
|
|
30
|
+
"o": 4,
|
|
31
|
+
"r": "018fa51740e40af83301"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"l": "018fa51740e42282ca17",
|
|
35
|
+
"m": "016324fde11a836087c2",
|
|
36
|
+
"o": 4,
|
|
37
|
+
"r": "017f49cc0b27dbef69da"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"l": "018fa51740e42282ca17",
|
|
41
|
+
"m": "ff022000000000000000",
|
|
42
|
+
"o": 4,
|
|
43
|
+
"r": "016324fde11a836f76c2"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"l": "018fa51740e42282ca17",
|
|
47
|
+
"m": "ff02200000000000000c",
|
|
48
|
+
"o": 4,
|
|
49
|
+
"r": "018fa517526b89c426ec"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"l": "018fa51740e42282ca17",
|
|
53
|
+
"m": "ff02200000000000000e",
|
|
54
|
+
"o": 4,
|
|
55
|
+
"r": "ff021000000000000001"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"l": "018fa51740e42282ca17",
|
|
59
|
+
"m": "ff02200000000000000f",
|
|
60
|
+
"o": 4,
|
|
61
|
+
"r": "018fa51740e40af83301"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"l": "018fa51740e42282ca17",
|
|
65
|
+
"m": "ff02200000000000000f",
|
|
66
|
+
"o": 4,
|
|
67
|
+
"r": "018fa517526b89c426ec"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"l": "018fa517526b89c426ec",
|
|
71
|
+
"m": "ff022000000000000000",
|
|
72
|
+
"o": 4,
|
|
73
|
+
"r": "ff021000000000000005"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"l": "018fa517526b89c426ec",
|
|
77
|
+
"m": "ff02200000000000000d",
|
|
78
|
+
"o": 4,
|
|
79
|
+
"r": "ff021000000000000014"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"l": "01916bda44d165f0cb76",
|
|
83
|
+
"m": "019131fb930466a1ad7a",
|
|
84
|
+
"o": 4,
|
|
85
|
+
"r": "018fa517526b89c426ec"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"l": "01916bda44d165f0cb76",
|
|
89
|
+
"m": "ff022000000000000000",
|
|
90
|
+
"o": 4,
|
|
91
|
+
"r": "019131fb930466a1ad79"
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"optionalOperations": [
|
|
95
|
+
{
|
|
96
|
+
"l": "01808f130c95e58a3645",
|
|
97
|
+
"m": "016a697ef00ce7554691",
|
|
98
|
+
"o": 4,
|
|
99
|
+
"r": "018fa51723ab6ee7f733"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"l": "01808f130c95e58a3645",
|
|
103
|
+
"m": "ff02200000000000000f",
|
|
104
|
+
"o": 4,
|
|
105
|
+
"r": "018fa51723ab6ee7f733"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"rootTag": "018fa51723ab6ee7f733"
|
|
109
|
+
}
|
package/main-node.js
CHANGED
|
@@ -202,6 +202,42 @@ class SchedulerEngine extends olympe__WEBPACK_IMPORTED_MODULE_0__.ActionBrick {
|
|
|
202
202
|
(0,olympe__WEBPACK_IMPORTED_MODULE_0__.registerBrick)('017f40bd1c0e9f295dfc', SchedulerEngine);
|
|
203
203
|
|
|
204
204
|
|
|
205
|
+
/***/ }),
|
|
206
|
+
|
|
207
|
+
/***/ "./src/common/SubscribeToInstance.js":
|
|
208
|
+
/*!*******************************************!*\
|
|
209
|
+
!*** ./src/common/SubscribeToInstance.js ***!
|
|
210
|
+
\*******************************************/
|
|
211
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
212
|
+
|
|
213
|
+
__webpack_require__.r(__webpack_exports__);
|
|
214
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
215
|
+
/* harmony export */ "default": () => (/* binding */ SubscribeToInstance)
|
|
216
|
+
/* harmony export */ });
|
|
217
|
+
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! olympe */ "olympe");
|
|
218
|
+
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(olympe__WEBPACK_IMPORTED_MODULE_0__);
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class SubscribeToInstance extends olympe__WEBPACK_IMPORTED_MODULE_0__.Brick {
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @override
|
|
225
|
+
* @protected
|
|
226
|
+
* @param {!BrickContext} $
|
|
227
|
+
* @param {*} instance
|
|
228
|
+
* @param {function(*)} setInstance
|
|
229
|
+
*/
|
|
230
|
+
update($, [instance], [setInstance]) {
|
|
231
|
+
|
|
232
|
+
olympe__WEBPACK_IMPORTED_MODULE_0__.Query.followRule($, instance, 'ff023000000000000237').subscribe(() => {
|
|
233
|
+
setInstance(olympe__WEBPACK_IMPORTED_MODULE_0__.CloudObject.get(instance));
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
(0,olympe__WEBPACK_IMPORTED_MODULE_0__.registerBrick)('018fa54a4b4d3965ca7e', SubscribeToInstance);
|
|
239
|
+
|
|
240
|
+
|
|
205
241
|
/***/ }),
|
|
206
242
|
|
|
207
243
|
/***/ "@olympeio/core":
|
|
@@ -313,12 +349,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
313
349
|
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(olympe__WEBPACK_IMPORTED_MODULE_0__);
|
|
314
350
|
/* harmony import */ var _common_ScheduledTask_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common/ScheduledTask.js */ "./src/common/ScheduledTask.js");
|
|
315
351
|
/* harmony import */ var _common_SchedulerEngine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common/SchedulerEngine.js */ "./src/common/SchedulerEngine.js");
|
|
352
|
+
/* harmony import */ var _common_SubscribeToInstance_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/SubscribeToInstance.js */ "./src/common/SubscribeToInstance.js");
|
|
316
353
|
|
|
317
354
|
// Import Olympe runtime or DRAW
|
|
318
355
|
|
|
319
356
|
|
|
320
357
|
// Import project bricks (we use webpack-import-glob-loader to import all bricks)
|
|
321
|
-
|
|
358
|
+
|
|
322
359
|
;
|
|
323
360
|
|
|
324
361
|
})();
|
package/main-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-node.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;ACT6D;;AAE7D;AACA,aAAa;AACb;AACe,4BAA4B,wCAAI;;AAE/C;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA,wBAAwB,8CAAU;AAClC,kCAAkC,oDAAgB;AAClD;;AAEA;;AAEA;AACA,sBAAsB,oDAAY;AAClC;AACA;AACA;AACA,gFAAgF,yDAAqB;;;;;;;;;;;;;;;;;;;;;;;AC5CI;AAC5E;AACe;AACH;;AAE1B,8BAA8B,+CAAW;;AAExD;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;AAC/B;;AAEA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA,QAAQ,8DAA0B,CAAC,sDAAa;AAChD,6CAA6C,cAAc;;AAE3D,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,0CAA0C,eAAe;AACzD;AACA;AACA;AACA,8CAA8C,eAAe,MAAM,aAAa;;AAEhF;AACA;AACA;AACA;AACA,oBAAoB,8CAAU;AAC9B,6CAA6C,eAAe;AAC5D;AACA;AACA;;AAEA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA;AACA,sDAAsD,eAAe,oBAAoB,UAAU;AACnG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yCAAO;AACjC;AACA,cAAc;AACd,qDAAqD,eAAe,oBAAoB,UAAU;AAClG;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B;AACA;AACA,0CAA0C,OAAO,GAAG,mDAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA,yCAAyC,cAAc;AACvD,gCAAgC,+CAAW;AAC3C;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;AC5Gb;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;ACLA;AACgB;;AAEhB;AACmC,CAAsC;AACzE","sources":["webpack://@olympeio-extensions/scheduler/webpack/universalModuleDefinition","webpack://@olympeio-extensions/scheduler/./src/common/ScheduledTask.js","webpack://@olympeio-extensions/scheduler/./src/common/SchedulerEngine.js","webpack://@olympeio-extensions/scheduler/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/scheduler/external commonjs \"cron\"","webpack://@olympeio-extensions/scheduler/external umd \"olympe\"","webpack://@olympeio-extensions/scheduler/webpack/bootstrap","webpack://@olympeio-extensions/scheduler/webpack/runtime/compat get default export","webpack://@olympeio-extensions/scheduler/webpack/runtime/define property getters","webpack://@olympeio-extensions/scheduler/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/scheduler/webpack/runtime/make namespace object","webpack://@olympeio-extensions/scheduler/./src/main-node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/scheduler\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/scheduler\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","\nimport {Sync, DBView, registerSync, Direction} from 'olympe';\n\n/**\n * @extends {Sync}\n */\nexport default class ScheduledTask extends Sync {\n\n /**\n * @return {string}\n */\n getLambdaTag() {\n return this.getProperty(ScheduledTask.lambdaTagProp);\n }\n\n /**\n * @return {Date}\n */\n getDate() {\n return this.getProperty(ScheduledTask.dateProp);\n }\n\n /**\n * @return {string}\n */\n getCron() {\n return this.getProperty(ScheduledTask.cronProp);\n }\n\n /**\n * @return {Sync}\n */\n getData() {\n const dataTag = DBView.get().getUniqueRelated(this.getTag(), ScheduledTask.dataRel);\n return dataTag !== null ? Sync.getInstance(dataTag) : null;\n }\n\n}\n\n// Hardcoded tags\nScheduledTask.entry = registerSync('017f4095855bdedbd48d', ScheduledTask);\nScheduledTask.lambdaTagProp = '017f4097710c22367bf1';\nScheduledTask.dateProp = '017f4095ffeba49740dc';\nScheduledTask.cronProp = '017f4095c636fa2e3aff';\nScheduledTask.dataRel = ScheduledTask.entry.addRelation('017f4097c7f6b5bc1cd7', Direction.DESTINATION);\n\n","import {ActionBrick, registerBrick, CloudObject, BrickContext, Brick, Transaction, DBView} from 'olympe';\nimport {CronJob} from 'cron';\nimport ScheduledTask from './ScheduledTask';\nimport {getLogger} from '@olympeio/core';\n\nexport default class SchedulerEngine extends ActionBrick {\n\n /**\n * @override\n */\n init($) {\n this.logger = getLogger('SchedulerEngine');\n }\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} inputs\n * @param {function()} forwardEvent\n */\n update($, inputs, [forwardEvent]) {\n\n // subscribe to all scheduled tasks\n CloudObject.getInstancesOf(ScheduledTask).forEach(task => {\n this.logger.debug(`Handle task ${task.getTag()}`);\n\n task = /** @type {ScheduledTask} */(task);\n const cron = task.getCron();\n const date = task.getDate();\n\n // safety checks that necessary data is provided\n if(cron !== null && date !== null) {\n this.logger.warn('Both cron string and date are defined. Running task at given date is ignored.');\n } else if(cron === null && date === null) {\n this.logger.error(`Task ${task.getTag()} has no cron or date defined.`);\n this.deleteTask(task);\n return;\n }\n this.logger.info(`Schedule task ${task.getTag()} for ${cron || date}`);\n\n // function run everytime the cron applies\n let job;\n const onTick = () => {\n // in case task was canceled by user (=deleted), do not run\n if(!DBView.get().exist(task)) {\n this.logger.info(`Task ${task.getTag()} was deleted outside from this Engine. Abort its execution`);\n job.stop();\n return;\n }\n\n this.logger.info(`Running Task ${task.getTag()}`);\n try {\n this.runLambda($, task.getLambdaTag(), task.getData());\n }\n catch(e) {\n this.logger.error(`Running Task ${task.getTag()} caused an error:\\n${e.message}`);\n }\n\n // in case job was run at a specific date only, we can delete it\n if(date !== null && cron === null) {\n this.deleteTask(task);\n }\n };\n\n // start the cron\n try {\n job = new CronJob(cron || date, onTick);\n job.start();\n } catch (e) {\n this.logger.error(`Scheduling Task ${task.getTag()} caused an error:\\n${e.message}`);\n this.deleteTask(task);\n }\n\n });\n\n forwardEvent();\n }\n\n /**\n * @param {BrickContext} $\n * @param {string} lambdaCallTag\n * @param {CloudObject} data\n */\n runLambda($, lambdaCallTag, data) {\n const lambdaFunction = /** @type {Brick} */ CloudObject.get(lambdaCallTag);\n const [startInput, dataInput] = lambdaFunction.getInputs();\n const [end] = lambdaFunction.getOutputs();\n const lambdaContext = $.runner(lambdaFunction);\n lambdaContext.set(dataInput, data);\n lambdaContext.trigger(startInput);\n lambdaContext.waitFor(end).finally(() => {\n lambdaContext.destroy();\n });\n }\n\n /**\n * @private\n * @param {ScheduledTask} task\n */\n deleteTask(task) {\n this.logger.debug(`Delete Task ${task.getTag()}`);\n const transaction = new Transaction();\n transaction.delete(task);\n transaction.execute();\n }\n}\n\nregisterBrick('017f40bd1c0e9f295dfc', SchedulerEngine);\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"cron\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\n// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/ScheduledTask.js'; import './common/SchedulerEngine.js';\n;\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"main-node.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;ACT6D;;AAE7D;AACA,aAAa;AACb;AACe,4BAA4B,wCAAI;;AAE/C;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA,wBAAwB,8CAAU;AAClC,kCAAkC,oDAAgB;AAClD;;AAEA;;AAEA;AACA,sBAAsB,oDAAY;AAClC;AACA;AACA;AACA,gFAAgF,yDAAqB;;;;;;;;;;;;;;;;;;;;;;;AC5CI;AAC5E;AACe;AACH;;AAE1B,8BAA8B,+CAAW;;AAExD;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;AAC/B;;AAEA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA,QAAQ,8DAA0B,CAAC,sDAAa;AAChD,6CAA6C,cAAc;;AAE3D,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,0CAA0C,eAAe;AACzD;AACA;AACA;AACA,8CAA8C,eAAe,MAAM,aAAa;;AAEhF;AACA;AACA;AACA;AACA,oBAAoB,8CAAU;AAC9B,6CAA6C,eAAe;AAC5D;AACA;AACA;;AAEA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA;AACA,sDAAsD,eAAe,oBAAoB,UAAU;AACnG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yCAAO;AACjC;AACA,cAAc;AACd,qDAAqD,eAAe,oBAAoB,UAAU;AAClG;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B;AACA;AACA,0CAA0C,OAAO,GAAG,mDAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA,yCAAyC,cAAc;AACvD,gCAAgC,+CAAW;AAC3C;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;AC5GmE;;AAEjE,kCAAkC,yCAAK;;AAEtD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,GAAG;AAClB,eAAe,aAAa;AAC5B;AACA;;AAEA,QAAQ,oDAAgB;AACxB,wBAAwB,mDAAe;AACvC,SAAS;AACT;AACA;;AAEA,qDAAa;;;;;;;;;;;ACnBb;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;ACLA;AACgB;;AAEhB;AACmC,CAAsC,CAA0C;AACnH","sources":["webpack://@olympeio-extensions/scheduler/webpack/universalModuleDefinition","webpack://@olympeio-extensions/scheduler/./src/common/ScheduledTask.js","webpack://@olympeio-extensions/scheduler/./src/common/SchedulerEngine.js","webpack://@olympeio-extensions/scheduler/./src/common/SubscribeToInstance.js","webpack://@olympeio-extensions/scheduler/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/scheduler/external commonjs \"cron\"","webpack://@olympeio-extensions/scheduler/external umd \"olympe\"","webpack://@olympeio-extensions/scheduler/webpack/bootstrap","webpack://@olympeio-extensions/scheduler/webpack/runtime/compat get default export","webpack://@olympeio-extensions/scheduler/webpack/runtime/define property getters","webpack://@olympeio-extensions/scheduler/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/scheduler/webpack/runtime/make namespace object","webpack://@olympeio-extensions/scheduler/./src/main-node.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/scheduler\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/scheduler\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","\nimport {Sync, DBView, registerSync, Direction} from 'olympe';\n\n/**\n * @extends {Sync}\n */\nexport default class ScheduledTask extends Sync {\n\n /**\n * @return {string}\n */\n getLambdaTag() {\n return this.getProperty(ScheduledTask.lambdaTagProp);\n }\n\n /**\n * @return {Date}\n */\n getDate() {\n return this.getProperty(ScheduledTask.dateProp);\n }\n\n /**\n * @return {string}\n */\n getCron() {\n return this.getProperty(ScheduledTask.cronProp);\n }\n\n /**\n * @return {Sync}\n */\n getData() {\n const dataTag = DBView.get().getUniqueRelated(this.getTag(), ScheduledTask.dataRel);\n return dataTag !== null ? Sync.getInstance(dataTag) : null;\n }\n\n}\n\n// Hardcoded tags\nScheduledTask.entry = registerSync('017f4095855bdedbd48d', ScheduledTask);\nScheduledTask.lambdaTagProp = '017f4097710c22367bf1';\nScheduledTask.dateProp = '017f4095ffeba49740dc';\nScheduledTask.cronProp = '017f4095c636fa2e3aff';\nScheduledTask.dataRel = ScheduledTask.entry.addRelation('017f4097c7f6b5bc1cd7', Direction.DESTINATION);\n\n","import {ActionBrick, registerBrick, CloudObject, BrickContext, Brick, Transaction, DBView} from 'olympe';\nimport {CronJob} from 'cron';\nimport ScheduledTask from './ScheduledTask';\nimport {getLogger} from '@olympeio/core';\n\nexport default class SchedulerEngine extends ActionBrick {\n\n /**\n * @override\n */\n init($) {\n this.logger = getLogger('SchedulerEngine');\n }\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} inputs\n * @param {function()} forwardEvent\n */\n update($, inputs, [forwardEvent]) {\n\n // subscribe to all scheduled tasks\n CloudObject.getInstancesOf(ScheduledTask).forEach(task => {\n this.logger.debug(`Handle task ${task.getTag()}`);\n\n task = /** @type {ScheduledTask} */(task);\n const cron = task.getCron();\n const date = task.getDate();\n\n // safety checks that necessary data is provided\n if(cron !== null && date !== null) {\n this.logger.warn('Both cron string and date are defined. Running task at given date is ignored.');\n } else if(cron === null && date === null) {\n this.logger.error(`Task ${task.getTag()} has no cron or date defined.`);\n this.deleteTask(task);\n return;\n }\n this.logger.info(`Schedule task ${task.getTag()} for ${cron || date}`);\n\n // function run everytime the cron applies\n let job;\n const onTick = () => {\n // in case task was canceled by user (=deleted), do not run\n if(!DBView.get().exist(task)) {\n this.logger.info(`Task ${task.getTag()} was deleted outside from this Engine. Abort its execution`);\n job.stop();\n return;\n }\n\n this.logger.info(`Running Task ${task.getTag()}`);\n try {\n this.runLambda($, task.getLambdaTag(), task.getData());\n }\n catch(e) {\n this.logger.error(`Running Task ${task.getTag()} caused an error:\\n${e.message}`);\n }\n\n // in case job was run at a specific date only, we can delete it\n if(date !== null && cron === null) {\n this.deleteTask(task);\n }\n };\n\n // start the cron\n try {\n job = new CronJob(cron || date, onTick);\n job.start();\n } catch (e) {\n this.logger.error(`Scheduling Task ${task.getTag()} caused an error:\\n${e.message}`);\n this.deleteTask(task);\n }\n\n });\n\n forwardEvent();\n }\n\n /**\n * @param {BrickContext} $\n * @param {string} lambdaCallTag\n * @param {CloudObject} data\n */\n runLambda($, lambdaCallTag, data) {\n const lambdaFunction = /** @type {Brick} */ CloudObject.get(lambdaCallTag);\n const [startInput, dataInput] = lambdaFunction.getInputs();\n const [end] = lambdaFunction.getOutputs();\n const lambdaContext = $.runner(lambdaFunction);\n lambdaContext.set(dataInput, data);\n lambdaContext.trigger(startInput);\n lambdaContext.waitFor(end).finally(() => {\n lambdaContext.destroy();\n });\n }\n\n /**\n * @private\n * @param {ScheduledTask} task\n */\n deleteTask(task) {\n this.logger.debug(`Delete Task ${task.getTag()}`);\n const transaction = new Transaction();\n transaction.delete(task);\n transaction.execute();\n }\n}\n\nregisterBrick('017f40bd1c0e9f295dfc', SchedulerEngine);\n","import { BrickContext, Brick, registerBrick, Query, CloudObject } from 'olympe';\n\nexport default class SubscribeToInstance extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {*} instance\n * @param {function(*)} setInstance\n */\n update($, [instance], [setInstance]) {\n\n Query.followRule($, instance, 'ff023000000000000237').subscribe(() => {\n setInstance(CloudObject.get(instance));\n });\n }\n}\n\nregisterBrick('018fa54a4b4d3965ca7e', SubscribeToInstance);\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"cron\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","\n// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/ScheduledTask.js'; import './common/SchedulerEngine.js'; import './common/SubscribeToInstance.js';\n;\n"],"names":[],"sourceRoot":""}
|
package/main-web.js
CHANGED
|
@@ -202,6 +202,42 @@ class SchedulerEngine extends olympe__WEBPACK_IMPORTED_MODULE_0__.ActionBrick {
|
|
|
202
202
|
(0,olympe__WEBPACK_IMPORTED_MODULE_0__.registerBrick)('017f40bd1c0e9f295dfc', SchedulerEngine);
|
|
203
203
|
|
|
204
204
|
|
|
205
|
+
/***/ }),
|
|
206
|
+
|
|
207
|
+
/***/ "./src/common/SubscribeToInstance.js":
|
|
208
|
+
/*!*******************************************!*\
|
|
209
|
+
!*** ./src/common/SubscribeToInstance.js ***!
|
|
210
|
+
\*******************************************/
|
|
211
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
212
|
+
|
|
213
|
+
__webpack_require__.r(__webpack_exports__);
|
|
214
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
215
|
+
/* harmony export */ "default": () => (/* binding */ SubscribeToInstance)
|
|
216
|
+
/* harmony export */ });
|
|
217
|
+
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! olympe */ "olympe");
|
|
218
|
+
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(olympe__WEBPACK_IMPORTED_MODULE_0__);
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
class SubscribeToInstance extends olympe__WEBPACK_IMPORTED_MODULE_0__.Brick {
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* @override
|
|
225
|
+
* @protected
|
|
226
|
+
* @param {!BrickContext} $
|
|
227
|
+
* @param {*} instance
|
|
228
|
+
* @param {function(*)} setInstance
|
|
229
|
+
*/
|
|
230
|
+
update($, [instance], [setInstance]) {
|
|
231
|
+
|
|
232
|
+
olympe__WEBPACK_IMPORTED_MODULE_0__.Query.followRule($, instance, 'ff023000000000000237').subscribe(() => {
|
|
233
|
+
setInstance(olympe__WEBPACK_IMPORTED_MODULE_0__.CloudObject.get(instance));
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
(0,olympe__WEBPACK_IMPORTED_MODULE_0__.registerBrick)('018fa54a4b4d3965ca7e', SubscribeToInstance);
|
|
239
|
+
|
|
240
|
+
|
|
205
241
|
/***/ }),
|
|
206
242
|
|
|
207
243
|
/***/ "@olympeio/core":
|
|
@@ -313,11 +349,12 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
313
349
|
/* harmony import */ var olympe__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(olympe__WEBPACK_IMPORTED_MODULE_0__);
|
|
314
350
|
/* harmony import */ var _common_ScheduledTask_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./common/ScheduledTask.js */ "./src/common/ScheduledTask.js");
|
|
315
351
|
/* harmony import */ var _common_SchedulerEngine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common/SchedulerEngine.js */ "./src/common/SchedulerEngine.js");
|
|
352
|
+
/* harmony import */ var _common_SubscribeToInstance_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common/SubscribeToInstance.js */ "./src/common/SubscribeToInstance.js");
|
|
316
353
|
// Import Olympe runtime or DRAW
|
|
317
354
|
|
|
318
355
|
|
|
319
356
|
// Import project bricks (we use webpack-import-glob-loader to import all bricks)
|
|
320
|
-
|
|
357
|
+
|
|
321
358
|
;
|
|
322
359
|
|
|
323
360
|
|
package/main-web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-web.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;ACT6D;;AAE7D;AACA,aAAa;AACb;AACe,4BAA4B,wCAAI;;AAE/C;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA,wBAAwB,8CAAU;AAClC,kCAAkC,oDAAgB;AAClD;;AAEA;;AAEA;AACA,sBAAsB,oDAAY;AAClC;AACA;AACA;AACA,gFAAgF,yDAAqB;;;;;;;;;;;;;;;;;;;;;;;AC5CI;AAC5E;AACe;AACH;;AAE1B,8BAA8B,+CAAW;;AAExD;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;AAC/B;;AAEA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA,QAAQ,8DAA0B,CAAC,sDAAa;AAChD,6CAA6C,cAAc;;AAE3D,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,0CAA0C,eAAe;AACzD;AACA;AACA;AACA,8CAA8C,eAAe,MAAM,aAAa;;AAEhF;AACA;AACA;AACA;AACA,oBAAoB,8CAAU;AAC9B,6CAA6C,eAAe;AAC5D;AACA;AACA;;AAEA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA;AACA,sDAAsD,eAAe,oBAAoB,UAAU;AACnG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yCAAO;AACjC;AACA,cAAc;AACd,qDAAqD,eAAe,oBAAoB,UAAU;AAClG;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B;AACA;AACA,0CAA0C,OAAO,GAAG,mDAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA,yCAAyC,cAAc;AACvD,gCAAgC,+CAAW;AAC3C;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;AC5Gb;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;ACNA;AACgB;;AAEhB;AACmC,CAAsC;AACzE","sources":["webpack://@olympeio-extensions/scheduler/webpack/universalModuleDefinition","webpack://@olympeio-extensions/scheduler/./src/common/ScheduledTask.js","webpack://@olympeio-extensions/scheduler/./src/common/SchedulerEngine.js","webpack://@olympeio-extensions/scheduler/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/scheduler/external commonjs \"cron\"","webpack://@olympeio-extensions/scheduler/external umd \"olympe\"","webpack://@olympeio-extensions/scheduler/webpack/bootstrap","webpack://@olympeio-extensions/scheduler/webpack/runtime/compat get default export","webpack://@olympeio-extensions/scheduler/webpack/runtime/define property getters","webpack://@olympeio-extensions/scheduler/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/scheduler/webpack/runtime/make namespace object","webpack://@olympeio-extensions/scheduler/./src/main-web.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/scheduler\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/scheduler\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","\nimport {Sync, DBView, registerSync, Direction} from 'olympe';\n\n/**\n * @extends {Sync}\n */\nexport default class ScheduledTask extends Sync {\n\n /**\n * @return {string}\n */\n getLambdaTag() {\n return this.getProperty(ScheduledTask.lambdaTagProp);\n }\n\n /**\n * @return {Date}\n */\n getDate() {\n return this.getProperty(ScheduledTask.dateProp);\n }\n\n /**\n * @return {string}\n */\n getCron() {\n return this.getProperty(ScheduledTask.cronProp);\n }\n\n /**\n * @return {Sync}\n */\n getData() {\n const dataTag = DBView.get().getUniqueRelated(this.getTag(), ScheduledTask.dataRel);\n return dataTag !== null ? Sync.getInstance(dataTag) : null;\n }\n\n}\n\n// Hardcoded tags\nScheduledTask.entry = registerSync('017f4095855bdedbd48d', ScheduledTask);\nScheduledTask.lambdaTagProp = '017f4097710c22367bf1';\nScheduledTask.dateProp = '017f4095ffeba49740dc';\nScheduledTask.cronProp = '017f4095c636fa2e3aff';\nScheduledTask.dataRel = ScheduledTask.entry.addRelation('017f4097c7f6b5bc1cd7', Direction.DESTINATION);\n\n","import {ActionBrick, registerBrick, CloudObject, BrickContext, Brick, Transaction, DBView} from 'olympe';\nimport {CronJob} from 'cron';\nimport ScheduledTask from './ScheduledTask';\nimport {getLogger} from '@olympeio/core';\n\nexport default class SchedulerEngine extends ActionBrick {\n\n /**\n * @override\n */\n init($) {\n this.logger = getLogger('SchedulerEngine');\n }\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} inputs\n * @param {function()} forwardEvent\n */\n update($, inputs, [forwardEvent]) {\n\n // subscribe to all scheduled tasks\n CloudObject.getInstancesOf(ScheduledTask).forEach(task => {\n this.logger.debug(`Handle task ${task.getTag()}`);\n\n task = /** @type {ScheduledTask} */(task);\n const cron = task.getCron();\n const date = task.getDate();\n\n // safety checks that necessary data is provided\n if(cron !== null && date !== null) {\n this.logger.warn('Both cron string and date are defined. Running task at given date is ignored.');\n } else if(cron === null && date === null) {\n this.logger.error(`Task ${task.getTag()} has no cron or date defined.`);\n this.deleteTask(task);\n return;\n }\n this.logger.info(`Schedule task ${task.getTag()} for ${cron || date}`);\n\n // function run everytime the cron applies\n let job;\n const onTick = () => {\n // in case task was canceled by user (=deleted), do not run\n if(!DBView.get().exist(task)) {\n this.logger.info(`Task ${task.getTag()} was deleted outside from this Engine. Abort its execution`);\n job.stop();\n return;\n }\n\n this.logger.info(`Running Task ${task.getTag()}`);\n try {\n this.runLambda($, task.getLambdaTag(), task.getData());\n }\n catch(e) {\n this.logger.error(`Running Task ${task.getTag()} caused an error:\\n${e.message}`);\n }\n\n // in case job was run at a specific date only, we can delete it\n if(date !== null && cron === null) {\n this.deleteTask(task);\n }\n };\n\n // start the cron\n try {\n job = new CronJob(cron || date, onTick);\n job.start();\n } catch (e) {\n this.logger.error(`Scheduling Task ${task.getTag()} caused an error:\\n${e.message}`);\n this.deleteTask(task);\n }\n\n });\n\n forwardEvent();\n }\n\n /**\n * @param {BrickContext} $\n * @param {string} lambdaCallTag\n * @param {CloudObject} data\n */\n runLambda($, lambdaCallTag, data) {\n const lambdaFunction = /** @type {Brick} */ CloudObject.get(lambdaCallTag);\n const [startInput, dataInput] = lambdaFunction.getInputs();\n const [end] = lambdaFunction.getOutputs();\n const lambdaContext = $.runner(lambdaFunction);\n lambdaContext.set(dataInput, data);\n lambdaContext.trigger(startInput);\n lambdaContext.waitFor(end).finally(() => {\n lambdaContext.destroy();\n });\n }\n\n /**\n * @private\n * @param {ScheduledTask} task\n */\n deleteTask(task) {\n this.logger.debug(`Delete Task ${task.getTag()}`);\n const transaction = new Transaction();\n transaction.delete(task);\n transaction.execute();\n }\n}\n\nregisterBrick('017f40bd1c0e9f295dfc', SchedulerEngine);\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"cron\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/ScheduledTask.js'; import './common/SchedulerEngine.js';\n;\n\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"main-web.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;;ACT6D;;AAE7D;AACA,aAAa;AACb;AACe,4BAA4B,wCAAI;;AAE/C;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA,wBAAwB,8CAAU;AAClC,kCAAkC,oDAAgB;AAClD;;AAEA;;AAEA;AACA,sBAAsB,oDAAY;AAClC;AACA;AACA;AACA,gFAAgF,yDAAqB;;;;;;;;;;;;;;;;;;;;;;;AC5CI;AAC5E;AACe;AACH;;AAE1B,8BAA8B,+CAAW;;AAExD;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;AAC/B;;AAEA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA,QAAQ,8DAA0B,CAAC,sDAAa;AAChD,6CAA6C,cAAc;;AAE3D,8BAA8B,eAAe;AAC7C;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd,0CAA0C,eAAe;AACzD;AACA;AACA;AACA,8CAA8C,eAAe,MAAM,aAAa;;AAEhF;AACA;AACA;AACA;AACA,oBAAoB,8CAAU;AAC9B,6CAA6C,eAAe;AAC5D;AACA;AACA;;AAEA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA;AACA,sDAAsD,eAAe,oBAAoB,UAAU;AACnG;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,yCAAO;AACjC;AACA,cAAc;AACd,qDAAqD,eAAe,oBAAoB,UAAU;AAClG;AACA;;AAEA,SAAS;;AAET;AACA;;AAEA;AACA,eAAe,cAAc;AAC7B,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B;AACA;AACA,0CAA0C,OAAO,GAAG,mDAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA,yCAAyC,cAAc;AACvD,gCAAgC,+CAAW;AAC3C;AACA;AACA;AACA;;AAEA,qDAAa;;;;;;;;;;;;;;;;;AC5GmE;;AAEjE,kCAAkC,yCAAK;;AAEtD;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,GAAG;AAClB,eAAe,aAAa;AAC5B;AACA;;AAEA,QAAQ,oDAAgB;AACxB,wBAAwB,mDAAe;AACvC,SAAS;AACT;AACA;;AAEA,qDAAa;;;;;;;;;;;ACnBb;;;;;;;;;;ACAA;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;ACNA;AACgB;;AAEhB;AACmC,CAAsC,CAA0C;AACnH","sources":["webpack://@olympeio-extensions/scheduler/webpack/universalModuleDefinition","webpack://@olympeio-extensions/scheduler/./src/common/ScheduledTask.js","webpack://@olympeio-extensions/scheduler/./src/common/SchedulerEngine.js","webpack://@olympeio-extensions/scheduler/./src/common/SubscribeToInstance.js","webpack://@olympeio-extensions/scheduler/external commonjs \"@olympeio/core\"","webpack://@olympeio-extensions/scheduler/external commonjs \"cron\"","webpack://@olympeio-extensions/scheduler/external umd \"olympe\"","webpack://@olympeio-extensions/scheduler/webpack/bootstrap","webpack://@olympeio-extensions/scheduler/webpack/runtime/compat get default export","webpack://@olympeio-extensions/scheduler/webpack/runtime/define property getters","webpack://@olympeio-extensions/scheduler/webpack/runtime/hasOwnProperty shorthand","webpack://@olympeio-extensions/scheduler/webpack/runtime/make namespace object","webpack://@olympeio-extensions/scheduler/./src/main-web.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"olympe\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"olympe\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@olympeio-extensions/scheduler\"] = factory(require(\"olympe\"));\n\telse\n\t\troot[\"@olympeio-extensions/scheduler\"] = factory(root[\"olympe\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_olympe__) => {\nreturn ","\nimport {Sync, DBView, registerSync, Direction} from 'olympe';\n\n/**\n * @extends {Sync}\n */\nexport default class ScheduledTask extends Sync {\n\n /**\n * @return {string}\n */\n getLambdaTag() {\n return this.getProperty(ScheduledTask.lambdaTagProp);\n }\n\n /**\n * @return {Date}\n */\n getDate() {\n return this.getProperty(ScheduledTask.dateProp);\n }\n\n /**\n * @return {string}\n */\n getCron() {\n return this.getProperty(ScheduledTask.cronProp);\n }\n\n /**\n * @return {Sync}\n */\n getData() {\n const dataTag = DBView.get().getUniqueRelated(this.getTag(), ScheduledTask.dataRel);\n return dataTag !== null ? Sync.getInstance(dataTag) : null;\n }\n\n}\n\n// Hardcoded tags\nScheduledTask.entry = registerSync('017f4095855bdedbd48d', ScheduledTask);\nScheduledTask.lambdaTagProp = '017f4097710c22367bf1';\nScheduledTask.dateProp = '017f4095ffeba49740dc';\nScheduledTask.cronProp = '017f4095c636fa2e3aff';\nScheduledTask.dataRel = ScheduledTask.entry.addRelation('017f4097c7f6b5bc1cd7', Direction.DESTINATION);\n\n","import {ActionBrick, registerBrick, CloudObject, BrickContext, Brick, Transaction, DBView} from 'olympe';\nimport {CronJob} from 'cron';\nimport ScheduledTask from './ScheduledTask';\nimport {getLogger} from '@olympeio/core';\n\nexport default class SchedulerEngine extends ActionBrick {\n\n /**\n * @override\n */\n init($) {\n this.logger = getLogger('SchedulerEngine');\n }\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {!Array} inputs\n * @param {function()} forwardEvent\n */\n update($, inputs, [forwardEvent]) {\n\n // subscribe to all scheduled tasks\n CloudObject.getInstancesOf(ScheduledTask).forEach(task => {\n this.logger.debug(`Handle task ${task.getTag()}`);\n\n task = /** @type {ScheduledTask} */(task);\n const cron = task.getCron();\n const date = task.getDate();\n\n // safety checks that necessary data is provided\n if(cron !== null && date !== null) {\n this.logger.warn('Both cron string and date are defined. Running task at given date is ignored.');\n } else if(cron === null && date === null) {\n this.logger.error(`Task ${task.getTag()} has no cron or date defined.`);\n this.deleteTask(task);\n return;\n }\n this.logger.info(`Schedule task ${task.getTag()} for ${cron || date}`);\n\n // function run everytime the cron applies\n let job;\n const onTick = () => {\n // in case task was canceled by user (=deleted), do not run\n if(!DBView.get().exist(task)) {\n this.logger.info(`Task ${task.getTag()} was deleted outside from this Engine. Abort its execution`);\n job.stop();\n return;\n }\n\n this.logger.info(`Running Task ${task.getTag()}`);\n try {\n this.runLambda($, task.getLambdaTag(), task.getData());\n }\n catch(e) {\n this.logger.error(`Running Task ${task.getTag()} caused an error:\\n${e.message}`);\n }\n\n // in case job was run at a specific date only, we can delete it\n if(date !== null && cron === null) {\n this.deleteTask(task);\n }\n };\n\n // start the cron\n try {\n job = new CronJob(cron || date, onTick);\n job.start();\n } catch (e) {\n this.logger.error(`Scheduling Task ${task.getTag()} caused an error:\\n${e.message}`);\n this.deleteTask(task);\n }\n\n });\n\n forwardEvent();\n }\n\n /**\n * @param {BrickContext} $\n * @param {string} lambdaCallTag\n * @param {CloudObject} data\n */\n runLambda($, lambdaCallTag, data) {\n const lambdaFunction = /** @type {Brick} */ CloudObject.get(lambdaCallTag);\n const [startInput, dataInput] = lambdaFunction.getInputs();\n const [end] = lambdaFunction.getOutputs();\n const lambdaContext = $.runner(lambdaFunction);\n lambdaContext.set(dataInput, data);\n lambdaContext.trigger(startInput);\n lambdaContext.waitFor(end).finally(() => {\n lambdaContext.destroy();\n });\n }\n\n /**\n * @private\n * @param {ScheduledTask} task\n */\n deleteTask(task) {\n this.logger.debug(`Delete Task ${task.getTag()}`);\n const transaction = new Transaction();\n transaction.delete(task);\n transaction.execute();\n }\n}\n\nregisterBrick('017f40bd1c0e9f295dfc', SchedulerEngine);\n","import { BrickContext, Brick, registerBrick, Query, CloudObject } from 'olympe';\n\nexport default class SubscribeToInstance extends Brick {\n\n /**\n * @override\n * @protected\n * @param {!BrickContext} $\n * @param {*} instance\n * @param {function(*)} setInstance\n */\n update($, [instance], [setInstance]) {\n\n Query.followRule($, instance, 'ff023000000000000237').subscribe(() => {\n setInstance(CloudObject.get(instance));\n });\n }\n}\n\nregisterBrick('018fa54a4b4d3965ca7e', SubscribeToInstance);\n","module.exports = require(\"@olympeio/core\");","module.exports = require(\"cron\");","module.exports = __WEBPACK_EXTERNAL_MODULE_olympe__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Import Olympe runtime or DRAW\nimport 'olympe';\n\n// Import project bricks (we use webpack-import-glob-loader to import all bricks)\nimport './common/ScheduledTask.js'; import './common/SchedulerEngine.js'; import './common/SubscribeToInstance.js';\n;\n\n"],"names":[],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@olympeio-extensions/scheduler","version":"2.
|
|
1
|
+
{"name":"@olympeio-extensions/scheduler","version":"2.9.1","main":"main-node.js","browser":"main-web.js","dependencies":{"@olympeio/core":"2.9.1","@olympeio/runtime-web":"~9.9.1","@olympeio/runtime-node":"~9.9.1","cron":"^1.8.2"},"codeAsData":"codeAsData"}
|