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
|
@@ -4,7 +4,7 @@ import { tmpdir } from "node:os";
|
|
|
4
4
|
import { join } from "node:path";
|
|
5
5
|
import { readPackageJSON } from "pkg-types";
|
|
6
6
|
import { getServerOptionsFilled } from "./getServerOptionsFilled.mjs";
|
|
7
|
-
import { readState
|
|
7
|
+
import { readState } from "../utils/state.mjs";
|
|
8
8
|
import { getCacheDir } from "../utils/getCacheDir.mjs";
|
|
9
9
|
const require2 = createRequire(import.meta.url);
|
|
10
10
|
let optionsFilled = null;
|
|
@@ -26,9 +26,6 @@ async function fillOptions(options, {
|
|
|
26
26
|
} : void 0;
|
|
27
27
|
const versionHash = hashString(JSON.stringify(packageJSON));
|
|
28
28
|
const clean = options.clean ?? (state.versionHash && state.versionHash !== versionHash) ? "vite" : false;
|
|
29
|
-
void writeState(cacheDir, {
|
|
30
|
-
versionHash
|
|
31
|
-
});
|
|
32
29
|
if (typeof options.build?.server !== "boolean" && !options.build?.server) {
|
|
33
30
|
options.build ||= {};
|
|
34
31
|
options.build.server = false;
|
|
@@ -54,7 +51,8 @@ async function fillOptions(options, {
|
|
|
54
51
|
packageVersions,
|
|
55
52
|
state,
|
|
56
53
|
packageRootDir,
|
|
57
|
-
cacheDir
|
|
54
|
+
cacheDir,
|
|
55
|
+
versionHash
|
|
58
56
|
};
|
|
59
57
|
optionsFilled = final;
|
|
60
58
|
return final;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createHash","createRequire","tmpdir","join","readPackageJSON","getServerOptionsFilled","readState","
|
|
1
|
+
{"version":3,"names":["createHash","createRequire","tmpdir","join","readPackageJSON","getServerOptionsFilled","readState","getCacheDir","require","import","meta","url","optionsFilled","fillOptions","options","mode","root","process","cwd","entries","devMode","packageRootDir","resolve","cacheDir","state","packageJSON","Promise","all","deps","dependencies","packageVersions","react","replace","reactNative","versionHash","hashString","JSON","stringify","clean","build","server","debugBundlePath","debugBundle","Math","round","random","final","debugBundlePaths","ios","android","native","getOptionsFilled","str","hash","update","digest"],"sources":["../../src/config/getOptionsFilled.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ import { tmpdir } from "os";
|
|
|
4
4
|
import { join } from "path";
|
|
5
5
|
import { readPackageJSON } from "pkg-types";
|
|
6
6
|
import { getServerOptionsFilled } from "./getServerOptionsFilled.native.js";
|
|
7
|
-
import { readState
|
|
7
|
+
import { readState } from "../utils/state.native.js";
|
|
8
8
|
import { getCacheDir } from "../utils/getCacheDir.native.js";
|
|
9
9
|
var require2 = createRequire(import.meta.url);
|
|
10
10
|
var optionsFilled = null;
|
|
@@ -29,9 +29,6 @@ async function fillOptions(options) {
|
|
|
29
29
|
} : void 0;
|
|
30
30
|
var versionHash = hashString(JSON.stringify(packageJSON));
|
|
31
31
|
var clean = ((_options_clean = options.clean) !== null && _options_clean !== void 0 ? _options_clean : state.versionHash && state.versionHash !== versionHash) ? "vite" : false;
|
|
32
|
-
void writeState(cacheDir, {
|
|
33
|
-
versionHash
|
|
34
|
-
});
|
|
35
32
|
if (typeof ((_options_build = options.build) === null || _options_build === void 0 ? void 0 : _options_build.server) !== "boolean" && !((_options_build1 = options.build) === null || _options_build1 === void 0 ? void 0 : _options_build1.server)) {
|
|
36
33
|
var _options;
|
|
37
34
|
(_options = options).build || (_options.build = {});
|
|
@@ -58,7 +55,8 @@ async function fillOptions(options) {
|
|
|
58
55
|
packageVersions,
|
|
59
56
|
state,
|
|
60
57
|
packageRootDir,
|
|
61
|
-
cacheDir
|
|
58
|
+
cacheDir,
|
|
59
|
+
versionHash
|
|
62
60
|
};
|
|
63
61
|
optionsFilled = final;
|
|
64
62
|
return final;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createHash","createRequire","tmpdir","join","readPackageJSON","getServerOptionsFilled","readState","
|
|
1
|
+
{"version":3,"names":["createHash","createRequire","tmpdir","join","readPackageJSON","getServerOptionsFilled","readState","getCacheDir","require2","import","meta","url","optionsFilled","fillOptions","options","mode","arguments","length","_options_clean","_options_build","_options_build1","root","process","cwd","entries","devMode","packageRootDir","resolve","cacheDir","state","packageJSON","Promise","all","deps","dependencies","packageVersions","react","replace","reactNative","versionHash","hashString","JSON","stringify","clean","build","server","_options","debugBundlePath","debugBundle","Math","round","random","final","debugBundlePaths","ios","android","native","getOptionsFilled"],"sources":["../../src/config/getOptionsFilled.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAC3B,SAASC,aAAA,QAAqB;AAC9B,SAASC,MAAA,QAAc;AACvB,SAASC,IAAA,QAAY;AACrB,SAASC,eAAA,QAAuB;AAEhC,SAASC,sBAAA,QAA8B;AACvC,SAASC,SAAA,QAAiB;AAC1B,SAASC,WAAA,QAAmB;AAE5B,IAAAC,QAAM,GAAAP,aAAU,CAAAQ,MAAc,CAAAC,IAAA,CAAAC,GAAY;AAgC1C,IAAIC,aAAA,GAA0C;AAE9C,eAAsBC,YACpBC,OAAA,EACA;EAEA;IAAMC,IAAE;EAAO,IAAQC,SAAO,CAAAC,MAAQ,GAAI,KAAAD,SAAA,iBAAAA,SAAA;EAE1C,IAAAE,cAAgB;EAEhB,IAAAC,cAAM,EAAAC,eAAsB;EAC5B;IAAMC,IAAA,GAAAC,OAAW,CAAAC,GAAA;IAAAC;EAAgB,IAAAV,OAAA;EAEjC,IAAAW,OAAO,GAAOX,OAAA,CAAAC,IAAW,KAAI,YAAc,QAAK,GAAAA,IAAU,UAAQ;EAElE,IAAAW,cAAa,GAAAvB,IAAY,CAAAK,QAAA,CAAAmB,OAAiB;EAE1C,IAAAC,QAAM,GAAArB,WACJ,CAAAc,IAAK;EACD,IACE,CAAAQ,KAAO,EAAAC,WAAW,UAAQC,OAAW,CAAAC,GAAA,EACrC1B,SAAA,CAAAsB,QAAkB,GACpBxB,eACA,GAEN;EACA,IAAA6B,IAAM,GAAAH,WACK,CAAAI,YAAU,IAAM;EAI3B,IAAIC,eAAe,GAAAF,IAAO,CAAAG,KAAA,IAAAH,IAAW,eAAc,IAAQ;IAEzDG,KAAA,EAAAH,IAAQ,CAAAG,KAAA,CAAUC,OAAC;IACnBC,WAAQ,EAAAL,IAAM,eAAS,EAAAI,OAAA;EACzB;EAEA,IAAAE,WAAM,GAAAC,UACJ,CAAAC,IAAQ,CAAAC,SAAA,CAAAZ,WAAsB;EAIhC,IAAAa,KAAM,KAAQzB,cAAA,GAAAJ,OAAA,CAAA6B,KAAA,cAAAzB,cAAA,cAAAA,cAAA,GAAAW,KAAA,CAAAU,WAAA,IAAAV,KAAA,CAAAU,WAAA,KAAAA,WAAA;EAAA,IACZ,QAAG,CAAApB,cAAA,GAAAL,OAAA,CAAA8B,KAAA,cAAAzB,cAAA,uBAAAA,cAAA,CAAA0B,MAAA,sBAAAzB,eAAA,GAAAN,OAAA,CAAA8B,KAAA,cAAAxB,eAAA,uBAAAA,eAAA,CAAAyB,MAAA;IAAA,IAAAC,QAAA;IAEH,CAAAA,QAAA,GAAAhC,OAAkB,EAAA8B,KAAA,KAAAE,QAAA,CAAAF,KAAA;IAAA9B,OACX,CAAA8B,KAAA,CAAAC,MAAA;EAAA;EACI,IACXE,eAAA,GAAAjC,OAAA,CAAAkC,WAAA,WAAAlC,OAAA,CAAAkC,WAAA,gBAAAlC,OAAA,CAAAkC,WAAA,GAAA7C,IAAA,CAAAD,MAAA,cAAA+C,IAAA,CAAAC,KAAA,CAAAD,IAAA,CAAAE,MAAA;EAAA,IACAC,KAAM;IACN,GAAAtC,OAAA;IACA;IACAuC,gBAAc;MACdC,GAAA,EAAAP,eAAS;MACPQ,OAAA,EAAQR;IAAA;IACAhC,IACR,EAAGU,OAAA;IACLkB,KAAA;IACAtB,IAAA;IACAwB,MAAA,QAAAxC,sBAAA,CAAAS,OAAA,CAAA+B,MAAA,EAAA9B,IAAA;IACAS,OAAA;MACAgC,MAAA;MACAX,MAAA;MACA,GAAArB;IACF;IAEAM,WAAA;IAEAK,eAAO;IACTN,KAAA;IAEOH,cAAS;IACdE,QAAO;IACTW;EAEA;EACE3B,aAAa,GAAAwC,KAAA;EACb,OAAKA,KAAO;AACZ;AACF,SAAAK,iBAAA","ignoreList":[]}
|
|
@@ -2,13 +2,14 @@ import { getPort } from "get-port-please";
|
|
|
2
2
|
async function getServerOptionsFilled(serverOptions, mode) {
|
|
3
3
|
const {
|
|
4
4
|
host = "0.0.0.0",
|
|
5
|
-
port: requestedPort
|
|
5
|
+
port: requestedPort,
|
|
6
|
+
https
|
|
6
7
|
} = serverOptions || {};
|
|
7
8
|
const envPort = process.env.ONE_PORT ? Number(process.env.ONE_PORT) : void 0;
|
|
8
9
|
const forcePort = process.env.ONE_FORCE_PORT ? Number(process.env.ONE_FORCE_PORT) : void 0;
|
|
9
10
|
const defaultPort = mode === "dev" ? 8081 : 3e3;
|
|
10
11
|
const portToUse = forcePort ?? requestedPort ?? envPort ?? defaultPort;
|
|
11
|
-
const protocol = "http:";
|
|
12
|
+
const protocol = https ? "https:" : "http:";
|
|
12
13
|
const isClusterWorker = process.env.ONE_CLUSTER_WORKER === "1";
|
|
13
14
|
let port;
|
|
14
15
|
if (isClusterWorker) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPort","getServerOptionsFilled","serverOptions","mode","host","port","requestedPort","envPort","process","env","ONE_PORT","Number","forcePort","ONE_FORCE_PORT","defaultPort","portToUse","protocol","isClusterWorker","ONE_CLUSTER_WORKER","isExplicitPort","portRange","Error","urlHost","loadEnv","compress","url"],"sources":["../../src/config/getServerOptionsFilled.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAGxB,eAAsBC,uBACpBC,aAAA,EACAC,IAAA,EACiC;EACjC,MAAM;IACJC,IAAA,GAAO;IACPC,IAAA,EAAMC;
|
|
1
|
+
{"version":3,"names":["getPort","getServerOptionsFilled","serverOptions","mode","host","port","requestedPort","https","envPort","process","env","ONE_PORT","Number","forcePort","ONE_FORCE_PORT","defaultPort","portToUse","protocol","isClusterWorker","ONE_CLUSTER_WORKER","isExplicitPort","portRange","Error","urlHost","loadEnv","compress","url"],"sources":["../../src/config/getServerOptionsFilled.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAGxB,eAAsBC,uBACpBC,aAAA,EACAC,IAAA,EACiC;EACjC,MAAM;IACJC,IAAA,GAAO;IACPC,IAAA,EAAMC,aAAA;IACNC;EACF,IAAIL,aAAA,IAAiB,CAAC;EAEtB,MAAMM,OAAA,GAAUC,OAAA,CAAQC,GAAA,CAAIC,QAAA,GAAWC,MAAA,CAAOH,OAAA,CAAQC,GAAA,CAAIC,QAAQ,IAAI;EACtE,MAAME,SAAA,GAAYJ,OAAA,CAAQC,GAAA,CAAII,cAAA,GAC1BF,MAAA,CAAOH,OAAA,CAAQC,GAAA,CAAII,cAAc,IACjC;EACJ,MAAMC,WAAA,GAAcZ,IAAA,KAAS,QAAQ,OAAO;EAC5C,MAAMa,SAAA,GAAYH,SAAA,IAAaP,aAAA,IAAiBE,OAAA,IAAWO,WAAA;EAC3D,MAAME,QAAA,GAAWV,KAAA,GAAS,WAAsB;EAIhD,MAAMW,eAAA,GAAkBT,OAAA,CAAQC,GAAA,CAAIS,kBAAA,KAAuB;EAE3D,IAAId,IAAA;EACJ,IAAIa,eAAA,EAAiB;IACnBb,IAAA,GAAOW,SAAA;EACT,OAAO;IAGL,MAAMI,cAAA,GAAiB,CAAC,EAAEP,SAAA,IAAaP,aAAA,IAAiBE,OAAA;IACxDH,IAAA,GAAO,MAAML,OAAA,CAAQ;MACnBK,IAAA,EAAMW,SAAA;MACNK,SAAA,EAAWD,cAAA,GAAiB,CAACJ,SAAA,EAAWA,SAAS,IAAI,CAACA,SAAA,EAAWA,SAAA,GAAY,GAAG;MAChFZ;IACF,CAAC;IAGD,IAAIgB,cAAA,IAAkBf,IAAA,KAASW,SAAA,EAAW;MACxC,MAAM,IAAIM,KAAA,CACR,QAAQN,SAAS,kEACnB;IACF;EACF;EAGA,MAAMO,OAAA,GAAUnB,IAAA,KAAS,YAAY,cAAcA,IAAA;EAEnD,OAAO;IACLoB,OAAA,EAAS;IACTC,QAAA,EAAU;IACV,GAAGvB,aAAA;IACHG,IAAA;IACAD,IAAA;IACAa,QAAA;IACAS,GAAA,EAAK,GAAGT,QAAQ,KAAKM,OAAO,IAAIlB,IAAI;EACtC;AACF","ignoreList":[]}
|
|
@@ -4,13 +4,14 @@ async function getServerOptionsFilled(serverOptions, mode) {
|
|
|
4
4
|
var {
|
|
5
5
|
host = "0.0.0.0",
|
|
6
6
|
/* TODO: Better default to 127.0.0.1 due to security reasons, and only dynamically change to 0.0.0.0 if the user is requesting an Expo QR code */
|
|
7
|
-
port: requestedPort
|
|
7
|
+
port: requestedPort,
|
|
8
|
+
https
|
|
8
9
|
} = serverOptions || {};
|
|
9
10
|
var envPort = process.env.ONE_PORT ? Number(process.env.ONE_PORT) : void 0;
|
|
10
11
|
var forcePort = process.env.ONE_FORCE_PORT ? Number(process.env.ONE_FORCE_PORT) : void 0;
|
|
11
12
|
var defaultPort = mode === "dev" ? 8081 : 3e3;
|
|
12
13
|
var portToUse = (_ref = (_ref1 = forcePort !== null && forcePort !== void 0 ? forcePort : requestedPort) !== null && _ref1 !== void 0 ? _ref1 : envPort) !== null && _ref !== void 0 ? _ref : defaultPort;
|
|
13
|
-
var protocol = "http:";
|
|
14
|
+
var protocol = https ? "https:" : "http:";
|
|
14
15
|
var isClusterWorker = process.env.ONE_CLUSTER_WORKER === "1";
|
|
15
16
|
var port;
|
|
16
17
|
if (isClusterWorker) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getPort","getServerOptionsFilled","serverOptions","mode","_ref","_ref1","host","port","requestedPort","envPort","process","env","ONE_PORT","Number","forcePort","ONE_FORCE_PORT","defaultPort","portToUse","protocol","isClusterWorker","ONE_CLUSTER_WORKER","_ref2","isExplicitPort","portRange","Error","urlHost","loadEnv","compress"],"sources":["../../src/config/getServerOptionsFilled.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAGxB,eAAsBC,uBACpBC,aAAA,EACAC,IAAA,EACiC;EACjC,IAAAC,IAAM,EAAAC,KAAA;EAAA,IACJ;IACAC,IAAA,GAAM;
|
|
1
|
+
{"version":3,"names":["getPort","getServerOptionsFilled","serverOptions","mode","_ref","_ref1","host","port","requestedPort","https","envPort","process","env","ONE_PORT","Number","forcePort","ONE_FORCE_PORT","defaultPort","portToUse","protocol","isClusterWorker","ONE_CLUSTER_WORKER","_ref2","isExplicitPort","portRange","Error","urlHost","loadEnv","compress"],"sources":["../../src/config/getServerOptionsFilled.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,OAAA,QAAe;AAGxB,eAAsBC,uBACpBC,aAAA,EACAC,IAAA,EACiC;EACjC,IAAAC,IAAM,EAAAC,KAAA;EAAA,IACJ;IACAC,IAAA,GAAM;IACN;IACFC,IAAI,EAAAC,aAAiB;IAErBC;EACA,IAAAP,aAAM,IAAY;EAGlB,IAAAQ,OAAM,GAAAC,OAAc,CAAAC,GAAA,CAAAC,QAAS,GAAQC,MAAA,CAAOH,OAAA,CAAAC,GAAA,CAAAC,QAAA;EAC5C,IAAAE,SAAM,GAAAJ,OAAY,CAAAC,GAAA,CAAAI,cAAa,GAAAF,MAAiB,CAAAH,OAAW,CAAAC,GAAA,CAAAI,cAAA;EAC3D,IAAAC,WAAM,GAAWd,IAAA,KAAS,YAAsB;EAIhD,IAAAe,SAAM,IAAAd,IAAA,GAAkB,CAAAC,KAAA,GAAQU,SAAI,aAAAA,SAAuB,cAAAA,SAAA,GAAAP,aAAA,cAAAH,KAAA,cAAAA,KAAA,GAAAK,OAAA,cAAAN,IAAA,cAAAA,IAAA,GAAAa,WAAA;EAE3D,IAAIE,QAAA,GAAAV,KAAA;EACJ,IAAIW,eAAA,GAAiBT,OAAA,CAAAC,GAAA,CAAAS,kBAAA;EACnB,IAAAd,IAAA;EACF,IAAAa,eAAO;IAGLb,IAAA,GAAMW,SAAA;EACN;IAAqB,IACnBI,KAAM;IAAA,IACNC,cAAW,OAAAD,KAAiB,GAACP,SAAW,SAAS,IAAIA,SAAC,KAAW,SAAAA,SAAe,GAAAP,aAAA,cAAAc,KAAA,cAAAA,KAAA,GAAAZ,OAAA;IAAAH,IAChF,SAAAP,OAAA;MACDO,IAAA,EAAAW,SAAA;MAGDM,SAAI,EAAAD,cAAkB,IACpBL,SAAU,EACRA,SAAQ,CACV,IACFA,SAAA,EACFA,SAAA,OAGA;MAEAZ;IACE;IACA,IAAAiB,cAAU,IAAAhB,IAAA,KAAAW,SAAA;MACV,MAAG,IAAAO,KAAA,SAAAP,SAAA;IACH;EAAA;EACA,IACAQ,OAAA,GAAApB,IAAA,+BAAAA,IAAA;EAAA,OACK;IACPqB,OAAA;IACFC,QAAA","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { getServerOptionsFilled } from "./getServerOptionsFilled.mjs";
|
|
3
|
+
describe("getServerOptionsFilled", () => {
|
|
4
|
+
test("uses the configured TLS protocol in the public server URL", async () => {
|
|
5
|
+
const server = await getServerOptionsFilled({
|
|
6
|
+
host: "127.0.0.1",
|
|
7
|
+
https: {
|
|
8
|
+
cert: "certificate",
|
|
9
|
+
key: "private-key"
|
|
10
|
+
}
|
|
11
|
+
}, "dev");
|
|
12
|
+
expect(server.protocol).toBe("https:");
|
|
13
|
+
expect(server.url).toBe(`https://127.0.0.1:${server.port}`);
|
|
14
|
+
expect(server.https).toEqual({
|
|
15
|
+
cert: "certificate",
|
|
16
|
+
key: "private-key"
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=getServerOptionsFilled.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","test","getServerOptionsFilled","server","host","https","cert","key","protocol","toBe","url","port","toEqual"],"sources":["../../src/config/getServerOptionsFilled.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AACvC,SAASC,sBAAA,QAA8B;AAEvCH,QAAA,CAAS,0BAA0B,MAAM;EACvCE,IAAA,CAAK,6DAA6D,YAAY;IAC5E,MAAME,MAAA,GAAS,MAAMD,sBAAA,CACnB;MACEE,IAAA,EAAM;MACNC,KAAA,EAAO;QACLC,IAAA,EAAM;QACNC,GAAA,EAAK;MACP;IACF,GACA,KACF;IAEAP,MAAA,CAAOG,MAAA,CAAOK,QAAQ,EAAEC,IAAA,CAAK,QAAQ;IACrCT,MAAA,CAAOG,MAAA,CAAOO,GAAG,EAAED,IAAA,CAAK,qBAAqBN,MAAA,CAAOQ,IAAI,EAAE;IAC1DX,MAAA,CAAOG,MAAA,CAAOE,KAAK,EAAEO,OAAA,CAAQ;MAC3BN,IAAA,EAAM;MACNC,GAAA,EAAK;IACP,CAAC;EACH,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { getServerOptionsFilled } from "./getServerOptionsFilled.native.js";
|
|
3
|
+
describe("getServerOptionsFilled", function () {
|
|
4
|
+
test("uses the configured TLS protocol in the public server URL", async function () {
|
|
5
|
+
var server = await getServerOptionsFilled({
|
|
6
|
+
host: "127.0.0.1",
|
|
7
|
+
https: {
|
|
8
|
+
cert: "certificate",
|
|
9
|
+
key: "private-key"
|
|
10
|
+
}
|
|
11
|
+
}, "dev");
|
|
12
|
+
expect(server.protocol).toBe("https:");
|
|
13
|
+
expect(server.url).toBe(`https://127.0.0.1:${server.port}`);
|
|
14
|
+
expect(server.https).toEqual({
|
|
15
|
+
cert: "certificate",
|
|
16
|
+
key: "private-key"
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=getServerOptionsFilled.test.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["describe","expect","test","getServerOptionsFilled","server","host","https","cert","key","protocol","toBe","url","port","toEqual"],"sources":["../../src/config/getServerOptionsFilled.test.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,QAAA,EAAUC,MAAA,EAAQC,IAAA,QAAY;AACvC,SAASC,sBAAA,QAA8B;AAEvCH,QAAA,CAAS,0BAA0B,YAAM;EACvCE,IAAA,CAAK,6DAA6D,kBAAY;IAC5E,IAAAE,MAAM,SAASD,sBAAM;MACnBE,IAAA;MAAAC,KACE;QACAC,IAAA,eAAO;QAAAC,GACL;MAAM;IACD,QACP;IAAAP,MACF,CAAAG,MAAA,CAAAK,QAAA,EAAAC,IAAA;IAAAT,MACA,CAAAG,MAAA,CAAAO,GAAA,EAAAD,IAAA,sBAAAN,MAAA,CAAAQ,IAAA;IACFX,MAAA,CAAAG,MAAA,CAAAE,KAAA,EAAAO,OAAA;MAEAN,IAAA,EAAO,aAAO;MACdC,GAAA,EAAO;IACP;EAA6B;AACrB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mergeConfig","getBaseViteConfigWithPlugins","getOptimizeDeps","mergeUserConfig","getReactNativePlugins","getAdditionalViteConfig","getViteServerConfig","config","userViteConfig","root","server","optimizeDeps","serverConfig","plugins","hmr","path","host","port","rerouteNoExternalConfig","ssr","noExternal","rest","mergableUserConf","process","env","DEBUG","console","debug","JSON","stringify"],"sources":["../../src/config/getViteServerConfig.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAuD;AAEhE,SAASC,4BAAA,QAAoC;AAC7C,SAASC,eAAA,QAAuB;AAEhC,SAASC,eAAA,QAAuB;AAEhC,SAASC,qBAAA,QAA6B;AACtC,SAASC,uBAAA,QAA+B;AAMxC,eAAsBC,oBACpBC,MAAA,EACAC,cAAA,EACA;EACA,MAAM;IAAEC,IAAA;IAAMC;EAAO,IAAIH,MAAA;EACzB,MAAM;IAAEI;EAAa,IAAIT,eAAA,CAAgB,OAAO;EAGhD,IAAIU,YAAA,GAA2BZ,WAAA,CAC7B,MAAMC,4BAAA,CAA6BM,MAAM,GAEzCP,WAAA,CAAYK,uBAAA,CAAwB,GAAG;IACrCQ,OAAA,EAAS,CAAC,GAAGT,qBAAA,CAAsBG,MAAM,CAAC;IAC1CG,MAAA,EAAQ;MACNI,GAAA,EAAK;QACHC,IAAA,EAAM;MACR;MACAC,IAAA,EAAMN,MAAA,CAAOM,IAAA;MACbC,
|
|
1
|
+
{"version":3,"names":["mergeConfig","getBaseViteConfigWithPlugins","getOptimizeDeps","mergeUserConfig","getReactNativePlugins","getAdditionalViteConfig","getViteServerConfig","config","userViteConfig","root","server","optimizeDeps","serverConfig","plugins","hmr","path","host","https","port","rerouteNoExternalConfig","ssr","noExternal","rest","mergableUserConf","process","env","DEBUG","console","debug","JSON","stringify"],"sources":["../../src/config/getViteServerConfig.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAuD;AAEhE,SAASC,4BAAA,QAAoC;AAC7C,SAASC,eAAA,QAAuB;AAEhC,SAASC,eAAA,QAAuB;AAEhC,SAASC,qBAAA,QAA6B;AACtC,SAASC,uBAAA,QAA+B;AAMxC,eAAsBC,oBACpBC,MAAA,EACAC,cAAA,EACA;EACA,MAAM;IAAEC,IAAA;IAAMC;EAAO,IAAIH,MAAA;EACzB,MAAM;IAAEI;EAAa,IAAIT,eAAA,CAAgB,OAAO;EAGhD,IAAIU,YAAA,GAA2BZ,WAAA,CAC7B,MAAMC,4BAAA,CAA6BM,MAAM,GAEzCP,WAAA,CAAYK,uBAAA,CAAwB,GAAG;IACrCQ,OAAA,EAAS,CAAC,GAAGT,qBAAA,CAAsBG,MAAM,CAAC;IAC1CG,MAAA,EAAQ;MACNI,GAAA,EAAK;QACHC,IAAA,EAAM;MACR;MACAC,IAAA,EAAMN,MAAA,CAAOM,IAAA;MACbC,KAAA,EAAOP,MAAA,CAAOO,KAAA;MACdC,IAAA,EAAMR,MAAA,CAAOQ;IACf;IACAT;EACF,CAAsB,CACxB;EAEA,MAAMU,uBAAA,GAA0BX,cAAA,EAAgBY,GAAA,EAAKC,UAAA,KAAe;EACpE,IAAIF,uBAAA,EAAyB;IAC3B,OAAOX,cAAA,CAAeY,GAAA,CAAKC,UAAA;EAC7B;EAMA,MAAM;IAAER,OAAA;IAAS,GAAGS;EAAK,IAAId,cAAA,IAAkB,CAAC;EAChD,MAAMe,gBAAA,GAAmB;IACvB,GAAGD;EACL;EAEAV,YAAA,GAAeT,eAAA,CAAgBQ,YAAA,EAAcC,YAAA,EAAcW,gBAAgB;EAE3E,IAAIJ,uBAAA,EAAyB;IAC3BP,YAAA,CAAaQ,GAAA,CAAKC,UAAA,GAAa;EACjC;EAGA,IAAIG,OAAA,CAAQC,GAAA,CAAIC,KAAA,EAAO;IAErBC,OAAA,CAAQC,KAAA,CAAM,kBAAkBC,IAAA,CAAKC,SAAA,CAAUlB,YAAA,EAAc,MAAM,CAAC,GAAG;AAAA;AAAA,CAAU;EACnF;EAEA,OAAOA,YAAA;AACT","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["mergeConfig","getBaseViteConfigWithPlugins","getOptimizeDeps","mergeUserConfig","getReactNativePlugins","getAdditionalViteConfig","getViteServerConfig","config","userViteConfig","_userViteConfig_ssr","root","server","optimizeDeps","serverConfig","plugins","hmr","path","host","port","rerouteNoExternalConfig","ssr","noExternal","rest","mergableUserConf","process","env","DEBUG","console","debug","JSON","stringify"],"sources":["../../src/config/getViteServerConfig.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAuD;AAEhE,SAASC,4BAAA,QAAoC;AAC7C,SAASC,eAAA,QAAuB;AAEhC,SAASC,eAAA,QAAuB;AAEhC,SAASC,qBAAA,QAA6B;AACtC,SAASC,uBAAA,QAA+B;AAMxC,eAAsBC,oBACpBC,MAAA,EACAC,cAAA,EACA;EACA,IAAAC,mBAAqB;EACrB;IAAMC,IAAE;IAAAC;EAAA,IAAaJ,MAAI;EAGzB,IAAI;IAAAK;EAA2B,IAAAV,eAAA;EAAA,IAC7BW,YAAM,GAAAb,WAAA,OAA6BC,4BAAM,CAAAM,MAAA,GAAAP,WAAA,CAAAK,uBAAA;IAEzCS,OAAA,GACE,GAAAV,qBAAa,CAAAG,MAAA,EAA6B;IAClCI,MACN;MAAKI,GAAA,EACH;QACFC,IAAA;MAAA;MACaC,IACb,EAAAN,
|
|
1
|
+
{"version":3,"names":["mergeConfig","getBaseViteConfigWithPlugins","getOptimizeDeps","mergeUserConfig","getReactNativePlugins","getAdditionalViteConfig","getViteServerConfig","config","userViteConfig","_userViteConfig_ssr","root","server","optimizeDeps","serverConfig","plugins","hmr","path","host","https","port","rerouteNoExternalConfig","ssr","noExternal","rest","mergableUserConf","process","env","DEBUG","console","debug","JSON","stringify"],"sources":["../../src/config/getViteServerConfig.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,WAAA,QAAuD;AAEhE,SAASC,4BAAA,QAAoC;AAC7C,SAASC,eAAA,QAAuB;AAEhC,SAASC,eAAA,QAAuB;AAEhC,SAASC,qBAAA,QAA6B;AACtC,SAASC,uBAAA,QAA+B;AAMxC,eAAsBC,oBACpBC,MAAA,EACAC,cAAA,EACA;EACA,IAAAC,mBAAqB;EACrB;IAAMC,IAAE;IAAAC;EAAA,IAAaJ,MAAI;EAGzB,IAAI;IAAAK;EAA2B,IAAAV,eAAA;EAAA,IAC7BW,YAAM,GAAAb,WAAA,OAA6BC,4BAAM,CAAAM,MAAA,GAAAP,WAAA,CAAAK,uBAAA;IAEzCS,OAAA,GACE,GAAAV,qBAAa,CAAAG,MAAA,EAA6B;IAClCI,MACN;MAAKI,GAAA,EACH;QACFC,IAAA;MAAA;MACaC,IACb,EAAAN,MAAO,CAAAM,IAAO;MAAAC,KACd,EAAAP,MAAM,CAAAO,KAAO;MACfC,IAAA,EAAAR,MAAA,CAAAQ;IAAA;IAEFT;EACF;EAEA,IAAAU,uBAAM,IAAAZ,cAA0B,KAAgB,IAAK,IAAAA,cAAe,wBAAAC,mBAAA,GAAAD,cAAA,CAAAa,GAAA,cAAAZ,mBAAA,uBAAAA,mBAAA,CAAAa,UAAA;EACpE,IAAIF,uBAAA,EAAyB;IAC3B,OAAOZ,cAAA,CAAea,GAAA,CAAKC,UAAA;EAC7B;EAMA;IAAMR,OAAE;IAAA,GAASS;EAAG,IAAKf,cAAI,MAAkB;EAC/C,IAAAgB,gBAAM;IACJ,GAAGD;EACL;EAEAV,YAAA,GAAeV,eAAA,CAAgBS,YAAA,EAAcC,YAAA,EAAcW,gBAAgB;EAE3E,IAAIJ,uBAAA,EAAyB;IAC3BP,YAAA,CAAaQ,GAAA,CAAKC,UAAA,GAAa;EACjC;EAGA,IAAIG,OAAA,CAAQC,GAAA,CAAIC,KAAA,EAAO;IAErBC,OAAA,CAAQC,KAAA,CAAM,kBAAkBC,IAAA,CAAKC,SAAA,CAAUlB,YAAA,EAAc,MAAM,CAAC,GAAG;AAAA;AAAA,CAAU;EACnF;EAEA,OAAOA,YAAA;AACT","ignoreList":[]}
|
package/dist/exports/clean.mjs
CHANGED
|
@@ -1,31 +1,99 @@
|
|
|
1
|
-
import { rm } from "node:fs/promises";
|
|
2
|
-
import { join } from "node:path";
|
|
1
|
+
import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
3
|
import { fillOptions } from "../config/getOptionsFilled.mjs";
|
|
4
4
|
import { getSSRExternalsCachePath } from "../plugins/autoDepOptimizePlugin.mjs";
|
|
5
5
|
import { getCacheDir } from "../utils/getCacheDir.mjs";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
import { readState, writeState } from "../utils/state.mjs";
|
|
7
|
+
const CLEAN_LOCK_WAIT_MS = 25;
|
|
8
|
+
const CLEAN_LOCK_TIMEOUT_MS = 6e4;
|
|
9
|
+
function getErrorCode(err) {
|
|
10
|
+
if (err instanceof Error && "code" in err && typeof err.code === "string") {
|
|
11
|
+
return err.code;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async function withCacheCleanLock(cacheDir, action) {
|
|
15
|
+
const lockPath = join(dirname(cacheDir), ".vxrn-clean.lock");
|
|
16
|
+
const startedAt = Date.now();
|
|
17
|
+
await mkdir(dirname(lockPath), {
|
|
18
|
+
recursive: true
|
|
19
|
+
});
|
|
20
|
+
while (true) {
|
|
21
|
+
try {
|
|
22
|
+
await writeFile(lockPath, `${process.pid}
|
|
23
|
+
`, {
|
|
24
|
+
flag: "wx"
|
|
25
|
+
});
|
|
26
|
+
break;
|
|
27
|
+
} catch (err) {
|
|
28
|
+
if (getErrorCode(err) !== "EEXIST") {
|
|
29
|
+
throw err;
|
|
30
|
+
}
|
|
31
|
+
if (Date.now() - startedAt >= CLEAN_LOCK_TIMEOUT_MS) {
|
|
32
|
+
let owner = "unknown process";
|
|
33
|
+
try {
|
|
34
|
+
owner = `process ${(await readFile(lockPath, "utf8")).trim()}`;
|
|
35
|
+
} catch (readErr) {
|
|
36
|
+
if (getErrorCode(readErr) === "ENOENT") {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
throw readErr;
|
|
40
|
+
}
|
|
41
|
+
throw new Error(`Timed out waiting for VXRN cache cleanup lock held by ${owner}`);
|
|
42
|
+
}
|
|
43
|
+
await new Promise(resolve => setTimeout(resolve, CLEAN_LOCK_WAIT_MS));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
return await action();
|
|
48
|
+
} finally {
|
|
49
|
+
await rm(lockPath, {
|
|
50
|
+
force: true
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function removeCachePaths(root, only) {
|
|
55
|
+
const removeVxrnCache = process.env.VXRN_DONT_CLEAN_SELF ? rm(getSSRExternalsCachePath(root)).catch(throwIfNotMissingError) : rm(getCacheDir(root), {
|
|
13
56
|
recursive: true,
|
|
14
57
|
force: true
|
|
15
|
-
}).catch(throwIfNotMissingError)
|
|
58
|
+
}).catch(throwIfNotMissingError);
|
|
59
|
+
console.info(`[vxrn] cleaning`);
|
|
60
|
+
await Promise.all([rm(join(root, "node_modules", ".vite"), {
|
|
16
61
|
recursive: true,
|
|
17
62
|
force: true
|
|
18
|
-
}).catch(throwIfNotMissingError), only === "vite" ? null : rm(join(root, "dist"), {
|
|
63
|
+
}).catch(throwIfNotMissingError), removeVxrnCache, only === "vite" ? null : rm(join(root, "dist"), {
|
|
19
64
|
recursive: true,
|
|
20
65
|
force: true
|
|
21
66
|
}).catch(throwIfNotMissingError)]);
|
|
67
|
+
}
|
|
68
|
+
async function prepareCacheForVersion({
|
|
69
|
+
root,
|
|
70
|
+
cacheDir,
|
|
71
|
+
versionHash,
|
|
72
|
+
forceClean = false
|
|
73
|
+
}) {
|
|
74
|
+
return withCacheCleanLock(cacheDir, async () => {
|
|
75
|
+
const state = await readState(cacheDir);
|
|
76
|
+
const versionChanged = !!state.versionHash && state.versionHash !== versionHash;
|
|
77
|
+
const shouldClean = forceClean || versionChanged;
|
|
78
|
+
if (shouldClean) {
|
|
79
|
+
await removeCachePaths(root, "vite");
|
|
80
|
+
}
|
|
81
|
+
if (shouldClean || state.versionHash !== versionHash) {
|
|
82
|
+
await writeState(cacheDir, {
|
|
83
|
+
versionHash
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
return shouldClean;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const clean = async (rest, only) => {
|
|
90
|
+
const options = await fillOptions(rest);
|
|
91
|
+
await withCacheCleanLock(options.cacheDir, () => removeCachePaths(options.root, only));
|
|
22
92
|
};
|
|
23
93
|
function throwIfNotMissingError(err) {
|
|
24
|
-
if (err
|
|
25
|
-
|
|
26
|
-
throw Error;
|
|
27
|
-
}
|
|
94
|
+
if (getErrorCode(err) !== "ENOENT") {
|
|
95
|
+
throw err;
|
|
28
96
|
}
|
|
29
97
|
}
|
|
30
|
-
export { clean };
|
|
98
|
+
export { clean, prepareCacheForVersion };
|
|
31
99
|
//# sourceMappingURL=clean.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["rm","join","fillOptions","getSSRExternalsCachePath","getCacheDir","
|
|
1
|
+
{"version":3,"names":["mkdir","readFile","rm","writeFile","dirname","join","fillOptions","getSSRExternalsCachePath","getCacheDir","readState","writeState","CLEAN_LOCK_WAIT_MS","CLEAN_LOCK_TIMEOUT_MS","getErrorCode","err","Error","code","withCacheCleanLock","cacheDir","action","lockPath","startedAt","Date","now","recursive","process","pid","flag","owner","trim","readErr","Promise","resolve","setTimeout","force","removeCachePaths","root","only","removeVxrnCache","env","VXRN_DONT_CLEAN_SELF","catch","throwIfNotMissingError","console","info","all","prepareCacheForVersion","versionHash","forceClean","state","versionChanged","shouldClean","clean","rest","options"],"sources":["../../src/exports/clean.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { rm } from "fs/promises";
|
|
2
|
-
import { join } from "path";
|
|
1
|
+
import { mkdir, readFile, rm, writeFile } from "fs/promises";
|
|
2
|
+
import { dirname, join } from "path";
|
|
3
3
|
import { fillOptions } from "../config/getOptionsFilled.native.js";
|
|
4
4
|
import { getSSRExternalsCachePath } from "../plugins/autoDepOptimizePlugin.native.js";
|
|
5
5
|
import { getCacheDir } from "../utils/getCacheDir.native.js";
|
|
6
|
+
import { readState, writeState } from "../utils/state.native.js";
|
|
6
7
|
function _instanceof(left, right) {
|
|
7
8
|
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
8
9
|
return !!right[Symbol.hasInstance](left);
|
|
@@ -10,29 +11,101 @@ function _instanceof(left, right) {
|
|
|
10
11
|
return left instanceof right;
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
var CLEAN_LOCK_WAIT_MS = 25;
|
|
15
|
+
var CLEAN_LOCK_TIMEOUT_MS = 6e4;
|
|
16
|
+
function getErrorCode(err) {
|
|
17
|
+
if (_instanceof(err, Error) && "code" in err && typeof err.code === "string") {
|
|
18
|
+
return err.code;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function withCacheCleanLock(cacheDir, action) {
|
|
22
|
+
var lockPath = join(dirname(cacheDir), ".vxrn-clean.lock");
|
|
23
|
+
var startedAt = Date.now();
|
|
24
|
+
await mkdir(dirname(lockPath), {
|
|
25
|
+
recursive: true
|
|
26
|
+
});
|
|
27
|
+
while (true) {
|
|
28
|
+
try {
|
|
29
|
+
await writeFile(lockPath, `${process.pid}
|
|
30
|
+
`, {
|
|
31
|
+
flag: "wx"
|
|
32
|
+
});
|
|
33
|
+
break;
|
|
34
|
+
} catch (err) {
|
|
35
|
+
if (getErrorCode(err) !== "EEXIST") {
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
if (Date.now() - startedAt >= CLEAN_LOCK_TIMEOUT_MS) {
|
|
39
|
+
var owner = "unknown process";
|
|
40
|
+
try {
|
|
41
|
+
owner = `process ${(await readFile(lockPath, "utf8")).trim()}`;
|
|
42
|
+
} catch (readErr) {
|
|
43
|
+
if (getErrorCode(readErr) === "ENOENT") {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
throw readErr;
|
|
47
|
+
}
|
|
48
|
+
throw new Error(`Timed out waiting for VXRN cache cleanup lock held by ${owner}`);
|
|
49
|
+
}
|
|
50
|
+
await new Promise(function (resolve) {
|
|
51
|
+
return setTimeout(resolve, CLEAN_LOCK_WAIT_MS);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
return await action();
|
|
57
|
+
} finally {
|
|
58
|
+
await rm(lockPath, {
|
|
59
|
+
force: true
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async function removeCachePaths(root, only) {
|
|
64
|
+
var removeVxrnCache = process.env.VXRN_DONT_CLEAN_SELF ? rm(getSSRExternalsCachePath(root)).catch(throwIfNotMissingError) : rm(getCacheDir(root), {
|
|
20
65
|
recursive: true,
|
|
21
66
|
force: true
|
|
22
|
-
}).catch(throwIfNotMissingError)
|
|
67
|
+
}).catch(throwIfNotMissingError);
|
|
68
|
+
console.info(`[vxrn] cleaning`);
|
|
69
|
+
await Promise.all([rm(join(root, "node_modules", ".vite"), {
|
|
23
70
|
recursive: true,
|
|
24
71
|
force: true
|
|
25
|
-
}).catch(throwIfNotMissingError), only === "vite" ? null : rm(join(root, "dist"), {
|
|
72
|
+
}).catch(throwIfNotMissingError), removeVxrnCache, only === "vite" ? null : rm(join(root, "dist"), {
|
|
26
73
|
recursive: true,
|
|
27
74
|
force: true
|
|
28
75
|
}).catch(throwIfNotMissingError)]);
|
|
76
|
+
}
|
|
77
|
+
async function prepareCacheForVersion(param) {
|
|
78
|
+
var {
|
|
79
|
+
root,
|
|
80
|
+
cacheDir,
|
|
81
|
+
versionHash,
|
|
82
|
+
forceClean = false
|
|
83
|
+
} = param;
|
|
84
|
+
return withCacheCleanLock(cacheDir, async function () {
|
|
85
|
+
var state = await readState(cacheDir);
|
|
86
|
+
var versionChanged = !!state.versionHash && state.versionHash !== versionHash;
|
|
87
|
+
var shouldClean = forceClean || versionChanged;
|
|
88
|
+
if (shouldClean) {
|
|
89
|
+
await removeCachePaths(root, "vite");
|
|
90
|
+
}
|
|
91
|
+
if (shouldClean || state.versionHash !== versionHash) {
|
|
92
|
+
await writeState(cacheDir, {
|
|
93
|
+
versionHash
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return shouldClean;
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
var clean = async function (rest, only) {
|
|
100
|
+
var options = await fillOptions(rest);
|
|
101
|
+
await withCacheCleanLock(options.cacheDir, function () {
|
|
102
|
+
return removeCachePaths(options.root, only);
|
|
103
|
+
});
|
|
29
104
|
};
|
|
30
105
|
function throwIfNotMissingError(err) {
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
throw Error;
|
|
34
|
-
}
|
|
106
|
+
if (getErrorCode(err) !== "ENOENT") {
|
|
107
|
+
throw err;
|
|
35
108
|
}
|
|
36
109
|
}
|
|
37
|
-
export { clean };
|
|
110
|
+
export { clean, prepareCacheForVersion };
|
|
38
111
|
//# sourceMappingURL=clean.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["rm","join","fillOptions","getSSRExternalsCachePath","getCacheDir","_instanceof","left","right","Symbol","hasInstance","
|
|
1
|
+
{"version":3,"names":["mkdir","readFile","rm","writeFile","dirname","join","fillOptions","getSSRExternalsCachePath","getCacheDir","readState","writeState","_instanceof","left","right","Symbol","hasInstance","CLEAN_LOCK_WAIT_MS","CLEAN_LOCK_TIMEOUT_MS","getErrorCode","err","Error","code","withCacheCleanLock","cacheDir","action","lockPath","startedAt","Date","now","recursive","process","pid","flag","owner","trim","readErr","Promise","resolve","setTimeout","force","removeCachePaths","root","only","removeVxrnCache","env","VXRN_DONT_CLEAN_SELF","catch","throwIfNotMissingError","console","info","all","prepareCacheForVersion","param","versionHash","forceClean","state","versionChanged","shouldClean"],"sources":["../../src/exports/clean.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { mkdtemp, mkdir, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { promisify } from "node:util";
|
|
7
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
8
|
+
const execFileAsync = promisify(execFile);
|
|
9
|
+
describe("prepareCacheForVersion", () => {
|
|
10
|
+
let root;
|
|
11
|
+
afterEach(async () => {
|
|
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 () => {
|
|
20
|
+
root = await mkdtemp(join(tmpdir(), "vxrn-concurrent-clean-"));
|
|
21
|
+
const cacheDir = join(root, "node_modules", ".vxrn");
|
|
22
|
+
const viteDir = join(root, "node_modules", ".vite");
|
|
23
|
+
const participantsDir = join(root, "participants");
|
|
24
|
+
const 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
|
+
const moduleUrl = pathToFileURL(join(dirname(import.meta.filename), "clean.ts")).href;
|
|
36
|
+
const workerScript = participant => `
|
|
37
|
+
import { readdir, writeFile } from 'node:fs/promises'
|
|
38
|
+
import { join } from 'node:path'
|
|
39
|
+
import { prepareCacheForVersion } from ${JSON.stringify(moduleUrl)}
|
|
40
|
+
|
|
41
|
+
const root = ${JSON.stringify(root)}
|
|
42
|
+
const participantsDir = ${JSON.stringify(participantsDir)}
|
|
43
|
+
await writeFile(join(participantsDir, ${JSON.stringify(String(participant))}), '')
|
|
44
|
+
while ((await readdir(participantsDir)).length < ${participantCount}) {
|
|
45
|
+
await Bun.sleep(5)
|
|
46
|
+
}
|
|
47
|
+
const cleaned = await prepareCacheForVersion({
|
|
48
|
+
root,
|
|
49
|
+
cacheDir: join(root, 'node_modules', '.vxrn'),
|
|
50
|
+
versionHash: 'new',
|
|
51
|
+
})
|
|
52
|
+
console.info(cleaned ? 'cleaned-by-worker' : 'cache-already-current')
|
|
53
|
+
`;
|
|
54
|
+
const results = await Promise.all(Array.from({
|
|
55
|
+
length: participantCount
|
|
56
|
+
}, (_, participant) => execFileAsync("bun", ["-e", workerScript(participant)], {
|
|
57
|
+
env: {
|
|
58
|
+
...process.env,
|
|
59
|
+
VXRN_DONT_CLEAN_SELF: ""
|
|
60
|
+
}
|
|
61
|
+
})));
|
|
62
|
+
const output = results.map(({
|
|
63
|
+
stdout
|
|
64
|
+
}) => stdout).join("\n");
|
|
65
|
+
expect(output.match(/\[vxrn\] cleaning/g)).toHaveLength(1);
|
|
66
|
+
expect(output.match(/cleaned-by-worker/g)).toHaveLength(1);
|
|
67
|
+
expect(JSON.parse(await readFile(join(cacheDir, "state.json"), "utf8"))).toEqual({
|
|
68
|
+
versionHash: "new"
|
|
69
|
+
});
|
|
70
|
+
await expect(readFile(join(cacheDir, "stale"))).rejects.toMatchObject({
|
|
71
|
+
code: "ENOENT"
|
|
72
|
+
});
|
|
73
|
+
await expect(readFile(join(viteDir, "stale"))).rejects.toMatchObject({
|
|
74
|
+
code: "ENOENT"
|
|
75
|
+
});
|
|
76
|
+
await expect(readFile(join(root, "node_modules", ".vxrn-clean.lock"))).rejects.toMatchObject({
|
|
77
|
+
code: "ENOENT"
|
|
78
|
+
});
|
|
79
|
+
}, 2e4);
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=clean.test.mjs.map
|