@tamagui/next-plugin 1.0.1-beta.19 → 1.0.1-beta.190

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.
@@ -1,62 +1,127 @@
1
- var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import path from "path";
1
+ import path, { join } from "path";
4
2
  import browserslist from "browserslist";
5
3
  import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
4
+ import buildResolver from "esm-resolve";
5
+ import InlineCSSPlugin from "html-inline-css-webpack-plugin";
6
6
  import MiniCSSExtractPlugin from "mini-css-extract-plugin";
7
7
  import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
8
8
  import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
9
- import { shouldExclude } from "tamagui-loader";
9
+ import { shouldExclude as shouldExcludeDefault } from "tamagui-loader";
10
10
  import webpack from "webpack";
11
- const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
11
+ const withTamagui = (tamaguiOptions) => {
12
+ const shouldExclude = (path2, projectRoot) => {
13
+ var _a;
14
+ const res = (_a = tamaguiOptions.shouldExtract) == null ? void 0 : _a.call(tamaguiOptions, path2, projectRoot);
15
+ if (typeof res === "boolean") {
16
+ return !res;
17
+ }
18
+ return shouldExcludeDefault(path2, projectRoot);
19
+ };
12
20
  return (nextConfig = {}) => {
13
21
  return {
14
22
  ...nextConfig,
15
23
  webpack: (webpackConfig, options) => {
16
24
  var _a;
17
25
  const { dir, config, dev, isServer } = options;
26
+ const resolver = buildResolver(join(dir, "index.js"), {
27
+ constraints: "node"
28
+ });
18
29
  if (typeof globalThis["__DEV__"] === "undefined") {
19
30
  globalThis["__DEV__"] = dev;
20
31
  }
21
32
  const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
33
+ if (!isNext12) {
34
+ throw new Error(`Next.js 12 only supported`);
35
+ }
22
36
  const prefix = `${isServer ? " ssr " : " web "} |`;
23
- const safeResolves = /* @__PURE__ */ __name((...resolves) => {
24
- let res = [];
25
- for (const [out, mod, replace] of resolves) {
37
+ const safeResolves = (...resolves) => {
38
+ var _a2;
39
+ const res = [];
40
+ for (const [out, mod] of resolves) {
41
+ if (out.endsWith("$")) {
42
+ res.push([out, mod]);
43
+ continue;
44
+ }
26
45
  try {
27
- const next = [out, require.resolve(mod)];
28
- if (replace) {
29
- next[1] = next[1].replace(...replace);
30
- }
31
- res.push(next);
46
+ res.push([out, resolveEsm(mod)]);
32
47
  } catch (err) {
48
+ if (out.includes(`@gorhom/bottom-sheet`)) {
49
+ continue;
50
+ }
51
+ if ((_a2 = process.env.DEBUG) == null ? void 0 : _a2.startsWith("tamagui")) {
52
+ console.log(prefix, `withTamagui skipping resolving ${out}`, err);
53
+ }
33
54
  }
34
55
  }
35
56
  return Object.fromEntries(res);
36
- }, "safeResolves");
37
- const alias = {
38
- ...webpackConfig.resolve.alias || {},
39
- ...safeResolves(["react/jsx-runtime.js", "react/jsx-runtime"], ["react/jsx-runtime", "react/jsx-runtime"], ["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"], ["react/jsx-dev-runtime", "react/jsx-dev-runtime"], ["react-native$", "react-native-web"], ["react-native-reanimated", "react-native-reanimated"], ["expo-linear-gradient", "@tamagui/expo-linear-gradient"], ["react-native-web$", "react-native-web"], ["@testing-library/react-native", "@tamagui/proxy-worm"], ["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet", ["commonjs", "module"]], ...tamaguiOptions.aliasReactPackages ? [
57
+ };
58
+ const resolveEsm = (relativePath) => {
59
+ if (isServer)
60
+ return require.resolve(relativePath);
61
+ const esm = resolver(relativePath);
62
+ return esm ? path.join(dir, esm) : require.resolve(relativePath);
63
+ };
64
+ const rnw = tamaguiOptions.useReactNativeWebLite ? "react-native-web-lite" : "react-native-web";
65
+ const tamaguiAliases = safeResolves(
66
+ ["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
67
+ ["@tamagui/core", "@tamagui/core"],
68
+ ["react-native-svg", "@tamagui/react-native-svg"],
69
+ ["react/jsx-runtime.js", "react/jsx-runtime"],
70
+ ["react/jsx-runtime", "react/jsx-runtime"],
71
+ ["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
72
+ ["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
73
+ ["react-native-reanimated", "react-native-reanimated"],
74
+ [
75
+ "@tamagui/rnw",
76
+ tamaguiOptions.useReactNativeWebLite ? "@tamagui/rnw-lite" : "@tamagui/rnw"
77
+ ],
78
+ ["react-native$", rnw],
79
+ ["react-native-web$", rnw],
80
+ ["@testing-library/react-native", "@tamagui/proxy-worm"],
81
+ ["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
82
+ ["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"],
83
+ ...tamaguiOptions.aliasReactPackages ? [
40
84
  ["react", "react"],
41
85
  ["react-dom", "react-dom"]
42
- ] : []),
43
- "react-native-web/src": require.resolve("react-native-web/dist")
86
+ ] : []
87
+ );
88
+ const alias = {
89
+ ...webpackConfig.resolve.alias || {},
90
+ ...tamaguiAliases
44
91
  };
92
+ if (process.env.DEBUG) {
93
+ console.log("Tamagui alias:", alias);
94
+ }
95
+ if (process.env.ANALYZE === "true") {
96
+ Object.assign(webpackConfig.optimization, {
97
+ concatenateModules: false
98
+ });
99
+ }
45
100
  webpackConfig.resolve.alias = alias;
46
- webpackConfig.plugins.push(new webpack.DefinePlugin({
47
- "process.env.IS_STATIC": '""',
48
- "process.env.TAMAGUI_TARGET": '"web"',
49
- __DEV__: JSON.stringify(dev)
50
- }));
101
+ webpackConfig.plugins.push(
102
+ new webpack.DefinePlugin({
103
+ "process.env.IS_STATIC": '""',
104
+ "process.env.TAMAGUI_TARGET": '"web"',
105
+ __DEV__: JSON.stringify(dev)
106
+ })
107
+ );
51
108
  const excludeExports = tamaguiOptions.excludeReactNativeWebExports;
52
109
  if (Array.isArray(excludeExports)) {
110
+ if (excludeExports.includes("PressResponder")) {
111
+ console.warn(
112
+ `\u26A0\uFE0F Warning: as of beta 118, PressReponder shouldn't be excluded in excludeReactNativeWebExports`
113
+ );
114
+ }
53
115
  try {
54
- const regexStr = `/react-native-web/.*(${excludeExports.join("|")}).*/`;
116
+ const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`;
55
117
  const regex = new RegExp(regexStr);
56
- console.log(prefix, "exclude", regexStr);
57
- webpackConfig.plugins.push(new webpack.NormalModuleReplacementPlugin(regex, require.resolve("@tamagui/proxy-worm")));
118
+ webpackConfig.plugins.push(
119
+ new webpack.NormalModuleReplacementPlugin(regex, resolveEsm("@tamagui/proxy-worm"))
120
+ );
58
121
  } catch (err) {
59
- console.warn(`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(", ")}`);
122
+ console.warn(
123
+ `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(", ")}`
124
+ );
60
125
  }
61
126
  }
62
127
  if (process.env.IGNORE_TS_CONFIG_PATHS) {
@@ -69,39 +134,49 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
69
134
  }
70
135
  }
71
136
  if (!dev) {
72
- const cssMin = webpackConfig.optimization.minimizer.find((x) => x.toString().includes("css-minimizer-plugin"));
137
+ const cssMin = webpackConfig.optimization.minimizer.find(
138
+ (x) => x.toString().includes("css-minimizer-plugin")
139
+ );
73
140
  if (cssMin) {
74
- webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(cssMin.index, 1);
141
+ webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(
142
+ cssMin.index,
143
+ 1
144
+ );
75
145
  }
76
146
  webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin());
77
147
  }
78
- if (!webpackConfig.resolve.extensions.includes(".web.js")) {
79
- webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
80
- }
148
+ webpackConfig.resolve.extensions = [
149
+ .../* @__PURE__ */ new Set([".web.tsx", ".web.ts", ".web.js", ...webpackConfig.resolve.extensions])
150
+ ];
81
151
  webpackConfig.resolve.mainFields.unshift("module:jsx");
82
152
  if (isServer) {
83
- const includeModule = /* @__PURE__ */ __name((context, request) => {
84
- var _a2;
153
+ const externalize = (context, request) => {
85
154
  const fullPath = request[0] === "." ? path.join(context, request) : request;
86
- const userRes = (_a2 = tamaguiOptions.shouldIncludeModuleServer) == null ? void 0 : _a2.call(tamaguiOptions, {
87
- context,
88
- request,
89
- fullPath
90
- });
91
- if (userRes !== void 0) {
92
- return userRes;
155
+ if (tamaguiOptions.shouldExcludeFromServer) {
156
+ const userRes = tamaguiOptions.shouldExcludeFromServer({
157
+ context,
158
+ request,
159
+ fullPath
160
+ });
161
+ if (userRes !== void 0) {
162
+ return userRes;
163
+ }
164
+ }
165
+ const SEP = path.sep;
166
+ if (fullPath === "react-native" || fullPath.startsWith(`react-native${SEP}`)) {
167
+ return false;
93
168
  }
94
- if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)\/$/.test(fullPath)) {
169
+ if (fullPath.startsWith("react-native-web") || fullPath.includes(`node_modules${SEP}react-native-web`) || new RegExp(`^(react-dom|react)${SEP}$`).test(fullPath)) {
95
170
  return `commonjs ${fullPath}`;
96
171
  }
97
- if (fullPath.includes("/moti/") || fullPath.includes("/solito/") || fullPath === "tamagui" || fullPath.startsWith("@tamagui/") || fullPath === "react-native-safe-area-context" || fullPath.startsWith("@react-navigation") || fullPath === "@gorhom/bottom-sheet") {
172
+ if (fullPath.startsWith("moti") || fullPath.startsWith("solito") || fullPath === "tamagui" || fullPath.startsWith("@tamagui") || fullPath === "react-native-safe-area-context" || fullPath === "expo-linear-gradient" || fullPath.startsWith("@react-navigation") || fullPath.startsWith("@gorhom")) {
98
173
  return;
99
174
  }
100
- if (/^\@?react-native-/.test(request)) {
175
+ if (/^@?react-native-/.test(request)) {
101
176
  return false;
102
177
  }
103
178
  return true;
104
- }, "includeModule");
179
+ };
105
180
  webpackConfig.externals = [
106
181
  ...webpackConfig.externals.map((external) => {
107
182
  if (typeof external !== "function") {
@@ -109,7 +184,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
109
184
  }
110
185
  return (ctx, cb) => {
111
186
  const isCb = typeof cb === "function";
112
- const res = includeModule(ctx.context, ctx.request);
187
+ const res = externalize(ctx.context, ctx.request);
113
188
  if (isCb) {
114
189
  if (typeof res === "string") {
115
190
  return cb(null, res);
@@ -125,56 +200,88 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
125
200
  ];
126
201
  }
127
202
  const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
128
- const cssLoader = getGlobalCssLoader({
129
- assetPrefix: options.config.assetPrefix || config.assetPrefix,
130
- future: nextConfig.future,
131
- experimental: nextConfig.experimental || {},
132
- isClient: !isServer,
133
- isServer,
134
- isDevelopment: dev
135
- }, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), []);
203
+ const cssLoader = getGlobalCssLoader(
204
+ {
205
+ assetPrefix: options.config.assetPrefix || config.assetPrefix,
206
+ future: nextConfig.future,
207
+ experimental: nextConfig.experimental || {},
208
+ isClient: !isServer,
209
+ isServer,
210
+ isDevelopment: dev
211
+ },
212
+ () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),
213
+ []
214
+ );
136
215
  if (oneOfRule) {
216
+ if (!tamaguiOptions.disableFontSupport) {
217
+ oneOfRule.oneOf.unshift({
218
+ test: /\.(woff(2)?|eot|ttf|otf)(\?v=\d+\.\d+\.\d+)?$/,
219
+ use: [
220
+ {
221
+ loader: require.resolve("url-loader"),
222
+ options: {
223
+ limit: nextConfig.inlineFontLimit || 1024,
224
+ fallback: require.resolve("file-loader"),
225
+ publicPath: `${nextConfig.assetPrefix || ""}/_next/static/chunks/fonts/`,
226
+ outputPath: `${isServer ? "../" : ""}static/chunks/fonts/`,
227
+ name: "[name].[ext]"
228
+ }
229
+ }
230
+ ]
231
+ });
232
+ }
233
+ const cssTest = tamaguiOptions.includeCSSTest ?? ((file) => {
234
+ return file.endsWith(".css");
235
+ });
137
236
  if (!dev) {
138
237
  const postCSSLoader = cssLoader[cssLoader.length - 1];
139
238
  oneOfRule.oneOf.unshift({
140
- test: /\.css$/i,
239
+ test: cssTest,
141
240
  use: [MiniCSSExtractPlugin.loader, "css-loader", postCSSLoader],
142
241
  sideEffects: true
143
242
  });
144
- webpackConfig.plugins.push(new MiniCSSExtractPlugin({
145
- filename: "static/css/[name].[contenthash].css",
146
- ignoreOrder: true,
147
- runtime: false
148
- }));
243
+ webpackConfig.plugins.push(
244
+ new MiniCSSExtractPlugin({
245
+ filename: "static/css/[contenthash].css",
246
+ ignoreOrder: true,
247
+ runtime: false
248
+ })
249
+ );
250
+ if (tamaguiOptions.inlineCSS) {
251
+ webpackConfig.plugins.push(new InlineCSSPlugin());
252
+ }
149
253
  } else {
150
254
  oneOfRule.oneOf.unshift({
151
- test: /\.css$/i,
255
+ test: cssTest,
152
256
  sideEffects: true,
153
257
  use: cssLoader
154
258
  });
155
259
  }
156
260
  }
157
- if (isNext12) {
158
- const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf);
159
- const oneOfJSRules = webpackConfig.module.rules[firstOneOfRule].oneOf;
160
- const afterSWCLoaderIndex = oneOfJSRules.findIndex((x) => x && x.use && x.use.loader === "next-swc-loader" && x.issuerLayer !== "api") + 1;
161
- const swcLoader = oneOfJSRules[afterSWCLoaderIndex];
162
- oneOfJSRules.splice(afterSWCLoaderIndex, 0, {
163
- test: /(bottom-sheet).*\.[tj]sx?$/,
261
+ const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf);
262
+ const oneOfJSRules = webpackConfig.module.rules[firstOneOfRule].oneOf;
263
+ const afterSWCLoaderIndex = oneOfJSRules.findIndex(
264
+ (x) => x && x.use && x.use.loader === "next-swc-loader" && x.issuerLayer !== "api"
265
+ ) + 1;
266
+ const swcLoader = oneOfJSRules[afterSWCLoaderIndex];
267
+ oneOfJSRules.splice(
268
+ afterSWCLoaderIndex,
269
+ 0,
270
+ {
271
+ test: /(bottom-sheet|react-native-reanimated).*\.[tj]sx?$/,
164
272
  use: [
165
273
  {
166
274
  loader: "babel-loader",
167
275
  options: {
168
- plugins: [
169
- "react-native-reanimated/plugin",
170
- "@babel/plugin-transform-react-jsx"
171
- ]
276
+ presets: ["@babel/preset-react"],
277
+ plugins: ["react-native-reanimated/plugin"]
172
278
  }
173
279
  }
174
280
  ]
175
- }, {
281
+ },
282
+ {
176
283
  test: /\.(jsx?|tsx?)$/,
177
- exclude: (path2) => shouldExclude(path2, options.dir, tamaguiOptions),
284
+ exclude: (path2) => shouldExclude(path2, options.dir),
178
285
  use: [
179
286
  ...[].concat(swcLoader.use),
180
287
  {
@@ -182,36 +289,8 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
182
289
  options: tamaguiOptions
183
290
  }
184
291
  ]
185
- });
186
- } else {
187
- const [first, second, ...rest] = webpackConfig.module.rules;
188
- webpackConfig.module.rules = [
189
- first,
190
- second,
191
- {
192
- test: /\.(tsx|jsx)$/,
193
- exclude: (path2) => shouldExclude(path2, options.dir, tamaguiOptions),
194
- use: [
195
- "thread-loader",
196
- {
197
- loader: "esbuild-loader",
198
- options: {
199
- loader: "tsx",
200
- minify: false
201
- }
202
- },
203
- {
204
- loader: "tamagui-loader",
205
- options: {
206
- prefixLogs: prefix,
207
- ...tamaguiOptions
208
- }
209
- }
210
- ]
211
- },
212
- ...rest
213
- ];
214
- }
292
+ }
293
+ );
215
294
  if (typeof nextConfig.webpack === "function") {
216
295
  return nextConfig.webpack(webpackConfig, options);
217
296
  }
@@ -219,7 +298,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
219
298
  }
220
299
  };
221
300
  };
222
- }, "withTamagui");
301
+ };
223
302
  function getSupportedBrowsers(dir, isDevelopment) {
224
303
  let browsers;
225
304
  try {
@@ -231,7 +310,6 @@ function getSupportedBrowsers(dir, isDevelopment) {
231
310
  }
232
311
  return browsers;
233
312
  }
234
- __name(getSupportedBrowsers, "getSupportedBrowsers");
235
313
  export {
236
314
  withTamagui
237
315
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/withTamagui.ts"],
4
- "sourcesContent": ["import path from 'path'\n\nimport type { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport MiniCSSExtractPlugin from 'mini-css-extract-plugin'\nimport { lazyPostCSS } from 'next/dist/build/webpack/config/blocks/css'\nimport { getGlobalCssLoader } from 'next/dist/build/webpack/config/blocks/css/loaders'\nimport { shouldExclude } from 'tamagui-loader'\nimport webpack from 'webpack'\n\nexport type WithTamaguiProps = TamaguiOptions & {\n aliasReactPackages?: boolean\n shouldIncludeModuleServer?: (props: {\n context: string\n request: string\n fullPath: string\n }) => boolean | string | undefined\n}\n\nexport const withTamagui = (tamaguiOptions: WithTamaguiProps) => {\n return (nextConfig: any = {}) => {\n return {\n ...nextConfig,\n webpack: (webpackConfig: any, options: any) => {\n const { dir, config, dev, isServer } = options\n\n // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n const prefix = `${isServer ? ' ssr ' : ' web '} |`\n\n const safeResolves = (\n ...resolves: ([string, string] | [string, string, [string, string]])[]\n ) => {\n let res: string[][] = []\n for (const [out, mod, replace] of resolves) {\n try {\n const next = [out, require.resolve(mod)]\n if (replace) {\n next[1] = next[1].replace(...replace)\n }\n res.push(next)\n } catch (err) {\n // console.log(prefix, `withTamagui skipping resolving ${out}`)\n }\n }\n return Object.fromEntries(res)\n }\n\n const alias = {\n ...(webpackConfig.resolve.alias || {}),\n ...safeResolves(\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n ['react/jsx-runtime.js', 'react/jsx-runtime'],\n ['react/jsx-runtime', 'react/jsx-runtime'],\n ['react/jsx-dev-runtime.js', 'react/jsx-dev-runtime'],\n ['react/jsx-dev-runtime', 'react/jsx-dev-runtime'],\n ['react-native$', 'react-native-web'],\n ['react-native-reanimated', 'react-native-reanimated'],\n ['expo-linear-gradient', '@tamagui/expo-linear-gradient'],\n ['react-native-web$', 'react-native-web'],\n ['@testing-library/react-native', '@tamagui/proxy-worm'],\n ['@gorhom/bottom-sheet$', '@gorhom/bottom-sheet', ['commonjs', 'module']],\n ...(tamaguiOptions.aliasReactPackages\n ? ([\n ['react', 'react'],\n ['react-dom', 'react-dom'],\n ] as any)\n : [])\n ),\n // expo fix https://github.com/expo/expo/issues/9999\n 'react-native-web/src': require.resolve('react-native-web/dist'),\n // react: require.resolve('react'),\n // 'react-dom': require.resolve('react-dom'),\n }\n\n webpackConfig.resolve.alias = alias\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n try {\n const regexStr = `\\/react-native-web\\/.*(${excludeExports.join('|')}).*\\/`\n const regex = new RegExp(regexStr)\n console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(\n regex,\n require.resolve('@tamagui/proxy-worm')\n )\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!dev) {\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n }\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n if (isServer) {\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n\n const userRes = tamaguiOptions.shouldIncludeModuleServer?.({\n context,\n request,\n fullPath,\n })\n\n if (userRes !== undefined) {\n return userRes\n }\n\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web') ||\n /^(react-dom|react)\\/$/.test(fullPath)\n ) {\n return `commonjs ${fullPath}`\n }\n if (\n fullPath.includes('/moti/') ||\n fullPath.includes('/solito/') ||\n fullPath === 'tamagui' ||\n fullPath.startsWith('@tamagui/') ||\n fullPath === 'react-native-safe-area-context' ||\n fullPath.startsWith('@react-navigation') ||\n fullPath === '@gorhom/bottom-sheet'\n ) {\n return\n }\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n return true\n }\n\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n return (ctx, cb) => {\n const isCb = typeof cb === 'function'\n const res = includeModule(ctx.context, ctx.request)\n if (isCb) {\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n return !res\n ? Promise.resolve(undefined)\n : typeof res === 'string'\n ? Promise.resolve(res)\n : external(ctx)\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n const cssLoader = getGlobalCssLoader(\n // @ts-ignore\n {\n assetPrefix: options.config.assetPrefix || config.assetPrefix,\n future: nextConfig.future,\n experimental: nextConfig.experimental || {},\n isClient: !isServer,\n isServer,\n isDevelopment: dev,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n )\n\n if (oneOfRule) {\n if (!dev) {\n const postCSSLoader = cssLoader[cssLoader.length - 1]\n // replace nextjs picky style rules with simple minicssextract\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n use: [MiniCSSExtractPlugin.loader, 'css-loader', postCSSLoader],\n sideEffects: true,\n })\n webpackConfig.plugins.push(\n new MiniCSSExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n runtime: false,\n })\n )\n } else {\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: cssLoader,\n })\n }\n }\n\n if (isNext12) {\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n plugins: [\n 'react-native-reanimated/plugin',\n '@babel/plugin-transform-react-jsx',\n ],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n }\n )\n } else {\n // next 11 modify loader\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|jsx)$/,\n exclude: (path: string) => shouldExclude(path, options.dir, tamaguiOptions),\n use: [\n 'thread-loader',\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: {\n prefixLogs: prefix,\n ...tamaguiOptions,\n },\n },\n ],\n },\n ...rest,\n ]\n }\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n }\n }\n}\n\nfunction getSupportedBrowsers(dir, isDevelopment) {\n let browsers\n try {\n browsers = browserslist.loadConfig({\n path: dir,\n env: isDevelopment ? 'development' : 'production',\n })\n } catch {}\n\n return browsers\n}\n"],
5
- "mappings": "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",
6
- "names": []
4
+ "sourcesContent": ["import path, { join } from 'path'\n\nimport type { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport buildResolver from 'esm-resolve'\nimport InlineCSSPlugin from 'html-inline-css-webpack-plugin'\nimport MiniCSSExtractPlugin from 'mini-css-extract-plugin'\nimport { lazyPostCSS } from 'next/dist/build/webpack/config/blocks/css'\nimport { getGlobalCssLoader } from 'next/dist/build/webpack/config/blocks/css/loaders'\nimport { shouldExclude as shouldExcludeDefault } from 'tamagui-loader'\nimport webpack from 'webpack'\n\nexport type WithTamaguiProps = TamaguiOptions & {\n useReactNativeWebLite: boolean\n disableFontSupport?: boolean\n aliasReactPackages?: boolean\n includeCSSTest?: RegExp | ((path: string) => boolean)\n inlineCSS?: boolean\n shouldExtract?: (path: string, projectRoot: string) => boolean | undefined\n shouldExcludeFromServer?: (props: {\n context: string\n request: string\n fullPath: string\n }) => boolean | string | undefined\n}\n\nexport const withTamagui = (tamaguiOptions: WithTamaguiProps) => {\n // allows configuration\n const shouldExclude = (path: string, projectRoot: string) => {\n const res = tamaguiOptions.shouldExtract?.(path, projectRoot)\n if (typeof res === 'boolean') {\n return !res\n }\n return shouldExcludeDefault(path, projectRoot)\n }\n\n return (nextConfig: any = {}) => {\n return {\n ...nextConfig,\n webpack: (webpackConfig: any, options: any) => {\n const { dir, config, dev, isServer } = options\n\n const resolver = buildResolver(join(dir, 'index.js'), {\n constraints: 'node',\n })\n\n // @ts-ignore\n if (typeof globalThis['__DEV__'] === 'undefined') {\n // @ts-ignore\n globalThis['__DEV__'] = dev\n }\n\n const isNext12 = typeof options.config?.swcMinify === 'boolean'\n if (!isNext12) {\n throw new Error(`Next.js 12 only supported`)\n }\n\n const prefix = `${isServer ? ' ssr ' : ' web '} |`\n\n const safeResolves = (...resolves: [string, string][]) => {\n const res: string[][] = []\n for (const [out, mod] of resolves) {\n if (out.endsWith('$')) {\n res.push([out, mod])\n continue\n }\n try {\n res.push([out, resolveEsm(mod)])\n } catch (err) {\n if (out.includes(`@gorhom/bottom-sheet`)) {\n continue\n }\n if (process.env.DEBUG?.startsWith('tamagui')) {\n // eslint-disable-next-line no-console\n console.log(prefix, `withTamagui skipping resolving ${out}`, err)\n }\n }\n }\n return Object.fromEntries(res)\n }\n\n const resolveEsm = (relativePath: string) => {\n if (isServer) return require.resolve(relativePath)\n const esm = resolver(relativePath)\n return esm ? path.join(dir, esm) : require.resolve(relativePath)\n }\n\n const rnw = tamaguiOptions.useReactNativeWebLite\n ? 'react-native-web-lite'\n : 'react-native-web'\n\n const tamaguiAliases = safeResolves(\n ['@tamagui/core/reset.css', '@tamagui/core/reset.css'],\n ['@tamagui/core', '@tamagui/core'],\n ['react-native-svg', '@tamagui/react-native-svg'],\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n ['react/jsx-runtime.js', 'react/jsx-runtime'],\n ['react/jsx-runtime', 'react/jsx-runtime'],\n ['react/jsx-dev-runtime.js', 'react/jsx-dev-runtime'],\n ['react/jsx-dev-runtime', 'react/jsx-dev-runtime'],\n ['react-native-reanimated', 'react-native-reanimated'],\n // match commonjs to react-native-web\n // i'd do esm but needs better docs, have to transpile\n [\n '@tamagui/rnw',\n tamaguiOptions.useReactNativeWebLite ? '@tamagui/rnw-lite' : '@tamagui/rnw',\n ],\n ['react-native$', rnw],\n ['react-native-web$', rnw],\n ['@testing-library/react-native', '@tamagui/proxy-worm'],\n ['@gorhom/bottom-sheet$', '@gorhom/bottom-sheet'],\n // fix reanimated 3\n ['react-native/Libraries/Renderer/shims/ReactFabric', '@tamagui/proxy-worm'],\n ...(tamaguiOptions.aliasReactPackages\n ? ([\n ['react', 'react'],\n ['react-dom', 'react-dom'],\n ] as any)\n : [])\n )\n\n const alias = {\n ...(webpackConfig.resolve.alias || {}),\n ...tamaguiAliases,\n }\n\n if (process.env.DEBUG) {\n // eslint-disable-next-line no-console\n console.log('Tamagui alias:', alias)\n }\n\n if (process.env.ANALYZE === 'true') {\n Object.assign(webpackConfig.optimization, {\n concatenateModules: false,\n })\n }\n\n webpackConfig.resolve.alias = alias\n\n webpackConfig.plugins.push(\n new webpack.DefinePlugin({\n 'process.env.IS_STATIC': '\"\"',\n 'process.env.TAMAGUI_TARGET': '\"web\"',\n __DEV__: JSON.stringify(dev),\n })\n )\n\n const excludeExports = tamaguiOptions.excludeReactNativeWebExports\n if (Array.isArray(excludeExports)) {\n if (excludeExports.includes('PressResponder')) {\n console.warn(\n `\u26A0\uFE0F Warning: as of beta 118, PressReponder shouldn't be excluded in excludeReactNativeWebExports`\n )\n }\n try {\n const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join('|')}).*js`\n const regex = new RegExp(regexStr)\n // console.log(prefix, 'exclude', regexStr)\n webpackConfig.plugins.push(\n new webpack.NormalModuleReplacementPlugin(regex, resolveEsm('@tamagui/proxy-worm'))\n )\n } catch (err) {\n console.warn(\n `Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(', ')}`\n )\n }\n }\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n if (process.env.DEBUG) {\n console.log(prefix, 'ignoring tsconfig paths')\n }\n if (webpackConfig.resolve.plugins[0]) {\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n }\n\n // TODO document and make configurable\n // replaces minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\n if (!dev) {\n const cssMin = webpackConfig.optimization.minimizer.find((x) =>\n x.toString().includes('css-minimizer-plugin')\n )\n if (cssMin) {\n webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(\n cssMin.index,\n 1\n )\n }\n webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin())\n }\n\n webpackConfig.resolve.extensions = [\n ...new Set(['.web.tsx', '.web.ts', '.web.js', ...webpackConfig.resolve.extensions]),\n ]\n\n // look for compiled js with jsx intact as specified by module:jsx\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n if (isServer) {\n const externalize = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n\n if (tamaguiOptions.shouldExcludeFromServer) {\n const userRes = tamaguiOptions.shouldExcludeFromServer({\n context,\n request,\n fullPath,\n })\n if (userRes !== undefined) {\n return userRes\n }\n }\n\n const SEP = path.sep\n\n // must inline react-native so we can alias to react-native-web\n if (fullPath === 'react-native' || fullPath.startsWith(`react-native${SEP}`)) {\n return false\n }\n\n if (\n // feather icons uses react-native-svg which needs to be aliased\n // fullPath.includes('/feather-icons/') ||\n fullPath.startsWith('react-native-web') ||\n fullPath.includes(`node_modules${SEP}react-native-web`) ||\n new RegExp(`^(react-dom|react)${SEP}$`).test(fullPath)\n ) {\n return `commonjs ${fullPath}`\n }\n if (\n fullPath.startsWith('moti') ||\n fullPath.startsWith('solito') ||\n fullPath === 'tamagui' ||\n fullPath.startsWith('@tamagui') ||\n fullPath === 'react-native-safe-area-context' ||\n fullPath === 'expo-linear-gradient' ||\n fullPath.startsWith('@react-navigation') ||\n fullPath.startsWith('@gorhom')\n ) {\n return\n }\n if (/^@?react-native-/.test(request)) {\n return false\n }\n return true\n }\n\n // externalize react native things from bundle\n webpackConfig.externals = [\n ...webpackConfig.externals.map((external) => {\n if (typeof external !== 'function') {\n return external\n }\n // only runs on server\n return (ctx, cb) => {\n const isCb = typeof cb === 'function'\n const res = externalize(ctx.context, ctx.request)\n if (isCb) {\n if (typeof res === 'string') {\n return cb(null, res)\n }\n if (res) {\n return external(ctx, cb)\n }\n return cb()\n }\n return !res\n ? Promise.resolve(undefined)\n : typeof res === 'string'\n ? Promise.resolve(res)\n : external(ctx)\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n const cssLoader = getGlobalCssLoader(\n // @ts-ignore\n {\n assetPrefix: options.config.assetPrefix || config.assetPrefix,\n future: nextConfig.future,\n experimental: nextConfig.experimental || {},\n isClient: !isServer,\n isServer,\n isDevelopment: dev,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n )\n\n if (oneOfRule) {\n if (!tamaguiOptions.disableFontSupport) {\n // fonts support\n oneOfRule.oneOf.unshift({\n test: /\\.(woff(2)?|eot|ttf|otf)(\\?v=\\d+\\.\\d+\\.\\d+)?$/,\n use: [\n {\n loader: require.resolve('url-loader'),\n options: {\n limit: nextConfig.inlineFontLimit || 1024,\n fallback: require.resolve('file-loader'),\n publicPath: `${nextConfig.assetPrefix || ''}/_next/static/chunks/fonts/`,\n outputPath: `${isServer ? '../' : ''}static/chunks/fonts/`,\n name: '[name].[ext]',\n },\n },\n ],\n })\n }\n\n const cssTest =\n tamaguiOptions.includeCSSTest ??\n ((file) => {\n return file.endsWith('.css')\n })\n\n if (!dev) {\n const postCSSLoader = cssLoader[cssLoader.length - 1]\n // replace nextjs picky style rules with simple minicssextract\n oneOfRule.oneOf.unshift({\n test: cssTest,\n use: [MiniCSSExtractPlugin.loader, 'css-loader', postCSSLoader],\n sideEffects: true,\n })\n webpackConfig.plugins.push(\n new MiniCSSExtractPlugin({\n filename: 'static/css/[contenthash].css',\n ignoreOrder: true,\n runtime: false,\n })\n )\n if (tamaguiOptions.inlineCSS) {\n webpackConfig.plugins.push(new InlineCSSPlugin())\n }\n } else {\n oneOfRule.oneOf.unshift({\n test: cssTest,\n sideEffects: true,\n use: cssLoader,\n })\n }\n }\n\n const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf)\n const oneOfJSRules: any[] = webpackConfig.module.rules[firstOneOfRule].oneOf\n const afterSWCLoaderIndex =\n oneOfJSRules.findIndex(\n (x) => x && x.use && x.use.loader === 'next-swc-loader' && x.issuerLayer !== 'api'\n ) + 1\n const swcLoader = oneOfJSRules[afterSWCLoaderIndex]\n\n // put an earlier loader where we just do tamagui stuff before regular swc\n oneOfJSRules.splice(\n afterSWCLoaderIndex,\n 0,\n {\n test: /(bottom-sheet|react-native-reanimated).*\\.[tj]sx?$/,\n use: [\n {\n loader: 'babel-loader',\n options: {\n presets: ['@babel/preset-react'],\n plugins: ['react-native-reanimated/plugin'],\n },\n },\n ],\n },\n {\n test: /\\.(jsx?|tsx?)$/,\n exclude: (path: string) => shouldExclude(path, options.dir),\n use: [\n ...[].concat(swcLoader.use),\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n }\n )\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n }\n }\n}\n\nfunction getSupportedBrowsers(dir, isDevelopment) {\n let browsers\n try {\n browsers = browserslist.loadConfig({\n path: dir,\n env: isDevelopment ? 'development' : 'production',\n })\n } catch {}\n\n return browsers\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["path", "_a"]
7
7
  }
package/dist/jsx/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export * from "./withTamagui";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["export * from './withTamagui'\n"],
5
+ "mappings": "AAAA,cAAc;",
6
+ "names": []
7
+ }