@logicflow/engine 0.0.9 → 0.0.10-beta.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.
- package/README.md +5 -2
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/es/EventEmitter.d.ts +34 -4
- package/es/EventEmitter.js +70 -48
- package/es/EventEmitter.js.map +1 -0
- package/es/FlowModel.d.ts +75 -73
- package/es/FlowModel.js +130 -173
- package/es/FlowModel.js.map +1 -0
- package/es/Scheduler.d.ts +50 -34
- package/es/Scheduler.js +134 -209
- package/es/Scheduler.js.map +1 -0
- package/es/constant/{constant.js → index.js} +8 -7
- package/es/constant/index.js.map +1 -0
- package/es/constant/logCode.js +29 -0
- package/es/constant/logCode.js.map +1 -0
- package/es/expression/brewserVm.d.ts +2 -0
- package/es/expression/brewserVm.js +30 -0
- package/es/expression/brewserVm.js.map +1 -0
- package/es/expression/index.d.ts +1 -1
- package/es/expression/index.js +16 -59
- package/es/expression/index.js.map +1 -0
- package/es/expression/nodeVm.d.ts +4 -2
- package/es/expression/nodeVm.js +10 -50
- package/es/expression/nodeVm.js.map +1 -0
- package/es/index.d.ts +135 -38
- package/es/index.js +92 -144
- package/es/index.js.map +1 -0
- package/es/nodes/base.d.ts +108 -0
- package/es/nodes/base.js +149 -0
- package/es/nodes/base.js.map +1 -0
- package/es/nodes/index.d.ts +3 -0
- package/es/nodes/index.js +4 -0
- package/es/nodes/index.js.map +1 -0
- package/es/nodes/{StartNode.d.ts → start.d.ts} +3 -2
- package/es/nodes/start.js +11 -0
- package/es/nodes/start.js.map +1 -0
- package/es/nodes/{TaskNode.d.ts → task.d.ts} +3 -2
- package/es/nodes/task.js +11 -0
- package/es/nodes/task.js.map +1 -0
- package/es/platform/browser/browserVm.d.ts +4 -0
- package/es/platform/browser/browserVm.js +44 -0
- package/es/platform/browser/browserVm.js.map +1 -0
- package/es/platform/browser/index.d.ts +4 -0
- package/es/platform/browser/index.js +23 -0
- package/es/platform/browser/index.js.map +1 -0
- package/es/platform/index.d.ts +1 -0
- package/es/platform/index.js +2 -0
- package/es/platform/index.js.map +1 -0
- package/es/platform/node/index.d.ts +4 -0
- package/es/platform/node/index.js +23 -0
- package/es/platform/node/index.js.map +1 -0
- package/es/platform/node/nodeVm.d.ts +1 -0
- package/es/platform/node/nodeVm.js +9 -0
- package/es/platform/node/nodeVm.js.map +1 -0
- package/es/recorder/index.d.ts +36 -10
- package/es/recorder/index.js +82 -135
- package/es/recorder/index.js.map +1 -0
- package/es/utils/global.d.ts +5 -0
- package/es/utils/global.js +27 -0
- package/es/utils/global.js.map +1 -0
- package/es/utils/id.js +14 -0
- package/es/utils/id.js.map +1 -0
- package/es/utils/index.d.ts +4 -0
- package/es/utils/index.js +5 -0
- package/es/utils/index.js.map +1 -0
- package/es/{util → utils}/storage.js +17 -16
- package/es/utils/storage.js.map +1 -0
- package/lib/EventEmitter.d.ts +37 -0
- package/lib/EventEmitter.js +94 -0
- package/lib/EventEmitter.js.map +1 -0
- package/lib/FlowModel.d.ts +146 -0
- package/lib/FlowModel.js +236 -0
- package/lib/FlowModel.js.map +1 -0
- package/lib/Scheduler.d.ts +78 -0
- package/lib/Scheduler.js +179 -0
- package/lib/Scheduler.js.map +1 -0
- package/lib/constant/index.d.ts +16 -0
- package/{cjs/constant/constant.js → lib/constant/index.js} +4 -3
- package/lib/constant/index.js.map +1 -0
- package/lib/constant/logCode.d.ts +12 -0
- package/{cjs/constant/LogCode.js → lib/constant/logCode.js} +16 -13
- package/lib/constant/logCode.js.map +1 -0
- package/lib/expression/brewserVm.d.ts +2 -0
- package/lib/expression/brewserVm.js +33 -0
- package/lib/expression/brewserVm.js.map +1 -0
- package/lib/expression/index.d.ts +2 -0
- package/lib/expression/index.js +20 -0
- package/lib/expression/index.js.map +1 -0
- package/lib/expression/nodeVm.d.ts +4 -0
- package/lib/expression/nodeVm.js +13 -0
- package/lib/expression/nodeVm.js.map +1 -0
- package/lib/index.d.ts +157 -0
- package/lib/index.js +159 -0
- package/lib/index.js.map +1 -0
- package/lib/nodes/base.d.ts +108 -0
- package/lib/nodes/base.js +152 -0
- package/lib/nodes/base.js.map +1 -0
- package/lib/nodes/index.d.ts +3 -0
- package/lib/nodes/index.js +7 -0
- package/lib/nodes/index.js.map +1 -0
- package/lib/nodes/start.d.ts +6 -0
- package/lib/nodes/start.js +15 -0
- package/lib/nodes/start.js.map +1 -0
- package/lib/nodes/task.d.ts +6 -0
- package/lib/nodes/task.js +15 -0
- package/lib/nodes/task.js.map +1 -0
- package/lib/platform/browser/browserVm.d.ts +4 -0
- package/lib/platform/browser/browserVm.js +49 -0
- package/lib/platform/browser/browserVm.js.map +1 -0
- package/lib/platform/browser/index.d.ts +4 -0
- package/lib/platform/browser/index.js +28 -0
- package/lib/platform/browser/index.js.map +1 -0
- package/lib/platform/index.d.ts +1 -0
- package/lib/platform/index.js +5 -0
- package/lib/platform/index.js.map +1 -0
- package/lib/platform/node/index.d.ts +4 -0
- package/lib/platform/node/index.js +28 -0
- package/lib/platform/node/index.js.map +1 -0
- package/lib/platform/node/nodeVm.d.ts +1 -0
- package/lib/platform/node/nodeVm.js +13 -0
- package/lib/platform/node/nodeVm.js.map +1 -0
- package/lib/recorder/index.d.ts +46 -0
- package/lib/recorder/index.js +117 -0
- package/lib/recorder/index.js.map +1 -0
- package/lib/utils/global.d.ts +5 -0
- package/lib/utils/global.js +31 -0
- package/lib/utils/global.js.map +1 -0
- package/lib/utils/id.d.ts +3 -0
- package/lib/utils/id.js +20 -0
- package/lib/utils/id.js.map +1 -0
- package/lib/utils/index.d.ts +4 -0
- package/lib/utils/index.js +9 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/storage.d.ts +7 -0
- package/{cjs/util → lib/utils}/storage.js +18 -17
- package/lib/utils/storage.js.map +1 -0
- package/package.json +30 -71
- package/src/EventEmitter.ts +103 -0
- package/src/FlowModel.ts +325 -0
- package/src/Scheduler.ts +244 -0
- package/src/constant/index.ts +23 -0
- package/src/constant/logCode.ts +34 -0
- package/src/expression/brewserVm.ts +36 -0
- package/src/expression/index.ts +17 -0
- package/src/expression/nodeVm.ts +14 -0
- package/src/index.ts +300 -0
- package/src/nodes/base.ts +234 -0
- package/src/nodes/index.ts +3 -0
- package/src/nodes/start.ts +8 -0
- package/src/nodes/task.ts +8 -0
- package/src/platform/browser/browserVm.ts +52 -0
- package/src/platform/browser/index.ts +28 -0
- package/src/platform/index.ts +1 -0
- package/src/platform/node/index.ts +28 -0
- package/src/platform/node/nodeVm.ts +12 -0
- package/src/recorder/index.ts +137 -0
- package/src/typings.d.ts +0 -0
- package/src/utils/global.ts +41 -0
- package/src/utils/id.ts +16 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/storage.ts +55 -0
- package/cjs/EventEmitter.js +0 -70
- package/cjs/FlowModel.js +0 -277
- package/cjs/Scheduler.js +0 -252
- package/cjs/expression/browserVm.js +0 -81
- package/cjs/expression/index.js +0 -63
- package/cjs/expression/nodeVm.js +0 -53
- package/cjs/index.js +0 -210
- package/cjs/nodes/BaseNode.js +0 -252
- package/cjs/nodes/StartNode.js +0 -27
- package/cjs/nodes/TaskNode.js +0 -27
- package/cjs/recorder/index.js +0 -168
- package/cjs/util/ID.js +0 -16
- package/cjs/util/global.js +0 -32
- package/es/constant/LogCode.js +0 -28
- package/es/expression/browserVm.d.ts +0 -4
- package/es/expression/browserVm.js +0 -76
- package/es/nodes/BaseNode.d.ts +0 -110
- package/es/nodes/BaseNode.js +0 -250
- package/es/nodes/StartNode.js +0 -25
- package/es/nodes/TaskNode.js +0 -25
- package/es/util/ID.js +0 -13
- package/es/util/global.d.ts +0 -5
- package/es/util/global.js +0 -26
- package/lib/main.js +0 -1
- /package/es/constant/{constant.d.ts → index.d.ts} +0 -0
- /package/es/constant/{LogCode.d.ts → logCode.d.ts} +0 -0
- /package/es/{util/ID.d.ts → utils/id.d.ts} +0 -0
- /package/es/{util → utils}/storage.d.ts +0 -0
package/es/recorder/index.js
CHANGED
|
@@ -1,166 +1,113 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
-
function step(op) {
|
|
15
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
-
while (_) try {
|
|
17
|
-
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;
|
|
18
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
-
switch (op[0]) {
|
|
20
|
-
case 0: case 1: t = op; break;
|
|
21
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
-
default:
|
|
25
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
-
if (t[2]) _.ops.pop();
|
|
30
|
-
_.trys.pop(); continue;
|
|
31
|
-
}
|
|
32
|
-
op = body.call(thisArg, _);
|
|
33
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
import storage from '../util/storage';
|
|
38
|
-
var LOGICFLOW_ENGINE_INSTANCES = 'LOGICFLOW_ENGINE_INSTANCES';
|
|
39
|
-
var MAX_RECORDER = 100;
|
|
40
|
-
var MAX_INSTANCE = 100;
|
|
41
|
-
var Recorder = /** @class */ (function () {
|
|
42
|
-
function Recorder(_a) {
|
|
43
|
-
var instanceId = _a.instanceId;
|
|
44
|
-
this.maxRecorder = MAX_RECORDER;
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { storage } from '../utils';
|
|
3
|
+
export const MAX_RECORDER = 100;
|
|
4
|
+
export const MAX_INSTANCE = 100;
|
|
5
|
+
export const LOGICFLOW_ENGINE_INSTANCES = 'LOGICFLOW_ENGINE_INSTANCES';
|
|
6
|
+
export class Recorder {
|
|
7
|
+
constructor({ instanceId }) {
|
|
45
8
|
this.instanceId = instanceId;
|
|
46
|
-
|
|
9
|
+
this.maxRecorder = MAX_RECORDER;
|
|
10
|
+
const instances = this.getItem(LOGICFLOW_ENGINE_INSTANCES) || [];
|
|
47
11
|
if (instances.indexOf(instanceId) === -1) {
|
|
48
12
|
instances.push(instanceId);
|
|
49
13
|
}
|
|
50
14
|
if (instances.length > MAX_INSTANCE) {
|
|
51
|
-
|
|
15
|
+
const clearInstance = instances.shift();
|
|
52
16
|
this.clearInstance(clearInstance);
|
|
53
17
|
}
|
|
54
18
|
this.setItem(LOGICFLOW_ENGINE_INSTANCES, instances);
|
|
55
19
|
}
|
|
56
|
-
|
|
57
|
-
this.maxRecorder =
|
|
58
|
-
}
|
|
20
|
+
setMaxRecorderNumber(max) {
|
|
21
|
+
this.maxRecorder = max;
|
|
22
|
+
}
|
|
59
23
|
// 将存储 storage 的方法收敛到此处,并在此处做异常处理 - setItem
|
|
60
|
-
|
|
24
|
+
setItem(key, value) {
|
|
61
25
|
try {
|
|
62
26
|
storage.setItem(key, value);
|
|
63
27
|
}
|
|
64
28
|
catch (error) {
|
|
65
|
-
console.
|
|
29
|
+
console.error('Ops, something wrong with storage.setItem !!!');
|
|
66
30
|
storage.clear();
|
|
67
31
|
storage.setItem(key, value);
|
|
68
32
|
}
|
|
69
|
-
}
|
|
33
|
+
}
|
|
70
34
|
// getItem 方法
|
|
71
|
-
|
|
35
|
+
getItem(key) {
|
|
72
36
|
return storage.getItem(key);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* actionId: '',
|
|
78
|
-
* nodeId: '',
|
|
79
|
-
* executionId: '',
|
|
80
|
-
* nodeType: '',
|
|
81
|
-
* timestamp: '',
|
|
82
|
-
* properties: {},
|
|
83
|
-
* }
|
|
84
|
-
*/
|
|
85
|
-
Recorder.prototype.addActionRecord = function (action) {
|
|
86
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
87
|
-
var executionId, actionId, instanceData;
|
|
88
|
-
return __generator(this, function (_a) {
|
|
89
|
-
switch (_a.label) {
|
|
90
|
-
case 0:
|
|
91
|
-
executionId = action.executionId, actionId = action.actionId;
|
|
92
|
-
return [4 /*yield*/, this.getExecutionActions(executionId)];
|
|
93
|
-
case 1:
|
|
94
|
-
instanceData = _a.sent();
|
|
95
|
-
if (!instanceData) {
|
|
96
|
-
this.pushExecution(executionId);
|
|
97
|
-
}
|
|
98
|
-
this.pushActionToExecution(executionId, actionId);
|
|
99
|
-
this.setItem(actionId, action);
|
|
100
|
-
return [2 /*return*/];
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
};
|
|
105
|
-
Recorder.prototype.getActionRecord = function (actionId) {
|
|
106
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
107
|
-
return __generator(this, function (_a) {
|
|
108
|
-
return [2 /*return*/, this.getItem(actionId)];
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
};
|
|
112
|
-
Recorder.prototype.getExecutionActions = function (executionId) {
|
|
113
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
114
|
-
return __generator(this, function (_a) {
|
|
115
|
-
return [2 /*return*/, this.getItem(executionId)];
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
};
|
|
119
|
-
Recorder.prototype.getExecutionList = function () {
|
|
120
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
121
|
-
var instances;
|
|
122
|
-
return __generator(this, function (_a) {
|
|
123
|
-
instances = this.getItem(this.instanceId) || [];
|
|
124
|
-
return [2 /*return*/, instances];
|
|
125
|
-
});
|
|
37
|
+
}
|
|
38
|
+
getExecutionActions(executionId) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
return this.getItem(executionId);
|
|
126
41
|
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
this
|
|
130
|
-
|
|
131
|
-
Recorder.prototype.clearInstance = function (instanceId) {
|
|
132
|
-
var _this = this;
|
|
133
|
-
var instanceExecutions = this.getItem(instanceId) || [];
|
|
134
|
-
instanceExecutions.forEach(function (executionId) {
|
|
135
|
-
storage.removeItem(executionId);
|
|
136
|
-
var instanceData = _this.getItem(executionId) || [];
|
|
137
|
-
instanceData.forEach(function (actionId) {
|
|
138
|
-
storage.removeItem(actionId);
|
|
139
|
-
});
|
|
42
|
+
}
|
|
43
|
+
getExecutionList() {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
return this.getItem(this.instanceId) || [];
|
|
140
46
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var instanceExecutions = this.getItem(this.instanceId) || [];
|
|
47
|
+
}
|
|
48
|
+
addExecution(executionId) {
|
|
49
|
+
const instanceExecutions = this.getItem(this.instanceId) || [];
|
|
145
50
|
if (instanceExecutions.length >= this.maxRecorder) {
|
|
146
|
-
|
|
147
|
-
this.popExecution(
|
|
51
|
+
const toBeRemovedItem = instanceExecutions.shift();
|
|
52
|
+
this.popExecution(toBeRemovedItem);
|
|
148
53
|
}
|
|
149
54
|
instanceExecutions.push(executionId);
|
|
150
55
|
this.setItem(this.instanceId, instanceExecutions);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
instanceData.forEach(
|
|
56
|
+
}
|
|
57
|
+
popExecution(executionId) {
|
|
58
|
+
const instanceData = this.getItem(executionId) || [];
|
|
59
|
+
instanceData.forEach((actionId) => {
|
|
155
60
|
storage.removeItem(actionId);
|
|
156
61
|
});
|
|
157
62
|
storage.removeItem(executionId);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
|
|
63
|
+
}
|
|
64
|
+
pushActionToExecution(executionId, actionId) {
|
|
65
|
+
const actions = this.getItem(executionId) || [];
|
|
161
66
|
actions.push(actionId);
|
|
162
67
|
this.setItem(executionId, actions);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @param {Object} action
|
|
71
|
+
* {
|
|
72
|
+
* actionId: '',
|
|
73
|
+
* nodeId: '',
|
|
74
|
+
* executionId: '',
|
|
75
|
+
* nodeType: '',
|
|
76
|
+
* timestamp: '',
|
|
77
|
+
* properties: {},
|
|
78
|
+
* }
|
|
79
|
+
*/
|
|
80
|
+
addActionRecord(action) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
const { executionId, actionId } = action;
|
|
83
|
+
const instanceData = yield this.getExecutionActions(executionId);
|
|
84
|
+
if (!instanceData) {
|
|
85
|
+
this.addExecution(executionId);
|
|
86
|
+
}
|
|
87
|
+
this.pushActionToExecution(executionId, actionId);
|
|
88
|
+
this.setItem(actionId, action);
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
getActionRecord(actionId) {
|
|
92
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
return this.getItem(actionId);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
clear() {
|
|
97
|
+
this.clearInstance(this.instanceId);
|
|
98
|
+
}
|
|
99
|
+
clearInstance(instanceId) {
|
|
100
|
+
const instanceExecutions = this.getItem(instanceId) || [];
|
|
101
|
+
// TODO: 完善类型定义
|
|
102
|
+
instanceExecutions.forEach((executionId) => {
|
|
103
|
+
storage.removeItem(executionId);
|
|
104
|
+
const instanceData = this.getItem(executionId) || [];
|
|
105
|
+
instanceData.forEach((actionId) => {
|
|
106
|
+
storage.removeItem(actionId);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
storage.removeItem(instanceId);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
166
112
|
export default Recorder;
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recorder/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// 判断当前环境是否为服务端
|
|
2
|
+
// const isServer = typeof window === undefined;
|
|
3
|
+
// const isServer = process.env.BROWSER === true;
|
|
4
|
+
const isInBrowser = typeof window === 'object' && window.window === window;
|
|
5
|
+
const isInNodeJS = typeof global === 'object' && global.global === global;
|
|
6
|
+
const isInWebWorker = !isInBrowser && typeof self === 'object' && self.constructor;
|
|
7
|
+
const globalScope = (() => {
|
|
8
|
+
if (isInBrowser) {
|
|
9
|
+
return window;
|
|
10
|
+
}
|
|
11
|
+
if (typeof self === 'object' && self.self === self) {
|
|
12
|
+
return self;
|
|
13
|
+
}
|
|
14
|
+
if (isInNodeJS) {
|
|
15
|
+
return global;
|
|
16
|
+
}
|
|
17
|
+
if (typeof globalThis === 'object') {
|
|
18
|
+
return globalThis;
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
eval: () => undefined,
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
export {
|
|
25
|
+
// 环境相关方法
|
|
26
|
+
globalScope, isInWebWorker, isInBrowser, isInNodeJS, };
|
|
27
|
+
//# sourceMappingURL=global.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.js","sourceRoot":"","sources":["../../src/utils/global.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,gDAAgD;AAEhD,iDAAiD;AAEjD,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAA;AAE1E,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAA;AAEzE,MAAM,aAAa,GACjB,CAAC,WAAW,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAA;AAE9D,MAAM,WAAW,GAAQ,CAAC,GAAG,EAAE;IAC7B,IAAI,WAAW,EAAE;QACf,OAAO,MAAM,CAAA;KACd;IAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;QAClD,OAAO,IAAI,CAAA;KACZ;IAED,IAAI,UAAU,EAAE;QACd,OAAO,MAAM,CAAA;KACd;IAED,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,OAAO,UAAU,CAAA;KAClB;IAED,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;KACK,CAAA;AAC9B,CAAC,CAAC,EAAE,CAAA;AAEJ,OAAO;AACL,SAAS;AACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,GACX,CAAA"}
|
package/es/utils/id.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { v4 as uuidV4 } from 'uuid';
|
|
2
|
+
export const createExecId = () => {
|
|
3
|
+
const uuid = uuidV4();
|
|
4
|
+
return `exec-${uuid}`;
|
|
5
|
+
};
|
|
6
|
+
export const createActionId = () => {
|
|
7
|
+
const uuid = uuidV4();
|
|
8
|
+
return `action-${uuid}`;
|
|
9
|
+
};
|
|
10
|
+
export const createEngineId = () => {
|
|
11
|
+
const uuid = uuidV4();
|
|
12
|
+
return `engine-${uuid}`;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.js","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,CAAC,MAAM,YAAY,GAAG,GAAW,EAAE;IACvC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;IACrB,OAAO,QAAQ,IAAI,EAAE,CAAA;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;IACrB,OAAO,UAAU,IAAI,EAAE,CAAA;AACzB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAA;IACrB,OAAO,UAAU,IAAI,EAAE,CAAA;AACzB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAA;AAE/B,cAAc,UAAU,CAAA;AACxB,cAAc,MAAM,CAAA;AACpB,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -3,43 +3,44 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { globalScope } from './global';
|
|
5
5
|
if (!globalScope.sessionStorage) {
|
|
6
|
-
|
|
6
|
+
const storage = {
|
|
7
7
|
data: {},
|
|
8
|
-
setItem
|
|
9
|
-
|
|
8
|
+
setItem(key, value) {
|
|
9
|
+
storage.data[key] = value;
|
|
10
10
|
},
|
|
11
|
-
getItem
|
|
12
|
-
return
|
|
11
|
+
getItem(key) {
|
|
12
|
+
return storage.data[key];
|
|
13
13
|
},
|
|
14
|
-
removeItem
|
|
15
|
-
delete
|
|
14
|
+
removeItem(key) {
|
|
15
|
+
delete storage.data[key];
|
|
16
16
|
},
|
|
17
|
-
clear
|
|
18
|
-
|
|
17
|
+
clear() {
|
|
18
|
+
storage.data = {};
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
|
-
globalScope.sessionStorage =
|
|
21
|
+
globalScope.sessionStorage = storage;
|
|
22
22
|
}
|
|
23
23
|
export default {
|
|
24
|
-
setItem
|
|
24
|
+
setItem(key, value) {
|
|
25
25
|
if (typeof value === 'object') {
|
|
26
26
|
value = JSON.stringify(value);
|
|
27
27
|
}
|
|
28
28
|
globalScope.sessionStorage.setItem(key, value);
|
|
29
29
|
},
|
|
30
|
-
getItem
|
|
31
|
-
|
|
30
|
+
getItem(key) {
|
|
31
|
+
const value = globalScope.sessionStorage.getItem(key);
|
|
32
32
|
try {
|
|
33
33
|
return JSON.parse(value);
|
|
34
34
|
}
|
|
35
|
-
catch (
|
|
35
|
+
catch (error) {
|
|
36
36
|
return value;
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
|
-
removeItem
|
|
39
|
+
removeItem(key) {
|
|
40
40
|
globalScope.sessionStorage.removeItem(key);
|
|
41
41
|
},
|
|
42
|
-
clear
|
|
42
|
+
clear() {
|
|
43
43
|
globalScope.sessionStorage.clear();
|
|
44
44
|
},
|
|
45
45
|
};
|
|
46
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEtC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;IAC/B,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,EAA6B;QAEnC,OAAO,CAAC,GAAG,EAAE,KAAK;YAChB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QAC3B,CAAC;QAED,OAAO,CAAC,GAAG;YACT,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAED,UAAU,CAAC,GAAG;YACZ,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAED,KAAK;YACH,OAAO,CAAC,IAAI,GAAG,EAAE,CAAA;QACnB,CAAC;KACF,CAAA;IAED,WAAW,CAAC,cAAc,GAAG,OAAO,CAAA;CACrC;AAED,eAAe;IACb,OAAO,CAAC,GAAG,EAAE,KAAK;QAChB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;SAC9B;QAED,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,CAAC,GAAG;QACT,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QACrD,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAA;SACb;IACH,CAAC;IAED,UAAU,CAAC,GAAG;QACZ,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK;QACH,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IACpC,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface EventType {
|
|
2
|
+
readonly callback: (params?: any) => void;
|
|
3
|
+
readonly once: boolean;
|
|
4
|
+
}
|
|
5
|
+
export type EventArgs = Record<string, unknown>;
|
|
6
|
+
export type EventsType = Record<string, EventType[]>;
|
|
7
|
+
export type CallbackType = (...args: unknown[]) => void;
|
|
8
|
+
export default class EventEmitter {
|
|
9
|
+
private _events;
|
|
10
|
+
constructor();
|
|
11
|
+
/**
|
|
12
|
+
* 添加一个监听事件
|
|
13
|
+
* @param evtKey 事件名称
|
|
14
|
+
* @param callback 回调方法
|
|
15
|
+
* @param once 是否触发一次
|
|
16
|
+
* @returns 当前 EventEmitter 实例
|
|
17
|
+
*/
|
|
18
|
+
on(evtKey: string, callback: CallbackType, once?: boolean): void;
|
|
19
|
+
/**
|
|
20
|
+
* 取消监听一个事件,或者一个 Channel
|
|
21
|
+
* @param evtKey
|
|
22
|
+
* @param callback
|
|
23
|
+
*/
|
|
24
|
+
off(evtKey: string, callback?: CallbackType): void;
|
|
25
|
+
/**
|
|
26
|
+
* 主动触发事件
|
|
27
|
+
* @param evtKey 触发事件名称
|
|
28
|
+
* @param eventArgs 事件参数
|
|
29
|
+
*/
|
|
30
|
+
emit(evtKey: string, eventArgs: EventArgs): void;
|
|
31
|
+
/**
|
|
32
|
+
* 获取当前所有事件
|
|
33
|
+
* @returns _events
|
|
34
|
+
*/
|
|
35
|
+
getEvents(): EventsType;
|
|
36
|
+
}
|
|
37
|
+
export { EventEmitter };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventEmitter = void 0;
|
|
4
|
+
class EventEmitter {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._events = {};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 添加一个监听事件
|
|
10
|
+
* @param evtKey 事件名称
|
|
11
|
+
* @param callback 回调方法
|
|
12
|
+
* @param once 是否触发一次
|
|
13
|
+
* @returns 当前 EventEmitter 实例
|
|
14
|
+
*/
|
|
15
|
+
on(evtKey, callback, once) {
|
|
16
|
+
evtKey = evtKey.trim();
|
|
17
|
+
if (!this._events[evtKey]) {
|
|
18
|
+
this._events[evtKey] = [];
|
|
19
|
+
}
|
|
20
|
+
this._events[evtKey].push({
|
|
21
|
+
callback,
|
|
22
|
+
once: !!once,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 取消监听一个事件,或者一个 Channel
|
|
27
|
+
* @param evtKey
|
|
28
|
+
* @param callback
|
|
29
|
+
*/
|
|
30
|
+
off(evtKey, callback) {
|
|
31
|
+
if (!evtKey) {
|
|
32
|
+
// evtKey 为空全部清除
|
|
33
|
+
this._events = {};
|
|
34
|
+
}
|
|
35
|
+
if (!callback) {
|
|
36
|
+
// evtKey 存在,callback 为空,清除事件所有方法
|
|
37
|
+
delete this._events[evtKey];
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// evtKey 存在,callback 存在,清除匹配的
|
|
41
|
+
const events = this._events[evtKey] || [];
|
|
42
|
+
let { length } = events;
|
|
43
|
+
for (let i = 0; i < length; i++) {
|
|
44
|
+
if (events[i].callback === callback) {
|
|
45
|
+
events.splice(i, 1);
|
|
46
|
+
length--;
|
|
47
|
+
i--;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (events.length === 0) {
|
|
51
|
+
delete this._events[evtKey];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 主动触发事件
|
|
57
|
+
* @param evtKey 触发事件名称
|
|
58
|
+
* @param eventArgs 事件参数
|
|
59
|
+
*/
|
|
60
|
+
emit(evtKey, eventArgs) {
|
|
61
|
+
const events = this._events[evtKey] || [];
|
|
62
|
+
// 实际的处理 emit 方法
|
|
63
|
+
const doEmit = (es) => {
|
|
64
|
+
let { length } = es;
|
|
65
|
+
for (let i = 0; i < length; i++) {
|
|
66
|
+
if (!es[i]) {
|
|
67
|
+
// eslint-disable-next-line no-continue
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const { callback, once } = es[i];
|
|
71
|
+
if (once) {
|
|
72
|
+
es.splice(i, 1);
|
|
73
|
+
if (es.length === 0) {
|
|
74
|
+
delete this._events[evtKey];
|
|
75
|
+
}
|
|
76
|
+
length--;
|
|
77
|
+
i--;
|
|
78
|
+
}
|
|
79
|
+
callback.apply(this, [eventArgs]);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
doEmit(events);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 获取当前所有事件
|
|
86
|
+
* @returns _events
|
|
87
|
+
*/
|
|
88
|
+
getEvents() {
|
|
89
|
+
return this._events;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.default = EventEmitter;
|
|
93
|
+
exports.EventEmitter = EventEmitter;
|
|
94
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../src/EventEmitter.ts"],"names":[],"mappings":";;;AASA,MAAqB,YAAY;IAE/B;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED;;;;;;OAMG;IACH,EAAE,CAAC,MAAc,EAAE,QAAsB,EAAE,IAAc;QACvD,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;SAC1B;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YACxB,QAAQ;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;SACb,CAAC,CAAA;IACJ,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,MAAc,EAAE,QAAuB;QACzC,IAAI,CAAC,MAAM,EAAE;YACX,gBAAgB;YAChB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;SAClB;QACD,IAAI,CAAC,QAAQ,EAAE;YACb,iCAAiC;YACjC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;SAC5B;aAAM;YACL,8BAA8B;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACzC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;YACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;oBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACnB,MAAM,EAAE,CAAA;oBACR,CAAC,EAAE,CAAA;iBACJ;aACF;YACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;aAC5B;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,MAAc,EAAE,SAAoB;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QACzC,gBAAgB;QAChB,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE;YACpB,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;oBACV,uCAAuC;oBACvC,SAAQ;iBACT;gBACD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;gBAChC,IAAI,IAAI,EAAE;oBACR,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACf,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;wBACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;qBAC5B;oBACD,MAAM,EAAE,CAAA;oBACR,CAAC,EAAE,CAAA;iBACJ;gBACD,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;aAClC;QACH,CAAC,CAAA;QACD,MAAM,CAAC,MAAM,CAAC,CAAA;IAChB,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AA3FD,+BA2FC;AAEQ,oCAAY"}
|