@tamagui/static 1.74.3 → 1.74.5
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/require.js +89 -0
- package/dist/cjs/require.js.map +6 -0
- package/dist/cjs/require.native.js +90 -0
- package/dist/cjs/require.native.js.map +6 -0
- package/dist/esm/constants.native.js +10 -0
- package/dist/esm/constants.native.js.map +6 -0
- package/dist/esm/extractor/accessSafe.native.js +23 -0
- package/dist/esm/extractor/accessSafe.native.js.map +6 -0
- package/dist/esm/extractor/babelParse.native.js +35 -0
- package/dist/esm/extractor/babelParse.native.js.map +6 -0
- package/dist/esm/extractor/buildClassName.native.js +48 -0
- package/dist/esm/extractor/buildClassName.native.js.map +6 -0
- package/dist/esm/extractor/bundle.native.js +93 -0
- package/dist/esm/extractor/bundle.native.js.map +6 -0
- package/dist/esm/extractor/bundleConfig.native.js +301 -0
- package/dist/esm/extractor/bundleConfig.native.js.map +6 -0
- package/dist/esm/extractor/createEvaluator.native.js +35 -0
- package/dist/esm/extractor/createEvaluator.native.js.map +6 -0
- package/dist/esm/extractor/createExtractor.native.js +1095 -0
- package/dist/esm/extractor/createExtractor.native.js.map +6 -0
- package/dist/esm/extractor/ensureImportingConcat.native.js +26 -0
- package/dist/esm/extractor/ensureImportingConcat.native.js.map +6 -0
- package/dist/esm/extractor/esbuildAliasPlugin.native.js +20 -0
- package/dist/esm/extractor/esbuildAliasPlugin.native.js.map +6 -0
- package/dist/esm/extractor/evaluateAstNode.native.js +75 -0
- package/dist/esm/extractor/evaluateAstNode.native.js.map +6 -0
- package/dist/esm/extractor/extractHelpers.native.js +93 -0
- package/dist/esm/extractor/extractHelpers.native.js.map +6 -0
- package/dist/esm/extractor/extractMediaStyle.native.js +100 -0
- package/dist/esm/extractor/extractMediaStyle.native.js.map +6 -0
- package/dist/esm/extractor/extractToClassNames.native.js +290 -0
- package/dist/esm/extractor/extractToClassNames.native.js.map +6 -0
- package/dist/esm/extractor/findTopmostFunction.native.js +16 -0
- package/dist/esm/extractor/findTopmostFunction.native.js.map +6 -0
- package/dist/esm/extractor/generateTamaguiStudioConfig.native.js +93 -0
- package/dist/esm/extractor/generateTamaguiStudioConfig.native.js.map +6 -0
- package/dist/esm/extractor/generatedUid.native.js +18 -0
- package/dist/esm/extractor/generatedUid.native.js.map +6 -0
- package/dist/esm/extractor/getPrefixLogs.native.js +7 -0
- package/dist/esm/extractor/getPrefixLogs.native.js.map +6 -0
- package/dist/esm/extractor/getPropValueFromAttributes.native.js +43 -0
- package/dist/esm/extractor/getPropValueFromAttributes.native.js.map +6 -0
- package/dist/esm/extractor/getSourceModule.native.js +42 -0
- package/dist/esm/extractor/getSourceModule.native.js.map +6 -0
- package/dist/esm/extractor/getStaticBindingsForScope.native.js +127 -0
- package/dist/esm/extractor/getStaticBindingsForScope.native.js.map +6 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.native.js +8 -0
- package/dist/esm/extractor/getTamaguiConfigPathFromOptionsConfig.native.js.map +6 -0
- package/dist/esm/extractor/hoistClassNames.native.js +37 -0
- package/dist/esm/extractor/hoistClassNames.native.js.map +6 -0
- package/dist/esm/extractor/literalToAst.native.js +66 -0
- package/dist/esm/extractor/literalToAst.native.js.map +6 -0
- package/dist/esm/extractor/loadFile.native.js +14 -0
- package/dist/esm/extractor/loadFile.native.js.map +6 -0
- package/dist/esm/extractor/loadTamagui.native.js +248 -0
- package/dist/esm/extractor/loadTamagui.native.js.map +6 -0
- package/dist/esm/extractor/logLines.native.js +14 -0
- package/dist/esm/extractor/logLines.native.js.map +6 -0
- package/dist/esm/extractor/normalizeTernaries.native.js +37 -0
- package/dist/esm/extractor/normalizeTernaries.native.js.map +6 -0
- package/dist/esm/extractor/propsToFontFamilyCache.native.js +18 -0
- package/dist/esm/extractor/propsToFontFamilyCache.native.js.map +6 -0
- package/dist/esm/extractor/removeUnusedHooks.native.js +51 -0
- package/dist/esm/extractor/removeUnusedHooks.native.js.map +6 -0
- package/dist/esm/extractor/timer.native.js +22 -0
- package/dist/esm/extractor/timer.native.js.map +6 -0
- package/dist/esm/extractor/validHTMLAttributes.native.js +52 -0
- package/dist/esm/extractor/validHTMLAttributes.native.js.map +6 -0
- package/dist/esm/getPragmaOptions.native.js +22 -0
- package/dist/esm/getPragmaOptions.native.js.map +6 -0
- package/dist/esm/helpers/memoize.native.js +17 -0
- package/dist/esm/helpers/memoize.native.js.map +6 -0
- package/dist/esm/helpers/requireTamaguiCore.native.js +9 -0
- package/dist/esm/helpers/requireTamaguiCore.native.js.map +6 -0
- package/dist/esm/index.native.js +3 -0
- package/dist/esm/index.native.js.map +6 -0
- package/dist/esm/registerRequire.native.js +83 -0
- package/dist/esm/registerRequire.native.js.map +6 -0
- package/dist/esm/require.js +66 -0
- package/dist/esm/require.js.map +6 -0
- package/dist/esm/setup.native.js +2 -0
- package/dist/esm/setup.native.js.map +6 -0
- package/dist/esm/static.native.js +15 -0
- package/dist/esm/static.native.js.map +6 -0
- package/dist/esm/types.native.js +1 -0
- package/dist/esm/types.native.js.map +6 -0
- package/dist/esm/webpackPlugin.native.js +11 -0
- package/dist/esm/webpackPlugin.native.js.map +6 -0
- package/package.json +16 -16
@@ -0,0 +1,301 @@
|
|
1
|
+
import { readFileSync } from "fs";
|
2
|
+
import { basename, dirname, extname, join, relative, sep } from "path";
|
3
|
+
import generate from "@babel/generator";
|
4
|
+
import traverse from "@babel/traverse";
|
5
|
+
import * as t from "@babel/types";
|
6
|
+
import { Color, colorLog } from "@tamagui/cli-color";
|
7
|
+
import esbuild from "esbuild";
|
8
|
+
import { ensureDir, removeSync, writeFileSync } from "fs-extra";
|
9
|
+
import { registerRequire, setRequireResult } from "../registerRequire";
|
10
|
+
import { babelParse } from "./babelParse";
|
11
|
+
import { bundle } from "./bundle";
|
12
|
+
import { getTamaguiConfigPathFromOptionsConfig } from "./getTamaguiConfigPathFromOptionsConfig";
|
13
|
+
const external = [
|
14
|
+
"@tamagui/core",
|
15
|
+
"@tamagui/web",
|
16
|
+
"react",
|
17
|
+
"react-dom",
|
18
|
+
"react-native-svg"
|
19
|
+
], esbuildExtraOptions = {
|
20
|
+
define: {
|
21
|
+
__DEV__: `${process.env.NODE_ENV === "development"}`
|
22
|
+
}
|
23
|
+
}, esbuildOptions = {
|
24
|
+
target: "es2018",
|
25
|
+
format: "cjs",
|
26
|
+
jsx: "transform",
|
27
|
+
platform: "node",
|
28
|
+
...esbuildExtraOptions
|
29
|
+
};
|
30
|
+
let currentBundle = null, isBundling = !1, lastBundle = null;
|
31
|
+
const waitForBundle = /* @__PURE__ */ new Set();
|
32
|
+
function hasBundledConfigChanged() {
|
33
|
+
return lastBundle === currentBundle ? !1 : (lastBundle = currentBundle, !0);
|
34
|
+
}
|
35
|
+
async function getBundledConfig(props, rebuild = !1) {
|
36
|
+
if (isBundling)
|
37
|
+
await new Promise((res) => {
|
38
|
+
waitForBundle.add(res);
|
39
|
+
});
|
40
|
+
else if (!currentBundle || rebuild)
|
41
|
+
return await bundleConfig(props);
|
42
|
+
return currentBundle;
|
43
|
+
}
|
44
|
+
async function bundleConfig(props) {
|
45
|
+
try {
|
46
|
+
isBundling = !0;
|
47
|
+
const configEntry = props.config ? getTamaguiConfigPathFromOptionsConfig(props.config) : "", tmpDir = join(process.cwd(), ".tamagui"), configOutPath = join(tmpDir, "tamagui.config.cjs"), baseComponents = props.components.filter((x) => x !== "@tamagui/core"), componentOutPaths = baseComponents.map(
|
48
|
+
(componentModule) => join(
|
49
|
+
tmpDir,
|
50
|
+
`${componentModule.split(sep).join("-").replace(/[^a-z0-9]+/gi, "")}-components.config.cjs`
|
51
|
+
)
|
52
|
+
);
|
53
|
+
process.env.NODE_ENV === "development" && process.env.DEBUG?.startsWith("tamagui") && console.log("Building config entry", configEntry);
|
54
|
+
try {
|
55
|
+
await ensureDir(tmpDir);
|
56
|
+
} catch {
|
57
|
+
}
|
58
|
+
const start = Date.now();
|
59
|
+
await Promise.all([
|
60
|
+
props.config ? bundle(
|
61
|
+
{
|
62
|
+
entryPoints: [configEntry],
|
63
|
+
external,
|
64
|
+
outfile: configOutPath,
|
65
|
+
target: "node16",
|
66
|
+
...esbuildExtraOptions
|
67
|
+
},
|
68
|
+
props.platform
|
69
|
+
) : null,
|
70
|
+
...baseComponents.map((componentModule, i) => bundle(
|
71
|
+
{
|
72
|
+
entryPoints: [componentModule],
|
73
|
+
resolvePlatformSpecificEntries: !0,
|
74
|
+
external,
|
75
|
+
outfile: componentOutPaths[i],
|
76
|
+
target: "node16",
|
77
|
+
...esbuildExtraOptions
|
78
|
+
},
|
79
|
+
props.platform
|
80
|
+
))
|
81
|
+
]), colorLog(
|
82
|
+
Color.FgYellow,
|
83
|
+
`
|
84
|
+
\u27A1 [tamagui] (${Date.now() - start}ms):`
|
85
|
+
), colorLog(
|
86
|
+
Color.Dim,
|
87
|
+
`
|
88
|
+
Config .${sep}${relative(process.cwd(), configOutPath)}
|
89
|
+
Components ${[
|
90
|
+
...componentOutPaths.map((p) => `.${sep}${relative(process.cwd(), p)}`)
|
91
|
+
].join(`
|
92
|
+
`)}
|
93
|
+
`
|
94
|
+
);
|
95
|
+
let out;
|
96
|
+
const { unregister } = registerRequire(props.platform);
|
97
|
+
try {
|
98
|
+
out = require(configOutPath);
|
99
|
+
} catch (err) {
|
100
|
+
throw err;
|
101
|
+
} finally {
|
102
|
+
unregister();
|
103
|
+
}
|
104
|
+
let config = out.default || out || out.config;
|
105
|
+
if (config && config.config && !config.tokens && (config = config.config), !config)
|
106
|
+
throw new Error(`No config: ${config}`);
|
107
|
+
let components = loadComponents({
|
108
|
+
...props,
|
109
|
+
components: componentOutPaths
|
110
|
+
});
|
111
|
+
if (!components)
|
112
|
+
throw new Error(`No components found: ${componentOutPaths.join(", ")}`);
|
113
|
+
for (const component of components)
|
114
|
+
component.moduleName = baseComponents[componentOutPaths.indexOf(component.moduleName)], component.moduleName || (process.env.DEBUG?.includes("tamagui") || process.env.IS_TAMAGUI_DEV) && console.warn(
|
115
|
+
`\u26A0\uFE0F no module name found: ${component.moduleName} ${JSON.stringify(
|
116
|
+
baseComponents
|
117
|
+
)} in ${JSON.stringify(componentOutPaths)}`
|
118
|
+
);
|
119
|
+
const coreComponents = loadComponents({
|
120
|
+
...props,
|
121
|
+
components: ["@tamagui/core"]
|
122
|
+
});
|
123
|
+
coreComponents && (coreComponents[0].moduleName = "@tamagui/core", components = [...components, ...coreComponents]), process.env.NODE_ENV === "development" && process.env.DEBUG?.startsWith("tamagui") && console.log("Loaded components", components);
|
124
|
+
const res = {
|
125
|
+
components,
|
126
|
+
nameToPaths: {},
|
127
|
+
tamaguiConfig: config
|
128
|
+
};
|
129
|
+
return currentBundle = res, res;
|
130
|
+
} catch (err) {
|
131
|
+
console.error(
|
132
|
+
`Error bundling tamagui config: ${err?.message} (run with DEBUG=tamagui to see stack)`
|
133
|
+
), process.env.DEBUG?.includes("tamagui") && console.error(err.stack);
|
134
|
+
} finally {
|
135
|
+
isBundling = !1, waitForBundle.forEach((cb) => cb()), waitForBundle.clear();
|
136
|
+
}
|
137
|
+
}
|
138
|
+
function loadComponents(props, forceExports = !1) {
|
139
|
+
const componentsModules = props.components, key = componentsModules.join("");
|
140
|
+
if (!forceExports && cacheComponents[key])
|
141
|
+
return cacheComponents[key];
|
142
|
+
const { unregister } = registerRequire(props.platform, {
|
143
|
+
proxyWormImports: forceExports
|
144
|
+
});
|
145
|
+
try {
|
146
|
+
const info = componentsModules.flatMap((name) => {
|
147
|
+
const isDynamic = !!extname(name) && forceExports, fileContents = isDynamic ? readFileSync(name, "utf-8") : "", loadModule = isDynamic ? join(dirname(name), `.tamagui-dynamic-eval-${basename(name)}.tsx`) : name;
|
148
|
+
let writtenContents = fileContents, didBabel = !1;
|
149
|
+
function attemptLoad({ forceExports: forceExports2 = !1 } = {}) {
|
150
|
+
isDynamic && (writtenContents = forceExports2 ? transformAddExports(babelParse(esbuildit(fileContents, "modern"), name)) : fileContents, writeFileSync(loadModule, writtenContents), esbuild.buildSync({
|
151
|
+
...esbuildOptions,
|
152
|
+
entryPoints: [loadModule],
|
153
|
+
outfile: loadModule,
|
154
|
+
alias: {
|
155
|
+
"react-native": require.resolve("@tamagui/react-native-prebuilt")
|
156
|
+
},
|
157
|
+
bundle: !0,
|
158
|
+
packages: "external",
|
159
|
+
allowOverwrite: !0,
|
160
|
+
// logLevel: 'silent',
|
161
|
+
sourcemap: !1,
|
162
|
+
loader: {
|
163
|
+
".png": "dataurl",
|
164
|
+
".jpg": "dataurl",
|
165
|
+
".jpeg": "dataurl",
|
166
|
+
".gif": "dataurl"
|
167
|
+
}
|
168
|
+
})), process.env.DEBUG === "tamagui" && console.log("loadModule", loadModule, require.resolve(loadModule));
|
169
|
+
const moduleResult = require(loadModule);
|
170
|
+
forceExports2 || setRequireResult(name, moduleResult);
|
171
|
+
const nameToInfo = getComponentStaticConfigByName(
|
172
|
+
name,
|
173
|
+
interopDefaultExport(moduleResult)
|
174
|
+
);
|
175
|
+
return {
|
176
|
+
moduleName: name,
|
177
|
+
nameToInfo
|
178
|
+
};
|
179
|
+
}
|
180
|
+
const dispose = () => {
|
181
|
+
isDynamic && removeSync(loadModule);
|
182
|
+
};
|
183
|
+
try {
|
184
|
+
const res = attemptLoad({
|
185
|
+
forceExports: !0
|
186
|
+
});
|
187
|
+
return didBabel = !0, res;
|
188
|
+
} catch (err) {
|
189
|
+
console.log("babel err", err, writtenContents), writtenContents = fileContents, process.env.DEBUG?.startsWith("tamagui") && console.log("Error parsing babel likely", err);
|
190
|
+
} finally {
|
191
|
+
dispose();
|
192
|
+
}
|
193
|
+
try {
|
194
|
+
return attemptLoad({
|
195
|
+
forceExports: !1
|
196
|
+
});
|
197
|
+
} catch (err) {
|
198
|
+
return process.env.TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD && (console.log(`
|
199
|
+
|
200
|
+
Tamagui attempted but failed to dynamically optimize components in:
|
201
|
+
${name}
|
202
|
+
`), console.log(err), console.log(
|
203
|
+
`At: ${loadModule}`,
|
204
|
+
`
|
205
|
+
didBabel: ${didBabel}`,
|
206
|
+
`
|
207
|
+
In:`,
|
208
|
+
writtenContents,
|
209
|
+
`
|
210
|
+
isDynamic: `,
|
211
|
+
isDynamic
|
212
|
+
)), [];
|
213
|
+
} finally {
|
214
|
+
dispose();
|
215
|
+
}
|
216
|
+
});
|
217
|
+
return cacheComponents[key] = info, info;
|
218
|
+
} catch (err) {
|
219
|
+
return console.log("Tamagui error bundling components", err.message, err.stack), null;
|
220
|
+
} finally {
|
221
|
+
unregister();
|
222
|
+
}
|
223
|
+
}
|
224
|
+
const esbuildit = (src, target) => esbuild.transformSync(src, {
|
225
|
+
...esbuildOptions,
|
226
|
+
...target === "modern" && {
|
227
|
+
target: "es2022",
|
228
|
+
jsx: "transform",
|
229
|
+
loader: "tsx",
|
230
|
+
platform: "neutral",
|
231
|
+
format: "esm"
|
232
|
+
}
|
233
|
+
}).code;
|
234
|
+
function getComponentStaticConfigByName(name, exported) {
|
235
|
+
const components = {};
|
236
|
+
try {
|
237
|
+
if (!exported || typeof exported != "object" || Array.isArray(exported))
|
238
|
+
throw new Error(`Invalid export from package ${name}: ${typeof exported}`);
|
239
|
+
for (const key in exported) {
|
240
|
+
const found = getTamaguiComponent(key, exported[key]);
|
241
|
+
if (found) {
|
242
|
+
const { Component, ...sc } = found.staticConfig;
|
243
|
+
components[key] = { staticConfig: sc };
|
244
|
+
}
|
245
|
+
}
|
246
|
+
} catch (err) {
|
247
|
+
process.env.TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD && (console.error(
|
248
|
+
`Tamagui failed getting components from ${name} (Disable error by setting environment variable TAMAGUI_ENABLE_WARN_DYNAMIC_LOAD=1)`
|
249
|
+
), console.error(err));
|
250
|
+
}
|
251
|
+
return components;
|
252
|
+
}
|
253
|
+
function getTamaguiComponent(name, Component) {
|
254
|
+
if (name[0].toUpperCase() !== name[0])
|
255
|
+
return;
|
256
|
+
if (Component?.staticConfig)
|
257
|
+
return Component;
|
258
|
+
}
|
259
|
+
function interopDefaultExport(mod) {
|
260
|
+
return mod?.default ?? mod;
|
261
|
+
}
|
262
|
+
const cacheComponents = {};
|
263
|
+
function transformAddExports(ast) {
|
264
|
+
const usedNames = /* @__PURE__ */ new Set();
|
265
|
+
return traverse(ast, {
|
266
|
+
ExportNamedDeclaration(nodePath) {
|
267
|
+
if (nodePath.node.specifiers)
|
268
|
+
for (const spec of nodePath.node.specifiers)
|
269
|
+
usedNames.add(
|
270
|
+
t.isIdentifier(spec.exported) ? spec.exported.name : spec.exported.value
|
271
|
+
);
|
272
|
+
}
|
273
|
+
}), traverse(ast, {
|
274
|
+
VariableDeclaration(nodePath) {
|
275
|
+
if (!t.isProgram(nodePath.parent))
|
276
|
+
return;
|
277
|
+
const decs = nodePath.node.declarations;
|
278
|
+
if (decs.length > 1)
|
279
|
+
return;
|
280
|
+
const [dec] = decs;
|
281
|
+
t.isIdentifier(dec.id) && dec.init && (usedNames.has(dec.id.name) || (usedNames.add(dec.id.name), nodePath.replaceWith(
|
282
|
+
t.exportNamedDeclaration(t.variableDeclaration("let", [dec]), [
|
283
|
+
t.exportSpecifier(t.identifier(dec.id.name), t.identifier(dec.id.name))
|
284
|
+
])
|
285
|
+
)));
|
286
|
+
}
|
287
|
+
}), generate(ast, {
|
288
|
+
concise: !1,
|
289
|
+
filename: "test.tsx",
|
290
|
+
retainLines: !1,
|
291
|
+
sourceMaps: !1
|
292
|
+
}).code;
|
293
|
+
}
|
294
|
+
export {
|
295
|
+
bundleConfig,
|
296
|
+
esbuildOptions,
|
297
|
+
getBundledConfig,
|
298
|
+
hasBundledConfigChanged,
|
299
|
+
loadComponents
|
300
|
+
};
|
301
|
+
//# sourceMappingURL=bundleConfig.js.map
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/extractor/bundleConfig.ts"],
|
4
|
+
"mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,UAAU,SAAS,SAAS,MAAM,UAAU,WAAW;AAEhE,OAAO,cAAc;AACrB,OAAO,cAAc;AACrB,YAAY,OAAO;AACnB,SAAS,OAAO,gBAAgB;AAEhC,OAAO,aAAa;AACpB,SAAS,WAAW,YAAY,qBAAqB;AAErD,SAAS,iBAAiB,wBAAwB;AAElD,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,6CAA6C;AAuBtD,MAAM,WAAW;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEM,sBAAsB;AAAA,EAC1B,QAAQ;AAAA,IACN,SAAS,GAAG,QAAQ,IAAI,aAAa,aAAa;AAAA,EACpD;AACF,GAEa,iBAAiB;AAAA,EAC5B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,GAAG;AACL;AAKA,IAAI,gBAAsC,MACtC,aAAa,IACb,aAAmC;AACvC,MAAM,gBAAgB,oBAAI,IAAc;AAEjC,SAAS,0BAA0B;AACxC,SAAI,eAAe,gBACV,MAET,aAAa,eACN;AACT;AAEA,eAAsB,iBAAiB,OAAuB,UAAU,IAAO;AAC7E,MAAI;AACF,UAAM,IAAI,QAAQ,CAAC,QAAQ;AACzB,oBAAc,IAAI,GAAG;AAAA,IACvB,CAAC;AAAA,WACQ,CAAC,iBAAiB;AAC3B,WAAO,MAAM,aAAa,KAAK;AAEjC,SAAO;AACT;AAEA,eAAsB,aAAa,OAAuB;AACxD,MAAI;AACF,iBAAa;AAEb,UAAM,cAAc,MAAM,SACtB,sCAAsC,MAAM,MAAM,IAClD,IACE,SAAS,KAAK,QAAQ,IAAI,GAAG,UAAU,GACvC,gBAAgB,KAAK,QAAQ,oBAAoB,GACjD,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe,GACrE,oBAAoB,eAAe;AAAA,MAAI,CAAC,oBAC5C;AAAA,QACE;AAAA,QACA,GAAG,gBACA,MAAM,GAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE,CAAC;AAAA,MAChC;AAAA,IACF;AAEA,IACE,QAAQ,IAAI,aAAa,iBACzB,QAAQ,IAAI,OAAO,WAAW,SAAS,KAGvC,QAAQ,IAAI,yBAAyB,WAAW;AAIlD,QAAI;AACF,YAAM,UAAU,MAAM;AAAA,IACxB,QAAQ;AAAA,IAER;AAEA,UAAM,QAAQ,KAAK,IAAI;AAEvB,UAAM,QAAQ,IAAI;AAAA,MAChB,MAAM,SACF;AAAA,QACE;AAAA,UACE,aAAa,CAAC,WAAW;AAAA,UACzB;AAAA,UACA,SAAS;AAAA,UACT,QAAQ;AAAA,UACR,GAAG;AAAA,QACL;AAAA,QACA,MAAM;AAAA,MACR,IACA;AAAA,MACJ,GAAG,eAAe,IAAI,CAAC,iBAAiB,MAC/B;AAAA,QACL;AAAA,UACE,aAAa,CAAC,eAAe;AAAA,UAC7B,gCAAgC;AAAA,UAChC;AAAA,UACA,SAAS,kBAAkB,CAAC;AAAA,UAC5B,QAAQ;AAAA,UACR,GAAG;AAAA,QACL;AAAA,QACA,MAAM;AAAA,MACR,CACD;AAAA,IACH,CAAC,GAED;AAAA,MACE,MAAM;AAAA,MACN;AAAA,wBACa,KAAK,IAAI,IAAI,KAAK;AAAA,IACjC,GACA;AAAA,MACE,MAAM;AAAA,MACN;AAAA,sBACgB,GAAG,GAAG,SAAS,QAAQ,IAAI,GAAG,aAAa,CAAC;AAAA,qBAC7C;AAAA,QACX,GAAG,kBAAkB,IAAI,CAAC,MAAM,IAAI,GAAG,GAAG,SAAS,QAAQ,IAAI,GAAG,CAAC,CAAC,EAAE;AAAA,MACxE,EAAE,KAAK;AAAA,cAAiB,CAAC;AAAA;AAAA,IAE7B;AAEA,QAAI;AACJ,UAAM,EAAE,WAAW,IAAI,gBAAgB,MAAM,QAAQ;AACrD,QAAI;AACF,YAAM,QAAQ,aAAa;AAAA,IAC7B,SAAS,KAAK;AAEZ,YAAM;AAAA,IACR,UAAE;AACA,iBAAW;AAAA,IACb;AAGA,QAAI,SAAS,IAAI,WAAW,OAAO,IAAI;AAKvC,QAJI,UAAU,OAAO,UAAU,CAAC,OAAO,WACrC,SAAS,OAAO,SAGd,CAAC;AACH,YAAM,IAAI,MAAM,cAAc,MAAM,EAAE;AAGxC,QAAI,aAAa,eAAe;AAAA,MAC9B,GAAG;AAAA,MACH,YAAY;AAAA,IACd,CAAC;AAED,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,wBAAwB,kBAAkB,KAAK,IAAI,CAAC,EAAE;AAIxE,eAAW,aAAa;AACtB,gBAAU,aACR,eAAe,kBAAkB,QAAQ,UAAU,UAAU,CAAC,GAE3D,UAAU,eACT,QAAQ,IAAI,OAAO,SAAS,SAAS,KAAK,QAAQ,IAAI,mBACxD,QAAQ;AAAA,QACN,sCAA4B,UAAU,UAAU,IAAI,KAAK;AAAA,UACvD;AAAA,QACF,CAAC,OAAO,KAAK,UAAU,iBAAiB,CAAC;AAAA,MAC3C;AAMN,UAAM,iBAAiB,eAAe;AAAA,MACpC,GAAG;AAAA,MACH,YAAY,CAAC,eAAe;AAAA,IAC9B,CAAC;AACD,IAAI,mBACF,eAAe,CAAC,EAAE,aAAa,iBAC/B,aAAa,CAAC,GAAG,YAAY,GAAG,cAAc,IAI9C,QAAQ,IAAI,aAAa,iBACzB,QAAQ,IAAI,OAAO,WAAW,SAAS,KAGvC,QAAQ,IAAI,qBAAqB,UAAU;AAG7C,UAAM,MAAM;AAAA,MACV;AAAA,MACA,aAAa,CAAC;AAAA,MACd,eAAe;AAAA,IACjB;AAEA,2BAAgB,KAET;AAAA,EACT,SAAS,KAAU;AACjB,YAAQ;AAAA,MACN,kCAAkC,KAAK,OAAO;AAAA,IAChD,GACI,QAAQ,IAAI,OAAO,SAAS,SAAS,KACvC,QAAQ,MAAM,IAAI,KAAK;AAAA,EAE3B,UAAE;AACA,iBAAa,IACb,cAAc,QAAQ,CAAC,OAAO,GAAG,CAAC,GAClC,cAAc,MAAM;AAAA,EACtB;AACF;AAEO,SAAS,eACd,OACA,eAAe,IACY;AAC3B,QAAM,oBAAoB,MAAM,YAE1B,MAAM,kBAAkB,KAAK,EAAE;AAErC,MAAI,CAAC,gBAAgB,gBAAgB,GAAG;AACtC,WAAO,gBAAgB,GAAG;AAG5B,QAAM,EAAE,WAAW,IAAI,gBAAgB,MAAM,UAAU;AAAA,IACrD,kBAAkB;AAAA,EACpB,CAAC;AAED,MAAI;AACF,UAAM,OAA2B,kBAAkB,QAAQ,CAAC,SAAS;AAGnE,YAAM,YADU,EADE,QAAQ,IAAI,KAED,cAEvB,eAAe,YAAY,aAAa,MAAM,OAAO,IAAI,IACzD,aAAa,YACf,KAAK,QAAQ,IAAI,GAAG,yBAAyB,SAAS,IAAI,CAAC,MAAM,IACjE;AACJ,UAAI,kBAAkB,cAClB,WAAW;AAEf,eAAS,YAAY,EAAE,cAAAA,gBAAe,GAAM,IAAI,CAAC,GAAG;AAElD,QAAI,cACF,kBAAkBA,gBACd,oBAAoB,WAAW,UAAU,cAAc,QAAQ,GAAG,IAAI,CAAC,IACvE,cAEJ,cAAc,YAAY,eAAe,GAEzC,QAAQ,UAAU;AAAA,UAChB,GAAG;AAAA,UACH,aAAa,CAAC,UAAU;AAAA,UACxB,SAAS;AAAA,UACT,OAAO;AAAA,YACL,gBAAgB,gBAAgB,gCAAgC;AAAA,UAClE;AAAA,UACA,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,gBAAgB;AAAA;AAAA,UAEhB,WAAW;AAAA,UACX,QAAQ;AAAA,YACN,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,QAAQ;AAAA,UACV;AAAA,QACF,CAAC,IAGC,QAAQ,IAAI,UAAU,aAExB,QAAQ,IAAI,cAAc,YAAY,QAAQ,QAAQ,UAAU,CAAC;AAGnE,cAAM,eAAe,QAAQ,UAAU;AAEvC,QAAKA,iBACH,iBAAiB,MAAM,YAAY;AAGrC,cAAM,aAAa;AAAA,UACjB;AAAA,UACA,qBAAqB,YAAY;AAAA,QACnC;AAEA,eAAO;AAAA,UACL,YAAY;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAEA,YAAM,UAAU,MAAM;AACpB,qBAAa,WAAW,UAAU;AAAA,MACpC;AAEA,UAAI;AACF,cAAM,MAAM,YAAY;AAAA,UACtB,cAAc;AAAA,QAChB,CAAC;AACD,0BAAW,IACJ;AAAA,MACT,SAAS,KAAK;AAEZ,gBAAQ,IAAI,aAAa,KAAK,eAAe,GAE7C,kBAAkB,cACd,QAAQ,IAAI,OAAO,WAAW,SAAS,KAEzC,QAAQ,IAAI,8BAA8B,GAAG;AAAA,MAEjD,UAAE;AACA,gBAAQ;AAAA,MACV;AAEA,UAAI;AACF,eAAO,YAAY;AAAA,UACjB,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,SAAS,KAAK;AACZ,eAAI,QAAQ,IAAI,qCAEd,QAAQ,IAAI;AAAA;AAAA;AAAA,IAGlB,IAAI;AAAA,CACP,GAES,QAAQ,IAAI,GAAG,GAEf,QAAQ;AAAA,UACN,OAAO,UAAU;AAAA,UACjB;AAAA,YAAe,QAAQ;AAAA,UACvB;AAAA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,UACA;AAAA,QACF,IAEK,CAAC;AAAA,MACV,UAAE;AACA,gBAAQ;AAAA,MACV;AAAA,IACF,CAAC;AACD,2BAAgB,GAAG,IAAI,MAChB;AAAA,EACT,SAAS,KAAU;AAEjB,mBAAQ,IAAI,qCAAqC,IAAI,SAAS,IAAI,KAAK,GAChE;AAAA,EACT,UAAE;AACA,eAAW;AAAA,EACb;AACF;AAEA,MAAM,YAAY,CAAC,KAAa,WACvB,QAAQ,cAAc,KAAK;AAAA,EAChC,GAAG;AAAA,EACH,GAAI,WAAW,YAAY;AAAA,IACzB,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACF,CAAC,EAAE;AAGL,SAAS,+BAA+B,MAAc,UAAe;AACnE,QAAM,aAA6D,CAAC;AACpE,MAAI;AACF,QAAI,CAAC,YAAY,OAAO,YAAa,YAAY,MAAM,QAAQ,QAAQ;AACrE,YAAM,IAAI,MAAM,+BAA+B,IAAI,KAAK,OAAO,QAAQ,EAAE;AAG3E,eAAW,OAAO,UAAU;AAC1B,YAAM,QAAQ,oBAAoB,KAAK,SAAS,GAAG,CAAC;AACpD,UAAI,OAAO;AAET,cAAM,EAAE,WAAW,GAAG,GAAG,IAAI,MAAM;AACnC,mBAAW,GAAG,IAAI,EAAE,cAAc,GAAG;AAAA,MACvC;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,IAAI,QAAQ,IAAI,qCACd,QAAQ;AAAA,MACN,0CAA0C,IAAI;AAAA,IAChD,GACA,QAAQ,MAAM,GAAG;AAAA,EAErB;AACA,SAAO;AACT;AAEA,SAAS,oBACP,MACA,WAC4C;AAC5C,MAAI,KAAK,CAAC,EAAE,YAAY,MAAM,KAAK,CAAC;AAClC;AAGF,MADqB,WAAW;AAE9B,WAAO;AAEX;AAEA,SAAS,qBAAqB,KAAU;AACtC,SAAO,KAAK,WAAW;AACzB;AAEA,MAAM,kBAAsD,CAAC;AAE7D,SAAS,oBAAoB,KAAa;AACxC,QAAM,YAAY,oBAAI,IAAY;AAIlC,kBAAS,KAAK;AAAA,IACZ,uBAAuB,UAAU;AAC/B,UAAI,SAAS,KAAK;AAChB,mBAAW,QAAQ,SAAS,KAAK;AAC/B,oBAAU;AAAA,YACR,EAAE,aAAa,KAAK,QAAQ,IAAI,KAAK,SAAS,OAAO,KAAK,SAAS;AAAA,UACrE;AAAA,IAGN;AAAA,EACF,CAAC,GAGD,SAAS,KAAK;AAAA,IACZ,oBAAoB,UAAU;AAE5B,UAAI,CAAC,EAAE,UAAU,SAAS,MAAM;AAAG;AACnC,YAAM,OAAO,SAAS,KAAK;AAC3B,UAAI,KAAK,SAAS;AAAG;AACrB,YAAM,CAAC,GAAG,IAAI;AACd,MAAK,EAAE,aAAa,IAAI,EAAE,KACrB,IAAI,SACL,UAAU,IAAI,IAAI,GAAG,IAAI,MAC7B,UAAU,IAAI,IAAI,GAAG,IAAI,GACzB,SAAS;AAAA,QACP,EAAE,uBAAuB,EAAE,oBAAoB,OAAO,CAAC,GAAG,CAAC,GAAG;AAAA,UAC5D,EAAE,gBAAgB,EAAE,WAAW,IAAI,GAAG,IAAI,GAAG,EAAE,WAAW,IAAI,GAAG,IAAI,CAAC;AAAA,QACxE,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC,GAGM,SAAS,KAAY;AAAA,IAC1B,SAAS;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,EACd,CAAC,EAAE;AACL;",
|
5
|
+
"names": ["forceExports"]
|
6
|
+
}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import vm from "vm";
|
2
|
+
import generate from "@babel/generator";
|
3
|
+
import * as t from "@babel/types";
|
4
|
+
import esbuild from "esbuild";
|
5
|
+
import { FAILED_EVAL } from "../constants";
|
6
|
+
import { evaluateAstNode } from "./evaluateAstNode";
|
7
|
+
function createEvaluator({
|
8
|
+
props,
|
9
|
+
staticNamespace,
|
10
|
+
sourcePath,
|
11
|
+
traversePath,
|
12
|
+
shouldPrintDebug
|
13
|
+
}) {
|
14
|
+
const evalFn = (n) => {
|
15
|
+
if (t.isIdentifier(n) && typeof staticNamespace[n.name] < "u")
|
16
|
+
return staticNamespace[n.name];
|
17
|
+
const evalContext = vm.createContext(staticNamespace), codeWithTypescriptAnnotations = `(${generate(n).code})`, code = esbuild.transformSync(codeWithTypescriptAnnotations, { loader: "tsx" }).code.replace(/;\n$/, "");
|
18
|
+
return shouldPrintDebug && console.log("evaluating", code), vm.runInContext(code, evalContext);
|
19
|
+
};
|
20
|
+
return (n) => evaluateAstNode(n, evalFn);
|
21
|
+
}
|
22
|
+
function createSafeEvaluator(attemptEval) {
|
23
|
+
return (n) => {
|
24
|
+
try {
|
25
|
+
return attemptEval(n);
|
26
|
+
} catch {
|
27
|
+
return FAILED_EVAL;
|
28
|
+
}
|
29
|
+
};
|
30
|
+
}
|
31
|
+
export {
|
32
|
+
createEvaluator,
|
33
|
+
createSafeEvaluator
|
34
|
+
};
|
35
|
+
//# sourceMappingURL=createEvaluator.js.map
|
@@ -0,0 +1,6 @@
|
|
1
|
+
{
|
2
|
+
"version": 3,
|
3
|
+
"sources": ["../../../src/extractor/createEvaluator.ts"],
|
4
|
+
"mappings": "AAAA,OAAO,QAAQ;AAEf,OAAO,cAAc;AAErB,YAAY,OAAO;AACnB,OAAO,aAAa;AAEpB,SAAS,mBAAmB;AAE5B,SAAS,uBAAuB;AAEzB,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AAED,QAAM,SAAS,CAAC,MAAc;AAE5B,QAAI,EAAE,aAAa,CAAC,KAAK,OAAO,gBAAgB,EAAE,IAAI,IAAM;AAC1D,aAAO,gBAAgB,EAAE,IAAI;AAE/B,UAAM,cAAc,GAAG,cAAc,eAAe,GAE9C,gCAAgC,IAAI,SAAS,CAAQ,EAAE,IAAI,KAC3D,OAAO,QACV,cAAc,+BAA+B,EAAE,QAAQ,MAAM,CAAC,EAC9D,KAAK,QAAQ,QAAQ,EAAE;AAE1B,WAAI,oBAEF,QAAQ,IAAI,cAAc,IAAI,GAEzB,GAAG,aAAa,MAAM,WAAW;AAAA,EAC1C;AAEA,SAAO,CAAC,MACC,gBAAgB,GAAG,MAAM;AAEpC;AAEO,SAAS,oBAAoB,aAAiC;AACnE,SAAO,CAAC,MAAc;AACpB,QAAI;AACF,aAAO,YAAY,CAAC;AAAA,IACtB,QAAc;AACZ,aAAO;AAAA,IACT;AAAA,EACF;AACF;",
|
5
|
+
"names": []
|
6
|
+
}
|