vxrn 0.1.84 → 0.1.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/LICENSE +22 -0
  2. package/dist/cjs/exports/build.js +4 -3
  3. package/dist/cjs/exports/build.js.map +1 -1
  4. package/dist/cjs/exports/build.native.js +6 -3
  5. package/dist/cjs/exports/build.native.js.map +1 -1
  6. package/dist/cjs/utils/findDepsToOptimize.js +167 -0
  7. package/dist/cjs/utils/findDepsToOptimize.js.map +6 -0
  8. package/dist/cjs/utils/findDepsToOptimize.native.js +564 -0
  9. package/dist/cjs/utils/findDepsToOptimize.native.js.map +6 -0
  10. package/dist/cjs/utils/getBaseViteConfig.js +2 -0
  11. package/dist/cjs/utils/getBaseViteConfig.js.map +1 -1
  12. package/dist/cjs/utils/getBaseViteConfig.native.js +2 -0
  13. package/dist/cjs/utils/getBaseViteConfig.native.js.map +1 -1
  14. package/dist/esm/exports/build.js +4 -3
  15. package/dist/esm/exports/build.js.map +1 -1
  16. package/dist/esm/exports/build.mjs +4 -3
  17. package/dist/esm/exports/build.native.js +6 -3
  18. package/dist/esm/exports/build.native.js.map +1 -1
  19. package/dist/esm/utils/findDepsToOptimize.js +145 -0
  20. package/dist/esm/utils/findDepsToOptimize.js.map +6 -0
  21. package/dist/esm/utils/findDepsToOptimize.mjs +130 -0
  22. package/dist/esm/utils/findDepsToOptimize.native.js +530 -0
  23. package/dist/esm/utils/findDepsToOptimize.native.js.map +6 -0
  24. package/dist/esm/utils/getBaseViteConfig.js +2 -0
  25. package/dist/esm/utils/getBaseViteConfig.js.map +1 -1
  26. package/dist/esm/utils/getBaseViteConfig.mjs +1 -1
  27. package/dist/esm/utils/getBaseViteConfig.native.js +2 -0
  28. package/dist/esm/utils/getBaseViteConfig.native.js.map +1 -1
  29. package/package.json +5 -5
  30. package/src/exports/build.ts +3 -2
  31. package/src/types.ts +2 -3
  32. package/src/utils/findDepsToOptimize.ts +293 -0
  33. package/src/utils/getBaseViteConfig.ts +2 -0
  34. package/types/types.d.ts +2 -3
  35. package/types/utils/findDepsToOptimize.d.ts +19 -0
  36. package/types/utils/getOptionsFilled.d.ts +1 -0
@@ -71,7 +71,7 @@ const disableOptimizationConfig = {
71
71
  outDir: "dist/client",
72
72
  manifest: !0,
73
73
  rollupOptions: {
74
- input: ["./src/entry.tsx"]
74
+ input: ["virtual:vxs-entry"]
75
75
  }
76
76
  }
77
77
  });
@@ -99,10 +99,11 @@ const disableOptimizationConfig = {
99
99
  build: {
100
100
  // we want one big file of css
101
101
  cssCodeSplit: !1,
102
- ssr: "src/entry.tsx",
102
+ ssr: !0,
103
103
  outDir: "dist/server",
104
104
  rollupOptions: {
105
- external: []
105
+ external: [],
106
+ input: ["virtual:vxs-entry"]
106
107
  }
107
108
  }
108
109
  });
@@ -252,7 +252,7 @@ var disableOptimizationConfig = {
252
252
  manifest: !0,
253
253
  rollupOptions: {
254
254
  input: [
255
- "./src/entry.tsx"
255
+ "virtual:vxs-entry"
256
256
  ]
257
257
  }
258
258
  }
