vxrn 1.21.6 → 1.21.8
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/config/getOptionsFilled.mjs +3 -5
- package/dist/config/getOptionsFilled.mjs.map +1 -1
- package/dist/config/getOptionsFilled.native.js +3 -5
- package/dist/config/getOptionsFilled.native.js.map +1 -1
- package/dist/config/getServerOptionsFilled.mjs +3 -2
- package/dist/config/getServerOptionsFilled.mjs.map +1 -1
- package/dist/config/getServerOptionsFilled.native.js +3 -2
- package/dist/config/getServerOptionsFilled.native.js.map +1 -1
- package/dist/config/getServerOptionsFilled.test.mjs +20 -0
- package/dist/config/getServerOptionsFilled.test.mjs.map +1 -0
- package/dist/config/getServerOptionsFilled.test.native.js +20 -0
- package/dist/config/getServerOptionsFilled.test.native.js.map +1 -0
- package/dist/config/getViteServerConfig.mjs +1 -0
- package/dist/config/getViteServerConfig.mjs.map +1 -1
- package/dist/config/getViteServerConfig.native.js +1 -0
- package/dist/config/getViteServerConfig.native.js.map +1 -1
- package/dist/exports/clean.mjs +84 -16
- package/dist/exports/clean.mjs.map +1 -1
- package/dist/exports/clean.native.js +89 -16
- package/dist/exports/clean.native.js.map +1 -1
- package/dist/exports/clean.test.mjs +81 -0
- package/dist/exports/clean.test.mjs.map +1 -0
- package/dist/exports/clean.test.native.js +88 -0
- package/dist/exports/clean.test.native.js.map +1 -0
- package/dist/exports/dev.mjs +14 -3
- package/dist/exports/dev.mjs.map +1 -1
- package/dist/exports/dev.native.js +14 -3
- package/dist/exports/dev.native.js.map +1 -1
- package/dist/serve/node.mjs +20 -24
- package/dist/serve/node.mjs.map +1 -1
- package/dist/serve/node.native.js +20 -22
- package/dist/serve/node.native.js.map +1 -1
- package/dist/serve/node.test.mjs +60 -0
- package/dist/serve/node.test.mjs.map +1 -0
- package/dist/serve/node.test.native.js +72 -0
- package/dist/serve/node.test.native.js.map +1 -0
- package/dist/utils/state.mjs +11 -1
- package/dist/utils/state.mjs.map +1 -1
- package/dist/utils/state.native.js +11 -1
- package/dist/utils/state.native.js.map +1 -1
- package/package.json +11 -11
- package/src/config/getOptionsFilled.ts +2 -4
- package/src/config/getServerOptionsFilled.test.ts +24 -0
- package/src/config/getServerOptionsFilled.ts +2 -1
- package/src/config/getViteServerConfig.ts +1 -0
- package/src/exports/clean.test.ts +82 -0
- package/src/exports/clean.ts +90 -26
- package/src/exports/dev.ts +19 -3
- package/src/serve/node.test.ts +63 -0
- package/src/serve/node.ts +22 -26
- package/src/types.ts +4 -2
- package/src/utils/state.ts +9 -1
- package/types/config/getOptionsFilled.d.ts +2 -0
- package/types/config/getOptionsFilled.d.ts.map +1 -1
- package/types/config/getServerOptionsFilled.d.ts.map +1 -1
- package/types/config/getServerOptionsFilled.test.d.ts.map +1 -0
- package/types/config/getViteServerConfig.d.ts.map +1 -1
- package/types/exports/build.d.ts +1 -0
- package/types/exports/build.d.ts.map +1 -1
- package/types/exports/clean.d.ts +6 -9
- package/types/exports/clean.d.ts.map +1 -1
- package/types/exports/clean.test.d.ts.map +1 -0
- package/types/exports/dev.d.ts.map +1 -1
- package/types/serve/node.d.ts.map +1 -1
- package/types/serve/node.test.d.ts.map +1 -0
- package/types/types.d.ts +3 -1
- package/types/types.d.ts.map +1 -1
- package/types/utils/state.d.ts.map +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["execFile","mkdtemp","mkdir","readFile","rm","writeFile","tmpdir","dirname","join","pathToFileURL","promisify","afterEach","describe","expect","it","execFileAsync","root","recursive","force","cacheDir","viteDir","participantsDir","participantCount","Promise","all","JSON","stringify","versionHash","moduleUrl","import","meta","filename","href","workerScript","participant","String","results","Array","from","length","_","env","process","VXRN_DONT_CLEAN_SELF","output","map","stdout","match","toHaveLength","parse","toEqual","rejects","toMatchObject","code"],"sources":["../../src/exports/clean.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,SAASC,OAAA,EAASC,KAAA,EAAOC,QAAA,EAAUC,EAAA,EAAIC,SAAA,QAAiB;AACxD,SAASC,MAAA,QAAc;AACvB,SAASC,OAAA,EAASC,IAAA,QAAY;AAC9B,SAASC,aAAA,QAAqB;AAC9B,SAASC,SAAA,QAAiB;AAC1B,SAASC,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AAEhD,MAAMC,aAAA,GAAgBL,SAAA,CAAUV,QAAQ;AAExCY,QAAA,CAAS,0BAA0B,MAAM;EACvC,IAAII,IAAA;EAEJL,SAAA,CAAU,YAAY;IACpB,IAAIK,IAAA,EAAM;MACR,MAAMZ,EAAA,CAAGY,IAAA,EAAM;QAAEC,SAAA,EAAW;QAAMC,KAAA,EAAO;MAAK,CAAC;IACjD;EACF,CAAC;EAEDJ,EAAA,CAAG,kDAAkD,YAAY;IAC/DE,IAAA,GAAO,MAAMf,OAAA,CAAQO,IAAA,CAAKF,MAAA,CAAO,GAAG,wBAAwB,CAAC;IAC7D,MAAMa,QAAA,GAAWX,IAAA,CAAKQ,IAAA,EAAM,gBAAgB,OAAO;IACnD,MAAMI,OAAA,GAAUZ,IAAA,CAAKQ,IAAA,EAAM,gBAAgB,OAAO;IAClD,MAAMK,eAAA,GAAkBb,IAAA,CAAKQ,IAAA,EAAM,cAAc;IACjD,MAAMM,gBAAA,GAAmB;IAEzB,MAAMC,OAAA,CAAQC,GAAA,CAAI,CAChBtB,KAAA,CAAMiB,QAAA,EAAU;MAAEF,SAAA,EAAW;IAAK,CAAC,GACnCf,KAAA,CAAMkB,OAAA,EAAS;MAAEH,SAAA,EAAW;IAAK,CAAC,GAClCf,KAAA,CAAMmB,eAAA,EAAiB;MAAEJ,SAAA,EAAW;IAAK,CAAC,EAC3C;IACD,MAAMM,OAAA,CAAQC,GAAA,CAAI,CAChBnB,SAAA,CAAUG,IAAA,CAAKW,QAAA,EAAU,YAAY,GAAGM,IAAA,CAAKC,SAAA,CAAU;MAAEC,WAAA,EAAa;IAAM,CAAC,CAAC,GAC9EtB,SAAA,CAAUG,IAAA,CAAKW,QAAA,EAAU,OAAO,GAAG,OAAO,GAC1Cd,SAAA,CAAUG,IAAA,CAAKY,OAAA,EAAS,OAAO,GAAG,OAAO,EAC1C;IAED,MAAMQ,SAAA,GAAYnB,aAAA,CAAcD,IAAA,CAAKD,OAAA,CAAQsB,MAAA,CAAAC,IAAA,CAAYC,QAAQ,GAAG,UAAU,CAAC,EAAEC,IAAA;IACjF,MAAMC,YAAA,GAAgBC,WAAA,IAAwB;AAAA;AAAA;AAAA,+CAGHT,IAAA,CAAKC,SAAA,CAAUE,SAAS,CAAC;AAAA;AAAA,qBAEnDH,IAAA,CAAKC,SAAA,CAAUV,IAAI,CAAC;AAAA,gCACTS,IAAA,CAAKC,SAAA,CAAUL,eAAe,CAAC;AAAA,8CACjBI,IAAA,CAAKC,SAAA,CAAUS,MAAA,CAAOD,WAAW,CAAC,CAAC;AAAA,yDACxBZ,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;IAWrE,MAAMc,OAAA,GAAU,MAAMb,OAAA,CAAQC,GAAA,CAC5Ba,KAAA,CAAMC,IAAA,CAAK;MAAEC,MAAA,EAAQjB;IAAiB,GAAG,CAACkB,CAAA,EAAGN,WAAA,KAC3CnB,aAAA,CAAc,OAAO,CAAC,MAAMkB,YAAA,CAAaC,WAAW,CAAC,GAAG;MACtDO,GAAA,EAAK;QAAE,GAAGC,OAAA,CAAQD,GAAA;QAAKE,oBAAA,EAAsB;MAAG;IAClD,CAAC,CACH,CACF;IACA,MAAMC,MAAA,GAASR,OAAA,CAAQS,GAAA,CAAI,CAAC;MAAEC;IAAO,MAAMA,MAAM,EAAEtC,IAAA,CAAK,IAAI;IAE5DK,MAAA,CAAO+B,MAAA,CAAOG,KAAA,CAAM,oBAAoB,CAAC,EAAEC,YAAA,CAAa,CAAC;IACzDnC,MAAA,CAAO+B,MAAA,CAAOG,KAAA,CAAM,oBAAoB,CAAC,EAAEC,YAAA,CAAa,CAAC;IACzDnC,MAAA,CAAOY,IAAA,CAAKwB,KAAA,CAAM,MAAM9C,QAAA,CAASK,IAAA,CAAKW,QAAA,EAAU,YAAY,GAAG,MAAM,CAAC,CAAC,EAAE+B,OAAA,CAAQ;MAC/EvB,WAAA,EAAa;IACf,CAAC;IACD,MAAMd,MAAA,CAAOV,QAAA,CAASK,IAAA,CAAKW,QAAA,EAAU,OAAO,CAAC,CAAC,EAAEgC,OAAA,CAAQC,aAAA,CAAc;MACpEC,IAAA,EAAM;IACR,CAAC;IACD,MAAMxC,MAAA,CAAOV,QAAA,CAASK,IAAA,CAAKY,OAAA,EAAS,OAAO,CAAC,CAAC,EAAE+B,OAAA,CAAQC,aAAA,CAAc;MACnEC,IAAA,EAAM;IACR,CAAC;IACD,MAAMxC,MAAA,CACJV,QAAA,CAASK,IAAA,CAAKQ,IAAA,EAAM,gBAAgB,kBAAkB,CAAC,CACzD,EAAEmC,OAAA,CAAQC,aAAA,CAAc;MAAEC,IAAA,EAAM;IAAS,CAAC;EAC5C,GAAG,GAAM;AACX,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import { mkdtemp, mkdir, readFile, rm, writeFile } from "fs/promises";
|
|
3
|
+
import { tmpdir } from "os";
|
|
4
|
+
import { dirname, join } from "path";
|
|
5
|
+
import { pathToFileURL } from "url";
|
|
6
|
+
import { promisify } from "util";
|
|
7
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
8
|
+
var execFileAsync = promisify(execFile);
|
|
9
|
+
describe("prepareCacheForVersion", function () {
|
|
10
|
+
var root;
|
|
11
|
+
afterEach(async function () {
|
|
12
|
+
if (root) {
|
|
13
|
+
await rm(root, {
|
|
14
|
+
recursive: true,
|
|
15
|
+
force: true
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
it("lets one process clean a stale same-root cache", async function () {
|
|
20
|
+
root = await mkdtemp(join(tmpdir(), "vxrn-concurrent-clean-"));
|
|
21
|
+
var cacheDir = join(root, "node_modules", ".vxrn");
|
|
22
|
+
var viteDir = join(root, "node_modules", ".vite");
|
|
23
|
+
var participantsDir = join(root, "participants");
|
|
24
|
+
var participantCount = 4;
|
|
25
|
+
await Promise.all([mkdir(cacheDir, {
|
|
26
|
+
recursive: true
|
|
27
|
+
}), mkdir(viteDir, {
|
|
28
|
+
recursive: true
|
|
29
|
+
}), mkdir(participantsDir, {
|
|
30
|
+
recursive: true
|
|
31
|
+
})]);
|
|
32
|
+
await Promise.all([writeFile(join(cacheDir, "state.json"), JSON.stringify({
|
|
33
|
+
versionHash: "old"
|
|
34
|
+
})), writeFile(join(cacheDir, "stale"), "stale"), writeFile(join(viteDir, "stale"), "stale")]);
|
|
35
|
+
var moduleUrl = pathToFileURL(join(dirname(import.meta.filename), "clean.ts")).href;
|
|
36
|
+
var workerScript = function (participant) {
|
|
37
|
+
return `
|
|
38
|
+
import { readdir, writeFile } from 'node:fs/promises'
|
|
39
|
+
import { join } from 'node:path'
|
|
40
|
+
import { prepareCacheForVersion } from ${JSON.stringify(moduleUrl)}
|
|
41
|
+
|
|
42
|
+
const root = ${JSON.stringify(root)}
|
|
43
|
+
const participantsDir = ${JSON.stringify(participantsDir)}
|
|
44
|
+
await writeFile(join(participantsDir, ${JSON.stringify(String(participant))}), '')
|
|
45
|
+
while ((await readdir(participantsDir)).length < ${participantCount}) {
|
|
46
|
+
await Bun.sleep(5)
|
|
47
|
+
}
|
|
48
|
+
const cleaned = await prepareCacheForVersion({
|
|
49
|
+
root,
|
|
50
|
+
cacheDir: join(root, 'node_modules', '.vxrn'),
|
|
51
|
+
versionHash: 'new',
|
|
52
|
+
})
|
|
53
|
+
console.info(cleaned ? 'cleaned-by-worker' : 'cache-already-current')
|
|
54
|
+
`;
|
|
55
|
+
};
|
|
56
|
+
var results = await Promise.all(Array.from({
|
|
57
|
+
length: participantCount
|
|
58
|
+
}, function (_, participant) {
|
|
59
|
+
return execFileAsync("bun", ["-e", workerScript(participant)], {
|
|
60
|
+
env: {
|
|
61
|
+
...process.env,
|
|
62
|
+
VXRN_DONT_CLEAN_SELF: ""
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}));
|
|
66
|
+
var output = results.map(function (param) {
|
|
67
|
+
var {
|
|
68
|
+
stdout
|
|
69
|
+
} = param;
|
|
70
|
+
return stdout;
|
|
71
|
+
}).join("\n");
|
|
72
|
+
expect(output.match(/\[vxrn\] cleaning/g)).toHaveLength(1);
|
|
73
|
+
expect(output.match(/cleaned-by-worker/g)).toHaveLength(1);
|
|
74
|
+
expect(JSON.parse(await readFile(join(cacheDir, "state.json"), "utf8"))).toEqual({
|
|
75
|
+
versionHash: "new"
|
|
76
|
+
});
|
|
77
|
+
await expect(readFile(join(cacheDir, "stale"))).rejects.toMatchObject({
|
|
78
|
+
code: "ENOENT"
|
|
79
|
+
});
|
|
80
|
+
await expect(readFile(join(viteDir, "stale"))).rejects.toMatchObject({
|
|
81
|
+
code: "ENOENT"
|
|
82
|
+
});
|
|
83
|
+
await expect(readFile(join(root, "node_modules", ".vxrn-clean.lock"))).rejects.toMatchObject({
|
|
84
|
+
code: "ENOENT"
|
|
85
|
+
});
|
|
86
|
+
}, 2e4);
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=clean.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["execFile","mkdtemp","mkdir","readFile","rm","writeFile","tmpdir","dirname","join","pathToFileURL","promisify","afterEach","describe","expect","it","execFileAsync","root","recursive","force","cacheDir","viteDir","participantsDir","participantCount","Promise","all","JSON","stringify","versionHash","moduleUrl","import","meta","filename","href","workerScript","participant","String","results","Array","from","length","_","env","process","VXRN_DONT_CLEAN_SELF"],"sources":["../../src/exports/clean.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,QAAgB;AACzB,SAASC,OAAA,EAASC,KAAA,EAAOC,QAAA,EAAUC,EAAA,EAAIC,SAAA,QAAiB;AACxD,SAASC,MAAA,QAAc;AACvB,SAASC,OAAA,EAASC,IAAA,QAAY;AAC9B,SAASC,aAAA,QAAqB;AAC9B,SAASC,SAAA,QAAiB;AAC1B,SAASC,SAAA,EAAWC,QAAA,EAAUC,MAAA,EAAQC,EAAA,QAAU;AAEhD,IAAAC,aAAM,GAAAL,SAAgB,CAAAV,QAAU;AAEhCY,QAAA,CAAS,0BAA0B,YAAM;EACvC,IAAII,IAAA;EAEJL,SAAA,CAAU,kBAAY;IACpB,IAAIK,IAAA,EAAM;MACR,MAAMZ,EAAA,CAAGY,IAAA,EAAM;QACjBC,SAAA;QACDC,KAAA;MAEE;IACD;EACA;EACAJ,EAAA,iDAA2C,EAAO;IAClDE,IAAA,GAAM,MAAAf,OAAA,CAAAO,IAAkB,CAAAF,MAAK,IAAM,wBAAc;IACjD,IAAAa,QAAM,GAAAX,IAAA,CAAAQ,IAAA,EAAmB;IAEzB,IAAAI,OAAM,GAAQZ,IAAI,CAAAQ,IAAA;IAAA,IAChBK,eAAgB,GAAEb,IAAA,CAAAQ,IAAW,gBAAM;IAAA,IACnCM,gBAAiB;IAAiB,MAClCC,OAAM,CAAAC,GAAA,EACPtB,KAAA,CAAAiB,QAAA;MACDF,SAAM,EAAQ;IACZ,IACAf,KAAA,CAAAkB,OAAU,EAAK;MACfH,SAAU;IACX,IAEDf,KAAM,CAAAmB,eAAY;MAClBJ,SAAM;IAAwC;IAAA,MAAAM,OAAA,CAAAC,GAAA,EAGsBnB,SAAA,CAAAG,IAAA,CAAAW,QAAA,iBAAAM,IAAA,CAAAC,SAAA;MAAAC,WAAA,EAEnD;IAAoB,KACsBtB,SAAA,CAAAG,IAAA,CAAAW,QAAA,mBACjB,GAAmCd,SAAA,CAAAG,IAAA,CAAAY,OAAA,qBACR;IAAA,IAAAQ,SAAA,GAAAnB,aAAA,CAAAD,IAAA,CAAAD,OAAA,CAAAsB,MAAA,CAAAC,IAAA,CAAAC,QAAA,gBAAAC,IAAA;IAAA,IAAAC,YAAA,YAAAA,CAAAC,WAAA;MAAA;AAAA;AAAA;AAAA,+CAAAT,IAAA,CAAAC,SAAA,CAAAE,SAAA;AAAA;AAAA,qBAAAH,IAAA,CAAAC,SAAA,CAAAV,IAAA;AAWrE,gCAAsBS,IAAQ,CAAAC,SAAA,CAAAL,eAAA;AAAA,8CACtBI,IAAA,CAAAC,SAAA,CAAAS,MAAA,CAAAD,WAAA;AAAA,yDAAgCZ,gBAAA;AAAA;AACoB;AACN;AACjD;AACH;AAEF;AAEA;AACA;AACA;IAAiF;IAEjF,IAACc,OAAA,SAAAb,OAAA,CAAAC,GAAA,CAAAa,KAAA,CAAAC,IAAA;MACDC,MAAM,EAAAjB;IAAgE,GACpE,UAAMkB,CAAA,EAAAN,WAAA;MACP,OAAAnB,aAAA,SACD,IAAM,EACJkB,YAAM,CAAAC,WAAA,EACP;QACDO,GAAM;UACJ,GAAAC,OAAc,CAAAD,GAAA;UACdE,oBAAwB;QACnB;MACV","ignoreList":[]}
|
package/dist/exports/dev.mjs
CHANGED
|
@@ -38,7 +38,7 @@ const dev = async optionsIn => {
|
|
|
38
38
|
printServerUrls
|
|
39
39
|
} = await import("../utils/printServerUrls.mjs");
|
|
40
40
|
const {
|
|
41
|
-
|
|
41
|
+
prepareCacheForVersion
|
|
42
42
|
} = await import("./clean.mjs");
|
|
43
43
|
const {
|
|
44
44
|
filterViteServerResolvedUrls
|
|
@@ -92,10 +92,16 @@ export default defineConfig({
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
const oneServerConfig = config?.plugins?.find(x => Array.isArray(x) && x[0]?.["name"] === "one:config")?.[0]?.["__get"]?.server;
|
|
95
|
+
const viteServerConfig = config.server;
|
|
95
96
|
const options = await fillOptions({
|
|
96
97
|
...optionsIn,
|
|
97
98
|
server: {
|
|
98
99
|
...oneServerConfig,
|
|
100
|
+
...removeUndefined({
|
|
101
|
+
host: viteServerConfig?.host === true ? "0.0.0.0" : typeof viteServerConfig?.host === "string" ? viteServerConfig.host : void 0,
|
|
102
|
+
https: viteServerConfig?.https,
|
|
103
|
+
port: viteServerConfig?.port
|
|
104
|
+
}),
|
|
99
105
|
...removeUndefined(optionsIn.server || {})
|
|
100
106
|
}
|
|
101
107
|
});
|
|
@@ -103,8 +109,13 @@ export default defineConfig({
|
|
|
103
109
|
cacheDir
|
|
104
110
|
} = options;
|
|
105
111
|
bindKeypressInput();
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
const cacheWasCleaned = await prepareCacheForVersion({
|
|
113
|
+
root: options.root,
|
|
114
|
+
cacheDir,
|
|
115
|
+
versionHash: options.versionHash,
|
|
116
|
+
forceClean: optionsIn.clean === true
|
|
117
|
+
});
|
|
118
|
+
if (options.clean || cacheWasCleaned) {
|
|
108
119
|
process.env.METRO_RESET_CACHE = "1";
|
|
109
120
|
}
|
|
110
121
|
await ensureDir(cacheDir);
|
package/dist/exports/dev.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FSExtra","colors","debounce","normalizePath","ensureDir","setupOrphanDetection","process","platform","initialPpid","ppid","interval","setInterval","exit","unref","dev","optionsIn","devStartTime","Date","now","env","IS_VXRN_CLI","debug","DEBUG","startUserInterface","bindKeypressInput","fillOptions","getViteServerConfig","printServerUrls","
|
|
1
|
+
{"version":3,"names":["FSExtra","colors","debounce","normalizePath","ensureDir","setupOrphanDetection","process","platform","initialPpid","ppid","interval","setInterval","exit","unref","dev","optionsIn","devStartTime","Date","now","env","IS_VXRN_CLI","debug","DEBUG","startUserInterface","bindKeypressInput","fillOptions","getViteServerConfig","printServerUrls","prepareCacheForVersion","filterViteServerResolvedUrls","removeUndefined","createServer","loadConfigFromFile","config","mode","command","console","error","extraConfig","resolve","extraConfigPath","extraResult","mergeConfig","info","cyan","warn","yellow","oneServerConfig","plugins","find","x","Array","isArray","server","viteServerConfig","options","host","https","port","cacheDir","cacheWasCleaned","root","versionHash","forceClean","clean","METRO_RESET_CACHE","serverConfig","viteServer","isClosing","start","connectedNativeClients","pendingTransforms","Map","watcher","addListener","path","normalizedPath","includes","normalizedCwd","cwd","id","replace","endsWith","has","set","transformRequest","err","get","httpServer","on","listen","totalStartupTime","bold","viteServerResolvedUrls","resolvedUrls","logger","closePromise","Promise","res","stop","removeAllListeners","close"],"sources":["../../src/exports/dev.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,OAAA,MAAa;AACpB,OAAOC,MAAA,MAAY;AACnB,SAASC,QAAA,QAAgB;AACzB,SAASC,aAAA,QAAyC;AAGlD,MAAM;EAAEC;AAAU,IAAIJ,OAAA;AAGtB,SAASK,qBAAA,EAAuB;EAC9B,IAAIC,OAAA,CAAQC,QAAA,KAAa,SAAS;EAElC,MAAMC,WAAA,GAAcF,OAAA,CAAQG,IAAA;EAC5B,MAAMC,QAAA,GAAWC,WAAA,CAAY,MAAM;IAEjC,IAAIL,OAAA,CAAQG,IAAA,KAASD,WAAA,EAAa;MAChCF,OAAA,CAAQM,IAAA,CAAK,CAAC;IAChB;EACF,GAAG,GAAG;EACNF,QAAA,CAASG,KAAA,CAAM;AACjB;AAUO,MAAMC,GAAA,GAAM,MAAOC,SAAA,IAA0B;EAClDV,oBAAA,CAAqB;EAErB,MAAMW,YAAA,GAAeC,IAAA,CAAKC,GAAA,CAAI;EAC9BZ,OAAA,CAAQa,GAAA,CAAIC,WAAA,GAAc;EAE1B,IAAI,OAAOL,SAAA,CAAUM,KAAA,KAAU,UAAU;IACvCf,OAAA,CAAQa,GAAA,CAAIG,KAAA,KAAU,CAACP,SAAA,CAAUM,KAAA,GAAQ,SAAS,QAAQN,SAAA,CAAUM,KAAK;EAC3E;EAGA,MAAM;IAAEE;EAAmB,IAAI,MAAM,OAAO,6BAAyB;EACrE,MAAM;IAAEC;EAAkB,IAAI,MAAM,OAAO,gCAA4B;EACvE,MAAM;IAAEC;EAAY,IAAI,MAAM,OAAO,gCAA4B;EACjE,MAAM;IAAEC;EAAoB,IAAI,MAAM,OAAO,mCAA+B;EAC5E,MAAM;IAAEC;EAAgB,IAAI,MAAM,OAAO,8BAA0B;EACnE,MAAM;IAAEC;EAAuB,IAAI,MAAM,OAAO,aAAS;EACzD,MAAM;IAAEC;EAA6B,IACnC,MAAM,OAAO,2CAAuC;EACtD,MAAM;IAAEC;EAAgB,IAAI,MAAM,OAAO,8BAA0B;EACnE,MAAM;IAAEC,YAAA;IAAcC;EAAmB,IAAI,MAAM,OAAO,MAAM;EAEhE,IAAI;IAAEC;EAAO,IACV,OAAMD,kBAAA,CAAmB;IACxBE,IAAA,EAAM;IACNC,OAAA,EAAS;EACX,CAAC,MAAM,CAAC;EAEV,IAAI,CAACF,MAAA,EAAQ;IACXG,OAAA,CAAQC,KAAA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAYjB;IACG/B,OAAA,CAAQM,IAAA,CAAK,CAAC;EAChB;EAEA,IAAIG,SAAA,CAAUuB,WAAA,EAAa;IACzB,MAAM;MAAEC;IAAQ,IAAI,MAAM,OAAO,WAAW;IAC5C,MAAMC,eAAA,GAAkBD,OAAA,CAAQxB,SAAA,CAAUuB,WAAW;IACrD,MAAMG,WAAA,GAAc,MAAMT,kBAAA,CACxB;MAAEE,IAAA,EAAM;MAAOC,OAAA,EAAS;IAAQ,GAChCK,eACF;IACA,IAAIC,WAAA,EAAaR,MAAA,EAAQ;MACvB,MAAM;QAAES;MAAY,IAAI,MAAM,OAAO,MAAM;MAC3CT,MAAA,GAASS,WAAA,CAAYT,MAAA,EAAQQ,WAAA,CAAYR,MAAM;MAC/CG,OAAA,CAAQO,IAAA,CAAK1C,MAAA,CAAO2C,IAAA,CAAK,4BAA4BJ,eAAe,EAAE,CAAC;IACzE,OAAO;MACLJ,OAAA,CAAQS,IAAA,CAAK5C,MAAA,CAAO6C,MAAA,CAAO,oCAAoCN,eAAe,EAAE,CAAC;IACnF;EACF;EAIA,MAAMO,eAAA,GAAkBd,MAAA,EAAQe,OAAA,EAASC,IAAA,CACtCC,CAAA,IAAMC,KAAA,CAAMC,OAAA,CAAQF,CAAC,KAAKA,CAAA,CAAE,CAAC,IAAI,MAAM,MAAM,YAChD,IAAI,CAAC,IAAI,OAAO,GAAGG,MAAA;EACnB,MAAMC,gBAAA,GAAmBrB,MAAA,CAAOoB,MAAA;EAEhC,MAAME,OAAA,GAAU,MAAM9B,WAAA,CAAY;IAChC,GAAGV,SAAA;IACHsC,MAAA,EAAQ;MACN,GAAGN,eAAA;MACH,GAAGjB,eAAA,CAAgB;QACjB0B,IAAA,EACEF,gBAAA,EAAkBE,IAAA,KAAS,OACvB,YACA,OAAOF,gBAAA,EAAkBE,IAAA,KAAS,WAChCF,gBAAA,CAAiBE,IAAA,GACjB;QACRC,KAAA,EAAOH,gBAAA,EAAkBG,KAAA;QACzBC,IAAA,EAAMJ,gBAAA,EAAkBI;MAC1B,CAAC;MACD,GAAG5B,eAAA,CAAgBf,SAAA,CAAUsC,MAAA,IAAU,CAAC,CAAC;IAC3C;EACF,CAAC;EAED,MAAM;IAAEM;EAAS,IAAIJ,OAAA;EAErB/B,iBAAA,CAAkB;EAElB,MAAMoC,eAAA,GAAkB,MAAMhC,sBAAA,CAAuB;IACnDiC,IAAA,EAAMN,OAAA,CAAQM,IAAA;IACdF,QAAA;IACAG,WAAA,EAAaP,OAAA,CAAQO,WAAA;IACrBC,UAAA,EAAYhD,SAAA,CAAUiD,KAAA,KAAU;EAClC,CAAC;EACD,IAAIT,OAAA,CAAQS,KAAA,IAASJ,eAAA,EAAiB;IAEpCtD,OAAA,CAAQa,GAAA,CAAI8C,iBAAA,GAAoB;EAClC;EAEA,MAAM7D,SAAA,CAAUuD,QAAQ;EAGxB,MAAMvD,SAAA,CAAU,GAAGuD,QAAQ,iBAAiB;EAE5C,MAAMO,YAAA,GAAe,MAAMxC,mBAAA,CAAoB6B,OAAA,EAAStB,MAAM;EAE9D,IAAIkC,UAAA,GAAmC;EAEvC,IAAIC,SAAA,GAAY;EAEhB,OAAO;IACLD,UAAA;IAEAE,KAAA,EAAO,MAAAA,CAAA,KAAY;MACjBF,UAAA,GAAa,MAAMpC,YAAA,CAAamC,YAAY;MAK5C,MAAM;QAAEI;MAAuB,IAAI,MAAM,OAAO,qCAAiC;MACjF,MAAMC,iBAAA,GAAoB,mBAAIC,GAAA,CAAyC;MAEvEL,UAAA,CAAWM,OAAA,CAAQC,WAAA,CAAY,UAAU,MAAOC,IAAA,IAAS;QAEvD,IAAIP,SAAA,IAAaE,sBAAA,KAA2B,GAAG;UAC7C;QACF;QAGA,MAAMM,cAAA,GAAiBzE,aAAA,CAAcwE,IAAI;QACzC,IAAIC,cAAA,CAAeC,QAAA,CAAS,QAAQ,GAAG;UACrC;QACF;QAEA,MAAMC,aAAA,GAAgB3E,aAAA,CAAcG,OAAA,CAAQyE,GAAA,CAAI,CAAC;QACjD,MAAMC,EAAA,GAAKJ,cAAA,CAAeK,OAAA,CAAQH,aAAA,EAAe,EAAE;QACnD,IAAI,CAACE,EAAA,CAAGE,QAAA,CAAS,KAAK,KAAK,CAACF,EAAA,CAAGE,QAAA,CAAS,KAAK,GAAG;UAC9C;QACF;QAGA,IAAI,CAACX,iBAAA,CAAkBY,GAAA,CAAIH,EAAE,GAAG;UAC9BT,iBAAA,CAAkBa,GAAA,CAChBJ,EAAA,EACA9E,QAAA,CAAS,YAAY;YACnB,IAAIkE,SAAA,EAAW;YACf,IAAI;cACF,MAAMD,UAAA,CAAYkB,gBAAA,CAAiBL,EAAE;YACvC,SAASM,GAAA,EAAK;cAEZ,IAAI,CAAClB,SAAA,EAAW;gBACdhC,OAAA,CAAQO,IAAA,CAAK,OAAO2C,GAAG;cACzB;YACF;UACF,GAAG,GAAG,CACR;QACF;QAEAf,iBAAA,CAAkBgB,GAAA,CAAIP,EAAE,EAAG;MAC7B,CAAC;MAGDb,UAAA,CAAWqB,UAAA,EAAYC,EAAA,CAAG,SAAS,MAAM;QACvCrB,SAAA,GAAY;MACd,CAAC;MAED,MAAMD,UAAA,CAAWuB,MAAA,CAAO;MAExB,MAAMC,gBAAA,GAAmB1E,IAAA,CAAKC,GAAA,CAAI,IAAIF,YAAA;MAEtCoB,OAAA,CAAQO,IAAA,CAAK;MACbP,OAAA,CAAQO,IAAA,CAAK1C,MAAA,CAAO2F,IAAA,CAAK,mBAAmB,IAAI,SAAI;MACpDxD,OAAA,CAAQO,IAAA,CAAK;MAEb,MAAMkD,sBAAA,GAAyBhE,4BAAA,CAA6BsC,UAAA,CAAW2B,YAAY;MACnF,IAAID,sBAAA,EAAwB;QAC1BlE,eAAA,CAAgBkE,sBAAA,EAAwB,CAAC,GAAG1B,UAAA,CAAWlC,MAAA,CAAO8D,MAAA,CAAOpD,IAAI;MAC3E;MAEApB,kBAAA,CAAmB;QAAE8B,MAAA,EAAQc;MAAW,CAAC;MAEzC,OAAO;QACL6B,YAAA,EAAc,IAAIC,OAAA,CAASC,GAAA,IAAQ;UACjC/B,UAAA,EAAYqB,UAAA,EAAYC,EAAA,CAAG,SAASS,GAAG;QACzC,CAAC;MACH;IACF;IAEAC,IAAA,EAAMA,CAAA,KAAM;MACV/B,SAAA,GAAY;MACZ,IAAID,UAAA,EAAY;QACdA,UAAA,CAAWM,OAAA,CAAQ2B,kBAAA,CAAmB;QACtC,OAAOjC,UAAA,CAAWkC,KAAA,CAAM;MAC1B;IACF;EACF;AACF","ignoreList":[]}
|
|
@@ -41,7 +41,7 @@ var dev = async function (optionsIn) {
|
|
|
41
41
|
printServerUrls
|
|
42
42
|
} = await import("../utils/printServerUrls.native.js");
|
|
43
43
|
var {
|
|
44
|
-
|
|
44
|
+
prepareCacheForVersion
|
|
45
45
|
} = await import("./clean.native.js");
|
|
46
46
|
var {
|
|
47
47
|
filterViteServerResolvedUrls
|
|
@@ -98,10 +98,16 @@ export default defineConfig({
|
|
|
98
98
|
var _x_;
|
|
99
99
|
return Array.isArray(x) && ((_x_ = x[0]) === null || _x_ === void 0 ? void 0 : _x_["name"]) === "one:config";
|
|
100
100
|
})) === null || _config_plugins_find === void 0 ? void 0 : (_config_plugins_find_ = _config_plugins_find[0]) === null || _config_plugins_find_ === void 0 ? void 0 : (_config_plugins_find____get = _config_plugins_find_["__get"]) === null || _config_plugins_find____get === void 0 ? void 0 : _config_plugins_find____get.server;
|
|
101
|
+
var viteServerConfig = config.server;
|
|
101
102
|
var options = await fillOptions({
|
|
102
103
|
...optionsIn,
|
|
103
104
|
server: {
|
|
104
105
|
...oneServerConfig,
|
|
106
|
+
...removeUndefined({
|
|
107
|
+
host: (viteServerConfig === null || viteServerConfig === void 0 ? void 0 : viteServerConfig.host) === true ? "0.0.0.0" : typeof (viteServerConfig === null || viteServerConfig === void 0 ? void 0 : viteServerConfig.host) === "string" ? viteServerConfig.host : void 0,
|
|
108
|
+
https: viteServerConfig === null || viteServerConfig === void 0 ? void 0 : viteServerConfig.https,
|
|
109
|
+
port: viteServerConfig === null || viteServerConfig === void 0 ? void 0 : viteServerConfig.port
|
|
110
|
+
}),
|
|
105
111
|
...removeUndefined(optionsIn.server || {})
|
|
106
112
|
}
|
|
107
113
|
});
|
|
@@ -109,8 +115,13 @@ export default defineConfig({
|
|
|
109
115
|
cacheDir
|
|
110
116
|
} = options;
|
|
111
117
|
bindKeypressInput();
|
|
112
|
-
|
|
113
|
-
|
|
118
|
+
var cacheWasCleaned = await prepareCacheForVersion({
|
|
119
|
+
root: options.root,
|
|
120
|
+
cacheDir,
|
|
121
|
+
versionHash: options.versionHash,
|
|
122
|
+
forceClean: optionsIn.clean === true
|
|
123
|
+
});
|
|
124
|
+
if (options.clean || cacheWasCleaned) {
|
|
114
125
|
process.env.METRO_RESET_CACHE = "1";
|
|
115
126
|
}
|
|
116
127
|
await ensureDir(cacheDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FSExtra","colors","debounce","normalizePath","ensureDir","setupOrphanDetection","process","platform","initialPpid","ppid","interval","setInterval","exit","unref","dev","optionsIn","_ref","_config_plugins_find____get","_config_plugins_find_","_config_plugins_find","_config_plugins","devStartTime","Date","now","env","IS_VXRN_CLI","debug","_process_env","DEBUG","startUserInterface","bindKeypressInput","fillOptions","getViteServerConfig","printServerUrls","
|
|
1
|
+
{"version":3,"names":["FSExtra","colors","debounce","normalizePath","ensureDir","setupOrphanDetection","process","platform","initialPpid","ppid","interval","setInterval","exit","unref","dev","optionsIn","_ref","_config_plugins_find____get","_config_plugins_find_","_config_plugins_find","_config_plugins","devStartTime","Date","now","env","IS_VXRN_CLI","debug","_process_env","DEBUG","startUserInterface","bindKeypressInput","fillOptions","getViteServerConfig","printServerUrls","prepareCacheForVersion","filterViteServerResolvedUrls","removeUndefined","createServer","loadConfigFromFile","config","mode","command","console","error","extraConfig","resolve","extraConfigPath","extraResult","mergeConfig","info","cyan","warn","yellow","oneServerConfig","plugins","find","x","_x_","Array","isArray","server","viteServerConfig","options","host","https","port","cacheDir","cacheWasCleaned","root","versionHash","forceClean","clean","METRO_RESET_CACHE","serverConfig","viteServer","isClosing","start","_viteServer_httpServer","connectedNativeClients","pendingTransforms","Map","watcher","addListener","path","normalizedPath","includes","normalizedCwd","cwd","id","replace","endsWith","has","set","transformRequest","err","get","httpServer","on","listen","totalStartupTime","bold","viteServerResolvedUrls","resolvedUrls","logger","closePromise","Promise","res","_viteServer_httpServer2","stop","removeAllListeners"],"sources":["../../src/exports/dev.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/serve/node.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createServer } from "node:http";
|
|
2
2
|
import { networkInterfaces, platform } from "node:os";
|
|
3
3
|
import { getRequestListener } from "@hono/node-server";
|
|
4
|
-
import { serve as honoServe } from "@hono/node-server";
|
|
5
4
|
import colors from "picocolors";
|
|
6
5
|
function getNetworkAddress() {
|
|
7
6
|
for (const addresses of Object.values(networkInterfaces())) {
|
|
@@ -20,22 +19,20 @@ const canReusePort = !["win32", "darwin"].includes(platform()) && (isBun || (()
|
|
|
20
19
|
async function honoServeNode(app, options) {
|
|
21
20
|
const port = options.port ?? 3e3;
|
|
22
21
|
const host = options.host ?? "0.0.0.0";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
const listener = getRequestListener((request, env) => {
|
|
23
|
+
request.headers.delete("x-vxrn-peer-address");
|
|
24
|
+
const address = env.incoming.socket.remoteAddress;
|
|
25
|
+
if (address) request.headers.set("x-vxrn-peer-address", address);
|
|
26
|
+
return app.fetch(request, env);
|
|
27
|
+
});
|
|
28
|
+
const server = createServer(listener);
|
|
29
|
+
server.listen({
|
|
30
|
+
port,
|
|
31
|
+
host,
|
|
32
|
+
...(canReusePort && process.env.ONE_CLUSTER_WORKER === "1" ? {
|
|
30
33
|
reusePort: true
|
|
31
|
-
})
|
|
32
|
-
}
|
|
33
|
-
server = honoServe({
|
|
34
|
-
fetch: app.fetch,
|
|
35
|
-
port,
|
|
36
|
-
hostname: host
|
|
37
|
-
});
|
|
38
|
-
}
|
|
34
|
+
} : {})
|
|
35
|
+
});
|
|
39
36
|
const colorUrl = url => colors.cyan(url.replace(/:(\d+)\//, (_, port2) => `:${colors.bold(port2)}/`));
|
|
40
37
|
const displayHost = host === "0.0.0.0" ? "localhost" : host;
|
|
41
38
|
const localUrl = `http://${displayHost}:${port}/`;
|
|
@@ -49,15 +46,14 @@ async function honoServeNode(app, options) {
|
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
console.info();
|
|
52
|
-
const shutdown = () =>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
process.on("SIGINT", shutdown);
|
|
58
|
-
process.on("SIGTERM", shutdown);
|
|
59
|
-
await new Promise(res => {
|
|
49
|
+
const shutdown = () => server.close();
|
|
50
|
+
process.once("SIGINT", shutdown);
|
|
51
|
+
process.once("SIGTERM", shutdown);
|
|
52
|
+
await new Promise((res, rej) => {
|
|
53
|
+
server.once("error", rej);
|
|
60
54
|
server.on("close", () => {
|
|
55
|
+
process.off("SIGINT", shutdown);
|
|
56
|
+
process.off("SIGTERM", shutdown);
|
|
61
57
|
res();
|
|
62
58
|
});
|
|
63
59
|
});
|
package/dist/serve/node.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createServer","networkInterfaces","platform","getRequestListener","
|
|
1
|
+
{"version":3,"names":["createServer","networkInterfaces","platform","getRequestListener","colors","getNetworkAddress","addresses","Object","values","addr","family","internal","address","isBun","process","versions","bun","canReusePort","includes","major","minor","node","split","map","Number","honoServeNode","app","options","port","host","listener","request","env","headers","delete","incoming","socket","remoteAddress","set","fetch","server","listen","ONE_CLUSTER_WORKER","reusePort","colorUrl","url","cyan","replace","_","port2","bold","displayHost","localUrl","console","info","green","networkHost","networkUrl","shutdown","close","once","Promise","res","rej","on","off"],"sources":["../../src/serve/node.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createServer } from "http";
|
|
2
2
|
import { networkInterfaces, platform } from "os";
|
|
3
3
|
import { getRequestListener } from "@hono/node-server";
|
|
4
|
-
import { serve as honoServe } from "@hono/node-server";
|
|
5
4
|
import colors from "picocolors";
|
|
6
5
|
function getNetworkAddress() {
|
|
7
6
|
var _iteratorNormalCompletion = true,
|
|
@@ -59,22 +58,20 @@ async function honoServeNode(app, options) {
|
|
|
59
58
|
var _options_port, _options_host;
|
|
60
59
|
var port = (_options_port = options.port) !== null && _options_port !== void 0 ? _options_port : 3e3;
|
|
61
60
|
var host = (_options_host = options.host) !== null && _options_host !== void 0 ? _options_host : "0.0.0.0";
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
var listener = getRequestListener(function (request, env) {
|
|
62
|
+
request.headers.delete("x-vxrn-peer-address");
|
|
63
|
+
var address = env.incoming.socket.remoteAddress;
|
|
64
|
+
if (address) request.headers.set("x-vxrn-peer-address", address);
|
|
65
|
+
return app.fetch(request, env);
|
|
66
|
+
});
|
|
67
|
+
var server = createServer(listener);
|
|
68
|
+
server.listen({
|
|
69
|
+
port,
|
|
70
|
+
host,
|
|
71
|
+
...(canReusePort && process.env.ONE_CLUSTER_WORKER === "1" ? {
|
|
69
72
|
reusePort: true
|
|
70
|
-
})
|
|
71
|
-
}
|
|
72
|
-
server = honoServe({
|
|
73
|
-
fetch: app.fetch,
|
|
74
|
-
port,
|
|
75
|
-
hostname: host
|
|
76
|
-
});
|
|
77
|
-
}
|
|
73
|
+
} : {})
|
|
74
|
+
});
|
|
78
75
|
var colorUrl = function (url) {
|
|
79
76
|
return colors.cyan(url.replace(/:(\d+)\//, function (_, port2) {
|
|
80
77
|
return `:${colors.bold(port2)}/`;
|
|
@@ -93,14 +90,15 @@ async function honoServeNode(app, options) {
|
|
|
93
90
|
}
|
|
94
91
|
console.info();
|
|
95
92
|
var shutdown = function () {
|
|
96
|
-
server.close(
|
|
97
|
-
process.exit(0);
|
|
98
|
-
});
|
|
93
|
+
return server.close();
|
|
99
94
|
};
|
|
100
|
-
process.
|
|
101
|
-
process.
|
|
102
|
-
await new Promise(function (res) {
|
|
95
|
+
process.once("SIGINT", shutdown);
|
|
96
|
+
process.once("SIGTERM", shutdown);
|
|
97
|
+
await new Promise(function (res, rej) {
|
|
98
|
+
server.once("error", rej);
|
|
103
99
|
server.on("close", function () {
|
|
100
|
+
process.off("SIGINT", shutdown);
|
|
101
|
+
process.off("SIGTERM", shutdown);
|
|
104
102
|
res();
|
|
105
103
|
});
|
|
106
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createServer","networkInterfaces","platform","getRequestListener","
|
|
1
|
+
{"version":3,"names":["createServer","networkInterfaces","platform","getRequestListener","colors","getNetworkAddress","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Object","values","Symbol","iterator","_step","next","done","addresses","value","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","addr","family","internal","address","err","return","isBun","process","versions","bun","canReusePort","includes","major","minor","node","split","map","Number","honoServeNode","app","options","_options_port","_options_host","port","host","listener","request","env"],"sources":["../../src/serve/node.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAC7B,SAASC,iBAAA,EAAmBC,QAAA,QAAgB;AAC5C,SAASC,kBAAA,QAA0B;AAEnC,OAAOC,MAAA,MAAY;AAGnB,SAASC,kBAAA,EAAwC;EAC/C,IAAAC,yBAAwB,GAAO;IAAOC,iBAAA,GAAmB,KAAG;IAAAC,cAAA;EAC1D;IACE,SAAIC,SAAK,GAAAC,MAAW,CAAAC,MAAW,CAAAV,iBAAe,IAAAW,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAR,yBAAA,IAAAQ,KAAA,GAAAL,SAAA,CAAAM,IAAA,IAAAC,IAAA,GAAAV,yBAAA;MAC5C,IAAAW,SAAO,GAAKH,KAAA,CAAAI,KAAA;MACd,IAAAC,0BAAA;QAAAC,kBAAA;QAAAC,eAAA;MACF;QACF,SAAAC,UAAA,IAAAL,SAAA,QAAAL,MAAA,CAAAC,QAAA,KAAAU,MAAA,IAAAJ,0BAAA,IAAAI,MAAA,GAAAD,UAAA,CAAAP,IAAA,IAAAC,IAAA,GAAAG,0BAAA;UACF,IAAAK,IAAA,GAAAD,MAAA,CAAAL,KAAA;UAEM,IAAQM,IAAA,CAAAC,MAAO,KAAQ,UAAS,CAAAD,IAAA,CAAQE,QAAA;YAIxC,OAAAF,IACF,CAAAG,OAAA;UAGS;QACP;MACC,SAAAC,GAAA;QAIPR,kBAAsB,GAAc;QAC5BC,eAAe,GAAAO,GAAA;MACrB,UAAa;QAEP;UACJ,IAAQ,CAAAT,0BAAe,IAAAG,UAAqB,CAAAO,MAAA;YACtCP,UAAU,CAAAO,MAAI;UAChB;QACJ,UAAW;UACZ,IAAAT,kBAAA;YACK,MAASC,eAAa;UACrB;QACL;MACA;IACA;EAGF,CAAC,QAAAO,GAAA;IAEDrB,iBAAkB,OAChB;IAEFC,cAAM,GAAAoB,GAAc;EACpB,UAAM;IAEN;MACA,IAAQ,CAAAtB,yBAAuB,IAAAG,SAAS,CAAAoB,MAAO,IAAK,MAAO;QAEvDpB,SAAS,CAAAoB,MAAA,EAAW;MACtB;IACA,UAAI;MACF,IAAAtB,iBAAmB;QACnB,MAAQC,cAAA;MAAA;IACoE;EAC5E;AACF;AAEF,IAAAsB,KAAA,GAAQ,OAAKC,OAAA,CAAAC,QAAA,CAAAC,GAAA;AAEb,IAAAC,YAAM,GAAW,EAEjB,SACA,QAAQ,CAER,CAAAC,QAAM,CAAAjC,QAAI,CAAc,CAAC,MAAK4B,KAAA,IAAQ;EACpC,KAAAM,KAAO,EAAAC,KAAK,IAAAN,OAAY,CAAAC,QAAA,CAAAM,IAAA,CAAAC,KAAA,MAAAC,GAAA,CAAAC,MAAA;EACxB,OAAAL,KAAU,SAASA,KAAA,KAAM,MAAAC,KAAA,UAAAD,KAAA;AACvB;AACA,eAAQM,aAAIA,CAAWC,GAAA,EAAAC,OAAQ;EAC/B,IAAAC,aAAI,EAAAC,aAAA;EAAA,IACLC,IAAA,IAAAF,aAAA,GAAAD,OAAA,CAAAG,IAAA,cAAAF,aAAA,cAAAA,aAAA;EACH,IAACG,IAAA,IAAAF,aAAA,GAAAF,OAAA,CAAAI,IAAA,cAAAF,aAAA,cAAAA,aAAA;EACH,IAAAG,QAAA,GAAA9C,kBAAA,WAAA+C,OAAA,EAAAC,GAAA","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import { describe, expect, test } from "vitest";
|
|
4
|
+
import { honoServeNode } from "./node.mjs";
|
|
5
|
+
describe("honoServeNode", () => {
|
|
6
|
+
test("rejects when the listener cannot bind", async () => {
|
|
7
|
+
const occupied = createServer();
|
|
8
|
+
await new Promise((resolve, reject) => {
|
|
9
|
+
occupied.once("error", reject);
|
|
10
|
+
occupied.listen(0, "127.0.0.1", resolve);
|
|
11
|
+
});
|
|
12
|
+
const address = occupied.address();
|
|
13
|
+
if (!address || typeof address === "string") throw new Error("missing test port");
|
|
14
|
+
const app = new Hono().get("/health", context => context.text("ok"));
|
|
15
|
+
await expect(honoServeNode(app, {
|
|
16
|
+
host: "127.0.0.1",
|
|
17
|
+
port: address.port
|
|
18
|
+
})).rejects.toMatchObject({
|
|
19
|
+
code: "EADDRINUSE"
|
|
20
|
+
});
|
|
21
|
+
await new Promise((resolve, reject) => occupied.close(error => error ? reject(error) : resolve()));
|
|
22
|
+
});
|
|
23
|
+
test("overwrites the trusted peer address header from the socket", async () => {
|
|
24
|
+
const reservation = createServer();
|
|
25
|
+
await new Promise((resolve, reject) => {
|
|
26
|
+
reservation.once("error", reject);
|
|
27
|
+
reservation.listen(0, "127.0.0.1", resolve);
|
|
28
|
+
});
|
|
29
|
+
const address = reservation.address();
|
|
30
|
+
if (!address || typeof address === "string") throw new Error("missing test port");
|
|
31
|
+
await new Promise((resolve, reject) => reservation.close(error => error ? reject(error) : resolve()));
|
|
32
|
+
const app = new Hono().get("/peer", context => context.text(context.req.header("x-vxrn-peer-address") || ""));
|
|
33
|
+
const running = honoServeNode(app, {
|
|
34
|
+
host: "127.0.0.1",
|
|
35
|
+
port: address.port
|
|
36
|
+
});
|
|
37
|
+
await new Promise((resolve, reject) => {
|
|
38
|
+
const startedAt = Date.now();
|
|
39
|
+
const probe = async () => {
|
|
40
|
+
try {
|
|
41
|
+
const response = await fetch(`http://127.0.0.1:${address.port}/peer`, {
|
|
42
|
+
headers: {
|
|
43
|
+
"x-vxrn-peer-address": "203.0.113.9"
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
expect(await response.text()).toBe("127.0.0.1");
|
|
47
|
+
resolve();
|
|
48
|
+
} catch (error) {
|
|
49
|
+
if (Date.now() - startedAt > 2e3) reject(error);else setTimeout(probe, 20);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
void probe();
|
|
53
|
+
});
|
|
54
|
+
const shutdown = process.listeners("SIGTERM").at(-1);
|
|
55
|
+
expect(shutdown).toBeTypeOf("function");
|
|
56
|
+
shutdown?.("SIGTERM");
|
|
57
|
+
await running;
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=node.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createServer","Hono","describe","expect","test","honoServeNode","occupied","Promise","resolve","reject","once","listen","address","Error","app","get","context","text","host","port","rejects","toMatchObject","code","close","error","reservation","req","header","running","startedAt","Date","now","probe","response","fetch","headers","toBe","setTimeout","shutdown","process","listeners","at","toBeTypeOf"],"sources":["../../src/serve/node.test.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createServer } from "http";
|
|
2
|
+
import { Hono } from "hono";
|
|
3
|
+
import { describe, expect, test } from "vitest";
|
|
4
|
+
import { honoServeNode } from "./node.native.js";
|
|
5
|
+
describe("honoServeNode", function () {
|
|
6
|
+
test("rejects when the listener cannot bind", async function () {
|
|
7
|
+
var occupied = createServer();
|
|
8
|
+
await new Promise(function (resolve, reject) {
|
|
9
|
+
occupied.once("error", reject);
|
|
10
|
+
occupied.listen(0, "127.0.0.1", resolve);
|
|
11
|
+
});
|
|
12
|
+
var address = occupied.address();
|
|
13
|
+
if (!address || typeof address === "string") throw new Error("missing test port");
|
|
14
|
+
var app = new Hono().get("/health", function (context) {
|
|
15
|
+
return context.text("ok");
|
|
16
|
+
});
|
|
17
|
+
await expect(honoServeNode(app, {
|
|
18
|
+
host: "127.0.0.1",
|
|
19
|
+
port: address.port
|
|
20
|
+
})).rejects.toMatchObject({
|
|
21
|
+
code: "EADDRINUSE"
|
|
22
|
+
});
|
|
23
|
+
await new Promise(function (resolve, reject) {
|
|
24
|
+
return occupied.close(function (error) {
|
|
25
|
+
return error ? reject(error) : resolve();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
test("overwrites the trusted peer address header from the socket", async function () {
|
|
30
|
+
var reservation = createServer();
|
|
31
|
+
await new Promise(function (resolve, reject) {
|
|
32
|
+
reservation.once("error", reject);
|
|
33
|
+
reservation.listen(0, "127.0.0.1", resolve);
|
|
34
|
+
});
|
|
35
|
+
var address = reservation.address();
|
|
36
|
+
if (!address || typeof address === "string") throw new Error("missing test port");
|
|
37
|
+
await new Promise(function (resolve, reject) {
|
|
38
|
+
return reservation.close(function (error) {
|
|
39
|
+
return error ? reject(error) : resolve();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
var app = new Hono().get("/peer", function (context) {
|
|
43
|
+
return context.text(context.req.header("x-vxrn-peer-address") || "");
|
|
44
|
+
});
|
|
45
|
+
var running = honoServeNode(app, {
|
|
46
|
+
host: "127.0.0.1",
|
|
47
|
+
port: address.port
|
|
48
|
+
});
|
|
49
|
+
await new Promise(function (resolve, reject) {
|
|
50
|
+
var startedAt = Date.now();
|
|
51
|
+
var probe = async function () {
|
|
52
|
+
try {
|
|
53
|
+
var response = await fetch(`http://127.0.0.1:${address.port}/peer`, {
|
|
54
|
+
headers: {
|
|
55
|
+
"x-vxrn-peer-address": "203.0.113.9"
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
expect(await response.text()).toBe("127.0.0.1");
|
|
59
|
+
resolve();
|
|
60
|
+
} catch (error) {
|
|
61
|
+
if (Date.now() - startedAt > 2e3) reject(error);else setTimeout(probe, 20);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
void probe();
|
|
65
|
+
});
|
|
66
|
+
var shutdown = process.listeners("SIGTERM").at(-1);
|
|
67
|
+
expect(shutdown).toBeTypeOf("function");
|
|
68
|
+
shutdown === null || shutdown === void 0 ? void 0 : shutdown("SIGTERM");
|
|
69
|
+
await running;
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=node.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createServer","Hono","describe","expect","test","honoServeNode","occupied","Promise","resolve","reject","once","listen","address","Error","app","get","context","text","host","port","rejects","toMatchObject","code","close","error","reservation","req","header","running","startedAt","Date","now","probe","response","fetch","headers","toBe"],"sources":["../../src/serve/node.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,YAAA,QAAoB;AAC7B,SAASC,IAAA,QAAY;AACrB,SAASC,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AACvC,SAASC,aAAA,QAAqB;AAE9BH,QAAA,CAAS,iBAAiB,YAAM;EAC9BE,IAAA,CAAK,yCAAyC,kBAAY;IACxD,IAAAE,QAAM,GAAAN,YAAW;IACjB,MAAM,IAAIO,OAAA,CAAc,UAACC,OAAS,EAAAC,MAAW;MAC3CH,QAAA,CAASI,IAAA,CAAK,SAASD,MAAM;MAC7BH,QAAA,CAASK,MAAA,CAAO,GAAG,aAAaH,OAAO;IACzC,CAAC;IACD,IAAAI,OAAM,GAAAN,QAAU,CAAAM,OAAS;IACzB,IAAI,CAACA,OAAA,IAAW,OAAOA,OAAA,KAAY,UAAU,MAAM,IAAIC,KAAA,CAAM,mBAAmB;IAEhF,IAAAC,GAAM,OAAMb,IAAI,GAAKc,GAAE,UAAI,YAAYC,OAAY;MACnD,OAAMA,OAAA,CAAAC,IAAA;IAAA,EACJ;IACF,MAAEd,MAAQ,CAAAE,aAAgB,CAAAS,GAAA,EAAM;MAEhCI,IAAM,aAAI;MAAcC,IAAC,EAAAP,OAAS,CAAAO;IAElC,IAAAC,OAAA,CAAAC,aAAA;MACDC,IAAA;IAED;IACE,MAAM,IAAAf,OAAA,WAAcC,OAAa,EAAAC,MAAA;MACjC,OAAMH,QAAI,CAAciB,KAAC,WAASC,KAAA,EAAW;QAC3C,OAAAA,KAAY,GAAKf,MAAA,CAAAe,KAAS,IAAMhB,OAAA;MAChC;IACF,CAAC;EACD;EACAJ,IAAA,6DAA6D,oBAAmB;IAChF,IAAAqB,WAAU,GAAAzB,YAAA;IAAA,MAAe,IAAAO,OAAS,WAChCC,OAAA,EAAYC,MAAO;MACrBgB,WAAA,CAAAf,IAAA,UAAAD,MAAA;MAEAgB,WAAY,CAAAd,MAAI,CAAK,GAAE,aAAAH,OAAA;IAAA,EAAI;IAAA,IAAUI,OAAA,GAAAa,WAC3B,CAAAb,OAAK;IACf,KAAAA,OAAA,WAAAA,OAAA,yBAAAC,KAAA;IACA,MAAM,IAAAN,OAAU,WAAAC,OAAc,EAAKC,MAAE,EAAM;MAC3C,OAAMgB,WAAmB,CAAAF,KAAA,WAASC,KAAW;QAC3C,OAAMA,KAAA,GAAAf,MAAiB,CAAAe,KAAI,IAAAhB,OAAA;MAC3B;IACE;IACE,IAAAM,GAAA,OAAMb,IAAA,GAAAc,GAAW,QAAM,YAAMC,OAAA;MAAyC,OACpEA,OAAA,CAASC,IAAE,CAAAD,OAAA,CAAAU,GAAA,CAAAC,MAAA,sBAAqC;IAAA;IAElD,IAAAC,OAAA,GAAOvB,aAAM,CAASS,GAAA,EAAK;MAC3BI,IAAA,aAAQ;MAAAC,IACV,EAAAP,OAAS,CAAAO;IACP;IAAgD,UAC3CZ,OAAA,WAAWC,OAAS,EAAAC,MAAA;MAAA,IAC3BoB,SAAA,GAAAC,IAAA,CAAAC,GAAA;MACF,IAAAC,KAAA,kBAAAA,CAAA;QACA,IAAK;UACN,IAAAC,QAAA,SAAAC,KAAA,qBAAAtB,OAAA,CAAAO,IAAA;YACKgB,OAAA,EAAW;cACV,qBAAqB;YAC5B;UACM;UACPhC,MAAA,OAAA8B,QAAA,CAAAhB,IAAA,IAAAmB,IAAA;UACF5B,OAAA","ignoreList":[]}
|
package/dist/utils/state.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import FSExtra from "fs-extra";
|
|
2
|
+
import { randomUUID } from "node:crypto";
|
|
3
|
+
import { rename, rm } from "node:fs/promises";
|
|
2
4
|
import { join } from "node:path";
|
|
3
5
|
async function readState(cacheDir) {
|
|
4
6
|
const statePath = join(cacheDir, "state.json");
|
|
@@ -11,8 +13,16 @@ async function readState(cacheDir) {
|
|
|
11
13
|
}
|
|
12
14
|
async function writeState(cacheDir, state) {
|
|
13
15
|
const statePath = join(cacheDir, "state.json");
|
|
16
|
+
const pendingStatePath = `${statePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
14
17
|
await FSExtra.ensureDir(cacheDir);
|
|
15
|
-
|
|
18
|
+
try {
|
|
19
|
+
await FSExtra.writeJSON(pendingStatePath, state);
|
|
20
|
+
await rename(pendingStatePath, statePath);
|
|
21
|
+
} finally {
|
|
22
|
+
await rm(pendingStatePath, {
|
|
23
|
+
force: true
|
|
24
|
+
});
|
|
25
|
+
}
|
|
16
26
|
}
|
|
17
27
|
export { readState, writeState };
|
|
18
28
|
//# sourceMappingURL=state.mjs.map
|
package/dist/utils/state.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FSExtra","join","readState","cacheDir","statePath","state","pathExists","readJSON","writeState","ensureDir","writeJSON"],"sources":["../../src/utils/state.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,OAAA,MAAa;AACpB,SAASC,IAAA,QAAY;AAMrB,eAAsBC,UAAUC,QAAA,EAAkB;EAChD,MAAMC,SAAA,GAAYH,IAAA,CAAKE,QAAA,EAAU,YAAY;EAC7C,IAAI;IACF,MAAME,KAAA,GAAgB,
|
|
1
|
+
{"version":3,"names":["FSExtra","randomUUID","rename","rm","join","readState","cacheDir","statePath","state","pathExists","readJSON","writeState","pendingStatePath","process","pid","ensureDir","writeJSON","force"],"sources":["../../src/utils/state.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAOA,OAAA,MAAa;AACpB,SAASC,UAAA,QAAkB;AAC3B,SAASC,MAAA,EAAQC,EAAA,QAAU;AAC3B,SAASC,IAAA,QAAY;AAMrB,eAAsBC,UAAUC,QAAA,EAAkB;EAChD,MAAMC,SAAA,GAAYH,IAAA,CAAKE,QAAA,EAAU,YAAY;EAC7C,IAAI;IACF,MAAME,KAAA,GAAgB,OAAMR,OAAA,CAAQS,UAAA,CAAWF,SAAS,KACpD,MAAMP,OAAA,CAAQU,QAAA,CAASH,SAAS,IAChC,CAAC;IACL,OAAOC,KAAA;EACT,QAAQ;IAEN,OAAO,CAAC;EACV;AACF;AAEA,eAAsBG,WAAWL,QAAA,EAAkBE,KAAA,EAAc;EAC/D,MAAMD,SAAA,GAAYH,IAAA,CAAKE,QAAA,EAAU,YAAY;EAC7C,MAAMM,gBAAA,GAAmB,GAAGL,SAAS,IAAIM,OAAA,CAAQC,GAAG,IAAIb,UAAA,CAAW,CAAC;EACpE,MAAMD,OAAA,CAAQe,SAAA,CAAUT,QAAQ;EAChC,IAAI;IACF,MAAMN,OAAA,CAAQgB,SAAA,CAAUJ,gBAAA,EAAkBJ,KAAK;IAC/C,MAAMN,MAAA,CAAOU,gBAAA,EAAkBL,SAAS;EAC1C,UAAE;IACA,MAAMJ,EAAA,CAAGS,gBAAA,EAAkB;MAAEK,KAAA,EAAO;IAAK,CAAC;EAC5C;AACF","ignoreList":[]}
|