@tamagui/static 1.0.1-beta.151 → 1.0.1-beta.152
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/constants.js → constants.js} +4 -1
- package/dist/{esm/constants.js.map → constants.js.map} +3 -3
- package/dist/{cjs/extractor → extractor}/accessSafe.js +13 -2
- package/dist/{esm/extractor → extractor}/accessSafe.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/babelParse.js +4 -1
- package/dist/{cjs/extractor → extractor}/babelParse.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/buildClassName.js +19 -4
- package/dist/extractor/buildClassName.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/createEvaluator.js +7 -4
- package/dist/extractor/createEvaluator.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/createExtractor.js +186 -64
- package/dist/{esm/extractor → extractor}/createExtractor.js.map +4 -4
- package/dist/{cjs/extractor → extractor}/ensureImportingConcat.js +21 -6
- package/dist/extractor/ensureImportingConcat.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/evaluateAstNode.js +13 -4
- package/dist/{esm/extractor → extractor}/evaluateAstNode.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/extractHelpers.js +8 -3
- package/dist/extractor/extractHelpers.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/extractMediaStyle.js +22 -6
- package/dist/extractor/extractMediaStyle.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/extractToClassNames.js +87 -32
- package/dist/extractor/extractToClassNames.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/findTopmostFunction.js +0 -0
- package/dist/{cjs/extractor → extractor}/findTopmostFunction.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/generatedUid.js +8 -2
- package/dist/{cjs/extractor → extractor}/generatedUid.js.map +3 -3
- package/dist/{cjs/extractor → extractor}/getPrefixLogs.js +0 -0
- package/dist/extractor/getPrefixLogs.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/getPropValueFromAttributes.js +23 -13
- package/dist/extractor/getPropValueFromAttributes.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/getSourceModule.js +4 -1
- package/dist/{esm/extractor → extractor}/getSourceModule.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/getStaticBindingsForScope.js +9 -4
- package/dist/extractor/getStaticBindingsForScope.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/hoistClassNames.js +4 -1
- package/dist/{jsx/extractor → extractor}/hoistClassNames.js.map +3 -3
- package/dist/{cjs/extractor → extractor}/literalToAst.js +18 -10
- package/dist/{jsx/extractor → extractor}/literalToAst.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/loadFile.js +0 -0
- package/dist/{cjs/extractor → extractor}/loadFile.js.map +1 -1
- package/dist/{cjs/extractor → extractor}/loadTamagui.js +34 -7
- package/dist/extractor/loadTamagui.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/logLines.js +0 -0
- package/dist/{cjs/extractor → extractor}/logLines.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/normalizeTernaries.js +8 -2
- package/dist/extractor/normalizeTernaries.js.map +7 -0
- package/dist/{cjs/extractor → extractor}/removeUnusedHooks.js +4 -1
- package/dist/{esm/extractor → extractor}/removeUnusedHooks.js.map +2 -2
- package/dist/{cjs/extractor → extractor}/timer.js +0 -0
- package/dist/{cjs/extractor → extractor}/timer.js.map +1 -1
- package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js +0 -0
- package/dist/{cjs/extractor → extractor}/validHTMLAttributes.js.map +1 -1
- package/dist/{cjs/getPragmaOptions.js → getPragmaOptions.js} +0 -0
- package/dist/{cjs/getPragmaOptions.js.map → getPragmaOptions.js.map} +2 -2
- package/dist/{cjs/index.js → index.js} +9 -9
- package/dist/index.js.map +7 -0
- package/dist/{cjs/require.js → require.js} +10 -4
- package/dist/require.js.map +7 -0
- package/dist/{cjs/types.js → types.js} +0 -0
- package/dist/types.js.map +7 -0
- package/dist/{cjs/webpackPlugin.js → webpackPlugin.js} +0 -0
- package/dist/{cjs/webpackPlugin.js.map → webpackPlugin.js.map} +1 -1
- package/package.json +15 -15
- package/src/extractor/buildClassName.ts +1 -1
- package/src/extractor/createEvaluator.ts +3 -3
- package/src/extractor/createExtractor.ts +21 -15
- package/src/extractor/ensureImportingConcat.ts +1 -1
- package/src/extractor/extractHelpers.ts +4 -3
- package/src/extractor/extractMediaStyle.ts +3 -3
- package/src/extractor/extractToClassNames.ts +12 -12
- package/src/extractor/getPrefixLogs.ts +1 -1
- package/src/extractor/getPropValueFromAttributes.ts +2 -2
- package/src/extractor/getStaticBindingsForScope.ts +2 -2
- package/src/extractor/loadTamagui.ts +27 -5
- package/src/extractor/normalizeTernaries.ts +1 -1
- package/src/index.ts +9 -10
- package/src/require.ts +1 -1
- package/src/types.ts +4 -3
- package/tamagui.tsconfig.json +5 -0
- package/types/extractor/buildClassName.d.ts +1 -1
- package/types/extractor/createExtractor.d.ts +4 -4
- package/types/extractor/extractHelpers.d.ts +1 -1
- package/types/extractor/extractMediaStyle.d.ts +1 -1
- package/types/extractor/extractToClassNames.d.ts +2 -2
- package/types/extractor/getPrefixLogs.d.ts +1 -1
- package/types/extractor/normalizeTernaries.d.ts +1 -1
- package/types/index.d.ts +9 -9
- package/types/types.d.ts +4 -3
- package/dist/cjs/constants.js.map +0 -7
- package/dist/cjs/extractor/accessSafe.js.map +0 -7
- package/dist/cjs/extractor/buildClassName.js.map +0 -7
- package/dist/cjs/extractor/createEvaluator.js.map +0 -7
- package/dist/cjs/extractor/createExtractor.js.map +0 -7
- package/dist/cjs/extractor/ensureImportingConcat.js.map +0 -7
- package/dist/cjs/extractor/evaluateAstNode.js.map +0 -7
- package/dist/cjs/extractor/extractHelpers.js.map +0 -7
- package/dist/cjs/extractor/extractMediaStyle.js.map +0 -7
- package/dist/cjs/extractor/extractToClassNames.js.map +0 -7
- package/dist/cjs/extractor/getPrefixLogs.js.map +0 -7
- package/dist/cjs/extractor/getPropValueFromAttributes.js.map +0 -7
- package/dist/cjs/extractor/getSourceModule.js.map +0 -7
- package/dist/cjs/extractor/getStaticBindingsForScope.js.map +0 -7
- package/dist/cjs/extractor/hoistClassNames.js.map +0 -7
- package/dist/cjs/extractor/literalToAst.js.map +0 -7
- package/dist/cjs/extractor/loadTamagui.js.map +0 -7
- package/dist/cjs/extractor/normalizeTernaries.js.map +0 -7
- package/dist/cjs/extractor/removeUnusedHooks.js.map +0 -7
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/require.js.map +0 -7
- package/dist/cjs/types.js.map +0 -7
- package/dist/esm/constants.js +0 -17
- package/dist/esm/extractor/accessSafe.js +0 -8
- package/dist/esm/extractor/babelParse.js +0 -28
- package/dist/esm/extractor/babelParse.js.map +0 -7
- package/dist/esm/extractor/buildClassName.js +0 -37
- package/dist/esm/extractor/buildClassName.js.map +0 -7
- package/dist/esm/extractor/createEvaluator.js +0 -52
- package/dist/esm/extractor/createEvaluator.js.map +0 -7
- package/dist/esm/extractor/createExtractor.js +0 -1374
- package/dist/esm/extractor/ensureImportingConcat.js +0 -21
- package/dist/esm/extractor/ensureImportingConcat.js.map +0 -7
- package/dist/esm/extractor/evaluateAstNode.js +0 -91
- package/dist/esm/extractor/extractHelpers.js +0 -97
- package/dist/esm/extractor/extractHelpers.js.map +0 -7
- package/dist/esm/extractor/extractMediaStyle.js +0 -146
- package/dist/esm/extractor/extractMediaStyle.js.map +0 -7
- package/dist/esm/extractor/extractToClassNames.js +0 -308
- package/dist/esm/extractor/extractToClassNames.js.map +0 -7
- package/dist/esm/extractor/findTopmostFunction.js +0 -20
- package/dist/esm/extractor/findTopmostFunction.js.map +0 -7
- package/dist/esm/extractor/generatedUid.js +0 -25
- package/dist/esm/extractor/generatedUid.js.map +0 -7
- package/dist/esm/extractor/getPrefixLogs.js +0 -8
- package/dist/esm/extractor/getPrefixLogs.js.map +0 -7
- package/dist/esm/extractor/getPropValueFromAttributes.js +0 -46
- package/dist/esm/extractor/getPropValueFromAttributes.js.map +0 -7
- package/dist/esm/extractor/getSourceModule.js +0 -66
- package/dist/esm/extractor/getStaticBindingsForScope.js +0 -172
- package/dist/esm/extractor/getStaticBindingsForScope.js.map +0 -7
- package/dist/esm/extractor/hoistClassNames.js +0 -40
- package/dist/esm/extractor/hoistClassNames.js.map +0 -7
- package/dist/esm/extractor/literalToAst.js +0 -75
- package/dist/esm/extractor/literalToAst.js.map +0 -7
- package/dist/esm/extractor/loadFile.js +0 -20
- package/dist/esm/extractor/loadFile.js.map +0 -7
- package/dist/esm/extractor/loadTamagui.js +0 -255
- package/dist/esm/extractor/loadTamagui.js.map +0 -7
- package/dist/esm/extractor/logLines.js +0 -20
- package/dist/esm/extractor/logLines.js.map +0 -7
- package/dist/esm/extractor/normalizeTernaries.js +0 -49
- package/dist/esm/extractor/normalizeTernaries.js.map +0 -7
- package/dist/esm/extractor/removeUnusedHooks.js +0 -76
- package/dist/esm/extractor/timer.js +0 -29
- package/dist/esm/extractor/timer.js.map +0 -7
- package/dist/esm/extractor/validHTMLAttributes.js +0 -102
- package/dist/esm/extractor/validHTMLAttributes.js.map +0 -7
- package/dist/esm/getPragmaOptions.js +0 -44
- package/dist/esm/getPragmaOptions.js.map +0 -7
- package/dist/esm/index.js +0 -17
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/require.js +0 -62
- package/dist/esm/require.js.map +0 -7
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -7
- package/dist/esm/webpackPlugin.js +0 -11
- package/dist/esm/webpackPlugin.js.map +0 -7
- package/dist/jsx/constants.js +0 -16
- package/dist/jsx/constants.js.map +0 -7
- package/dist/jsx/extractor/accessSafe.js +0 -8
- package/dist/jsx/extractor/accessSafe.js.map +0 -7
- package/dist/jsx/extractor/babelParse.js +0 -28
- package/dist/jsx/extractor/babelParse.js.map +0 -7
- package/dist/jsx/extractor/buildClassName.js +0 -37
- package/dist/jsx/extractor/buildClassName.js.map +0 -7
- package/dist/jsx/extractor/createEvaluator.js +0 -52
- package/dist/jsx/extractor/createEvaluator.js.map +0 -7
- package/dist/jsx/extractor/createExtractor.js +0 -1367
- package/dist/jsx/extractor/createExtractor.js.map +0 -7
- package/dist/jsx/extractor/ensureImportingConcat.js +0 -21
- package/dist/jsx/extractor/ensureImportingConcat.js.map +0 -7
- package/dist/jsx/extractor/evaluateAstNode.js +0 -91
- package/dist/jsx/extractor/evaluateAstNode.js.map +0 -7
- package/dist/jsx/extractor/extractHelpers.js +0 -95
- package/dist/jsx/extractor/extractHelpers.js.map +0 -7
- package/dist/jsx/extractor/extractMediaStyle.js +0 -145
- package/dist/jsx/extractor/extractMediaStyle.js.map +0 -7
- package/dist/jsx/extractor/extractToClassNames.js +0 -307
- package/dist/jsx/extractor/extractToClassNames.js.map +0 -7
- package/dist/jsx/extractor/findTopmostFunction.js +0 -20
- package/dist/jsx/extractor/findTopmostFunction.js.map +0 -7
- package/dist/jsx/extractor/generatedUid.js +0 -25
- package/dist/jsx/extractor/generatedUid.js.map +0 -7
- package/dist/jsx/extractor/getPrefixLogs.js +0 -8
- package/dist/jsx/extractor/getPrefixLogs.js.map +0 -7
- package/dist/jsx/extractor/getPropValueFromAttributes.js +0 -46
- package/dist/jsx/extractor/getPropValueFromAttributes.js.map +0 -7
- package/dist/jsx/extractor/getSourceModule.js +0 -66
- package/dist/jsx/extractor/getSourceModule.js.map +0 -7
- package/dist/jsx/extractor/getStaticBindingsForScope.js +0 -172
- package/dist/jsx/extractor/getStaticBindingsForScope.js.map +0 -7
- package/dist/jsx/extractor/hoistClassNames.js +0 -40
- package/dist/jsx/extractor/literalToAst.js +0 -75
- package/dist/jsx/extractor/loadFile.js +0 -19
- package/dist/jsx/extractor/loadFile.js.map +0 -7
- package/dist/jsx/extractor/loadTamagui.js +0 -253
- package/dist/jsx/extractor/loadTamagui.js.map +0 -7
- package/dist/jsx/extractor/logLines.js +0 -20
- package/dist/jsx/extractor/logLines.js.map +0 -7
- package/dist/jsx/extractor/normalizeTernaries.js +0 -49
- package/dist/jsx/extractor/normalizeTernaries.js.map +0 -7
- package/dist/jsx/extractor/removeUnusedHooks.js +0 -75
- package/dist/jsx/extractor/removeUnusedHooks.js.map +0 -7
- package/dist/jsx/extractor/timer.js +0 -29
- package/dist/jsx/extractor/timer.js.map +0 -7
- package/dist/jsx/extractor/validHTMLAttributes.js +0 -102
- package/dist/jsx/extractor/validHTMLAttributes.js.map +0 -7
- package/dist/jsx/getPragmaOptions.js +0 -43
- package/dist/jsx/getPragmaOptions.js.map +0 -7
- package/dist/jsx/index.js +0 -17
- package/dist/jsx/index.js.map +0 -7
- package/dist/jsx/require.js +0 -62
- package/dist/jsx/require.js.map +0 -7
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -7
- package/dist/jsx/webpackPlugin.js +0 -11
- package/dist/jsx/webpackPlugin.js.map +0 -7
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { fork } from "child_process";
|
|
2
|
-
import { dirname, extname, join, resolve } from "path";
|
|
3
|
-
import * as t from "@babel/types";
|
|
4
|
-
import { evaluateAstNode } from "./evaluateAstNode";
|
|
5
|
-
import { getSourceModule } from "./getSourceModule";
|
|
6
|
-
const isLocalImport = (path) => path.startsWith(".") || path.startsWith("/");
|
|
7
|
-
function resolveImportPath(sourcePath, path) {
|
|
8
|
-
const sourceDir = dirname(sourcePath);
|
|
9
|
-
if (isLocalImport(path)) {
|
|
10
|
-
if (extname(path) === "") {
|
|
11
|
-
path += ".js";
|
|
12
|
-
}
|
|
13
|
-
return resolve(sourceDir, path);
|
|
14
|
-
}
|
|
15
|
-
return path;
|
|
16
|
-
}
|
|
17
|
-
const cache = /* @__PURE__ */ new Map();
|
|
18
|
-
const pending = /* @__PURE__ */ new Map();
|
|
19
|
-
setInterval(() => {
|
|
20
|
-
if (cache.size) {
|
|
21
|
-
cache.clear();
|
|
22
|
-
}
|
|
23
|
-
}, 10);
|
|
24
|
-
const loadCmd = `${join(__dirname, "loadFile.js")}`;
|
|
25
|
-
let exited = false;
|
|
26
|
-
const child = fork(loadCmd, [], {
|
|
27
|
-
execArgv: ["-r", "esbuild-register"],
|
|
28
|
-
detached: true,
|
|
29
|
-
stdio: "ignore"
|
|
30
|
-
});
|
|
31
|
-
function cleanupBeforeExit() {
|
|
32
|
-
if (exited)
|
|
33
|
-
return;
|
|
34
|
-
child.removeAllListeners();
|
|
35
|
-
child.unref();
|
|
36
|
-
child.disconnect();
|
|
37
|
-
child.kill();
|
|
38
|
-
exited = true;
|
|
39
|
-
}
|
|
40
|
-
process.once("SIGTERM", cleanupBeforeExit);
|
|
41
|
-
process.once("SIGINT", cleanupBeforeExit);
|
|
42
|
-
process.once("beforeExit", cleanupBeforeExit);
|
|
43
|
-
function importModule(path) {
|
|
44
|
-
if (pending.has(path)) {
|
|
45
|
-
return pending.get(path);
|
|
46
|
-
}
|
|
47
|
-
const promise = new Promise((res, rej) => {
|
|
48
|
-
if (cache.has(path)) {
|
|
49
|
-
return cache.get(path);
|
|
50
|
-
}
|
|
51
|
-
const listener = (msg) => {
|
|
52
|
-
if (!msg)
|
|
53
|
-
return;
|
|
54
|
-
if (typeof msg !== "string")
|
|
55
|
-
return;
|
|
56
|
-
if (msg[0] === "-") {
|
|
57
|
-
rej(new Error(msg.slice(1)));
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
child.removeListener("message", listener);
|
|
61
|
-
const val = JSON.parse(msg);
|
|
62
|
-
cache.set(path, val);
|
|
63
|
-
res(val);
|
|
64
|
-
};
|
|
65
|
-
child.once("message", listener);
|
|
66
|
-
child.send(`${path.replace(".js", "")}`);
|
|
67
|
-
});
|
|
68
|
-
pending.set(path, promise);
|
|
69
|
-
return promise;
|
|
70
|
-
}
|
|
71
|
-
async function getStaticBindingsForScope(scope, whitelist = [], sourcePath, bindingCache, shouldPrintDebug) {
|
|
72
|
-
const bindings = scope.getAllBindings();
|
|
73
|
-
const ret = {};
|
|
74
|
-
if (shouldPrintDebug) {
|
|
75
|
-
}
|
|
76
|
-
const program = scope.getProgramParent().block;
|
|
77
|
-
for (const node of program.body) {
|
|
78
|
-
if (t.isImportDeclaration(node)) {
|
|
79
|
-
const importPath = node.source.value;
|
|
80
|
-
if (!node.specifiers.length)
|
|
81
|
-
continue;
|
|
82
|
-
if (!isLocalImport(importPath)) {
|
|
83
|
-
continue;
|
|
84
|
-
}
|
|
85
|
-
const moduleName = resolveImportPath(sourcePath, importPath);
|
|
86
|
-
const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test));
|
|
87
|
-
if (!isOnWhitelist)
|
|
88
|
-
continue;
|
|
89
|
-
try {
|
|
90
|
-
const src = await importModule(moduleName);
|
|
91
|
-
if (!src)
|
|
92
|
-
continue;
|
|
93
|
-
for (const specifier of node.specifiers) {
|
|
94
|
-
if (t.isImportSpecifier(specifier) && t.isIdentifier(specifier.imported)) {
|
|
95
|
-
if (typeof src[specifier.imported.name] !== "undefined") {
|
|
96
|
-
const val = src[specifier.local.name];
|
|
97
|
-
ret[specifier.local.name] = val;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
} catch (err) {
|
|
102
|
-
console.warn(`\u26A0\uFE0F Failed evaluating module, continuing: ${moduleName}`);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
if (!bindingCache) {
|
|
107
|
-
throw new Error("bindingCache is a required param");
|
|
108
|
-
}
|
|
109
|
-
for (const k in bindings) {
|
|
110
|
-
const binding = bindings[k];
|
|
111
|
-
const sourceModule = getSourceModule(k, binding);
|
|
112
|
-
if (sourceModule) {
|
|
113
|
-
if (!sourceModule.sourceModule) {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
const moduleName = resolveImportPath(sourcePath, sourceModule.sourceModule);
|
|
117
|
-
const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test));
|
|
118
|
-
if (isOnWhitelist) {
|
|
119
|
-
const src = importModule(moduleName);
|
|
120
|
-
if (!src) {
|
|
121
|
-
console.log(`\u26A0\uFE0F missing file ${moduleName} via ${sourcePath} import ${sourceModule.sourceModule}?`);
|
|
122
|
-
return {};
|
|
123
|
-
}
|
|
124
|
-
if (sourceModule.destructured) {
|
|
125
|
-
if (sourceModule.imported) {
|
|
126
|
-
ret[k] = src[sourceModule.imported];
|
|
127
|
-
}
|
|
128
|
-
} else {
|
|
129
|
-
ret[k] = src;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
continue;
|
|
133
|
-
}
|
|
134
|
-
const { parent, parentPath } = binding.path;
|
|
135
|
-
if (!t.isVariableDeclaration(parent) || parent.kind !== "const") {
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
const dec = parent.declarations.find((d) => t.isIdentifier(d.id) && d.id.name === k);
|
|
139
|
-
if (!dec || !dec.init) {
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
if (typeof dec.id.start !== "number" || typeof dec.id.end !== "number") {
|
|
143
|
-
console.error("dec.id.start/end is not a number");
|
|
144
|
-
continue;
|
|
145
|
-
}
|
|
146
|
-
if (!t.isIdentifier(dec.id)) {
|
|
147
|
-
console.error("dec is not an identifier");
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
const cacheKey = `${dec.id.name}_${dec.id.start}-${dec.id.end}`;
|
|
151
|
-
if (bindingCache.hasOwnProperty(cacheKey)) {
|
|
152
|
-
ret[k] = bindingCache[cacheKey];
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
if (bindingCache.hasOwnProperty(cacheKey)) {
|
|
156
|
-
ret[k] = bindingCache[cacheKey];
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
try {
|
|
160
|
-
ret[k] = evaluateAstNode(dec.init, void 0, shouldPrintDebug);
|
|
161
|
-
bindingCache[cacheKey] = ret[k];
|
|
162
|
-
continue;
|
|
163
|
-
} catch {
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return ret;
|
|
167
|
-
}
|
|
168
|
-
export {
|
|
169
|
-
cleanupBeforeExit,
|
|
170
|
-
getStaticBindingsForScope
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=getStaticBindingsForScope.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/getStaticBindingsForScope.ts"],
|
|
4
|
-
"sourcesContent": ["import { fork } from 'child_process'\nimport { dirname, extname, join, resolve } from 'path'\n\nimport { Binding, NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nimport { evaluateAstNode } from './evaluateAstNode'\nimport { getSourceModule } from './getSourceModule'\n\nconst isLocalImport = (path: string) => path.startsWith('.') || path.startsWith('/')\n\nfunction resolveImportPath(sourcePath: string, path: string) {\n const sourceDir = dirname(sourcePath)\n if (isLocalImport(path)) {\n if (extname(path) === '') {\n path += '.js'\n }\n return resolve(sourceDir, path)\n }\n return path\n}\n\nconst cache = new Map()\nconst pending = new Map<string, Promise<any>>()\nsetInterval(() => {\n if (cache.size) {\n cache.clear()\n }\n}, 10)\n\nconst loadCmd = `${join(__dirname, 'loadFile.js')}`\n\nlet exited = false\nconst child = fork(loadCmd, [], {\n execArgv: ['-r', 'esbuild-register'],\n detached: true,\n stdio: 'ignore',\n})\n\nexport function cleanupBeforeExit() {\n if (exited) return\n child.removeAllListeners()\n child.unref()\n child.disconnect()\n child.kill()\n exited = true\n}\n\nprocess.once('SIGTERM', cleanupBeforeExit)\nprocess.once('SIGINT', cleanupBeforeExit)\nprocess.once('beforeExit', cleanupBeforeExit)\n\nfunction importModule(path: string) {\n if (pending.has(path)) {\n return pending.get(path)\n }\n const promise = new Promise((res, rej) => {\n if (cache.has(path)) {\n return cache.get(path)\n }\n const listener = (msg: any) => {\n if (!msg) return\n if (typeof msg !== 'string') return\n if (msg[0] === '-') {\n rej(new Error(msg.slice(1)))\n return\n }\n child.removeListener('message', listener)\n const val = JSON.parse(msg)\n cache.set(path, val)\n res(val)\n }\n child.once('message', listener)\n child.send(`${path.replace('.js', '')}`)\n })\n pending.set(path, promise)\n return promise\n}\n\nexport async function getStaticBindingsForScope(\n scope: NodePath<t.JSXElement>['scope'],\n whitelist: string[] = [],\n sourcePath: string,\n bindingCache: Record<string, string | null>,\n shouldPrintDebug: boolean | 'verbose'\n): Promise<Record<string, any>> {\n const bindings: Record<string, Binding> = scope.getAllBindings() as any\n const ret: Record<string, any> = {}\n\n if (\n shouldPrintDebug\n ) {\n // prettier-ignore\n // console.log(' ', Object.keys(bindings).length, 'variables in scope')\n // .map(x => bindings[x].identifier?.name).join(', ')\n }\n\n // on react native at least it doesnt find some bindings? not sure why\n // lets add in whitelisted imports if they exist\n const program = scope.getProgramParent().block as t.Program\n for (const node of program.body) {\n if (t.isImportDeclaration(node)) {\n const importPath = node.source.value\n if (!node.specifiers.length) continue\n if (!isLocalImport(importPath)) {\n continue\n }\n const moduleName = resolveImportPath(sourcePath, importPath)\n const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test))\n if (!isOnWhitelist) continue\n try {\n const src = await importModule(moduleName)\n if (!src) continue\n for (const specifier of node.specifiers) {\n if (t.isImportSpecifier(specifier) && t.isIdentifier(specifier.imported)) {\n if (typeof src[specifier.imported.name] !== 'undefined') {\n const val = src[specifier.local.name]\n ret[specifier.local.name] = val\n }\n }\n }\n } catch (err) {\n console.warn(`\u26A0\uFE0F Failed evaluating module, continuing: ${moduleName}`)\n }\n }\n }\n\n if (!bindingCache) {\n throw new Error('bindingCache is a required param')\n }\n\n for (const k in bindings) {\n const binding = bindings[k]\n\n // check to see if the item is a module\n const sourceModule = getSourceModule(k, binding)\n if (sourceModule) {\n if (!sourceModule.sourceModule) {\n continue\n }\n\n const moduleName = resolveImportPath(sourcePath, sourceModule.sourceModule)\n const isOnWhitelist = whitelist.some((test) => moduleName.endsWith(test))\n\n // TODO we could cache this at the file level.. and check if its been touched since\n\n if (isOnWhitelist) {\n const src = importModule(moduleName)\n if (!src) {\n console.log(\n `\u26A0\uFE0F missing file ${moduleName} via ${sourcePath} import ${sourceModule.sourceModule}?`\n )\n return {}\n }\n if (sourceModule.destructured) {\n if (sourceModule.imported) {\n ret[k] = src[sourceModule.imported]\n }\n } else {\n ret[k] = src\n }\n }\n continue\n }\n\n const { parent, parentPath } = binding.path\n\n if (!t.isVariableDeclaration(parent) || parent.kind !== 'const') {\n continue\n }\n\n // pick out the right variable declarator\n const dec = parent.declarations.find((d) => t.isIdentifier(d.id) && d.id.name === k)\n\n // if init is not set, there's nothing to evaluate\n // TODO: handle spread syntax\n if (!dec || !dec.init) {\n continue\n }\n\n // missing start/end will break caching\n if (typeof dec.id.start !== 'number' || typeof dec.id.end !== 'number') {\n console.error('dec.id.start/end is not a number')\n continue\n }\n\n if (!t.isIdentifier(dec.id)) {\n console.error('dec is not an identifier')\n continue\n }\n\n const cacheKey = `${dec.id.name}_${dec.id.start}-${dec.id.end}`\n\n // retrieve value from cache\n if (bindingCache.hasOwnProperty(cacheKey)) {\n ret[k] = bindingCache[cacheKey]\n continue\n }\n // retrieve value from cache\n if (bindingCache.hasOwnProperty(cacheKey)) {\n ret[k] = bindingCache[cacheKey]\n continue\n }\n\n // evaluate\n try {\n ret[k] = evaluateAstNode(dec.init, undefined, shouldPrintDebug)\n bindingCache[cacheKey] = ret[k]\n continue\n } catch {\n // skip\n }\n }\n\n return ret\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import * as t from "@babel/types";
|
|
2
|
-
function hoistClassNames(path, existing, expr) {
|
|
3
|
-
const hoist = hoistClassNames.bind(null, path, existing);
|
|
4
|
-
if (t.isStringLiteral(expr)) {
|
|
5
|
-
if (expr.value.trim() === "") {
|
|
6
|
-
return expr;
|
|
7
|
-
}
|
|
8
|
-
if (existing[expr.value]) {
|
|
9
|
-
return existing[expr.value];
|
|
10
|
-
}
|
|
11
|
-
const identifier = replaceStringWithVariable(expr);
|
|
12
|
-
existing[expr.value] = identifier;
|
|
13
|
-
return identifier;
|
|
14
|
-
}
|
|
15
|
-
if (t.isBinaryExpression(expr)) {
|
|
16
|
-
return t.binaryExpression(expr.operator, hoist(expr.left), hoist(expr.right));
|
|
17
|
-
}
|
|
18
|
-
if (t.isLogicalExpression(expr)) {
|
|
19
|
-
return t.logicalExpression(expr.operator, hoist(expr.left), hoist(expr.right));
|
|
20
|
-
}
|
|
21
|
-
if (t.isConditionalExpression(expr)) {
|
|
22
|
-
return t.conditionalExpression(expr.test, hoist(expr.consequent), hoist(expr.alternate));
|
|
23
|
-
}
|
|
24
|
-
return expr;
|
|
25
|
-
function replaceStringWithVariable(str) {
|
|
26
|
-
const uid = path.scope.generateUidIdentifier("cn");
|
|
27
|
-
const parent = path.findParent((path2) => path2.isProgram());
|
|
28
|
-
if (!parent)
|
|
29
|
-
throw new Error(`no program?`);
|
|
30
|
-
const variable = t.variableDeclaration("const", [
|
|
31
|
-
t.variableDeclarator(uid, t.stringLiteral(` ${str.value}`))
|
|
32
|
-
]);
|
|
33
|
-
parent.unshiftContainer("body", variable);
|
|
34
|
-
return uid;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
export {
|
|
38
|
-
hoistClassNames
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=hoistClassNames.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/hoistClassNames.ts"],
|
|
4
|
-
"sourcesContent": ["import { NodePath } from '@babel/traverse'\nimport * as t from '@babel/types'\n\nexport function hoistClassNames(\n path: NodePath<t.JSXElement>,\n existing: { [key: string]: t.Identifier },\n expr: t.Expression\n) {\n const hoist = hoistClassNames.bind(null, path, existing)\n if (t.isStringLiteral(expr)) {\n if (expr.value.trim() === '') {\n return expr\n }\n if (existing[expr.value]) {\n return existing[expr.value]\n }\n const identifier = replaceStringWithVariable(expr)\n existing[expr.value] = identifier\n return identifier\n }\n if (t.isBinaryExpression(expr)) {\n return t.binaryExpression(expr.operator, hoist(expr.left), hoist(expr.right))\n }\n if (t.isLogicalExpression(expr)) {\n return t.logicalExpression(expr.operator, hoist(expr.left), hoist(expr.right))\n }\n if (t.isConditionalExpression(expr)) {\n return t.conditionalExpression(expr.test, hoist(expr.consequent), hoist(expr.alternate))\n }\n return expr\n\n function replaceStringWithVariable(str: t.StringLiteral): t.Identifier {\n // hoist outside fn!\n const uid = path.scope.generateUidIdentifier('cn')\n const parent = path.findParent((path) => path.isProgram())\n if (!parent) throw new Error(`no program?`)\n const variable = t.variableDeclaration('const', [\n // adding a space for extra safety\n t.variableDeclarator(uid, t.stringLiteral(` ${str.value}`)),\n ])\n // @ts-ignore\n parent.unshiftContainer('body', variable)\n return uid\n }\n}\n"],
|
|
5
|
-
"mappings": "AACA;AAEO,yBACL,MACA,UACA,MACA;AACA,QAAM,QAAQ,gBAAgB,KAAK,MAAM,MAAM,QAAQ;AACvD,MAAI,EAAE,gBAAgB,IAAI,GAAG;AAC3B,QAAI,KAAK,MAAM,KAAK,MAAM,IAAI;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,SAAS,KAAK,QAAQ;AACxB,aAAO,SAAS,KAAK;AAAA,IACvB;AACA,UAAM,aAAa,0BAA0B,IAAI;AACjD,aAAS,KAAK,SAAS;AACvB,WAAO;AAAA,EACT;AACA,MAAI,EAAE,mBAAmB,IAAI,GAAG;AAC9B,WAAO,EAAE,iBAAiB,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,EAC9E;AACA,MAAI,EAAE,oBAAoB,IAAI,GAAG;AAC/B,WAAO,EAAE,kBAAkB,KAAK,UAAU,MAAM,KAAK,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC;AAAA,EAC/E;AACA,MAAI,EAAE,wBAAwB,IAAI,GAAG;AACnC,WAAO,EAAE,sBAAsB,KAAK,MAAM,MAAM,KAAK,UAAU,GAAG,MAAM,KAAK,SAAS,CAAC;AAAA,EACzF;AACA,SAAO;AAEP,qCAAmC,KAAoC;AAErE,UAAM,MAAM,KAAK,MAAM,sBAAsB,IAAI;AACjD,UAAM,SAAS,KAAK,WAAW,CAAC,UAAS,MAAK,UAAU,CAAC;AACzD,QAAI,CAAC;AAAQ,YAAM,IAAI,MAAM,aAAa;AAC1C,UAAM,WAAW,EAAE,oBAAoB,SAAS;AAAA,MAE9C,EAAE,mBAAmB,KAAK,EAAE,cAAc,IAAI,IAAI,OAAO,CAAC;AAAA,IAC5D,CAAC;AAED,WAAO,iBAAiB,QAAQ,QAAQ;AACxC,WAAO;AAAA,EACT;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import * as t from "@babel/types";
|
|
2
|
-
function literalToAst(literal) {
|
|
3
|
-
if (literal === null) {
|
|
4
|
-
return t.nullLiteral();
|
|
5
|
-
}
|
|
6
|
-
switch (typeof literal) {
|
|
7
|
-
case "function":
|
|
8
|
-
throw new Error("Unsupported");
|
|
9
|
-
case "number":
|
|
10
|
-
return t.numericLiteral(literal);
|
|
11
|
-
case "string":
|
|
12
|
-
return t.stringLiteral(literal);
|
|
13
|
-
case "boolean":
|
|
14
|
-
return t.booleanLiteral(literal);
|
|
15
|
-
case "undefined":
|
|
16
|
-
return t.unaryExpression("void", t.numericLiteral(0), true);
|
|
17
|
-
default:
|
|
18
|
-
if (Array.isArray(literal)) {
|
|
19
|
-
return t.arrayExpression(literal.map(literalToAst));
|
|
20
|
-
}
|
|
21
|
-
return t.objectExpression(Object.keys(literal).filter((k) => {
|
|
22
|
-
return typeof literal[k] !== "undefined";
|
|
23
|
-
}).map((k) => {
|
|
24
|
-
return t.objectProperty(t.stringLiteral(k), literalToAst(literal[k]));
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
const easyPeasies = ["BooleanLiteral", "StringLiteral", "NumericLiteral"];
|
|
29
|
-
function astToLiteral(node) {
|
|
30
|
-
if (!node) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
if (easyPeasies.includes(node.type)) {
|
|
34
|
-
return node.value;
|
|
35
|
-
}
|
|
36
|
-
if (node.name === "undefined" && !node.value) {
|
|
37
|
-
return void 0;
|
|
38
|
-
}
|
|
39
|
-
if (t.isNullLiteral(node)) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
if (t.isObjectExpression(node)) {
|
|
43
|
-
return computeProps(node.properties);
|
|
44
|
-
}
|
|
45
|
-
if (t.isArrayExpression(node)) {
|
|
46
|
-
return node.elements.reduce((acc, element) => [
|
|
47
|
-
...acc,
|
|
48
|
-
...(element == null ? void 0 : element.type) === "SpreadElement" ? astToLiteral(element.argument) : [astToLiteral(element)]
|
|
49
|
-
], []);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function computeProps(props) {
|
|
53
|
-
return props.reduce((acc, prop) => {
|
|
54
|
-
if (prop.type === "SpreadElement") {
|
|
55
|
-
return {
|
|
56
|
-
...acc,
|
|
57
|
-
...astToLiteral(prop.argument)
|
|
58
|
-
};
|
|
59
|
-
} else if (prop.type !== "ObjectMethod") {
|
|
60
|
-
const val = astToLiteral(prop.value);
|
|
61
|
-
if (val !== void 0) {
|
|
62
|
-
return {
|
|
63
|
-
...acc,
|
|
64
|
-
[prop.key.name]: val
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return acc;
|
|
69
|
-
}, {});
|
|
70
|
-
}
|
|
71
|
-
export {
|
|
72
|
-
astToLiteral,
|
|
73
|
-
literalToAst
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=literalToAst.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/literalToAst.ts"],
|
|
4
|
-
"sourcesContent": ["import * as t from '@babel/types'\n\nexport function literalToAst(literal: any): t.Expression {\n if (literal === null) {\n return t.nullLiteral()\n }\n switch (typeof literal) {\n case 'function':\n throw new Error('Unsupported')\n case 'number':\n return t.numericLiteral(literal)\n case 'string':\n return t.stringLiteral(literal)\n case 'boolean':\n return t.booleanLiteral(literal)\n case 'undefined':\n return t.unaryExpression('void', t.numericLiteral(0), true)\n default:\n if (Array.isArray(literal)) {\n return t.arrayExpression(literal.map(literalToAst))\n }\n return t.objectExpression(\n Object.keys(literal)\n .filter((k) => {\n return typeof literal[k] !== 'undefined'\n })\n .map((k) => {\n return t.objectProperty(t.stringLiteral(k), literalToAst(literal[k]))\n })\n )\n }\n}\n\nconst easyPeasies = ['BooleanLiteral', 'StringLiteral', 'NumericLiteral']\n\nexport function astToLiteral(node: any) {\n if (!node) {\n return\n }\n if (easyPeasies.includes(node.type)) {\n return node.value\n }\n if (node.name === 'undefined' && !node.value) {\n return undefined\n }\n if (t.isNullLiteral(node)) {\n return null\n }\n if (t.isObjectExpression(node)) {\n return computeProps(node.properties)\n }\n if (t.isArrayExpression(node)) {\n return node.elements.reduce(\n // @ts-ignore\n (acc, element) => [\n ...acc,\n ...(element?.type === 'SpreadElement'\n ? astToLiteral(element.argument)\n : [astToLiteral(element)]),\n ],\n []\n )\n }\n}\n\nfunction computeProps(props) {\n return props.reduce((acc, prop) => {\n if (prop.type === 'SpreadElement') {\n return {\n ...acc,\n ...astToLiteral(prop.argument),\n }\n } else if (prop.type !== 'ObjectMethod') {\n const val = astToLiteral(prop.value)\n if (val !== undefined) {\n return {\n ...acc,\n [prop.key.name]: val,\n }\n }\n }\n return acc\n }, {})\n}\n"],
|
|
5
|
-
"mappings": "AAAA;AAEO,sBAAsB,SAA4B;AACvD,MAAI,YAAY,MAAM;AACpB,WAAO,EAAE,YAAY;AAAA,EACvB;AACA,UAAQ,OAAO;AAAA,SACR;AACH,YAAM,IAAI,MAAM,aAAa;AAAA,SAC1B;AACH,aAAO,EAAE,eAAe,OAAO;AAAA,SAC5B;AACH,aAAO,EAAE,cAAc,OAAO;AAAA,SAC3B;AACH,aAAO,EAAE,eAAe,OAAO;AAAA,SAC5B;AACH,aAAO,EAAE,gBAAgB,QAAQ,EAAE,eAAe,CAAC,GAAG,IAAI;AAAA;AAE1D,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,eAAO,EAAE,gBAAgB,QAAQ,IAAI,YAAY,CAAC;AAAA,MACpD;AACA,aAAO,EAAE,iBACP,OAAO,KAAK,OAAO,EAChB,OAAO,CAAC,MAAM;AACb,eAAO,OAAO,QAAQ,OAAO;AAAA,MAC/B,CAAC,EACA,IAAI,CAAC,MAAM;AACV,eAAO,EAAE,eAAe,EAAE,cAAc,CAAC,GAAG,aAAa,QAAQ,EAAE,CAAC;AAAA,MACtE,CAAC,CACL;AAAA;AAEN;AAEA,MAAM,cAAc,CAAC,kBAAkB,iBAAiB,gBAAgB;AAEjE,sBAAsB,MAAW;AACtC,MAAI,CAAC,MAAM;AACT;AAAA,EACF;AACA,MAAI,YAAY,SAAS,KAAK,IAAI,GAAG;AACnC,WAAO,KAAK;AAAA,EACd;AACA,MAAI,KAAK,SAAS,eAAe,CAAC,KAAK,OAAO;AAC5C,WAAO;AAAA,EACT;AACA,MAAI,EAAE,cAAc,IAAI,GAAG;AACzB,WAAO;AAAA,EACT;AACA,MAAI,EAAE,mBAAmB,IAAI,GAAG;AAC9B,WAAO,aAAa,KAAK,UAAU;AAAA,EACrC;AACA,MAAI,EAAE,kBAAkB,IAAI,GAAG;AAC7B,WAAO,KAAK,SAAS,OAEnB,CAAC,KAAK,YAAY;AAAA,MAChB,GAAG;AAAA,MACH,GAAI,oCAAS,UAAS,kBAClB,aAAa,QAAQ,QAAQ,IAC7B,CAAC,aAAa,OAAO,CAAC;AAAA,IAC5B,GACA,CAAC,CACH;AAAA,EACF;AACF;AAEA,sBAAsB,OAAO;AAC3B,SAAO,MAAM,OAAO,CAAC,KAAK,SAAS;AACjC,QAAI,KAAK,SAAS,iBAAiB;AACjC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAG,aAAa,KAAK,QAAQ;AAAA,MAC/B;AAAA,IACF,WAAW,KAAK,SAAS,gBAAgB;AACvC,YAAM,MAAM,aAAa,KAAK,KAAK;AACnC,UAAI,QAAQ,QAAW;AACrB,eAAO;AAAA,UACL,GAAG;AAAA,UACH,CAAC,KAAK,IAAI,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AACP;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
process.on("message", (path) => {
|
|
2
|
-
var _a, _b, _c;
|
|
3
|
-
if (typeof path !== "string") {
|
|
4
|
-
throw new Error(`Not a string: ${path}`);
|
|
5
|
-
}
|
|
6
|
-
try {
|
|
7
|
-
const out = require(path);
|
|
8
|
-
(_a = process.send) == null ? void 0 : _a.call(process, JSON.stringify(out));
|
|
9
|
-
} catch (err) {
|
|
10
|
-
if (err instanceof Error) {
|
|
11
|
-
(_b = process.send) == null ? void 0 : _b.call(process, `-${err.message}
|
|
12
|
-
${err.stack}`);
|
|
13
|
-
} else {
|
|
14
|
-
(_c = process.send) == null ? void 0 : _c.call(process, `-${err}`);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
setInterval(() => {
|
|
19
|
-
}, 1e3);
|
|
20
|
-
//# sourceMappingURL=loadFile.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/loadFile.ts"],
|
|
4
|
-
"sourcesContent": ["process.on('message', (path) => {\n if (typeof path !== 'string') {\n throw new Error(`Not a string: ${path}`)\n }\n try {\n const out = require(path)\n process.send?.(JSON.stringify(out))\n } catch (err) {\n if (err instanceof Error) {\n process.send?.(`-${err.message}\\n${err.stack}`)\n } else {\n process.send?.(`-${err}`)\n }\n }\n})\n\nsetInterval(() => {}, 1000)\n"],
|
|
5
|
-
"mappings": "AAAA,QAAQ,GAAG,WAAW,CAAC,SAAS;AAAhC;AACE,MAAI,OAAO,SAAS,UAAU;AAC5B,UAAM,IAAI,MAAM,iBAAiB,MAAM;AAAA,EACzC;AACA,MAAI;AACF,UAAM,MAAM,QAAQ,IAAI;AACxB,kBAAQ,SAAR,iCAAe,KAAK,UAAU,GAAG;AAAA,EACnC,SAAS,KAAP;AACA,QAAI,eAAe,OAAO;AACxB,oBAAQ,SAAR,iCAAe,IAAI,IAAI;AAAA,EAAY,IAAI;AAAA,IACzC,OAAO;AACL,oBAAQ,SAAR,iCAAe,IAAI;AAAA,IACrB;AAAA,EACF;AACF,CAAC;AAED,YAAY,MAAM;AAAC,GAAG,GAAI;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import { basename, dirname, join, sep } from "path";
|
|
2
|
-
import { getDefaultTamaguiConfig } from "@tamagui/config-default-node";
|
|
3
|
-
import { createTamagui } from "@tamagui/core-node";
|
|
4
|
-
import esbuild from "esbuild";
|
|
5
|
-
import { ensureDir, pathExists, stat, writeFile } from "fs-extra";
|
|
6
|
-
import { SHOULD_DEBUG } from "../constants";
|
|
7
|
-
import { getNameToPaths, registerRequire, unregisterRequire } from "../require";
|
|
8
|
-
const cache = {};
|
|
9
|
-
async function loadTamagui(props) {
|
|
10
|
-
var _a, _b;
|
|
11
|
-
const key = JSON.stringify(props);
|
|
12
|
-
if (cache[key]) {
|
|
13
|
-
if (cache[key] instanceof Promise) {
|
|
14
|
-
return await cache[key];
|
|
15
|
-
}
|
|
16
|
-
return cache[key];
|
|
17
|
-
}
|
|
18
|
-
let resolver = () => {
|
|
19
|
-
};
|
|
20
|
-
cache[key] = new Promise((res) => {
|
|
21
|
-
resolver = res;
|
|
22
|
-
});
|
|
23
|
-
const tmpDir = join(process.cwd(), "dist", "tamagui-node");
|
|
24
|
-
const configOutPath = join(tmpDir, `tamagui.config.js`);
|
|
25
|
-
const includesCore = props.components.includes("@tamagui/core");
|
|
26
|
-
const baseComponents = props.components.filter((x) => x !== "@tamagui/core");
|
|
27
|
-
const componentOutPaths = baseComponents.map((componentModule) => join(tmpDir, `${componentModule.split(sep).join("-").replace(/[^a-z0-9]+/gi, "")}-components.config.js`));
|
|
28
|
-
const external = ["@tamagui/core", "@tamagui/core-node", "react", "react-dom"];
|
|
29
|
-
const configEntry = props.config ? join(process.cwd(), props.config) : "";
|
|
30
|
-
if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
|
|
31
|
-
console.log(`Building config entry`, configEntry);
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
await ensureDir(tmpDir);
|
|
35
|
-
} catch {
|
|
36
|
-
}
|
|
37
|
-
await Promise.all([
|
|
38
|
-
props.config ? buildTamaguiConfig(props, {
|
|
39
|
-
entryPoints: [configEntry],
|
|
40
|
-
external,
|
|
41
|
-
outfile: configOutPath
|
|
42
|
-
}) : null,
|
|
43
|
-
...baseComponents.map((componentModule, i) => {
|
|
44
|
-
return buildTamaguiConfig(props, {
|
|
45
|
-
entryPoints: [componentModule],
|
|
46
|
-
external,
|
|
47
|
-
outfile: componentOutPaths[i]
|
|
48
|
-
});
|
|
49
|
-
})
|
|
50
|
-
]);
|
|
51
|
-
if ((_b = process.env.DEBUG) == null ? void 0 : _b.startsWith("tamagui")) {
|
|
52
|
-
console.log(`Built configs`);
|
|
53
|
-
}
|
|
54
|
-
const coreNode = require("@tamagui/core-node");
|
|
55
|
-
registerRequire();
|
|
56
|
-
const config = require(configOutPath).default;
|
|
57
|
-
unregisterRequire();
|
|
58
|
-
const components = {
|
|
59
|
-
...loadComponents(componentOutPaths),
|
|
60
|
-
...includesCore && gatherTamaguiComponentInfo([coreNode])
|
|
61
|
-
};
|
|
62
|
-
cache[key] = {
|
|
63
|
-
components,
|
|
64
|
-
nameToPaths: {},
|
|
65
|
-
tamaguiConfig: config
|
|
66
|
-
};
|
|
67
|
-
createTamagui(cache[key].tamaguiConfig);
|
|
68
|
-
resolver(cache[key]);
|
|
69
|
-
return cache[key];
|
|
70
|
-
}
|
|
71
|
-
async function buildTamaguiConfig(props, options, aliases) {
|
|
72
|
-
var _a, _b;
|
|
73
|
-
const alias = require("@tamagui/core-node").aliasPlugin;
|
|
74
|
-
const lockFile = join(dirname(options.outfile), basename(options.outfile, ".lock"));
|
|
75
|
-
const lockStat = await stat(lockFile).catch(() => {
|
|
76
|
-
});
|
|
77
|
-
const lockedMsAgo = !lockStat ? Infinity : new Date().getTime() - new Date(lockStat.mtime).getTime();
|
|
78
|
-
if (lockedMsAgo < 500) {
|
|
79
|
-
if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
|
|
80
|
-
console.log(`Waiting for existing build`, options.entryPoints);
|
|
81
|
-
}
|
|
82
|
-
let tries = 5;
|
|
83
|
-
while (tries--) {
|
|
84
|
-
if (await pathExists(options.outfile)) {
|
|
85
|
-
return;
|
|
86
|
-
} else {
|
|
87
|
-
await new Promise((res) => setTimeout(res, 50));
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
writeFile(lockFile, "");
|
|
92
|
-
if ((_b = process.env.DEBUG) == null ? void 0 : _b.startsWith("tamagui")) {
|
|
93
|
-
console.log(`Building`, options.entryPoints);
|
|
94
|
-
}
|
|
95
|
-
return esbuild.build({
|
|
96
|
-
bundle: true,
|
|
97
|
-
...options,
|
|
98
|
-
format: "cjs",
|
|
99
|
-
target: "node18",
|
|
100
|
-
keepNames: true,
|
|
101
|
-
platform: "node",
|
|
102
|
-
loader: {
|
|
103
|
-
".js": "jsx"
|
|
104
|
-
},
|
|
105
|
-
allowOverwrite: true,
|
|
106
|
-
logLevel: "warning",
|
|
107
|
-
plugins: [
|
|
108
|
-
{
|
|
109
|
-
name: "external",
|
|
110
|
-
setup(build) {
|
|
111
|
-
build.onResolve({ filter: /@tamagui\/core/ }, (args) => {
|
|
112
|
-
return {
|
|
113
|
-
path: "@tamagui/core-node",
|
|
114
|
-
external: true
|
|
115
|
-
};
|
|
116
|
-
});
|
|
117
|
-
build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
|
|
118
|
-
return {
|
|
119
|
-
path: "react-native-web-lite",
|
|
120
|
-
external: true
|
|
121
|
-
};
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
alias({
|
|
126
|
-
"react-native-svg": require.resolve("@tamagui/react-native-svg"),
|
|
127
|
-
"react-native-safe-area-context": require.resolve("@tamagui/fake-react-native"),
|
|
128
|
-
"react-native-gesture-handler": require.resolve("@tamagui/proxy-worm"),
|
|
129
|
-
"react-native-reanimated": require.resolve("@tamagui/proxy-worm"),
|
|
130
|
-
...aliases
|
|
131
|
-
})
|
|
132
|
-
]
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
function loadTamaguiSync(props) {
|
|
136
|
-
const key = JSON.stringify(props);
|
|
137
|
-
if (cache[key]) {
|
|
138
|
-
return cache[key];
|
|
139
|
-
}
|
|
140
|
-
const { unregister } = require("esbuild-register/dist/node").register({
|
|
141
|
-
target: "es2019",
|
|
142
|
-
format: "cjs"
|
|
143
|
-
});
|
|
144
|
-
try {
|
|
145
|
-
registerRequire();
|
|
146
|
-
process.env.IS_STATIC = "is_static";
|
|
147
|
-
if (typeof globalThis["__DEV__"] === "undefined") {
|
|
148
|
-
globalThis["__DEV__"] = process.env.NODE_ENV === "development";
|
|
149
|
-
}
|
|
150
|
-
try {
|
|
151
|
-
let tamaguiConfig = null;
|
|
152
|
-
if (props.config) {
|
|
153
|
-
const configPath = join(process.cwd(), props.config);
|
|
154
|
-
const exp = require(configPath);
|
|
155
|
-
tamaguiConfig = exp["default"] || exp;
|
|
156
|
-
if (!tamaguiConfig || !tamaguiConfig.parsed) {
|
|
157
|
-
const confPath = require.resolve(configPath);
|
|
158
|
-
throw new Error(`Can't find valid config in ${confPath}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
const components = loadComponents(props.components);
|
|
162
|
-
process.env.IS_STATIC = void 0;
|
|
163
|
-
if (tamaguiConfig) {
|
|
164
|
-
createTamagui(tamaguiConfig);
|
|
165
|
-
}
|
|
166
|
-
cache[key] = {
|
|
167
|
-
components,
|
|
168
|
-
tamaguiConfig,
|
|
169
|
-
nameToPaths: getNameToPaths()
|
|
170
|
-
};
|
|
171
|
-
} catch (err) {
|
|
172
|
-
if (err instanceof Error) {
|
|
173
|
-
console.warn(`Error loading tamagui.config.ts (set DEBUG=tamagui to see full stack), running tamagui without custom config`);
|
|
174
|
-
console.log(`
|
|
175
|
-
|
|
176
|
-
${err.message}
|
|
177
|
-
|
|
178
|
-
`);
|
|
179
|
-
if (SHOULD_DEBUG) {
|
|
180
|
-
console.log(err.stack);
|
|
181
|
-
}
|
|
182
|
-
} else {
|
|
183
|
-
console.error(`Error loading tamagui.config.ts`, err);
|
|
184
|
-
}
|
|
185
|
-
return {
|
|
186
|
-
components: {},
|
|
187
|
-
tamaguiConfig: getDefaultTamaguiConfig(),
|
|
188
|
-
nameToPaths: {}
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
return cache[key];
|
|
192
|
-
} catch (err) {
|
|
193
|
-
console.log("Error loading Tamagui", err);
|
|
194
|
-
throw err;
|
|
195
|
-
} finally {
|
|
196
|
-
unregister();
|
|
197
|
-
unregisterRequire();
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
function interopDefaultExport(mod) {
|
|
201
|
-
return (mod == null ? void 0 : mod.default) ?? mod;
|
|
202
|
-
}
|
|
203
|
-
const cacheComponents = {};
|
|
204
|
-
function loadComponents(componentsModules) {
|
|
205
|
-
const key = componentsModules.join("");
|
|
206
|
-
if (cacheComponents[key]) {
|
|
207
|
-
return cacheComponents[key];
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const requiredModules = componentsModules.map((name) => {
|
|
211
|
-
return interopDefaultExport(require(name));
|
|
212
|
-
});
|
|
213
|
-
const res = gatherTamaguiComponentInfo(requiredModules);
|
|
214
|
-
cacheComponents[key] = res;
|
|
215
|
-
return res;
|
|
216
|
-
} catch (err) {
|
|
217
|
-
console.log(`Tamagui error bundling components`, err.message, err.stack);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
function gatherTamaguiComponentInfo(packages) {
|
|
221
|
-
const components = {};
|
|
222
|
-
for (const exported of packages) {
|
|
223
|
-
try {
|
|
224
|
-
for (const componentName in exported) {
|
|
225
|
-
const found = getTamaguiComponent(componentName, exported[componentName]);
|
|
226
|
-
if (found) {
|
|
227
|
-
const { Component, reactNativeWebComponent, ...sc } = found.staticConfig;
|
|
228
|
-
Object.assign(components, { [componentName]: { staticConfig: sc } });
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
} catch (err) {
|
|
232
|
-
console.error(`Tamagui failed getting components`);
|
|
233
|
-
if (err instanceof Error) {
|
|
234
|
-
console.error(err.message, err.stack);
|
|
235
|
-
} else {
|
|
236
|
-
console.error(err);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return components;
|
|
241
|
-
}
|
|
242
|
-
function getTamaguiComponent(name, Component) {
|
|
243
|
-
if (name[0].toUpperCase() !== name[0]) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
const staticConfig = Component == null ? void 0 : Component.staticConfig;
|
|
247
|
-
if (staticConfig) {
|
|
248
|
-
return Component;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
export {
|
|
252
|
-
loadTamagui,
|
|
253
|
-
loadTamaguiSync
|
|
254
|
-
};
|
|
255
|
-
//# sourceMappingURL=loadTamagui.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/extractor/loadTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-console */\nimport { basename, dirname, join, sep } from 'path'\n\nimport { getDefaultTamaguiConfig } from '@tamagui/config-default-node'\nimport type { StaticConfig, TamaguiComponent, TamaguiInternalConfig } from '@tamagui/core-node'\nimport { createTamagui } from '@tamagui/core-node'\nimport esbuild from 'esbuild'\nimport { ensureDir, pathExists, remove, stat, writeFile } from 'fs-extra'\n\nimport { SHOULD_DEBUG } from '../constants'\nimport { getNameToPaths, registerRequire, unregisterRequire } from '../require'\n\ntype NameToPaths = {\n [key: string]: Set<string>\n}\n\nexport type TamaguiProjectInfo = {\n components: Record<string, TamaguiComponent>\n tamaguiConfig: TamaguiInternalConfig\n nameToPaths: NameToPaths\n}\n\ntype Props = { components: string[]; config?: string }\n\nconst cache = {}\n\n// TODO needs a plugin for webpack / vite to run this once at startup and not again until changed...\n\nexport async function loadTamagui(props: Props): Promise<TamaguiProjectInfo> {\n const key = JSON.stringify(props)\n if (cache[key]) {\n if (cache[key] instanceof Promise) {\n return await cache[key]\n }\n return cache[key]\n }\n\n let resolver: Function = () => {}\n cache[key] = new Promise((res) => {\n resolver = res\n })\n\n const tmpDir = join(process.cwd(), 'dist', 'tamagui-node')\n const configOutPath = join(tmpDir, `tamagui.config.js`)\n const includesCore = props.components.includes('@tamagui/core')\n const baseComponents = props.components.filter((x) => x !== '@tamagui/core')\n const componentOutPaths = baseComponents.map((componentModule) =>\n join(\n tmpDir,\n `${componentModule\n .split(sep)\n .join('-')\n .replace(/[^a-z0-9]+/gi, '')}-components.config.js`\n )\n )\n\n const external = ['@tamagui/core', '@tamagui/core-node', 'react', 'react-dom']\n const configEntry = props.config ? join(process.cwd(), props.config) : ''\n\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Building config entry`, configEntry)\n }\n\n // build them to node-compat versions\n try {\n await ensureDir(tmpDir)\n } catch {\n //\n }\n\n await Promise.all([\n props.config\n ? buildTamaguiConfig(props, {\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return buildTamaguiConfig(props, {\n entryPoints: [componentModule],\n external,\n outfile: componentOutPaths[i],\n })\n }),\n ])\n\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Built configs`)\n }\n\n const coreNode = require('@tamagui/core-node')\n\n registerRequire()\n const config = require(configOutPath).default\n unregisterRequire()\n\n const components = {\n ...loadComponents(componentOutPaths),\n ...(includesCore && gatherTamaguiComponentInfo([coreNode])),\n }\n\n cache[key] = {\n components,\n nameToPaths: {},\n tamaguiConfig: config,\n }\n\n // init core-node\n createTamagui(cache[key].tamaguiConfig)\n\n resolver(cache[key])\n\n return cache[key]\n}\n\nasync function buildTamaguiConfig(\n props: Props,\n options: Partial<esbuild.BuildOptions> & { outfile: string },\n aliases?: Record<string, string>\n) {\n const alias = require('@tamagui/core-node').aliasPlugin\n // until i do fancier things w plugins:\n const lockFile = join(dirname(options.outfile), basename(options.outfile, '.lock'))\n const lockStat = await stat(lockFile).catch(() => {\n // ok\n })\n const lockedMsAgo = !lockStat\n ? Infinity\n : new Date().getTime() - new Date(lockStat.mtime).getTime()\n if (lockedMsAgo < 500) {\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Waiting for existing build`, options.entryPoints)\n }\n let tries = 5\n while (tries--) {\n if (await pathExists(options.outfile)) {\n return\n } else {\n await new Promise((res) => setTimeout(res, 50))\n }\n }\n }\n writeFile(lockFile, '')\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Building`, options.entryPoints)\n }\n return esbuild.build({\n bundle: true,\n ...options,\n format: 'cjs',\n target: 'node18',\n keepNames: true,\n platform: 'node',\n loader: {\n '.js': 'jsx',\n },\n allowOverwrite: true,\n logLevel: 'warning',\n plugins: [\n {\n name: 'external',\n setup(build) {\n build.onResolve({ filter: /@tamagui\\/core/ }, (args) => {\n return {\n path: '@tamagui/core-node',\n external: true,\n }\n })\n\n build.onResolve({ filter: /^(react-native|react-native\\/.*)$/ }, (args) => {\n return {\n path: 'react-native-web-lite',\n external: true,\n }\n })\n },\n },\n alias({\n 'react-native-svg': require.resolve('@tamagui/react-native-svg'),\n 'react-native-safe-area-context': require.resolve('@tamagui/fake-react-native'),\n 'react-native-gesture-handler': require.resolve('@tamagui/proxy-worm'),\n 'react-native-reanimated': require.resolve('@tamagui/proxy-worm'),\n ...aliases,\n }),\n ],\n })\n}\n\n// loads in-process using esbuild-register\nexport function loadTamaguiSync(props: Props): TamaguiProjectInfo {\n const key = JSON.stringify(props)\n if (cache[key]) {\n return cache[key]\n }\n\n const { unregister } = require('esbuild-register/dist/node').register({\n target: 'es2019',\n format: 'cjs',\n })\n\n try {\n registerRequire()\n\n // lets shim require and avoid importing react-native + react-native-web\n // we just need to read the config around them\n process.env.IS_STATIC = 'is_static'\n // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = process.env.NODE_ENV === 'development'\n }\n\n try {\n // import config\n let tamaguiConfig: TamaguiInternalConfig | null = null\n\n if (props.config) {\n const configPath = join(process.cwd(), props.config)\n const exp = require(configPath)\n tamaguiConfig = (exp['default'] || exp) as TamaguiInternalConfig\n if (!tamaguiConfig || !tamaguiConfig.parsed) {\n const confPath = require.resolve(configPath)\n throw new Error(`Can't find valid config in ${confPath}`)\n }\n }\n\n const components = loadComponents(props.components)\n\n // undo shims\n process.env.IS_STATIC = undefined\n\n // set up core-node\n if (tamaguiConfig) {\n createTamagui(tamaguiConfig)\n }\n\n cache[key] = {\n components,\n tamaguiConfig,\n nameToPaths: getNameToPaths(),\n }\n } catch (err) {\n if (err instanceof Error) {\n console.warn(\n `Error loading tamagui.config.ts (set DEBUG=tamagui to see full stack), running tamagui without custom config`\n )\n console.log(`\\n\\n ${err.message}\\n\\n`)\n if (SHOULD_DEBUG) {\n console.log(err.stack)\n }\n } else {\n console.error(`Error loading tamagui.config.ts`, err)\n }\n return {\n components: {},\n tamaguiConfig: getDefaultTamaguiConfig(),\n nameToPaths: {},\n }\n }\n\n return cache[key]\n } catch (err) {\n console.log('Error loading Tamagui', err)\n throw err\n } finally {\n unregister()\n unregisterRequire()\n }\n}\n\nfunction interopDefaultExport(mod: any) {\n return mod?.default ?? mod\n}\n\nconst cacheComponents = {}\n\nfunction loadComponents(componentsModules: string[]) {\n const key = componentsModules.join('')\n if (cacheComponents[key]) {\n return cacheComponents[key]\n }\n try {\n const requiredModules = componentsModules.map((name) => {\n return interopDefaultExport(require(name))\n })\n const res = gatherTamaguiComponentInfo(requiredModules)\n cacheComponents[key] = res\n return res\n } catch (err: any) {\n console.log(`Tamagui error bundling components`, err.message, err.stack)\n }\n}\n\nfunction gatherTamaguiComponentInfo(packages: any[]) {\n const components = {}\n for (const exported of packages) {\n try {\n for (const componentName in exported) {\n const found = getTamaguiComponent(componentName, exported[componentName])\n if (found) {\n // remove non-stringifyable\n const { Component, reactNativeWebComponent, ...sc } = found.staticConfig\n Object.assign(components, { [componentName]: { staticConfig: sc } })\n }\n }\n } catch (err) {\n console.error(`Tamagui failed getting components`)\n if (err instanceof Error) {\n console.error(err.message, err.stack)\n } else {\n console.error(err)\n }\n }\n }\n return components\n}\n\nfunction getTamaguiComponent(\n name: string,\n Component: any\n): undefined | { staticConfig: StaticConfig } {\n if (name[0].toUpperCase() !== name[0]) {\n return\n }\n const staticConfig = Component?.staticConfig as StaticConfig | undefined\n if (staticConfig) {\n return Component\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|