@tamagui/static 1.0.1-beta.143 → 1.0.1-beta.146
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/extractor/loadTamagui.js +5 -4
- package/dist/cjs/extractor/loadTamagui.js.map +2 -2
- package/dist/esm/extractor/loadTamagui.js +5 -4
- package/dist/esm/extractor/loadTamagui.js.map +2 -2
- package/dist/jsx/extractor/loadTamagui.js +5 -4
- package/dist/jsx/extractor/loadTamagui.js.map +2 -2
- package/package.json +12 -11
- package/src/extractor/loadTamagui.ts +5 -3
- package/types/extractor/createExtractor.d.ts +1 -13
|
@@ -62,13 +62,13 @@ async function loadTamagui(props) {
|
|
|
62
62
|
} catch {
|
|
63
63
|
}
|
|
64
64
|
await Promise.all([
|
|
65
|
-
props.config ? buildTamaguiConfig({
|
|
65
|
+
props.config ? buildTamaguiConfig(props, {
|
|
66
66
|
entryPoints: [configEntry],
|
|
67
67
|
external,
|
|
68
68
|
outfile: configOutPath
|
|
69
69
|
}) : null,
|
|
70
70
|
...baseComponents.map((componentModule, i) => {
|
|
71
|
-
return buildTamaguiConfig({
|
|
71
|
+
return buildTamaguiConfig(props, {
|
|
72
72
|
entryPoints: [componentModule],
|
|
73
73
|
external,
|
|
74
74
|
outfile: componentOutPaths[i]
|
|
@@ -95,7 +95,7 @@ async function loadTamagui(props) {
|
|
|
95
95
|
resolver(cache[key]);
|
|
96
96
|
return cache[key];
|
|
97
97
|
}
|
|
98
|
-
async function buildTamaguiConfig(options, aliases) {
|
|
98
|
+
async function buildTamaguiConfig(props, options, aliases) {
|
|
99
99
|
var _a, _b;
|
|
100
100
|
const alias = require("@tamagui/core-node").aliasPlugin;
|
|
101
101
|
const lockFile = (0, import_path.join)((0, import_path.dirname)(options.outfile), (0, import_path.basename)(options.outfile, ".lock"));
|
|
@@ -141,7 +141,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
141
141
|
external: true
|
|
142
142
|
};
|
|
143
143
|
});
|
|
144
|
-
build.onResolve({ filter: /^(react-native)$/ }, (args) => {
|
|
144
|
+
build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
|
|
145
145
|
return {
|
|
146
146
|
path: "react-native-web-lite",
|
|
147
147
|
external: true
|
|
@@ -153,6 +153,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
153
153
|
"react-native-svg": require.resolve("@tamagui/react-native-svg"),
|
|
154
154
|
"react-native-safe-area-context": require.resolve("@tamagui/fake-react-native"),
|
|
155
155
|
"react-native-gesture-handler": require.resolve("@tamagui/proxy-worm"),
|
|
156
|
+
"react-native-reanimated": require.resolve("@tamagui/proxy-worm"),
|
|
156
157
|
...aliases
|
|
157
158
|
})
|
|
158
159
|
]
|
|
@@ -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 { 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({\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return buildTamaguiConfig({\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 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)$/ }, (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 ...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": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA6C;AAE7C,iCAAwC;AAExC,uBAA8B;AAC9B,qBAAoB;AACpB,sBAA+D;AAE/D,uBAA6B;AAC7B,qBAAmE;AAcnE,MAAM,QAAQ,CAAC;AAIf,2BAAkC,OAA2C;AA5B7E;AA6BE,QAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,MAAM,MAAM;AACd,QAAI,MAAM,gBAAgB,SAAS;AACjC,aAAO,MAAM,MAAM;AAAA,IACrB;AACA,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,WAAqB,MAAM;AAAA,EAAC;AAChC,QAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;AAChC,eAAW;AAAA,EACb,CAAC;AAED,QAAM,SAAS,sBAAK,QAAQ,IAAI,GAAG,QAAQ,cAAc;AACzD,QAAM,gBAAgB,sBAAK,QAAQ,mBAAmB;AACtD,QAAM,eAAe,MAAM,WAAW,SAAS,eAAe;AAC9D,QAAM,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe;AAC3E,QAAM,oBAAoB,eAAe,IAAI,CAAC,oBAC5C,sBACE,QACA,GAAG,gBACA,MAAM,eAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE,wBAC/B,CACF;AAEA,QAAM,WAAW,CAAC,iBAAiB,sBAAsB,SAAS,WAAW;AAC7E,QAAM,cAAc,MAAM,SAAS,sBAAK,QAAQ,IAAI,GAAG,MAAM,MAAM,IAAI;AAEvE,MAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,YAAQ,IAAI,yBAAyB,WAAW;AAAA,EAClD;AAGA,MAAI;AACF,UAAM,+BAAU,MAAM;AAAA,EACxB,QAAE;AAAA,EAEF;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,MAAM,SACF,mBAAmB;AAAA,
|
|
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": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAA6C;AAE7C,iCAAwC;AAExC,uBAA8B;AAC9B,qBAAoB;AACpB,sBAA+D;AAE/D,uBAA6B;AAC7B,qBAAmE;AAcnE,MAAM,QAAQ,CAAC;AAIf,2BAAkC,OAA2C;AA5B7E;AA6BE,QAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,MAAM,MAAM;AACd,QAAI,MAAM,gBAAgB,SAAS;AACjC,aAAO,MAAM,MAAM;AAAA,IACrB;AACA,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,WAAqB,MAAM;AAAA,EAAC;AAChC,QAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;AAChC,eAAW;AAAA,EACb,CAAC;AAED,QAAM,SAAS,sBAAK,QAAQ,IAAI,GAAG,QAAQ,cAAc;AACzD,QAAM,gBAAgB,sBAAK,QAAQ,mBAAmB;AACtD,QAAM,eAAe,MAAM,WAAW,SAAS,eAAe;AAC9D,QAAM,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe;AAC3E,QAAM,oBAAoB,eAAe,IAAI,CAAC,oBAC5C,sBACE,QACA,GAAG,gBACA,MAAM,eAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE,wBAC/B,CACF;AAEA,QAAM,WAAW,CAAC,iBAAiB,sBAAsB,SAAS,WAAW;AAC7E,QAAM,cAAc,MAAM,SAAS,sBAAK,QAAQ,IAAI,GAAG,MAAM,MAAM,IAAI;AAEvE,MAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,YAAQ,IAAI,yBAAyB,WAAW;AAAA,EAClD;AAGA,MAAI;AACF,UAAM,+BAAU,MAAM;AAAA,EACxB,QAAE;AAAA,EAEF;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,MAAM,SACF,mBAAmB,OAAO;AAAA,MACxB,aAAa,CAAC,WAAW;AAAA,MACzB;AAAA,MACA,SAAS;AAAA,IACX,CAAC,IACD;AAAA,IACJ,GAAG,eAAe,IAAI,CAAC,iBAAiB,MAAM;AAC5C,aAAO,mBAAmB,OAAO;AAAA,QAC/B,aAAa,CAAC,eAAe;AAAA,QAC7B;AAAA,QACA,SAAS,kBAAkB;AAAA,MAC7B,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AAED,MAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,YAAQ,IAAI,eAAe;AAAA,EAC7B;AAEA,QAAM,WAAW,QAAQ,oBAAoB;AAE7C,sCAAgB;AAChB,QAAM,SAAS,QAAQ,aAAa,EAAE;AACtC,wCAAkB;AAElB,QAAM,aAAa;AAAA,IACjB,GAAG,eAAe,iBAAiB;AAAA,IACnC,GAAI,gBAAgB,2BAA2B,CAAC,QAAQ,CAAC;AAAA,EAC3D;AAEA,QAAM,OAAO;AAAA,IACX;AAAA,IACA,aAAa,CAAC;AAAA,IACd,eAAe;AAAA,EACjB;AAGA,sCAAc,MAAM,KAAK,aAAa;AAEtC,WAAS,MAAM,IAAI;AAEnB,SAAO,MAAM;AACf;AAEA,kCACE,OACA,SACA,SACA;AAxHF;AAyHE,QAAM,QAAQ,QAAQ,oBAAoB,EAAE;AAE5C,QAAM,WAAW,sBAAK,yBAAQ,QAAQ,OAAO,GAAG,0BAAS,QAAQ,SAAS,OAAO,CAAC;AAClF,QAAM,WAAW,MAAM,0BAAK,QAAQ,EAAE,MAAM,MAAM;AAAA,EAElD,CAAC;AACD,QAAM,cAAc,CAAC,WACjB,WACA,IAAI,KAAK,EAAE,QAAQ,IAAI,IAAI,KAAK,SAAS,KAAK,EAAE,QAAQ;AAC5D,MAAI,cAAc,KAAK;AACrB,QAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,cAAQ,IAAI,8BAA8B,QAAQ,WAAW;AAAA,IAC/D;AACA,QAAI,QAAQ;AACZ,WAAO,SAAS;AACd,UAAI,MAAM,gCAAW,QAAQ,OAAO,GAAG;AACrC;AAAA,MACF,OAAO;AACL,cAAM,IAAI,QAAQ,CAAC,QAAQ,WAAW,KAAK,EAAE,CAAC;AAAA,MAChD;AAAA,IACF;AAAA,EACF;AACA,iCAAU,UAAU,EAAE;AACtB,MAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,YAAQ,IAAI,YAAY,QAAQ,WAAW;AAAA,EAC7C;AACA,SAAO,uBAAQ,MAAM;AAAA,IACnB,QAAQ;AAAA,IACR,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,MACN,OAAO;AAAA,IACT;AAAA,IACA,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,SAAS;AAAA,MACP;AAAA,QACE,MAAM;AAAA,QACN,MAAM,OAAO;AACX,gBAAM,UAAU,EAAE,QAAQ,iBAAiB,GAAG,CAAC,SAAS;AACtD,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAED,gBAAM,UAAU,EAAE,QAAQ,oCAAoC,GAAG,CAAC,SAAS;AACzE,mBAAO;AAAA,cACL,MAAM;AAAA,cACN,UAAU;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,oBAAoC;AAAA,QACpC,kCAAkD;AAAA,QAClD,gCAAgD;AAAA,QAChD,2BAA2C;AAAA,QAC3C,GAAG;AAAA,MACL,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAGO,yBAAyB,OAAkC;AAChE,QAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,MAAM,MAAM;AACd,WAAO,MAAM;AAAA,EACf;AAEA,QAAM,EAAE,eAAe,QAAQ,4BAA4B,EAAE,SAAS;AAAA,IACpE,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAED,MAAI;AACF,wCAAgB;AAIhB,YAAQ,IAAI,YAAY;AAExB,QAAI,OAAO,WAAW,eAAe,aAAa;AAEhD,iBAAW,aAAa,QAAQ,IAAI,aAAa;AAAA,IACnD;AAEA,QAAI;AAEF,UAAI,gBAA8C;AAElD,UAAI,MAAM,QAAQ;AAChB,cAAM,aAAa,sBAAK,QAAQ,IAAI,GAAG,MAAM,MAAM;AACnD,cAAM,MAAM,QAAQ,UAAU;AAC9B,wBAAiB,IAAI,cAAc;AACnC,YAAI,CAAC,iBAAiB,CAAC,cAAc,QAAQ;AAC3C,gBAAM,WAA2B,AAAhB,QAAQ,QAAQ;AACjC,gBAAM,IAAI,MAAM,8BAA8B,UAAU;AAAA,QAC1D;AAAA,MACF;AAEA,YAAM,aAAa,eAAe,MAAM,UAAU;AAGlD,cAAQ,IAAI,YAAY;AAGxB,UAAI,eAAe;AACjB,4CAAc,aAAa;AAAA,MAC7B;AAEA,YAAM,OAAO;AAAA,QACX;AAAA,QACA;AAAA,QACA,aAAa,mCAAe;AAAA,MAC9B;AAAA,IACF,SAAS,KAAP;AACA,UAAI,eAAe,OAAO;AACxB,gBAAQ,KACN,8GACF;AACA,gBAAQ,IAAI;AAAA;AAAA,MAAW,IAAI;AAAA;AAAA,CAAa;AACxC,YAAI,+BAAc;AAChB,kBAAQ,IAAI,IAAI,KAAK;AAAA,QACvB;AAAA,MACF,OAAO;AACL,gBAAQ,MAAM,mCAAmC,GAAG;AAAA,MACtD;AACA,aAAO;AAAA,QACL,YAAY,CAAC;AAAA,QACb,eAAe,wDAAwB;AAAA,QACvC,aAAa,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,MAAM;AAAA,EACf,SAAS,KAAP;AACA,YAAQ,IAAI,yBAAyB,GAAG;AACxC,UAAM;AAAA,EACR,UAAE;AACA,eAAW;AACX,0CAAkB;AAAA,EACpB;AACF;AAEA,8BAA8B,KAAU;AACtC,SAAO,4BAAK,YAAW;AACzB;AAEA,MAAM,kBAAkB,CAAC;AAEzB,wBAAwB,mBAA6B;AACnD,QAAM,MAAM,kBAAkB,KAAK,EAAE;AACrC,MAAI,gBAAgB,MAAM;AACxB,WAAO,gBAAgB;AAAA,EACzB;AACA,MAAI;AACF,UAAM,kBAAkB,kBAAkB,IAAI,CAAC,SAAS;AACtD,aAAO,qBAAqB,QAAQ,IAAI,CAAC;AAAA,IAC3C,CAAC;AACD,UAAM,MAAM,2BAA2B,eAAe;AACtD,oBAAgB,OAAO;AACvB,WAAO;AAAA,EACT,SAAS,KAAP;AACA,YAAQ,IAAI,qCAAqC,IAAI,SAAS,IAAI,KAAK;AAAA,EACzE;AACF;AAEA,oCAAoC,UAAiB;AACnD,QAAM,aAAa,CAAC;AACpB,aAAW,YAAY,UAAU;AAC/B,QAAI;AACF,iBAAW,iBAAiB,UAAU;AACpC,cAAM,QAAQ,oBAAoB,eAAe,SAAS,cAAc;AACxE,YAAI,OAAO;AAET,gBAAM,EAAE,WAAW,4BAA4B,OAAO,MAAM;AAC5D,iBAAO,OAAO,YAAY,EAAE,CAAC,gBAAgB,EAAE,cAAc,GAAG,EAAE,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,IACF,SAAS,KAAP;AACA,cAAQ,MAAM,mCAAmC;AACjD,UAAI,eAAe,OAAO;AACxB,gBAAQ,MAAM,IAAI,SAAS,IAAI,KAAK;AAAA,MACtC,OAAO;AACL,gBAAQ,MAAM,GAAG;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,6BACE,MACA,WAC4C;AAC5C,MAAI,KAAK,GAAG,YAAY,MAAM,KAAK,IAAI;AACrC;AAAA,EACF;AACA,QAAM,eAAe,uCAAW;AAChC,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -35,13 +35,13 @@ async function loadTamagui(props) {
|
|
|
35
35
|
} catch {
|
|
36
36
|
}
|
|
37
37
|
await Promise.all([
|
|
38
|
-
props.config ? buildTamaguiConfig({
|
|
38
|
+
props.config ? buildTamaguiConfig(props, {
|
|
39
39
|
entryPoints: [configEntry],
|
|
40
40
|
external,
|
|
41
41
|
outfile: configOutPath
|
|
42
42
|
}) : null,
|
|
43
43
|
...baseComponents.map((componentModule, i) => {
|
|
44
|
-
return buildTamaguiConfig({
|
|
44
|
+
return buildTamaguiConfig(props, {
|
|
45
45
|
entryPoints: [componentModule],
|
|
46
46
|
external,
|
|
47
47
|
outfile: componentOutPaths[i]
|
|
@@ -68,7 +68,7 @@ async function loadTamagui(props) {
|
|
|
68
68
|
resolver(cache[key]);
|
|
69
69
|
return cache[key];
|
|
70
70
|
}
|
|
71
|
-
async function buildTamaguiConfig(options, aliases) {
|
|
71
|
+
async function buildTamaguiConfig(props, options, aliases) {
|
|
72
72
|
var _a, _b;
|
|
73
73
|
const alias = require("@tamagui/core-node").aliasPlugin;
|
|
74
74
|
const lockFile = join(dirname(options.outfile), basename(options.outfile, ".lock"));
|
|
@@ -114,7 +114,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
114
114
|
external: true
|
|
115
115
|
};
|
|
116
116
|
});
|
|
117
|
-
build.onResolve({ filter: /^(react-native)$/ }, (args) => {
|
|
117
|
+
build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
|
|
118
118
|
return {
|
|
119
119
|
path: "react-native-web-lite",
|
|
120
120
|
external: true
|
|
@@ -126,6 +126,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
126
126
|
"react-native-svg": require.resolve("@tamagui/react-native-svg"),
|
|
127
127
|
"react-native-safe-area-context": require.resolve("@tamagui/fake-react-native"),
|
|
128
128
|
"react-native-gesture-handler": require.resolve("@tamagui/proxy-worm"),
|
|
129
|
+
"react-native-reanimated": require.resolve("@tamagui/proxy-worm"),
|
|
129
130
|
...aliases
|
|
130
131
|
})
|
|
131
132
|
]
|
|
@@ -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 { 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({\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return buildTamaguiConfig({\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 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)$/ }, (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 ...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": "AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAcA,MAAM,QAAQ,CAAC;AAIf,2BAAkC,OAA2C;AA5B7E;AA6BE,QAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,MAAM,MAAM;AACd,QAAI,MAAM,gBAAgB,SAAS;AACjC,aAAO,MAAM,MAAM;AAAA,IACrB;AACA,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,WAAqB,MAAM;AAAA,EAAC;AAChC,QAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;AAChC,eAAW;AAAA,EACb,CAAC;AAED,QAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,QAAQ,cAAc;AACzD,QAAM,gBAAgB,KAAK,QAAQ,mBAAmB;AACtD,QAAM,eAAe,MAAM,WAAW,SAAS,eAAe;AAC9D,QAAM,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe;AAC3E,QAAM,oBAAoB,eAAe,IAAI,CAAC,oBAC5C,KACE,QACA,GAAG,gBACA,MAAM,GAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE,wBAC/B,CACF;AAEA,QAAM,WAAW,CAAC,iBAAiB,sBAAsB,SAAS,WAAW;AAC7E,QAAM,cAAc,MAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,MAAM,MAAM,IAAI;AAEvE,MAAI,cAAQ,IAAI,UAAZ,mBAAmB,WAAW,YAAY;AAC5C,YAAQ,IAAI,yBAAyB,WAAW;AAAA,EAClD;AAGA,MAAI;AACF,UAAM,UAAU,MAAM;AAAA,EACxB,QAAE;AAAA,EAEF;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,MAAM,SACF,mBAAmB;AAAA,
|
|
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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -34,13 +34,13 @@ async function loadTamagui(props) {
|
|
|
34
34
|
} catch {
|
|
35
35
|
}
|
|
36
36
|
await Promise.all([
|
|
37
|
-
props.config ? buildTamaguiConfig({
|
|
37
|
+
props.config ? buildTamaguiConfig(props, {
|
|
38
38
|
entryPoints: [configEntry],
|
|
39
39
|
external,
|
|
40
40
|
outfile: configOutPath
|
|
41
41
|
}) : null,
|
|
42
42
|
...baseComponents.map((componentModule, i) => {
|
|
43
|
-
return buildTamaguiConfig({
|
|
43
|
+
return buildTamaguiConfig(props, {
|
|
44
44
|
entryPoints: [componentModule],
|
|
45
45
|
external,
|
|
46
46
|
outfile: componentOutPaths[i]
|
|
@@ -67,7 +67,7 @@ async function loadTamagui(props) {
|
|
|
67
67
|
resolver(cache[key]);
|
|
68
68
|
return cache[key];
|
|
69
69
|
}
|
|
70
|
-
async function buildTamaguiConfig(options, aliases) {
|
|
70
|
+
async function buildTamaguiConfig(props, options, aliases) {
|
|
71
71
|
const alias = require("@tamagui/core-node").aliasPlugin;
|
|
72
72
|
const lockFile = join(dirname(options.outfile), basename(options.outfile, ".lock"));
|
|
73
73
|
const lockStat = await stat(lockFile).catch(() => {
|
|
@@ -112,7 +112,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
112
112
|
external: true
|
|
113
113
|
};
|
|
114
114
|
});
|
|
115
|
-
build.onResolve({ filter: /^(react-native)$/ }, (args) => {
|
|
115
|
+
build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
|
|
116
116
|
return {
|
|
117
117
|
path: "react-native-web-lite",
|
|
118
118
|
external: true
|
|
@@ -124,6 +124,7 @@ async function buildTamaguiConfig(options, aliases) {
|
|
|
124
124
|
"react-native-svg": require.resolve("@tamagui/react-native-svg"),
|
|
125
125
|
"react-native-safe-area-context": require.resolve("@tamagui/fake-react-native"),
|
|
126
126
|
"react-native-gesture-handler": require.resolve("@tamagui/proxy-worm"),
|
|
127
|
+
"react-native-reanimated": require.resolve("@tamagui/proxy-worm"),
|
|
127
128
|
...aliases
|
|
128
129
|
})
|
|
129
130
|
]
|
|
@@ -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 { 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({\n entryPoints: [configEntry],\n external,\n outfile: configOutPath,\n })\n : null,\n ...baseComponents.map((componentModule, i) => {\n return buildTamaguiConfig({\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 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)$/ }, (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 ...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": "AACA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AAcA,MAAM,QAAQ,CAAC;AAIf,2BAAkC,OAA2C;AAC3E,QAAM,MAAM,KAAK,UAAU,KAAK;AAChC,MAAI,MAAM,MAAM;AACd,QAAI,MAAM,gBAAgB,SAAS;AACjC,aAAO,MAAM,MAAM;AAAA,IACrB;AACA,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,WAAqB,MAAM;AAAA,EAAC;AAChC,QAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;AAChC,eAAW;AAAA,EACb,CAAC;AAED,QAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,QAAQ,cAAc;AACzD,QAAM,gBAAgB,KAAK,QAAQ,mBAAmB;AACtD,QAAM,eAAe,MAAM,WAAW,SAAS,eAAe;AAC9D,QAAM,iBAAiB,MAAM,WAAW,OAAO,CAAC,MAAM,MAAM,eAAe;AAC3E,QAAM,oBAAoB,eAAe,IAAI,CAAC,oBAC5C,KACE,QACA,GAAG,gBACA,MAAM,GAAG,EACT,KAAK,GAAG,EACR,QAAQ,gBAAgB,EAAE,wBAC/B,CACF;AAEA,QAAM,WAAW,CAAC,iBAAiB,sBAAsB,SAAS,WAAW;AAC7E,QAAM,cAAc,MAAM,SAAS,KAAK,QAAQ,IAAI,GAAG,MAAM,MAAM,IAAI;AAEvE,MAAI,QAAQ,IAAI,OAAO,WAAW,SAAS,GAAG;AAC5C,YAAQ,IAAI,yBAAyB,WAAW;AAAA,EAClD;AAGA,MAAI;AACF,UAAM,UAAU,MAAM;AAAA,EACxB,QAAE;AAAA,EAEF;AAEA,QAAM,QAAQ,IAAI;AAAA,IAChB,MAAM,SACF,mBAAmB;AAAA,
|
|
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
6
|
"names": []
|
|
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.146",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -38,15 +38,15 @@
|
|
|
38
38
|
"@babel/runtime": "^7.18.9",
|
|
39
39
|
"@babel/traverse": "^7.18.11",
|
|
40
40
|
"@expo/match-media": "^0.3.0",
|
|
41
|
-
"@tamagui/build": "^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/patch-rnw": "^1.0.1-beta.
|
|
47
|
-
"@tamagui/proxy-worm": "^1.0.1-beta.
|
|
48
|
-
"@tamagui/react-native-svg": "^1.0.1-beta.
|
|
49
|
-
"@tamagui/shorthands": "^1.0.1-beta.
|
|
41
|
+
"@tamagui/build": "^1.0.1-beta.146",
|
|
42
|
+
"@tamagui/config-default-node": "^1.0.1-beta.146",
|
|
43
|
+
"@tamagui/core-node": "^1.0.1-beta.146",
|
|
44
|
+
"@tamagui/fake-react-native": "^1.0.1-beta.146",
|
|
45
|
+
"@tamagui/helpers": "^1.0.1-beta.146",
|
|
46
|
+
"@tamagui/patch-rnw": "^1.0.1-beta.146",
|
|
47
|
+
"@tamagui/proxy-worm": "^1.0.1-beta.146",
|
|
48
|
+
"@tamagui/react-native-svg": "^1.0.1-beta.146",
|
|
49
|
+
"@tamagui/shorthands": "^1.0.1-beta.146",
|
|
50
50
|
"babel-literal-to-ast": "^2.1.0",
|
|
51
51
|
"esbuild": "^0.14.49",
|
|
52
52
|
"esbuild-register": "^3.3.3",
|
|
@@ -54,7 +54,8 @@
|
|
|
54
54
|
"fs-extra": "^10.1.0",
|
|
55
55
|
"invariant": "^2.2.4",
|
|
56
56
|
"lodash": "^4.17.21",
|
|
57
|
-
"
|
|
57
|
+
"react-native-web-lite": "^1.0.1-beta.146",
|
|
58
|
+
"tamagui": "^1.0.1-beta.146"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@babel/plugin-syntax-typescript": "^7.18.6",
|
|
@@ -70,14 +70,14 @@ export async function loadTamagui(props: Props): Promise<TamaguiProjectInfo> {
|
|
|
70
70
|
|
|
71
71
|
await Promise.all([
|
|
72
72
|
props.config
|
|
73
|
-
? buildTamaguiConfig({
|
|
73
|
+
? buildTamaguiConfig(props, {
|
|
74
74
|
entryPoints: [configEntry],
|
|
75
75
|
external,
|
|
76
76
|
outfile: configOutPath,
|
|
77
77
|
})
|
|
78
78
|
: null,
|
|
79
79
|
...baseComponents.map((componentModule, i) => {
|
|
80
|
-
return buildTamaguiConfig({
|
|
80
|
+
return buildTamaguiConfig(props, {
|
|
81
81
|
entryPoints: [componentModule],
|
|
82
82
|
external,
|
|
83
83
|
outfile: componentOutPaths[i],
|
|
@@ -115,6 +115,7 @@ export async function loadTamagui(props: Props): Promise<TamaguiProjectInfo> {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
async function buildTamaguiConfig(
|
|
118
|
+
props: Props,
|
|
118
119
|
options: Partial<esbuild.BuildOptions> & { outfile: string },
|
|
119
120
|
aliases?: Record<string, string>
|
|
120
121
|
) {
|
|
@@ -167,7 +168,7 @@ async function buildTamaguiConfig(
|
|
|
167
168
|
}
|
|
168
169
|
})
|
|
169
170
|
|
|
170
|
-
build.onResolve({ filter: /^(react-native)$/ }, (args) => {
|
|
171
|
+
build.onResolve({ filter: /^(react-native|react-native\/.*)$/ }, (args) => {
|
|
171
172
|
return {
|
|
172
173
|
path: 'react-native-web-lite',
|
|
173
174
|
external: true,
|
|
@@ -179,6 +180,7 @@ async function buildTamaguiConfig(
|
|
|
179
180
|
'react-native-svg': require.resolve('@tamagui/react-native-svg'),
|
|
180
181
|
'react-native-safe-area-context': require.resolve('@tamagui/fake-react-native'),
|
|
181
182
|
'react-native-gesture-handler': require.resolve('@tamagui/proxy-worm'),
|
|
183
|
+
'react-native-reanimated': require.resolve('@tamagui/proxy-worm'),
|
|
182
184
|
...aliases,
|
|
183
185
|
}),
|
|
184
186
|
],
|
|
@@ -12,19 +12,7 @@ export declare function createExtractor({ logger }?: ExtractorOptions): {
|
|
|
12
12
|
cleanupBeforeExit: typeof cleanupBeforeExit;
|
|
13
13
|
loadTamagui: (props: TamaguiOptions) => Promise<TamaguiProjectInfo>;
|
|
14
14
|
loadTamaguiSync: (props: TamaguiOptions) => TamaguiProjectInfo;
|
|
15
|
-
getTamagui():
|
|
16
|
-
[key: string]: Partial<import("@tamagui/core-node").TamaguiBaseTheme> & {
|
|
17
|
-
[key: string]: import("@tamagui/core-node").VariableVal;
|
|
18
|
-
};
|
|
19
|
-
}, {}, {
|
|
20
|
-
[key: string]: {
|
|
21
|
-
[key: string]: string | number;
|
|
22
|
-
};
|
|
23
|
-
}, {
|
|
24
|
-
[key: string]: string | {
|
|
25
|
-
[key: string]: any;
|
|
26
|
-
};
|
|
27
|
-
}, import("@tamagui/core-node").GenericFonts> | undefined;
|
|
15
|
+
getTamagui(): any;
|
|
28
16
|
parseSync: (f: FileOrPath, props: ExtractorParseProps) => {
|
|
29
17
|
styled: number;
|
|
30
18
|
flattened: number;
|