socket-function 1.1.49 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/SocketFunction.d.ts +1 -1
  2. package/SocketFunctionTypes.d.ts +1 -1
  3. package/dist/SetProcessVariables.ts.cache +9 -0
  4. package/dist/SocketFunction.ts.cache +467 -0
  5. package/hot/HotReloadController.d.ts +3 -3
  6. package/hot/dist/HotReloadController.ts.cache +252 -0
  7. package/index.d.ts +10 -25
  8. package/package.json +1 -1
  9. package/require/CSSShim.d.ts +1 -1
  10. package/require/RequireController.d.ts +2 -2
  11. package/require/compileFlags.d.ts +1 -1
  12. package/require/dist/RequireController.ts.cache +386 -0
  13. package/require/dist/compileFlags.ts.cache +41 -0
  14. package/require/dist/extMapper.ts.cache +368 -0
  15. package/require/dist/require.ts.cache +676 -0
  16. package/require/require.d.ts +1 -1
  17. package/src/JSONLACKS/dist/JSONLACKS.ts.cache +469 -0
  18. package/src/callManager.d.ts +1 -1
  19. package/src/dist/CallFactory.ts.cache +930 -0
  20. package/src/dist/Zip.ts.cache +156 -0
  21. package/src/dist/batching.ts.cache +377 -0
  22. package/src/dist/bits.ts.cache +121 -0
  23. package/src/dist/buffers.ts.cache +76 -0
  24. package/src/dist/caching.ts.cache +302 -0
  25. package/src/dist/callHTTPHandler.ts.cache +264 -0
  26. package/src/dist/callManager.ts.cache +159 -0
  27. package/src/dist/certStore.ts.cache +59 -0
  28. package/src/dist/createSingleton.ts.cache +62 -0
  29. package/src/dist/fixLargeNetworkCalls.ts.cache +17 -0
  30. package/src/dist/forwardPort.ts.cache +222 -0
  31. package/src/dist/https.ts.cache +141 -0
  32. package/src/dist/misc.ts.cache +499 -0
  33. package/src/dist/nodeCache.ts.cache +136 -0
  34. package/src/dist/nodeProxy.ts.cache +57 -0
  35. package/src/dist/protocolNegotiation.ts.cache +101 -0
  36. package/src/dist/tlsParsing.ts.cache +85 -0
  37. package/src/dist/types.ts.cache +9 -0
  38. package/src/dist/webSocketServer.ts.cache +365 -0
  39. package/src/dist/websocketFactory.ts.cache +53 -0
  40. package/src/formatting/dist/colors.ts.cache +98 -0
  41. package/src/formatting/dist/format.ts.cache +396 -0
  42. package/src/formatting/dist/logColors.ts.cache +28 -0
  43. package/src/lz4/dist/LZ4.ts.cache +53 -0
  44. package/src/profiling/dist/getOwnTime.ts.cache +100 -0
  45. package/src/profiling/dist/measure.ts.cache +338 -0
  46. package/src/profiling/dist/stats.ts.cache +202 -0
  47. package/src/profiling/dist/statsFormat.ts.cache +45 -0
  48. package/src/profiling/getOwnTime.ts +7 -1
  49. package/src/profiling/measure.ts +25 -16
  50. package/test.ts +11 -5
  51. package/time/dist/trueTimeShim.ts.cache +656 -0
  52. package/time/trueTimeShim.d.ts +1 -16
  53. package/time/trueTimeShim.ts +7 -43
