@tamagui/static 1.0.1-beta.164 → 1.0.1-beta.166
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/extractor/getStaticBindingsForScope.js +10 -4
- package/dist/extractor/getStaticBindingsForScope.js.map +2 -2
- package/dist/extractor/loadTamagui.js +3 -3
- package/dist/extractor/loadTamagui.js.map +2 -2
- package/package.json +14 -14
- package/src/extractor/getStaticBindingsForScope.ts +15 -5
- package/src/extractor/loadTamagui.ts +4 -4
|
@@ -99,6 +99,7 @@ function importModule(path) {
|
|
|
99
99
|
return promise;
|
|
100
100
|
}
|
|
101
101
|
async function getStaticBindingsForScope(scope, whitelist = [], sourcePath, bindingCache, shouldPrintDebug) {
|
|
102
|
+
var _a;
|
|
102
103
|
const bindings = scope.getAllBindings();
|
|
103
104
|
const ret = {};
|
|
104
105
|
if (shouldPrintDebug) {
|
|
@@ -129,12 +130,17 @@ async function getStaticBindingsForScope(scope, whitelist = [], sourcePath, bind
|
|
|
129
130
|
}
|
|
130
131
|
}
|
|
131
132
|
} catch (err) {
|
|
132
|
-
console.warn(
|
|
133
|
+
console.warn(
|
|
134
|
+
` | Skipping evaluating module: ${moduleName} ${err.message} (DEBUG=tamagui for stack)`
|
|
135
|
+
);
|
|
136
|
+
if ((_a = process.env.DEBUG) == null ? void 0 : _a.startsWith("tamagui")) {
|
|
137
|
+
console.log(err.stack);
|
|
138
|
+
}
|
|
133
139
|
}
|
|
134
140
|
}
|
|
135
141
|
}
|
|
136
142
|
if (!bindingCache) {
|
|
137
|
-
throw new Error("
|
|
143
|
+
throw new Error("BindingCache is a required param");
|
|
138
144
|
}
|
|
139
145
|
for (const k in bindings) {
|
|
140
146
|
const binding = bindings[k];
|
|
@@ -149,7 +155,7 @@ async function getStaticBindingsForScope(scope, whitelist = [], sourcePath, bind
|
|
|
149
155
|
const src = importModule(moduleName);
|
|
150
156
|
if (!src) {
|
|
151
157
|
console.log(
|
|
152
|
-
|
|
158
|
+
` | \u26A0\uFE0F Missing file ${moduleName} via ${sourcePath} import ${sourceModule.sourceModule}?`
|
|
153
159
|
);
|
|
154
160
|
return {};
|
|
155
161
|
}
|
|
@@ -163,7 +169,7 @@ async function getStaticBindingsForScope(scope, whitelist = [], sourcePath, bind
|
|
|
163
169
|
}
|
|
164
170
|
continue;
|
|
165
171
|
}
|
|
166
|
-
const { parent
|
|
172
|
+
const { parent } = binding.path;
|
|
167
173
|
if (!t.isVariableDeclaration(parent) || parent.kind !== "const") {
|
|
168
174
|
continue;
|
|
169
175
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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.js'\nimport { getSourceModule } from './getSourceModule.js'\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(
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAqB;AACrB,kBAAgD;AAGhD,QAAmB;AAEnB,6BAAgC;AAChC,6BAAgC;AAEhC,MAAM,gBAAgB,CAAC,SAAiB,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,GAAG;AAEnF,SAAS,kBAAkB,YAAoB,MAAc;AAC3D,QAAM,gBAAY,qBAAQ,UAAU;AACpC,MAAI,cAAc,IAAI,GAAG;AACvB,YAAI,qBAAQ,IAAI,MAAM,IAAI;AACxB,cAAQ;AAAA,IACV;AACA,eAAO,qBAAQ,WAAW,IAAI;AAAA,EAChC;AACA,SAAO;AACT;AAEA,MAAM,QAAQ,oBAAI,IAAI;AACtB,MAAM,UAAU,oBAAI,IAA0B;AAC9C,YAAY,MAAM;AAChB,MAAI,MAAM,MAAM;AACd,UAAM,MAAM;AAAA,EACd;AACF,GAAG,EAAE;AAEL,MAAM,UAAU,OAAG,kBAAK,WAAW,aAAa;AAEhD,IAAI,SAAS;AACb,MAAM,YAAQ,2BAAK,SAAS,CAAC,GAAG;AAAA,EAC9B,UAAU,CAAC,MAAM,kBAAkB;AAAA,EACnC,UAAU;AAAA,EACV,OAAO;AACT,CAAC;AAEM,SAAS,oBAAoB;AAClC,MAAI;AAAQ;AACZ,QAAM,mBAAmB;AACzB,QAAM,MAAM;AACZ,QAAM,WAAW;AACjB,QAAM,KAAK;AACX,WAAS;AACX;AAEA,QAAQ,KAAK,WAAW,iBAAiB;AACzC,QAAQ,KAAK,UAAU,iBAAiB;AACxC,QAAQ,KAAK,cAAc,iBAAiB;AAE5C,SAAS,aAAa,MAAc;AAClC,MAAI,QAAQ,IAAI,IAAI,GAAG;AACrB,WAAO,QAAQ,IAAI,IAAI;AAAA,EACzB;AACA,QAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AACxC,QAAI,MAAM,IAAI,IAAI,GAAG;AACnB,aAAO,MAAM,IAAI,IAAI;AAAA,IACvB;AACA,UAAM,WAAW,CAAC,QAAa;AAC7B,UAAI,CAAC;AAAK;AACV,UAAI,OAAO,QAAQ;AAAU;AAC7B,UAAI,IAAI,OAAO,KAAK;AAClB,YAAI,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;AAC3B;AAAA,MACF;AACA,YAAM,eAAe,WAAW,QAAQ;AACxC,YAAM,MAAM,KAAK,MAAM,GAAG;AAC1B,YAAM,IAAI,MAAM,GAAG;AACnB,UAAI,GAAG;AAAA,IACT;AACA,UAAM,KAAK,WAAW,QAAQ;AAC9B,UAAM,KAAK,GAAG,KAAK,QAAQ,OAAO,EAAE,GAAG;AAAA,EACzC,CAAC;AACD,UAAQ,IAAI,MAAM,OAAO;AACzB,SAAO;AACT;AAEA,eAAsB,0BACpB,OACA,YAAsB,CAAC,GACvB,YACA,cACA,kBAC8B;
|
|
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.js'\nimport { getSourceModule } from './getSourceModule.js'\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: any) {\n // eslint-disable-next-line no-console\n console.warn(\n ` | Skipping evaluating module: ${moduleName} ${err.message} (DEBUG=tamagui for stack)`\n )\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(err.stack)\n }\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 // eslint-disable-next-line no-console\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 } = 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 // eslint-disable-next-line no-console\n console.error('dec.id.start/end is not a number')\n continue\n }\n\n if (!t.isIdentifier(dec.id)) {\n // eslint-disable-next-line no-console\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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -73,13 +73,13 @@ async function loadTamagui(props) {
|
|
|
73
73
|
(0, import_cli_color.colorLog)(
|
|
74
74
|
import_cli_color.Color.FgYellow,
|
|
75
75
|
`
|
|
76
|
-
|
|
76
|
+
Tamagui built config and components:`
|
|
77
77
|
);
|
|
78
78
|
(0, import_cli_color.colorLog)(
|
|
79
79
|
import_cli_color.Color.Dim,
|
|
80
80
|
`
|
|
81
|
-
- Config: ${configOutPath}
|
|
82
|
-
- Components: ${componentOutPaths.join(", ")}
|
|
81
|
+
- Config: ${(0, import_path.relative)(process.cwd(), configOutPath)}
|
|
82
|
+
- Components: ${(0, import_path.relative)(process.cwd(), componentOutPaths.join(", "))}
|
|
83
83
|
`
|
|
84
84
|
);
|
|
85
85
|
await Promise.all([
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/extractor/loadTamagui.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-console */\nimport { basename, dirname, join, sep } from 'path'\n\nimport { Color, colorLog } from '@tamagui/cli-color'\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, stat, writeFile } from 'fs-extra'\n\nimport { SHOULD_DEBUG } from '../constants.js'\nimport { getNameToPaths, registerRequire, unregisterRequire } from '../require.js'\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 colorLog(\n Color.FgYellow,\n `\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-console */\nimport { basename, dirname, join, relative, sep } from 'path'\n\nimport { Color, colorLog } from '@tamagui/cli-color'\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, stat, writeFile } from 'fs-extra'\n\nimport { SHOULD_DEBUG } from '../constants.js'\nimport { getNameToPaths, registerRequire, unregisterRequire } from '../require.js'\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 colorLog(\n Color.FgYellow,\n `\nTamagui built config and components:`\n )\n colorLog(\n Color.Dim,\n `\n - Config: ${relative(process.cwd(), configOutPath)}\n - Components: ${relative(process.cwd(), componentOutPaths.join(', '))}\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\n void writeFile(lockFile, '')\n\n if (process.env.DEBUG?.startsWith('tamagui')) {\n console.log(`Building`, options.entryPoints)\n }\n\n const tsconfig = join(__dirname, '..', '..', 'tamagui.tsconfig.json')\n\n return esbuild.build({\n bundle: true,\n ...options,\n format: 'cjs',\n target: 'node18',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n keepNames: true,\n platform: 'node',\n tsconfig,\n loader: {\n '.js': 'jsx',\n },\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
6
|
"names": ["esbuild"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/static",
|
|
3
|
-
"version": "1.0.1-beta.
|
|
3
|
+
"version": "1.0.1-beta.166",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist",
|
|
@@ -37,17 +37,17 @@
|
|
|
37
37
|
"@babel/runtime": "^7.18.9",
|
|
38
38
|
"@babel/traverse": "^7.18.11",
|
|
39
39
|
"@expo/match-media": "^0.3.0",
|
|
40
|
-
"@tamagui/build": "^1.0.1-beta.
|
|
41
|
-
"@tamagui/cli-color": "^1.0.1-beta.
|
|
42
|
-
"@tamagui/config-default-node": "^1.0.1-beta.
|
|
43
|
-
"@tamagui/core-node": "^1.0.1-beta.
|
|
44
|
-
"@tamagui/fake-react-native": "^1.0.1-beta.
|
|
45
|
-
"@tamagui/helpers": "^1.0.1-beta.
|
|
46
|
-
"@tamagui/helpers-node": "^1.0.1-beta.
|
|
47
|
-
"@tamagui/patch-rnw": "^1.0.1-beta.
|
|
48
|
-
"@tamagui/proxy-worm": "^1.0.1-beta.
|
|
49
|
-
"@tamagui/react-native-svg": "^1.0.1-beta.
|
|
50
|
-
"@tamagui/shorthands": "^1.0.1-beta.
|
|
40
|
+
"@tamagui/build": "^1.0.1-beta.166",
|
|
41
|
+
"@tamagui/cli-color": "^1.0.1-beta.166",
|
|
42
|
+
"@tamagui/config-default-node": "^1.0.1-beta.166",
|
|
43
|
+
"@tamagui/core-node": "^1.0.1-beta.166",
|
|
44
|
+
"@tamagui/fake-react-native": "^1.0.1-beta.166",
|
|
45
|
+
"@tamagui/helpers": "^1.0.1-beta.166",
|
|
46
|
+
"@tamagui/helpers-node": "^1.0.1-beta.166",
|
|
47
|
+
"@tamagui/patch-rnw": "^1.0.1-beta.166",
|
|
48
|
+
"@tamagui/proxy-worm": "^1.0.1-beta.166",
|
|
49
|
+
"@tamagui/react-native-svg": "^1.0.1-beta.166",
|
|
50
|
+
"@tamagui/shorthands": "^1.0.1-beta.166",
|
|
51
51
|
"babel-literal-to-ast": "^2.1.0",
|
|
52
52
|
"esbuild": "^0.15.6",
|
|
53
53
|
"esbuild-register": "^3.3.3",
|
|
@@ -55,8 +55,8 @@
|
|
|
55
55
|
"fs-extra": "^10.1.0",
|
|
56
56
|
"invariant": "^2.2.4",
|
|
57
57
|
"lodash": "^4.17.21",
|
|
58
|
-
"react-native-web-lite": "^1.0.1-beta.
|
|
59
|
-
"tamagui": "^1.0.1-beta.
|
|
58
|
+
"react-native-web-lite": "^1.0.1-beta.166",
|
|
59
|
+
"tamagui": "^1.0.1-beta.166"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@babel/plugin-syntax-typescript": "^7.18.6",
|
|
@@ -119,14 +119,21 @@ export async function getStaticBindingsForScope(
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
-
} catch (err) {
|
|
123
|
-
|
|
122
|
+
} catch (err: any) {
|
|
123
|
+
// eslint-disable-next-line no-console
|
|
124
|
+
console.warn(
|
|
125
|
+
` | Skipping evaluating module: ${moduleName} ${err.message} (DEBUG=tamagui for stack)`
|
|
126
|
+
)
|
|
127
|
+
if (process.env.DEBUG?.startsWith('tamagui')) {
|
|
128
|
+
// eslint-disable-next-line no-console
|
|
129
|
+
console.log(err.stack)
|
|
130
|
+
}
|
|
124
131
|
}
|
|
125
132
|
}
|
|
126
133
|
}
|
|
127
134
|
|
|
128
135
|
if (!bindingCache) {
|
|
129
|
-
throw new Error('
|
|
136
|
+
throw new Error('BindingCache is a required param')
|
|
130
137
|
}
|
|
131
138
|
|
|
132
139
|
for (const k in bindings) {
|
|
@@ -147,8 +154,9 @@ export async function getStaticBindingsForScope(
|
|
|
147
154
|
if (isOnWhitelist) {
|
|
148
155
|
const src = importModule(moduleName)
|
|
149
156
|
if (!src) {
|
|
157
|
+
// eslint-disable-next-line no-console
|
|
150
158
|
console.log(
|
|
151
|
-
|
|
159
|
+
` | ⚠️ Missing file ${moduleName} via ${sourcePath} import ${sourceModule.sourceModule}?`
|
|
152
160
|
)
|
|
153
161
|
return {}
|
|
154
162
|
}
|
|
@@ -163,7 +171,7 @@ export async function getStaticBindingsForScope(
|
|
|
163
171
|
continue
|
|
164
172
|
}
|
|
165
173
|
|
|
166
|
-
const { parent
|
|
174
|
+
const { parent } = binding.path
|
|
167
175
|
|
|
168
176
|
if (!t.isVariableDeclaration(parent) || parent.kind !== 'const') {
|
|
169
177
|
continue
|
|
@@ -180,11 +188,13 @@ export async function getStaticBindingsForScope(
|
|
|
180
188
|
|
|
181
189
|
// missing start/end will break caching
|
|
182
190
|
if (typeof dec.id.start !== 'number' || typeof dec.id.end !== 'number') {
|
|
191
|
+
// eslint-disable-next-line no-console
|
|
183
192
|
console.error('dec.id.start/end is not a number')
|
|
184
193
|
continue
|
|
185
194
|
}
|
|
186
195
|
|
|
187
196
|
if (!t.isIdentifier(dec.id)) {
|
|
197
|
+
// eslint-disable-next-line no-console
|
|
188
198
|
console.error('dec is not an identifier')
|
|
189
199
|
continue
|
|
190
200
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
|
-
import { basename, dirname, join, sep } from 'path'
|
|
2
|
+
import { basename, dirname, join, relative, sep } from 'path'
|
|
3
3
|
|
|
4
4
|
import { Color, colorLog } from '@tamagui/cli-color'
|
|
5
5
|
import { getDefaultTamaguiConfig } from '@tamagui/config-default-node'
|
|
@@ -72,13 +72,13 @@ export async function loadTamagui(props: Props): Promise<TamaguiProjectInfo> {
|
|
|
72
72
|
colorLog(
|
|
73
73
|
Color.FgYellow,
|
|
74
74
|
`
|
|
75
|
-
|
|
75
|
+
Tamagui built config and components:`
|
|
76
76
|
)
|
|
77
77
|
colorLog(
|
|
78
78
|
Color.Dim,
|
|
79
79
|
`
|
|
80
|
-
- Config: ${configOutPath}
|
|
81
|
-
- Components: ${componentOutPaths.join(', ')}
|
|
80
|
+
- Config: ${relative(process.cwd(), configOutPath)}
|
|
81
|
+
- Components: ${relative(process.cwd(), componentOutPaths.join(', '))}
|
|
82
82
|
`
|
|
83
83
|
)
|
|
84
84
|
|