@drayman/core 2.9.0 → 3.0.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 +34 -15
- 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 -87
- package/package.json +5 -3
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ 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"));
|
|
@@ -17,24 +17,169 @@ const getNpmPackages = (nodeModulesPath) => {
|
|
|
17
17
|
});
|
|
18
18
|
});
|
|
19
19
|
};
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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;
|
|
24
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);
|
|
25
157
|
const requestId = shortid_1.default.generate();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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 });
|
|
29
162
|
}
|
|
30
163
|
else {
|
|
31
|
-
onError({ err:
|
|
164
|
+
onError({ err: 'Component instance was not found.' });
|
|
32
165
|
}
|
|
33
166
|
return {
|
|
34
167
|
requestId,
|
|
35
168
|
cancel: () => {
|
|
36
|
-
|
|
37
|
-
|
|
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})`);
|
|
38
183
|
}
|
|
39
184
|
}
|
|
40
185
|
};
|
|
@@ -55,23 +200,44 @@ async function getElementsScriptPaths({ nodeModulesPath = null }) {
|
|
|
55
200
|
return paths;
|
|
56
201
|
}
|
|
57
202
|
exports.getElementsScriptPaths = getElementsScriptPaths;
|
|
58
|
-
const onUpdateComponentInstanceProps = ({ componentInstanceId, options
|
|
59
|
-
|
|
60
|
-
|
|
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})`);
|
|
61
214
|
}
|
|
62
|
-
exports.componentInstances[componentInstanceId].worker.updateComponentInstanceProps({ options, });
|
|
63
215
|
};
|
|
64
216
|
exports.onUpdateComponentInstanceProps = onUpdateComponentInstanceProps;
|
|
65
|
-
const onHandleBrowserCallback = ({ callbackId, data
|
|
66
|
-
for (const
|
|
67
|
-
|
|
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
|
+
}
|
|
68
228
|
}
|
|
69
229
|
};
|
|
70
230
|
exports.onHandleBrowserCallback = onHandleBrowserCallback;
|
|
71
231
|
const handleEventHubEvent = async ({ data, groupId = null, type, namespaceId = null }) => {
|
|
72
|
-
for (const
|
|
73
|
-
if (
|
|
74
|
-
|
|
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})`);
|
|
75
241
|
}
|
|
76
242
|
}
|
|
77
243
|
};
|
|
@@ -89,21 +255,31 @@ const saveComponent = async ({ script, outputFile, scriptPath }) => {
|
|
|
89
255
|
await fs_extra_1.default.outputFile(outputFile, transpiledComponentScript.outputText);
|
|
90
256
|
};
|
|
91
257
|
exports.saveComponent = saveComponent;
|
|
92
|
-
const onInitializeComponentInstance = async ({ namespaceId = null, extensionsPath = null, extensionsOptions = null, componentNamePrefix = '', componentName, componentRootDir, componentInstanceId, componentOptions, connectionId, emit, onComponentInstanceConsole, browserCommands, serverCommands, onEventHubEvent = null, }) => {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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);
|
|
97
269
|
exports.componentInstances[componentInstanceId] = {
|
|
270
|
+
heartbeatLimitMs,
|
|
271
|
+
heapLimit,
|
|
272
|
+
externalLimit,
|
|
273
|
+
componentName,
|
|
98
274
|
worker,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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,
|
|
107
283
|
/**
|
|
108
284
|
* Used to store user event requests (on button click, on input, etc.).
|
|
109
285
|
*/
|
|
@@ -111,68 +287,98 @@ const onInitializeComponentInstance = async ({ namespaceId = null, extensionsPat
|
|
|
111
287
|
connectionId,
|
|
112
288
|
namespaceId,
|
|
113
289
|
};
|
|
114
|
-
worker.events().subscribe(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
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
|
+
}
|
|
122
339
|
}
|
|
123
340
|
else {
|
|
124
|
-
|
|
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
|
+
}
|
|
125
347
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
else if (type === 'console') {
|
|
134
|
-
const { text } = payload;
|
|
135
|
-
onComponentInstanceConsole?.({ text });
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
emit({ type, payload, componentInstanceId });
|
|
139
|
-
}
|
|
348
|
+
},
|
|
349
|
+
error: (err) => {
|
|
350
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
351
|
+
},
|
|
352
|
+
complete: () => {
|
|
353
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: true });
|
|
354
|
+
},
|
|
140
355
|
});
|
|
141
|
-
|
|
142
|
-
|
|
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();
|
|
143
374
|
};
|
|
144
375
|
exports.onInitializeComponentInstance = onInitializeComponentInstance;
|
|
145
376
|
const onDisconnect = async ({ connectionId }) => {
|
|
146
|
-
|
|
147
|
-
await clearGarbage();
|
|
377
|
+
markConnectionGarbage(connectionId);
|
|
148
378
|
};
|
|
149
379
|
exports.onDisconnect = onDisconnect;
|
|
150
|
-
const garbage = {
|
|
151
|
-
connections: [],
|
|
152
|
-
componentInstances: [],
|
|
153
|
-
};
|
|
154
380
|
const onDestroyComponentInstance = async ({ componentInstanceId }) => {
|
|
155
|
-
|
|
156
|
-
await clearGarbage();
|
|
381
|
+
markComponentGarbage(componentInstanceId, { skipOnDestroy: false });
|
|
157
382
|
};
|
|
158
383
|
exports.onDestroyComponentInstance = onDestroyComponentInstance;
|
|
159
|
-
exports.componentInstances = {};
|
|
160
|
-
const clearGarbage = async () => {
|
|
161
|
-
const aliveComponentInstances = Object.keys(exports.componentInstances);
|
|
162
|
-
const garbageComponentInstanceIds = [
|
|
163
|
-
...aliveComponentInstances.filter(x => garbage.connections.includes(exports.componentInstances[x].connectionId)),
|
|
164
|
-
...garbage.componentInstances,
|
|
165
|
-
];
|
|
166
|
-
for (const componentInstanceId of garbageComponentInstanceIds) {
|
|
167
|
-
if (exports.componentInstances[componentInstanceId]) {
|
|
168
|
-
try {
|
|
169
|
-
await exports.componentInstances[componentInstanceId].worker.handleDestroyComponentInstance();
|
|
170
|
-
}
|
|
171
|
-
catch (err) {
|
|
172
|
-
console.warn(err);
|
|
173
|
-
}
|
|
174
|
-
exports.componentInstances[componentInstanceId].terminate();
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsNERBQTRCO0FBQzVCLHFDQUFnRDtBQUNoRCxpREFBcUM7QUFFckMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLElBQUksT0FBTyxDQUFXLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDckMsb0JBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsZUFBZSxHQUFHLEVBQUUsVUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU07WUFDM0UsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3JGLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUE7QUFFTSxNQUFNLG9CQUFvQixHQUFHLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtJQUMzRyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztJQUN4QixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNqQztJQUNELE1BQU0sU0FBUyxHQUFHLGlCQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUFrQixDQUFD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
|
|
384
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4QixzREFBOEI7QUFDOUIsNERBQTRCO0FBQzVCLHFDQUFnRDtBQUNoRCxpREFBcUM7QUErQnJDLE1BQU0sY0FBYyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUU7SUFDdkMsT0FBTyxJQUFJLE9BQU8sQ0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ3JDLG9CQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLGVBQWUsR0FBRyxFQUFFLFVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNO1lBQzNFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNyRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBRTtJQUN6QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBUyxFQUFFLEVBQUU7SUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMvQyxDQUFDLENBQUE7QUFFRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxH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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drayman/core",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,8 +22,9 @@
|
|
|
22
22
|
"@babel/preset-env": "^7.13.15",
|
|
23
23
|
"@babel/preset-react": "^7.13.13",
|
|
24
24
|
"@babel/preset-typescript": "^7.13.0",
|
|
25
|
-
"@drayman/types": "^
|
|
25
|
+
"@drayman/types": "^3.0.0",
|
|
26
26
|
"@types/jest": "^26.0.22",
|
|
27
|
+
"@types/lodash": "^4.17.0",
|
|
27
28
|
"@types/node": "^14.14.39",
|
|
28
29
|
"babel-jest": "^26.6.3",
|
|
29
30
|
"jest": "^26.6.3"
|
|
@@ -33,6 +34,7 @@
|
|
|
33
34
|
"consola": "^2.15.3",
|
|
34
35
|
"fast-json-patch": "^3.0.0-1",
|
|
35
36
|
"fs-extra": "^9.1.0",
|
|
37
|
+
"lodash": "^4.17.21",
|
|
36
38
|
"node-find": "^0.7.2",
|
|
37
39
|
"shortid": "^2.2.16",
|
|
38
40
|
"source-map-support": "^0.5.21",
|
|
@@ -40,5 +42,5 @@
|
|
|
40
42
|
"ts-node": "^9.1.1",
|
|
41
43
|
"typescript": "~4.1.5"
|
|
42
44
|
},
|
|
43
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "381df692bc47e7ae87ec30c332ace3a7cfe1096d"
|
|
44
46
|
}
|