@vxrn/compiler 1.2.16 → 1.2.18
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/cjs/cache.cjs +97 -0
- package/dist/cjs/cache.js +76 -0
- package/dist/cjs/cache.js.map +6 -0
- package/dist/cjs/index.cjs +57 -8
- package/dist/cjs/index.js +56 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/transformBabel.cjs +10 -4
- package/dist/cjs/transformBabel.js +14 -4
- package/dist/cjs/transformBabel.js.map +1 -1
- package/dist/esm/cache.js +62 -0
- package/dist/esm/cache.js.map +6 -0
- package/dist/esm/cache.mjs +71 -0
- package/dist/esm/cache.mjs.map +1 -0
- package/dist/esm/index.js +56 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +55 -6
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/transformBabel.js +14 -4
- package/dist/esm/transformBabel.js.map +1 -1
- package/dist/esm/transformBabel.mjs +10 -4
- package/dist/esm/transformBabel.mjs.map +1 -1
- package/package.json +4 -4
- package/src/cache.ts +135 -0
- package/src/index.ts +108 -2
- package/src/transformBabel.ts +20 -5
- package/types/cache.d.ts +17 -0
- package/types/cache.d.ts.map +1 -0
- package/types/index.d.ts.map +1 -1
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var cache_exports = {};
|
|
22
|
+
__export(cache_exports, {
|
|
23
|
+
getCacheStats: () => getCacheStats,
|
|
24
|
+
getCachedTransform: () => getCachedTransform,
|
|
25
|
+
logCacheStats: () => logCacheStats,
|
|
26
|
+
setCachedTransform: () => setCachedTransform
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(cache_exports);
|
|
29
|
+
var import_node_crypto = require("node:crypto"),
|
|
30
|
+
import_node_fs = require("node:fs"),
|
|
31
|
+
import_node_path = require("node:path");
|
|
32
|
+
const stats = {
|
|
33
|
+
hits: 0,
|
|
34
|
+
misses: 0,
|
|
35
|
+
writes: 0
|
|
36
|
+
};
|
|
37
|
+
function getCacheDir() {
|
|
38
|
+
const cacheDir = (0, import_node_path.join)(process.cwd(), "node_modules", ".vxrn", "compiler-cache");
|
|
39
|
+
return (0, import_node_fs.existsSync)(cacheDir) || (0, import_node_fs.mkdirSync)(cacheDir, {
|
|
40
|
+
recursive: !0
|
|
41
|
+
}), cacheDir;
|
|
42
|
+
}
|
|
43
|
+
function getCacheKey(filePath, environment) {
|
|
44
|
+
return (0, import_node_crypto.createHash)("sha1").update(`${environment}:${filePath}`).digest("hex");
|
|
45
|
+
}
|
|
46
|
+
function getContentHash(code) {
|
|
47
|
+
return (0, import_node_crypto.createHash)("sha1").update(code).digest("hex").slice(0, 16);
|
|
48
|
+
}
|
|
49
|
+
function getCachedTransform(filePath, code, environment) {
|
|
50
|
+
try {
|
|
51
|
+
const cacheDir = getCacheDir(),
|
|
52
|
+
cacheKey = getCacheKey(filePath, environment),
|
|
53
|
+
cachePath = (0, import_node_path.join)(cacheDir, `${cacheKey}.json`);
|
|
54
|
+
if (!(0, import_node_fs.existsSync)(cachePath)) return stats.misses++, null;
|
|
55
|
+
const cached = JSON.parse((0, import_node_fs.readFileSync)(cachePath, "utf-8")),
|
|
56
|
+
currentMtime = (0, import_node_fs.statSync)(filePath).mtimeMs;
|
|
57
|
+
if (cached.mtime !== currentMtime) return stats.misses++, null;
|
|
58
|
+
const currentHash = getContentHash(code);
|
|
59
|
+
return cached.hash !== currentHash ? (stats.misses++, null) : (stats.hits++, {
|
|
60
|
+
code: cached.code,
|
|
61
|
+
map: cached.map
|
|
62
|
+
});
|
|
63
|
+
} catch {
|
|
64
|
+
return stats.misses++, null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function setCachedTransform(filePath, code, result, environment) {
|
|
68
|
+
try {
|
|
69
|
+
const cacheDir = getCacheDir(),
|
|
70
|
+
cacheKey = getCacheKey(filePath, environment),
|
|
71
|
+
cachePath = (0, import_node_path.join)(cacheDir, `${cacheKey}.json`),
|
|
72
|
+
mtime = (0, import_node_fs.statSync)(filePath).mtimeMs,
|
|
73
|
+
hash = getContentHash(code),
|
|
74
|
+
entry = {
|
|
75
|
+
mtime,
|
|
76
|
+
hash,
|
|
77
|
+
code: result.code,
|
|
78
|
+
map: result.map
|
|
79
|
+
};
|
|
80
|
+
(0, import_node_fs.writeFileSync)(cachePath, JSON.stringify(entry), "utf-8"), stats.writes++;
|
|
81
|
+
} catch (err) {
|
|
82
|
+
console.warn(`[cache] Failed to write cache for ${filePath}:`, err);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function getCacheStats() {
|
|
86
|
+
return {
|
|
87
|
+
...stats
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function logCacheStats() {
|
|
91
|
+
if (!process.env.DEBUG_COMPILER_PERF) return;
|
|
92
|
+
const total = stats.hits + stats.misses;
|
|
93
|
+
if (total === 0) return;
|
|
94
|
+
const hitRate = (stats.hits / total * 100).toFixed(1);
|
|
95
|
+
console.info(`
|
|
96
|
+
\u{1F4BE} [Cache Stats] ${stats.hits} hits / ${stats.misses} misses (${hitRate}% hit rate), ${stats.writes} writes`);
|
|
97
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
|
+
var cache_exports = {};
|
|
16
|
+
__export(cache_exports, {
|
|
17
|
+
getCacheStats: () => getCacheStats,
|
|
18
|
+
getCachedTransform: () => getCachedTransform,
|
|
19
|
+
logCacheStats: () => logCacheStats,
|
|
20
|
+
setCachedTransform: () => setCachedTransform
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(cache_exports);
|
|
23
|
+
var import_node_crypto = require("node:crypto"), import_node_fs = require("node:fs"), import_node_path = require("node:path");
|
|
24
|
+
const stats = { hits: 0, misses: 0, writes: 0 };
|
|
25
|
+
function getCacheDir() {
|
|
26
|
+
const cacheDir = (0, import_node_path.join)(process.cwd(), "node_modules", ".vxrn", "compiler-cache");
|
|
27
|
+
return (0, import_node_fs.existsSync)(cacheDir) || (0, import_node_fs.mkdirSync)(cacheDir, { recursive: !0 }), cacheDir;
|
|
28
|
+
}
|
|
29
|
+
function getCacheKey(filePath, environment) {
|
|
30
|
+
return (0, import_node_crypto.createHash)("sha1").update(`${environment}:${filePath}`).digest("hex");
|
|
31
|
+
}
|
|
32
|
+
function getContentHash(code) {
|
|
33
|
+
return (0, import_node_crypto.createHash)("sha1").update(code).digest("hex").slice(0, 16);
|
|
34
|
+
}
|
|
35
|
+
function getCachedTransform(filePath, code, environment) {
|
|
36
|
+
try {
|
|
37
|
+
const cacheDir = getCacheDir(), cacheKey = getCacheKey(filePath, environment), cachePath = (0, import_node_path.join)(cacheDir, `${cacheKey}.json`);
|
|
38
|
+
if (!(0, import_node_fs.existsSync)(cachePath))
|
|
39
|
+
return stats.misses++, null;
|
|
40
|
+
const cached = JSON.parse((0, import_node_fs.readFileSync)(cachePath, "utf-8")), currentMtime = (0, import_node_fs.statSync)(filePath).mtimeMs;
|
|
41
|
+
if (cached.mtime !== currentMtime)
|
|
42
|
+
return stats.misses++, null;
|
|
43
|
+
const currentHash = getContentHash(code);
|
|
44
|
+
return cached.hash !== currentHash ? (stats.misses++, null) : (stats.hits++, { code: cached.code, map: cached.map });
|
|
45
|
+
} catch {
|
|
46
|
+
return stats.misses++, null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function setCachedTransform(filePath, code, result, environment) {
|
|
50
|
+
try {
|
|
51
|
+
const cacheDir = getCacheDir(), cacheKey = getCacheKey(filePath, environment), cachePath = (0, import_node_path.join)(cacheDir, `${cacheKey}.json`), mtime = (0, import_node_fs.statSync)(filePath).mtimeMs, hash = getContentHash(code), entry = {
|
|
52
|
+
mtime,
|
|
53
|
+
hash,
|
|
54
|
+
code: result.code,
|
|
55
|
+
map: result.map
|
|
56
|
+
};
|
|
57
|
+
(0, import_node_fs.writeFileSync)(cachePath, JSON.stringify(entry), "utf-8"), stats.writes++;
|
|
58
|
+
} catch (err) {
|
|
59
|
+
console.warn(`[cache] Failed to write cache for ${filePath}:`, err);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function getCacheStats() {
|
|
63
|
+
return { ...stats };
|
|
64
|
+
}
|
|
65
|
+
function logCacheStats() {
|
|
66
|
+
if (!process.env.DEBUG_COMPILER_PERF)
|
|
67
|
+
return;
|
|
68
|
+
const total = stats.hits + stats.misses;
|
|
69
|
+
if (total === 0) return;
|
|
70
|
+
const hitRate = (stats.hits / total * 100).toFixed(1);
|
|
71
|
+
console.info(
|
|
72
|
+
`
|
|
73
|
+
\u{1F4BE} [Cache Stats] ${stats.hits} hits / ${stats.misses} misses (${hitRate}% hit rate), ${stats.writes} writes`
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cache.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA2B,wBAC3B,iBAA6E,oBAC7E,mBAAqB;AAwBrB,MAAM,QAAoB,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAE1D,SAAS,cAAsB;AAE7B,QAAM,eAAW,uBAAK,QAAQ,IAAI,GAAG,gBAAgB,SAAS,gBAAgB;AAC9E,aAAK,2BAAW,QAAQ,SACtB,0BAAU,UAAU,EAAE,WAAW,GAAK,CAAC,GAElC;AACT;AAEA,SAAS,YAAY,UAAkB,aAA6B;AAGlE,aADa,+BAAW,MAAM,EAAE,OAAO,GAAG,WAAW,IAAI,QAAQ,EAAE,EAAE,OAAO,KAAK;AAEnF;AAEA,SAAS,eAAe,MAAsB;AAE5C,aAAO,+BAAW,MAAM,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAClE;AAEO,SAAS,mBACd,UACA,MACA,aACoC;AACpC,MAAI;AACF,UAAM,WAAW,YAAY,GACvB,WAAW,YAAY,UAAU,WAAW,GAC5C,gBAAY,uBAAK,UAAU,GAAG,QAAQ,OAAO;AAEnD,QAAI,KAAC,2BAAW,SAAS;AACvB,mBAAM,UACC;AAGT,UAAM,SAAqB,KAAK,UAAM,6BAAa,WAAW,OAAO,CAAC,GAGhE,mBAAe,yBAAS,QAAQ,EAAE;AACxC,QAAI,OAAO,UAAU;AACnB,mBAAM,UACC;AAIT,UAAM,cAAc,eAAe,IAAI;AACvC,WAAI,OAAO,SAAS,eAClB,MAAM,UACC,SAGT,MAAM,QACC,EAAE,MAAM,OAAO,MAAM,KAAK,OAAO,IAAI;AAAA,EAC9C,QAAc;AAEZ,iBAAM,UACC;AAAA,EACT;AACF;AAEO,SAAS,mBACd,UACA,MACA,QACA,aACM;AACN,MAAI;AACF,UAAM,WAAW,YAAY,GACvB,WAAW,YAAY,UAAU,WAAW,GAC5C,gBAAY,uBAAK,UAAU,GAAG,QAAQ,OAAO,GAE7C,YAAQ,yBAAS,QAAQ,EAAE,SAC3B,OAAO,eAAe,IAAI,GAE1B,QAAoB;AAAA,MACxB;AAAA,MACA;AAAA,MACA,MAAM,OAAO;AAAA,MACb,KAAK,OAAO;AAAA,IACd;AAEA,sCAAc,WAAW,KAAK,UAAU,KAAK,GAAG,OAAO,GACvD,MAAM;AAAA,EACR,SAAS,KAAK;AAEZ,YAAQ,KAAK,qCAAqC,QAAQ,KAAK,GAAG;AAAA,EACpE;AACF;AAEO,SAAS,gBAA4B;AAC1C,SAAO,EAAE,GAAG,MAAM;AACpB;AAEO,SAAS,gBAAsB;AAEpC,MAAI,CAAC,QAAQ,IAAI;AACf;AAGF,QAAM,QAAQ,MAAM,OAAO,MAAM;AACjC,MAAI,UAAU,EAAG;AAEjB,QAAM,WAAY,MAAM,OAAO,QAAS,KAAK,QAAQ,CAAC;AACtD,UAAQ;AAAA,IACN;AAAA,0BAAsB,MAAM,IAAI,WAAW,MAAM,MAAM,YAAY,OAAO,gBAAgB,MAAM,MAAM;AAAA,EACxG;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -32,11 +32,34 @@ var import_node_fs = require("node:fs"),
|
|
|
32
32
|
import_configure = require("./configure.cjs"),
|
|
33
33
|
import_constants = require("./constants.cjs"),
|
|
34
34
|
import_transformBabel = require("./transformBabel.cjs"),
|
|
35
|
-
import_transformSWC = require("./transformSWC.cjs")
|
|
35
|
+
import_transformSWC = require("./transformSWC.cjs"),
|
|
36
|
+
import_cache = require("./cache.cjs");
|
|
36
37
|
__reExport(index_exports, require("./configure.cjs"), module.exports);
|
|
37
38
|
__reExport(index_exports, require("./transformBabel.cjs"), module.exports);
|
|
38
39
|
__reExport(index_exports, require("./transformSWC.cjs"), module.exports);
|
|
39
|
-
const import_meta = {}
|
|
40
|
+
const import_meta = {},
|
|
41
|
+
perfStats = {
|
|
42
|
+
babel: {
|
|
43
|
+
totalCalls: 0,
|
|
44
|
+
totalTransforms: 0,
|
|
45
|
+
totalTime: 0,
|
|
46
|
+
byEnvironment: {}
|
|
47
|
+
},
|
|
48
|
+
optimizeDeps: {
|
|
49
|
+
byEnvironment: {}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
function logPerfSummary() {
|
|
53
|
+
if (process.env.DEBUG_COMPILER_PERF) {
|
|
54
|
+
console.info(`
|
|
55
|
+
\u{1F4CA} [Compiler Performance Summary]`), console.info(`Babel: ${perfStats.babel.totalTransforms} transforms / ${perfStats.babel.totalCalls} calls (${(perfStats.babel.totalTransforms / Math.max(perfStats.babel.totalCalls, 1) * 100).toFixed(1)}% transform rate)`), console.info(`Babel total time: ${perfStats.babel.totalTime}ms`);
|
|
56
|
+
for (const [env, stats] of Object.entries(perfStats.babel.byEnvironment)) stats.transforms > 0 && console.info(` ${env}: ${stats.transforms} transforms, ${stats.time}ms (${(stats.time / stats.transforms).toFixed(1)}ms avg)`);
|
|
57
|
+
for (const [env, stats] of Object.entries(perfStats.optimizeDeps.byEnvironment)) {
|
|
58
|
+
const elapsed = Date.now() - stats.startTime;
|
|
59
|
+
console.info(`optimizeDeps ${env}: checked ${stats.filesChecked} files, transformed ${stats.filesTransformed} (${elapsed}ms)`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
40
63
|
async function performBabelTransform({
|
|
41
64
|
id,
|
|
42
65
|
code,
|
|
@@ -45,6 +68,11 @@ async function performBabelTransform({
|
|
|
45
68
|
reactForRNVersion,
|
|
46
69
|
optionsIn
|
|
47
70
|
}) {
|
|
71
|
+
perfStats.babel.totalCalls++, perfStats.babel.byEnvironment[environment] || (perfStats.babel.byEnvironment[environment] = {
|
|
72
|
+
calls: 0,
|
|
73
|
+
transforms: 0,
|
|
74
|
+
time: 0
|
|
75
|
+
}), perfStats.babel.byEnvironment[environment].calls++;
|
|
48
76
|
const transformProps = {
|
|
49
77
|
id,
|
|
50
78
|
code,
|
|
@@ -60,12 +88,20 @@ async function performBabelTransform({
|
|
|
60
88
|
userSetting: userTransform
|
|
61
89
|
});
|
|
62
90
|
if (babelOptions) {
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
|
|
91
|
+
const cached = (0, import_cache.getCachedTransform)(id, code, environment);
|
|
92
|
+
if (cached) return perfStats.babel.byEnvironment[environment].transforms++, (0, import_constants.debug)?.(`[babel/cached] ${id}`), cached;
|
|
93
|
+
const startTime = Date.now(),
|
|
94
|
+
babelOut = await (0, import_transformBabel.transformBabel)(id, code, babelOptions),
|
|
95
|
+
babelTime = Date.now() - startTime;
|
|
96
|
+
if (babelOut?.code) {
|
|
97
|
+
perfStats.babel.totalTransforms++, perfStats.babel.totalTime += babelTime, perfStats.babel.byEnvironment[environment].transforms++, perfStats.babel.byEnvironment[environment].time += babelTime, (0, import_constants.debug)?.(`[babel] ${id}`);
|
|
98
|
+
const result = {
|
|
99
|
+
code: `${babelOut.code}
|
|
66
100
|
// vxrn-did-babel`,
|
|
67
|
-
|
|
68
|
-
|
|
101
|
+
map: babelOut.map
|
|
102
|
+
};
|
|
103
|
+
return (0, import_cache.setCachedTransform)(id, code, result, environment), result;
|
|
104
|
+
}
|
|
69
105
|
}
|
|
70
106
|
}
|
|
71
107
|
return null;
|
|
@@ -189,9 +225,14 @@ ${rootJS.code}
|
|
|
189
225
|
plugins: [{
|
|
190
226
|
name: `transform-before-optimize-deps-${environment}`,
|
|
191
227
|
setup(build) {
|
|
192
|
-
|
|
228
|
+
perfStats.optimizeDeps.byEnvironment[environment] || (perfStats.optimizeDeps.byEnvironment[environment] = {
|
|
229
|
+
filesChecked: 0,
|
|
230
|
+
filesTransformed: 0,
|
|
231
|
+
startTime: Date.now()
|
|
232
|
+
}), build.onLoad({
|
|
193
233
|
filter: /node_modules\/.*\.(tsx?|jsx?|mjs|cjs)$/
|
|
194
234
|
}, async args => {
|
|
235
|
+
perfStats.optimizeDeps.byEnvironment[environment].filesChecked++;
|
|
195
236
|
const production = process.env.NODE_ENV === "production",
|
|
196
237
|
code = await (0, import_promises.readFile)(args.path, "utf-8");
|
|
197
238
|
(0, import_constants.debug)?.(`[esbuild optimizeDeps] ${args.path}`);
|
|
@@ -204,12 +245,20 @@ ${rootJS.code}
|
|
|
204
245
|
optionsIn
|
|
205
246
|
});
|
|
206
247
|
if (!result) return null;
|
|
248
|
+
perfStats.optimizeDeps.byEnvironment[environment].filesTransformed++;
|
|
207
249
|
const ext = (0, import_node_path.extname)(args.path),
|
|
208
250
|
loader = ext === ".tsx" ? "tsx" : ext === ".ts" ? "ts" : ext === ".jsx" ? "jsx" : "js";
|
|
209
251
|
return {
|
|
210
252
|
contents: result.code,
|
|
211
253
|
loader
|
|
212
254
|
};
|
|
255
|
+
}), build.onEnd(() => {
|
|
256
|
+
if (process.env.DEBUG_COMPILER_PERF) {
|
|
257
|
+
const stats = perfStats.optimizeDeps.byEnvironment[environment],
|
|
258
|
+
elapsed = Date.now() - stats.startTime;
|
|
259
|
+
console.info(`[optimizeDeps ${environment}] Done: ${stats.filesChecked} files checked, ${stats.filesTransformed} transformed (${elapsed}ms)`);
|
|
260
|
+
}
|
|
261
|
+
Object.keys(perfStats.optimizeDeps.byEnvironment).length >= 2 && ((0, import_cache.logCacheStats)(), logPerfSummary());
|
|
213
262
|
});
|
|
214
263
|
}
|
|
215
264
|
}]
|
package/dist/cjs/index.js
CHANGED
|
@@ -17,11 +17,39 @@ __export(index_exports, {
|
|
|
17
17
|
createVXRNCompilerPlugin: () => createVXRNCompilerPlugin
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(index_exports);
|
|
20
|
-
var import_node_fs = require("node:fs"), import_promises = require("node:fs/promises"), import_node_path = require("node:path"), import_utils = require("@vxrn/utils"), import_css_to_rn = require("react-native-css-interop/css-to-rn/index.js"), import_configure = require("./configure"), import_constants = require("./constants"), import_transformBabel = require("./transformBabel"), import_transformSWC = require("./transformSWC");
|
|
20
|
+
var import_node_fs = require("node:fs"), import_promises = require("node:fs/promises"), import_node_path = require("node:path"), import_utils = require("@vxrn/utils"), import_css_to_rn = require("react-native-css-interop/css-to-rn/index.js"), import_configure = require("./configure"), import_constants = require("./constants"), import_transformBabel = require("./transformBabel"), import_transformSWC = require("./transformSWC"), import_cache = require("./cache");
|
|
21
21
|
__reExport(index_exports, require("./configure"), module.exports);
|
|
22
22
|
__reExport(index_exports, require("./transformBabel"), module.exports);
|
|
23
23
|
__reExport(index_exports, require("./transformSWC"), module.exports);
|
|
24
|
-
const import_meta = {}
|
|
24
|
+
const import_meta = {}, perfStats = {
|
|
25
|
+
babel: {
|
|
26
|
+
totalCalls: 0,
|
|
27
|
+
totalTransforms: 0,
|
|
28
|
+
totalTime: 0,
|
|
29
|
+
byEnvironment: {}
|
|
30
|
+
},
|
|
31
|
+
optimizeDeps: {
|
|
32
|
+
byEnvironment: {}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
function logPerfSummary() {
|
|
36
|
+
if (process.env.DEBUG_COMPILER_PERF) {
|
|
37
|
+
console.info(`
|
|
38
|
+
\u{1F4CA} [Compiler Performance Summary]`), console.info(
|
|
39
|
+
`Babel: ${perfStats.babel.totalTransforms} transforms / ${perfStats.babel.totalCalls} calls (${(perfStats.babel.totalTransforms / Math.max(perfStats.babel.totalCalls, 1) * 100).toFixed(1)}% transform rate)`
|
|
40
|
+
), console.info(`Babel total time: ${perfStats.babel.totalTime}ms`);
|
|
41
|
+
for (const [env, stats] of Object.entries(perfStats.babel.byEnvironment))
|
|
42
|
+
stats.transforms > 0 && console.info(
|
|
43
|
+
` ${env}: ${stats.transforms} transforms, ${stats.time}ms (${(stats.time / stats.transforms).toFixed(1)}ms avg)`
|
|
44
|
+
);
|
|
45
|
+
for (const [env, stats] of Object.entries(perfStats.optimizeDeps.byEnvironment)) {
|
|
46
|
+
const elapsed = Date.now() - stats.startTime;
|
|
47
|
+
console.info(
|
|
48
|
+
`optimizeDeps ${env}: checked ${stats.filesChecked} files, transformed ${stats.filesTransformed} (${elapsed}ms)`
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
25
53
|
async function performBabelTransform({
|
|
26
54
|
id,
|
|
27
55
|
code,
|
|
@@ -30,6 +58,7 @@ async function performBabelTransform({
|
|
|
30
58
|
reactForRNVersion,
|
|
31
59
|
optionsIn
|
|
32
60
|
}) {
|
|
61
|
+
perfStats.babel.totalCalls++, perfStats.babel.byEnvironment[environment] || (perfStats.babel.byEnvironment[environment] = { calls: 0, transforms: 0, time: 0 }), perfStats.babel.byEnvironment[environment].calls++;
|
|
33
62
|
const transformProps = {
|
|
34
63
|
id,
|
|
35
64
|
code,
|
|
@@ -45,10 +74,16 @@ async function performBabelTransform({
|
|
|
45
74
|
userSetting: userTransform
|
|
46
75
|
});
|
|
47
76
|
if (babelOptions) {
|
|
48
|
-
const
|
|
49
|
-
if (
|
|
50
|
-
return (0, import_constants.debug)?.(`[babel] ${id}`),
|
|
77
|
+
const cached = (0, import_cache.getCachedTransform)(id, code, environment);
|
|
78
|
+
if (cached)
|
|
79
|
+
return perfStats.babel.byEnvironment[environment].transforms++, (0, import_constants.debug)?.(`[babel/cached] ${id}`), cached;
|
|
80
|
+
const startTime = Date.now(), babelOut = await (0, import_transformBabel.transformBabel)(id, code, babelOptions), babelTime = Date.now() - startTime;
|
|
81
|
+
if (babelOut?.code) {
|
|
82
|
+
perfStats.babel.totalTransforms++, perfStats.babel.totalTime += babelTime, perfStats.babel.byEnvironment[environment].transforms++, perfStats.babel.byEnvironment[environment].time += babelTime, (0, import_constants.debug)?.(`[babel] ${id}`);
|
|
83
|
+
const result = { code: `${babelOut.code}
|
|
51
84
|
// vxrn-did-babel`, map: babelOut.map };
|
|
85
|
+
return (0, import_cache.setCachedTransform)(id, code, result, environment), result;
|
|
86
|
+
}
|
|
52
87
|
}
|
|
53
88
|
}
|
|
54
89
|
return null;
|
|
@@ -172,9 +207,14 @@ ${rootJS.code}
|
|
|
172
207
|
{
|
|
173
208
|
name: `transform-before-optimize-deps-${environment}`,
|
|
174
209
|
setup(build) {
|
|
175
|
-
|
|
210
|
+
perfStats.optimizeDeps.byEnvironment[environment] || (perfStats.optimizeDeps.byEnvironment[environment] = {
|
|
211
|
+
filesChecked: 0,
|
|
212
|
+
filesTransformed: 0,
|
|
213
|
+
startTime: Date.now()
|
|
214
|
+
}), build.onLoad(
|
|
176
215
|
{ filter: /node_modules\/.*\.(tsx?|jsx?|mjs|cjs)$/ },
|
|
177
216
|
async (args) => {
|
|
217
|
+
perfStats.optimizeDeps.byEnvironment[environment].filesChecked++;
|
|
178
218
|
const production = process.env.NODE_ENV === "production", code = await (0, import_promises.readFile)(args.path, "utf-8");
|
|
179
219
|
(0, import_constants.debug)?.(`[esbuild optimizeDeps] ${args.path}`);
|
|
180
220
|
const result = await performBabelTransform({
|
|
@@ -187,13 +227,22 @@ ${rootJS.code}
|
|
|
187
227
|
});
|
|
188
228
|
if (!result)
|
|
189
229
|
return null;
|
|
230
|
+
perfStats.optimizeDeps.byEnvironment[environment].filesTransformed++;
|
|
190
231
|
const ext = (0, import_node_path.extname)(args.path), loader = ext === ".tsx" ? "tsx" : ext === ".ts" ? "ts" : ext === ".jsx" ? "jsx" : "js";
|
|
191
232
|
return {
|
|
192
233
|
contents: result.code,
|
|
193
234
|
loader
|
|
194
235
|
};
|
|
195
236
|
}
|
|
196
|
-
)
|
|
237
|
+
), build.onEnd(() => {
|
|
238
|
+
if (process.env.DEBUG_COMPILER_PERF) {
|
|
239
|
+
const stats = perfStats.optimizeDeps.byEnvironment[environment], elapsed = Date.now() - stats.startTime;
|
|
240
|
+
console.info(
|
|
241
|
+
`[optimizeDeps ${environment}] Done: ${stats.filesChecked} files checked, ${stats.filesTransformed} transformed (${elapsed}ms)`
|
|
242
|
+
);
|
|
243
|
+
}
|
|
244
|
+
Object.keys(perfStats.optimizeDeps.byEnvironment).length >= 2 && ((0, import_cache.logCacheStats)(), logPerfSummary());
|
|
245
|
+
});
|
|
197
246
|
}
|
|
198
247
|
}
|
|
199
248
|
]
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA6B,oBAC7B,kBAAyB,6BACzB,mBAAmC,sBACnC,eAA4B,wBAC5B,mBAAwC,wDAGxC,mBAA8B,wBAC9B,mBAAuD,wBACvD,wBAAgD,6BAChD,sBAA6B;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,qBAA6B,oBAC7B,kBAAyB,6BACzB,mBAAmC,sBACnC,eAA4B,wBAC5B,mBAAwC,wDAGxC,mBAA8B,wBAC9B,mBAAuD,wBACvD,wBAAgD,6BAChD,sBAA6B,2BAE7B,eAAsE;AAEtE,0BAAc,wBAnBd;AAoBA,0BAAc,6BApBd;AAqBA,0BAAc,2BArBd;AAAA,wBAyBM,YAAY;AAAA,EAChB,OAAO;AAAA,IACL,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,WAAW;AAAA,IACX,eAAe,CAAC;AAAA,EAClB;AAAA,EACA,cAAc;AAAA,IACZ,eAAe,CAAC;AAAA,EAIlB;AACF;AAEA,SAAS,iBAAiB;AAExB,MAAK,QAAQ,IAAI,qBAIjB;AAAA,YAAQ,KAAK;AAAA,yCAAqC,GAClD,QAAQ;AAAA,MACN,UAAU,UAAU,MAAM,eAAe,iBAAiB,UAAU,MAAM,UAAU,YAAa,UAAU,MAAM,kBAAkB,KAAK,IAAI,UAAU,MAAM,YAAY,CAAC,IAAK,KAAK,QAAQ,CAAC,CAAC;AAAA,IAC/L,GACA,QAAQ,KAAK,qBAAqB,UAAU,MAAM,SAAS,IAAI;AAE/D,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,MAAM,aAAa;AACrE,MAAI,MAAM,aAAa,KACrB,QAAQ;AAAA,QACN,KAAK,GAAG,KAAK,MAAM,UAAU,gBAAgB,MAAM,IAAI,QAAQ,MAAM,OAAO,MAAM,YAAY,QAAQ,CAAC,CAAC;AAAA,MAC1G;AAIJ,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,UAAU,aAAa,aAAa,GAAG;AAC/E,YAAM,UAAU,KAAK,IAAI,IAAI,MAAM;AACnC,cAAQ;AAAA,QACN,gBAAgB,GAAG,aAAa,MAAM,YAAY,uBAAuB,MAAM,gBAAgB,KAAK,OAAO;AAAA,MAC7G;AAAA,IACF;AAAA;AACF;AAGA,eAAe,sBAAsB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AAED,YAAU,MAAM,cACX,UAAU,MAAM,cAAc,WAAW,MAC5C,UAAU,MAAM,cAAc,WAAW,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,MAAM,EAAE,IAElF,UAAU,MAAM,cAAc,WAAW,EAAE;AAE3C,QAAM,iBAAoC;AAAA,IACxC;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd;AAAA,IACA;AAAA,EACF,GAEM,gBAAgB,WAAW,YAAY,cAAc;AAE3D,MAAI,kBAAkB;AACpB,WAAO;AAKT,MAAI,CAFiB,GAAG,WAAW,sBAAsB,KAEpC,kBAAkB,OAAO;AAC5C,UAAM,mBAAe,uCAAgB;AAAA,MACnC,GAAG;AAAA,MACH,aAAa;AAAA,IACf,CAAC;AAED,QAAI,cAAc;AAEhB,YAAM,aAAS,iCAAmB,IAAI,MAAM,WAAW;AACvD,UAAI;AACF,yBAAU,MAAM,cAAc,WAAW,EAAE,kBAC3C,0BAAQ,kBAAkB,EAAE,EAAE,GACvB;AAIT,YAAM,YAAY,KAAK,IAAI,GACrB,WAAW,UAAM,sCAAe,IAAI,MAAM,YAAY,GACtD,YAAY,KAAK,IAAI,IAAI;AAE/B,UAAI,UAAU,MAAM;AAClB,kBAAU,MAAM,mBAChB,UAAU,MAAM,aAAa,WAC7B,UAAU,MAAM,cAAc,WAAW,EAAE,cAC3C,UAAU,MAAM,cAAc,WAAW,EAAE,QAAQ,eAEnD,0BAAQ,WAAW,EAAE,EAAE;AAEvB,cAAM,SAAS,EAAE,MADD,GAAG,SAAS,IAAI;AAAA,oBACA,KAAK,SAAS,IAAI;AAGlD,oDAAmB,IAAI,MAAM,QAAQ,WAAW,GAEzC;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAGA,eAAe,qBAAqB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQG;AACD,QAAM,cAAc,QAAQ,IAAI,aAAa,iBAAiB,OAAO,WAAW,UAAU;AAE1F,EAAI,gBACF,QAAQ,KAAK,SAAS,GAAG,SAAS,GAClC,QAAQ,KAAK,MAAM;AAGrB,MAAI,KAAK,IAAI,MAAM,GAAG,EAAE,CAAC;AAEzB,QAAM,gBAAY,0BAAQ,EAAE;AAM5B,MAJI,cAAc,UAId,CAAC,8BAAa,IAAI,SAAS;AAC7B;AAGF,QAAM,eAAe,GAAG,WAAW,sBAAsB;AAKzD,MAJI,iBACF,KAAK,GAAG,QAAQ,wBAAwB,EAAE,IAGxC,GAAG,SAAS,UAAU;AACxB;AAGF,MAAI,OAAO,QACP,MAGO;AAGX,MAAI,OAAO,SAAS,mBAAmB;AACrC,kCAAQ,gBAAgB,EAAE,EAAE;AAAA,OACvB;AACL,UAAM,cAAc,MAAM,sBAAsB;AAAA,MAC9C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,IAAI,gBACF,MAAM,aACN,OAAO,YAAY;AAAA,EAEvB;AAGA,QAAM,aAAa;AAAA,IACjB;AAAA,IACA,MAAM,WAAW,QAAQ;AAAA,IACzB;AAAA,IACA,GAAG;AAAA,EACL,GAEM,SAAS,UAAM,kCAAa,IAAI,MAAM;AAAA,IAC1C,KAAK;AAAA,IACL,OAAO,gBAAgB,gBAAgB;AAAA,IACvC,GAAG;AAAA,EACL,CAAC;AAED,SAAI,eACF,0BAAQ,SAAS,EAAE,EAAE,GACrB,MAAM;AAAA,IACJ,MAAM,OAAO;AAAA,IACb,KAAK,OAAO;AAAA,EACd,IAGE,gBACF,QAAQ,KAAK,cAAc,UAAU,GACrC,QAAQ,KAAK,iBAAiB,KAAK,IAAI,IAGlC;AACT;AAEA,eAAsB,yBACpB,WACyB;AACzB,QAAM,eAAe,OAAO,YAAY;AACtC,UAAM,WAAO,0BAAY,oBAAoB;AAE7C,WADa,KAAK,MAAM,UAAM,0BAAS,MAAM,OAAO,CAAC,EACzC;AAAA,EACd,GAAG,GAEG,WAAW;AAAA,IACf,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,KAAK;AAAA,EACP;AAEA,WAAS,WAAW,MAAc;AAChC,QAAI,CAAC,SAAS,IAAI,EAAG,OAAM,IAAI,MAAM,gBAAgB,IAAI,EAAE;AAC3D,WAAO;AAAA,EACT;AAEA,QAAM,oBAAoB,aAAa,MAAM,GAAG,EAAE,CAAC,GAE7C,oBAAoB,oBAAI,IAAoB,GAG5C,iBAAa,0BAAY,QAAQ,GACjC,iBAAiB,WAAW,MAAM,GAAG,WAAW,QAAQ,uBAAM,cAAc,CAAC;AAKnF,MAAI;AAEJ,SAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA;AAAA,MACT,WAAW,CAAC,OAAQ,OAAO,qCAAoB,KAAK;AAAA,MACpD,MAAM,CAAC,OACL,OAAO,yCACH,iCAAa,uBAAK,YAAY,SAAS,oBAAoB,GAAG,OAAO,IACrE;AAAA,IACR;AAAA,IAEA;AAAA,MACE,MAAM;AAAA,MAEN,UAAU,QAAQ,IAAI;AACpB,cAAM,cAAc,WAAW,KAAK,YAAY,IAAI;AACpD,YAAI,+BAAc,oBAAoB,gBAAgB,SAAS,gBAAgB,kBACzE,0BAAQ,EAAE,MAAM,QAAQ;AAI1B,gBAAM,OAAO,+EAHA,KAAK,cAAU,0CAAwB,QAAQ,EAAE,WAAW,GAAG,CAAC,CAAC,CAGkB,KAC1F,QAAQ,GAAG,EAAE,OAGb,QAAQ,MAAM,QAAQ,iBAAiB,sBAAK,EAAE;AACpD,mCAAkB,IAAI,OAAO,IAAI,GAE1B;AAAA,YACL;AAAA,YACA,IAAI;AAAA,YACJ,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MAEJ;AAAA,MAEA,eAAe,GAAG,QAAQ;AACxB,cAAM,cAAc,WAAW,KAAK,YAAY,IAAI;AAEpD,YAAI,+BAAc,oBAAoB,gBAAgB,SAAS,gBAAgB,YAAY;AACzF,gBAAM,aAAa,OAAO,KAAK,MAAM,EAAE,KAAK,CAAC,MAAM;AACjD,kBAAM,QAAQ,OAAO,CAAC;AACtB,mBAAO,MAAM,QAAQ,WAAW,MAAM,SAAS,MAAM,oBAAoB,KAAK;AAAA,UAChF,CAAC;AACD,cAAI,CAAC;AACH,kBAAM,IAAI,MAAM,wCAAwC;AAG1D,gBAAM,SAAS,OAAO,UAAU,GAE1B,YAAY,OAAO,KAAK,MAAM,EAAE;AAAA,YAAO,CAAC,MAC5C,OAAO,CAAC,EAAE,SAAS,SAAS,SAAS;AAAA,UACvC;AAEA,qBAAW,QAAQ,WAAW;AAC5B,mBAAO,OAAO,IAAI;AAElB,kBAAM,QAAQ,kBAAkB,IAAI,IAAI;AACxC,mBAAO,OAAO;AAAA,EACxB,KAAK;AAAA,EACL,OAAO,IAAI;AAAA;AAAA,UAEH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA;AAAA,MACE,MAAM;AAAA,MACN,SAAS;AAAA,MAET,QAAQ,MAAM;AACZ,cAAM,0BAA0B,CAAC,iBACxB;AAAA,UACL,cAAc;AAAA,YACZ,gBAAgB;AAAA,cACd,SAAS;AAAA,gBACP;AAAA,kBACE,MAAM,kCAAkC,WAAW;AAAA,kBACnD,MAAM,OAAO;AAEX,oBAAK,UAAU,aAAa,cAAc,WAAW,MACnD,UAAU,aAAa,cAAc,WAAW,IAAI;AAAA,sBAClD,cAAc;AAAA,sBACd,kBAAkB;AAAA,sBAClB,WAAW,KAAK,IAAI;AAAA,oBACtB,IAGF,MAAM;AAAA,sBACJ,EAAE,QAAQ,yCAAyC;AAAA,sBACnD,OAAO,SAAS;AACd,kCAAU,aAAa,cAAc,WAAW,EAAE;AAElD,8BAAM,aAAa,QAAQ,IAAI,aAAa,cACtC,OAAO,UAAM,0BAAS,KAAK,MAAM,OAAO;AAE9C,sDAAQ,0BAA0B,KAAK,IAAI,EAAE;AAE7C,8BAAM,SAAS,MAAM,sBAAsB;AAAA,0BACzC,IAAI,KAAK;AAAA,0BACT;AAAA,0BACA;AAAA,0BACA;AAAA,0BACA;AAAA,0BACA;AAAA,wBACF,CAAC;AAED,4BAAI,CAAC;AACH,iCAAO;AAGT,kCAAU,aAAa,cAAc,WAAW,EAAE;AAGlD,8BAAM,UAAM,0BAAQ,KAAK,IAAI,GACvB,SACJ,QAAQ,SACJ,QACA,QAAQ,QACN,OACA,QAAQ,SACN,QACA;AAEV,+BAAO;AAAA,0BACL,UAAU,OAAO;AAAA,0BACjB;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF,GAEA,MAAM,MAAM,MAAM;AAEhB,0BAAI,QAAQ,IAAI,qBAAqB;AACnC,8BAAM,QAAQ,UAAU,aAAa,cAAc,WAAW,GACxD,UAAU,KAAK,IAAI,IAAI,MAAM;AACnC,gCAAQ;AAAA,0BACN,iBAAiB,WAAW,WAAW,MAAM,YAAY,mBAAmB,MAAM,gBAAgB,iBAAiB,OAAO;AAAA,wBAC5H;AAAA,sBACF;AAKA,sBADE,OAAO,KAAK,UAAU,aAAa,aAAa,EAAE,UAAU,UAE5D,4BAAc,GACd,eAAe;AAAA,oBAEnB,CAAC;AAAA,kBACH;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,UAEA,QAAQ;AAAA,YACN,6BAA6B,KAAK;AAAA,cAChC,gBAAgB,SAAS,gBAAgB,YAAY,WAAW;AAAA,YAClE;AAAA,UACF;AAAA,QACF;AAGF,eAAO;AAAA,UACL,cAAc;AAAA,YACZ,KAAK,wBAAwB,KAAK;AAAA,YAClC,SAAS,wBAAwB,SAAS;AAAA,YAC1C,QAAQ,wBAAwB,QAAQ;AAAA,YACxC,KAAK,wBAAwB,KAAK;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,eAAe,gBAAgB;AAC7B,iBAAS;AAAA,MACX;AAAA,MAEA,MAAM,UAAU,QAAQ,KAAK;AAC3B,YAAI,OAAO;AACX,cAAM,cAAc,WAAW,KAAK,YAAY,IAAI,GAC9C,WAAW,gBAAgB,SAAS,gBAAgB,WACpD,aACJ,QAAQ,IAAI,aAAa,gBACzB,KAAK,MAAM,KAAK,YAAY,QAAQ,SAAS,sBAAsB,KAAK,IAAI,MAC1E;AAMJ,eAFgB,IAAI,SAAS,kBAAkB,KAGzC,YAAY,CAAC,eACf,OAAO;AAAA,EAAsC,IAAI,KAE/C,YAAY,+BAAc,qBAE5B,OAAO;AAAA,EAAoC,IAAI,KAI1C,QAGF,qBAAqB;AAAA,UAC1B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,OAAO;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -115,13 +115,19 @@ function shouldBabelGenerators({
|
|
|
115
115
|
const REANIMATED_AUTOWORKLETIZATION_KEYWORDS = ["worklet", "useAnimatedGestureHandler", "useAnimatedScrollHandler", "useFrameCallback", "useAnimatedStyle", "useAnimatedProps", "createAnimatedPropAdapter", "useDerivedValue", "useAnimatedReaction", "useWorkletCallback", "withTiming", "withSpring", "withDecay", "withRepeat", "runOnUI", "executeOnUIRuntimeSync"],
|
|
116
116
|
REANIMATED_REGEX = new RegExp(REANIMATED_AUTOWORKLETIZATION_KEYWORDS.join("|")),
|
|
117
117
|
REANIMATED_IGNORED_PATHS = [
|
|
118
|
-
//
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
// Prebuilt/vendored react-native that shouldn't be transformed
|
|
119
|
+
"react-native-prebuilt", "node_modules/.vxrn/react-native",
|
|
120
|
+
// Known false positives - they mention worklet keywords in comments/strings but don't use them
|
|
121
|
+
"node_modules/react/", "node_modules/react-dom/", "node_modules/react-native/", "node_modules/react-native-web/"],
|
|
121
122
|
REANIMATED_IGNORED_PATHS_REGEX = new RegExp(REANIMATED_IGNORED_PATHS.map(s => s.replace(/\//g, "/")).join("|"));
|
|
122
123
|
function shouldBabelReanimated({
|
|
123
124
|
code,
|
|
124
125
|
id
|
|
125
126
|
}) {
|
|
126
|
-
|
|
127
|
+
if (!import_configure.configuration.enableReanimated || REANIMATED_IGNORED_PATHS_REGEX.test(id)) return !1;
|
|
128
|
+
if (REANIMATED_REGEX.test(code)) {
|
|
129
|
+
const location = id.includes("node_modules") ? "node_modules" : "user-code";
|
|
130
|
+
return (0, import_constants.debug)?.(` \u{1FA84} [reanimated/${location}] ${(0, import_node_path.relative)(process.cwd(), id)}`), !0;
|
|
131
|
+
}
|
|
132
|
+
return !1;
|
|
127
133
|
}
|
|
@@ -113,14 +113,24 @@ const REANIMATED_AUTOWORKLETIZATION_KEYWORDS = [
|
|
|
113
113
|
"runOnUI",
|
|
114
114
|
"executeOnUIRuntimeSync"
|
|
115
115
|
], REANIMATED_REGEX = new RegExp(REANIMATED_AUTOWORKLETIZATION_KEYWORDS.join("|")), REANIMATED_IGNORED_PATHS = [
|
|
116
|
-
//
|
|
117
|
-
// This can also avoid the "[BABEL] Note: The code generator has deoptimised the styling of ... as it exceeds the max of 500KB" warning since the react-native source code also contains `useAnimatedProps`.
|
|
116
|
+
// Prebuilt/vendored react-native that shouldn't be transformed
|
|
118
117
|
"react-native-prebuilt",
|
|
119
|
-
"node_modules/.vxrn/react-native"
|
|
118
|
+
"node_modules/.vxrn/react-native",
|
|
119
|
+
// Known false positives - they mention worklet keywords in comments/strings but don't use them
|
|
120
|
+
"node_modules/react/",
|
|
121
|
+
"node_modules/react-dom/",
|
|
122
|
+
"node_modules/react-native/",
|
|
123
|
+
"node_modules/react-native-web/"
|
|
120
124
|
], REANIMATED_IGNORED_PATHS_REGEX = new RegExp(
|
|
121
125
|
REANIMATED_IGNORED_PATHS.map((s) => s.replace(/\//g, "/")).join("|")
|
|
122
126
|
);
|
|
123
127
|
function shouldBabelReanimated({ code, id }) {
|
|
124
|
-
|
|
128
|
+
if (!import_configure.configuration.enableReanimated || REANIMATED_IGNORED_PATHS_REGEX.test(id))
|
|
129
|
+
return !1;
|
|
130
|
+
if (REANIMATED_REGEX.test(code)) {
|
|
131
|
+
const location = id.includes("node_modules") ? "node_modules" : "user-code";
|
|
132
|
+
return (0, import_constants.debug)?.(` \u{1FA84} [reanimated/${location}] ${(0, import_node_path.relative)(process.cwd(), id)}`), !0;
|
|
133
|
+
}
|
|
134
|
+
return !1;
|
|
125
135
|
}
|
|
126
136
|
//# sourceMappingURL=transformBabel.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/transformBabel.ts"],
|
|
4
|
-
"mappings": "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
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": ["babel"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const stats = { hits: 0, misses: 0, writes: 0 };
|
|
5
|
+
function getCacheDir() {
|
|
6
|
+
const cacheDir = join(process.cwd(), "node_modules", ".vxrn", "compiler-cache");
|
|
7
|
+
return existsSync(cacheDir) || mkdirSync(cacheDir, { recursive: !0 }), cacheDir;
|
|
8
|
+
}
|
|
9
|
+
function getCacheKey(filePath, environment) {
|
|
10
|
+
return createHash("sha1").update(`${environment}:${filePath}`).digest("hex");
|
|
11
|
+
}
|
|
12
|
+
function getContentHash(code) {
|
|
13
|
+
return createHash("sha1").update(code).digest("hex").slice(0, 16);
|
|
14
|
+
}
|
|
15
|
+
function getCachedTransform(filePath, code, environment) {
|
|
16
|
+
try {
|
|
17
|
+
const cacheDir = getCacheDir(), cacheKey = getCacheKey(filePath, environment), cachePath = join(cacheDir, `${cacheKey}.json`);
|
|
18
|
+
if (!existsSync(cachePath))
|
|
19
|
+
return stats.misses++, null;
|
|
20
|
+
const cached = JSON.parse(readFileSync(cachePath, "utf-8")), currentMtime = statSync(filePath).mtimeMs;
|
|
21
|
+
if (cached.mtime !== currentMtime)
|
|
22
|
+
return stats.misses++, null;
|
|
23
|
+
const currentHash = getContentHash(code);
|
|
24
|
+
return cached.hash !== currentHash ? (stats.misses++, null) : (stats.hits++, { code: cached.code, map: cached.map });
|
|
25
|
+
} catch {
|
|
26
|
+
return stats.misses++, null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function setCachedTransform(filePath, code, result, environment) {
|
|
30
|
+
try {
|
|
31
|
+
const cacheDir = getCacheDir(), cacheKey = getCacheKey(filePath, environment), cachePath = join(cacheDir, `${cacheKey}.json`), mtime = statSync(filePath).mtimeMs, hash = getContentHash(code), entry = {
|
|
32
|
+
mtime,
|
|
33
|
+
hash,
|
|
34
|
+
code: result.code,
|
|
35
|
+
map: result.map
|
|
36
|
+
};
|
|
37
|
+
writeFileSync(cachePath, JSON.stringify(entry), "utf-8"), stats.writes++;
|
|
38
|
+
} catch (err) {
|
|
39
|
+
console.warn(`[cache] Failed to write cache for ${filePath}:`, err);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function getCacheStats() {
|
|
43
|
+
return { ...stats };
|
|
44
|
+
}
|
|
45
|
+
function logCacheStats() {
|
|
46
|
+
if (!process.env.DEBUG_COMPILER_PERF)
|
|
47
|
+
return;
|
|
48
|
+
const total = stats.hits + stats.misses;
|
|
49
|
+
if (total === 0) return;
|
|
50
|
+
const hitRate = (stats.hits / total * 100).toFixed(1);
|
|
51
|
+
console.info(
|
|
52
|
+
`
|
|
53
|
+
\u{1F4BE} [Cache Stats] ${stats.hits} hits / ${stats.misses} misses (${hitRate}% hit rate), ${stats.writes} writes`
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
getCacheStats,
|
|
58
|
+
getCachedTransform,
|
|
59
|
+
logCacheStats,
|
|
60
|
+
setCachedTransform
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cache.ts"],
|
|
4
|
+
"mappings": "AAAA,SAAS,kBAAkB;AAC3B,SAAS,YAAY,WAAW,cAAc,UAAU,qBAAqB;AAC7E,SAAS,YAAY;AAwBrB,MAAM,QAAoB,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE;AAE1D,SAAS,cAAsB;AAE7B,QAAM,WAAW,KAAK,QAAQ,IAAI,GAAG,gBAAgB,SAAS,gBAAgB;AAC9E,SAAK,WAAW,QAAQ,KACtB,UAAU,UAAU,EAAE,WAAW,GAAK,CAAC,GAElC;AACT;AAEA,SAAS,YAAY,UAAkB,aAA6B;AAGlE,SADa,WAAW,MAAM,EAAE,OAAO,GAAG,WAAW,IAAI,QAAQ,EAAE,EAAE,OAAO,KAAK;AAEnF;AAEA,SAAS,eAAe,MAAsB;AAE5C,SAAO,WAAW,MAAM,EAAE,OAAO,IAAI,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAClE;AAEO,SAAS,mBACd,UACA,MACA,aACoC;AACpC,MAAI;AACF,UAAM,WAAW,YAAY,GACvB,WAAW,YAAY,UAAU,WAAW,GAC5C,YAAY,KAAK,UAAU,GAAG,QAAQ,OAAO;AAEnD,QAAI,CAAC,WAAW,SAAS;AACvB,mBAAM,UACC;AAGT,UAAM,SAAqB,KAAK,MAAM,aAAa,WAAW,OAAO,CAAC,GAGhE,eAAe,SAAS,QAAQ,EAAE;AACxC,QAAI,OAAO,UAAU;AACnB,mBAAM,UACC;AAIT,UAAM,cAAc,eAAe,IAAI;AACvC,WAAI,OAAO,SAAS,eAClB,MAAM,UACC,SAGT,MAAM,QACC,EAAE,MAAM,OAAO,MAAM,KAAK,OAAO,IAAI;AAAA,EAC9C,QAAc;AAEZ,iBAAM,UACC;AAAA,EACT;AACF;AAEO,SAAS,mBACd,UACA,MACA,QACA,aACM;AACN,MAAI;AACF,UAAM,WAAW,YAAY,GACvB,WAAW,YAAY,UAAU,WAAW,GAC5C,YAAY,KAAK,UAAU,GAAG,QAAQ,OAAO,GAE7C,QAAQ,SAAS,QAAQ,EAAE,SAC3B,OAAO,eAAe,IAAI,GAE1B,QAAoB;AAAA,MACxB;AAAA,MACA;AAAA,MACA,MAAM,OAAO;AAAA,MACb,KAAK,OAAO;AAAA,IACd;AAEA,kBAAc,WAAW,KAAK,UAAU,KAAK,GAAG,OAAO,GACvD,MAAM;AAAA,EACR,SAAS,KAAK;AAEZ,YAAQ,KAAK,qCAAqC,QAAQ,KAAK,GAAG;AAAA,EACpE;AACF;AAEO,SAAS,gBAA4B;AAC1C,SAAO,EAAE,GAAG,MAAM;AACpB;AAEO,SAAS,gBAAsB;AAEpC,MAAI,CAAC,QAAQ,IAAI;AACf;AAGF,QAAM,QAAQ,MAAM,OAAO,MAAM;AACjC,MAAI,UAAU,EAAG;AAEjB,QAAM,WAAY,MAAM,OAAO,QAAS,KAAK,QAAQ,CAAC;AACtD,UAAQ;AAAA,IACN;AAAA,0BAAsB,MAAM,IAAI,WAAW,MAAM,MAAM,YAAY,OAAO,gBAAgB,MAAM,MAAM;AAAA,EACxG;AACF;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|