@dcl/sdk 7.5.1-9299912306.commit-7629bda → 7.5.1-9350870029.commit-b66059d
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/network/entities.js +28 -3
- package/package.json +6 -6
- package/src/network/entities.ts +44 -2
- package/src/testing/runtime.ts +3 -3
- package/testing/runtime.js +4 -4
package/network/entities.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { NetworkEntity as _NetworkEntity, NetworkParent as _NetworkParent, Transform as _Transform, SyncComponents as _SyncComponents } from '@dcl/ecs';
|
1
|
+
import { NetworkEntity as _NetworkEntity, NetworkParent as _NetworkParent, Transform as _Transform, SyncComponents as _SyncComponents, VideoEvent, TweenState, AudioEvent, AudioSource, EngineInfo, GltfContainerLoadingState, PointerEventsResult, RaycastResult, RealmInfo, VideoPlayer, UiDropdown, UiDropdownResult, UiInput, UiInputResult, UiText, UiTransform } from '@dcl/ecs';
|
2
2
|
export function entityUtils(engine, profile) {
|
3
3
|
const NetworkEntity = engine.getComponent(_NetworkEntity.componentId);
|
4
4
|
const NetworkParent = engine.getComponent(_NetworkParent.componentId);
|
@@ -8,6 +8,7 @@ export function entityUtils(engine, profile) {
|
|
8
8
|
* Create a network entity (sync) through comms, and sync the received components
|
9
9
|
*/
|
10
10
|
function syncEntity(entityId, componentIds, entityEnumId) {
|
11
|
+
let componentsIdsMutable = [...componentIds];
|
11
12
|
// Profile not initialized
|
12
13
|
if (!profile?.networkId) {
|
13
14
|
throw new Error('Profile not initialized. Called syncEntity inside the main() function.');
|
@@ -27,9 +28,33 @@ export function entityUtils(engine, profile) {
|
|
27
28
|
}
|
28
29
|
}
|
29
30
|
}
|
31
|
+
const NOT_SYNC_COMPONENTS = [
|
32
|
+
VideoEvent,
|
33
|
+
VideoPlayer,
|
34
|
+
TweenState,
|
35
|
+
AudioEvent,
|
36
|
+
AudioSource,
|
37
|
+
EngineInfo,
|
38
|
+
GltfContainerLoadingState,
|
39
|
+
PointerEventsResult,
|
40
|
+
RaycastResult,
|
41
|
+
RealmInfo,
|
42
|
+
UiDropdown,
|
43
|
+
UiDropdownResult,
|
44
|
+
UiInput,
|
45
|
+
UiInputResult,
|
46
|
+
UiTransform,
|
47
|
+
UiText
|
48
|
+
];
|
49
|
+
for (const component of NOT_SYNC_COMPONENTS) {
|
50
|
+
if (componentsIdsMutable.includes(component.componentId)) {
|
51
|
+
console.log(`⚠️ ${component.componentName} can't be sync through the network!`);
|
52
|
+
componentsIdsMutable = componentsIdsMutable.filter(($) => $ !== component.componentId);
|
53
|
+
}
|
54
|
+
}
|
30
55
|
// If is not defined, then is a entity created in runtime (what we called dynamic/runtime entities).
|
31
56
|
NetworkEntity.createOrReplace(entityId, networkValue);
|
32
|
-
SyncComponents.createOrReplace(entityId, { componentIds });
|
57
|
+
SyncComponents.createOrReplace(entityId, { componentIds: componentsIdsMutable });
|
33
58
|
}
|
34
59
|
/**
|
35
60
|
* Returns an iterable of all the childrens of the given entity.
|
@@ -102,4 +127,4 @@ export function entityUtils(engine, profile) {
|
|
102
127
|
getFirstChild
|
103
128
|
};
|
104
129
|
}
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJbEMsTUFBTSxVQUFVLENBQUE7QUFLakIsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUFlLEVBQUUsT0FBaUI7SUFDNUQsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFtQixDQUFBO0lBQ3ZGLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQXVCLENBQUE7SUFDbkYsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFvQixDQUFBO0lBRTFGOztPQUVHO0lBQ0gsU0FBUyxVQUFVLENBQUMsUUFBZ0IsRUFBRSxZQUFzQixFQUFFLFlBQXFCO1FBQ2pGLDBCQUEwQjtRQUMxQixJQUFJLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUE7U0FDMUY7UUFFRCxpR0FBaUc7UUFDakcsTUFBTSxZQUFZLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUUvRCw2R0FBNkc7UUFDN0csMkZBQTJGO1FBQzNGLHNDQUFzQztRQUN0QyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDOUIsWUFBWSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUE7WUFDMUIsWUFBWSxDQUFD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QW9CLENBQUMsQ0FBQTtTQUN0QztRQUVELGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVELE9BQU87UUFDTCxVQUFVO1FBQ1YsV0FBVztRQUNYLFNBQVM7UUFDVCxZQUFZO1FBQ1osWUFBWTtRQUNaLGFBQWE7S0FDZCxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEVudGl0eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgSU5ldG93cmtFbnRpdHksXG4gIE5ldHdvcmtQYXJlbnQgYXMgX05ldHdvcmtQYXJlbnQsXG4gIFRyYW5zZm9ybSBhcyBfVHJhbnNmb3JtLFxuICBTeW5jQ29tcG9uZW50cyBhcyBfU3luY0NvbXBvbmVudHMsXG4gIElOZXRvd3JrUGFyZW50LFxuICBUcmFuc2Zvcm1Db21wb25lbnQsXG4gIElTeW5jQ29tcG9uZW50c1xufSBmcm9tICdAZGNsL2VjcydcbmltcG9ydCB7IElQcm9maWxlIH0gZnJvbSAnLi9tZXNzYWdlLWJ1cy1zeW5jJ1xuXG5leHBvcnQgdHlwZSBTeW5jRW50aXR5ID0gKGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikgPT4gdm9pZFxuXG5leHBvcnQgZnVuY3Rpb24gZW50aXR5VXRpbHMoZW5naW5lOiBJRW5naW5lLCBwcm9maWxlOiBJUHJvZmlsZSkge1xuICBjb25zdCBOZXR3b3JrRW50aXR5ID0gZW5naW5lLmdldENvbXBvbmVudChfTmV0d29ya0VudGl0eS5jb21wb25lbnRJZCkgYXMgSU5ldG93cmtFbnRpdHlcbiAgY29uc3QgTmV0d29ya1BhcmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtQYXJlbnQuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrUGFyZW50XG4gIGNvbnN0IFRyYW5zZm9ybSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1RyYW5zZm9ybS5jb21wb25lbnRJZCkgYXMgVHJhbnNmb3JtQ29tcG9uZW50XG4gIGNvbnN0IFN5bmNDb21wb25lbnRzID0gZW5naW5lLmdldENvbXBvbmVudChfU3luY0NvbXBvbmVudHMuY29tcG9uZW50SWQpIGFzIElTeW5jQ29tcG9uZW50c1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXR3b3JrIGVudGl0eSAoc3luYykgdGhyb3VnaCBjb21tcywgYW5kIHN5bmMgdGhlIHJlY2VpdmVkIGNvbXBvbmVudHNcbiAgICovXG4gIGZ1bmN0aW9uIHN5bmNFbnRpdHkoZW50aXR5SWQ6IEVudGl0eSwgY29tcG9uZW50SWRzOiBudW1iZXJbXSwgZW50aXR5RW51bUlkPzogbnVtYmVyKSB7XG4gICAgLy8gUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWRcbiAgICBpZiAoIXByb2ZpbGU/Lm5ldHdvcmtJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9maWxlIG5vdCBpbml0aWFsaXplZC4gQ2FsbGVkIHN5bmNFbnRpdHkgaW5zaWRlIHRoZSBtYWluKCkgZnVuY3Rpb24uJylcbiAgICB9XG5cbiAgICAvLyBXZSB1c2UgdGhlIG5ldHdvcmtJZCBnZW5lcmF0ZWQgYnkgdGhlIHVzZXIgYWRkcmVzcyB0byBpZGVudGlmeSB0aGlzIGVudGl0eSB0aHJvdWdoIHRoZSBuZXR3b3JrXG4gICAgY29uc3QgbmV0d29ya1ZhbHVlID0geyBlbnRpdHlJZCwgbmV0d29ya0lkOiBwcm9maWxlLm5ldHdvcmtJZCB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBlbnRpdHlFbnVtSWQsIGl0IG1lYW5zIGlzIHRoZSBzYW1lIGVudGl0eSBmb3IgYWxsIHRoZSBjbGllbnRzIGNyZWF0ZWQgb24gdGhlIG1haW4gZnVuY2l0b24uXG4gICAgLy8gU28gdGhlIG5ldHdvcmtJZCBzaG91bGQgYmUgdGhlIHNhbWUgaW4gYWxsIHRoZSBjbGllbnRzIHRvIGF2b2lkIHJlLWNyZWF0aW5nIHRoaXMgZW50aXR5LlxuICAgIC8vIEZvciB0aGlzIGNhc2Ugd2UgdXNlIG5ldHdvcmtJZCA9IDAuXG4gICAgaWYgKGVudGl0eUVudW1JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXR3b3JrVmFsdWUubmV0d29ya0lkID0gMFxuICAgICAgbmV0d29ya1ZhbHVlLmVudGl0eUlkID0gZW50aXR5RW51bUlkIGFzIEVudGl0eVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGVudW0gaXMgYWxyZWFkeSB1c2VkXG4gICAgICBmb3IgKGNvbnN0IFtfLCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICAgIGlmIChuZXR3b3JrLm5ldHdvcmtJZCA9PT0gbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCAmJiBuZXR3b3JrLmVudGl0eUlkID09PSBuZXR3b3JrVmFsdWUuZW50aXR5SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N5bmNFbnRpdHkgZmFpbGVkIGJlY2F1c2UgdGhlIGlkIHByb3ZpZGVkIGlzIGFscmVhZHkgaW4gdXNlJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGlzIGEgZW50aXR5IGNyZWF0ZWQgaW4gcnVudGltZSAod2hhdCB3ZSBjYWxsZWQgZHluYW1pYy9ydW50aW1lIGVudGl0aWVzKS5cbiAgICBOZXR3b3JrRW50aXR5LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgbmV0d29ya1ZhbHVlKVxuICAgIFN5bmNDb21wb25lbnRzLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgeyBjb21wb25lbnRJZHMgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGl0ZXJhYmxlIG9mIGFsbCB0aGUgY2hpbGRyZW5zIG9mIHRoZSBnaXZlbiBlbnRpdHkuXG4gICAqIGZvciAoY29uc3QgY2hpbGRyZW4gb2YgZ2V0Q2hpbGRyZW4ocGFyZW50KSkgeyBjb25zb2xlLmxvZyhjaGlsZHJlbikgfVxuICAgKiBvciBqdXN0ID0+IGNvbnN0IGNoaWxkcmVuczogRW50aXR5W10gPSBBcnJheS5mcm9tKGdldENoaWxkcmVuKHBhcmVudCkpXG4gICAqL1xuICBmdW5jdGlvbiogZ2V0Q2hpbGRyZW4ocGFyZW50OiBFbnRpdHkpOiBJdGVyYWJsZTxFbnRpdHk+IHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmIChuZXR3b3JrKSB7XG4gICAgICBmb3IgKGNvbnN0IFtlbnRpdHksIHBhcmVudF0gb2YgZW5naW5lLmdldEVudGl0aWVzV2l0aChOZXR3b3JrUGFyZW50KSkge1xuICAgICAgICBpZiAocGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkICYmIHBhcmVudC5uZXR3b3JrSWQgPT09IG5ldHdvcmsubmV0d29ya0lkKSB7XG4gICAgICAgICAgeWllbGQgZW50aXR5XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBnZXRGaXJzdENoaWxkKGVudGl0eTogRW50aXR5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ2V0Q2hpbGRyZW4oZW50aXR5KSlbMF1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBwYXJlbnQgZW50aXR5IG9mIHRoZSBnaXZlbiBlbnRpdHkuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRQYXJlbnQoY2hpbGQ6IEVudGl0eSk6IEVudGl0eSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGFyZW50ID0gTmV0d29ya1BhcmVudC5nZXRPck51bGwoY2hpbGQpXG4gICAgaWYgKCFwYXJlbnQpIHJldHVybiB1bmRlZmluZWRcbiAgICBmb3IgKGNvbnN0IFtlbnRpdHksIG5ldHdvcmtdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya0VudGl0eSkpIHtcbiAgICAgIGlmIChwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCAmJiBwYXJlbnQuZW50aXR5SWQgPT09IG5ldHdvcmsuZW50aXR5SWQpIHtcbiAgICAgICAgcmV0dXJuIGVudGl0eVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgbmV0d29yayBwYXJlbnRpbmcgdG8gc3luYyBlbnRpdGllcy5cbiAgICogRXF1aXZhbGVudCB0byBUcmFuc2Zvcm0ucGFyZW50IGZvciBsb2NhbCBlbnRpdGllc1xuICAgKi9cbiAgZnVuY3Rpb24gcGFyZW50RW50aXR5KGVudGl0eTogRW50aXR5LCBwYXJlbnQ6IEVudGl0eSkge1xuICAgIGNvbnN0IG5ldHdvcmsgPSBOZXR3b3JrRW50aXR5LmdldE9yTnVsbChwYXJlbnQpXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBpcyBub3Qgc3luYy4gQ2FsbCBzeW5jRW50aXR5IG9uIHRoZSBwYXJlbnQuJylcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgbmV0d29yayBwYXJlbnQgY29tcG9uZW50XG4gICAgTmV0d29ya1BhcmVudC5jcmVhdGVPclJlcGxhY2UoZW50aXR5LCBuZXR3b3JrKVxuXG4gICAgLy8gSWYgd2UgZG9udCBoYXZlIGEgdHJhbnNmb3JtIGZvciB0aGlzIGVudGl0eSwgY3JlYXRlIGFuIGVtcHR5IG9uZSB0byBzZW5kIGl0IHRvIHRoZSByZW5kZXJlclxuICAgIGlmICghVHJhbnNmb3JtLmdldE9yTnVsbChlbnRpdHkpKSB7XG4gICAgICBUcmFuc2Zvcm0uY3JlYXRlKGVudGl0eSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gV2UgZm9yY2UgdG8gc2VuZCBhIHRpY2sgdXBkYXRlIG9mIHRoZSB0cmFuc2Zvcm0gc28gd2UgY2FuIHNlbmQgdGhlIE5FVyBwYXJlbnQgdG8gdGhlIHJlbmRlcmVyXG4gICAgICBUcmFuc2Zvcm0uZ2V0TXV0YWJsZShlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIGZyb20gYW4gZW50aXR5XG4gICAqL1xuICBmdW5jdGlvbiByZW1vdmVQYXJlbnQoZW50aXR5OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwoZW50aXR5KVxuXG4gICAgaWYgKCFuZXR3b3JrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VudGl0eSBpcyBub3Qgc3luYycpXG4gICAgfVxuXG4gICAgTmV0d29ya1BhcmVudC5kZWxldGVGcm9tKGVudGl0eSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3luY0VudGl0eSxcbiAgICBnZXRDaGlsZHJlbixcbiAgICBnZXRQYXJlbnQsXG4gICAgcGFyZW50RW50aXR5LFxuICAgIHJlbW92ZVBhcmVudCxcbiAgICBnZXRGaXJzdENoaWxkXG4gIH1cbn1cbiJdfQ==
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmV0d29yay9lbnRpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsYUFBYSxJQUFJLGNBQWMsRUFFL0IsYUFBYSxJQUFJLGNBQWMsRUFDL0IsU0FBUyxJQUFJLFVBQVUsRUFDdkIsY0FBYyxJQUFJLGVBQWUsRUFJakMsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixTQUFTLEVBQ1QsV0FBVyxFQUNYLFVBQVUsRUFDVixnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGFBQWEsRUFDYixNQUFNLEVBQ04sV0FBVyxFQUNaLE1BQU0sVUFBVSxDQUFBO0FBS2pCLE1BQU0sVUFBVSxXQUFXLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBbUIsQ0FBQTtJQUN2RixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQW1CLENBQUE7SUFDdkYsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUF1QixDQUFBO0lBQ25GLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBb0IsQ0FBQTtJQUUxRjs7T0FFRztJQUNILFNBQVMsVUFBVSxDQUFDLFFBQWdCLEVBQUUsWUFBc0IsRUFBRSxZQUFxQjtRQUNqRixJQUFJLG9CQUFvQixHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsQ0FBQTtRQUM1QywwQkFBMEI7UUFDMUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RUFBd0UsQ0FB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eSxcbiAgSUVuZ2luZSxcbiAgTmV0d29ya0VudGl0eSBhcyBfTmV0d29ya0VudGl0eSxcbiAgSU5ldG93cmtFbnRpdHksXG4gIE5ldHdvcmtQYXJlbnQgYXMgX05ldHdvcmtQYXJlbnQsXG4gIFRyYW5zZm9ybSBhcyBfVHJhbnNmb3JtLFxuICBTeW5jQ29tcG9uZW50cyBhcyBfU3luY0NvbXBvbmVudHMsXG4gIElOZXRvd3JrUGFyZW50LFxuICBUcmFuc2Zvcm1Db21wb25lbnQsXG4gIElTeW5jQ29tcG9uZW50cyxcbiAgVmlkZW9FdmVudCxcbiAgVHdlZW5TdGF0ZSxcbiAgQXVkaW9FdmVudCxcbiAgQXVkaW9Tb3VyY2UsXG4gIEVuZ2luZUluZm8sXG4gIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUsXG4gIFBvaW50ZXJFdmVudHNSZXN1bHQsXG4gIFJheWNhc3RSZXN1bHQsXG4gIFJlYWxtSW5mbyxcbiAgVmlkZW9QbGF5ZXIsXG4gIFVpRHJvcGRvd24sXG4gIFVpRHJvcGRvd25SZXN1bHQsXG4gIFVpSW5wdXQsXG4gIFVpSW5wdXRSZXN1bHQsXG4gIFVpVGV4dCxcbiAgVWlUcmFuc2Zvcm1cbn0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBJUHJvZmlsZSB9IGZyb20gJy4vbWVzc2FnZS1idXMtc3luYydcblxuZXhwb3J0IHR5cGUgU3luY0VudGl0eSA9IChlbnRpdHlJZDogRW50aXR5LCBjb21wb25lbnRJZHM6IG51bWJlcltdLCBlbnRpdHlFbnVtSWQ/OiBudW1iZXIpID0+IHZvaWRcblxuZXhwb3J0IGZ1bmN0aW9uIGVudGl0eVV0aWxzKGVuZ2luZTogSUVuZ2luZSwgcHJvZmlsZTogSVByb2ZpbGUpIHtcbiAgY29uc3QgTmV0d29ya0VudGl0eSA9IGVuZ2luZS5nZXRDb21wb25lbnQoX05ldHdvcmtFbnRpdHkuY29tcG9uZW50SWQpIGFzIElOZXRvd3JrRW50aXR5XG4gIGNvbnN0IE5ldHdvcmtQYXJlbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9OZXR3b3JrUGFyZW50LmNvbXBvbmVudElkKSBhcyBJTmV0b3dya1BhcmVudFxuICBjb25zdCBUcmFuc2Zvcm0gPSBlbmdpbmUuZ2V0Q29tcG9uZW50KF9UcmFuc2Zvcm0uY29tcG9uZW50SWQpIGFzIFRyYW5zZm9ybUNvbXBvbmVudFxuICBjb25zdCBTeW5jQ29tcG9uZW50cyA9IGVuZ2luZS5nZXRDb21wb25lbnQoX1N5bmNDb21wb25lbnRzLmNvbXBvbmVudElkKSBhcyBJU3luY0NvbXBvbmVudHNcblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV0d29yayBlbnRpdHkgKHN5bmMpIHRocm91Z2ggY29tbXMsIGFuZCBzeW5jIHRoZSByZWNlaXZlZCBjb21wb25lbnRzXG4gICAqL1xuICBmdW5jdGlvbiBzeW5jRW50aXR5KGVudGl0eUlkOiBFbnRpdHksIGNvbXBvbmVudElkczogbnVtYmVyW10sIGVudGl0eUVudW1JZD86IG51bWJlcikge1xuICAgIGxldCBjb21wb25lbnRzSWRzTXV0YWJsZSA9IFsuLi5jb21wb25lbnRJZHNdXG4gICAgLy8gUHJvZmlsZSBub3QgaW5pdGlhbGl6ZWRcbiAgICBpZiAoIXByb2ZpbGU/Lm5ldHdvcmtJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQcm9maWxlIG5vdCBpbml0aWFsaXplZC4gQ2FsbGVkIHN5bmNFbnRpdHkgaW5zaWRlIHRoZSBtYWluKCkgZnVuY3Rpb24uJylcbiAgICB9XG5cbiAgICAvLyBXZSB1c2UgdGhlIG5ldHdvcmtJZCBnZW5lcmF0ZWQgYnkgdGhlIHVzZXIgYWRkcmVzcyB0byBpZGVudGlmeSB0aGlzIGVudGl0eSB0aHJvdWdoIHRoZSBuZXR3b3JrXG4gICAgY29uc3QgbmV0d29ya1ZhbHVlID0geyBlbnRpdHlJZCwgbmV0d29ya0lkOiBwcm9maWxlLm5ldHdvcmtJZCB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBlbnRpdHlFbnVtSWQsIGl0IG1lYW5zIGlzIHRoZSBzYW1lIGVudGl0eSBmb3IgYWxsIHRoZSBjbGllbnRzIGNyZWF0ZWQgb24gdGhlIG1haW4gZnVuY2l0b24uXG4gICAgLy8gU28gdGhlIG5ldHdvcmtJZCBzaG91bGQgYmUgdGhlIHNhbWUgaW4gYWxsIHRoZSBjbGllbnRzIHRvIGF2b2lkIHJlLWNyZWF0aW5nIHRoaXMgZW50aXR5LlxuICAgIC8vIEZvciB0aGlzIGNhc2Ugd2UgdXNlIG5ldHdvcmtJZCA9IDAuXG4gICAgaWYgKGVudGl0eUVudW1JZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXR3b3JrVmFsdWUubmV0d29ya0lkID0gMFxuICAgICAgbmV0d29ya1ZhbHVlLmVudGl0eUlkID0gZW50aXR5RW51bUlkIGFzIEVudGl0eVxuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIGVudW0gaXMgYWxyZWFkeSB1c2VkXG4gICAgICBmb3IgKGNvbnN0IFtfLCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICAgIGlmIChuZXR3b3JrLm5ldHdvcmtJZCA9PT0gbmV0d29ya1ZhbHVlLm5ldHdvcmtJZCAmJiBuZXR3b3JrLmVudGl0eUlkID09PSBuZXR3b3JrVmFsdWUuZW50aXR5SWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N5bmNFbnRpdHkgZmFpbGVkIGJlY2F1c2UgdGhlIGlkIHByb3ZpZGVkIGlzIGFscmVhZHkgaW4gdXNlJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IE5PVF9TWU5DX0NPTVBPTkVOVFMgPSBbXG4gICAgICBWaWRlb0V2ZW50LFxuICAgICAgVmlkZW9QbGF5ZXIsXG4gICAgICBUd2VlblN0YXRlLFxuICAgICAgQXVkaW9FdmVudCxcbiAgICAgIEF1ZGlvU291cmNlLFxuICAgICAgRW5naW5lSW5mbyxcbiAgICAgIEdsdGZDb250YWluZXJMb2FkaW5nU3RhdGUsXG4gICAgICBQb2ludGVyRXZlbnRzUmVzdWx0LFxuICAgICAgUmF5Y2FzdFJlc3VsdCxcbiAgICAgIFJlYWxtSW5mbyxcbiAgICAgIFVpRHJvcGRvd24sXG4gICAgICBVaURyb3Bkb3duUmVzdWx0LFxuICAgICAgVWlJbnB1dCxcbiAgICAgIFVpSW5wdXRSZXN1bHQsXG4gICAgICBVaVRyYW5zZm9ybSxcbiAgICAgIFVpVGV4dFxuICAgIF1cbiAgICBmb3IgKGNvbnN0IGNvbXBvbmVudCBvZiBOT1RfU1lOQ19DT01QT05FTlRTKSB7XG4gICAgICBpZiAoY29tcG9uZW50c0lkc011dGFibGUuaW5jbHVkZXMoY29tcG9uZW50LmNvbXBvbmVudElkKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhg4pqg77iPICR7Y29tcG9uZW50LmNvbXBvbmVudE5hbWV9IGNhbid0IGJlIHN5bmMgdGhyb3VnaCB0aGUgbmV0d29yayFgKVxuICAgICAgICBjb21wb25lbnRzSWRzTXV0YWJsZSA9IGNvbXBvbmVudHNJZHNNdXRhYmxlLmZpbHRlcigoJCkgPT4gJCAhPT0gY29tcG9uZW50LmNvbXBvbmVudElkKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGlzIG5vdCBkZWZpbmVkLCB0aGVuIGlzIGEgZW50aXR5IGNyZWF0ZWQgaW4gcnVudGltZSAod2hhdCB3ZSBjYWxsZWQgZHluYW1pYy9ydW50aW1lIGVudGl0aWVzKS5cbiAgICBOZXR3b3JrRW50aXR5LmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgbmV0d29ya1ZhbHVlKVxuICAgIFN5bmNDb21wb25lbnRzLmNyZWF0ZU9yUmVwbGFjZShlbnRpdHlJZCwgeyBjb21wb25lbnRJZHM6IGNvbXBvbmVudHNJZHNNdXRhYmxlIH0pXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvZiBhbGwgdGhlIGNoaWxkcmVucyBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKiBmb3IgKGNvbnN0IGNoaWxkcmVuIG9mIGdldENoaWxkcmVuKHBhcmVudCkpIHsgY29uc29sZS5sb2coY2hpbGRyZW4pIH1cbiAgICogb3IganVzdCA9PiBjb25zdCBjaGlsZHJlbnM6IEVudGl0eVtdID0gQXJyYXkuZnJvbShnZXRDaGlsZHJlbihwYXJlbnQpKVxuICAgKi9cbiAgZnVuY3Rpb24qIGdldENoaWxkcmVuKHBhcmVudDogRW50aXR5KTogSXRlcmFibGU8RW50aXR5PiB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKHBhcmVudClcbiAgICBpZiAobmV0d29yaykge1xuICAgICAgZm9yIChjb25zdCBbZW50aXR5LCBwYXJlbnRdIG9mIGVuZ2luZS5nZXRFbnRpdGllc1dpdGgoTmV0d29ya1BhcmVudCkpIHtcbiAgICAgICAgaWYgKHBhcmVudC5lbnRpdHlJZCA9PT0gbmV0d29yay5lbnRpdHlJZCAmJiBwYXJlbnQubmV0d29ya0lkID09PSBuZXR3b3JrLm5ldHdvcmtJZCkge1xuICAgICAgICAgIHlpZWxkIGVudGl0eVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Rmlyc3RDaGlsZChlbnRpdHk6IEVudGl0eSkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKGdldENoaWxkcmVuKGVudGl0eSkpWzBdXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGFyZW50IGVudGl0eSBvZiB0aGUgZ2l2ZW4gZW50aXR5LlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0UGFyZW50KGNoaWxkOiBFbnRpdHkpOiBFbnRpdHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhcmVudCA9IE5ldHdvcmtQYXJlbnQuZ2V0T3JOdWxsKGNoaWxkKVxuICAgIGlmICghcGFyZW50KSByZXR1cm4gdW5kZWZpbmVkXG4gICAgZm9yIChjb25zdCBbZW50aXR5LCBuZXR3b3JrXSBvZiBlbmdpbmUuZ2V0RW50aXRpZXNXaXRoKE5ldHdvcmtFbnRpdHkpKSB7XG4gICAgICBpZiAocGFyZW50Lm5ldHdvcmtJZCA9PT0gbmV0d29yay5uZXR3b3JrSWQgJiYgcGFyZW50LmVudGl0eUlkID09PSBuZXR3b3JrLmVudGl0eUlkKSB7XG4gICAgICAgIHJldHVybiBlbnRpdHlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgdGhlIG5ldHdvcmsgcGFyZW50aW5nIHRvIHN5bmMgZW50aXRpZXMuXG4gICAqIEVxdWl2YWxlbnQgdG8gVHJhbnNmb3JtLnBhcmVudCBmb3IgbG9jYWwgZW50aXRpZXNcbiAgICovXG4gIGZ1bmN0aW9uIHBhcmVudEVudGl0eShlbnRpdHk6IEVudGl0eSwgcGFyZW50OiBFbnRpdHkpIHtcbiAgICBjb25zdCBuZXR3b3JrID0gTmV0d29ya0VudGl0eS5nZXRPck51bGwocGFyZW50KVxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMuIENhbGwgc3luY0VudGl0eSBvbiB0aGUgcGFyZW50LicpXG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIG5ldHdvcmsgcGFyZW50IGNvbXBvbmVudFxuICAgIE5ldHdvcmtQYXJlbnQuY3JlYXRlT3JSZXBsYWNlKGVudGl0eSwgbmV0d29yaylcblxuICAgIC8vIElmIHdlIGRvbnQgaGF2ZSBhIHRyYW5zZm9ybSBmb3IgdGhpcyBlbnRpdHksIGNyZWF0ZSBhbiBlbXB0eSBvbmUgdG8gc2VuZCBpdCB0byB0aGUgcmVuZGVyZXJcbiAgICBpZiAoIVRyYW5zZm9ybS5nZXRPck51bGwoZW50aXR5KSkge1xuICAgICAgVHJhbnNmb3JtLmNyZWF0ZShlbnRpdHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGZvcmNlIHRvIHNlbmQgYSB0aWNrIHVwZGF0ZSBvZiB0aGUgdHJhbnNmb3JtIHNvIHdlIGNhbiBzZW5kIHRoZSBORVcgcGFyZW50IHRvIHRoZSByZW5kZXJlclxuICAgICAgVHJhbnNmb3JtLmdldE11dGFibGUoZW50aXR5KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBuZXR3b3JrIHBhcmVudGluZyBmcm9tIGFuIGVudGl0eVxuICAgKi9cbiAgZnVuY3Rpb24gcmVtb3ZlUGFyZW50KGVudGl0eTogRW50aXR5KSB7XG4gICAgY29uc3QgbmV0d29yayA9IE5ldHdvcmtFbnRpdHkuZ2V0T3JOdWxsKGVudGl0eSlcblxuICAgIGlmICghbmV0d29yaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFbnRpdHkgaXMgbm90IHN5bmMnKVxuICAgIH1cblxuICAgIE5ldHdvcmtQYXJlbnQuZGVsZXRlRnJvbShlbnRpdHkpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN5bmNFbnRpdHksXG4gICAgZ2V0Q2hpbGRyZW4sXG4gICAgZ2V0UGFyZW50LFxuICAgIHBhcmVudEVudGl0eSxcbiAgICByZW1vdmVQYXJlbnQsXG4gICAgZ2V0Rmlyc3RDaGlsZFxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dcl/sdk",
|
3
3
|
"description": "",
|
4
|
-
"version": "7.5.1-
|
4
|
+
"version": "7.5.1-9350870029.commit-b66059d",
|
5
5
|
"author": "Decentraland",
|
6
6
|
"dependencies": {
|
7
|
-
"@dcl/ecs": "7.5.1-
|
7
|
+
"@dcl/ecs": "7.5.1-9350870029.commit-b66059d",
|
8
8
|
"@dcl/ecs-math": "2.0.2",
|
9
9
|
"@dcl/explorer": "1.0.163304-20240520163732.commit-e8937d1",
|
10
|
-
"@dcl/js-runtime": "7.5.1-
|
11
|
-
"@dcl/react-ecs": "7.5.1-
|
12
|
-
"@dcl/sdk-commands": "7.5.1-
|
10
|
+
"@dcl/js-runtime": "7.5.1-9350870029.commit-b66059d",
|
11
|
+
"@dcl/react-ecs": "7.5.1-9350870029.commit-b66059d",
|
12
|
+
"@dcl/sdk-commands": "7.5.1-9350870029.commit-b66059d",
|
13
13
|
"text-encoding": "0.7.0"
|
14
14
|
},
|
15
15
|
"keywords": [],
|
@@ -35,5 +35,5 @@
|
|
35
35
|
},
|
36
36
|
"types": "./index.d.ts",
|
37
37
|
"typings": "./index.d.ts",
|
38
|
-
"commit": "
|
38
|
+
"commit": "b66059db17f126e8e416a7699e387b7e8ac79bdd"
|
39
39
|
}
|
package/src/network/entities.ts
CHANGED
@@ -8,7 +8,23 @@ import {
|
|
8
8
|
SyncComponents as _SyncComponents,
|
9
9
|
INetowrkParent,
|
10
10
|
TransformComponent,
|
11
|
-
ISyncComponents
|
11
|
+
ISyncComponents,
|
12
|
+
VideoEvent,
|
13
|
+
TweenState,
|
14
|
+
AudioEvent,
|
15
|
+
AudioSource,
|
16
|
+
EngineInfo,
|
17
|
+
GltfContainerLoadingState,
|
18
|
+
PointerEventsResult,
|
19
|
+
RaycastResult,
|
20
|
+
RealmInfo,
|
21
|
+
VideoPlayer,
|
22
|
+
UiDropdown,
|
23
|
+
UiDropdownResult,
|
24
|
+
UiInput,
|
25
|
+
UiInputResult,
|
26
|
+
UiText,
|
27
|
+
UiTransform
|
12
28
|
} from '@dcl/ecs'
|
13
29
|
import { IProfile } from './message-bus-sync'
|
14
30
|
|
@@ -24,6 +40,7 @@ export function entityUtils(engine: IEngine, profile: IProfile) {
|
|
24
40
|
* Create a network entity (sync) through comms, and sync the received components
|
25
41
|
*/
|
26
42
|
function syncEntity(entityId: Entity, componentIds: number[], entityEnumId?: number) {
|
43
|
+
let componentsIdsMutable = [...componentIds]
|
27
44
|
// Profile not initialized
|
28
45
|
if (!profile?.networkId) {
|
29
46
|
throw new Error('Profile not initialized. Called syncEntity inside the main() function.')
|
@@ -47,9 +64,34 @@ export function entityUtils(engine: IEngine, profile: IProfile) {
|
|
47
64
|
}
|
48
65
|
}
|
49
66
|
|
67
|
+
const NOT_SYNC_COMPONENTS = [
|
68
|
+
VideoEvent,
|
69
|
+
VideoPlayer,
|
70
|
+
TweenState,
|
71
|
+
AudioEvent,
|
72
|
+
AudioSource,
|
73
|
+
EngineInfo,
|
74
|
+
GltfContainerLoadingState,
|
75
|
+
PointerEventsResult,
|
76
|
+
RaycastResult,
|
77
|
+
RealmInfo,
|
78
|
+
UiDropdown,
|
79
|
+
UiDropdownResult,
|
80
|
+
UiInput,
|
81
|
+
UiInputResult,
|
82
|
+
UiTransform,
|
83
|
+
UiText
|
84
|
+
]
|
85
|
+
for (const component of NOT_SYNC_COMPONENTS) {
|
86
|
+
if (componentsIdsMutable.includes(component.componentId)) {
|
87
|
+
console.log(`⚠️ ${component.componentName} can't be sync through the network!`)
|
88
|
+
componentsIdsMutable = componentsIdsMutable.filter(($) => $ !== component.componentId)
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
50
92
|
// If is not defined, then is a entity created in runtime (what we called dynamic/runtime entities).
|
51
93
|
NetworkEntity.createOrReplace(entityId, networkValue)
|
52
|
-
SyncComponents.createOrReplace(entityId, { componentIds })
|
94
|
+
SyncComponents.createOrReplace(entityId, { componentIds: componentsIdsMutable })
|
53
95
|
}
|
54
96
|
|
55
97
|
/**
|
package/src/testing/runtime.ts
CHANGED
@@ -50,7 +50,7 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
|
|
50
50
|
// continue to run until it reaches a yield point
|
51
51
|
function scheduleValue(value: any, env: RunnerEnvironment) {
|
52
52
|
if (value && typeof value === 'object' && typeof value.then === 'function') {
|
53
|
-
|
53
|
+
console.log('⏱️ yield promise')
|
54
54
|
// if the value is a promise, schedule it to be awaited after the current frame is finished
|
55
55
|
nextTickFuture.push(async () => {
|
56
56
|
try {
|
@@ -60,14 +60,14 @@ export function createTestRuntime(testingModule: TestingModule, engine: IEngine)
|
|
60
60
|
}
|
61
61
|
})
|
62
62
|
} else if (typeof value === 'function') {
|
63
|
-
|
63
|
+
console.log('⏱️ yield function')
|
64
64
|
// if the value is a function, schedule it to be called on the next frame
|
65
65
|
nextTickFuture.push(() => {
|
66
66
|
scheduleValue(value(), env)
|
67
67
|
})
|
68
68
|
return
|
69
69
|
} else if (typeof value === 'undefined' || value === null) {
|
70
|
-
|
70
|
+
console.log('⏱️ yield')
|
71
71
|
// if the value is undefined or null, continue processing the generator the next frame
|
72
72
|
nextTickFuture.push(() => {
|
73
73
|
consumeGenerator(env)
|
package/testing/runtime.js
CHANGED
@@ -33,7 +33,7 @@ export function createTestRuntime(testingModule, engine) {
|
|
33
33
|
// continue to run until it reaches a yield point
|
34
34
|
function scheduleValue(value, env) {
|
35
35
|
if (value && typeof value === 'object' && typeof value.then === 'function') {
|
36
|
-
|
36
|
+
console.log('⏱️ yield promise');
|
37
37
|
// if the value is a promise, schedule it to be awaited after the current frame is finished
|
38
38
|
nextTickFuture.push(async () => {
|
39
39
|
try {
|
@@ -45,7 +45,7 @@ export function createTestRuntime(testingModule, engine) {
|
|
45
45
|
});
|
46
46
|
}
|
47
47
|
else if (typeof value === 'function') {
|
48
|
-
|
48
|
+
console.log('⏱️ yield function');
|
49
49
|
// if the value is a function, schedule it to be called on the next frame
|
50
50
|
nextTickFuture.push(() => {
|
51
51
|
scheduleValue(value(), env);
|
@@ -53,7 +53,7 @@ export function createTestRuntime(testingModule, engine) {
|
|
53
53
|
return;
|
54
54
|
}
|
55
55
|
else if (typeof value === 'undefined' || value === null) {
|
56
|
-
|
56
|
+
console.log('⏱️ yield');
|
57
57
|
// if the value is undefined or null, continue processing the generator the next frame
|
58
58
|
nextTickFuture.push(() => {
|
59
59
|
consumeGenerator(env);
|
@@ -194,4 +194,4 @@ function globalFail(error) {
|
|
194
194
|
// for now, the failure is only writing to the console.error.
|
195
195
|
console.error(error);
|
196
196
|
}
|
197
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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XG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNyZWF0ZVRlc3RSdW50aW1lIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIHRlc3QgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgdGVzdHMuXG4gKi9cblxuaW1wb3J0IHsgSUVuZ2luZSwgVHJhbnNmb3JtIH0gZnJvbSAnQGRjbC9lY3MnXG5pbXBvcnQgeyBhc3NlcnRFcXVhbHMgfSBmcm9tICcuL2Fzc2VydCdcbmltcG9ydCB0eXBlIHsgVGVzdGluZ01vZHVsZSwgVGVzdEZ1bmN0aW9uLCBUZXN0SGVscGVycyB9IGZyb20gJy4vdHlwZXMnXG5cbi8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIHRlc3QgcnVudGltZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhbmQgcnVuIHRlc3RzLlxuLy8gSXQgdGFrZXMgYSBgVGVzdGluZ01vZHVsZWAgaW5zdGFuY2UgKGxvYWRlZCBmcm9tIHJlcXVpcmUoJ35zeXN0ZW0vVGVzdGluZycpKSBhbmQgYW4gYElFbmdpbmVgIGluc3RhbmNlIChmcm9tIERlY2VudHJhbGFuZCdzIFNESykuXG4vLyBJdCByZXR1cm5zIGFuIG9iamVjdCB3aXRoIGEgYHRlc3RgIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuLyogQF9fUFVSRV9fICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVGVzdFJ1bnRpbWUodGVzdGluZ01vZHVsZTogVGVzdGluZ01vZHVsZSwgZW5naW5lOiBJRW5naW5lKSB7XG4gIHR5cGUgVGVzdFBsYW5FbnRyeSA9IHsgbmFtZTogc3RyaW5nOyBmbjogVGVzdEZ1bmN0aW9uIH1cbiAgdHlwZSBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICByZXNvbHZlOiAoKSA9PiB2b2lkXG4gICAgcmVqZWN0OiAoZXJyb3I6IGFueSkgPT4gdm9pZFxuICAgIGhlbHBlcnM6IFRlc3RIZWxwZXJzXG4gICAgZ2VuZXJhdG9yOiBHZW5lcmF0b3JcbiAgfVxuXG4gIC8vIHRoaXMgZmxhZyBlbnN1cmVzIG5vIHRlc3RzIGFyZSBhZGRlZCBhc3luY2hyb25vdXNseVxuICBsZXQgcnVudGltZUZyb3plbiA9IGZhbHNlXG5cbiAgbGV0IGN1cnJlbnRGcmFtZUNvdW50ZXIgPSAwXG4gIGxldCBjdXJyZW50RnJhbWVUaW1lID0gMFxuXG4gIC8vIGFycmF5IHRvIGhvbGQgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBjb25zdCBzY2hlZHVsZWRUZXN0czogVGVzdFBsYW5FbnRyeVtdID0gW11cblxuICAvLyBhbiBhcnJheSBvZiBwcm9taXNlcyB0aGF0IGFyZSByZXNvbHZlZCBvbiB0aGUgbmV4dCBmcmFtZSAoYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWQpXG4gIGNvbnN0IG5leHRUaWNrRnV0dXJlOiBBcnJheTwoZHQ6IG51bWJlcikgPT4gdm9pZD4gPSBbXVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyBvbiB0aGUgbmV4dCBmcmFtZVxuICBhc3luYyBmdW5jdGlvbiBuZXh0VGljaygpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8bnVtYmVyPigocmVzb2x2ZSkgPT4ge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChyZXNvbHZlKVxuICAgIH0pXG4gIH1cblxuICAvLyBhZGQgYSBzeXN0ZW0gdG8gdGhlIGVuZ2luZSB0aGF0IHJlc29sdmVzIGFsbCBwcm9taXNlcyBpbiB0aGUgYG5leHRUaWNrRnV0dXJlYCBhcnJheVxuICBlbmdpbmUuYWRkU3lzdGVtKGZ1bmN0aW9uIFRlc3RpbmdGcmFtZXdvcmtDb3JvdXRpbmVSdW5uZXIoZHQpIHtcbiAgICBjdXJyZW50RnJhbWVDb3VudGVyKytcbiAgICBjdXJyZW50RnJhbWVUaW1lICs9IGR0XG4gICAgLy8gcmVzb2x2ZSBhbGwgbmV4dFRpY2sgZnV0dXJlcy5cbiAgICBuZXh0VGlja0Z1dHVyZS5zcGxpY2UoMCwgbmV4dFRpY2tGdXR1cmUubGVuZ3RoKS5mb3JFYWNoKChfKSA9PiBfKGR0KSlcbiAgfSlcblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHZhbHVlIHRvIGJlIHByb2Nlc3NlZCBvbiB0aGUgbmV4dCBmcmFtZSwgdGhlIHRlc3QgcnVubmVyIHdpbGxcbiAgLy8gY29udGludWUgdG8gcnVuIHVudGlsIGl0IHJlYWNoZXMgYSB5aWVsZCBwb2ludFxuICBmdW5jdGlvbiBzY2hlZHVsZVZhbHVlKHZhbHVlOiBhbnksIGVudjogUnVubmVyRW52aXJvbm1lbnQpIHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCBwcm9taXNlJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIHByb21pc2UsIHNjaGVkdWxlIGl0IHRvIGJlIGF3YWl0ZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgZnJhbWUgaXMgZmluaXNoZWRcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHNjaGVkdWxlVmFsdWUoYXdhaXQgdmFsdWUsIGVudilcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgZnVuY3Rpb24nKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24sIHNjaGVkdWxlIGl0IHRvIGJlIGNhbGxlZCBvbiB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUodmFsdWUoKSwgZW52KVxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ+KPse+4jyB5aWVsZCcpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkIG9yIG51bGwsIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIGdlbmVyYXRvciB0aGUgbmV4dCBmcmFtZVxuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgfSlcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIHZhbHVlIGZyb20gdGVzdCBnZW5lcmF0b3I6ICR7dmFsdWV9YClcbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJ5IHNjaGVkdWxpbmcgaXRzIHZhbHVlcyB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgZnVuY3Rpb24gY29uc3VtZUdlbmVyYXRvcihlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJldCA9IGVudi5nZW5lcmF0b3IubmV4dCgpXG4gICAgICBpZiAoIXJldC5kb25lKSB7XG4gICAgICAgIHNjaGVkdWxlVmFsdWUocmV0LnZhbHVlLCBlbnYpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbnYucmVzb2x2ZSgpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlbnYucmVqZWN0KGVycilcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBhIHRlc3QgcnVuIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIHNjaGVkdWxlTmV4dFJ1bigpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKHJ1blRlc3RzKVxuICAgIH1cbiAgfVxuXG4gIC8vIHRoaXMgZnVuY3Rpb24gcnVucyB0aGUgc2NoZWR1bGVkIHRlc3RzXG4gIGZ1bmN0aW9uIHJ1blRlc3RzKCkge1xuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gc2NoZWR1bGVkVGVzdHMuc2hpZnQoKSFcbiAgICAgIGNvbnN0IGluaXRpYWxGcmFtZSA9IGN1cnJlbnRGcmFtZUNvdW50ZXJcbiAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IGN1cnJlbnRGcmFtZVRpbWVcblxuICAgICAgbGV0IHJlc29sdmVkID0gZmFsc2VcblxuICAgICAgLy8gdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZS4gaXQgbWFrZXMgdGhlIGN1cnJlbnQgdGVzdCBwYXNzXG4gICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+foiBUZXN0IHBhc3NlZCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVqZWN0ID0gKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNvbHZlZCkgdGhyb3cgbmV3IEVycm9yKCdyZXNvbHZlZCB0d2ljZScpXG4gICAgICAgIHJlc29sdmVkID0gdHJ1ZVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGDwn5S0IFRlc3QgZmFpbGVkICR7ZW50cnkubmFtZX1gKVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycilcblxuICAgICAgICB0ZXN0aW5nTW9kdWxlXG4gICAgICAgICAgLmxvZ1Rlc3RSZXN1bHQoe1xuICAgICAgICAgICAgbmFtZTogZW50cnkubmFtZSxcbiAgICAgICAgICAgIG9rOiBmYWxzZSxcbiAgICAgICAgICAgIGVycm9yOiBlcnIudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHN0YWNrOiBlcnIgJiYgdHlwZW9mIGVyciA9PT0gJ29iamVjdCcgJiYgZXJyLnN0YWNrLFxuICAgICAgICAgICAgdG90YWxGcmFtZXM6IGN1cnJlbnRGcmFtZUNvdW50ZXIgLSBpbml0aWFsRnJhbWUsXG4gICAgICAgICAgICB0b3RhbFRpbWU6IGN1cnJlbnRGcmFtZVRpbWUgLSBzdGFydFRpbWVcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5maW5hbGx5KHNjaGVkdWxlTmV4dFJ1bilcbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5sb2coYPCfp6ogUnVubmluZyB0ZXN0ICR7ZW50cnkubmFtZX1gKVxuXG4gICAgICAgIGNvbnN0IHRlc3RIZWxwZXJzOiBUZXN0SGVscGVycyA9IHtcbiAgICAgICAgICBhc3luYyBzZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKSB7XG4gICAgICAgICAgICBhd2FpdCB0ZXN0aW5nTW9kdWxlLnNldENhbWVyYVRyYW5zZm9ybSh0cmFuc2Zvcm0pXG4gICAgICAgICAgICBhd2FpdCBuZXh0VGljaygpXG5cbiAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybUNvbXBvbmVudCA9IGVuZ2luZS5nZXRDb21wb25lbnQoVHJhbnNmb3JtLmNvbXBvbmVudElkKSBhcyB0eXBlb2YgVHJhbnNmb3JtXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1Db21wb25lbnQuZ2V0KGVuZ2luZS5DYW1lcmFFbnRpdHkpXG5cbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucG9zaXRpb24sIHRyYW5zZm9ybS5wb3NpdGlvbiwgXCJwb3NpdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICAgIGFzc2VydEVxdWFscyhhY3R1YWxUcmFuc2Zvcm0ucm90YXRpb24sIHRyYW5zZm9ybS5yb3RhdGlvbiwgXCJyb3RhdGlvbnMgZG9uJ3QgbWF0Y2hcIilcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXR1cm5WYWx1ZSA9IGVudHJ5LmZuKHRlc3RIZWxwZXJzKVxuXG4gICAgICAgIGlmIChyZXR1cm5WYWx1ZSAmJiB0eXBlb2YgcmV0dXJuVmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaWYgKGlzR2VuZXJhdG9yKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZW52OiBSdW5uZXJFbnZpcm9ubWVudCA9IHtcbiAgICAgICAgICAgICAgZ2VuZXJhdG9yOiByZXR1cm5WYWx1ZSxcbiAgICAgICAgICAgICAgaGVscGVyczogdGVzdEhlbHBlcnMsXG4gICAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3VtZUdlbmVyYXRvcihlbnYpXG4gICAgICAgICAgfSBlbHNlIGlmIChpc1Byb21pc2UocmV0dXJuVmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm5WYWx1ZS50aGVuKHJlc29sdmUpLmNhdGNoKHJlamVjdClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRlc3QgcmVzdWx0IHR5cGU6ICR7cmV0dXJuVmFsdWV9YClcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZSgpXG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICAgIHJlamVjdChlcnIpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gc2NoZWR1bGUgdGhlIHRlc3QgcnVubmVyIHN0YXJ0IGZvciB0aGUgbmV4dCBmcmFtZVxuICBuZXh0VGlja0Z1dHVyZS5wdXNoKCgpID0+IHtcbiAgICAvLyBvbmNlIHdlIHJ1biB0aGUgbmV4dCB0aWNrLCB0aGUgdGVzdCBydW50aW1lIGJlY29tZXMgZnJvemVuLiB0aGF0IG1lYW5zIG5vIG5ld1xuICAgIC8vIHRlc3QgZGVmaW5pdGlvbnMgYXJlIGFjY2VwdGVkXG4gICAgcnVudGltZUZyb3plbiA9IHRydWVcblxuICAgIGlmICghc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSByZXR1cm5cblxuICAgIC8vIGluZm9ybSB0aGUgdGVzdCBydW5uZXIgYWJvdXQgdGhlIHBsYW5zIGZvciB0aGlzIHRlc3QgcnVuXG4gICAgdGVzdGluZ01vZHVsZS5wbGFuKHsgdGVzdHM6IHNjaGVkdWxlZFRlc3RzIH0pLnRoZW4oc2NoZWR1bGVOZXh0UnVuKS5jYXRjaChnbG9iYWxGYWlsKVxuICB9KVxuXG4gIC8vIHRoaXMgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB0byBwbGFuIGEgdGVzdCBmdW5jdGlvbm5cbiAgLyogQF9fUFVSRV9fICovXG4gIGZ1bmN0aW9uIHRlc3QobmFtZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHJ1bnRpbWVGcm96ZW4pIHRocm93IG5ldyBFcnJvcihcIk5ldyB0ZXN0cyBjYW4ndCBiZSBhZGRlZCBhdCB0aGlzIHN0YWdlLlwiKVxuXG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLnNvbWUoKCQpID0+ICQubmFtZSA9PT0gbmFtZSkpIHRocm93IG5ldyBFcnJvcihgVGVzdCB3aXRoIG5hbWUgJHtuYW1lfSBhbHJlYWR5IGV4aXN0c2ApXG5cbiAgICBzY2hlZHVsZWRUZXN0cy5wdXNoKHsgZm4sIG5hbWUgfSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGVzdFxuICB9XG59XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yKHQ6IGFueSk6IHQgaXMgR2VuZXJhdG9yIHtcbiAgcmV0dXJuIHQgJiYgdHlwZW9mIHQgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0W1N5bWJvbC5pdGVyYXRvcl0gPT09ICdmdW5jdGlvbidcbn1cblxuZnVuY3Rpb24gaXNQcm9taXNlKHQ6IGFueSk6IHQgaXMgUHJvbWlzZTx1bmtub3duPiB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdC50aGVuID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGdsb2JhbEZhaWwoZXJyb3I6IGFueSkge1xuICAvLyBmb3Igbm93LCB0aGUgZmFpbHVyZSBpcyBvbmx5IHdyaXRpbmcgdG8gdGhlIGNvbnNvbGUuZXJyb3IuXG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG59XG4iXX0=
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXN0aW5nL3J1bnRpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxPQUFPLEVBQVcsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFHdkMsaUZBQWlGO0FBQ2pGLG9JQUFvSTtBQUNwSSxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxhQUE0QixFQUFFLE1BQWU7SUFTN0Usc0RBQXNEO0lBQ3RELElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQTtJQUV6QixJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtJQUMzQixJQUFJLGdCQUFnQixHQUFHLENBQUMsQ0FBQTtJQUV4QixvQ0FBb0M7SUFDcEMsTUFBTSxjQUFjLEdBQW9CLEVBQUUsQ0FBQTtJQUUxQyxpR0FBaUc7SUFDakcsTUFBTSxjQUFjLEdBQWdDLEVBQUUsQ0FBQTtJQUV0RCxrRUFBa0U7SUFDbEUsS0FBSyxVQUFVLFFBQVE7UUFDckIsT0FBTyxJQUFJLE9BQU8sQ0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3JDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDOUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUywrQkFBK0IsQ0FBQyxFQUFFO1FBQzFELG1CQUFtQixFQUFFLENBQUE7UUFDckIsZ0JBQWdCLElBQUksRUFBRSxDQUFBO1FBQ3RCLGdDQUFnQztRQUNoQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJ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SUFDNUIsNkRBQTZEO0lBQzdELE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjcmVhdGVUZXN0UnVudGltZSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gb2JqZWN0IHdpdGggYSB0ZXN0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHRlc3RzLlxuICovXG5cbmltcG9ydCB7IElFbmdpbmUsIFRyYW5zZm9ybSB9IGZyb20gJ0BkY2wvZWNzJ1xuaW1wb3J0IHsgYXNzZXJ0RXF1YWxzIH0gZnJvbSAnLi9hc3NlcnQnXG5pbXBvcnQgdHlwZSB7IFRlc3RpbmdNb2R1bGUsIFRlc3RGdW5jdGlvbiwgVGVzdEhlbHBlcnMgfSBmcm9tICcuL3R5cGVzJ1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSB0ZXN0IHJ1bnRpbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYW5kIHJ1biB0ZXN0cy5cbi8vIEl0IHRha2VzIGEgYFRlc3RpbmdNb2R1bGVgIGluc3RhbmNlIChsb2FkZWQgZnJvbSByZXF1aXJlKCd+c3lzdGVtL1Rlc3RpbmcnKSkgYW5kIGFuIGBJRW5naW5lYCBpbnN0YW5jZSAoZnJvbSBEZWNlbnRyYWxhbmQncyBTREspLlxuLy8gSXQgcmV0dXJucyBhbiBvYmplY3Qgd2l0aCBhIGB0ZXN0YCBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSB0ZXN0cy5cbi8qIEBfX1BVUkVfXyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlc3RSdW50aW1lKHRlc3RpbmdNb2R1bGU6IFRlc3RpbmdNb2R1bGUsIGVuZ2luZTogSUVuZ2luZSkge1xuICB0eXBlIFRlc3RQbGFuRW50cnkgPSB7IG5hbWU6IHN0cmluZzsgZm46IFRlc3RGdW5jdGlvbiB9XG4gIHR5cGUgUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgcmVzb2x2ZTogKCkgPT4gdm9pZFxuICAgIHJlamVjdDogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgICBoZWxwZXJzOiBUZXN0SGVscGVyc1xuICAgIGdlbmVyYXRvcjogR2VuZXJhdG9yXG4gIH1cblxuICAvLyB0aGlzIGZsYWcgZW5zdXJlcyBubyB0ZXN0cyBhcmUgYWRkZWQgYXN5bmNocm9ub3VzbHlcbiAgbGV0IHJ1bnRpbWVGcm96ZW4gPSBmYWxzZVxuXG4gIGxldCBjdXJyZW50RnJhbWVDb3VudGVyID0gMFxuICBsZXQgY3VycmVudEZyYW1lVGltZSA9IDBcblxuICAvLyBhcnJheSB0byBob2xkIHRoZSBzY2hlZHVsZWQgdGVzdHNcbiAgY29uc3Qgc2NoZWR1bGVkVGVzdHM6IFRlc3RQbGFuRW50cnlbXSA9IFtdXG5cbiAgLy8gYW4gYXJyYXkgb2YgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgb24gdGhlIG5leHQgZnJhbWUgKGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkKVxuICBjb25zdCBuZXh0VGlja0Z1dHVyZTogQXJyYXk8KGR0OiBudW1iZXIpID0+IHZvaWQ+ID0gW11cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gdGhlIG5leHQgZnJhbWVcbiAgYXN5bmMgZnVuY3Rpb24gbmV4dFRpY2soKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPG51bWJlcj4oKHJlc29sdmUpID0+IHtcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2gocmVzb2x2ZSlcbiAgICB9KVxuICB9XG5cbiAgLy8gYWRkIGEgc3lzdGVtIHRvIHRoZSBlbmdpbmUgdGhhdCByZXNvbHZlcyBhbGwgcHJvbWlzZXMgaW4gdGhlIGBuZXh0VGlja0Z1dHVyZWAgYXJyYXlcbiAgZW5naW5lLmFkZFN5c3RlbShmdW5jdGlvbiBUZXN0aW5nRnJhbWV3b3JrQ29yb3V0aW5lUnVubmVyKGR0KSB7XG4gICAgY3VycmVudEZyYW1lQ291bnRlcisrXG4gICAgY3VycmVudEZyYW1lVGltZSArPSBkdFxuICAgIC8vIHJlc29sdmUgYWxsIG5leHRUaWNrIGZ1dHVyZXMuXG4gICAgbmV4dFRpY2tGdXR1cmUuc3BsaWNlKDAsIG5leHRUaWNrRnV0dXJlLmxlbmd0aCkuZm9yRWFjaCgoXykgPT4gXyhkdCkpXG4gIH0pXG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB2YWx1ZSB0byBiZSBwcm9jZXNzZWQgb24gdGhlIG5leHQgZnJhbWUsIHRoZSB0ZXN0IHJ1bm5lciB3aWxsXG4gIC8vIGNvbnRpbnVlIHRvIHJ1biB1bnRpbCBpdCByZWFjaGVzIGEgeWllbGQgcG9pbnRcbiAgZnVuY3Rpb24gc2NoZWR1bGVWYWx1ZSh2YWx1ZTogYW55LCBlbnY6IFJ1bm5lckVudmlyb25tZW50KSB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQgcHJvbWlzZScpXG4gICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgYSBwcm9taXNlLCBzY2hlZHVsZSBpdCB0byBiZSBhd2FpdGVkIGFmdGVyIHRoZSBjdXJyZW50IGZyYW1lIGlzIGZpbmlzaGVkXG4gICAgICBuZXh0VGlja0Z1dHVyZS5wdXNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzY2hlZHVsZVZhbHVlKGF3YWl0IHZhbHVlLCBlbnYpXG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGVudi5yZWplY3QoZXJyKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmxvZygn4o+x77iPIHlpZWxkIGZ1bmN0aW9uJylcbiAgICAgIC8vIGlmIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBzY2hlZHVsZSBpdCB0byBiZSBjYWxsZWQgb24gdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHZhbHVlKCksIGVudilcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCfij7HvuI8geWllbGQnKVxuICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIHVuZGVmaW5lZCBvciBudWxsLCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBnZW5lcmF0b3IgdGhlIG5leHQgZnJhbWVcbiAgICAgIG5leHRUaWNrRnV0dXJlLnB1c2goKCkgPT4ge1xuICAgICAgICBjb25zdW1lR2VuZXJhdG9yKGVudilcbiAgICAgIH0pXG4gICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCB2YWx1ZSBmcm9tIHRlc3QgZ2VuZXJhdG9yOiAke3ZhbHVlfWApXG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBhIGdlbmVyYXRvciBmdW5jdGlvbiBieSBzY2hlZHVsaW5nIGl0cyB2YWx1ZXMgdG8gYmUgcHJvY2Vzc2VkIG9uIHRoZSBuZXh0IGZyYW1lXG4gIGZ1bmN0aW9uIGNvbnN1bWVHZW5lcmF0b3IoZW52OiBSdW5uZXJFbnZpcm9ubWVudCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBlbnYuZ2VuZXJhdG9yLm5leHQoKVxuICAgICAgaWYgKCFyZXQuZG9uZSkge1xuICAgICAgICBzY2hlZHVsZVZhbHVlKHJldC52YWx1ZSwgZW52KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZW52LnJlc29sdmUoKVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZW52LnJlamVjdChlcnIpXG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcyBmdW5jdGlvbiBzY2hlZHVsZXMgYSB0ZXN0IHJ1biBvbiB0aGUgbmV4dCBmcmFtZVxuICBmdW5jdGlvbiBzY2hlZHVsZU5leHRSdW4oKSB7XG4gICAgaWYgKHNjaGVkdWxlZFRlc3RzLmxlbmd0aCkge1xuICAgICAgbmV4dFRpY2tGdXR1cmUucHVzaChydW5UZXN0cylcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGZ1bmN0aW9uIHJ1bnMgdGhlIHNjaGVkdWxlZCB0ZXN0c1xuICBmdW5jdGlvbiBydW5UZXN0cygpIHtcbiAgICBpZiAoc2NoZWR1bGVkVGVzdHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbnRyeSA9IHNjaGVkdWxlZFRlc3RzLnNoaWZ0KCkhXG4gICAgICBjb25zdCBpbml0aWFsRnJhbWUgPSBjdXJyZW50RnJhbWVDb3VudGVyXG4gICAgICBjb25zdCBzdGFydFRpbWUgPSBjdXJyZW50RnJhbWVUaW1lXG5cbiAgICAgIGxldCByZXNvbHZlZCA9IGZhbHNlXG5cbiAgICAgIC8vIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbmx5IG9uY2UuIGl0IG1ha2VzIHRoZSBjdXJyZW50IHRlc3QgcGFzc1xuICAgICAgY29uc3QgcmVzb2x2ZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKHJlc29sdmVkKSB0aHJvdyBuZXcgRXJyb3IoJ3Jlc29sdmVkIHR3aWNlJylcbiAgICAgICAgcmVzb2x2ZWQgPSB0cnVlXG5cbiAgICAgICAgY29uc29sZS5sb2coYPCfn6IgVGVzdCBwYXNzZWQgJHtlbnRyeS5uYW1lfWApXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogdHJ1ZSxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlamVjdCA9IChlcnI6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzb2x2ZWQpIHRocm93IG5ldyBFcnJvcigncmVzb2x2ZWQgdHdpY2UnKVxuICAgICAgICByZXNvbHZlZCA9IHRydWVcblxuICAgICAgICBjb25zb2xlLmxvZyhg8J+UtCBUZXN0IGZhaWxlZCAke2VudHJ5Lm5hbWV9YClcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIpXG5cbiAgICAgICAgdGVzdGluZ01vZHVsZVxuICAgICAgICAgIC5sb2dUZXN0UmVzdWx0KHtcbiAgICAgICAgICAgIG5hbWU6IGVudHJ5Lm5hbWUsXG4gICAgICAgICAgICBvazogZmFsc2UsXG4gICAgICAgICAgICBlcnJvcjogZXJyLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBzdGFjazogZXJyICYmIHR5cGVvZiBlcnIgPT09ICdvYmplY3QnICYmIGVyci5zdGFjayxcbiAgICAgICAgICAgIHRvdGFsRnJhbWVzOiBjdXJyZW50RnJhbWVDb3VudGVyIC0gaW5pdGlhbEZyYW1lLFxuICAgICAgICAgICAgdG90YWxUaW1lOiBjdXJyZW50RnJhbWVUaW1lIC0gc3RhcnRUaW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgICAuZmluYWxseShzY2hlZHVsZU5leHRSdW4pXG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGDwn6eqIFJ1bm5pbmcgdGVzdCAke2VudHJ5Lm5hbWV9YClcblxuICAgICAgICBjb25zdCB0ZXN0SGVscGVyczogVGVzdEhlbHBlcnMgPSB7XG4gICAgICAgICAgYXN5bmMgc2V0Q2FtZXJhVHJhbnNmb3JtKHRyYW5zZm9ybSkge1xuICAgICAgICAgICAgYXdhaXQgdGVzdGluZ01vZHVsZS5zZXRDYW1lcmFUcmFuc2Zvcm0odHJhbnNmb3JtKVxuICAgICAgICAgICAgYXdhaXQgbmV4dFRpY2soKVxuXG4gICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1Db21wb25lbnQgPSBlbmdpbmUuZ2V0Q29tcG9uZW50KFRyYW5zZm9ybS5jb21wb25lbnRJZCkgYXMgdHlwZW9mIFRyYW5zZm9ybVxuICAgICAgICAgICAgY29uc3QgYWN0dWFsVHJhbnNmb3JtID0gVHJhbnNmb3JtQ29tcG9uZW50LmdldChlbmdpbmUuQ2FtZXJhRW50aXR5KVxuXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnBvc2l0aW9uLCB0cmFuc2Zvcm0ucG9zaXRpb24sIFwicG9zaXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgICBhc3NlcnRFcXVhbHMoYWN0dWFsVHJhbnNmb3JtLnJvdGF0aW9uLCB0cmFuc2Zvcm0ucm90YXRpb24sIFwicm90YXRpb25zIGRvbid0IG1hdGNoXCIpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmV0dXJuVmFsdWUgPSBlbnRyeS5mbih0ZXN0SGVscGVycylcblxuICAgICAgICBpZiAocmV0dXJuVmFsdWUgJiYgdHlwZW9mIHJldHVyblZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIGlmIChpc0dlbmVyYXRvcihyZXR1cm5WYWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGVudjogUnVubmVyRW52aXJvbm1lbnQgPSB7XG4gICAgICAgICAgICAgIGdlbmVyYXRvcjogcmV0dXJuVmFsdWUsXG4gICAgICAgICAgICAgIGhlbHBlcnM6IHRlc3RIZWxwZXJzLFxuICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN1bWVHZW5lcmF0b3IoZW52KVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNQcm9taXNlKHJldHVyblZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuVmFsdWUudGhlbihyZXNvbHZlKS5jYXRjaChyZWplY3QpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biB0ZXN0IHJlc3VsdCB0eXBlOiAke3JldHVyblZhbHVlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoKVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICByZWplY3QoZXJyKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHNjaGVkdWxlIHRoZSB0ZXN0IHJ1bm5lciBzdGFydCBmb3IgdGhlIG5leHQgZnJhbWVcbiAgbmV4dFRpY2tGdXR1cmUucHVzaCgoKSA9PiB7XG4gICAgLy8gb25jZSB3ZSBydW4gdGhlIG5leHQgdGljaywgdGhlIHRlc3QgcnVudGltZSBiZWNvbWVzIGZyb3plbi4gdGhhdCBtZWFucyBubyBuZXdcbiAgICAvLyB0ZXN0IGRlZmluaXRpb25zIGFyZSBhY2NlcHRlZFxuICAgIHJ1bnRpbWVGcm96ZW4gPSB0cnVlXG5cbiAgICBpZiAoIXNjaGVkdWxlZFRlc3RzLmxlbmd0aCkgcmV0dXJuXG5cbiAgICAvLyBpbmZvcm0gdGhlIHRlc3QgcnVubmVyIGFib3V0IHRoZSBwbGFucyBmb3IgdGhpcyB0ZXN0IHJ1blxuICAgIHRlc3RpbmdNb2R1bGUucGxhbih7IHRlc3RzOiBzY2hlZHVsZWRUZXN0cyB9KS50aGVuKHNjaGVkdWxlTmV4dFJ1bikuY2F0Y2goZ2xvYmFsRmFpbClcbiAgfSlcblxuICAvLyB0aGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gcGxhbiBhIHRlc3QgZnVuY3Rpb25uXG4gIC8qIEBfX1BVUkVfXyAqL1xuICBmdW5jdGlvbiB0ZXN0KG5hbWU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbikge1xuICAgIGlmIChydW50aW1lRnJvemVuKSB0aHJvdyBuZXcgRXJyb3IoXCJOZXcgdGVzdHMgY2FuJ3QgYmUgYWRkZWQgYXQgdGhpcyBzdGFnZS5cIilcblxuICAgIGlmIChzY2hlZHVsZWRUZXN0cy5zb21lKCgkKSA9PiAkLm5hbWUgPT09IG5hbWUpKSB0aHJvdyBuZXcgRXJyb3IoYFRlc3Qgd2l0aCBuYW1lICR7bmFtZX0gYWxyZWFkeSBleGlzdHNgKVxuXG4gICAgc2NoZWR1bGVkVGVzdHMucHVzaCh7IGZuLCBuYW1lIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRlc3RcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0dlbmVyYXRvcih0OiBhbnkpOiB0IGlzIEdlbmVyYXRvciB7XG4gIHJldHVybiB0ICYmIHR5cGVvZiB0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nXG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZSh0OiBhbnkpOiB0IGlzIFByb21pc2U8dW5rbm93bj4ge1xuICByZXR1cm4gdCAmJiB0eXBlb2YgdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHQudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG5mdW5jdGlvbiBnbG9iYWxGYWlsKGVycm9yOiBhbnkpIHtcbiAgLy8gZm9yIG5vdywgdGhlIGZhaWx1cmUgaXMgb25seSB3cml0aW5nIHRvIHRoZSBjb25zb2xlLmVycm9yLlxuICBjb25zb2xlLmVycm9yKGVycm9yKVxufVxuIl19
|