@tamagui/vite-plugin 1.1.11 → 1.1.13

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.
@@ -0,0 +1,210 @@
1
+ import { readFile } from "fs/promises";
2
+ import { join } from "path";
3
+ import { esbuildFlowPlugin } from "@bunchtogether/vite-plugin-flow";
4
+ import { extensions } from "./extensions.js";
5
+ function nativePlugin() {
6
+ return {
7
+ name: "tamagui-native",
8
+ enforce: "post",
9
+ config: (config) => {
10
+ if (!config.build)
11
+ config.build = {};
12
+ config.build.modulePreload = { polyfill: false };
13
+ config.build.assetsInlineLimit = 1e8;
14
+ config.build.chunkSizeWarningLimit = 1e8;
15
+ config.build.cssCodeSplit = false;
16
+ config.build.reportCompressedSize = false;
17
+ config.base = void 0;
18
+ config.resolve ??= {};
19
+ config.resolve.extensions = extensions;
20
+ config.resolve.alias ??= {};
21
+ config.resolve.alias = {
22
+ ...config.resolve.alias,
23
+ "react-native/Libraries/Renderer/shims/ReactFabric": "react-native/Libraries/Renderer/shims/ReactFabric",
24
+ "react-native/Libraries/Utilities/codegenNativeComponent": "react-native/Libraries/Utilities/codegenNativeComponent",
25
+ "react-native-svg": "react-native-svg",
26
+ "react-native-web": "react-native",
27
+ "react-native": "react-native"
28
+ };
29
+ config.optimizeDeps ??= {};
30
+ config.optimizeDeps.esbuildOptions ??= {};
31
+ config.optimizeDeps.esbuildOptions.resolveExtensions = extensions;
32
+ config.optimizeDeps.esbuildOptions.plugins ??= [];
33
+ config.optimizeDeps.esbuildOptions.plugins.push(
34
+ esbuildFlowPlugin(
35
+ /node_modules\/(react-native\/|@react-native\/assets)/,
36
+ (_) => "jsx"
37
+ )
38
+ );
39
+ config.optimizeDeps.include ??= [];
40
+ config.optimizeDeps.include.push("react-native");
41
+ config.optimizeDeps.esbuildOptions.loader ??= {};
42
+ config.optimizeDeps.esbuildOptions.loader[".js"] = "jsx";
43
+ config.optimizeDeps.esbuildOptions.plugins.push({
44
+ name: "react-native-assets",
45
+ setup(build) {
46
+ build.onResolve(
47
+ {
48
+ filter: /\.(png|jpg|gif|webp)$/
49
+ },
50
+ async ({ path, namespace }) => {
51
+ return {
52
+ path: "",
53
+ external: true
54
+ };
55
+ }
56
+ );
57
+ }
58
+ });
59
+ config.build.rollupOptions ??= {};
60
+ config.build.rollupOptions.input = "/Users/n8/tamagui/apps/kitchen-sink/src/index.tsx";
61
+ config.build.rollupOptions.output ??= {};
62
+ config.build.rollupOptions.plugins ??= [];
63
+ config.build.rollupOptions.external = ["react-native", "react", "react/jsx-runtime"];
64
+ if (!Array.isArray(config.build.rollupOptions.plugins)) {
65
+ throw `x`;
66
+ }
67
+ if (process.env.DEBUG) {
68
+ console.log("config..", config);
69
+ }
70
+ config.build.commonjsOptions = {
71
+ include: /node_modules\/react\//
72
+ };
73
+ config.build.rollupOptions.plugins.push({
74
+ name: `swap-react-native`,
75
+ async load(id) {
76
+ if (id.endsWith("react-native/index.js")) {
77
+ const bundled = await readFile(
78
+ join(process.cwd(), "react-native.js"),
79
+ "utf-8"
80
+ );
81
+ const code = bundled;
82
+ return {
83
+ code: `
84
+ const run = () => {
85
+ ${bundled.replace(
86
+ `module.exports = require_react_native();`,
87
+ `return require_react_native();`
88
+ )}
89
+ }
90
+
91
+ const RN = run()
92
+
93
+ ${RNExportNames.map(
94
+ (name) => (
95
+ // adding exports
96
+ `export const ${name} = RN.${name}`
97
+ )
98
+ ).join("\n")}
99
+
100
+ `
101
+ };
102
+ }
103
+ }
104
+ });
105
+ const updateOutputOptions = (out) => {
106
+ out.inlineDynamicImports = true;
107
+ out.manualChunks = void 0;
108
+ };
109
+ if (Array.isArray(config.build.rollupOptions.output)) {
110
+ for (const o in config.build.rollupOptions.output)
111
+ updateOutputOptions(o);
112
+ } else {
113
+ updateOutputOptions(config.build.rollupOptions.output);
114
+ }
115
+ }
116
+ };
117
+ }
118
+ const RNExportNames = [
119
+ "AccessibilityInfo",
120
+ "ActivityIndicator",
121
+ "Button",
122
+ "DatePickerIOS",
123
+ "DrawerLayoutAndroid",
124
+ "FlatList",
125
+ "Image",
126
+ "ImageBackground",
127
+ "InputAccessoryView",
128
+ "KeyboardAvoidingView",
129
+ "MaskedViewIOS",
130
+ "Modal",
131
+ "Pressable",
132
+ "ProgressBarAndroid",
133
+ "ProgressViewIOS",
134
+ "RefreshControl",
135
+ "SafeAreaView",
136
+ "ScrollView",
137
+ "SectionList",
138
+ "Slider",
139
+ "StatusBar",
140
+ "Switch",
141
+ "Text",
142
+ "TextInput",
143
+ "Touchable",
144
+ "TouchableHighlight",
145
+ "TouchableNativeFeedback",
146
+ "TouchableOpacity",
147
+ "TouchableWithoutFeedback",
148
+ "View",
149
+ "VirtualizedList",
150
+ "VirtualizedSectionList",
151
+ "ActionSheetIOS",
152
+ "Alert",
153
+ "Animated",
154
+ "Appearance",
155
+ "AppRegistry",
156
+ "AppState",
157
+ "AsyncStorage",
158
+ "BackHandler",
159
+ "Clipboard",
160
+ "DeviceInfo",
161
+ "DevSettings",
162
+ "Dimensions",
163
+ "Easing",
164
+ "findNodeHandle",
165
+ "I18nManager",
166
+ "ImagePickerIOS",
167
+ "InteractionManager",
168
+ "Keyboard",
169
+ "LayoutAnimation",
170
+ "Linking",
171
+ "LogBox",
172
+ "NativeDialogManagerAndroid",
173
+ "NativeEventEmitter",
174
+ "Networking",
175
+ "PanResponder",
176
+ "PermissionsAndroid",
177
+ "PixelRatio",
178
+ // 'PushNotificationIOS',
179
+ "Settings",
180
+ "Share",
181
+ "StyleSheet",
182
+ "Systrace",
183
+ "ToastAndroid",
184
+ "TurboModuleRegistry",
185
+ "UIManager",
186
+ "unstable_batchedUpdates",
187
+ "useColorScheme",
188
+ "useWindowDimensions",
189
+ "UTFSequence",
190
+ "Vibration",
191
+ "YellowBox",
192
+ "DeviceEventEmitter",
193
+ "DynamicColorIOS",
194
+ "NativeAppEventEmitter",
195
+ "NativeModules",
196
+ "Platform",
197
+ "PlatformColor",
198
+ "processColor",
199
+ "requireNativeComponent",
200
+ "RootTagContext"
201
+ // 'unstable_enableLogBox',
202
+ // 'ColorPropType',
203
+ // 'EdgeInsetsPropType',
204
+ // 'PointPropType',
205
+ // 'ViewPropTypes',
206
+ ];
207
+ export {
208
+ nativePlugin
209
+ };
210
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/native.ts"],
4
+ "sourcesContent": ["import { readFile } from 'fs/promises'\nimport { join } from 'path'\n\nimport { esbuildFlowPlugin } from '@bunchtogether/vite-plugin-flow'\nimport { OutputOptions } from 'rollup'\nimport type { Plugin } from 'vite'\n\nimport { extensions } from './extensions.js'\n\nexport function nativePlugin(): Plugin {\n return {\n name: 'tamagui-native',\n enforce: 'post',\n\n config: (config) => {\n if (!config.build) config.build = {}\n\n config.build.modulePreload = { polyfill: false }\n // Ensures that even very large assets are inlined in your JavaScript.\n config.build.assetsInlineLimit = 100000000\n // Avoid warnings about large chunks.\n config.build.chunkSizeWarningLimit = 100000000\n // Emit all CSS as a single file, which `vite-plugin-singlefile` can then inline.\n config.build.cssCodeSplit = false\n // Avoids the extra step of testing Brotli compression, which isn't really pertinent to a file served locally.\n config.build.reportCompressedSize = false\n // Subfolder bases are not supported, and shouldn't be needed because we're embedding everything.\n config.base = undefined\n\n config.resolve ??= {}\n\n config.resolve.extensions = extensions\n\n config.resolve.alias ??= {}\n config.resolve.alias = {\n ...config.resolve.alias,\n 'react-native/Libraries/Renderer/shims/ReactFabric':\n 'react-native/Libraries/Renderer/shims/ReactFabric',\n 'react-native/Libraries/Utilities/codegenNativeComponent':\n 'react-native/Libraries/Utilities/codegenNativeComponent',\n 'react-native-svg': 'react-native-svg',\n 'react-native-web': 'react-native',\n 'react-native': 'react-native',\n }\n\n config.optimizeDeps ??= {}\n config.optimizeDeps.esbuildOptions ??= {}\n config.optimizeDeps.esbuildOptions.resolveExtensions = extensions\n\n config.optimizeDeps.esbuildOptions.plugins ??= []\n config.optimizeDeps.esbuildOptions.plugins.push(\n esbuildFlowPlugin(\n /node_modules\\/(react-native\\/|@react-native\\/assets)/,\n (_) => 'jsx'\n )\n )\n // config.optimizeDeps.esbuildOptions.plugins.push(esbuildCommonjs(['react-native']))\n\n config.optimizeDeps.include ??= []\n config.optimizeDeps.include.push('react-native')\n\n config.optimizeDeps.esbuildOptions.loader ??= {}\n config.optimizeDeps.esbuildOptions.loader['.js'] = 'jsx'\n\n config.optimizeDeps.esbuildOptions.plugins.push({\n name: 'react-native-assets',\n setup(build) {\n build.onResolve(\n {\n filter: /\\.(png|jpg|gif|webp)$/,\n },\n async ({ path, namespace }) => {\n return {\n path: '',\n external: true,\n }\n }\n )\n },\n })\n\n config.build.rollupOptions ??= {}\n\n config.build.rollupOptions.input =\n '/Users/n8/tamagui/apps/kitchen-sink/src/index.tsx'\n\n config.build.rollupOptions.output ??= {}\n\n config.build.rollupOptions.plugins ??= []\n\n config.build.rollupOptions.external = ['react-native', 'react', 'react/jsx-runtime']\n\n if (!Array.isArray(config.build.rollupOptions.plugins)) {\n throw `x`\n }\n\n if (process.env.DEBUG) {\n console.log('config..', config)\n }\n\n config.build.commonjsOptions = {\n include: /node_modules\\/react\\//,\n }\n\n config.build.rollupOptions.plugins.push({\n name: `swap-react-native`,\n async load(id) {\n if (id.endsWith('react-native/index.js')) {\n const bundled = await readFile(\n join(process.cwd(), 'react-native.js'),\n 'utf-8'\n )\n const code = bundled\n return {\n code: `\nconst run = () => { \n ${bundled.replace(\n `module.exports = require_react_native();`,\n `return require_react_native();`\n )}\n}\n\nconst RN = run()\n\n${RNExportNames.map(\n (name) =>\n // adding exports\n `export const ${name} = RN.${name}`\n).join('\\n')}\n\n`,\n }\n }\n },\n })\n\n const updateOutputOptions = (out: OutputOptions) => {\n // Ensure that as many resources as possible are inlined.\n out.inlineDynamicImports = true\n\n // added by me (nate):\n out.manualChunks = undefined\n }\n\n if (Array.isArray(config.build.rollupOptions.output)) {\n for (const o in config.build.rollupOptions.output)\n updateOutputOptions(o as OutputOptions)\n } else {\n updateOutputOptions(config.build.rollupOptions.output as OutputOptions)\n }\n },\n }\n}\n\nconst RNExportNames = [\n 'AccessibilityInfo',\n 'ActivityIndicator',\n 'Button',\n 'DatePickerIOS',\n 'DrawerLayoutAndroid',\n 'FlatList',\n 'Image',\n 'ImageBackground',\n 'InputAccessoryView',\n 'KeyboardAvoidingView',\n 'MaskedViewIOS',\n 'Modal',\n 'Pressable',\n 'ProgressBarAndroid',\n 'ProgressViewIOS',\n 'RefreshControl',\n 'SafeAreaView',\n 'ScrollView',\n 'SectionList',\n 'Slider',\n 'StatusBar',\n 'Switch',\n 'Text',\n 'TextInput',\n 'Touchable',\n 'TouchableHighlight',\n 'TouchableNativeFeedback',\n 'TouchableOpacity',\n 'TouchableWithoutFeedback',\n 'View',\n 'VirtualizedList',\n 'VirtualizedSectionList',\n 'ActionSheetIOS',\n 'Alert',\n 'Animated',\n 'Appearance',\n 'AppRegistry',\n 'AppState',\n 'AsyncStorage',\n 'BackHandler',\n 'Clipboard',\n 'DeviceInfo',\n 'DevSettings',\n 'Dimensions',\n 'Easing',\n 'findNodeHandle',\n 'I18nManager',\n 'ImagePickerIOS',\n 'InteractionManager',\n 'Keyboard',\n 'LayoutAnimation',\n 'Linking',\n 'LogBox',\n 'NativeDialogManagerAndroid',\n 'NativeEventEmitter',\n 'Networking',\n 'PanResponder',\n 'PermissionsAndroid',\n 'PixelRatio',\n // 'PushNotificationIOS',\n 'Settings',\n 'Share',\n 'StyleSheet',\n 'Systrace',\n 'ToastAndroid',\n 'TurboModuleRegistry',\n 'UIManager',\n 'unstable_batchedUpdates',\n 'useColorScheme',\n 'useWindowDimensions',\n 'UTFSequence',\n 'Vibration',\n 'YellowBox',\n 'DeviceEventEmitter',\n 'DynamicColorIOS',\n 'NativeAppEventEmitter',\n 'NativeModules',\n 'Platform',\n 'PlatformColor',\n 'processColor',\n 'requireNativeComponent',\n 'RootTagContext',\n // 'unstable_enableLogBox',\n // 'ColorPropType',\n // 'EdgeInsetsPropType',\n // 'PointPropType',\n // 'ViewPropTypes',\n]\n"],
5
+ "mappings": "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AA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,100 @@
1
+ import { readFile } from "fs/promises";
2
+ import { build } from "esbuild";
3
+ import flowRemoveTypes from "flow-remove-types";
4
+ import { extensions } from "./extensions.js";
5
+ async function nativePrebuild() {
6
+ console.log(`Prebuilding React Native (one time cost...)`);
7
+ await Promise.all([
8
+ // react
9
+ build({
10
+ bundle: true,
11
+ entryPoints: ["react"],
12
+ outfile: "react.js",
13
+ format: "cjs",
14
+ target: "node14",
15
+ jsx: "transform",
16
+ jsxFactory: "react",
17
+ allowOverwrite: true,
18
+ platform: "node",
19
+ define: {
20
+ __DEV__: "true",
21
+ "process.env.NODE_ENV": `"development"`
22
+ },
23
+ logLevel: "warning",
24
+ resolveExtensions: extensions
25
+ }),
26
+ // react-jsx-runtime
27
+ build({
28
+ bundle: true,
29
+ entryPoints: ["react/jsx-runtime"],
30
+ outfile: "react-jsx-runtime.js",
31
+ format: "cjs",
32
+ target: "node14",
33
+ jsx: "transform",
34
+ jsxFactory: "react",
35
+ external: ["react"],
36
+ allowOverwrite: true,
37
+ platform: "node",
38
+ define: {
39
+ // metro serves this in production mode
40
+ __DEV__: "false",
41
+ "process.env.NODE_ENV": `"production"`
42
+ },
43
+ logLevel: "warning",
44
+ resolveExtensions: extensions
45
+ }),
46
+ // react native
47
+ build({
48
+ bundle: true,
49
+ entryPoints: ["/Users/n8/tamagui/node_modules/react-native/index.js"],
50
+ outfile: "react-native.js",
51
+ format: "cjs",
52
+ target: "node14",
53
+ jsx: "transform",
54
+ jsxFactory: "react",
55
+ allowOverwrite: true,
56
+ platform: "node",
57
+ loader: {
58
+ ".png": "dataurl",
59
+ ".jpg": "dataurl",
60
+ ".jpeg": "dataurl",
61
+ ".gif": "dataurl"
62
+ },
63
+ define: {
64
+ __DEV__: "true",
65
+ "process.env.NODE_ENV": `"development"`
66
+ },
67
+ logLevel: "warning",
68
+ resolveExtensions: extensions,
69
+ external: ["react", "react/jsx-runtime.js", "react/jsx-runtime"],
70
+ plugins: [
71
+ {
72
+ name: "remove-flow",
73
+ setup(build2) {
74
+ build2.onLoad(
75
+ {
76
+ filter: /.*.js/
77
+ },
78
+ async (input) => {
79
+ if (!input.path.includes("react-native")) {
80
+ return;
81
+ }
82
+ const code = await readFile(input.path, "utf-8");
83
+ const output = flowRemoveTypes(code, { pretty: true });
84
+ const contents = output.toString().replace(/static\s+\+/g, "static ");
85
+ return {
86
+ contents,
87
+ loader: "jsx"
88
+ };
89
+ }
90
+ );
91
+ }
92
+ }
93
+ ]
94
+ })
95
+ ]);
96
+ }
97
+ export {
98
+ nativePrebuild
99
+ };
100
+ //# sourceMappingURL=nativePrebuild.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/nativePrebuild.ts"],
4
+ "sourcesContent": ["import { readFile } from 'fs/promises'\n\nimport { build } from 'esbuild'\nimport flowRemoveTypes from 'flow-remove-types'\n\nimport { extensions } from './extensions.js'\n\nexport async function nativePrebuild() {\n console.log(`Prebuilding React Native (one time cost...)`)\n await Promise.all([\n // react\n build({\n bundle: true,\n entryPoints: ['react'],\n outfile: 'react.js',\n format: 'cjs',\n target: 'node14',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n platform: 'node',\n define: {\n __DEV__: 'true',\n 'process.env.NODE_ENV': `\"development\"`,\n },\n logLevel: 'warning',\n resolveExtensions: extensions,\n }),\n // react-jsx-runtime\n build({\n bundle: true,\n entryPoints: ['react/jsx-runtime'],\n outfile: 'react-jsx-runtime.js',\n format: 'cjs',\n target: 'node14',\n jsx: 'transform',\n jsxFactory: 'react',\n external: ['react'],\n allowOverwrite: true,\n platform: 'node',\n define: {\n // metro serves this in production mode\n __DEV__: 'false',\n 'process.env.NODE_ENV': `\"production\"`,\n },\n logLevel: 'warning',\n resolveExtensions: extensions,\n }),\n // react native\n build({\n bundle: true,\n entryPoints: ['/Users/n8/tamagui/node_modules/react-native/index.js'],\n outfile: 'react-native.js',\n format: 'cjs',\n target: 'node14',\n jsx: 'transform',\n jsxFactory: 'react',\n allowOverwrite: true,\n platform: 'node',\n loader: {\n '.png': 'dataurl',\n '.jpg': 'dataurl',\n '.jpeg': 'dataurl',\n '.gif': 'dataurl',\n },\n define: {\n __DEV__: 'true',\n 'process.env.NODE_ENV': `\"development\"`,\n },\n logLevel: 'warning',\n resolveExtensions: extensions,\n external: ['react', 'react/jsx-runtime.js', 'react/jsx-runtime'],\n plugins: [\n {\n name: 'remove-flow',\n setup(build) {\n build.onLoad(\n {\n filter: /.*.js/,\n },\n async (input) => {\n if (!input.path.includes('react-native')) {\n return\n }\n const code = await readFile(input.path, 'utf-8')\n const output = flowRemoveTypes(code, { pretty: true })\n const contents = output.toString().replace(/static\\s+\\+/g, 'static ')\n return {\n contents,\n loader: 'jsx',\n }\n }\n )\n },\n },\n ],\n }),\n ])\n}\n"],
5
+ "mappings": "AAAA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AACtB,OAAO,qBAAqB;AAE5B,SAAS,kBAAkB;AAE3B,eAAsB,iBAAiB;AACrC,UAAQ,IAAI,6CAA6C;AACzD,QAAM,QAAQ,IAAI;AAAA;AAAA,IAEhB,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa,CAAC,OAAO;AAAA,MACrB,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,wBAAwB;AAAA,MAC1B;AAAA,MACA,UAAU;AAAA,MACV,mBAAmB;AAAA,IACrB,CAAC;AAAA;AAAA,IAED,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa,CAAC,mBAAmB;AAAA,MACjC,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,UAAU,CAAC,OAAO;AAAA,MAClB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA;AAAA,QAEN,SAAS;AAAA,QACT,wBAAwB;AAAA,MAC1B;AAAA,MACA,UAAU;AAAA,MACV,mBAAmB;AAAA,IACrB,CAAC;AAAA;AAAA,IAED,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,aAAa,CAAC,sDAAsD;AAAA,MACpE,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,QAAQ;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,QACN,SAAS;AAAA,QACT,wBAAwB;AAAA,MAC1B;AAAA,MACA,UAAU;AAAA,MACV,mBAAmB;AAAA,MACnB,UAAU,CAAC,SAAS,wBAAwB,mBAAmB;AAAA,MAC/D,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,MAAMA,QAAO;AACX,YAAAA,OAAM;AAAA,cACJ;AAAA,gBACE,QAAQ;AAAA,cACV;AAAA,cACA,OAAO,UAAU;AACf,oBAAI,CAAC,MAAM,KAAK,SAAS,cAAc,GAAG;AACxC;AAAA,gBACF;AACA,sBAAM,OAAO,MAAM,SAAS,MAAM,MAAM,OAAO;AAC/C,sBAAM,SAAS,gBAAgB,MAAM,EAAE,QAAQ,KAAK,CAAC;AACrD,sBAAM,WAAW,OAAO,SAAS,EAAE,QAAQ,gBAAgB,SAAS;AACpE,uBAAO;AAAA,kBACL;AAAA,kBACA,QAAQ;AAAA,gBACV;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;",
6
+ "names": ["build"]
7
+ }
@@ -0,0 +1,102 @@
1
+ function tamaguiPlugin(options) {
2
+ const components = [.../* @__PURE__ */ new Set([...options.components, "tamagui", "@tamagui/core"])];
3
+ const noExternalSSR = new RegExp(
4
+ `${components.join("|")}|react-native|expo-linear-gradient`,
5
+ "ig"
6
+ );
7
+ const plugin = {
8
+ name: "tamagui-base",
9
+ enforce: "pre",
10
+ config(userConfig, env) {
11
+ return {
12
+ plugins: [
13
+ //
14
+ // envPlugin(['NODE_ENV', 'TAMAGUI_TARGET', 'ENABLE_RSC']),
15
+ // viteCommonjs(),
16
+ ],
17
+ define: {
18
+ // reanimated support
19
+ "global.__x": {},
20
+ _frameTimestamp: void 0,
21
+ _WORKLET: false,
22
+ ...process.env.NODE_ENV !== "test" && {
23
+ "process.env.TAMAGUI_TARGET": JSON.stringify(
24
+ process.env.TAMAGUI_TARGET || "web"
25
+ ),
26
+ "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV || env.mode),
27
+ "process.env.ENABLE_RSC": JSON.stringify(process.env.ENABLE_RSC || ""),
28
+ "process.env.ENABLE_STEPS": JSON.stringify(process.env.ENABLE_STEPS || ""),
29
+ "process.env.IS_STATIC": JSON.stringify(false)
30
+ }
31
+ },
32
+ // build: {
33
+ // commonjsOptions: {
34
+ // transformMixedEsModules: true,
35
+ // },
36
+ // },
37
+ ssr: {
38
+ noExternal: noExternalSSR
39
+ },
40
+ optimizeDeps: {
41
+ // disabled: false,
42
+ include: ["styleq", "react-native-reanimated"],
43
+ esbuildOptions: {
44
+ jsx: "transform",
45
+ // plugins: [
46
+ // esbuildCommonjs([
47
+ // 'styleq',
48
+ // 'inline-style-prefixer',
49
+ // 'create-react-class',
50
+ // 'copy-to-clipboard',
51
+ // ]),
52
+ // ],
53
+ resolveExtensions: [
54
+ ".web.js",
55
+ ".web.ts",
56
+ ".web.tsx",
57
+ ".js",
58
+ ".jsx",
59
+ ".json",
60
+ ".ts",
61
+ ".tsx",
62
+ ".mjs"
63
+ ],
64
+ loader: {
65
+ ".js": "jsx"
66
+ }
67
+ }
68
+ },
69
+ resolve: {
70
+ // for once it extracts
71
+ // mainFields: ['module:jsx', 'module', 'jsnext:main', 'jsnext', 'main'],
72
+ extensions: [
73
+ ".web.js",
74
+ ".web.ts",
75
+ ".web.tsx",
76
+ ".js",
77
+ ".jsx",
78
+ ".json",
79
+ ".ts",
80
+ ".tsx",
81
+ ".mjs"
82
+ ],
83
+ alias: {
84
+ "react-native/Libraries/Renderer/shims/ReactFabric": "@tamagui/proxy-worm",
85
+ "react-native/Libraries/Utilities/codegenNativeComponent": "@tamagui/proxy-worm",
86
+ "react-native-svg": "@tamagui/react-native-svg",
87
+ "react-native": "react-native-web",
88
+ ...options.useReactNativeWebLite && {
89
+ "react-native": "react-native-web-lite",
90
+ "react-native-web": "react-native-web-lite"
91
+ }
92
+ }
93
+ }
94
+ };
95
+ }
96
+ };
97
+ return plugin;
98
+ }
99
+ export {
100
+ tamaguiPlugin
101
+ };
102
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/plugin.ts"],
4
+ "sourcesContent": ["import type { TamaguiOptions } from '@tamagui/static'\nimport type { Plugin } from 'vite'\n\n/**\n * For some reason envPlugin doesnt work for vitest, but process: { env: {} } breaks vitest\n */\n\nexport function tamaguiPlugin(\n options: TamaguiOptions & {\n useReactNativeWebLite?: boolean\n }\n): Plugin {\n const components = [...new Set([...options.components, 'tamagui', '@tamagui/core'])]\n const noExternalSSR = new RegExp(\n `${components.join('|')}|react-native|expo-linear-gradient`,\n 'ig'\n )\n\n const plugin: Plugin = {\n name: 'tamagui-base',\n enforce: 'pre',\n\n config(userConfig, env) {\n return {\n plugins: [\n //\n // envPlugin(['NODE_ENV', 'TAMAGUI_TARGET', 'ENABLE_RSC']),\n // viteCommonjs(),\n ],\n define: {\n // reanimated support\n 'global.__x': {},\n _frameTimestamp: undefined,\n _WORKLET: false,\n ...(process.env.NODE_ENV !== 'test' && {\n 'process.env.TAMAGUI_TARGET': JSON.stringify(\n process.env.TAMAGUI_TARGET || 'web'\n ),\n 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode),\n 'process.env.ENABLE_RSC': JSON.stringify(process.env.ENABLE_RSC || ''),\n 'process.env.ENABLE_STEPS': JSON.stringify(process.env.ENABLE_STEPS || ''),\n 'process.env.IS_STATIC': JSON.stringify(false),\n }),\n },\n // build: {\n // commonjsOptions: {\n // transformMixedEsModules: true,\n // },\n // },\n ssr: {\n noExternal: noExternalSSR,\n },\n optimizeDeps: {\n // disabled: false,\n include: ['styleq', 'react-native-reanimated'],\n esbuildOptions: {\n jsx: 'transform',\n // plugins: [\n // esbuildCommonjs([\n // 'styleq',\n // 'inline-style-prefixer',\n // 'create-react-class',\n // 'copy-to-clipboard',\n // ]),\n // ],\n resolveExtensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n loader: {\n '.js': 'jsx',\n },\n },\n },\n resolve: {\n // for once it extracts\n // mainFields: ['module:jsx', 'module', 'jsnext:main', 'jsnext', 'main'],\n extensions: [\n '.web.js',\n '.web.ts',\n '.web.tsx',\n '.js',\n '.jsx',\n '.json',\n '.ts',\n '.tsx',\n '.mjs',\n ],\n alias: {\n 'react-native/Libraries/Renderer/shims/ReactFabric': '@tamagui/proxy-worm',\n 'react-native/Libraries/Utilities/codegenNativeComponent':\n '@tamagui/proxy-worm',\n 'react-native-svg': '@tamagui/react-native-svg',\n 'react-native': 'react-native-web',\n ...(options.useReactNativeWebLite && {\n 'react-native': 'react-native-web-lite',\n 'react-native-web': 'react-native-web-lite',\n }),\n },\n },\n }\n },\n }\n\n return plugin\n}\n"],
5
+ "mappings": "AAOO,SAAS,cACd,SAGQ;AACR,QAAM,aAAa,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,QAAQ,YAAY,WAAW,eAAe,CAAC,CAAC;AACnF,QAAM,gBAAgB,IAAI;AAAA,IACxB,GAAG,WAAW,KAAK,GAAG;AAAA,IACtB;AAAA,EACF;AAEA,QAAM,SAAiB;AAAA,IACrB,MAAM;AAAA,IACN,SAAS;AAAA,IAET,OAAO,YAAY,KAAK;AACtB,aAAO;AAAA,QACL,SAAS;AAAA;AAAA;AAAA;AAAA,QAIT;AAAA,QACA,QAAQ;AAAA;AAAA,UAEN,cAAc,CAAC;AAAA,UACf,iBAAiB;AAAA,UACjB,UAAU;AAAA,UACV,GAAI,QAAQ,IAAI,aAAa,UAAU;AAAA,YACrC,8BAA8B,KAAK;AAAA,cACjC,QAAQ,IAAI,kBAAkB;AAAA,YAChC;AAAA,YACA,wBAAwB,KAAK,UAAU,QAAQ,IAAI,YAAY,IAAI,IAAI;AAAA,YACvE,0BAA0B,KAAK,UAAU,QAAQ,IAAI,cAAc,EAAE;AAAA,YACrE,4BAA4B,KAAK,UAAU,QAAQ,IAAI,gBAAgB,EAAE;AAAA,YACzE,yBAAyB,KAAK,UAAU,KAAK;AAAA,UAC/C;AAAA,QACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAMA,KAAK;AAAA,UACH,YAAY;AAAA,QACd;AAAA,QACA,cAAc;AAAA;AAAA,UAEZ,SAAS,CAAC,UAAU,yBAAyB;AAAA,UAC7C,gBAAgB;AAAA,YACd,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASL,mBAAmB;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,QAAQ;AAAA,cACN,OAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA;AAAA;AAAA,UAGP,YAAY;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF;AAAA,UACA,OAAO;AAAA,YACL,qDAAqD;AAAA,YACrD,2DACE;AAAA,YACF,oBAAoB;AAAA,YACpB,gBAAgB;AAAA,YAChB,GAAI,QAAQ,yBAAyB;AAAA,cACnC,gBAAgB;AAAA,cAChB,oBAAoB;AAAA,YACtB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@tamagui/vite-plugin",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "types": "./types/index.d.ts",
5
5
  "type": "module",
