socket-function 1.1.48 → 1.2.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.
Files changed (41) hide show
  1. package/dist/SetProcessVariables.ts.cache +9 -0
  2. package/dist/SocketFunction.ts.cache +467 -0
  3. package/hot/dist/HotReloadController.ts.cache +252 -0
  4. package/package.json +1 -1
  5. package/require/dist/RequireController.ts.cache +386 -0
  6. package/require/dist/compileFlags.ts.cache +41 -0
  7. package/require/dist/extMapper.ts.cache +368 -0
  8. package/require/dist/require.ts.cache +676 -0
  9. package/src/JSONLACKS/dist/JSONLACKS.ts.cache +469 -0
  10. package/src/dist/CallFactory.ts.cache +930 -0
  11. package/src/dist/Zip.ts.cache +156 -0
  12. package/src/dist/batching.ts.cache +377 -0
  13. package/src/dist/bits.ts.cache +121 -0
  14. package/src/dist/buffers.ts.cache +76 -0
  15. package/src/dist/caching.ts.cache +302 -0
  16. package/src/dist/callHTTPHandler.ts.cache +264 -0
  17. package/src/dist/callManager.ts.cache +159 -0
  18. package/src/dist/certStore.ts.cache +59 -0
  19. package/src/dist/createSingleton.ts.cache +62 -0
  20. package/src/dist/fixLargeNetworkCalls.ts.cache +17 -0
  21. package/src/dist/forwardPort.ts.cache +222 -0
  22. package/src/dist/https.ts.cache +141 -0
  23. package/src/dist/misc.ts.cache +499 -0
  24. package/src/dist/nodeCache.ts.cache +136 -0
  25. package/src/dist/nodeProxy.ts.cache +57 -0
  26. package/src/dist/protocolNegotiation.ts.cache +101 -0
  27. package/src/dist/tlsParsing.ts.cache +85 -0
  28. package/src/dist/types.ts.cache +9 -0
  29. package/src/dist/webSocketServer.ts.cache +365 -0
  30. package/src/dist/websocketFactory.ts.cache +53 -0
  31. package/src/formatting/dist/colors.ts.cache +98 -0
  32. package/src/formatting/dist/format.ts.cache +396 -0
  33. package/src/formatting/dist/logColors.ts.cache +28 -0
  34. package/src/lz4/dist/LZ4.ts.cache +53 -0
  35. package/src/profiling/dist/getOwnTime.ts.cache +100 -0
  36. package/src/profiling/dist/measure.ts.cache +338 -0
  37. package/src/profiling/dist/stats.ts.cache +202 -0
  38. package/src/profiling/dist/statsFormat.ts.cache +45 -0
  39. package/src/profiling/getOwnTime.ts +7 -1
  40. package/src/profiling/measure.ts +25 -16
  41. package/time/dist/trueTimeShim.ts.cache +656 -0