@@ -281,10 +281,13 @@ var disableOptimizationConfig = {
281
281
  build: {
282
282
  // we want one big file of css
283
283
  cssCodeSplit: !1,
284
- ssr: "src/entry.tsx",
284
+ ssr: !0,
285
285
  outDir: "dist/server",
286
286
  rollupOptions: {
287
- external: []
287
+ external: [],
288
+ input: [
289
+ "virtual:vxs-entry"
290
+ ]
288
291
  }
289
292
  }
290
293
  }), [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/exports/Users/n8/vxrn/packages/vxrn/src/exports/build.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": ["FSExtra", "rm", "mergeConfig", "build", "viteBuild", "analyzer", "getBaseViteConfig", "getOptimizeDeps", "getOptionsFilled", "existsSync", "Error", "stackTraceLimit", "Number", "POSITIVE_INFINITY", "disableOptimizationConfig", "optimizeDeps", "esbuildOptions", "minify", "rollupOptions", "treeshake", "output", "minifyInternalExports", "optionsIn", "buildArgs", "options", "webBuildConfig", "excludeAPIRoutesPlugin", "clientOutput", "clientBuildConfig", "serverBuildConfig", "_ref", "serverOutput", "clientManifest", "Promise", "all", "recursive", "force", "_state", "process", "env", "NODE_ENV", "mode", "root", "clearScreen", "enforce", "name", "transform", "code", "id", "test", "webConfig", "step", "plugins", "analyze", "analyzerMode", "fileName", "ssrManifest", "outDir", "manifest", "input", "VXRN_DISABLE_PROD_OPTIMIZATION", "console", "info", "define", "ssr", "noExternal", "include", "cssCodeSplit", "external", "afterBuild", "readJSON"]
6
6
  }
