unplugin-https-reverse-proxy 1.0.0-beta.4 → 1.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vite.cjs CHANGED
@@ -51,7 +51,6 @@ var import_unplugin2 = require("unplugin");
51
51
 
52
52
  // src/index.ts
53
53
  var import_node_process5 = __toESM(require("process"), 1);
54
- var import_node_fs3 = require("fs");
55
54
  var import_unplugin = require("unplugin");
56
55
  var import_picocolors = __toESM(require("picocolors"), 1);
57
56
 
@@ -95,7 +94,7 @@ function isAdmin() {
95
94
  }
96
95
 
97
96
  // src/caddy/index.ts
98
- var import_node_os = require("os");
97
+ var import_node_os2 = require("os");
99
98
  var import_node_process4 = __toESM(require("process"), 1);
100
99
  var import_node_fs2 = require("fs");
101
100
  var import_node_child_process3 = require("child_process");
@@ -153,8 +152,16 @@ async function removeHost(ip, host) {
153
152
 
154
153
  // src/caddy/constants.ts
155
154
  var import_node_path2 = require("path");
155
+ var import_node_os = __toESM(require("os"), 1);
156
156
  var import_node_process3 = __toESM(require("process"), 1);
157
- var TEMP_DIR = import_node_process3.default.env.TEMP || import_node_process3.default.env.TMPDIR || "/tmp";
157
+ var import_dotenv_flow = __toESM(require("dotenv-flow"), 1);
158
+ import_dotenv_flow.default.config();
159
+ function resolvePath(path2) {
160
+ if (path2.startsWith("~"))
161
+ return (0, import_node_path2.join)(import_node_os.default.homedir() || "", path2.slice(1));
162
+ return path2;
163
+ }
164
+ var TEMP_DIR = resolvePath(import_node_process3.default.env.UHRP_CADDY_PATH || import_node_process3.default.env.TEMP || import_node_process3.default.env.TMPDIR || "/tmp");
158
165
  var caddyPath = (0, import_node_path2.join)(TEMP_DIR, `caddy${import_node_process3.default.platform === "win32" ? ".exe" : ""}`);
159
166
  var caddyFilePath = (0, import_node_path2.join)(TEMP_DIR, "CADDYFILE");
160
167
  var supportList = [
@@ -328,8 +335,12 @@ async function download() {
328
335
  if (await testCaddy())
329
336
  return caddyPath;
330
337
  return new Promise((resolve, reject) => {
338
+ if (!(0, import_node_fs2.existsSync)(TEMP_DIR)) {
339
+ (0, import_node_fs2.mkdirSync)(TEMP_DIR, { recursive: true });
340
+ (0, import_node_fs2.chmodSync)(TEMP_DIR, 511);
341
+ }
331
342
  const file = (0, import_node_fs2.createWriteStream)(caddyPath);
332
- let _platform = (0, import_node_os.platform)().toString();
343
+ let _platform = (0, import_node_os2.platform)().toString();
333
344
  _platform === "win32" && (_platform = "windows");
334
345
  let _arch = import_node_process4.default.arch.toString();
335
346
  _arch === "x64" && (_arch = "amd64");
@@ -342,6 +353,9 @@ async function download() {
342
353
  const httpsProxy = import_node_process4.default.env.HTTPS_PROXY || import_node_process4.default.env.https_proxy;
343
354
  const httpAgent = httpProxy ? new import_http_proxy_agent.HttpProxyAgent(httpProxy) : void 0;
344
355
  const httpsAgent = httpsProxy ? new import_https_proxy_agent.HttpsProxyAgent(httpsProxy) : void 0;
356
+ const chmodCaddyOnce = once(() => {
357
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
358
+ });
345
359
  import_got_cjs.got.stream(dowmloadLink, {
346
360
  agent: {
347
361
  http: httpAgent,
@@ -349,11 +363,12 @@ async function download() {
349
363
  }
350
364
  }).on("downloadProgress", (progress) => {
351
365
  logProgress(progress.percent);
366
+ chmodCaddyOnce();
352
367
  }).pipe(file).on("finish", () => {
353
368
  logProgressOver();
354
369
  if (import_node_process4.default.platform === "win32")
355
370
  return resolve(caddyPath);
356
- (0, import_node_fs2.chmodSync)(caddyPath, 493);
371
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
357
372
  resolve(caddyPath);
358
373
  }).on("error", (err) => {
359
374
  reject(err);
@@ -364,7 +379,7 @@ function testCaddy() {
364
379
  return new Promise((resolve, reject) => {
365
380
  if (!(0, import_node_fs2.existsSync)(caddyPath))
366
381
  return resolve(false);
367
- (0, import_node_fs2.chmodSync)(caddyPath, 493);
382
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
368
383
  const child = import_node_process4.default.platform === "win32" ? (0, import_node_child_process3.spawn)(caddyPath, []) : (0, import_node_child_process3.spawn)("sudo", ["-E", caddyPath]);
369
384
  child.on("close", () => {
370
385
  return resolve(false);
@@ -439,6 +454,16 @@ var CaddyInstant = class {
439
454
  const port = Number(source.split(":")[1]);
440
455
  if (!Number.isNaN(port) && await tryPort(port))
441
456
  await (0, import_kill_port.default)(port, "tcp");
457
+ const pwd2 = import_node_process4.default.cwd();
458
+ const viteCacheDir = `${pwd2}/node_modules/.vite`;
459
+ if ((0, import_node_fs2.existsSync)(viteCacheDir))
460
+ chmodRecursive(viteCacheDir, 511);
461
+ const nuxtCacheDir = `${pwd2}/.nuxt`;
462
+ if ((0, import_node_fs2.existsSync)(nuxtCacheDir))
463
+ await chmodRecursive(nuxtCacheDir, 511);
464
+ const webpackCacheDir = `${pwd2}/node_modules/.cache`;
465
+ if ((0, import_node_fs2.existsSync)(webpackCacheDir))
466
+ chmodRecursive(webpackCacheDir, 511);
442
467
  if (!restore || this.stoped)
443
468
  return originalExit(code);
444
469
  try {
@@ -480,27 +505,17 @@ var caddy;
480
505
  var pwd = import_node_process5.default.cwd();
481
506
  var vitePrintUrls = once((options, source, target, base = "/", _printUrls) => {
482
507
  _printUrls == null ? void 0 : _printUrls();
483
- const viteCacheDir = `${pwd}/node_modules/.vite`;
484
- if ((0, import_node_fs3.existsSync)(viteCacheDir))
485
- chmodRecursive(viteCacheDir, 511);
486
- const nuxtCacheDir = `${pwd}/.nuxt`;
487
- if ((0, import_node_fs3.existsSync)(nuxtCacheDir))
488
- chmodRecursive(nuxtCacheDir, 511);
489
- try {
490
- if (caddy)
491
- return;
492
- caddy = new CaddyInstant();
493
- caddy.run(source, target, __spreadValues({
494
- base
495
- }, options)).then(() => {
496
- const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
497
- consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}${base}`)}`);
498
- }).catch((e) => {
499
- throw e;
500
- });
501
- } catch (e) {
502
- consola.error(e);
503
- }
508
+ if (caddy)
509
+ return;
510
+ caddy = new CaddyInstant();
511
+ caddy.run(source, target, __spreadValues({
512
+ base
513
+ }, options)).then(() => {
514
+ const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
515
+ consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}${base}`)}`);
516
+ }).catch((e) => {
517
+ throw e;
518
+ });
504
519
  });
505
520
  var unpluginFactory = (options) => ({
506
521
  name: "unplugin-https-reverse-proxy",
@@ -511,12 +526,12 @@ var unpluginFactory = (options) => ({
511
526
  },
512
527
  configureServer(server) {
513
528
  var _a;
529
+ if (config.command !== "serve")
530
+ return;
514
531
  if (!isAdmin()) {
515
532
  consola.warn("please run as administrator");
516
533
  return;
517
534
  }
518
- if (config.command === "build")
519
- return;
520
535
  const {
521
536
  enable = true,
522
537
  target = ""
@@ -540,12 +555,12 @@ var unpluginFactory = (options) => ({
540
555
  },
541
556
  webpack(compiler) {
542
557
  var _a;
558
+ if (import_node_process5.default.env.NODE_ENV !== "development")
559
+ return;
543
560
  if (!isAdmin()) {
544
561
  consola.warn("please run as administrator");
545
562
  return;
546
563
  }
547
- if (import_node_process5.default.env.NODE_ENV !== "development")
548
- return;
549
564
  const {
550
565
  enable = true,
551
566
  target = ""
@@ -556,39 +571,32 @@ var unpluginFactory = (options) => ({
556
571
  consola.fail("please provide target");
557
572
  return;
558
573
  }
559
- const nuxtCacheDir = `${pwd}/node_modules/.cache`;
560
- if ((0, import_node_fs3.existsSync)(nuxtCacheDir))
561
- chmodRecursive(nuxtCacheDir, 511);
562
- try {
563
- const devServer = __spreadValues(__spreadValues({
564
- host: "localhost",
565
- port: 8080
566
- }, compiler.options.devServer), import_node_process5.default.VUE_CLI_SERVICE.projectOptions.devServer);
567
- const source = `${devServer.host}:${devServer.port}`;
568
- if (caddy)
569
- return;
570
- const _close = (_a = compiler.close) == null ? void 0 : _a.bind(compiler);
571
- if (_close) {
572
- compiler.close = async (callback) => {
573
- import_node_process5.default.on("exit", () => {
574
- _close && _close(callback);
575
- });
576
- };
577
- } else {
578
- options.https = false;
579
- }
580
- caddy = new CaddyInstant();
581
- caddy.run(source, target, __spreadValues({}, options)).then(() => {
582
- const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
583
- compiler.hooks.done.tap("unplugin-https-reverse-proxy", () => {
584
- consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}`)}`);
574
+ const devServer = __spreadValues(__spreadValues({
575
+ host: "localhost",
576
+ port: 8080
577
+ }, compiler.options.devServer), import_node_process5.default.VUE_CLI_SERVICE.projectOptions.devServer);
578
+ const source = `${devServer.host}:${devServer.port}`;
579
+ if (caddy)
580
+ return;
581
+ const _close = (_a = compiler.close) == null ? void 0 : _a.bind(compiler);
582
+ if (_close) {
583
+ compiler.close = async (callback) => {
584
+ import_node_process5.default.on("exit", () => {
585
+ _close && _close(callback);
585
586
  });
586
- }).catch((e) => {
587
- throw e;
588
- });
589
- } catch (e) {
590
- consola.error(e);
587
+ };
588
+ } else {
589
+ options.https = false;
591
590
  }
591
+ caddy = new CaddyInstant();
592
+ caddy.run(source, target, __spreadValues({}, options)).then(() => {
593
+ const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
594
+ compiler.hooks.done.tap("unplugin-https-reverse-proxy", () => {
595
+ consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}`)}`);
596
+ });
597
+ }).catch((e) => {
598
+ throw e;
599
+ });
592
600
  }
593
601
  });
594
602
 
package/dist/vite.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  unpluginFactory
3
- } from "./chunk-GAKOA5LE.js";
3
+ } from "./chunk-IUFVJYJ5.js";
4
4
  import "./chunk-RUJE3YFB.js";
5
5
 
6
6
  // src/vite.ts
package/dist/webpack.cjs CHANGED
@@ -51,7 +51,6 @@ var import_unplugin2 = require("unplugin");
51
51
 
52
52
  // src/index.ts
53
53
  var import_node_process5 = __toESM(require("process"), 1);
54
- var import_node_fs3 = require("fs");
55
54
  var import_unplugin = require("unplugin");
56
55
  var import_picocolors = __toESM(require("picocolors"), 1);
57
56
 
@@ -95,7 +94,7 @@ function isAdmin() {
95
94
  }
96
95
 
97
96
  // src/caddy/index.ts
98
- var import_node_os = require("os");
97
+ var import_node_os2 = require("os");
99
98
  var import_node_process4 = __toESM(require("process"), 1);
100
99
  var import_node_fs2 = require("fs");
101
100
  var import_node_child_process3 = require("child_process");
@@ -153,8 +152,16 @@ async function removeHost(ip, host) {
153
152
 
154
153
  // src/caddy/constants.ts
155
154
  var import_node_path2 = require("path");
155
+ var import_node_os = __toESM(require("os"), 1);
156
156
  var import_node_process3 = __toESM(require("process"), 1);
157
- var TEMP_DIR = import_node_process3.default.env.TEMP || import_node_process3.default.env.TMPDIR || "/tmp";
157
+ var import_dotenv_flow = __toESM(require("dotenv-flow"), 1);
158
+ import_dotenv_flow.default.config();
159
+ function resolvePath(path2) {
160
+ if (path2.startsWith("~"))
161
+ return (0, import_node_path2.join)(import_node_os.default.homedir() || "", path2.slice(1));
162
+ return path2;
163
+ }
164
+ var TEMP_DIR = resolvePath(import_node_process3.default.env.UHRP_CADDY_PATH || import_node_process3.default.env.TEMP || import_node_process3.default.env.TMPDIR || "/tmp");
158
165
  var caddyPath = (0, import_node_path2.join)(TEMP_DIR, `caddy${import_node_process3.default.platform === "win32" ? ".exe" : ""}`);
159
166
  var caddyFilePath = (0, import_node_path2.join)(TEMP_DIR, "CADDYFILE");
160
167
  var supportList = [
@@ -328,8 +335,12 @@ async function download() {
328
335
  if (await testCaddy())
329
336
  return caddyPath;
330
337
  return new Promise((resolve, reject) => {
338
+ if (!(0, import_node_fs2.existsSync)(TEMP_DIR)) {
339
+ (0, import_node_fs2.mkdirSync)(TEMP_DIR, { recursive: true });
340
+ (0, import_node_fs2.chmodSync)(TEMP_DIR, 511);
341
+ }
331
342
  const file = (0, import_node_fs2.createWriteStream)(caddyPath);
332
- let _platform = (0, import_node_os.platform)().toString();
343
+ let _platform = (0, import_node_os2.platform)().toString();
333
344
  _platform === "win32" && (_platform = "windows");
334
345
  let _arch = import_node_process4.default.arch.toString();
335
346
  _arch === "x64" && (_arch = "amd64");
@@ -342,6 +353,9 @@ async function download() {
342
353
  const httpsProxy = import_node_process4.default.env.HTTPS_PROXY || import_node_process4.default.env.https_proxy;
343
354
  const httpAgent = httpProxy ? new import_http_proxy_agent.HttpProxyAgent(httpProxy) : void 0;
344
355
  const httpsAgent = httpsProxy ? new import_https_proxy_agent.HttpsProxyAgent(httpsProxy) : void 0;
356
+ const chmodCaddyOnce = once(() => {
357
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
358
+ });
345
359
  import_got_cjs.got.stream(dowmloadLink, {
346
360
  agent: {
347
361
  http: httpAgent,
@@ -349,11 +363,12 @@ async function download() {
349
363
  }
350
364
  }).on("downloadProgress", (progress) => {
351
365
  logProgress(progress.percent);
366
+ chmodCaddyOnce();
352
367
  }).pipe(file).on("finish", () => {
353
368
  logProgressOver();
354
369
  if (import_node_process4.default.platform === "win32")
355
370
  return resolve(caddyPath);
356
- (0, import_node_fs2.chmodSync)(caddyPath, 493);
371
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
357
372
  resolve(caddyPath);
358
373
  }).on("error", (err) => {
359
374
  reject(err);
@@ -364,7 +379,7 @@ function testCaddy() {
364
379
  return new Promise((resolve, reject) => {
365
380
  if (!(0, import_node_fs2.existsSync)(caddyPath))
366
381
  return resolve(false);
367
- (0, import_node_fs2.chmodSync)(caddyPath, 493);
382
+ (0, import_node_fs2.chmodSync)(caddyPath, 511);
368
383
  const child = import_node_process4.default.platform === "win32" ? (0, import_node_child_process3.spawn)(caddyPath, []) : (0, import_node_child_process3.spawn)("sudo", ["-E", caddyPath]);
369
384
  child.on("close", () => {
370
385
  return resolve(false);
@@ -439,6 +454,16 @@ var CaddyInstant = class {
439
454
  const port = Number(source.split(":")[1]);
440
455
  if (!Number.isNaN(port) && await tryPort(port))
441
456
  await (0, import_kill_port.default)(port, "tcp");
457
+ const pwd2 = import_node_process4.default.cwd();
458
+ const viteCacheDir = `${pwd2}/node_modules/.vite`;
459
+ if ((0, import_node_fs2.existsSync)(viteCacheDir))
460
+ chmodRecursive(viteCacheDir, 511);
461
+ const nuxtCacheDir = `${pwd2}/.nuxt`;
462
+ if ((0, import_node_fs2.existsSync)(nuxtCacheDir))
463
+ await chmodRecursive(nuxtCacheDir, 511);
464
+ const webpackCacheDir = `${pwd2}/node_modules/.cache`;
465
+ if ((0, import_node_fs2.existsSync)(webpackCacheDir))
466
+ chmodRecursive(webpackCacheDir, 511);
442
467
  if (!restore || this.stoped)
443
468
  return originalExit(code);
444
469
  try {
@@ -480,27 +505,17 @@ var caddy;
480
505
  var pwd = import_node_process5.default.cwd();
481
506
  var vitePrintUrls = once((options, source, target, base = "/", _printUrls) => {
482
507
  _printUrls == null ? void 0 : _printUrls();
483
- const viteCacheDir = `${pwd}/node_modules/.vite`;
484
- if ((0, import_node_fs3.existsSync)(viteCacheDir))
485
- chmodRecursive(viteCacheDir, 511);
486
- const nuxtCacheDir = `${pwd}/.nuxt`;
487
- if ((0, import_node_fs3.existsSync)(nuxtCacheDir))
488
- chmodRecursive(nuxtCacheDir, 511);
489
- try {
490
- if (caddy)
491
- return;
492
- caddy = new CaddyInstant();
493
- caddy.run(source, target, __spreadValues({
494
- base
495
- }, options)).then(() => {
496
- const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
497
- consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}${base}`)}`);
498
- }).catch((e) => {
499
- throw e;
500
- });
501
- } catch (e) {
502
- consola.error(e);
503
- }
508
+ if (caddy)
509
+ return;
510
+ caddy = new CaddyInstant();
511
+ caddy.run(source, target, __spreadValues({
512
+ base
513
+ }, options)).then(() => {
514
+ const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
515
+ consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}${base}`)}`);
516
+ }).catch((e) => {
517
+ throw e;
518
+ });
504
519
  });
505
520
  var unpluginFactory = (options) => ({
506
521
  name: "unplugin-https-reverse-proxy",
@@ -511,12 +526,12 @@ var unpluginFactory = (options) => ({
511
526
  },
512
527
  configureServer(server) {
513
528
  var _a;
529
+ if (config.command !== "serve")
530
+ return;
514
531
  if (!isAdmin()) {
515
532
  consola.warn("please run as administrator");
516
533
  return;
517
534
  }
518
- if (config.command === "build")
519
- return;
520
535
  const {
521
536
  enable = true,
522
537
  target = ""
@@ -540,12 +555,12 @@ var unpluginFactory = (options) => ({
540
555
  },
541
556
  webpack(compiler) {
542
557
  var _a;
558
+ if (import_node_process5.default.env.NODE_ENV !== "development")
559
+ return;
543
560
  if (!isAdmin()) {
544
561
  consola.warn("please run as administrator");
545
562
  return;
546
563
  }
547
- if (import_node_process5.default.env.NODE_ENV !== "development")
548
- return;
549
564
  const {
550
565
  enable = true,
551
566
  target = ""
@@ -556,39 +571,32 @@ var unpluginFactory = (options) => ({
556
571
  consola.fail("please provide target");
557
572
  return;
558
573
  }
559
- const nuxtCacheDir = `${pwd}/node_modules/.cache`;
560
- if ((0, import_node_fs3.existsSync)(nuxtCacheDir))
561
- chmodRecursive(nuxtCacheDir, 511);
562
- try {
563
- const devServer = __spreadValues(__spreadValues({
564
- host: "localhost",
565
- port: 8080
566
- }, compiler.options.devServer), import_node_process5.default.VUE_CLI_SERVICE.projectOptions.devServer);
567
- const source = `${devServer.host}:${devServer.port}`;
568
- if (caddy)
569
- return;
570
- const _close = (_a = compiler.close) == null ? void 0 : _a.bind(compiler);
571
- if (_close) {
572
- compiler.close = async (callback) => {
573
- import_node_process5.default.on("exit", () => {
574
- _close && _close(callback);
575
- });
576
- };
577
- } else {
578
- options.https = false;
579
- }
580
- caddy = new CaddyInstant();
581
- caddy.run(source, target, __spreadValues({}, options)).then(() => {
582
- const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
583
- compiler.hooks.done.tap("unplugin-https-reverse-proxy", () => {
584
- consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}`)}`);
574
+ const devServer = __spreadValues(__spreadValues({
575
+ host: "localhost",
576
+ port: 8080
577
+ }, compiler.options.devServer), import_node_process5.default.VUE_CLI_SERVICE.projectOptions.devServer);
578
+ const source = `${devServer.host}:${devServer.port}`;
579
+ if (caddy)
580
+ return;
581
+ const _close = (_a = compiler.close) == null ? void 0 : _a.bind(compiler);
582
+ if (_close) {
583
+ compiler.close = async (callback) => {
584
+ import_node_process5.default.on("exit", () => {
585
+ _close && _close(callback);
585
586
  });
586
- }).catch((e) => {
587
- throw e;
588
- });
589
- } catch (e) {
590
- consola.error(e);
587
+ };
588
+ } else {
589
+ options.https = false;
591
590
  }
591
+ caddy = new CaddyInstant();
592
+ caddy.run(source, target, __spreadValues({}, options)).then(() => {
593
+ const colorUrl = (url) => import_picocolors.default.green(url.replace(/:(\d+)\//, (_, port) => `:${import_picocolors.default.bold(port)}/`));
594
+ compiler.hooks.done.tap("unplugin-https-reverse-proxy", () => {
595
+ consola.success(` ${import_picocolors.default.green("\u279C")} ${import_picocolors.default.bold("run caddy reverse proxy success")}: ${colorUrl(`${options.https ? "https" : "http"}://${target}`)}`);
596
+ });
597
+ }).catch((e) => {
598
+ throw e;
599
+ });
592
600
  }
593
601
  });
594
602
 
package/dist/webpack.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  unpluginFactory
3
- } from "./chunk-GAKOA5LE.js";
3
+ } from "./chunk-IUFVJYJ5.js";
4
4
  import "./chunk-RUJE3YFB.js";
5
5
 
6
6
  // src/webpack.ts
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "unplugin-https-reverse-proxy",
3
3
  "type": "module",
4
- "version": "1.0.0-beta.4",
4
+ "version": "1.0.0-beta.7",
5
5
  "packageManager": "pnpm@8.6.12",
6
6
  "description": "",
7
7
  "license": "MIT",
@@ -104,6 +104,7 @@
104
104
  },
105
105
  "dependencies": {
106
106
  "consola": "^3.2.3",
107
+ "dotenv-flow": "^4.1.0",
107
108
  "esno": "^0.17.0",
108
109
  "got-cjs": "^12.5.4",
109
110
  "hosts-so-easy": "^1.2.9",
@@ -1,7 +1,17 @@
1
1
  import { join } from 'node:path'
2
+ import os from 'node:os'
2
3
  import process from 'node:process'
4
+ import dotenvFlow from 'dotenv-flow'
3
5
 
4
- const TEMP_DIR = process.env.TEMP || process.env.TMPDIR || '/tmp'
6
+ dotenvFlow.config()
7
+
8
+ function resolvePath(path: string) {
9
+ if (path.startsWith('~'))
10
+ return join(os.homedir() || '', path.slice(1))
11
+ return path
12
+ }
13
+
14
+ export const TEMP_DIR = resolvePath(process.env.UHRP_CADDY_PATH || process.env.TEMP || process.env.TMPDIR || '/tmp')
5
15
  export const caddyPath = join(TEMP_DIR, `caddy${process.platform === 'win32' ? '.exe' : ''}`)
6
16
  export const caddyFilePath = join(TEMP_DIR, 'CADDYFILE')
7
17
 
@@ -1,14 +1,14 @@
1
1
  import { platform } from 'node:os'
2
2
  import process from 'node:process'
3
- import { chmodSync, createWriteStream, existsSync, unlinkSync } from 'node:fs'
3
+ import { chmodSync, createWriteStream, existsSync, mkdirSync, unlinkSync } from 'node:fs'
4
4
  import { spawn } from 'node:child_process'
5
5
  import { got } from 'got-cjs'
6
6
  import { HttpProxyAgent } from 'http-proxy-agent'
7
7
  import { HttpsProxyAgent } from 'https-proxy-agent'
8
8
  import kill from 'kill-port'
9
- import { consola } from '../utils'
9
+ import { chmodRecursive, consola, once } from '../utils'
10
10
  import { addHost, removeHost } from '../host'
11
- import { caddyPath, supportList } from './constants'
11
+ import { TEMP_DIR, caddyPath, supportList } from './constants'
12
12
  import { logProgress, logProgressOver, tryPort } from './utils'
13
13
 
14
14
  export async function download() {
@@ -18,6 +18,11 @@ export async function download() {
18
18
  return new Promise<string>((resolve, reject) => {
19
19
  // https://caddyserver.com/api/download?os=darwin&arch=amd64
20
20
 
21
+ if (!existsSync(TEMP_DIR)) {
22
+ mkdirSync(TEMP_DIR, { recursive: true })
23
+ chmodSync(TEMP_DIR, 0o777)
24
+ }
25
+
21
26
  const file = createWriteStream(caddyPath)
22
27
 
23
28
  let _platform = platform().toString()
@@ -42,6 +47,11 @@ export async function download() {
42
47
  const httpAgent = httpProxy ? new HttpProxyAgent(httpProxy) : undefined
43
48
  const httpsAgent = httpsProxy ? new HttpsProxyAgent(httpsProxy) : undefined
44
49
 
50
+ const chmodCaddyOnce = once(() => {
51
+ // chmod +x
52
+ chmodSync(caddyPath, 0o777)
53
+ })
54
+
45
55
  got.stream(dowmloadLink, {
46
56
  agent: {
47
57
  http: httpAgent,
@@ -49,12 +59,13 @@ export async function download() {
49
59
  },
50
60
  }).on('downloadProgress', (progress) => {
51
61
  logProgress(progress.percent)
62
+ chmodCaddyOnce()
52
63
  }).pipe(file).on('finish', () => {
53
64
  logProgressOver()
54
65
  if (process.platform === 'win32')
55
66
  return resolve(caddyPath)
56
67
  // chmod +x
57
- chmodSync(caddyPath, 0o755)
68
+ chmodSync(caddyPath, 0o777)
58
69
  resolve(caddyPath)
59
70
  }).on('error', (err) => {
60
71
  // consola.error(err)
@@ -67,7 +78,7 @@ function testCaddy() {
67
78
  return new Promise((resolve, reject) => {
68
79
  if (!existsSync(caddyPath))
69
80
  return resolve(false)
70
- chmodSync(caddyPath, 0o755)
81
+ chmodSync(caddyPath, 0o777)
71
82
  const child = process.platform === 'win32' ? spawn(caddyPath, []) : spawn('sudo', ['-E', caddyPath])
72
83
  child.on('close', () => {
73
84
  return resolve(false)
@@ -170,6 +181,18 @@ export class CaddyInstant {
170
181
  if (!Number.isNaN(port) && await tryPort(port))
171
182
  await kill(port, 'tcp')
172
183
 
184
+ // fix `Error: EPERM: operation not permitted`
185
+ const pwd = process.cwd()
186
+ const viteCacheDir = `${pwd}/node_modules/.vite`
187
+ if (existsSync(viteCacheDir))
188
+ chmodRecursive(viteCacheDir, 0o777)
189
+ const nuxtCacheDir = `${pwd}/.nuxt`
190
+ if (existsSync(nuxtCacheDir))
191
+ await chmodRecursive(nuxtCacheDir, 0o777)
192
+ const webpackCacheDir = `${pwd}/node_modules/.cache`
193
+ if (existsSync(webpackCacheDir))
194
+ chmodRecursive(webpackCacheDir, 0o777)
195
+
173
196
  if (!restore || this.stoped)
174
197
  return originalExit(code)
175
198