6
+ "main": "./dist/cjs/index.js",
6
7
  "module": "./dist/esm/index.js",
7
8
  "license": "MIT",
8
9
  "files": [
@@ -20,22 +21,29 @@
20
21
  "./package.json": "./package.json",
21
22
  ".": {
22
23
  "types": "./types/index.d.ts",
23
- "import": "./dist/index.js"
24
+ "require": "./dist/cjs/index.js",
25
+ "import": "./dist/esm/index.js"
24
26
  }
25
27
  },
26
28
  "dependencies": {
27
- "@tamagui/fake-react-native": "^1.1.11",
28
- "@tamagui/proxy-worm": "^1.1.11",
29
- "@tamagui/react-native-svg": "^1.1.11",
30
- "@tamagui/static": "^1.1.11",
31
- "fs-extra": "^10.1.0",
29
+ "@bunchtogether/vite-plugin-flow": "^1.0.2",
30
+ "@originjs/vite-plugin-commonjs": "^1.0.3",
31
+ "@rollup/plugin-babel": "^6.0.3",
32
+ "@rollup/plugin-commonjs": "^24.0.1",
33
+ "@rollup/plugin-node-resolve": "^15.0.1",
34
+ "@tamagui/fake-react-native": "^1.1.13",
35
+ "@tamagui/proxy-worm": "^1.1.13",
36
+ "@tamagui/react-native-svg": "^1.1.13",
37
+ "@tamagui/static": "^1.1.13",
38
+ "esbuild": "^0.17.5",
39
+ "fs-extra": "^11.1.0",
32
40
  "lodash": "^4.17.21",
33
41
  "micromatch": ">=4.0.0",
34
42
  "outdent": "^0.8.0",
35
43
  "rollup": ">=3.7.0"
36
44
  },
37
45
  "devDependencies": {
38
- "@tamagui/build": "^1.1.11",
46
+ "@tamagui/build": "^1.1.13",
39
47
  "vite-plugin-environment": "^1.1.3"
40
48
  },
41
49
  "publishConfig": {
@@ -0,0 +1,12 @@
1
+ export const extensions = [
2
+ '.ios.js',
3
+ '.native.js',
4
+ '.native.ts',
5
+ '.native.tsx',
6
+ '.js',
7
+ '.jsx',
8
+ '.json',
9
+ '.ts',
10
+ '.tsx',
11
+ '.mjs',
12
+ ]
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './plugin.js'
2
2
  export * from './extract.js'
3
3
  export * from './native.js'
4
+ export * from './nativePrebuild.js'