@@ -0,0 +1,136 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ //exports.countOpenConnections = exports.resetAllNodeCallFactories = exports.debugGetAllCallFactories = exports.getCallFactory = exports.getCreateCallFactory = exports.registerNodeClient = exports.getNodeIdDomainMaybeUndefined = exports.getNodeIdDomain = exports.getNodeIdLocation = exports.getNodeIdIP = exports.isClientNodeId = exports.getClientNodeId = exports.getNodeIdFromLocation = exports.getNodeId = void 0;
4
+ const CallFactory_1 = require("./CallFactory");
5
+ const caching_1 = require("./caching");
6
+ const SocketFunction_1 = require("../SocketFunction");
7
+ const createSingleton_1 = require("./createSingleton");
8
+ // TODO: Add CallInstanceFactory.isClosed, so nodeCache can clean up old entries.
9
+ // This is only needed for memory management, and not for correctness. Entries never
10
+ // need to be refreshed, because NetworkLocation.listeningPorts shouldn't really change.
11
+ // Either we will have listeningPorts and re-establish the connection, or we won't, and
12
+ // then it is a client, in which case we cannot re-establish the connection (and we just
13
+ // have to wait for the client to re-establish it). AND, if the listeningPorts change from
14
+ // a value to a new value... then they should be obtained using connect() anyway,
15
+ // and so whatever way the user got the NetworkLocation to begin with, they should use again.
16
+ function getNodeId(domain, port) {
17
+ // NOTE: As domains are never reused, this doesn't need any randomness
18
+ return `${domain}:${port}`;
19
+ }
20
+ exports.getNodeId = getNodeId;
21
+ /** @deprecated, call getBrowserUrlNode instead, which does important additional checks. */
22
+ function getNodeIdFromLocation() {
23
+ return SocketFunction_1.SocketFunction.browserNodeId();
24
+ }
25
+ exports.getNodeIdFromLocation = getNodeIdFromLocation;
26
+ /** A nodeId not available for reconnecting. */
27
+ function getClientNodeId(address) {
28
+ return `client:${address}:${Date.now()}:${Math.random()}`;
29
+ }
30
+ exports.getClientNodeId = getClientNodeId;
31
+ function isClientNodeId(nodeId) {
32
+ return nodeId.startsWith("client:");
33
+ }
34
+ exports.isClientNodeId = isClientNodeId;
35
+ /** Will always be available, even if getNodeIdLocation is not (as we don't always have the port,
36
+ * but we should always have an address).
37
+ * - Rarely used, as for logging you can just log the nodeId. ALSO, it isn't sufficient to reconnect, as the port is also needed!
38
+ * */
39
+ function getNodeIdIP(nodeId) {
40
+ if (isClientNodeId(nodeId)) {
41
+ return nodeId.split(":")[1];
42
+ }
43
+ return getNodeIdLocation(nodeId).address;
44
+ }
45
+ exports.getNodeIdIP = getNodeIdIP;
46
+ function getNodeIdLocation(nodeId) {
47
+ if (isClientNodeId(nodeId)) {
48
+ return undefined;
49
+ }
50
+ let [address, port] = nodeId.split(":");
51
+ return { address, port: parseInt(port) };
52
+ }
53
+ exports.getNodeIdLocation = getNodeIdLocation;
54
+ // NOTE: This returns the full domain.
55
+ // - It didn't used to, but I think it also wasn't used before, and now we're using this to find the ip.
56
+ function getNodeIdDomain(nodeId) {
57
+ let result = getNodeIdDomainMaybeUndefined(nodeId);
58
+ if (result === undefined) {
59
+ throw new Error(`Cannot get domain from nodeId, which is only usable as a client. NodeId: ${JSON.stringify(nodeId)}`);
60
+ }
61
+ return result;
62
+ }
63
+ exports.getNodeIdDomain = getNodeIdDomain;
64
+ function getNodeIdDomainMaybeUndefined(nodeId) {
65
+ let location = getNodeIdLocation(nodeId);
66
+ if (!location) {
67
+ return undefined;
68
+ }
69
+ return new URL("https://" + location.address).hostname;
70
+ }
71
+ exports.getNodeIdDomainMaybeUndefined = getNodeIdDomainMaybeUndefined;
72
+ // NOTE: CallFactory turns into an actual CallFactory when registerNodeClient is called
73
+ // nodeId =>
74
+ // Shared across copies of this package, so connections established through one copy are reused
75
+ // by the others (instead of each copy opening its own duplicate connection). See createSingleton.
76
+ const nodeCache = (0, createSingleton_1.createSingleton)("nodeCache", 1, () => new Map()).get();
77
+ // NOTE: Should be called directly inside call factory constructor whenever
78
+ // their nodeId changes (and on construction).
79
+ function registerNodeClient(callFactory) {
80
+ nodeCache.set(callFactory.nodeId, callFactory);
81
+ startCleanupLoop();
82
+ }
83
+ exports.registerNodeClient = registerNodeClient;
84
+ function getCreateCallFactory(nodeId) {
85
+ let callFactory = nodeCache.get(nodeId);
86
+ if (callFactory === undefined) {
87
+ callFactory = (0, CallFactory_1.createCallFactory)(undefined, nodeId);
88
+ nodeCache.set(nodeId, callFactory);
89
+ }
90
+ return callFactory;
91
+ }
92
+ exports.getCreateCallFactory = getCreateCallFactory;
93
+ function getCallFactory(nodeId) {
94
+ return nodeCache.get(nodeId);
95
+ }
96
+ exports.getCallFactory = getCallFactory;
97
+ function debugGetAllCallFactories() {
98
+ let result = [];
99
+ for (let [key, value] of nodeCache.entries()) {
100
+ if (value instanceof Promise) {
101
+ continue;
102
+ }
103
+ result.push(value);
104
+ }
105
+ return result;
106
+ }
107
+ exports.debugGetAllCallFactories = debugGetAllCallFactories;
108
+ function resetAllNodeCallFactories() {
109
+ // Needs to be done if you want to reset authentication. Outstanding calls still work,
110
+ // but new calls use new factories (and connections).
111
+ nodeCache.clear();
112
+ }
113
+ exports.resetAllNodeCallFactories = resetAllNodeCallFactories;
114
+ function countOpenConnections() {
115
+ return Array.from(nodeCache.values()).filter(factory => factory instanceof Promise ? false : factory.isConnected).length;
116
+ }
117
+ exports.countOpenConnections = countOpenConnections;
118
+ const startCleanupLoop = (0, caching_1.lazy)(() => {
119
+ (async () => {
120
+ while (true) {
121
+ for (let [key, value] of Array.from(nodeCache.entries())) {
122
+ let factory = value;
123
+ if (!(factory instanceof Promise)) {
124
+ if (factory.closedForever) {
125
+ nodeCache.delete(key);
126
+ }
127
+ }
128
+ }
129
+ await new Promise(resolve => setTimeout(resolve, 1000 * 60 * 5));
130
+ }
131
+ })().catch(e => {
132
+ console.error(`nodeCache cleanup loop failed, ${e.stack}`);
133
+ });
134
+ });
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZUNhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm9kZUNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUErRDtBQUUvRCx1Q0FBaUM7QUFDakMsc0RBQW1EO0FBRW5ELHVEQUFvRDtBQUVwRCxpRkFBaUY7QUFDakYscUZBQXFGO0FBQ3JGLHlGQUF5RjtBQUN6Rix3RkFBd0Y7QUFDeEYseUZBQXlGO0FBQ3pGLDJGQUEyRjtBQUMzRixrRkFBa0Y7QUFDbEYsOEZBQThGO0FBRTlGLFNBQWdCLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBWTtJQUNsRCxzRUFBc0U7SUFDdEUsT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUMvQixDQUFDO0FBSEQsOEJBR0M7QUFFRCwyRkFBMkY7QUFDM0YsU0FBZ0IscUJBQXFCO0lBQ2pDLE9BQU8sK0JBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztBQUMxQyxDQUFDO0FBRkQsc0RBRUM7QUFFRCwrQ0FBK0M7QUFDL0MsU0FBZ0IsZUFBZSxDQUFDLE9BQWU7SUFDM0MsT0FBTyxVQUFVLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDOUQsQ0FBQztBQUZELDBDQUVDO0FBQ0QsU0FBZ0IsY0FBYyxDQUFDLE1BQWM7SUFDekMsT0FBTyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFGRCx3Q0FFQztBQUNEOzs7TUFHTTtBQUNOLFNBQWdCLFdBQVcsQ0FBQyxNQUFjO0lBQ3RDLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxPQUFPLGlCQUFpQixDQUFDLE1BQU0sQ0FBRSxDQUFDLE9BQU8sQ0FBQztBQUM5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Q0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWxsRmFjdG9yeSwgY3JlYXRlQ2FsbEZhY3RvcnkgfSBmcm9tIFwiLi9DYWxsRmFjdG9yeVwiO1xuaW1wb3J0IHsgTWF5YmVQcm9taXNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGxhenkgfSBmcm9tIFwiLi9jYWNoaW5nXCI7XG5pbXBvcnQgeyBTb2NrZXRGdW5jdGlvbiB9IGZyb20gXCIuLi9Tb2NrZXRGdW5jdGlvblwiO1xuaW1wb3J0IHsgaXNOb2RlIH0gZnJvbSBcIi4vbWlzY1wiO1xuaW1wb3J0IHsgY3JlYXRlU2luZ2xldG9uIH0gZnJvbSBcIi4vY3JlYXRlU2luZ2xldG9uXCI7XG5cbi8vIFRPRE86IEFkZCBDYWxsSW5zdGFuY2VGYWN0b3J5LmlzQ2xvc2VkLCBzbyBub2RlQ2FjaGUgY2FuIGNsZWFuIHVwIG9sZCBlbnRyaWVzLlxuLy8gIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIG1lbW9yeSBtYW5hZ2VtZW50LCBhbmQgbm90IGZvciBjb3JyZWN0bmVzcy4gRW50cmllcyBuZXZlclxuLy8gIG5lZWQgdG8gYmUgcmVmcmVzaGVkLCBiZWNhdXNlIE5ldHdvcmtMb2NhdGlvbi5saXN0ZW5pbmdQb3J0cyBzaG91bGRuJ3QgcmVhbGx5IGNoYW5nZS5cbi8vICBFaXRoZXIgd2Ugd2lsbCBoYXZlIGxpc3RlbmluZ1BvcnRzIGFuZCByZS1lc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24sIG9yIHdlIHdvbid0LCBhbmRcbi8vICB0aGVuIGl0IGlzIGEgY2xpZW50LCBpbiB3aGljaCBjYXNlIHdlIGNhbm5vdCByZS1lc3RhYmxpc2ggdGhlIGNvbm5lY3Rpb24gKGFuZCB3ZSBqdXN0XG4vLyAgaGF2ZSB0byB3YWl0IGZvciB0aGUgY2xpZW50IHRvIHJlLWVzdGFibGlzaCBpdCkuIEFORCwgaWYgdGhlIGxpc3RlbmluZ1BvcnRzIGNoYW5nZSBmcm9tXG4vLyAgYSB2YWx1ZSB0byBhIG5ldyB2YWx1ZS4uLiB0aGVuIHRoZXkgc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nIGNvbm5lY3QoKSBhbnl3YXksXG4vLyAgYW5kIHNvIHdoYXRldmVyIHdheSB0aGUgdXNlciBnb3QgdGhlIE5ldHdvcmtMb2NhdGlvbiB0byBiZWdpbiB3aXRoLCB0aGV5IHNob3VsZCB1c2UgYWdhaW4uXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb2RlSWQoZG9tYWluOiBzdHJpbmcsIHBvcnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgLy8gTk9URTogQXMgZG9tYWlucyBhcmUgbmV2ZXIgcmV1c2VkLCB0aGlzIGRvZXNuJ3QgbmVlZCBhbnkgcmFuZG9tbmVzc1xuICAgIHJldHVybiBgJHtkb21haW59OiR7cG9ydH1gO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQsIGNhbGwgZ2V0QnJvd3NlclVybE5vZGUgaW5zdGVhZCwgd2hpY2ggZG9lcyBpbXBvcnRhbnQgYWRkaXRpb25hbCBjaGVja3MuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUlkRnJvbUxvY2F0aW9uKCkge1xuICAgIHJldHVybiBTb2NrZXRGdW5jdGlvbi5icm93c2VyTm9kZUlkKCk7XG59XG5cbi8qKiBBIG5vZGVJZCBub3QgYXZhaWxhYmxlIGZvciByZWNvbm5lY3RpbmcuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2xpZW50Tm9kZUlkKGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBjbGllbnQ6JHthZGRyZXNzfToke0RhdGUubm93KCl9OiR7TWF0aC5yYW5kb20oKX1gO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ2xpZW50Tm9kZUlkKG5vZGVJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGVJZC5zdGFydHNXaXRoKFwiY2xpZW50OlwiKTtcbn1cbi8qKiBXaWxsIGFsd2F5cyBiZSBhdmFpbGFibGUsIGV2ZW4gaWYgZ2V0Tm9kZUlkTG9jYXRpb24gaXMgbm90IChhcyB3ZSBkb24ndCBhbHdheXMgaGF2ZSB0aGUgcG9ydCxcbiAqICAgICAgYnV0IHdlIHNob3VsZCBhbHdheXMgaGF2ZSBhbiBhZGRyZXNzKS5cbiAqICAtIFJhcmVseSB1c2VkLCBhcyBmb3IgbG9nZ2luZyB5b3UgY2FuIGp1c3QgbG9nIHRoZSBub2RlSWQuIEFMU08sIGl0IGlzbid0IHN1ZmZpY2llbnQgdG8gcmVjb25uZWN0LCBhcyB0aGUgcG9ydCBpcyBhbHNvIG5lZWRlZCFcbiAqICAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVJZElQKG5vZGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoaXNDbGllbnROb2RlSWQobm9kZUlkKSkge1xuICAgICAgICByZXR1cm4gbm9kZUlkLnNwbGl0KFwiOlwiKVsxXTtcbiAgICB9XG4gICAgcmV0dXJuIGdldE5vZGVJZExvY2F0aW9uKG5vZGVJZCkhLmFkZHJlc3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROb2RlSWRMb2NhdGlvbihub2RlSWQ6IHN0cmluZyk6IHsgYWRkcmVzczogc3RyaW5nLCBwb3J0OiBudW1iZXI7IH0gfCB1bmRlZmluZWQge1xuICAgIGlmIChpc0NsaWVudE5vZGVJZChub2RlSWQpKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBbYWRkcmVzcywgcG9ydF0gPSBub2RlSWQuc3BsaXQoXCI6XCIpO1xuICAgIHJldHVybiB7IGFkZHJlc3MsIHBvcnQ6IHBhcnNlSW50KHBvcnQpIH07XG59XG5cbi8vIE5PVEU6IFRoaXMgcmV0dXJucyB0aGUgZnVsbCBkb21haW4uXG4vLyAgLSBJdCBkaWRuJ3QgdXNlZCB0bywgYnV0IEkgdGhpbmsgaXQgYWxzbyB3YXNuJ3QgdXNlZCBiZWZvcmUsIGFuZCBub3cgd2UncmUgdXNpbmcgdGhpcyB0byBmaW5kIHRoZSBpcC4gXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZUlkRG9tYWluKG5vZGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgcmVzdWx0ID0gZ2V0Tm9kZUlkRG9tYWluTWF5YmVVbmRlZmluZWQobm9kZUlkKTtcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IGRvbWFpbiBmcm9tIG5vZGVJZCwgd2hpY2ggaXMgb25seSB1c2FibGUgYXMgYSBjbGllbnQuIE5vZGVJZDogJHtKU09OLnN0cmluZ2lmeShub2RlSWQpfWApO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldE5vZGVJZERvbWFpbk1heWJlVW5kZWZpbmVkKG5vZGVJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgbG9jYXRpb24gPSBnZXROb2RlSWRMb2NhdGlvbihub2RlSWQpO1xuICAgIGlmICghbG9jYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwoXCJodHRwczovL1wiICsgbG9jYXRpb24uYWRkcmVzcykuaG9zdG5hbWU7XG59XG5cbi8vIE5PVEU6IENhbGxGYWN0b3J5IHR1cm5zIGludG8gYW4gYWN0dWFsIENhbGxGYWN0b3J5IHdoZW4gcmVnaXN0ZXJOb2RlQ2xpZW50IGlzIGNhbGxlZFxuLy8gbm9kZUlkID0+XG4vLyBTaGFyZWQgYWNyb3NzIGNvcGllcyBvZiB0aGlzIHBhY2thZ2UsIHNvIGNvbm5lY3Rpb25zIGVzdGFibGlzaGVkIHRocm91Z2ggb25lIGNvcHkgYXJlIHJldXNlZFxuLy8gIGJ5IHRoZSBvdGhlcnMgKGluc3RlYWQgb2YgZWFjaCBjb3B5IG9wZW5pbmcgaXRzIG93biBkdXBsaWNhdGUgY29ubmVjdGlvbikuIFNlZSBjcmVhdGVTaW5nbGV0b24uXG5jb25zdCBub2RlQ2FjaGUgPSBjcmVhdGVTaW5nbGV0b24oXCJub2RlQ2FjaGVcIiwgMSwgKCkgPT4gbmV3IE1hcDxzdHJpbmcsIE1heWJlUHJvbWlzZTxDYWxsRmFjdG9yeT4+KCkpLmdldCgpO1xuXG4vLyBOT1RFOiBTaG91bGQgYmUgY2FsbGVkIGRpcmVjdGx5IGluc2lkZSBjYWxsIGZhY3RvcnkgY29uc3RydWN0b3Igd2hlbmV2ZXJcbi8vICAgICAgdGhlaXIgbm9kZUlkIGNoYW5nZXMgKGFuZCBvbiBjb25zdHJ1Y3Rpb24pLlxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTm9kZUNsaWVudChjYWxsRmFjdG9yeTogQ2FsbEZhY3RvcnkpIHtcbiAgICBub2RlQ2FjaGUuc2V0KGNhbGxGYWN0b3J5Lm5vZGVJZCwgY2FsbEZhY3RvcnkpO1xuICAgIHN0YXJ0Q2xlYW51cExvb3AoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0ZUNhbGxGYWN0b3J5KG5vZGVJZDogc3RyaW5nKTogTWF5YmVQcm9taXNlPENhbGxGYWN0b3J5PiB7XG4gICAgbGV0IGNhbGxGYWN0b3J5ID0gbm9kZUNhY2hlLmdldChub2RlSWQpO1xuICAgIGlmIChjYWxsRmFjdG9yeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNhbGxGYWN0b3J5ID0gY3JlYXRlQ2FsbEZhY3RvcnkodW5kZWZpbmVkLCBub2RlSWQpO1xuICAgICAgICBub2RlQ2FjaGUuc2V0KG5vZGVJZCwgY2FsbEZhY3RvcnkpO1xuICAgIH1cbiAgICByZXR1cm4gY2FsbEZhY3Rvcnk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsbEZhY3Rvcnkobm9kZUlkOiBzdHJpbmcpOiBNYXliZVByb21pc2U8Q2FsbEZhY3RvcnkgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbm9kZUNhY2hlLmdldChub2RlSWQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVidWdHZXRBbGxDYWxsRmFjdG9yaWVzKCk6IENhbGxGYWN0b3J5W10ge1xuICAgIGxldCByZXN1bHQ6IENhbGxGYWN0b3J5W10gPSBbXTtcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2Ygbm9kZUNhY2hlLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldEFsbE5vZGVDYWxsRmFjdG9yaWVzKCkge1xuICAgIC8vIE5lZWRzIHRvIGJlIGRvbmUgaWYgeW91IHdhbnQgdG8gcmVzZXQgYXV0aGVudGljYXRpb24uIE91dHN0YW5kaW5nIGNhbGxzIHN0aWxsIHdvcmssXG4gICAgLy8gIGJ1dCBuZXcgY2FsbHMgdXNlIG5ldyBmYWN0b3JpZXMgKGFuZCBjb25uZWN0aW9ucykuXG4gICAgbm9kZUNhY2hlLmNsZWFyKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudE9wZW5Db25uZWN0aW9ucygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShub2RlQ2FjaGUudmFsdWVzKCkpLmZpbHRlcihmYWN0b3J5ID0+IGZhY3RvcnkgaW5zdGFuY2VvZiBQcm9taXNlID8gZmFsc2UgOiBmYWN0b3J5LmlzQ29ubmVjdGVkKS5sZW5ndGg7XG59XG5cbmNvbnN0IHN0YXJ0Q2xlYW51cExvb3AgPSBsYXp5KCgpID0+IHtcbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIEFycmF5LmZyb20obm9kZUNhY2hlLmVudHJpZXMoKSkpIHtcbiAgICAgICAgICAgICAgICBsZXQgZmFjdG9yeSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICghKGZhY3RvcnkgaW5zdGFuY2VvZiBQcm9taXNlKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmFjdG9yeS5jbG9zZWRGb3JldmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub2RlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCAqIDYwICogNSkpO1xuICAgICAgICB9XG4gICAgfSkoKS5jYXRjaChlID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgbm9kZUNhY2hlIGNsZWFudXAgbG9vcCBmYWlsZWQsICR7ZS5zdGFja31gKTtcbiAgICB9KTtcbn0pOyJdfQ==
136
+ /* _JS_SOURCE_HASH = "5d2e436f7a090cbdf7f16d6e9494138a7f879d63faa5fbd63b789f74f0dc5c86"; */
@@ -0,0 +1,57 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ //exports.getCallProxy = exports.getCallObj = void 0;
4
+ exports.getCallObj = Symbol.for("getCallObj");
5
+ let proxyCache = new Map();
6
+ function getCallProxy(id, callback) {
7
+ let value = proxyCache.get(id);
8
+ if (!value) {
9
+ let nodeCache = new Map();
10
+ value = new Proxy(Object.create(null), {
11
+ get(target, nodeId) {
12
+ if (typeof nodeId !== "string")
13
+ return undefined;
14
+ let nodeProxy = nodeCache.get(nodeId);
15
+ if (!nodeProxy) {
16
+ nodeProxy = new Proxy(Object.create(null), {
17
+ get(target, functionName) {
18
+ if (typeof functionName !== "string")
19
+ return undefined;
20
+ // Ignore "then" calls, as they happen when awaiting a callProxy (to check if it's
21
+ // a promise), and we don't want to act like a promise (we don't want to call the
22
+ // "then" api call).
23
+ if (functionName === "then")
24
+ return undefined;
25
+ return Object.assign((...args) => {
26
+ let call = {
27
+ classGuid: id,
28
+ nodeId,
29
+ functionName,
30
+ args,
31
+ };
32
+ return callback(call);
33
+ }, {
34
+ [exports.getCallObj]: (...args) => {
35
+ let call = {
36
+ classGuid: id,
37
+ nodeId,
38
+ functionName,
39
+ args,
40
+ };
41
+ return call;
42
+ }
43
+ });
44
+ }
45
+ });
46
+ nodeCache.set(nodeId, nodeProxy);
47
+ }
48
+ return nodeProxy;
49
+ },
50
+ });
51
+ proxyCache.set(id, value);
52
+ }
53
+ return value;
54
+ }
55
+ exports.getCallProxy = getCallProxy;
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZVByb3h5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm9kZVByb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9hLFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7QUFFbkQsSUFBSSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7QUFDbEQsU0FBZ0IsWUFBWSxDQUFDLEVBQVUsRUFBRSxRQUFzRDtJQUMzRixJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULElBQUksU0FBUyxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO1FBQ3JELEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7b0JBQUUsT0FBTyxTQUFTLENBQUM7Z0JBQ2pELElBQUksU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDYixTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTt3QkFDdkMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZOzRCQUNwQixJQUFJLE9BQU8sWUFBWSxLQUFLLFFBQVE7Z0NBQUUsT0FBTyxTQUFTLENBQUM7NEJBQ3ZELGtGQUFrRjs0QkFDbEYsa0ZBQWtGOzRCQUNsRixxQkFBcUI7NEJBQ3JCLElBQUksWUFBWSxLQUFLLE1BQU07Z0NBQUUsT0FBTyxTQUFTLENBQUM7NEJBQzlDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDaEIsQ0FBQyxHQUFHLElBQWUsRUFBRSxFQUFFO2dDQUNuQixJQUFJLElBQUksR0FBaUI7b0NBQ3JCLFNBQVMsRUFBRSxFQUFFO29DQUNiLE1BQU07b0NBQ04sWUFBWTtvQ0FDWixJQUFJO2lDQUNQLENBQUM7Z0NBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQzFCLENBQUMsRUFDRDtnQ0FDSSxDQUFDLGtCQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBZSxFQUFFLEVBQUU7b0NBQ2pDLElBQUksSUFBSSxHQUFpQjt3Q0FDckIsU0FBUyxFQUFFLEVBQUU7d0NBQ2IsTUFBTTt3Q0FDTixZQUFZO3dDQUNaLElBQUk7cUNBQ1AsQ0FBQztvQ0FDRixPQUFPLElBQUksQ0FBQztnQ0FDaEIsQ0FBQzs2QkFDSixDQUNKLENBQUM7d0JBQ04sQ0FBQztxQkFDSixDQUFzQixDQUFDO29CQUN4QixTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDckMsQ0FBQztnQkFDRCxPQUFPLFNBQVMsQ0FBQztZQUNyQixDQUFDO1NBQ0osQ0FBa0IsQ0FBQztRQUNwQixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQWhERCxvQ0FnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYXp5IH0gZnJvbSBcIi4vY2FjaGluZ1wiO1xuaW1wb3J0IHsgRnVsbENhbGxUeXBlLCBTb2NrZXRFeHBvc2VkSW50ZXJmYWNlLCBTb2NrZXRJbnRlcm5hbEludGVyZmFjZSB9IGZyb20gXCIuLi9Tb2NrZXRGdW5jdGlvblR5cGVzXCI7XG5cbnR5cGUgQ2FsbFByb3h5VHlwZSA9IHtcbiAgICBbbm9kZUlkOiBzdHJpbmddOiBTb2NrZXRJbnRlcm5hbEludGVyZmFjZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDYWxsT2JqID0gU3ltYm9sLmZvcihcImdldENhbGxPYmpcIik7XG5cbmxldCBwcm94eUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIENhbGxQcm94eVR5cGU+KCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsbFByb3h5KGlkOiBzdHJpbmcsIGNhbGxiYWNrOiAoY2FsbFR5cGU6IEZ1bGxDYWxsVHlwZSkgPT4gUHJvbWlzZTx1bmtub3duPik6IENhbGxQcm94eVR5cGUge1xuICAgIGxldCB2YWx1ZSA9IHByb3h5Q2FjaGUuZ2V0KGlkKTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIGxldCBub2RlQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FsbFByb3h5VHlwZVtcIlwiXT4oKTtcbiAgICAgICAgdmFsdWUgPSBuZXcgUHJveHkoT2JqZWN0LmNyZWF0ZShudWxsKSwge1xuICAgICAgICAgICAgZ2V0KHRhcmdldCwgbm9kZUlkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBub2RlSWQgIT09IFwic3RyaW5nXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgbGV0IG5vZGVQcm94eSA9IG5vZGVDYWNoZS5nZXQobm9kZUlkKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5vZGVQcm94eSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlUHJveHkgPSBuZXcgUHJveHkoT2JqZWN0LmNyZWF0ZShudWxsKSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jdGlvbk5hbWUgIT09IFwic3RyaW5nXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIFwidGhlblwiIGNhbGxzLCBhcyB0aGV5IGhhcHBlbiB3aGVuIGF3YWl0aW5nIGEgY2FsbFByb3h5ICh0byBjaGVjayBpZiBpdCdzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIGEgcHJvbWlzZSksIGFuZCB3ZSBkb24ndCB3YW50IHRvIGFjdCBsaWtlIGEgcHJvbWlzZSAod2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICBcInRoZW5cIiBhcGkgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZSA9PT0gXCJ0aGVuXCIpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjYWxsOiBGdWxsQ2FsbFR5cGUgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NHdWlkOiBpZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGNhbGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2V0Q2FsbE9ial06ICguLi5hcmdzOiB1bmtub3duW10pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2FsbDogRnVsbENhbGxUeXBlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc0d1aWQ6IGlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSkgYXMgQ2FsbFByb3h5VHlwZVtcIlwiXTtcbiAgICAgICAgICAgICAgICAgICAgbm9kZUNhY2hlLnNldChub2RlSWQsIG5vZGVQcm94eSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlUHJveHk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KSBhcyBDYWxsUHJveHlUeXBlO1xuICAgICAgICBwcm94eUNhY2hlLnNldChpZCwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59Il19
57
+ /* _JS_SOURCE_HASH = "1b9d0bc34f50fed0c63e4f540176e1b8baee57f4c424770acb06b52e4cbe7ead"; */
@@ -0,0 +1,101 @@
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
+ // Negotiates connection-level flags via Sec-WebSocket-Protocol on the WebSocket
3
+ // upgrade handshake. The client proposes every flag combination it accepts (hex-
4
+ // encoded so the value is a valid HTTP token). The server picks the first value
5
+ // whose target nodeId matches its own, then returns it verbatim. If none match,
6
+ // the server returns no protocol and the handshake fails — which is exactly the
7
+ // rejection semantics we want (indistinguishable from "node not reachable").
8
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
9
+ //exports.chooseProtocol = exports.proposeProtocols = exports.decodeProtocol = void 0;
10
+ const PROTOCOL_VERSION = "v1";
11
+ function hexEncode(s) {
12
+ return Buffer.from(s, "utf8").toString("hex");
13
+ }
14
+ function hexDecode(s) {
15
+ return Buffer.from(s, "hex").toString("utf8");
16
+ }
17
+ function encodeFlagBit(b) { return b ? "1" : "0"; }
18
+ // An empty-string target encodes "match any server nodeId" — used for
19
+ // browser clients which don't know our internal nodeId because they're
20
+ // connecting through a Let's Encrypt cert on a public domain.
21
+ const WILDCARD_TARGET = "";
22
+ function encodeOne(target, flags) {
23
+ let plain = `${PROTOCOL_VERSION}|${target}|clz4=${encodeFlagBit(flags.clientLZ4)}|slz4=${encodeFlagBit(flags.serverLZ4)}`;
24
+ return hexEncode(plain);
25
+ }
26
+ function decodeProtocol(hex) {
27
+ if (!/^[0-9a-fA-F]+$/.test(hex))
28
+ return undefined;
29
+ let plain;
30
+ try {
31
+ plain = hexDecode(hex);
32
+ }
33
+ catch (_a) {
34
+ return undefined;
35
+ }
36
+ let parts = plain.split("|");
37
+ if (parts.length < 2)
38
+ return undefined;
39
+ if (parts[0] !== PROTOCOL_VERSION)
40
+ return undefined;
41
+ let target = parts[1];
42
+ let flags = { clientLZ4: false, serverLZ4: false };
43
+ for (let i = 2; i < parts.length; i++) {
44
+ let [k, v] = parts[i].split("=");
45
+ if (k === "clz4")
46
+ flags.clientLZ4 = v === "1";
47
+ else if (k === "slz4")
48
+ flags.serverLZ4 = v === "1";
49
+ }
50
+ return { target, flags };
51
+ }
52
+ exports.decodeProtocol = decodeProtocol;
53
+ // Build the list of subprotocol values the client wants to propose. We enumerate
54
+ // every flag combination the client accepts — the server will pick whichever
55
+ // one it can serve (matching its own flag support). Caller is responsible for
56
+ // not proposing flags it can't handle.
57
+ //
58
+ // `target` is the nodeId the client wants to reach. Pass undefined for browser
59
+ // clients (or any context where the client doesn't know the server's nodeId,
60
+ // because it's reaching the server through a public DNS name + Let's Encrypt
61
+ // cert). The server then accepts the connection regardless of its identity,
62
+ // while still negotiating flags.
63
+ function proposeProtocols(target, clientCapabilities) {
64
+ let out = [];
65
+ let clientLZ4Options = clientCapabilities.lz4 ? [true, false] : [false];
66
+ let serverLZ4Options = [true, false];
67
+ let encodedTarget = target !== null && target !== void 0 ? target : WILDCARD_TARGET;
68
+ for (let clientLZ4 of clientLZ4Options) {
69
+ for (let serverLZ4 of serverLZ4Options) {
70
+ out.push(encodeOne(encodedTarget, { clientLZ4, serverLZ4 }));
71
+ }
72
+ }
73
+ return out;
74
+ }
75
+ exports.proposeProtocols = proposeProtocols;
76
+ // Server-side: given the proposed (hex-encoded) subprotocol values from the
77
+ // client, the server's own nodeId, and the server's capabilities — pick the
78
+ // first value matching this server with a flag combo we can support. Returns
79
+ // the chosen hex string verbatim (so the server echoes it back), or undefined
80
+ // to signal no match → reject the handshake.
81
+ //
82
+ // A proposal with target === WILDCARD_TARGET ("") matches any server (used
83
+ // by browsers that don't know our internal nodeId).
84
+ function chooseProtocol(proposed, serverNodeId, serverCapabilities) {
85
+ for (let hex of proposed) {
86
+ let decoded = decodeProtocol(hex);
87
+ if (!decoded)
88
+ continue;
89
+ if (decoded.target !== WILDCARD_TARGET && decoded.target !== serverNodeId)
90
+ continue;
91
+ // Server capability check: if the proposal asks the server to receive
92
+ // LZ4 (slz4=1) but the server doesn't support it, skip.
93
+ if (decoded.flags.serverLZ4 && !serverCapabilities.lz4)
94
+ continue;
95
+ return hex;
96
+ }
97
+ return undefined;
98
+ }
99
+ exports.chooseProtocol = chooseProtocol;
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2xOZWdvdGlhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByb3RvY29sTmVnb3RpYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBQ2hGLGdGQUFnRjtBQUNoRixnRkFBZ0Y7QUFDaEYsNkVBQTZFOzs7QUFFN0UsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFjOUIsU0FBUyxTQUFTLENBQUMsQ0FBUztJQUN4QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBQ0QsU0FBUyxTQUFTLENBQUMsQ0FBUztJQUN4QixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsQ0FBVSxJQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFcEUsc0VBQXNFO0FBQ3RFLHVFQUF1RTtBQUN2RSw4REFBOEQ7QUFDOUQsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBRTNCLFNBQVMsU0FBUyxDQUFDLE1BQWMsRUFBRSxLQUFzQjtJQUNyRCxJQUFJLEtBQUssR0FBRyxHQUFHLGdCQUFnQixJQUFJLE1BQU0sU0FBUyxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLGFBQWEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUMxSCxPQUFPLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQVc7SUFDdEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUNsRCxJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLENBQUM7UUFDRCxLQUFLLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFBQyxXQUFNLENBQUM7UUFDTCxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3ZDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLGdCQUFnQjtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ3BELElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixJQUFJLEtBQUssR0FBb0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNwRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxNQUFNO1lBQUUsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDO2FBQ3pDLElBQUksQ0FBQyxLQUFLLE1BQU07WUFBRSxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUM7SUFDdkQsQ0FBQztJQUNELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDN0IsQ0FBQztBQW5CRCx3Q0FtQkM7QUFFRCxpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDhFQUE4RTtBQUM5RSx1Q0FBdUM7QUFDdkMsRUFBRTtBQUNGLCtFQUErRTtBQUMvRSw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSxpQ0FBaUM7QUFDakMsU0FBZ0IsZ0JBQWdCLENBQUMsTUFBMEIsRUFBRSxrQkFBb0M7SUFDN0YsSUFBSSxHQUFHLEdBQWEsRUFBRSxDQUFDO0lBQ3ZCLElBQUksZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxJQUFJLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLElBQUksYUFBYSxHQUFHLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQztJQUM5QyxLQUFLLElBQUksU0FBUyxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDckMsS0FBSyxJQUFJLFNBQVMsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFYRCw0Q0FXQztBQUVELDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUsNkVBQTZFO0FBQzdFLDhFQUE4RTtBQUM5RSw2Q0FBNkM7QUFDN0MsRUFBRTtBQUNGLDJFQUEyRTtBQUMzRSxvREFBb0Q7QUFDcEQsU0FBZ0IsY0FBYyxDQUMxQixRQUFrQixFQUNsQixZQUFvQixFQUNwQixrQkFBb0M7SUFFcEMsS0FBSyxJQUFJLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUN2QixJQUFJLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU87WUFBRSxTQUFTO1FBQ3ZCLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxlQUFlLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxZQUFZO1lBQUUsU0FBUztRQUNwRixzRUFBc0U7UUFDdEUsd0RBQXdEO1FBQ3hELElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHO1lBQUUsU0FBUztRQUNqRSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBZkQsd0NBZUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBOZWdvdGlhdGVzIGNvbm5lY3Rpb24tbGV2ZWwgZmxhZ3MgdmlhIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgb24gdGhlIFdlYlNvY2tldFxuLy8gdXBncmFkZSBoYW5kc2hha2UuIFRoZSBjbGllbnQgcHJvcG9zZXMgZXZlcnkgZmxhZyBjb21iaW5hdGlvbiBpdCBhY2NlcHRzIChoZXgtXG4vLyBlbmNvZGVkIHNvIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIEhUVFAgdG9rZW4pLiBUaGUgc2VydmVyIHBpY2tzIHRoZSBmaXJzdCB2YWx1ZVxuLy8gd2hvc2UgdGFyZ2V0IG5vZGVJZCBtYXRjaGVzIGl0cyBvd24sIHRoZW4gcmV0dXJucyBpdCB2ZXJiYXRpbS4gSWYgbm9uZSBtYXRjaCxcbi8vIHRoZSBzZXJ2ZXIgcmV0dXJucyBubyBwcm90b2NvbCBhbmQgdGhlIGhhbmRzaGFrZSBmYWlscyDigJQgd2hpY2ggaXMgZXhhY3RseSB0aGVcbi8vIHJlamVjdGlvbiBzZW1hbnRpY3Mgd2Ugd2FudCAoaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBcIm5vZGUgbm90IHJlYWNoYWJsZVwiKS5cblxuY29uc3QgUFJPVE9DT0xfVkVSU0lPTiA9IFwidjFcIjtcblxuZXhwb3J0IHR5cGUgQ29ubmVjdGlvbkZsYWdzID0ge1xuICAgIC8vIENsaWVudCBzdXBwb3J0cyByZWNlaXZpbmcgTFo0LWNvbXByZXNzZWQgZnJhbWVzXG4gICAgY2xpZW50TFo0OiBib29sZWFuO1xuICAgIC8vIFNlcnZlciBzdXBwb3J0cyByZWNlaXZpbmcgTFo0LWNvbXByZXNzZWQgZnJhbWVzIChpLmUuIHNlcnZlciBjYW4gYWNjZXB0IExaNClcbiAgICBzZXJ2ZXJMWjQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBEZWNvZGVkUHJvdG9jb2wgPSB7XG4gICAgdGFyZ2V0OiBzdHJpbmc7XG4gICAgZmxhZ3M6IENvbm5lY3Rpb25GbGFncztcbn07XG5cbmZ1bmN0aW9uIGhleEVuY29kZShzOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzLCBcInV0ZjhcIikudG9TdHJpbmcoXCJoZXhcIik7XG59XG5mdW5jdGlvbiBoZXhEZWNvZGUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocywgXCJoZXhcIikudG9TdHJpbmcoXCJ1dGY4XCIpO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVGbGFnQml0KGI6IGJvb2xlYW4pOiBzdHJpbmcgeyByZXR1cm4gYiA/IFwiMVwiIDogXCIwXCI7IH1cblxuLy8gQW4gZW1wdHktc3RyaW5nIHRhcmdldCBlbmNvZGVzIFwibWF0Y2ggYW55IHNlcnZlciBub2RlSWRcIiDigJQgdXNlZCBmb3Jcbi8vIGJyb3dzZXIgY2xpZW50cyB3aGljaCBkb24ndCBrbm93IG91ciBpbnRlcm5hbCBub2RlSWQgYmVjYXVzZSB0aGV5J3JlXG4vLyBjb25uZWN0aW5nIHRocm91Z2ggYSBMZXQncyBFbmNyeXB0IGNlcnQgb24gYSBwdWJsaWMgZG9tYWluLlxuY29uc3QgV0lMRENBUkRfVEFSR0VUID0gXCJcIjtcblxuZnVuY3Rpb24gZW5jb2RlT25lKHRhcmdldDogc3RyaW5nLCBmbGFnczogQ29ubmVjdGlvbkZsYWdzKTogc3RyaW5nIHtcbiAgICBsZXQgcGxhaW4gPSBgJHtQUk9UT0NPTF9WRVJTSU9OfXwke3RhcmdldH18Y2x6ND0ke2VuY29kZUZsYWdCaXQoZmxhZ3MuY2xpZW50TFo0KX18c2x6ND0ke2VuY29kZUZsYWdCaXQoZmxhZ3Muc2VydmVyTFo0KX1gO1xuICAgIHJldHVybiBoZXhFbmNvZGUocGxhaW4pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlUHJvdG9jb2woaGV4OiBzdHJpbmcpOiBEZWNvZGVkUHJvdG9jb2wgfCB1bmRlZmluZWQge1xuICAgIGlmICghL15bMC05YS1mQS1GXSskLy50ZXN0KGhleCkpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgbGV0IHBsYWluOiBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgICAgcGxhaW4gPSBoZXhEZWNvZGUoaGV4KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgbGV0IHBhcnRzID0gcGxhaW4uc3BsaXQoXCJ8XCIpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJ0c1swXSAhPT0gUFJPVE9DT0xfVkVSU0lPTikgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBsZXQgdGFyZ2V0ID0gcGFydHNbMV07XG4gICAgbGV0IGZsYWdzOiBDb25uZWN0aW9uRmxhZ3MgPSB7IGNsaWVudExaNDogZmFsc2UsIHNlcnZlckxaNDogZmFsc2UgfTtcbiAgICBmb3IgKGxldCBpID0gMjsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBbaywgdl0gPSBwYXJ0c1tpXS5zcGxpdChcIj1cIik7XG4gICAgICAgIGlmIChrID09PSBcImNsejRcIikgZmxhZ3MuY2xpZW50TFo0ID0gdiA9PT0gXCIxXCI7XG4gICAgICAgIGVsc2UgaWYgKGsgPT09IFwic2x6NFwiKSBmbGFncy5zZXJ2ZXJMWjQgPSB2ID09PSBcIjFcIjtcbiAgICB9XG4gICAgcmV0dXJuIHsgdGFyZ2V0LCBmbGFncyB9O1xufVxuXG4vLyBCdWlsZCB0aGUgbGlzdCBvZiBzdWJwcm90b2NvbCB2YWx1ZXMgdGhlIGNsaWVudCB3YW50cyB0byBwcm9wb3NlLiBXZSBlbnVtZXJhdGVcbi8vIGV2ZXJ5IGZsYWcgY29tYmluYXRpb24gdGhlIGNsaWVudCBhY2NlcHRzIOKAlCB0aGUgc2VydmVyIHdpbGwgcGljayB3aGljaGV2ZXJcbi8vIG9uZSBpdCBjYW4gc2VydmUgKG1hdGNoaW5nIGl0cyBvd24gZmxhZyBzdXBwb3J0KS4gQ2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvclxuLy8gbm90IHByb3Bvc2luZyBmbGFncyBpdCBjYW4ndCBoYW5kbGUuXG4vL1xuLy8gYHRhcmdldGAgaXMgdGhlIG5vZGVJZCB0aGUgY2xpZW50IHdhbnRzIHRvIHJlYWNoLiBQYXNzIHVuZGVmaW5lZCBmb3IgYnJvd3NlclxuLy8gY2xpZW50cyAob3IgYW55IGNvbnRleHQgd2hlcmUgdGhlIGNsaWVudCBkb2Vzbid0IGtub3cgdGhlIHNlcnZlcidzIG5vZGVJZCxcbi8vIGJlY2F1c2UgaXQncyByZWFjaGluZyB0aGUgc2VydmVyIHRocm91Z2ggYSBwdWJsaWMgRE5TIG5hbWUgKyBMZXQncyBFbmNyeXB0XG4vLyBjZXJ0KS4gVGhlIHNlcnZlciB0aGVuIGFjY2VwdHMgdGhlIGNvbm5lY3Rpb24gcmVnYXJkbGVzcyBvZiBpdHMgaWRlbnRpdHksXG4vLyB3aGlsZSBzdGlsbCBuZWdvdGlhdGluZyBmbGFncy5cbmV4cG9ydCBmdW5jdGlvbiBwcm9wb3NlUHJvdG9jb2xzKHRhcmdldDogc3RyaW5nIHwgdW5kZWZpbmVkLCBjbGllbnRDYXBhYmlsaXRpZXM6IHsgbHo0OiBib29sZWFuIH0pOiBzdHJpbmdbXSB7XG4gICAgbGV0IG91dDogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY2xpZW50TFo0T3B0aW9ucyA9IGNsaWVudENhcGFiaWxpdGllcy5sejQgPyBbdHJ1ZSwgZmFsc2VdIDogW2ZhbHNlXTtcbiAgICBsZXQgc2VydmVyTFo0T3B0aW9ucyA9IFt0cnVlLCBmYWxzZV07XG4gICAgbGV0IGVuY29kZWRUYXJnZXQgPSB0YXJnZXQgPz8gV0lMRENBUkRfVEFSR0VUO1xuICAgIGZvciAobGV0IGNsaWVudExaNCBvZiBjbGllbnRMWjRPcHRpb25zKSB7XG4gICAgICAgIGZvciAobGV0IHNlcnZlckxaNCBvZiBzZXJ2ZXJMWjRPcHRpb25zKSB7XG4gICAgICAgICAgICBvdXQucHVzaChlbmNvZGVPbmUoZW5jb2RlZFRhcmdldCwgeyBjbGllbnRMWjQsIHNlcnZlckxaNCB9KSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbn1cblxuLy8gU2VydmVyLXNpZGU6IGdpdmVuIHRoZSBwcm9wb3NlZCAoaGV4LWVuY29kZWQpIHN1YnByb3RvY29sIHZhbHVlcyBmcm9tIHRoZVxuLy8gY2xpZW50LCB0aGUgc2VydmVyJ3Mgb3duIG5vZGVJZCwgYW5kIHRoZSBzZXJ2ZXIncyBjYXBhYmlsaXRpZXMg4oCUIHBpY2sgdGhlXG4vLyBmaXJzdCB2YWx1ZSBtYXRjaGluZyB0aGlzIHNlcnZlciB3aXRoIGEgZmxhZyBjb21ibyB3ZSBjYW4gc3VwcG9ydC4gUmV0dXJuc1xuLy8gdGhlIGNob3NlbiBoZXggc3RyaW5nIHZlcmJhdGltIChzbyB0aGUgc2VydmVyIGVjaG9lcyBpdCBiYWNrKSwgb3IgdW5kZWZpbmVkXG4vLyB0byBzaWduYWwgbm8gbWF0Y2gg4oaSIHJlamVjdCB0aGUgaGFuZHNoYWtlLlxuLy9cbi8vIEEgcHJvcG9zYWwgd2l0aCB0YXJnZXQgPT09IFdJTERDQVJEX1RBUkdFVCAoXCJcIikgbWF0Y2hlcyBhbnkgc2VydmVyICh1c2VkXG4vLyBieSBicm93c2VycyB0aGF0IGRvbid0IGtub3cgb3VyIGludGVybmFsIG5vZGVJZCkuXG5leHBvcnQgZnVuY3Rpb24gY2hvb3NlUHJvdG9jb2woXG4gICAgcHJvcG9zZWQ6IHN0cmluZ1tdLFxuICAgIHNlcnZlck5vZGVJZDogc3RyaW5nLFxuICAgIHNlcnZlckNhcGFiaWxpdGllczogeyBsejQ6IGJvb2xlYW4gfVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBmb3IgKGxldCBoZXggb2YgcHJvcG9zZWQpIHtcbiAgICAgICAgbGV0IGRlY29kZWQgPSBkZWNvZGVQcm90b2NvbChoZXgpO1xuICAgICAgICBpZiAoIWRlY29kZWQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoZGVjb2RlZC50YXJnZXQgIT09IFdJTERDQVJEX1RBUkdFVCAmJiBkZWNvZGVkLnRhcmdldCAhPT0gc2VydmVyTm9kZUlkKSBjb250aW51ZTtcbiAgICAgICAgLy8gU2VydmVyIGNhcGFiaWxpdHkgY2hlY2s6IGlmIHRoZSBwcm9wb3NhbCBhc2tzIHRoZSBzZXJ2ZXIgdG8gcmVjZWl2ZVxuICAgICAgICAvLyBMWjQgKHNsejQ9MSkgYnV0IHRoZSBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IGl0LCBza2lwLlxuICAgICAgICBpZiAoZGVjb2RlZC5mbGFncy5zZXJ2ZXJMWjQgJiYgIXNlcnZlckNhcGFiaWxpdGllcy5sejQpIGNvbnRpbnVlO1xuICAgICAgICByZXR1cm4gaGV4O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuIl19
101
+ /* _JS_SOURCE_HASH = "148a717dbc4ad826e2af1e42050c7cef4014c49eba4584cc3b7400e8bd1fb760"; */
@@ -0,0 +1,85 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ //exports.parseSNIExtension = exports.SNIType = exports.parseTLSHello = void 0;
4
+ function parseTLSHello(buffer) {
5
+ let output = {
6
+ extensions: [],
7
+ missingBytes: 0
8
+ };
9
+ try {
10
+ let pos = 0;
11
+ function readShort() {
12
+ let high = buffer[pos++];
13
+ let low = buffer[pos++];
14
+ return high * 256 + low;
15
+ }
16
+ let type = buffer[pos++];
17
+ let version = readShort();
18
+ var contentLength = readShort();
19
+ let clientMessageType = buffer[pos++];
20
+ // High length byte (how would this be used if contentLength is only 2 bytes?)
21
+ pos++;
22
+ let clientMessageLength = readShort();
23
+ // Client version
24
+ let clientVersion = readShort();
25
+ // Client random
26
+ pos += 32;
27
+ // Session id
28
+ let sessionIdLength = buffer[pos++];
29
+ pos += sessionIdLength;
30
+ let cipherSuiteLength = readShort();
31
+ pos += cipherSuiteLength;
32
+ let compressionLength = buffer[pos++];
33
+ pos += compressionLength;
34
+ let extensionsLength = readShort();
35
+ let extensionsEnd = pos + extensionsLength;
36
+ while (pos < extensionsEnd) {
37
+ let extensionType = readShort();
38
+ let length = readShort();
39
+ // Break if we only have part of the extension
40
+ if (Number.isNaN(extensionType) || Number.isNaN(length)) {
41
+ break;
42
+ }
43
+ if (pos + length > buffer.length) {
44
+ break;
45
+ }
46
+ output.extensions.push({
47
+ type: extensionType, data: viewSliceBuffer(buffer, pos, length)
48
+ });
49
+ pos += length;
50
+ }
51
+ output.missingBytes = contentLength - pos;
52
+ }
53
+ catch (_a) { }
54
+ return output;
55
+ }
56
+ exports.parseTLSHello = parseTLSHello;
57
+ exports.SNIType = 0x0;
58
+ function parseSNIExtension(data) {
59
+ let pos = 0;
60
+ function readShort() {
61
+ let high = data[pos++];
62
+ let low = data[pos++];
63
+ return high * 256 + low;
64
+ }
65
+ let snis = [];
66
+ try {
67
+ while (pos < data.length) {
68
+ let len = readShort();
69
+ let end = pos + len;
70
+ let type = data[pos++];
71
+ let len2 = readShort();
72
+ snis.push(viewSliceBuffer(data, pos, len2).toString());
73
+ pos = end;
74
+ }
75
+ }
76
+ catch (_a) { }
77
+ return snis;
78
+ }
79
+ exports.parseSNIExtension = parseSNIExtension;
80
+ function viewSliceBuffer(data, index, count) {
81
+ count = count !== null && count !== void 0 ? count : (data.length - index);
82
+ return Buffer.from(data.buffer, data.byteOffset + index, count);
83
+ }
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxzUGFyc2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRsc1BhcnNpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsYUFBYSxDQUFDLE1BQWM7SUFPeEMsSUFBSSxNQUFNLEdBTU47UUFDQSxVQUFVLEVBQUUsRUFBRTtRQUNkLFlBQVksRUFBRSxDQUFDO0tBQ2xCLENBQUM7SUFFRixJQUFJLENBQUM7UUFDRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFFWixTQUFTLFNBQVM7WUFDZCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN6QixJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUN4QixPQUFPLElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN6QixJQUFJLE9BQU8sR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUUxQixJQUFJLGFBQWEsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUVoQyxJQUFJLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLDhFQUE4RTtRQUM5RSxHQUFHLEVBQUUsQ0FBQztRQUNOLElBQUksbUJBQW1CLEdBQUcsU0FBUyxFQUFFLENBQUM7UUFFdEMsaUJBQWlCO1FBQ2pCLElBQUksYUFBYSxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBRWhDLGdCQUFnQjtRQUNoQixHQUFHLElBQUksRUFBRSxDQUFDO1FBRVYsYUFBYTtRQUNiLElBQUksZUFBZSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsSUFBSSxlQUFlLENBQUM7UUFFdkIsSUFBSSxpQkFBaUIsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUNwQyxHQUFHLElBQUksaUJBQWlCLENBQUM7UUFFekIsSUFBSSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUN0QyxHQUFHLElBQUksaUJBQWlCLENBQUM7UUFFekIsSUFBSSxnQkFBZ0IsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxJQUFJLGFBQWEsR0FBRyxHQUFHLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0MsT0FBTyxHQUFHLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFDekIsSUFBSSxhQUFhLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7WUFDekIsOENBQThDO1lBQzlDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELE1BQU07WUFDVixDQUFDO1lBQ0QsSUFBSSxHQUFHLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtZQUNWLENBQUM7WUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFDbkIsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO2FBQ2xFLENBQUMsQ0FBQztZQUVILEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDbEIsQ0FBQztRQUNELE1BQU0sQ0FBQyxZQUFZLEdBQUcsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUM5QyxDQUFDO0lBQUMsV0FBTSxDQUFDLENBQUMsQ0FBQztJQUVYLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUE1RUQsc0NBNEVDO0FBRVksUUFBQSxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQzNCLFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDMUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ1osU0FBUyxTQUFTO1FBQ2QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdEIsT0FBTyxJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxJQUFJLEdBQWEsRUFBRSxDQUFDO0lBRXhCLElBQUksQ0FBQztRQUNELE9BQU8sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN2QixJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUN0QixJQUFJLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ3BCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksSUFBSSxHQUFHLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztZQUN2RCxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2QsQ0FBQztJQUNMLENBQUM7SUFBQyxXQUFNLENBQUMsQ0FBQyxDQUFDO0lBRVgsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQXRCRCw4Q0FzQkM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLEtBQWM7SUFDaEUsS0FBSyxHQUFHLEtBQUssYUFBTCxLQUFLLGNBQUwsS0FBSyxHQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN2QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVExTSGVsbG8oYnVmZmVyOiBCdWZmZXIpOiB7XG4gICAgZXh0ZW5zaW9uczoge1xuICAgICAgICB0eXBlOiBudW1iZXI7XG4gICAgICAgIGRhdGE6IEJ1ZmZlcjtcbiAgICB9W107XG4gICAgbWlzc2luZ0J5dGVzOiBudW1iZXI7XG59IHtcbiAgICBsZXQgb3V0cHV0OiB7XG4gICAgICAgIGV4dGVuc2lvbnM6IHtcbiAgICAgICAgICAgIHR5cGU6IG51bWJlcjtcbiAgICAgICAgICAgIGRhdGE6IEJ1ZmZlcjtcbiAgICAgICAgfVtdO1xuICAgICAgICBtaXNzaW5nQnl0ZXM6IG51bWJlcjtcbiAgICB9ID0ge1xuICAgICAgICBleHRlbnNpb25zOiBbXSxcbiAgICAgICAgbWlzc2luZ0J5dGVzOiAwXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICAgIGxldCBwb3MgPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRTaG9ydCgpIHtcbiAgICAgICAgICAgIGxldCBoaWdoID0gYnVmZmVyW3BvcysrXTtcbiAgICAgICAgICAgIGxldCBsb3cgPSBidWZmZXJbcG9zKytdO1xuICAgICAgICAgICAgcmV0dXJuIGhpZ2ggKiAyNTYgKyBsb3c7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdHlwZSA9IGJ1ZmZlcltwb3MrK107XG4gICAgICAgIGxldCB2ZXJzaW9uID0gcmVhZFNob3J0KCk7XG5cbiAgICAgICAgdmFyIGNvbnRlbnRMZW5ndGggPSByZWFkU2hvcnQoKTtcblxuICAgICAgICBsZXQgY2xpZW50TWVzc2FnZVR5cGUgPSBidWZmZXJbcG9zKytdO1xuICAgICAgICAvLyBIaWdoIGxlbmd0aCBieXRlIChob3cgd291bGQgdGhpcyBiZSB1c2VkIGlmIGNvbnRlbnRMZW5ndGggaXMgb25seSAyIGJ5dGVzPylcbiAgICAgICAgcG9zKys7XG4gICAgICAgIGxldCBjbGllbnRNZXNzYWdlTGVuZ3RoID0gcmVhZFNob3J0KCk7XG5cbiAgICAgICAgLy8gQ2xpZW50IHZlcnNpb25cbiAgICAgICAgbGV0IGNsaWVudFZlcnNpb24gPSByZWFkU2hvcnQoKTtcblxuICAgICAgICAvLyBDbGllbnQgcmFuZG9tXG4gICAgICAgIHBvcyArPSAzMjtcblxuICAgICAgICAvLyBTZXNzaW9uIGlkXG4gICAgICAgIGxldCBzZXNzaW9uSWRMZW5ndGggPSBidWZmZXJbcG9zKytdO1xuICAgICAgICBwb3MgKz0gc2Vzc2lvbklkTGVuZ3RoO1xuXG4gICAgICAgIGxldCBjaXBoZXJTdWl0ZUxlbmd0aCA9IHJlYWRTaG9ydCgpO1xuICAgICAgICBwb3MgKz0gY2lwaGVyU3VpdGVMZW5ndGg7XG5cbiAgICAgICAgbGV0IGNvbXByZXNzaW9uTGVuZ3RoID0gYnVmZmVyW3BvcysrXTtcbiAgICAgICAgcG9zICs9IGNvbXByZXNzaW9uTGVuZ3RoO1xuXG4gICAgICAgIGxldCBleHRlbnNpb25zTGVuZ3RoID0gcmVhZFNob3J0KCk7XG4gICAgICAgIGxldCBleHRlbnNpb25zRW5kID0gcG9zICsgZXh0ZW5zaW9uc0xlbmd0aDtcbiAgICAgICAgd2hpbGUgKHBvcyA8IGV4dGVuc2lvbnNFbmQpIHtcbiAgICAgICAgICAgIGxldCBleHRlbnNpb25UeXBlID0gcmVhZFNob3J0KCk7XG4gICAgICAgICAgICBsZXQgbGVuZ3RoID0gcmVhZFNob3J0KCk7XG4gICAgICAgICAgICAvLyBCcmVhayBpZiB3ZSBvbmx5IGhhdmUgcGFydCBvZiB0aGUgZXh0ZW5zaW9uXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGV4dGVuc2lvblR5cGUpIHx8IE51bWJlci5pc05hTihsZW5ndGgpKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocG9zICsgbGVuZ3RoID4gYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBvdXRwdXQuZXh0ZW5zaW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBleHRlbnNpb25UeXBlLCBkYXRhOiB2aWV3U2xpY2VCdWZmZXIoYnVmZmVyLCBwb3MsIGxlbmd0aClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBwb3MgKz0gbGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIG91dHB1dC5taXNzaW5nQnl0ZXMgPSBjb250ZW50TGVuZ3RoIC0gcG9zO1xuICAgIH0gY2F0Y2ggeyB9XG5cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgY29uc3QgU05JVHlwZSA9IDB4MDtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNOSUV4dGVuc2lvbihkYXRhOiBCdWZmZXIpOiBzdHJpbmdbXSB7XG4gICAgbGV0IHBvcyA9IDA7XG4gICAgZnVuY3Rpb24gcmVhZFNob3J0KCkge1xuICAgICAgICBsZXQgaGlnaCA9IGRhdGFbcG9zKytdO1xuICAgICAgICBsZXQgbG93ID0gZGF0YVtwb3MrK107XG4gICAgICAgIHJldHVybiBoaWdoICogMjU2ICsgbG93O1xuICAgIH1cblxuICAgIGxldCBzbmlzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKHBvcyA8IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgICAgICBsZXQgbGVuID0gcmVhZFNob3J0KCk7XG4gICAgICAgICAgICBsZXQgZW5kID0gcG9zICsgbGVuO1xuICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhW3BvcysrXTtcbiAgICAgICAgICAgIGxldCBsZW4yID0gcmVhZFNob3J0KCk7XG4gICAgICAgICAgICBzbmlzLnB1c2godmlld1NsaWNlQnVmZmVyKGRhdGEsIHBvcywgbGVuMikudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICBwb3MgPSBlbmQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIHsgfVxuXG4gICAgcmV0dXJuIHNuaXM7XG59XG5cbmZ1bmN0aW9uIHZpZXdTbGljZUJ1ZmZlcihkYXRhOiBCdWZmZXIsIGluZGV4OiBudW1iZXIsIGNvdW50PzogbnVtYmVyKSB7XG4gICAgY291bnQgPSBjb3VudCA/PyAoZGF0YS5sZW5ndGggLSBpbmRleCk7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKGRhdGEuYnVmZmVyLCBkYXRhLmJ5dGVPZmZzZXQgKyBpbmRleCwgY291bnQpO1xufSJdfQ==
85
+ /* _JS_SOURCE_HASH = "ce4d35d8f15f2d3a95b795d55d30f85321b7c72a9d8180605338b339f4c54443"; */
@@ -0,0 +1,9 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
3
+ //exports.canHaveChildren = void 0;
4
+ function canHaveChildren(value) {
5
+ return typeof value === "object" && value !== null || typeof value === "function";
6
+ }
7
+ exports.canHaveChildren = canHaveChildren;
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxTQUFnQixlQUFlLENBQUMsS0FBYztJQUMxQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUN0RixDQUFDO0FBRkQsMENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBNYXliZVByb21pc2U8VD4gPSBUIHwgUHJvbWlzZTxUPjtcblxuZXhwb3J0IHR5cGUgQXJnczxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgVikgPT4gYW55ID8gViA6IG5ldmVyO1xuXG5leHBvcnQgdHlwZSBBbnlGdW5jdGlvbiA9ICguLi5hcmdzOiBhbnkpID0+IGFueTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbkhhdmVDaGlsZHJlbih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHsgW2tleSBpbiBQcm9wZXJ0eUtleV06IHVua25vd24gfSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn0iXX0=
9
+ /* _JS_SOURCE_HASH = "e4a11e3ad260c988d5f2bf31710ef89454fe4cebf4787ff056ddfcf601114cd9"; */