itwillsync 1.9.0 → 1.9.2

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.
@@ -32,9 +32,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
32
32
  mod
33
33
  ));
34
34
 
35
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js
35
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/constants.js
36
36
  var require_constants = __commonJS({
37
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/constants.js"(exports, module) {
37
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/constants.js"(exports, module) {
38
38
  "use strict";
39
39
  var BINARY_TYPES = ["nodebuffer", "arraybuffer", "fragments"];
40
40
  var hasBlob = typeof Blob !== "undefined";
@@ -55,9 +55,9 @@ var require_constants = __commonJS({
55
55
  }
56
56
  });
57
57
 
58
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js
58
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/buffer-util.js
59
59
  var require_buffer_util = __commonJS({
60
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/buffer-util.js"(exports, module) {
60
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/buffer-util.js"(exports, module) {
61
61
  "use strict";
62
62
  var { EMPTY_BUFFER } = require_constants();
63
63
  var FastBuffer = Buffer[Symbol.species];
@@ -130,9 +130,9 @@ var require_buffer_util = __commonJS({
130
130
  }
131
131
  });
132
132
 
133
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js
133
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/limiter.js
134
134
  var require_limiter = __commonJS({
135
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/limiter.js"(exports, module) {
135
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/limiter.js"(exports, module) {
136
136
  "use strict";
137
137
  var kDone = /* @__PURE__ */ Symbol("kDone");
138
138
  var kRun = /* @__PURE__ */ Symbol("kRun");
@@ -180,9 +180,9 @@ var require_limiter = __commonJS({
180
180
  }
181
181
  });
182
182
 
183
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js
183
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/permessage-deflate.js
184
184
  var require_permessage_deflate = __commonJS({
185
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/permessage-deflate.js"(exports, module) {
185
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/permessage-deflate.js"(exports, module) {
186
186
  "use strict";
187
187
  var zlib = __require("zlib");
188
188
  var bufferUtil = require_buffer_util();
@@ -196,7 +196,7 @@ var require_permessage_deflate = __commonJS({
196
196
  var kBuffers = /* @__PURE__ */ Symbol("buffers");
197
197
  var kError = /* @__PURE__ */ Symbol("error");
198
198
  var zlibLimiter;
199
- var PerMessageDeflate = class {
199
+ var PerMessageDeflate2 = class {
200
200
  /**
201
201
  * Creates a PerMessageDeflate instance.
202
202
  *
@@ -207,6 +207,9 @@ var require_permessage_deflate = __commonJS({
207
207
  * acknowledge disabling of client context takeover
208
208
  * @param {Number} [options.concurrencyLimit=10] The number of concurrent
209
209
  * calls to zlib
210
+ * @param {Boolean} [options.isServer=false] Create the instance in either
211
+ * server or client mode
212
+ * @param {Number} [options.maxPayload=0] The maximum allowed message length
210
213
  * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the
211
214
  * use of a custom server window size
212
215
  * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept
@@ -217,15 +220,12 @@ var require_permessage_deflate = __commonJS({
217
220
  * deflate
218
221
  * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on
219
222
  * inflate
220
- * @param {Boolean} [isServer=false] Create the instance in either server or
221
- * client mode
222
- * @param {Number} [maxPayload=0] The maximum allowed message length
223
223
  */
224
- constructor(options, isServer, maxPayload) {
225
- this._maxPayload = maxPayload | 0;
224
+ constructor(options) {
226
225
  this._options = options || {};
227
226
  this._threshold = this._options.threshold !== void 0 ? this._options.threshold : 1024;
228
- this._isServer = !!isServer;
227
+ this._maxPayload = this._options.maxPayload | 0;
228
+ this._isServer = !!this._options.isServer;
229
229
  this._deflate = null;
230
230
  this._inflate = null;
231
231
  this.params = null;
@@ -534,7 +534,7 @@ var require_permessage_deflate = __commonJS({
534
534
  });
535
535
  }
536
536
  };
537
- module.exports = PerMessageDeflate;
537
+ module.exports = PerMessageDeflate2;
538
538
  function deflateOnData(chunk) {
539
539
  this[kBuffers].push(chunk);
540
540
  this[kTotalLength] += chunk.length;
@@ -563,9 +563,9 @@ var require_permessage_deflate = __commonJS({
563
563
  }
564
564
  });
565
565
 
566
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js
566
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/validation.js
567
567
  var require_validation = __commonJS({
568
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/validation.js"(exports, module) {
568
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/validation.js"(exports, module) {
569
569
  "use strict";
570
570
  var { isUtf8 } = __require("buffer");
571
571
  var { hasBlob } = require_constants();
@@ -764,12 +764,12 @@ var require_validation = __commonJS({
764
764
  }
765
765
  });
766
766
 
767
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js
767
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/receiver.js
768
768
  var require_receiver = __commonJS({
769
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/receiver.js"(exports, module) {
769
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/receiver.js"(exports, module) {
770
770
  "use strict";
771
771
  var { Writable } = __require("stream");
772
- var PerMessageDeflate = require_permessage_deflate();
772
+ var PerMessageDeflate2 = require_permessage_deflate();
773
773
  var {
774
774
  BINARY_TYPES,
775
775
  EMPTY_BUFFER,
@@ -936,7 +936,7 @@ var require_receiver = __commonJS({
936
936
  return;
937
937
  }
938
938
  const compressed = (buf[0] & 64) === 64;
939
- if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {
939
+ if (compressed && !this._extensions[PerMessageDeflate2.extensionName]) {
940
940
  const error = this.createError(
941
941
  RangeError,
942
942
  "RSV1 must be clear",
@@ -1180,7 +1180,7 @@ var require_receiver = __commonJS({
1180
1180
  * @private
1181
1181
  */
1182
1182
  decompress(data, cb) {
1183
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
1183
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
1184
1184
  perMessageDeflate.decompress(data, this._fin, (err, buf) => {
1185
1185
  if (err) return cb(err);
1186
1186
  if (buf.length) {
@@ -1356,13 +1356,13 @@ var require_receiver = __commonJS({
1356
1356
  }
1357
1357
  });
1358
1358
 
1359
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js
1359
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/sender.js
1360
1360
  var require_sender = __commonJS({
1361
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/sender.js"(exports, module) {
1361
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/sender.js"(exports, module) {
1362
1362
  "use strict";
1363
1363
  var { Duplex } = __require("stream");
1364
1364
  var { randomFillSync } = __require("crypto");
1365
- var PerMessageDeflate = require_permessage_deflate();
1365
+ var PerMessageDeflate2 = require_permessage_deflate();
1366
1366
  var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants();
1367
1367
  var { isBlob, isValidStatusCode } = require_validation();
1368
1368
  var { mask: applyMask, toBuffer } = require_buffer_util();
@@ -1646,7 +1646,7 @@ var require_sender = __commonJS({
1646
1646
  * @public
1647
1647
  */
1648
1648
  send(data, options, cb) {
1649
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
1649
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
1650
1650
  let opcode = options.binary ? 2 : 1;
1651
1651
  let rsv1 = options.compress;
1652
1652
  let byteLength;
@@ -1770,7 +1770,7 @@ var require_sender = __commonJS({
1770
1770
  this.sendFrame(_Sender.frame(data, options), cb);
1771
1771
  return;
1772
1772
  }
1773
- const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];
1773
+ const perMessageDeflate = this._extensions[PerMessageDeflate2.extensionName];
1774
1774
  this._bufferedBytes += options[kByteLength];
1775
1775
  this._state = DEFLATING;
1776
1776
  perMessageDeflate.compress(data, options.fin, (_, buf) => {
@@ -1844,9 +1844,9 @@ var require_sender = __commonJS({
1844
1844
  }
1845
1845
  });
1846
1846
 
1847
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js
1847
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/event-target.js
1848
1848
  var require_event_target = __commonJS({
1849
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/event-target.js"(exports, module) {
1849
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/event-target.js"(exports, module) {
1850
1850
  "use strict";
1851
1851
  var { kForOnEventAttribute, kListener } = require_constants();
1852
1852
  var kCode = /* @__PURE__ */ Symbol("kCode");
@@ -2073,9 +2073,9 @@ var require_event_target = __commonJS({
2073
2073
  }
2074
2074
  });
2075
2075
 
2076
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js
2076
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/extension.js
2077
2077
  var require_extension = __commonJS({
2078
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/extension.js"(exports, module) {
2078
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/extension.js"(exports, module) {
2079
2079
  "use strict";
2080
2080
  var { tokenChars } = require_validation();
2081
2081
  function push(dest, name, elem) {
@@ -2208,11 +2208,11 @@ var require_extension = __commonJS({
2208
2208
  return offers;
2209
2209
  }
2210
2210
  function format(extensions) {
2211
- return Object.keys(extensions).map((extension) => {
2212
- let configurations = extensions[extension];
2211
+ return Object.keys(extensions).map((extension2) => {
2212
+ let configurations = extensions[extension2];
2213
2213
  if (!Array.isArray(configurations)) configurations = [configurations];
2214
2214
  return configurations.map((params) => {
2215
- return [extension].concat(
2215
+ return [extension2].concat(
2216
2216
  Object.keys(params).map((k) => {
2217
2217
  let values = params[k];
2218
2218
  if (!Array.isArray(values)) values = [values];
@@ -2226,9 +2226,9 @@ var require_extension = __commonJS({
2226
2226
  }
2227
2227
  });
2228
2228
 
2229
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js
2229
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket.js
2230
2230
  var require_websocket = __commonJS({
2231
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket.js"(exports, module) {
2231
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket.js"(exports, module) {
2232
2232
  "use strict";
2233
2233
  var EventEmitter3 = __require("events");
2234
2234
  var https = __require("https");
@@ -2238,7 +2238,7 @@ var require_websocket = __commonJS({
2238
2238
  var { randomBytes: randomBytes3, createHash: createHash2 } = __require("crypto");
2239
2239
  var { Duplex, Readable } = __require("stream");
2240
2240
  var { URL: URL2 } = __require("url");
2241
- var PerMessageDeflate = require_permessage_deflate();
2241
+ var PerMessageDeflate2 = require_permessage_deflate();
2242
2242
  var Receiver2 = require_receiver();
2243
2243
  var Sender2 = require_sender();
2244
2244
  var { isBlob } = require_validation();
@@ -2446,8 +2446,8 @@ var require_websocket = __commonJS({
2446
2446
  this.emit("close", this._closeCode, this._closeMessage);
2447
2447
  return;
2448
2448
  }
2449
- if (this._extensions[PerMessageDeflate.extensionName]) {
2450
- this._extensions[PerMessageDeflate.extensionName].cleanup();
2449
+ if (this._extensions[PerMessageDeflate2.extensionName]) {
2450
+ this._extensions[PerMessageDeflate2.extensionName].cleanup();
2451
2451
  }
2452
2452
  this._receiver.removeAllListeners();
2453
2453
  this._readyState = _WebSocket.CLOSED;
@@ -2609,7 +2609,7 @@ var require_websocket = __commonJS({
2609
2609
  fin: true,
2610
2610
  ...options
2611
2611
  };
2612
- if (!this._extensions[PerMessageDeflate.extensionName]) {
2612
+ if (!this._extensions[PerMessageDeflate2.extensionName]) {
2613
2613
  opts.compress = false;
2614
2614
  }
2615
2615
  this._sender.send(data || EMPTY_BUFFER, opts, cb);
@@ -2735,7 +2735,7 @@ var require_websocket = __commonJS({
2735
2735
  } else {
2736
2736
  try {
2737
2737
  parsedUrl = new URL2(address);
2738
- } catch (e) {
2738
+ } catch {
2739
2739
  throw new SyntaxError(`Invalid URL: ${address}`);
2740
2740
  }
2741
2741
  }
@@ -2783,13 +2783,13 @@ var require_websocket = __commonJS({
2783
2783
  opts.path = parsedUrl.pathname + parsedUrl.search;
2784
2784
  opts.timeout = opts.handshakeTimeout;
2785
2785
  if (opts.perMessageDeflate) {
2786
- perMessageDeflate = new PerMessageDeflate(
2787
- opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},
2788
- false,
2789
- opts.maxPayload
2790
- );
2786
+ perMessageDeflate = new PerMessageDeflate2({
2787
+ ...opts.perMessageDeflate,
2788
+ isServer: false,
2789
+ maxPayload: opts.maxPayload
2790
+ });
2791
2791
  opts.headers["Sec-WebSocket-Extensions"] = format({
2792
- [PerMessageDeflate.extensionName]: perMessageDeflate.offer()
2792
+ [PerMessageDeflate2.extensionName]: perMessageDeflate.offer()
2793
2793
  });
2794
2794
  }
2795
2795
  if (protocols.length) {
@@ -2932,19 +2932,19 @@ var require_websocket = __commonJS({
2932
2932
  return;
2933
2933
  }
2934
2934
  const extensionNames = Object.keys(extensions);
2935
- if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate.extensionName) {
2935
+ if (extensionNames.length !== 1 || extensionNames[0] !== PerMessageDeflate2.extensionName) {
2936
2936
  const message = "Server indicated an extension that was not requested";
2937
2937
  abortHandshake(websocket, socket, message);
2938
2938
  return;
2939
2939
  }
2940
2940
  try {
2941
- perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);
2941
+ perMessageDeflate.accept(extensions[PerMessageDeflate2.extensionName]);
2942
2942
  } catch (err) {
2943
2943
  const message = "Invalid Sec-WebSocket-Extensions header";
2944
2944
  abortHandshake(websocket, socket, message);
2945
2945
  return;
2946
2946
  }
2947
- websocket._extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
2947
+ websocket._extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
2948
2948
  }
2949
2949
  websocket.setSocket(socket, head, {
2950
2950
  allowSynchronousEvents: opts.allowSynchronousEvents,
@@ -3112,9 +3112,9 @@ var require_websocket = __commonJS({
3112
3112
  }
3113
3113
  });
3114
3114
 
3115
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js
3115
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/stream.js
3116
3116
  var require_stream = __commonJS({
3117
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/stream.js"(exports, module) {
3117
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/stream.js"(exports, module) {
3118
3118
  "use strict";
3119
3119
  var WebSocket2 = require_websocket();
3120
3120
  var { Duplex } = __require("stream");
@@ -3210,9 +3210,9 @@ var require_stream = __commonJS({
3210
3210
  }
3211
3211
  });
3212
3212
 
3213
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js
3213
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/subprotocol.js
3214
3214
  var require_subprotocol = __commonJS({
3215
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/subprotocol.js"(exports, module) {
3215
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/subprotocol.js"(exports, module) {
3216
3216
  "use strict";
3217
3217
  var { tokenChars } = require_validation();
3218
3218
  function parse(header) {
@@ -3255,17 +3255,17 @@ var require_subprotocol = __commonJS({
3255
3255
  }
3256
3256
  });
3257
3257
 
3258
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js
3258
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket-server.js
3259
3259
  var require_websocket_server = __commonJS({
3260
- "../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/lib/websocket-server.js"(exports, module) {
3260
+ "../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/websocket-server.js"(exports, module) {
3261
3261
  "use strict";
3262
3262
  var EventEmitter3 = __require("events");
3263
3263
  var http = __require("http");
3264
3264
  var { Duplex } = __require("stream");
3265
3265
  var { createHash: createHash2 } = __require("crypto");
3266
- var extension = require_extension();
3267
- var PerMessageDeflate = require_permessage_deflate();
3268
- var subprotocol = require_subprotocol();
3266
+ var extension2 = require_extension();
3267
+ var PerMessageDeflate2 = require_permessage_deflate();
3268
+ var subprotocol2 = require_subprotocol();
3269
3269
  var WebSocket2 = require_websocket();
3270
3270
  var { CLOSE_TIMEOUT, GUID, kWebSocket } = require_constants();
3271
3271
  var keyRegex = /^[+/0-9A-Za-z]{22}==$/;
@@ -3488,7 +3488,7 @@ var require_websocket_server = __commonJS({
3488
3488
  let protocols = /* @__PURE__ */ new Set();
3489
3489
  if (secWebSocketProtocol !== void 0) {
3490
3490
  try {
3491
- protocols = subprotocol.parse(secWebSocketProtocol);
3491
+ protocols = subprotocol2.parse(secWebSocketProtocol);
3492
3492
  } catch (err) {
3493
3493
  const message = "Invalid Sec-WebSocket-Protocol header";
3494
3494
  abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);
@@ -3498,16 +3498,16 @@ var require_websocket_server = __commonJS({
3498
3498
  const secWebSocketExtensions = req.headers["sec-websocket-extensions"];
3499
3499
  const extensions = {};
3500
3500
  if (this.options.perMessageDeflate && secWebSocketExtensions !== void 0) {
3501
- const perMessageDeflate = new PerMessageDeflate(
3502
- this.options.perMessageDeflate,
3503
- true,
3504
- this.options.maxPayload
3505
- );
3501
+ const perMessageDeflate = new PerMessageDeflate2({
3502
+ ...this.options.perMessageDeflate,
3503
+ isServer: true,
3504
+ maxPayload: this.options.maxPayload
3505
+ });
3506
3506
  try {
3507
- const offers = extension.parse(secWebSocketExtensions);
3508
- if (offers[PerMessageDeflate.extensionName]) {
3509
- perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);
3510
- extensions[PerMessageDeflate.extensionName] = perMessageDeflate;
3507
+ const offers = extension2.parse(secWebSocketExtensions);
3508
+ if (offers[PerMessageDeflate2.extensionName]) {
3509
+ perMessageDeflate.accept(offers[PerMessageDeflate2.extensionName]);
3510
+ extensions[PerMessageDeflate2.extensionName] = perMessageDeflate;
3511
3511
  }
3512
3512
  } catch (err) {
3513
3513
  const message = "Invalid or unacceptable Sec-WebSocket-Extensions header";
@@ -3578,10 +3578,10 @@ var require_websocket_server = __commonJS({
3578
3578
  ws._protocol = protocol;
3579
3579
  }
3580
3580
  }
3581
- if (extensions[PerMessageDeflate.extensionName]) {
3582
- const params = extensions[PerMessageDeflate.extensionName].params;
3583
- const value = extension.format({
3584
- [PerMessageDeflate.extensionName]: [params]
3581
+ if (extensions[PerMessageDeflate2.extensionName]) {
3582
+ const params = extensions[PerMessageDeflate2.extensionName].params;
3583
+ const value = extension2.format({
3584
+ [PerMessageDeflate2.extensionName]: [params]
3585
3585
  });
3586
3586
  headers.push(`Sec-WebSocket-Extensions: ${value}`);
3587
3587
  ws._extensions = extensions;
@@ -5874,11 +5874,11 @@ var require_nacl_fast = __commonJS({
5874
5874
  });
5875
5875
 
5876
5876
  // src/daemon.ts
5877
- import { writeFileSync as writeFileSync4, mkdirSync as mkdirSync3, unlinkSync as unlinkSync2, existsSync as existsSync4, readdirSync, statSync } from "fs";
5878
- import { homedir as homedir5 } from "os";
5879
- import { join as join5, dirname as dirname3 } from "path";
5877
+ import { writeFileSync as writeFileSync5, mkdirSync as mkdirSync3, unlinkSync as unlinkSync3, existsSync as existsSync5, readdirSync, statSync } from "fs";
5878
+ import { homedir as homedir6 } from "os";
5879
+ import { join as join6, dirname as dirname3 } from "path";
5880
5880
  import { fileURLToPath } from "url";
5881
- import { spawn as spawn2 } from "child_process";
5881
+ import { spawn as spawn3 } from "child_process";
5882
5882
 
5883
5883
  // src/auth.ts
5884
5884
  import { randomBytes, timingSafeEqual } from "crypto";
@@ -6276,6 +6276,10 @@ function createInternalApi(options) {
6276
6276
  res.end(JSON.stringify({ error: err.message }));
6277
6277
  return;
6278
6278
  }
6279
+ if (options.windowsFirewall) {
6280
+ options.windowsFirewall.addRule(`session-${session.id}`, data.port).catch(() => {
6281
+ });
6282
+ }
6279
6283
  res.writeHead(201);
6280
6284
  res.end(JSON.stringify({ session }));
6281
6285
  return;
@@ -6287,6 +6291,13 @@ function createInternalApi(options) {
6287
6291
  res.end(JSON.stringify({ error: "Session ID required" }));
6288
6292
  return;
6289
6293
  }
6294
+ if (options.windowsFirewall) {
6295
+ const session = registry.getById(id);
6296
+ if (session) {
6297
+ options.windowsFirewall.removeRule(`session-${session.id}`).catch(() => {
6298
+ });
6299
+ }
6300
+ }
6290
6301
  const removed = registry.unregister(id);
6291
6302
  if (removed) {
6292
6303
  res.writeHead(200);
@@ -6352,8 +6363,8 @@ function createInternalApi(options) {
6352
6363
  }
6353
6364
  let memoryKB = 0;
6354
6365
  try {
6355
- const { execFileSync: execFileSync2 } = await import("child_process");
6356
- const output = execFileSync2("ps", ["-o", "rss=", "-p", String(session.pid)], {
6366
+ const { execFileSync: execFileSync3 } = await import("child_process");
6367
+ const output = execFileSync3("ps", ["-o", "rss=", "-p", String(session.pid)], {
6357
6368
  encoding: "utf-8",
6358
6369
  timeout: 2e3
6359
6370
  });
@@ -6406,10 +6417,13 @@ import { join as join3, extname } from "path";
6406
6417
  import { homedir as homedir3 } from "os";
6407
6418
  import { gzipSync } from "zlib";
6408
6419
 
6409
- // ../../node_modules/.pnpm/ws@8.19.0/node_modules/ws/wrapper.mjs
6420
+ // ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/wrapper.mjs
6410
6421
  var import_stream = __toESM(require_stream(), 1);
6422
+ var import_extension = __toESM(require_extension(), 1);
6423
+ var import_permessage_deflate = __toESM(require_permessage_deflate(), 1);
6411
6424
  var import_receiver = __toESM(require_receiver(), 1);
6412
6425
  var import_sender = __toESM(require_sender(), 1);
6426
+ var import_subprotocol = __toESM(require_subprotocol(), 1);
6413
6427
  var import_websocket = __toESM(require_websocket(), 1);
6414
6428
  var import_websocket_server = __toESM(require_websocket_server(), 1);
6415
6429
 
@@ -6721,8 +6735,8 @@ function createDashboardServer(options) {
6721
6735
  }
6722
6736
  let memoryKB = 0;
6723
6737
  try {
6724
- const { execFileSync: execFileSync2 } = await import("child_process");
6725
- const output = execFileSync2("ps", ["-o", "rss=", "-p", String(session.pid)], {
6738
+ const { execFileSync: execFileSync3 } = await import("child_process");
6739
+ const output = execFileSync3("ps", ["-o", "rss=", "-p", String(session.pid)], {
6726
6740
  encoding: "utf-8",
6727
6741
  timeout: 2e3
6728
6742
  });
@@ -7322,24 +7336,191 @@ ${key}=${value}`);
7322
7336
  }
7323
7337
  };
7324
7338
 
7339
+ // src/windows-firewall.ts
7340
+ import { spawn as spawn2, execFileSync as execFileSync2 } from "child_process";
7341
+ import { writeFileSync as writeFileSync4, readFileSync as readFileSync4, unlinkSync as unlinkSync2, existsSync as existsSync4 } from "fs";
7342
+ import { join as join5 } from "path";
7343
+ import { homedir as homedir5 } from "os";
7344
+ var COMMAND_TIMEOUT_MS2 = 1e4;
7345
+ var SYNC_TIMEOUT_MS2 = 5e3;
7346
+ var RULE_PREFIX = "itwillsync";
7347
+ function getHubDir2() {
7348
+ return process.env.ITWILLSYNC_CONFIG_DIR || join5(homedir5(), ".itwillsync");
7349
+ }
7350
+ var WindowsFirewall = class {
7351
+ rules = /* @__PURE__ */ new Map();
7352
+ flagFilePath;
7353
+ isWindows;
7354
+ constructor() {
7355
+ this.isWindows = process.platform === "win32";
7356
+ this.flagFilePath = join5(getHubDir2(), "firewall-rules.json");
7357
+ if (this.isWindows) {
7358
+ this.checkOrphanedRules();
7359
+ }
7360
+ }
7361
+ async addRule(label, port) {
7362
+ if (!this.isWindows) return { success: true };
7363
+ const ruleName = `${RULE_PREFIX}-${label}`;
7364
+ if (this.rules.has(ruleName)) return { success: true };
7365
+ if (await this.ruleExists(ruleName)) {
7366
+ this.rules.set(ruleName, port);
7367
+ this.writeFlagFile();
7368
+ return { success: true };
7369
+ }
7370
+ const result = await this.runNetsh([
7371
+ "advfirewall",
7372
+ "firewall",
7373
+ "add",
7374
+ "rule",
7375
+ `name=${ruleName}`,
7376
+ "dir=in",
7377
+ "action=allow",
7378
+ "protocol=TCP",
7379
+ `localport=${port}`
7380
+ ]);
7381
+ if (result.exitCode === 0) {
7382
+ this.rules.set(ruleName, port);
7383
+ this.writeFlagFile();
7384
+ return { success: true };
7385
+ }
7386
+ console.warn(
7387
+ ` Warning: Could not add Windows Firewall rule for port ${port}.
7388
+ Phone access may be blocked. Run as Administrator or add the rule manually:
7389
+ netsh advfirewall firewall add rule name="${ruleName}" dir=in action=allow protocol=TCP localport=${port}`
7390
+ );
7391
+ return { success: false, error: result.stderr || "Failed to add firewall rule" };
7392
+ }
7393
+ async removeRule(label) {
7394
+ if (!this.isWindows) return;
7395
+ const ruleName = `${RULE_PREFIX}-${label}`;
7396
+ await this.runNetsh([
7397
+ "advfirewall",
7398
+ "firewall",
7399
+ "delete",
7400
+ "rule",
7401
+ `name=${ruleName}`
7402
+ ]);
7403
+ this.rules.delete(ruleName);
7404
+ this.writeFlagFile();
7405
+ }
7406
+ cleanupSync() {
7407
+ if (!this.isWindows || this.rules.size === 0) return;
7408
+ for (const ruleName of this.rules.keys()) {
7409
+ try {
7410
+ execFileSync2("netsh", [
7411
+ "advfirewall",
7412
+ "firewall",
7413
+ "delete",
7414
+ "rule",
7415
+ `name=${ruleName}`
7416
+ ], { timeout: SYNC_TIMEOUT_MS2, stdio: "ignore" });
7417
+ } catch {
7418
+ }
7419
+ }
7420
+ this.rules.clear();
7421
+ this.deleteFlagFile();
7422
+ }
7423
+ // --- Private helpers ---
7424
+ async ruleExists(ruleName) {
7425
+ const result = await this.runNetsh([
7426
+ "advfirewall",
7427
+ "firewall",
7428
+ "show",
7429
+ "rule",
7430
+ `name=${ruleName}`
7431
+ ]);
7432
+ return result.exitCode === 0;
7433
+ }
7434
+ runNetsh(args) {
7435
+ return new Promise((resolve) => {
7436
+ const proc = spawn2("netsh", args, {
7437
+ stdio: ["ignore", "ignore", "pipe"]
7438
+ });
7439
+ let stderr = "";
7440
+ proc.stderr.on("data", (d) => {
7441
+ stderr += d.toString();
7442
+ });
7443
+ const timer = setTimeout(() => {
7444
+ proc.kill("SIGKILL");
7445
+ resolve({ exitCode: 1, stderr: "Command timed out" });
7446
+ }, COMMAND_TIMEOUT_MS2);
7447
+ proc.on("close", (code) => {
7448
+ clearTimeout(timer);
7449
+ resolve({ exitCode: code ?? 1, stderr });
7450
+ });
7451
+ proc.on("error", (err) => {
7452
+ clearTimeout(timer);
7453
+ resolve({ exitCode: 1, stderr: err.message });
7454
+ });
7455
+ });
7456
+ }
7457
+ writeFlagFile() {
7458
+ if (this.rules.size === 0) {
7459
+ this.deleteFlagFile();
7460
+ return;
7461
+ }
7462
+ const data = {
7463
+ rules: Array.from(this.rules.entries()).map(([name, port]) => ({ name, port })),
7464
+ createdAt: Date.now()
7465
+ };
7466
+ try {
7467
+ writeFileSync4(this.flagFilePath, JSON.stringify(data, null, 2) + "\n", "utf-8");
7468
+ } catch {
7469
+ }
7470
+ }
7471
+ deleteFlagFile() {
7472
+ try {
7473
+ if (existsSync4(this.flagFilePath)) {
7474
+ unlinkSync2(this.flagFilePath);
7475
+ }
7476
+ } catch {
7477
+ }
7478
+ }
7479
+ checkOrphanedRules() {
7480
+ try {
7481
+ if (!existsSync4(this.flagFilePath)) return;
7482
+ const raw = readFileSync4(this.flagFilePath, "utf-8");
7483
+ const data = JSON.parse(raw);
7484
+ if (data.rules && data.rules.length > 0) {
7485
+ console.log("Cleaning up orphaned firewall rules...");
7486
+ for (const rule of data.rules) {
7487
+ try {
7488
+ execFileSync2("netsh", [
7489
+ "advfirewall",
7490
+ "firewall",
7491
+ "delete",
7492
+ "rule",
7493
+ `name=${rule.name}`
7494
+ ], { timeout: SYNC_TIMEOUT_MS2, stdio: "ignore" });
7495
+ } catch {
7496
+ }
7497
+ }
7498
+ }
7499
+ this.deleteFlagFile();
7500
+ } catch {
7501
+ this.deleteFlagFile();
7502
+ }
7503
+ }
7504
+ };
7505
+
7325
7506
  // src/daemon.ts
7326
7507
  var HUB_EXTERNAL_PORT = 7962;
7327
7508
  var HUB_INTERNAL_PORT = 7963;
7328
7509
  var AUTO_SHUTDOWN_DELAY_MS = 3e4;
7329
- function getHubDir2() {
7330
- return process.env.ITWILLSYNC_CONFIG_DIR || join5(homedir5(), ".itwillsync");
7510
+ function getHubDir3() {
7511
+ return process.env.ITWILLSYNC_CONFIG_DIR || join6(homedir6(), ".itwillsync");
7331
7512
  }
7332
7513
  function getPidPath() {
7333
- return join5(getHubDir2(), "hub.pid");
7514
+ return join6(getHubDir3(), "hub.pid");
7334
7515
  }
7335
7516
  function getHubConfigPath() {
7336
- return join5(getHubDir2(), "hub.json");
7517
+ return join6(getHubDir3(), "hub.json");
7337
7518
  }
7338
7519
  function isValidToolName(tool) {
7339
7520
  return /^[a-zA-Z0-9._-]+$/.test(tool) && tool.length > 0 && tool.length <= 100;
7340
7521
  }
7341
7522
  function spawnSession(tool, cwd, cliEntryPath) {
7342
- const child = spawn2(process.execPath, [cliEntryPath, "--headless", "--", tool], {
7523
+ const child = spawn3(process.execPath, [cliEntryPath, "--headless", "--", tool], {
7343
7524
  cwd,
7344
7525
  stdio: "ignore",
7345
7526
  detached: true,
@@ -7349,11 +7530,11 @@ function spawnSession(tool, cwd, cliEntryPath) {
7349
7530
  return child;
7350
7531
  }
7351
7532
  async function main() {
7352
- const hubDir = getHubDir2();
7533
+ const hubDir = getHubDir3();
7353
7534
  mkdirSync3(hubDir, { recursive: true });
7354
7535
  const masterToken = generateToken();
7355
7536
  const startedAt = Date.now();
7356
- writeFileSync4(getPidPath(), String(process.pid), "utf-8");
7537
+ writeFileSync5(getPidPath(), String(process.pid), "utf-8");
7357
7538
  const hubConfig = {
7358
7539
  masterToken,
7359
7540
  externalPort: HUB_EXTERNAL_PORT,
@@ -7361,22 +7542,24 @@ async function main() {
7361
7542
  pid: process.pid,
7362
7543
  startedAt
7363
7544
  };
7364
- writeFileSync4(getHubConfigPath(), JSON.stringify(hubConfig, null, 2) + "\n", "utf-8");
7545
+ writeFileSync5(getHubConfigPath(), JSON.stringify(hubConfig, null, 2) + "\n", "utf-8");
7365
7546
  const sessionStore = new SessionStore();
7366
7547
  const registry = new SessionRegistry({ store: sessionStore });
7367
7548
  registry.startHealthChecks();
7368
7549
  const toolHistory = new ToolHistory();
7369
7550
  const sleepPrevention = new SleepPrevention();
7370
- const logsDir = join5(hubDir, "logs");
7371
- if (existsSync4(logsDir)) {
7551
+ const windowsFirewall = new WindowsFirewall();
7552
+ await windowsFirewall.addRule("hub", HUB_EXTERNAL_PORT);
7553
+ const logsDir = join6(hubDir, "logs");
7554
+ if (existsSync5(logsDir)) {
7372
7555
  const retentionMs = 30 * 864e5;
7373
7556
  const cutoff = Date.now() - retentionMs;
7374
7557
  try {
7375
7558
  for (const file of readdirSync(logsDir)) {
7376
- const filePath = join5(logsDir, file);
7559
+ const filePath = join6(logsDir, file);
7377
7560
  try {
7378
7561
  const stat2 = statSync(filePath);
7379
- if (stat2.mtimeMs < cutoff) unlinkSync2(filePath);
7562
+ if (stat2.mtimeMs < cutoff) unlinkSync3(filePath);
7380
7563
  } catch {
7381
7564
  }
7382
7565
  }
@@ -7384,11 +7567,12 @@ async function main() {
7384
7567
  }
7385
7568
  }
7386
7569
  const __dirname = dirname3(fileURLToPath(import.meta.url));
7387
- const dashboardPath = join5(__dirname, "dashboard");
7388
- const cliEntryPath = join5(__dirname, "..", "index.js");
7570
+ const dashboardPath = join6(__dirname, "dashboard");
7571
+ const cliEntryPath = join6(__dirname, "..", "index.js");
7389
7572
  const internalApi = createInternalApi({
7390
7573
  registry,
7391
- port: HUB_INTERNAL_PORT
7574
+ port: HUB_INTERNAL_PORT,
7575
+ windowsFirewall
7392
7576
  });
7393
7577
  const previewCollector = new PreviewCollector(registry);
7394
7578
  const dashboardServer = createDashboardServer({
@@ -7439,6 +7623,7 @@ async function main() {
7439
7623
  });
7440
7624
  scheduleShutdown();
7441
7625
  function cleanup() {
7626
+ windowsFirewall.cleanupSync();
7442
7627
  sleepPrevention.cleanupSync();
7443
7628
  previewCollector.close();
7444
7629
  registry.stopHealthChecks();
@@ -7447,11 +7632,11 @@ async function main() {
7447
7632
  internalApi.close();
7448
7633
  dashboardServer.close();
7449
7634
  try {
7450
- unlinkSync2(getPidPath());
7635
+ unlinkSync3(getPidPath());
7451
7636
  } catch {
7452
7637
  }
7453
7638
  try {
7454
- unlinkSync2(getHubConfigPath());
7639
+ unlinkSync3(getHubConfigPath());
7455
7640
  } catch {
7456
7641
  }
7457
7642
  }