@drayman/core 2.10.0 → 3.1.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/dist/component-processor.js +273 -61
- package/dist/function-instance-manager.v2.d.ts +166 -0
- package/dist/function-instance-manager.v2.js +423 -0
- package/dist/index.d.ts +42 -21
- package/dist/index.js +293 -88
- package/dist/utils.d.ts +2 -1
- package/dist/utils.js +18 -6
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
declare type ComponentInstance = {
|
|
2
|
+
heapLimit: number;
|
|
3
|
+
componentName: string;
|
|
4
|
+
heartbeatLimitMs: number;
|
|
5
|
+
externalLimit: number;
|
|
6
|
+
terminatingPromise: Promise<void> | null;
|
|
7
|
+
emit: any;
|
|
8
|
+
lastHeartbeat: number;
|
|
9
|
+
heapUsed: number;
|
|
10
|
+
externalUsed: number;
|
|
11
|
+
eventsSub?: {
|
|
12
|
+
unsubscribe: () => void;
|
|
13
|
+
};
|
|
14
|
+
component: string;
|
|
15
|
+
startDate: Date;
|
|
16
|
+
worker: any;
|
|
17
|
+
eventRequests: {
|
|
18
|
+
[requestId: string]: {
|
|
19
|
+
onSuccess: (data: {
|
|
20
|
+
result: any;
|
|
21
|
+
}) => void;
|
|
22
|
+
onError: (data: {
|
|
23
|
+
err: any;
|
|
24
|
+
}) => void;
|
|
25
|
+
canceled: boolean;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
connectionId: string;
|
|
29
|
+
namespaceId: string;
|
|
30
|
+
meta?: any;
|
|
31
|
+
};
|
|
32
|
+
export declare const componentInstances: {
|
|
33
|
+
[componentInstanceId: string]: ComponentInstance;
|
|
34
|
+
};
|
|
1
35
|
export declare const handleComponentEvent: ({ componentInstanceId, eventName, options, files, onSuccess, onError }: {
|
|
2
36
|
componentInstanceId: any;
|
|
3
37
|
eventName: any;
|
|
@@ -12,11 +46,11 @@ export declare const handleComponentEvent: ({ componentInstanceId, eventName, op
|
|
|
12
46
|
export declare function getElementsScriptPaths({ nodeModulesPath }: {
|
|
13
47
|
nodeModulesPath?: any;
|
|
14
48
|
}): Promise<{}>;
|
|
15
|
-
export declare const onUpdateComponentInstanceProps: ({ componentInstanceId, options
|
|
49
|
+
export declare const onUpdateComponentInstanceProps: ({ componentInstanceId, options }: {
|
|
16
50
|
componentInstanceId: any;
|
|
17
51
|
options: any;
|
|
18
52
|
}) => void;
|
|
19
|
-
export declare const onHandleBrowserCallback: ({ callbackId, data
|
|
53
|
+
export declare const onHandleBrowserCallback: ({ callbackId, data }: {
|
|
20
54
|
callbackId: any;
|
|
21
55
|
data: any;
|
|
22
56
|
}) => void;
|
|
@@ -31,7 +65,7 @@ export declare const saveComponent: ({ script, outputFile, scriptPath }: {
|
|
|
31
65
|
outputFile: any;
|
|
32
66
|
scriptPath: any;
|
|
33
67
|
}) => Promise<void>;
|
|
34
|
-
export declare const onInitializeComponentInstance: ({ namespaceId, extensionsPath, extensionsOptions, componentNamePrefix, componentName, componentRootDir, componentInstanceId, componentOptions, connectionId, emit, onComponentInstanceConsole, browserCommands, serverCommands, onEventHubEvent, }: {
|
|
68
|
+
export declare const onInitializeComponentInstance: ({ namespaceId, extensionsPath, extensionsOptions, componentNamePrefix, componentName, componentRootDir, componentInstanceId, componentOptions, connectionId, emit, onComponentInstanceConsole, browserCommands, serverCommands, onEventHubEvent, heapLimit, externalLimit, heartbeatLimitMs, meta, }: {
|
|
35
69
|
namespaceId?: any;
|
|
36
70
|
extensionsPath?: any;
|
|
37
71
|
extensionsOptions?: any;
|
|
@@ -46,6 +80,10 @@ export declare const onInitializeComponentInstance: ({ namespaceId, extensionsPa
|
|
|
46
80
|
browserCommands: any;
|
|
47
81
|
serverCommands: any;
|
|
48
82
|
onEventHubEvent?: any;
|
|
83
|
+
heapLimit?: number;
|
|
84
|
+
externalLimit?: number;
|
|
85
|
+
heartbeatLimitMs?: number;
|
|
86
|
+
meta?: any;
|
|
49
87
|
}) => Promise<void>;
|
|
50
88
|
export declare const onDisconnect: ({ connectionId }: {
|
|
51
89
|
connectionId: any;
|
|
@@ -53,21 +91,4 @@ export declare const onDisconnect: ({ connectionId }: {
|
|
|
53
91
|
export declare const onDestroyComponentInstance: ({ componentInstanceId }: {
|
|
54
92
|
componentInstanceId: any;
|
|
55
93
|
}) => Promise<void>;
|
|
56
|
-
export
|
|
57
|
-
[componentInstanceId: string]: {
|
|
58
|
-
terminate: () => Promise<void>;
|
|
59
|
-
worker: any;
|
|
60
|
-
eventRequests: {
|
|
61
|
-
[requestId: string]: {
|
|
62
|
-
onSuccess: (data: {
|
|
63
|
-
result: any;
|
|
64
|
-
}) => void;
|
|
65
|
-
onError: (data: {
|
|
66
|
-
err: any;
|
|
67
|
-
}) => void;
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
connectionId: string;
|
|
71
|
-
namespaceId: string;
|
|
72
|
-
};
|
|
73
|
-
};
|
|
94
|
+
export {};
|
package/dist/index.js
CHANGED
|
@@ -3,14 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.onDestroyComponentInstance = exports.onDisconnect = exports.onInitializeComponentInstance = exports.saveComponent = exports.handleEventHubEvent = exports.onHandleBrowserCallback = exports.onUpdateComponentInstanceProps = exports.getElementsScriptPaths = exports.handleComponentEvent = exports.componentInstances = void 0;
|
|
7
7
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const shortid_1 = __importDefault(require("shortid"));
|
|
10
10
|
const typescript_1 = __importDefault(require("typescript"));
|
|
11
11
|
const threads_1 = require("threads");
|
|
12
12
|
const child_process_1 = require("child_process");
|
|
13
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
14
13
|
const getNpmPackages = (nodeModulesPath) => {
|
|
15
14
|
return new Promise((resolve) => {
|
|
16
15
|
child_process_1.exec(`npm ls -a -p`, { cwd: nodeModulesPath, }, function (error, stdout, stderr) {
|
|
@@ -18,24 +17,169 @@ const getNpmPackages = (nodeModulesPath) => {
|
|
|
18
17
|
});
|
|
19
18
|
});
|
|
20
19
|
};
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
const delay = (ms) => {
|
|
21
|
+
return new Promise(r => setTimeout(r, ms));
|
|
22
|
+
};
|
|
23
|
+
const toMB = (x) => {
|
|
24
|
+
return Math.round((x / 1048576) * 10) / 10;
|
|
25
|
+
};
|
|
26
|
+
const getPct = (num, den) => {
|
|
27
|
+
return Math.min(100, Math.round((den > 0 ? (num / den) : 0) * 100));
|
|
28
|
+
};
|
|
29
|
+
const withTimeout = async (p, ms) => {
|
|
30
|
+
return Promise.race([
|
|
31
|
+
p,
|
|
32
|
+
(async () => {
|
|
33
|
+
await delay(ms);
|
|
34
|
+
throw new Error(`Timed out after ${ms} ms`);
|
|
35
|
+
})()
|
|
36
|
+
]);
|
|
37
|
+
};
|
|
38
|
+
const safeParse = (value) => {
|
|
39
|
+
if (typeof value !== 'string') {
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
return JSON.parse(value);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const garbage = {
|
|
50
|
+
connections: new Set(),
|
|
51
|
+
componentInstances: new Map(),
|
|
52
|
+
};
|
|
53
|
+
const markConnectionGarbage = (connectionId) => {
|
|
54
|
+
garbage.connections.add(connectionId);
|
|
55
|
+
clearGarbage();
|
|
56
|
+
};
|
|
57
|
+
const markComponentGarbage = (componentInstanceId, opts = {}) => {
|
|
58
|
+
const prev = garbage.componentInstances.get(componentInstanceId) || {};
|
|
59
|
+
garbage.componentInstances.set(componentInstanceId, {
|
|
60
|
+
skipOnDestroy: Boolean(prev.skipOnDestroy || opts.skipOnDestroy),
|
|
61
|
+
});
|
|
62
|
+
clearGarbage();
|
|
63
|
+
};
|
|
64
|
+
const clearGarbage = () => {
|
|
65
|
+
const aliveIds = Object.keys(exports.componentInstances);
|
|
66
|
+
const fromConnections = new Map();
|
|
67
|
+
for (const id of aliveIds) {
|
|
68
|
+
const instance = exports.componentInstances[id];
|
|
69
|
+
if (instance && garbage.connections.has(instance.connectionId)) {
|
|
70
|
+
fromConnections.set(id, { skipOnDestroy: false });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const explicit = new Map(garbage.componentInstances);
|
|
74
|
+
const toTerminate = new Map();
|
|
75
|
+
for (const [id, opts] of fromConnections) {
|
|
76
|
+
toTerminate.set(id, { skipOnDestroy: Boolean(opts.skipOnDestroy) });
|
|
77
|
+
}
|
|
78
|
+
for (const [id, opts] of explicit) {
|
|
79
|
+
const prev = toTerminate.get(id) || { skipOnDestroy: false };
|
|
80
|
+
toTerminate.set(id, { skipOnDestroy: Boolean(prev.skipOnDestroy || opts.skipOnDestroy) });
|
|
81
|
+
}
|
|
82
|
+
for (const [id, opts] of toTerminate) {
|
|
83
|
+
const instance = exports.componentInstances[id];
|
|
84
|
+
if (!instance || instance.terminatingPromise) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
terminateComponentInstance(id, Boolean(opts.skipOnDestroy));
|
|
88
|
+
}
|
|
89
|
+
garbage.componentInstances.clear();
|
|
90
|
+
garbage.connections.clear();
|
|
91
|
+
};
|
|
92
|
+
async function terminateComponentInstance(componentInstanceId, skipOnDestroy = false) {
|
|
93
|
+
const instance = exports.componentInstances[componentInstanceId];
|
|
94
|
+
if (!instance) {
|
|
95
|
+
return;
|
|
25
96
|
}
|
|
97
|
+
if (instance.terminatingPromise) {
|
|
98
|
+
return instance.terminatingPromise;
|
|
99
|
+
}
|
|
100
|
+
instance.terminatingPromise = (async () => {
|
|
101
|
+
for (const requestId of Object.keys(instance.eventRequests)) {
|
|
102
|
+
try {
|
|
103
|
+
instance.eventRequests[requestId].onError({ err: `Component instance was destroyed` });
|
|
104
|
+
}
|
|
105
|
+
catch { }
|
|
106
|
+
}
|
|
107
|
+
if (!skipOnDestroy) {
|
|
108
|
+
try {
|
|
109
|
+
await withTimeout(instance.worker.handleDestroyComponentInstance(), 3000);
|
|
110
|
+
}
|
|
111
|
+
catch (e) {
|
|
112
|
+
console.warn(`Handle destroy component instance failed for ${componentInstanceId} (${instance.component})`, e);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
await withTimeout(threads_1.Thread.terminate(instance.worker), 1000);
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
console.warn(`Thread.terminate failed for ${componentInstanceId} (${instance.component})`, e);
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
instance.eventsSub?.unsubscribe?.();
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
console.warn(`Failed to unsubscribe events for ${componentInstanceId} (${instance.component})`, e);
|
|
126
|
+
}
|
|
127
|
+
delete exports.componentInstances[componentInstanceId];
|
|
128
|
+
try {
|
|
129
|
+
instance?.emit?.({
|
|
130
|
+
type: 'componentInstanceDestroyed',
|
|
131
|
+
payload: {},
|
|
132
|
+
componentInstanceId,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (e) {
|
|
136
|
+
console.warn(`Failed to emit componentInstanceDestroyed for ${componentInstanceId} (${instance.component})`, e);
|
|
137
|
+
}
|
|
138
|
+
})();
|
|
139
|
+
return instance.terminatingPromise;
|
|
140
|
+
}
|
|
141
|
+
setInterval(() => {
|
|
142
|
+
const now = Date.now();
|
|
143
|
+
for (const [id, instance] of Object.entries(exports.componentInstances)) {
|
|
144
|
+
if (!instance || instance.terminatingPromise) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const limit = instance.heartbeatLimitMs;
|
|
148
|
+
if (now - instance.lastHeartbeat > limit) {
|
|
149
|
+
console.warn(`Heartbeat limit reached (${limit} ms) — stopping ${id} (${instance.component})`);
|
|
150
|
+
markComponentGarbage(id, { skipOnDestroy: true });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}, 1000);
|
|
154
|
+
exports.componentInstances = {};
|
|
155
|
+
const handleComponentEvent = ({ componentInstanceId, eventName, options, files, onSuccess, onError }) => {
|
|
156
|
+
options = safeParse(options);
|
|
26
157
|
const requestId = shortid_1.default.generate();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
158
|
+
const instance = exports.componentInstances[componentInstanceId];
|
|
159
|
+
if (instance) {
|
|
160
|
+
instance.eventRequests[requestId] = { onSuccess, onError, canceled: false };
|
|
161
|
+
instance.worker.handleComponentEvent({ eventName, requestId, options, files });
|
|
30
162
|
}
|
|
31
163
|
else {
|
|
32
|
-
onError({ err:
|
|
164
|
+
onError({ err: 'Component instance was not found.' });
|
|
33
165
|
}
|
|
34
166
|
return {
|
|
35
167
|
requestId,
|
|
36
168
|
cancel: () => {
|
|
37
|
-
|
|
38
|
-
|
|
169
|
+
const current = exports.componentInstances[componentInstanceId];
|
|
170
|
+
if (!current) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const req = current.eventRequests[requestId];
|
|
174
|
+
if (!req) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
req.canceled = true;
|
|
178
|
+
try {
|
|
179
|
+
current.worker.cancelComponentEvent({ requestId });
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
console.warn(`Failed to cancel component event ${eventName} (${requestId}) for ${componentInstanceId} (${instance.component})`);
|
|
39
183
|
}
|
|
40
184
|
}
|
|
41
185
|
};
|
|
@@ -56,23 +200,44 @@ async function getElementsScriptPaths({ nodeModulesPath = null }) {
|
|
|
56
200
|
return paths;
|
|
57
201
|
}
|
|
58
202
|
exports.getElementsScriptPaths = getElementsScriptPaths;
|
|
59
|
-
const onUpdateComponentInstanceProps = ({ componentInstanceId, options
|
|
60
|
-
|
|
61
|
-
|
|
203
|
+
const onUpdateComponentInstanceProps = ({ componentInstanceId, options }) => {
|
|
204
|
+
options = safeParse(options);
|
|
205
|
+
const instance = exports.componentInstances[componentInstanceId];
|
|
206
|
+
if (!instance || instance.terminatingPromise) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
instance.worker.updateComponentInstanceProps({ options });
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
console.warn(`Failed to update props for component instance ${componentInstanceId} (${instance.component})`);
|
|
62
214
|
}
|
|
63
|
-
exports.componentInstances[componentInstanceId].worker.updateComponentInstanceProps({ options, });
|
|
64
215
|
};
|
|
65
216
|
exports.onUpdateComponentInstanceProps = onUpdateComponentInstanceProps;
|
|
66
|
-
const onHandleBrowserCallback = ({ callbackId, data
|
|
67
|
-
for (const
|
|
68
|
-
|
|
217
|
+
const onHandleBrowserCallback = ({ callbackId, data }) => {
|
|
218
|
+
for (const [componentInstanceId, instance] of Object.entries(exports.componentInstances)) {
|
|
219
|
+
if (!instance || instance.terminatingPromise) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
try {
|
|
223
|
+
instance.worker.handleBrowserCallback({ callbackId, data });
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
console.warn(`Failed to handle browser callback ${callbackId} for component instance ${componentInstanceId} (${instance.component})`);
|
|
227
|
+
}
|
|
69
228
|
}
|
|
70
229
|
};
|
|
71
230
|
exports.onHandleBrowserCallback = onHandleBrowserCallback;
|
|
72
231
|
const handleEventHubEvent = async ({ data, groupId = null, type, namespaceId = null }) => {
|
|
73
|
-
for (const
|
|
74
|
-
if (
|
|
75
|
-
|
|
232
|
+
for (const [componentInstanceId, instance] of Object.entries(exports.componentInstances)) {
|
|
233
|
+
if (!instance || instance.terminatingPromise || instance.namespaceId !== namespaceId) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
instance.worker.handleEventHubEvent({ type, data, groupId });
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
console.warn(`Failed to handle event hub event ${type} for component instance ${componentInstanceId} (${instance.component})`);
|
|
76
241
|
}
|
|
77
242
|
}
|
|
78
243
|
};
|
|
@@ -90,21 +255,31 @@ const saveComponent = async ({ script, outputFile, scriptPath }) => {
|
|
|
90
255
|
await fs_extra_1.default.outputFile(outputFile, transpiledComponentScript.outputText);
|
|
91
256
|
};
|
|
92
257
|
exports.saveComponent = saveComponent;
|
|
93
|
-
const onInitializeComponentInstance = async ({ namespaceId = null, extensionsPath = null, extensionsOptions = null, componentNamePrefix = '', componentName, componentRootDir, componentInstanceId, componentOptions, connectionId, emit, onComponentInstanceConsole, browserCommands, serverCommands, onEventHubEvent = null, }) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
258
|
+
const onInitializeComponentInstance = async ({ namespaceId = null, extensionsPath = null, extensionsOptions = null, componentNamePrefix = '', componentName, componentRootDir, componentInstanceId, componentOptions, connectionId, emit, onComponentInstanceConsole, browserCommands, serverCommands, onEventHubEvent = null, heapLimit = 512, externalLimit = 512, heartbeatLimitMs = 3 * 1000, meta = null, }) => {
|
|
259
|
+
componentOptions = safeParse(componentOptions);
|
|
260
|
+
const internalWorker = new threads_1.Worker(`./component-processor.js`, {
|
|
261
|
+
resourceLimits: {
|
|
262
|
+
maxOldGenerationSizeMb: heapLimit,
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
internalWorker.addEventListener('error', (err) => {
|
|
266
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
267
|
+
});
|
|
268
|
+
const worker = await threads_1.spawn(internalWorker);
|
|
98
269
|
exports.componentInstances[componentInstanceId] = {
|
|
270
|
+
heartbeatLimitMs,
|
|
271
|
+
heapLimit,
|
|
272
|
+
externalLimit,
|
|
273
|
+
componentName,
|
|
99
274
|
worker,
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
275
|
+
emit,
|
|
276
|
+
lastHeartbeat: Date.now(),
|
|
277
|
+
heapUsed: 0,
|
|
278
|
+
externalUsed: 0,
|
|
279
|
+
terminatingPromise: null,
|
|
280
|
+
component: `${componentNamePrefix}${componentName}`,
|
|
281
|
+
startDate: new Date(),
|
|
282
|
+
meta,
|
|
108
283
|
/**
|
|
109
284
|
* Used to store user event requests (on button click, on input, etc.).
|
|
110
285
|
*/
|
|
@@ -112,68 +287,98 @@ const onInitializeComponentInstance = async ({ namespaceId = null, extensionsPat
|
|
|
112
287
|
connectionId,
|
|
113
288
|
namespaceId,
|
|
114
289
|
};
|
|
115
|
-
worker.events().subscribe(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
exports.componentInstances[componentInstanceId]
|
|
290
|
+
const subscription = worker.events().subscribe({
|
|
291
|
+
next: ({ type, payload }) => {
|
|
292
|
+
/**
|
|
293
|
+
* When there is a response to user event request.
|
|
294
|
+
*/
|
|
295
|
+
if (type === 'response') {
|
|
296
|
+
const { requestId, result, err } = payload;
|
|
297
|
+
const req = exports.componentInstances[componentInstanceId]?.eventRequests?.[requestId];
|
|
298
|
+
if (req) {
|
|
299
|
+
try {
|
|
300
|
+
if (!req.canceled) {
|
|
301
|
+
err ? req.onError({ err }) : req.onSuccess({ result });
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
console.warn(`Failed to process response for request ${requestId} in component instance ${componentInstanceId} (${exports.componentInstances[componentInstanceId].component})`);
|
|
306
|
+
}
|
|
307
|
+
finally {
|
|
308
|
+
delete exports.componentInstances[componentInstanceId].eventRequests[requestId];
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return;
|
|
312
|
+
}
|
|
313
|
+
else if (type === 'eventHubEvent') {
|
|
314
|
+
const { eventPayload, groupId, type: eventType } = payload;
|
|
315
|
+
exports.handleEventHubEvent({ data: eventPayload, groupId, type: eventType, namespaceId });
|
|
316
|
+
onEventHubEvent?.({ data: eventPayload, groupId, type: eventType, namespaceId });
|
|
317
|
+
}
|
|
318
|
+
else if (type === 'console') {
|
|
319
|
+
const { text } = payload;
|
|
320
|
+
onComponentInstanceConsole?.({ text });
|
|
321
|
+
}
|
|
322
|
+
else if (type === 'heartbeat') {
|
|
323
|
+
const instance = exports.componentInstances[componentInstanceId];
|
|
324
|
+
if (!instance || instance.terminatingPromise) {
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
const { heapStatistics } = payload;
|
|
328
|
+
const heapUsedMB = toMB(heapStatistics.used_heap_size);
|
|
329
|
+
const extUsedMB = toMB(heapStatistics.external_memory);
|
|
330
|
+
const heapExceeded = heapUsedMB >= instance.heapLimit;
|
|
331
|
+
const extExceeded = extUsedMB >= instance.externalLimit;
|
|
332
|
+
instance.heapUsed = heapUsedMB;
|
|
333
|
+
instance.externalUsed = extUsedMB;
|
|
334
|
+
instance.lastHeartbeat = Date.now();
|
|
335
|
+
if (heapExceeded || extExceeded) {
|
|
336
|
+
console.warn(`Memory limit exceeded (heap: ${heapExceeded} ${heapUsedMB}/${instance.heapLimit}, external: ${extExceeded} ${extUsedMB}/${instance.externalLimit}) — stopping ${componentInstanceId} (${instance.component})`);
|
|
337
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
338
|
+
}
|
|
123
339
|
}
|
|
124
340
|
else {
|
|
125
|
-
|
|
341
|
+
try {
|
|
342
|
+
emit({ type, payload, componentInstanceId });
|
|
343
|
+
}
|
|
344
|
+
catch (e) {
|
|
345
|
+
console.warn(`Failed to emit event ${type} for ${componentInstanceId} (${exports.componentInstances[componentInstanceId].component})`, e);
|
|
346
|
+
}
|
|
126
347
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
else if (type === 'console') {
|
|
135
|
-
const { text } = payload;
|
|
136
|
-
onComponentInstanceConsole?.({ text });
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
emit({ type, payload, componentInstanceId });
|
|
140
|
-
}
|
|
348
|
+
},
|
|
349
|
+
error: (err) => {
|
|
350
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
351
|
+
},
|
|
352
|
+
complete: () => {
|
|
353
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
354
|
+
},
|
|
141
355
|
});
|
|
142
|
-
|
|
143
|
-
|
|
356
|
+
exports.componentInstances[componentInstanceId].eventsSub = subscription;
|
|
357
|
+
try {
|
|
358
|
+
worker.initializeComponentInstance({
|
|
359
|
+
browserCommands,
|
|
360
|
+
serverCommands,
|
|
361
|
+
componentNamePrefix,
|
|
362
|
+
componentName,
|
|
363
|
+
componentRootDir,
|
|
364
|
+
componentOptions,
|
|
365
|
+
componentInstanceId,
|
|
366
|
+
extensionsPath,
|
|
367
|
+
extensionsOptions,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
372
|
+
}
|
|
373
|
+
clearGarbage();
|
|
144
374
|
};
|
|
145
375
|
exports.onInitializeComponentInstance = onInitializeComponentInstance;
|
|
146
376
|
const onDisconnect = async ({ connectionId }) => {
|
|
147
|
-
|
|
148
|
-
await clearGarbage();
|
|
377
|
+
markConnectionGarbage(connectionId);
|
|
149
378
|
};
|
|
150
379
|
exports.onDisconnect = onDisconnect;
|
|
151
|
-
const garbage = {
|
|
152
|
-
connections: [],
|
|
153
|
-
componentInstances: [],
|
|
154
|
-
};
|
|
155
380
|
const onDestroyComponentInstance = async ({ componentInstanceId }) => {
|
|
156
|
-
|
|
157
|
-
await clearGarbage();
|
|
381
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: false });
|
|
158
382
|
};
|
|
159
383
|
exports.onDestroyComponentInstance = onDestroyComponentInstance;
|
|
160
|
-
exports.componentInstances = {};
|
|
161
|
-
const clearGarbage = lodash_1.default.debounce(async () => {
|
|
162
|
-
const aliveComponentInstances = Object.keys(exports.componentInstances);
|
|
163
|
-
const garbageComponentInstanceIds = [
|
|
164
|
-
...aliveComponentInstances.filter(x => garbage.connections.includes(exports.componentInstances[x].connectionId)),
|
|
165
|
-
...garbage.componentInstances,
|
|
166
|
-
];
|
|
167
|
-
for (const componentInstanceId of garbageComponentInstanceIds) {
|
|
168
|
-
if (exports.componentInstances[componentInstanceId]) {
|
|
169
|
-
try {
|
|
170
|
-
await exports.componentInstances[componentInstanceId].worker.handleDestroyComponentInstance();
|
|
171
|
-
}
|
|
172
|
-
catch (err) {
|
|
173
|
-
console.warn(err);
|
|
174
|
-
}
|
|
175
|
-
exports.componentInstances[componentInstanceId].terminate();
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}, 250);
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsNERBQTRCO0FBQzVCLHFDQUFnRDtBQUNoRCxpREFBcUM7QUFDckMsb0RBQXVCO0FBRXZCLE1BQU0sY0FBYyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxJQUFJLE9BQU8sQ0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLG9CQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLGVBQWUsR0FBRyxFQUFFLFVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO1lBQzNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBRU0sTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7SUFDM0csT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDeEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7S0FDakM7SUFDRCxNQUFNLFNBQVMsR0FBRyxpQkFBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JDLElBQUksTUFBTSxDQUFDLElBQUksQ0FB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
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsNERBQTRCO0FBQzVCLHFDQUFnRDtBQUNoRCxpREFBcUM7QUErQnJDLE1BQU0sY0FBYyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxJQUFJLE9BQU8sQ0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLG9CQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLGVBQWUsR0FBRyxFQUFFLFVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO1lBQzNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRTtJQUN6QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxH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
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const isEvent: (optionName: string) => boolean;
|
|
2
|
-
export declare const render: (raw: any, childRenderer?: any, renderedArr?: any[], events?: {}, parent?: string) => Promise<{
|
|
2
|
+
export declare const render: (raw: any, childRenderer?: any, renderedArr?: any[], events?: {}, parent?: string, parentDirty?: boolean, owner?: string, eventOwners?: {}) => Promise<{
|
|
3
3
|
tree: any[];
|
|
4
4
|
events: {};
|
|
5
|
+
eventOwners: {};
|
|
5
6
|
}>;
|