@@ -0,0 +1,145 @@
1
+ import fs from "node:fs/promises";
2
+ import fsSync from "node:fs";
3
+ import path from "node:path";
4
+ async function crawlFrameworkPkgs(options) {
5
+ const pkgJsonPath = await findClosestPkgJsonPath(options.root);
6
+ if (!pkgJsonPath) {
7
+ if (typeof Deno < "u")
8
+ return {
9
+ optimizeDeps: { include: [], exclude: [] },
10
+ ssr: { noExternal: [], external: [] }
11
+ };
12
+ throw new Error(`Cannot find package.json from ${options.root}`);
13
+ }
14
+ const pkgJson = await readJson(pkgJsonPath).catch((e) => {
15
+ throw new Error(`Unable to read ${pkgJsonPath}`, { cause: e });
16
+ });
17
+ let optimizeDepsInclude = [], optimizeDepsExclude = [], ssrNoExternal = [], ssrExternal = [];
18
+ if (await crawl(pkgJsonPath, pkgJson), options.viteUserConfig) {
19
+ const _optimizeDepsExclude = options.viteUserConfig?.optimizeDeps?.exclude;
20
+ _optimizeDepsExclude && (optimizeDepsInclude = optimizeDepsInclude.filter(
21
+ (dep) => !isDepExcluded(dep, _optimizeDepsExclude)
22
+ ));
23
+ const _optimizeDepsInclude = options.viteUserConfig?.optimizeDeps?.include;
24
+ _optimizeDepsInclude && (optimizeDepsExclude = optimizeDepsExclude.filter(
25
+ (dep) => !isDepIncluded(dep, _optimizeDepsInclude)
26
+ ));
27
+ const _ssrExternal = options.viteUserConfig?.ssr?.external;
28
+ _ssrExternal && (ssrNoExternal = ssrNoExternal.filter((dep) => !isDepExternaled(dep, _ssrExternal)));
29
+ const _ssrNoExternal = options.viteUserConfig?.ssr?.noExternal;
30
+ _ssrNoExternal && (ssrExternal = ssrExternal.filter((dep) => !isDepNoExternaled(dep, _ssrNoExternal)));
31
+ }
32
+ return {
33
+ optimizeDeps: {
34
+ include: optimizeDepsInclude,
35
+ exclude: optimizeDepsExclude
36
+ },
37
+ ssr: {
38
+ noExternal: ssrNoExternal,
39
+ external: ssrExternal
40
+ }
41
+ };
42
+ async function crawl(pkgJsonPath2, pkgJson2, parentDepNames = []) {
43
+ const isRoot = parentDepNames.length === 0;
44
+ let deps = [
45
+ ...Object.keys(pkgJson2.dependencies || {}),
46
+ ...isRoot ? Object.keys(pkgJson2.devDependencies || {}) : []
47
+ ];
48
+ deps = deps.filter((dep) => {
49
+ if (parentDepNames.includes(dep))
50
+ return !1;
51
+ const isFrameworkPkg = options.isFrameworkPkgByName?.(dep), isSemiFrameworkPkg = options.isSemiFrameworkPkgByName?.(dep);
52
+ return isFrameworkPkg ? (optimizeDepsExclude.push(dep), ssrNoExternal.push(dep)) : isSemiFrameworkPkg && ssrNoExternal.push(dep), !(isFrameworkPkg === !1 || isSemiFrameworkPkg === !1);
53
+ });
54
+ const promises = deps.map(async (dep) => {
55
+ const depPkgJsonPath = await findDepPkgJsonPath(dep, pkgJsonPath2);
56
+ if (!depPkgJsonPath) return;
57
+ const depPkgJson = await readJson(depPkgJsonPath).catch(() => {
58
+ });
59
+ if (!depPkgJson) return;
60
+ if (ssrNoExternal.includes(dep))
61
+ return crawl(depPkgJsonPath, depPkgJson, parentDepNames.concat(dep));
62
+ const isFrameworkPkg = options.isFrameworkPkgByJson?.(depPkgJson), isSemiFrameworkPkg = options.isSemiFrameworkPkgByJson?.(depPkgJson);
63
+ if (isFrameworkPkg || isSemiFrameworkPkg)
64
+ return isFrameworkPkg ? (optimizeDepsExclude.push(dep), ssrNoExternal.push(dep)) : isSemiFrameworkPkg && ssrNoExternal.push(dep), crawl(depPkgJsonPath, depPkgJson, parentDepNames.concat(dep));
65
+ isRoot || (await pkgNeedsOptimization(depPkgJson, depPkgJsonPath) && optimizeDepsInclude.push(parentDepNames.concat(dep).join(" > ")), !options.isBuild && !ssrExternal.includes(dep) && ssrExternal.push(dep));
66
+ });
67
+ await Promise.all(promises);
68
+ }
69
+ }
70
+ async function findDepPkgJsonPath(dep, parent) {
71
+ let root = parent;
72
+ for (; root; ) {
73
+ const pkg = path.join(root, "node_modules", dep, "package.json");
74
+ try {
75
+ return await fs.access(pkg), fsSync.realpathSync(pkg);
76
+ } catch {
77
+ }
78
+ const nextRoot = path.dirname(root);
79
+ if (nextRoot === root) break;
80
+ root = nextRoot;
81
+ }
82
+ }
83
+ async function findClosestPkgJsonPath(dir, predicate) {
84
+ for (dir.endsWith("package.json") && (dir = path.dirname(dir)); dir; ) {
85
+ const pkg = path.join(dir, "package.json");
86
+ try {
87
+ if ((await fs.stat(pkg)).isFile() && (!predicate || await predicate(pkg)))
88
+ return pkg;
89
+ } catch {
90
+ }
91
+ const nextDir = path.dirname(dir);
92
+ if (nextDir === dir) break;
93
+ dir = nextDir;
94
+ }
95
+ }
96
+ async function pkgNeedsOptimization(pkgJson, pkgJsonPath) {
97
+ if (pkgJson.module || pkgJson.exports) return !1;
98
+ if (pkgJson.main) {
99
+ const entryExt = path.extname(pkgJson.main);
100
+ return !entryExt || entryExt === ".js" || entryExt === ".cjs";
101
+ }
102
+ try {
103
+ return await fs.access(path.join(path.dirname(pkgJsonPath), "index.js")), !0;
104
+ } catch {
105
+ return !1;
106
+ }
107
+ }
108
+ async function readJson(findDepPkgJsonPath2) {
109
+ return JSON.parse(await fs.readFile(findDepPkgJsonPath2, "utf8"));
110
+ }
111
+ function isDepIncluded(dep, optimizeDepsInclude) {
112
+ return optimizeDepsInclude.some((id) => parseIncludeStr(id) === dep);
113
+ }
114
+ function isDepExcluded(dep, optimizeDepsExclude) {
115
+ return dep = parseIncludeStr(dep), optimizeDepsExclude.some((id) => id === dep || dep.startsWith(`${id}/`));
116
+ }
117
+ function isDepNoExternaled(dep, ssrNoExternal) {
118
+ return ssrNoExternal === !0 ? !0 : isMatch(dep, ssrNoExternal);
119
+ }
120
+ function isDepExternaled(dep, ssrExternal) {
121
+ return ssrExternal.includes(dep);
122
+ }
123
+ function parseIncludeStr(raw) {
124
+ const lastArrow = raw.lastIndexOf(">");
125
+ return lastArrow === -1 ? raw : raw.slice(lastArrow + 1).trim();
126
+ }
127
+ function isMatch(target, pattern) {
128
+ if (Array.isArray(pattern))
129
+ return pattern.some((p) => isMatch(target, p));
130
+ if (typeof pattern == "string")
131
+ return target === pattern;
132
+ if (pattern instanceof RegExp)
133
+ return pattern.test(target);
134
+ }
135
+ export {
136
+ crawlFrameworkPkgs,
137
+ findClosestPkgJsonPath,
138
+ findDepPkgJsonPath,
139
+ isDepExcluded,
140
+ isDepExternaled,
141
+ isDepIncluded,
142
+ isDepNoExternaled,
143
+ pkgNeedsOptimization
144
+ };
145
+ //# sourceMappingURL=findDepsToOptimize.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/findDepsToOptimize.ts"],
4
+ "mappings": "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",
5
+ "names": ["pkgJsonPath", "pkgJson", "findDepPkgJsonPath"]
6
+ }
@@ -0,0 +1,130 @@
1
+ import fs from "node:fs/promises";
2
+ import fsSync from "node:fs";
3
+ import path from "node:path";
4
+ async function crawlFrameworkPkgs(options) {
5
+ const pkgJsonPath = await findClosestPkgJsonPath(options.root);
6
+ if (!pkgJsonPath) {
7
+ if (typeof Deno < "u") return {
8
+ optimizeDeps: {
9
+ include: [],
10
+ exclude: []
11
+ },
12
+ ssr: {
13
+ noExternal: [],
14
+ external: []
15
+ }
16
+ };
17
+ throw new Error(`Cannot find package.json from ${options.root}`);
18
+ }
19
+ const pkgJson = await readJson(pkgJsonPath).catch(e => {
20
+ throw new Error(`Unable to read ${pkgJsonPath}`, {
21
+ cause: e
22
+ });
23
+ });
24
+ let optimizeDepsInclude = [],
25
+ optimizeDepsExclude = [],
26
+ ssrNoExternal = [],
27
+ ssrExternal = [];
28
+ if (await crawl(pkgJsonPath, pkgJson), options.viteUserConfig) {
29
+ const _optimizeDepsExclude = options.viteUserConfig?.optimizeDeps?.exclude;
30
+ _optimizeDepsExclude && (optimizeDepsInclude = optimizeDepsInclude.filter(dep => !isDepExcluded(dep, _optimizeDepsExclude)));
31
+ const _optimizeDepsInclude = options.viteUserConfig?.optimizeDeps?.include;
32
+ _optimizeDepsInclude && (optimizeDepsExclude = optimizeDepsExclude.filter(dep => !isDepIncluded(dep, _optimizeDepsInclude)));
33
+ const _ssrExternal = options.viteUserConfig?.ssr?.external;
34
+ _ssrExternal && (ssrNoExternal = ssrNoExternal.filter(dep => !isDepExternaled(dep, _ssrExternal)));
35
+ const _ssrNoExternal = options.viteUserConfig?.ssr?.noExternal;
36
+ _ssrNoExternal && (ssrExternal = ssrExternal.filter(dep => !isDepNoExternaled(dep, _ssrNoExternal)));
37
+ }
38
+ return {
39
+ optimizeDeps: {
40
+ include: optimizeDepsInclude,
41
+ exclude: optimizeDepsExclude
42
+ },
43
+ ssr: {
44
+ noExternal: ssrNoExternal,
45
+ external: ssrExternal
46
+ }
47
+ };
48
+ async function crawl(pkgJsonPath2, pkgJson2, parentDepNames = []) {
49
+ const isRoot = parentDepNames.length === 0;
50
+ let deps = [...Object.keys(pkgJson2.dependencies || {}), ...(isRoot ? Object.keys(pkgJson2.devDependencies || {}) : [])];
51
+ deps = deps.filter(dep => {
52
+ if (parentDepNames.includes(dep)) return !1;
53
+ const isFrameworkPkg = options.isFrameworkPkgByName?.(dep),
54
+ isSemiFrameworkPkg = options.isSemiFrameworkPkgByName?.(dep);
55
+ return isFrameworkPkg ? (optimizeDepsExclude.push(dep), ssrNoExternal.push(dep)) : isSemiFrameworkPkg && ssrNoExternal.push(dep), !(isFrameworkPkg === !1 || isSemiFrameworkPkg === !1);
56
+ });
57
+ const promises = deps.map(async dep => {
58
+ const depPkgJsonPath = await findDepPkgJsonPath(dep, pkgJsonPath2);
59
+ if (!depPkgJsonPath) return;
60
+ const depPkgJson = await readJson(depPkgJsonPath).catch(() => {});
61
+ if (!depPkgJson) return;
62
+ if (ssrNoExternal.includes(dep)) return crawl(depPkgJsonPath, depPkgJson, parentDepNames.concat(dep));
63
+ const isFrameworkPkg = options.isFrameworkPkgByJson?.(depPkgJson),
64
+ isSemiFrameworkPkg = options.isSemiFrameworkPkgByJson?.(depPkgJson);
65
+ if (isFrameworkPkg || isSemiFrameworkPkg) return isFrameworkPkg ? (optimizeDepsExclude.push(dep), ssrNoExternal.push(dep)) : isSemiFrameworkPkg && ssrNoExternal.push(dep), crawl(depPkgJsonPath, depPkgJson, parentDepNames.concat(dep));
66
+ isRoot || ((await pkgNeedsOptimization(depPkgJson, depPkgJsonPath)) && optimizeDepsInclude.push(parentDepNames.concat(dep).join(" > ")), !options.isBuild && !ssrExternal.includes(dep) && ssrExternal.push(dep));
67
+ });
68
+ await Promise.all(promises);
69
+ }
70
+ }
71
+ async function findDepPkgJsonPath(dep, parent) {
72
+ let root = parent;
73
+ for (; root;) {
74
+ const pkg = path.join(root, "node_modules", dep, "package.json");
75
+ try {
76
+ return await fs.access(pkg), fsSync.realpathSync(pkg);
77
+ } catch {}
78
+ const nextRoot = path.dirname(root);
79
+ if (nextRoot === root) break;
80
+ root = nextRoot;
81
+ }
82
+ }
83
+ async function findClosestPkgJsonPath(dir, predicate) {
84
+ for (dir.endsWith("package.json") && (dir = path.dirname(dir)); dir;) {
85
+ const pkg = path.join(dir, "package.json");
86
+ try {
87
+ if ((await fs.stat(pkg)).isFile() && (!predicate || (await predicate(pkg)))) return pkg;
88
+ } catch {}
89
+ const nextDir = path.dirname(dir);
90
+ if (nextDir === dir) break;
91
+ dir = nextDir;
92
+ }
93
+ }
94
+ async function pkgNeedsOptimization(pkgJson, pkgJsonPath) {
95
+ if (pkgJson.module || pkgJson.exports) return !1;
96
+ if (pkgJson.main) {
97
+ const entryExt = path.extname(pkgJson.main);
98
+ return !entryExt || entryExt === ".js" || entryExt === ".cjs";
99
+ }
100
+ try {
101
+ return await fs.access(path.join(path.dirname(pkgJsonPath), "index.js")), !0;
102
+ } catch {
103
+ return !1;
104
+ }
105
+ }
106
+ async function readJson(findDepPkgJsonPath2) {
107
+ return JSON.parse(await fs.readFile(findDepPkgJsonPath2, "utf8"));
108
+ }
109
+ function isDepIncluded(dep, optimizeDepsInclude) {
110
+ return optimizeDepsInclude.some(id => parseIncludeStr(id) === dep);
111
+ }
112
+ function isDepExcluded(dep, optimizeDepsExclude) {
113
+ return dep = parseIncludeStr(dep), optimizeDepsExclude.some(id => id === dep || dep.startsWith(`${id}/`));
114
+ }
115
+ function isDepNoExternaled(dep, ssrNoExternal) {
116
+ return ssrNoExternal === !0 ? !0 : isMatch(dep, ssrNoExternal);
117
+ }
118
+ function isDepExternaled(dep, ssrExternal) {
119
+ return ssrExternal.includes(dep);
120
+ }
121
+ function parseIncludeStr(raw) {
122
+ const lastArrow = raw.lastIndexOf(">");
123
+ return lastArrow === -1 ? raw : raw.slice(lastArrow + 1).trim();
124
+ }
125
+ function isMatch(target, pattern) {
126
+ if (Array.isArray(pattern)) return pattern.some(p => isMatch(target, p));
127
+ if (typeof pattern == "string") return target === pattern;
128
+ if (pattern instanceof RegExp) return pattern.test(target);
129
+ }
130
+ export { crawlFrameworkPkgs, findClosestPkgJsonPath, findDepPkgJsonPath, isDepExcluded, isDepExternaled, isDepIncluded, isDepNoExternaled, pkgNeedsOptimization };