@@ -0,0 +1,252 @@
1
+ "use strict"; var console = (function shimConsole() { let baseConsole = globalThis.console; if (typeof window !== "undefined") return baseConsole; let name = __filename.replaceAll("\\", "/").split("/").pop(); let dirName = __dirname.replaceAll("\\", "/").split("/").pop(); let context = { __FILE__: __filename, __DIR__: __dirname, __NAME__: name, __DIRNAME__: dirName }; let newConsole = { ...baseConsole }; for (let shim of ["log", "info", "warn", "error"]) { newConsole[shim] = (...args) => { args.push(context); baseConsole[shim](...args); }; } newConsole.__context = context; return newConsole; })(); "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule && mod.default) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
29
+ exports.HotReloadController = exports.onHotReload = exports.setExternalHotReloading = exports.hotReloadingGuard = exports.isHotReloading = exports.watchFilesAndTriggerHotReloading = void 0;
30
+ /// <reference path="../../typenode/index.d.ts" />
31
+ /// <reference path="../require/RequireController.ts" />
32
+ module.allowclient = true;
33
+ const SocketFunction_1 = require("../SocketFunction");
34
+ const caching_1 = require("../src/caching");
35
+ const createSingleton_1 = require("../src/createSingleton");
36
+ const fs = __importStar(require("fs"));
37
+ const crypto_1 = __importDefault(require("crypto"));
38
+ const misc_1 = require("../src/misc");
39
+ const logColors_1 = require("../src/formatting/logColors");
40
+ const format_1 = require("../src/formatting/format");
41
+ const RequireController_1 = require("../require/RequireController");
42
+ /** Enables some hot reload functionality.
43
+ * - Triggers a refresh clientside
44
+ * - Triggers a reload server, for modules marked with `module.hotreload`
45
+ */
46
+ function watchFilesAndTriggerHotReloading(noAutomaticBrowserWatch = false) {
47
+ SocketFunction_1.SocketFunction.expose(exports.HotReloadController);
48
+ if (!(0, misc_1.isNode)()) {
49
+ if (!noAutomaticBrowserWatch) {
50
+ exports.HotReloadController.nodes[SocketFunction_1.SocketFunction.browserNodeId()]
51
+ .watchFiles()
52
+ .catch(e => console.error("watchFiles error", e));
53
+ }
54
+ }
55
+ setInterval(() => {
56
+ for (let module of Object.values(require.cache)) {
57
+ if (!module)
58
+ continue;
59
+ hotReloadModule(module);
60
+ }
61
+ }, 5000);
62
+ }
63
+ exports.watchFilesAndTriggerHotReloading = watchFilesAndTriggerHotReloading;
64
+ // Shared across copies of this package, so the "currently hot reloading" flag is consistent no
65
+ // matter which copy set it (ex, setExternalHotReloading) or reads it (callManager.registerClass
66
+ // reads it via the globalThis.isHotReloading bridge, which each copy overwrites). See createSingleton.
67
+ const isHotReloadingState = (0, createSingleton_1.createSingleton)("HotReloadController.isHotReloading", 1, () => ({ value: false }));
68
+ function isHotReloading() {
69
+ return isHotReloadingState.get().value;
70
+ }
71
+ exports.isHotReloading = isHotReloading;
72
+ globalThis.isHotReloading = isHotReloading;
73
+ function hotReloadingGuard() {
74
+ return !isHotReloading();
75
+ }
76
+ exports.hotReloadingGuard = hotReloadingGuard;
77
+ function setExternalHotReloading(value) {
78
+ isHotReloadingState.get().value = value;
79
+ }
80
+ exports.setExternalHotReloading = setExternalHotReloading;
81
+ // Shared across copies, so callbacks registered through one copy's onHotReload still fire when the
82
+ // first-registered copy's controller performs a reload. See createSingleton.
83
+ const hotReloadCallbacks = (0, createSingleton_1.createSingleton)("HotReloadController.hotReloadCallbacks", 1, () => []).get();
84
+ function onHotReload(callback) {
85
+ hotReloadCallbacks.push(callback);
86
+ }
87
+ exports.onHotReload = onHotReload;
88
+ const hotReloadModule = (0, caching_1.cache)((module) => {
89
+ if (!module.updateContents)
90
+ return;
91
+ let interval = 1000;
92
+ let fast = false;
93
+ if (module.hotreload) {
94
+ interval = 100;
95
+ fast = true;
96
+ }
97
+ let lastHashes = new Map();
98
+ function getHash(path) {
99
+ try {
100
+ let contents = fs.readFileSync(path, "utf8");
101
+ return crypto_1.default.createHash("sha256").update(contents).digest("hex");
102
+ }
103
+ catch (_a) {
104
+ return "";
105
+ }
106
+ }
107
+ watchFile(module.filename);
108
+ for (let path of module.watchAdditionalFiles || []) {
109
+ watchFile(path);
110
+ }
111
+ function watchFile(path) {
112
+ lastHashes.set(path, getHash(path));
113
+ fs.watchFile(path, { persistent: false, interval }, (curr, prev) => {
114
+ let newHash = getHash(path);
115
+ if (newHash === lastHashes.get(path))
116
+ return;
117
+ lastHashes.set(path, newHash);
118
+ if (path === module.filename) {
119
+ console.log(`Hot reloading ${module.filename} due to change`);
120
+ }
121
+ else {
122
+ console.log(`Hot reloading ${module.filename} due to change in ${path}`);
123
+ }
124
+ doHotReload(curr.mtimeMs);
125
+ });
126
+ }
127
+ // IMPORTANT! changeTime is for benchmarking how long we took to hotreload (and nothing else)
128
+ function doHotReload(changeTime) {
129
+ var _a, _b, _c;
130
+ (_a = module.updateContents) === null || _a === void 0 ? void 0 : _a.call(module);
131
+ if ((0, misc_1.isNode)() && !module.noserverhotreload) {
132
+ if (module.hotreload
133
+ // A fairly big hack (as this could just be in a string, or something similar), but... it also VERY useful
134
+ || ((_b = module.moduleContents) === null || _b === void 0 ? void 0 : _b.includes("\nmodule.hotreload = true;" + "\n"))
135
+ || ((_c = module.moduleContents) === null || _c === void 0 ? void 0 : _c.includes("\r\nmodule.hotreload = true;" + "\r\n"))) {
136
+ console.log(`Serverside reloading ${module.id}`);
137
+ isHotReloadingState.get().value = true;
138
+ try {
139
+ module.loaded = false;
140
+ module.load(module.id);
141
+ }
142
+ catch (e) {
143
+ console.error((0, logColors_1.red)(`Error hot reloading ${module.id}`));
144
+ console.error(e);
145
+ }
146
+ finally {
147
+ setTimeout(() => {
148
+ isHotReloadingState.get().value = false;
149
+ }, 1000);
150
+ }
151
+ }
152
+ for (let callback of hotReloadCallbacks) {
153
+ callback([module]);
154
+ }
155
+ }
156
+ //module.sourceSHA256;
157
+ // crypto.createHash("sha256").update(contents).digest("hex")
158
+ if ((0, RequireController_1.getIsAllowClient)(module)) {
159
+ triggerClientSideReload({
160
+ files: [module.filename],
161
+ changeTime,
162
+ fast,
163
+ });
164
+ }
165
+ }
166
+ });
167
+ let reloadTriggering = false;
168
+ let clientWatcherNodes = new Set();
169
+ let pendingTriggerFiles = new Set();
170
+ function triggerClientSideReload(config) {
171
+ for (let file of config.files) {
172
+ pendingTriggerFiles.add(file);
173
+ }
174
+ if (reloadTriggering)
175
+ return;
176
+ reloadTriggering = true;
177
+ setTimeout(async () => {
178
+ reloadTriggering = false;
179
+ let files = Array.from(pendingTriggerFiles);
180
+ pendingTriggerFiles.clear();
181
+ for (let clientNodeId of clientWatcherNodes) {
182
+ console.log(`Notifying client of hot reload: ${clientNodeId}`, files);
183
+ exports.HotReloadController.nodes[clientNodeId].fileUpdated(files, config.changeTime).catch(() => {
184
+ console.log(`Removing erroring client: ${clientNodeId}`);
185
+ clientWatcherNodes.delete(clientNodeId);
186
+ });
187
+ }
188
+ // We need to wait, otherwise batched updates fail, WHICH, can result in updates while reloading,
189
+ // which causes missed updates.
190
+ }, config.fast ? 50 : 300);
191
+ }
192
+ class HotReloadControllerBase {
193
+ // TODO: Also hot reload when we reconnect to the server, as it is likely setup will need to
194
+ // be rerun in that case as well (for example, we need to call watchFiles again!)
195
+ async watchFiles() {
196
+ let callerId = SocketFunction_1.SocketFunction.getCaller().nodeId;
197
+ clientWatcherNodes.add(callerId);
198
+ }
199
+ // TODO: This is actually broken related to lazy loaded and server-only code, as the server will tell us a file changed, and then we'll see that we don't have it loaded, and so we will try to refresh.
200
+ // - The reason we refresh is because it might be a new file. I don't know how we could check to see if it was lazy loaded. Maybe we just shouldn't refresh ever if we can't find the module? We'll see how much we run into the extra refresh due to lazy loading...
201
+ async fileUpdated(files, changeTime) {
202
+ try {
203
+ console.groupCollapsed((0, logColors_1.magenta)(`Trigger hotreload for files ${(0, format_1.formatTime)(Date.now() - changeTime)} after file change`));
204
+ for (let file of files) {
205
+ console.log(file);
206
+ }
207
+ console.groupEnd();
208
+ let modules = [];
209
+ for (let file of files) {
210
+ file = "https://" + ((BOOTED_EDGE_NODE === null || BOOTED_EDGE_NODE === void 0 ? void 0 : BOOTED_EDGE_NODE.host) || location.host) + "/" + file;
211
+ let module = require.cache[file];
212
+ if (!module) {
213
+ console.log(`Module not found: ${file}, not reloading page`);
214
+ return;
215
+ }
216
+ if (!module.hotreload) {
217
+ console.log(`Module not hotreloadable: ${file}, reloading page to ensure new version is loaded`);
218
+ document.location.reload();
219
+ return;
220
+ }
221
+ modules.push(module);
222
+ }
223
+ for (let module of modules) {
224
+ module.loaded = false;
225
+ }
226
+ isHotReloadingState.get().value = true;
227
+ try {
228
+ await Promise.all(modules.map(module => module.load(module.filename)));
229
+ }
230
+ finally {
231
+ setTimeout(() => {
232
+ isHotReloadingState.get().value = false;
233
+ }, 1000);
234
+ }
235
+ for (let callback of hotReloadCallbacks) {
236
+ callback(modules);
237
+ }
238
+ console.log((0, logColors_1.magenta)(`Hot reload complete ${(0, format_1.formatTime)(Date.now() - changeTime)} after file change`));
239
+ }
240
+ catch (e) {
241
+ console.error(`Hot reload failed ${e.stack}`);
242
+ }
243
+ }
244
+ }
245
+ exports.HotReloadController = SocketFunction_1.SocketFunction.register("HotReloadController-032b2250-3aac-4187-8c95-75412742b8f5", new HotReloadControllerBase(), () => ({
246
+ watchFiles: {},
247
+ fileUpdated: {}
248
+ }), () => ({}), {
249
+ noAutoExpose: true,
250
+ });
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG90UmVsb2FkQ29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIkhvdFJlbG9hZENvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxrREFBa0Q7QUFDbEQsd0RBQXdEO0FBQ3hELE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0FBRTFCLHNEQUFtRDtBQUNuRCw0Q0FBNkM7QUFDN0MsNERBQXlEO0FBQ3pELHVDQUF5QjtBQUN6QixvREFBNEI7QUFFNUIsc0NBQXFDO0FBQ3JDLDJEQUEyRDtBQUMzRCxxREFBc0Q7QUFFdEQsb0VBQWdFO0FBRWhFOzs7R0FHRztBQUNILFNBQWdCLGdDQUFnQyxDQUFDLHVCQUF1QixHQUFHLEtBQUs7SUFDNUUsK0JBQWMsQ0FBQyxNQUFNLENBQUMsMkJBQW1CLENBQUMsQ0FBQztJQUMzQyxJQUFJLENBQUMsSUFBQSxhQUFNLEdBQUUsRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDM0IsMkJBQW1CLENBQUMsS0FBSyxDQUFDLCtCQUFjLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3BELFVBQVUsRUFBRTtpQkFDWixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ2hEO1FBQ1QsQ0FBQztJQUNMLENBQUM7SUFDRCxXQUFXLENBQUMsR0FBRyxFQUFFO1FBQ2IsS0FBSyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNO2dCQUFFLFNBQVM7WUFDdEIsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDYixDQUFDO0FBaEJELDRF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QUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMzRSxDQUFDO29CQUFTLENBQUM7Z0JBQ1AsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDWixtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUM1QyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDYixDQUFDO1lBRUQsS0FBSyxJQUFJLFFBQVEsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN0QyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBQSxtQkFBTyxFQUFDLHVCQUF1QixJQUFBLG1CQUFVLEVBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7UUFDekcsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBRVksUUFBQSxtQkFBbUIsR0FBRywrQkFBYyxDQUFDLFFBQVEsQ0FDdEQsMERBQTBELEVBQzFELElBQUksdUJBQXVCLEVBQUUsRUFDN0IsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNILFVBQVUsRUFBRSxFQUFFO0lBQ2QsV0FBVyxFQUFFLEVBQUU7Q0FDbEIsQ0FBQyxFQUNGLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFFTixDQUFDLEVBQ0Y7SUFDSSxZQUFZLEVBQUUsSUFBSTtDQUNyQixDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vdHlwZW5vZGUvaW5kZXguZC50c1wiIC8+XG4vLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vcmVxdWlyZS9SZXF1aXJlQ29udHJvbGxlci50c1wiIC8+XG5tb2R1bGUuYWxsb3djbGllbnQgPSB0cnVlO1xuXG5pbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCIuLi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgY2FjaGUsIGxhenkgfSBmcm9tIFwiLi4vc3JjL2NhY2hpbmdcIjtcbmltcG9ydCB7IGNyZWF0ZVNpbmdsZXRvbiB9IGZyb20gXCIuLi9zcmMvY3JlYXRlU2luZ2xldG9uXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuaW1wb3J0IGRlYnVnYnJlYWsgZnJvbSBcImRlYnVnYnJlYWtcIjtcbmltcG9ydCB7IGlzTm9kZSB9IGZyb20gXCIuLi9zcmMvbWlzY1wiO1xuaW1wb3J0IHsgbWFnZW50YSwgcmVkIH0gZnJvbSBcIi4uL3NyYy9mb3JtYXR0aW5nL2xvZ0NvbG9yc1wiO1xuaW1wb3J0IHsgZm9ybWF0VGltZSB9IGZyb20gXCIuLi9zcmMvZm9ybWF0dGluZy9mb3JtYXRcIjtcbmltcG9ydCB7IGJhdGNoRnVuY3Rpb24gfSBmcm9tIFwiLi4vc3JjL2JhdGNoaW5nXCI7XG5pbXBvcnQgeyBnZXRJc0FsbG93Q2xpZW50IH0gZnJvbSBcIi4uL3JlcXVpcmUvUmVxdWlyZUNvbnRyb2xsZXJcIjtcblxuLyoqIEVuYWJsZXMgc29tZSBob3QgcmVsb2FkIGZ1bmN0aW9uYWxpdHkuXG4gKiAgICAgIC0gVHJpZ2dlcnMgYSByZWZyZXNoIGNsaWVudHNpZGVcbiAqICAgICAgLSBUcmlnZ2VycyBhIHJlbG9hZCBzZXJ2ZXIsIGZvciBtb2R1bGVzIG1hcmtlZCB3aXRoIGBtb2R1bGUuaG90cmVsb2FkYFxuICovXG5leHBvcnQgZnVuY3Rpb24gd2F0Y2hGaWxlc0FuZFRyaWdnZXJIb3RSZWxvYWRpbmcobm9BdXRvbWF0aWNCcm93c2VyV2F0Y2ggPSBmYWxzZSkge1xuICAgIFNvY2tldEZ1bmN0aW9uLmV4cG9zZShIb3RSZWxvYWRDb250cm9sbGVyKTtcbiAgICBpZiAoIWlzTm9kZSgpKSB7XG4gICAgICAgIGlmICghbm9BdXRvbWF0aWNCcm93c2VyV2F0Y2gpIHtcbiAgICAgICAgICAgIEhvdFJlbG9hZENvbnRyb2xsZXIubm9kZXNbU29ja2V0RnVuY3Rpb24uYnJvd3Nlck5vZGVJZCgpXVxuICAgICAgICAgICAgICAgIC53YXRjaEZpbGVzKClcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiBjb25zb2xlLmVycm9yKFwid2F0Y2hGaWxlcyBlcnJvclwiLCBlKSlcbiAgICAgICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBmb3IgKGxldCBtb2R1bGUgb2YgT2JqZWN0LnZhbHVlcyhyZXF1aXJlLmNhY2hlKSkge1xuICAgICAgICAgICAgaWYgKCFtb2R1bGUpIGNvbnRpbnVlO1xuICAgICAgICAgICAgaG90UmVsb2FkTW9kdWxlKG1vZHVsZSk7XG4gICAgICAgIH1cbiAgICB9LCA1MDAwKTtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgTW9kdWxlIHtcbiAgICAgICAgICAgIC8qKiBDYXVzZXMgdXMgdG8gaG90cmVsb2FkIHRoZSBmaWxlLiBBcHBsaWVzIGJvdGggc2VydmVyc2lkZSBhbmQgY2xpZW50c2lkZS5cbiAgICAgICAgICAgICAqICAgICAgLSBJZiBub3Qgc2V0IGZvciBhbnkgZmlsZXMgY2xpZW50c2lkZSwgd2Ugd2lsbCByZWZyZXNoLlxuICAgICAgICAgICAgICogICAgICAtIElmIG5vdCBzZXQgZm9yIGFueSBmaWxlcyBzZXJ2ZXJzaWRlLCB3ZSB3aWxsIGRvIG5vdGhpbmcgKGFuZCBqdXN0IGxlYXZlIG9sZCBjb2RlIHJ1bm5pbmcpLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBob3RyZWxvYWQ/OiBib29sZWFuO1xuICAgICAgICAgICAgLyoqIE92ZXJyaWRlcyBob3RyZWxvYWQgdG8gZGlzYWJsZSBob3QgcmVsb2FkaW5nLiBVc2VmdWwgaWYgeW91IGFkZCBcImhvdHJlbG9hZC5mbGFnXCIgdG8gYSBkaXJlY3RvcnlcbiAgICAgICAgICAgICAqICAgICAgKHdoaWNoIHNldHMgaG90cmVsb2FkIG9uIGFsbCBmaWxlcyBpbiBhbmQgdW5kZXIgdGhhdCBkaXJlY3RvcnkpLCBidXQgd2FudCBhIHNwZWNpZmljIGZpbGVcbiAgICAgICAgICAgICAqICAgICAgdG8gbm90IGhvdHJlbG9hZC5cbiAgICAgICAgICAgICAqICAtIEFsc28gdXNlZnVsIGlmIHlvdSB3YW50IGZpbGVzIHRvIGhvdHJlbG9hZCBjbGllbnRzaWRlLCBidXQgbm90IHNlcnZlcnNpZGUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIG5vc2VydmVyaG90cmVsb2FkPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgd2F0Y2hBZGRpdGlvbmFsRmlsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaXNIb3RSZWxvYWRpbmc6ICgoKSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZDtcbn1cblxuLy8gU2hhcmVkIGFjcm9zcyBjb3BpZXMgb2YgdGhpcyBwYWNrYWdlLCBzbyB0aGUgXCJjdXJyZW50bHkgaG90IHJlbG9hZGluZ1wiIGZsYWcgaXMgY29uc2lzdGVudCBub1xuLy8gIG1hdHRlciB3aGljaCBjb3B5IHNldCBpdCAoZXgsIHNldEV4dGVybmFsSG90UmVsb2FkaW5nKSBvciByZWFkcyBpdCAoY2FsbE1hbmFnZXIucmVnaXN0ZXJDbGFzc1xuLy8gIHJlYWRzIGl0IHZpYSB0aGUgZ2xvYmFsVGhpcy5pc0hvdFJlbG9hZGluZyBicmlkZ2UsIHdoaWNoIGVhY2ggY29weSBvdmVyd3JpdGVzKS4gU2VlIGNyZWF0ZVNpbmdsZXRvbi5cbmNvbnN0IGlzSG90UmVsb2FkaW5nU3RhdGUgPSBjcmVhdGVTaW5nbGV0b24oXCJIb3RSZWxvYWRDb250cm9sbGVyLmlzSG90UmVsb2FkaW5nXCIsIDEsICgpID0+ICh7IHZhbHVlOiBmYWxzZSB9KSk7XG5leHBvcnQgZnVuY3Rpb24gaXNIb3RSZWxvYWRpbmcoKSB7XG4gICAgcmV0dXJuIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWU7XG59XG5nbG9iYWxUaGlzLmlzSG90UmVsb2FkaW5nID0gaXNIb3RSZWxvYWRpbmc7XG5leHBvcnQgZnVuY3Rpb24gaG90UmVsb2FkaW5nR3VhcmQoKTogdHJ1ZSB7XG4gICAgcmV0dXJuICFpc0hvdFJlbG9hZGluZygpIGFzIGFueTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBzZXRFeHRlcm5hbEhvdFJlbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWUgPSB2YWx1ZTtcbn1cbi8vIFNoYXJlZCBhY3Jvc3MgY29waWVzLCBzbyBjYWxsYmFja3MgcmVnaXN0ZXJlZCB0aHJvdWdoIG9uZSBjb3B5J3Mgb25Ib3RSZWxvYWQgc3RpbGwgZmlyZSB3aGVuIHRoZVxuLy8gIGZpcnN0LXJlZ2lzdGVyZWQgY29weSdzIGNvbnRyb2xsZXIgcGVyZm9ybXMgYSByZWxvYWQuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBob3RSZWxvYWRDYWxsYmFja3MgPSBjcmVhdGVTaW5nbGV0b24oXCJIb3RSZWxvYWRDb250cm9sbGVyLmhvdFJlbG9hZENhbGxiYWNrc1wiLCAxLCAoKSA9PiBbXSBhcyAoKG1vZHVsZXM6IE5vZGVKUy5Nb2R1bGVbXSkgPT4gdm9pZClbXSkuZ2V0KCk7XG5leHBvcnQgZnVuY3Rpb24gb25Ib3RSZWxvYWQoY2FsbGJhY2s6IChtb2R1bGVzOiBOb2RlSlMuTW9kdWxlW10pID0+IHZvaWQpIHtcbiAgICBob3RSZWxvYWRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG59XG5cbmNvbnN0IGhvdFJlbG9hZE1vZHVsZSA9IGNhY2hlKChtb2R1bGU6IE5vZGVKUy5Nb2R1bGUpID0+IHtcbiAgICBpZiAoIW1vZHVsZS51cGRhdGVDb250ZW50cykgcmV0dXJuO1xuICAgIGxldCBpbnRlcnZhbCA9IDEwMDA7XG4gICAgbGV0IGZhc3QgPSBmYWxzZTtcbiAgICBpZiAobW9kdWxlLmhvdHJlbG9hZCkge1xuICAgICAgICBpbnRlcnZhbCA9IDEwMDtcbiAgICAgICAgZmFzdCA9IHRydWU7XG4gICAgfVxuXG4gICAgbGV0IGxhc3RIYXNoZXMgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGZ1bmN0aW9uIGdldEhhc2gocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgY29udGVudHMgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShjb250ZW50cykuZGlnZXN0KFwiaGV4XCIpO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgd2F0Y2hGaWxlKG1vZHVsZS5maWxlbmFtZSk7XG4gICAgZm9yIChsZXQgcGF0aCBvZiBtb2R1bGUud2F0Y2hBZGRpdGlvbmFsRmlsZXMgfHwgW10pIHtcbiAgICAgICAgd2F0Y2hGaWxlKHBhdGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHdhdGNoRmlsZShwYXRoOiBzdHJpbmcpIHtcbiAgICAgICAgbGFzdEhhc2hlcy5zZXQocGF0aCwgZ2V0SGFzaChwYXRoKSk7XG4gICAgICAgIGZzLndhdGNoRmlsZShwYXRoLCB7IHBlcnNpc3RlbnQ6IGZhbHNlLCBpbnRlcnZhbCB9LCAoY3VyciwgcHJldikgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld0hhc2ggPSBnZXRIYXNoKHBhdGgpO1xuICAgICAgICAgICAgaWYgKG5ld0hhc2ggPT09IGxhc3RIYXNoZXMuZ2V0KHBhdGgpKSByZXR1cm47XG4gICAgICAgICAgICBsYXN0SGFzaGVzLnNldChwYXRoLCBuZXdIYXNoKTtcbiAgICAgICAgICAgIGlmIChwYXRoID09PSBtb2R1bGUuZmlsZW5hbWUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSG90IHJlbG9hZGluZyAke21vZHVsZS5maWxlbmFtZX0gZHVlIHRvIGNoYW5nZWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSG90IHJlbG9hZGluZyAke21vZHVsZS5maWxlbmFtZX0gZHVlIHRvIGNoYW5nZSBpbiAke3BhdGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb0hvdFJlbG9hZChjdXJyLm10aW1lTXMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgLy8gSU1QT1JUQU5UISBjaGFuZ2VUaW1lIGlzIGZvciBiZW5jaG1hcmtpbmcgaG93IGxvbmcgd2UgdG9vayB0byBob3RyZWxvYWQgKGFuZCBub3RoaW5nIGVsc2UpXG4gICAgZnVuY3Rpb24gZG9Ib3RSZWxvYWQoY2hhbmdlVGltZTogbnVtYmVyKSB7XG4gICAgICAgIG1vZHVsZS51cGRhdGVDb250ZW50cz8uKCk7XG4gICAgICAgIGlmIChpc05vZGUoKSAmJiAhbW9kdWxlLm5vc2VydmVyaG90cmVsb2FkKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgbW9kdWxlLmhvdHJlbG9hZFxuICAgICAgICAgICAgICAgIC8vIEEgZmFpcmx5IGJpZyBoYWNrIChhcyB0aGlzIGNvdWxkIGp1c3QgYmUgaW4gYSBzdHJpbmcsIG9yIHNvbWV0aGluZyBzaW1pbGFyKSwgYnV0Li4uIGl0IGFsc28gVkVSWSB1c2VmdWxcbiAgICAgICAgICAgICAgICB8fCBtb2R1bGUubW9kdWxlQ29udGVudHM/LmluY2x1ZGVzKFwiXFxubW9kdWxlLmhvdHJlbG9hZCA9IHRydWU7XCIgKyBcIlxcblwiKVxuICAgICAgICAgICAgICAgIHx8IG1vZHVsZS5tb2R1bGVDb250ZW50cz8uaW5jbHVkZXMoXCJcXHJcXG5tb2R1bGUuaG90cmVsb2FkID0gdHJ1ZTtcIiArIFwiXFxyXFxuXCIpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgU2VydmVyc2lkZSByZWxvYWRpbmcgJHttb2R1bGUuaWR9YCk7XG4gICAgICAgICAgICAgICAgaXNIb3RSZWxvYWRpbmdTdGF0ZS5nZXQoKS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgbW9kdWxlLmxvYWRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBtb2R1bGUubG9hZChtb2R1bGUuaWQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZWQoYEVycm9yIGhvdCByZWxvYWRpbmcgJHttb2R1bGUuaWR9YCkpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNIb3RSZWxvYWRpbmdTdGF0ZS5nZXQoKS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBjYWxsYmFjayBvZiBob3RSZWxvYWRDYWxsYmFja3MpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhbbW9kdWxlXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9tb2R1bGUuc291cmNlU0hBMjU2O1xuICAgICAgICAvLyBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoY29udGVudHMpLmRpZ2VzdChcImhleFwiKVxuICAgICAgICBpZiAoZ2V0SXNBbGxvd0NsaWVudChtb2R1bGUpKSB7XG4gICAgICAgICAgICB0cmlnZ2VyQ2xpZW50U2lkZVJlbG9hZCh7XG4gICAgICAgICAgICAgICAgZmlsZXM6IFttb2R1bGUuZmlsZW5hbWVdLFxuICAgICAgICAgICAgICAgIGNoYW5nZVRpbWUsXG4gICAgICAgICAgICAgICAgZmFzdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufSk7XG5sZXQgcmVsb2FkVHJpZ2dlcmluZyA9IGZhbHNlO1xubGV0IGNsaWVudFdhdGNoZXJOb2RlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xubGV0IHBlbmRpbmdUcmlnZ2VyRmlsZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmZ1bmN0aW9uIHRyaWdnZXJDbGllbnRTaWRlUmVsb2FkKGNvbmZpZzoge1xuICAgIGZpbGVzOiBzdHJpbmdbXTtcbiAgICBjaGFuZ2VUaW1lOiBudW1iZXI7XG4gICAgZmFzdD86IGJvb2xlYW47XG59KSB7XG4gICAgZm9yIChsZXQgZmlsZSBvZiBjb25maWcuZmlsZXMpIHtcbiAgICAgICAgcGVuZGluZ1RyaWdnZXJGaWxlcy5hZGQoZmlsZSk7XG4gICAgfVxuICAgIGlmIChyZWxvYWRUcmlnZ2VyaW5nKSByZXR1cm47XG4gICAgcmVsb2FkVHJpZ2dlcmluZyA9IHRydWU7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIHJlbG9hZFRyaWdnZXJpbmcgPSBmYWxzZTtcbiAgICAgICAgbGV0IGZpbGVzID0gQXJyYXkuZnJvbShwZW5kaW5nVHJpZ2dlckZpbGVzKTtcbiAgICAgICAgcGVuZGluZ1RyaWdnZXJGaWxlcy5jbGVhcigpO1xuICAgICAgICBmb3IgKGxldCBjbGllbnROb2RlSWQgb2YgY2xpZW50V2F0Y2hlck5vZGVzKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTm90aWZ5aW5nIGNsaWVudCBvZiBob3QgcmVsb2FkOiAke2NsaWVudE5vZGVJZH1gLCBmaWxlcyk7XG4gICAgICAgICAgICBIb3RSZWxvYWRDb250cm9sbGVyLm5vZGVzW2NsaWVudE5vZGVJZF0uZmlsZVVwZGF0ZWQoZmlsZXMsIGNvbmZpZy5jaGFuZ2VUaW1lKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJlbW92aW5nIGVycm9yaW5nIGNsaWVudDogJHtjbGllbnROb2RlSWR9YCk7XG4gICAgICAgICAgICAgICAgY2xpZW50V2F0Y2hlck5vZGVzLmRlbGV0ZShjbGllbnROb2RlSWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgbmVlZCB0byB3YWl0LCBvdGhlcndpc2UgYmF0Y2hlZCB1cGRhdGVzIGZhaWwsIFdISUNILCBjYW4gcmVzdWx0IGluIHVwZGF0ZXMgd2hpbGUgcmVsb2FkaW5nLFxuICAgICAgICAvLyAgd2hpY2ggY2F1c2VzIG1pc3NlZCB1cGRhdGVzLlxuICAgIH0sIGNvbmZpZy5mYXN0ID8gNTAgOiAzMDApO1xufVxuXG5jbGFzcyBIb3RSZWxvYWRDb250cm9sbGVyQmFzZSB7XG4gICAgLy8gVE9ETzogQWxzbyBob3QgcmVsb2FkIHdoZW4gd2UgcmVjb25uZWN0IHRvIHRoZSBzZXJ2ZXIsIGFzIGl0IGlzIGxpa2VseSBzZXR1cCB3aWxsIG5lZWQgdG9cbiAgICAvLyAgYmUgcmVydW4gaW4gdGhhdCBjYXNlIGFzIHdlbGwgKGZvciBleGFtcGxlLCB3ZSBuZWVkIHRvIGNhbGwgd2F0Y2hGaWxlcyBhZ2FpbiEpXG4gICAgYXN5bmMgd2F0Y2hGaWxlcygpIHtcbiAgICAgICAgbGV0IGNhbGxlcklkID0gU29ja2V0RnVuY3Rpb24uZ2V0Q2FsbGVyKCkubm9kZUlkO1xuICAgICAgICBjbGllbnRXYXRjaGVyTm9kZXMuYWRkKGNhbGxlcklkKTtcbiAgICB9XG4gICAgLy8gVE9ETzogVGhpcyBpcyBhY3R1YWxseSBicm9rZW4gcmVsYXRlZCB0byBsYXp5IGxvYWRlZCBhbmQgc2VydmVyLW9ubHkgY29kZSwgYXMgdGhlIHNlcnZlciB3aWxsIHRlbGwgdXMgYSBmaWxlIGNoYW5nZWQsIGFuZCB0aGVuIHdlJ2xsIHNlZSB0aGF0IHdlIGRvbid0IGhhdmUgaXQgbG9hZGVkLCBhbmQgc28gd2Ugd2lsbCB0cnkgdG8gcmVmcmVzaC5cbiAgICAvLyAgICAgIC0gVGhlIHJlYXNvbiB3ZSByZWZyZXNoIGlzIGJlY2F1c2UgaXQgbWlnaHQgYmUgYSBuZXcgZmlsZS4gSSBkb24ndCBrbm93IGhvdyB3ZSBjb3VsZCBjaGVjayB0byBzZWUgaWYgaXQgd2FzIGxhenkgbG9hZGVkLiBNYXliZSB3ZSBqdXN0IHNob3VsZG4ndCByZWZyZXNoIGV2ZXIgaWYgd2UgY2FuJ3QgZmluZCB0aGUgbW9kdWxlPyBXZSdsbCBzZWUgaG93IG11Y2ggd2UgcnVuIGludG8gdGhlIGV4dHJhIHJlZnJlc2ggZHVlIHRvIGxhenkgbG9hZGluZy4uLlxuICAgIGFzeW5jIGZpbGVVcGRhdGVkKGZpbGVzOiBzdHJpbmdbXSwgY2hhbmdlVGltZTogbnVtYmVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKG1hZ2VudGEoYFRyaWdnZXIgaG90cmVsb2FkIGZvciBmaWxlcyAke2Zvcm1hdFRpbWUoRGF0ZS5ub3coKSAtIGNoYW5nZVRpbWUpfSBhZnRlciBmaWxlIGNoYW5nZWApKTtcbiAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgICAgIGxldCBtb2R1bGVzOiBOb2RlSlMuTW9kdWxlW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgICAgICAgICBmaWxlID0gXCJodHRwczovL1wiICsgKEJPT1RFRF9FREdFX05PREU/Lmhvc3QgfHwgbG9jYXRpb24uaG9zdCkgKyBcIi9cIiArIGZpbGU7XG4gICAgICAgICAgICAgICAgbGV0IG1vZHVsZSA9IHJlcXVpcmUuY2FjaGVbZmlsZV07XG4gICAgICAgICAgICAgICAgaWYgKCFtb2R1bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYE1vZHVsZSBub3QgZm91bmQ6ICR7ZmlsZX0sIG5vdCByZWxvYWRpbmcgcGFnZWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghbW9kdWxlLmhvdHJlbG9hZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgTW9kdWxlIG5vdCBob3RyZWxvYWRhYmxlOiAke2ZpbGV9LCByZWxvYWRpbmcgcGFnZSB0byBlbnN1cmUgbmV3IHZlcnNpb24gaXMgbG9hZGVkYCk7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1vZHVsZXMucHVzaChtb2R1bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgbW9kdWxlIG9mIG1vZHVsZXMpIHtcbiAgICAgICAgICAgICAgICBtb2R1bGUubG9hZGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc0hvdFJlbG9hZGluZ1N0YXRlLmdldCgpLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobW9kdWxlcy5tYXAobW9kdWxlID0+IG1vZHVsZS5sb2FkKG1vZHVsZS5maWxlbmFtZSkpKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlzSG90UmVsb2FkaW5nU3RhdGUuZ2V0KCkudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgY2FsbGJhY2sgb2YgaG90UmVsb2FkQ2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobW9kdWxlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhtYWdlbnRhKGBIb3QgcmVsb2FkIGNvbXBsZXRlICR7Zm9ybWF0VGltZShEYXRlLm5vdygpIC0gY2hhbmdlVGltZSl9IGFmdGVyIGZpbGUgY2hhbmdlYCkpO1xuICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEhvdCByZWxvYWQgZmFpbGVkICR7ZS5zdGFja31gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IEhvdFJlbG9hZENvbnRyb2xsZXIgPSBTb2NrZXRGdW5jdGlvbi5yZWdpc3RlcihcbiAgICBcIkhvdFJlbG9hZENvbnRyb2xsZXItMDMyYjIyNTAtM2FhYy00MTg3LThjOTUtNzU0MTI3NDJiOGY1XCIsXG4gICAgbmV3IEhvdFJlbG9hZENvbnRyb2xsZXJCYXNlKCksXG4gICAgKCkgPT4gKHtcbiAgICAgICAgd2F0Y2hGaWxlczoge30sXG4gICAgICAgIGZpbGVVcGRhdGVkOiB7fVxuICAgIH0pLFxuICAgICgpID0+ICh7XG5cbiAgICB9KSxcbiAgICB7XG4gICAgICAgIG5vQXV0b0V4cG9zZTogdHJ1ZSxcbiAgICB9XG4pOyJdfQ==
252
+ /* _JS_SOURCE_HASH = "fad5234ef4614a67e7686e156e1de47b8cb72f9f93a3c3e4945c518e41eff353"; */
package/index.d.ts CHANGED
@@ -7,9 +7,9 @@ declare module "socket-function/SetProcessVariables" {
7
7
  }
8
8
 
9
9
  declare module "socket-function/SocketFunction" {
10
- /// <reference path="require/RequireController.d.ts" />
11
10
  /// <reference types="node" />
12
11
  /// <reference types="node" />
12
+ /// <reference types="socket-function/require/requirecontroller" />
13
13
  import { SocketExposedInterface, SocketFunctionHook, SocketFunctionClientHook, SocketExposedShape, SocketRegistered, CallerContext, FullCallType, SocketRegisterType } from "socket-function/SocketFunctionTypes";
14
14
  import { SocketServerConfig } from "socket-function/src/webSocketServer";
15
15
  import { Args, MaybePromise } from "socket-function/src/types";
@@ -128,7 +128,7 @@ declare module "socket-function/SocketFunction" {
128
128
  }
129
129
 
130
130
  declare module "socket-function/SocketFunctionTypes" {
131
- /// <reference path="require/RequireController.d.ts" />
131
+ /// <reference types="socket-function/require/requirecontroller" />
132
132
  import { getCallObj } from "socket-function/src/nodeProxy";
133
133
  import { Args, MaybePromise } from "socket-function/src/types";
134
134
  export declare const socket: unique symbol;
@@ -218,8 +218,8 @@ declare module "socket-function/SocketFunctionTypes" {
218
218
  }
219
219
 
220
220
  declare module "socket-function/hot/HotReloadController" {
221
- /// <reference path="../../typenode/index.d.ts" />
222
- /// <reference path="../require/RequireController.d.ts" />
221
+ /// <reference types="typenode" />
222
+ /// <reference types="socket-function/require/requirecontroller" />
223
223
  /** Enables some hot reload functionality.
224
224
  * - Triggers a refresh clientside
225
225
  * - Triggers a reload server, for modules marked with `module.hotreload`
@@ -307,15 +307,15 @@ declare module "socket-function/mobx/promiseToObservable" {
307
307
  }
308
308
 
309
309
  declare module "socket-function/require/CSSShim" {
310
- /// <reference path="RequireController.d.ts" />
310
+ /// <reference types="socket-function/require/requirecontroller" />
311
311
  export {};
312
312
 
313
313
  }
314
314
 
315
315
  declare module "socket-function/require/RequireController" {
316
- /// <reference path="../../typenode/index.d.ts" />
317
316
  /// <reference types="node" />
318
317
  /// <reference types="node" />
318
+ /// <reference types="typenode" />
319
319
  declare global {
320
320
  namespace NodeJS {
321
321
  interface Module {
@@ -430,8 +430,8 @@ declare module "socket-function/require/RequireController" {
430
430
  }
431
431
 
432
432
  declare module "socket-function/require/compileFlags" {
433
- /// <reference path="RequireController.d.ts" />
434
433
  /// <reference types="node" />
434
+ /// <reference types="socket-function/require/requirecontroller" />
435
435
  /**
436
436
  * Adds a global function setFlag(require, "typescript", flag) which sets a flag on the client
437
437
  * - Ex, setFlag(require, "typescript", "allowclient") so allowclient = true on the typescript module.
@@ -453,7 +453,7 @@ declare module "socket-function/require/extMapper" {
453
453
  }
454
454
 
455
455
  declare module "socket-function/require/require" {
456
- /// <reference path="../src/src.d.ts" />
456
+ /// <reference types="socket-function/src/src" />
457
457
  declare global {
458
458
  var onProgressHandler: undefined | ((progress: {
459
459
  type: string;
@@ -789,7 +789,7 @@ declare module "socket-function/src/callHTTPHandler" {
789
789
  }
790
790
 
791
791
  declare module "socket-function/src/callManager" {
792
- /// <reference path="../hot/HotReloadController.d.ts" />
792
+ /// <reference types="socket-function/hot/hotreloadcontroller" />
793
793
  import { CallerContext, CallType, ClientHookContext, FullCallType, FunctionFlags, HookContext, SocketExposedInterface, SocketExposedShape, SocketFunctionClientHook, SocketFunctionHook, SocketRegistered } from "socket-function/SocketFunctionTypes";
794
794
  export declare function getCallFlags(call: CallType): FunctionFlags | undefined;
795
795
  export declare function shouldCompressCall(call: CallType): boolean | "LZ4" | undefined;
@@ -1560,28 +1560,13 @@ declare module "socket-function/time/trueTimeShim" {
1560
1560
  fromTime: number;
1561
1561
  toTime: number;
1562
1562
  };
1563
- export declare function computeTweenedOffset(components: {
1564
- systemTime: number;
1565
- fromOffset: number;
1566
- toOffset: number;
1567
- fromTime: number;
1568
- }): number;
1569
1563
  export declare function getTimeComponents(): {
1570
1564
  systemTime: number;
1571
1565
  offset: number;
1572
1566
  };
1573
1567
  export declare function getTrueTime(): number;
1574
1568
  export declare function getTrueTimeOffset(): number;
1575
- export type TrueTimeProof = {
1576
- systemTime: number;
1577
- fromOffset: number;
1578
- toOffset: number;
1579
- fromTime: number;
1580
- toTime: number;
1581
- offset: number;
1582
- measurement?: TimeOffsetProof;
1583
- };
1584
- export declare function getTrueTimeProof(): TrueTimeProof | undefined;
1569
+ export declare function getTrueTimeProof(): TimeOffsetProof | undefined;
1585
1570
  export declare function waitForFirstTimeSync(): Promise<void> | undefined;
1586
1571
  declare global {
1587
1572
  var TRUE_TIME_ALREADY_SHIMMED: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socket-function",
3
- "version": "1.1.49",
3
+ "version": "1.2.1",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -1,2 +1,2 @@
1
- /// <reference path="RequireController.d.ts" />
1
+ /// <reference types="socket-function/require/requirecontroller" />
2
2
  export {};
@@ -1,6 +1,6 @@
1
- /// <reference path="../../typenode/index.d.ts" />
2
1
  /// <reference types="node" />
3
2
  /// <reference types="node" />
3
+ /// <reference types="typenode" />
4
4
  declare global {
5
5
  namespace NodeJS {
6
6
  interface Module {
@@ -85,7 +85,7 @@ declare global {
85
85
  /** @deprecated, not needed, as this defaults to ".", which is a lot easier to reason about anyways. */
86
86
  export declare function setRequireBootRequire(dir: string): void;
87
87
  export declare function allowAllNodeModules(): void;
88
- export declare const RequireController: import("../SocketFunctionTypes").SocketRegistered<{
88
+ export declare const RequireController: import("socket-function/SocketFunctionTypes").SocketRegistered<{
89
89
  rootResolvePath: "Function has implementation but is not exposed in the SocketFunction.register call";
90
90
  requireHTML: (config?: {
91
91
  requireCalls?: string[];
@@ -1,5 +1,5 @@
1
- /// <reference path="RequireController.d.ts" />
2
1
  /// <reference types="node" />
2
+ /// <reference types="socket-function/require/requirecontroller" />
3
3
  /**
4
4
  * Adds a global function setFlag(require, "typescript", flag) which sets a flag on the client
5
5
  * - Ex, setFlag(require, "typescript", "allowclient") so allowclient = true on the typescript module.