@tamagui/next-plugin 1.0.0-beta.179 → 1.0.0-beta.181

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.
@@ -44,6 +44,7 @@ module.exports = __toCommonJS(withTamagui_exports);
44
44
  var import_path = __toESM(require("path"));
45
45
  var import_browserslist = __toESM(require("browserslist"));
46
46
  var import_css_minimizer_webpack_plugin = __toESM(require("css-minimizer-webpack-plugin"));
47
+ var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
47
48
  var import_css = require("next/dist/build/webpack/config/blocks/css");
48
49
  var import_loaders = require("next/dist/build/webpack/config/blocks/css/loaders");
49
50
  var import_tamagui_loader = require("tamagui-loader");
@@ -52,33 +53,32 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
52
53
  return (nextConfig = {}) => {
53
54
  return __spreadProps(__spreadValues({}, nextConfig), {
54
55
  webpack: (webpackConfig, options) => {
55
- var _a, _b;
56
+ var _a;
56
57
  const { dir, config, dev, isServer } = options;
57
58
  if (typeof globalThis["__DEV__"] === "undefined") {
58
59
  globalThis["__DEV__"] = dev;
59
60
  }
60
61
  const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
61
- const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
62
- const jsxRuntime = require.resolve("react/jsx-runtime");
63
- const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
64
- const rnw = require.resolve("react-native-web");
65
- const reanimated = require.resolve("react-native-reanimated");
66
- const proxyWorm = require.resolve("@dish/proxy-worm");
67
62
  const prefix = `${isServer ? " ssr " : " web "} |`;
68
- webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, webpackConfig.resolve.alias || {}), {
69
- "react/jsx-runtime.js": jsxRuntime,
70
- "react/jsx-runtime": jsxRuntime,
71
- "react/jsx-dev-runtime.js": jsxDevRuntime,
72
- "react/jsx-dev-runtime": jsxDevRuntime,
73
- "react-native$": rnw,
74
- "react-native-reanimated": reanimated,
75
- "react-native-web$": rnw,
76
- "@testing-library/react-native": proxyWorm,
77
- "@gorhom/bottom-sheet$": require.resolve("@gorhom/bottom-sheet").replace("commonjs", "module"),
78
- "react-native-web/src": require.resolve("react-native-web/dist"),
79
- react: require.resolve("react"),
80
- "react-dom": require.resolve("react-dom")
63
+ const safeResolves = /* @__PURE__ */ __name((...resolves) => {
64
+ let res = [];
65
+ for (const [out, mod, replace] of resolves) {
66
+ try {
67
+ const next = [out, require.resolve(mod)];
68
+ if (replace) {
69
+ next[1] = next[1].replace(...replace);
70
+ }
71
+ res.push(next);
72
+ } catch (err) {
73
+ console.log(prefix, `withTamagui skipping resolving ${out}`);
74
+ }
75
+ }
76
+ return Object.fromEntries(res);
77
+ }, "safeResolves");
78
+ const alias = __spreadProps(__spreadValues(__spreadValues({}, webpackConfig.resolve.alias || {}), 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"], ["react-native-web$", "react-native-web"], ["@testing-library/react-native", "@tamagui/proxy-worm"], ["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet", ["commonjs", "module"]])), {
79
+ "react-native-web/src": require.resolve("react-native-web/dist")
81
80
  });
81
+ webpackConfig.resolve.alias = alias;
82
82
  webpackConfig.plugins.push(new import_webpack.default.DefinePlugin({
83
83
  "process.env.IS_STATIC": '""',
84
84
  "process.env.TAMAGUI_TARGET": '"web"',
@@ -127,11 +127,11 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
127
127
  if (userRes !== void 0) {
128
128
  return userRes;
129
129
  }
130
- if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
130
+ if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)\/$/.test(fullPath)) {
131
131
  return `commonjs ${fullPath}`;
132
132
  }
133
133
  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") {
134
- return "inline";
134
+ return;
135
135
  }
136
136
  if (/^\@?react-native-/.test(request)) {
137
137
  return false;
@@ -143,60 +143,50 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
143
143
  if (typeof external !== "function") {
144
144
  return external;
145
145
  }
146
- if (isWebpack5) {
147
- return async (opts) => {
148
- const { request, context } = opts;
149
- const res = includeModule(context, request);
150
- if (res === "inline") {
151
- return;
152
- }
146
+ return (ctx, cb) => {
147
+ const isCb = typeof cb === "function";
148
+ const res = includeModule(ctx.context, ctx.request);
149
+ if (isCb) {
153
150
  if (typeof res === "string") {
154
- return res;
151
+ return cb(null, res);
155
152
  }
156
153
  if (res) {
157
- return await external(opts);
154
+ return external(ctx, cb);
158
155
  }
159
- };
160
- }
161
- return (ctx, req, cb) => {
162
- const res = includeModule(ctx, req);
163
- if (typeof res === "string") {
164
- return cb(null, res);
165
- }
166
- if (res) {
167
- return external(ctx, cb);
156
+ return cb();
168
157
  }
169
- return cb();
158
+ return !res ? Promise.resolve(void 0) : typeof res === "string" ? Promise.resolve(res) : external(ctx);
170
159
  };
171
160
  })
172
161
  ];
173
162
  }
174
163
  const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
164
+ const cssLoader = (0, import_loaders.getGlobalCssLoader)({
165
+ assetPrefix: options.config.assetPrefix || config.assetPrefix,
166
+ future: nextConfig.future,
167
+ experimental: nextConfig.experimental || {},
168
+ isClient: !isServer,
169
+ isServer,
170
+ isDevelopment: dev
171
+ }, () => (0, import_css.lazyPostCSS)(dir, getSupportedBrowsers(dir, dev)), []);
175
172
  if (oneOfRule) {
176
- if (!dev && !isServer) {
177
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
173
+ if (!dev) {
174
+ const postCSSLoader = cssLoader[cssLoader.length - 1];
178
175
  oneOfRule.oneOf.unshift({
179
176
  test: /\.css$/i,
180
- use: [MiniCssExtractPlugin.loader, "css-loader"],
177
+ use: [import_mini_css_extract_plugin.default.loader, "css-loader", postCSSLoader],
181
178
  sideEffects: true
182
179
  });
183
- const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
184
- webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
180
+ webpackConfig.plugins.push(new import_mini_css_extract_plugin.default({
185
181
  filename: "static/css/[name].[contenthash].css",
186
- ignoreOrder: true
182
+ ignoreOrder: true,
183
+ runtime: false
187
184
  }));
188
185
  } else {
189
186
  oneOfRule.oneOf.unshift({
190
187
  test: /\.css$/i,
191
188
  sideEffects: true,
192
- use: (0, import_loaders.getGlobalCssLoader)({
193
- assetPrefix: options.config.assetPrefix || config.assetPrefix,
194
- future: nextConfig.future,
195
- experimental: nextConfig.experimental || {},
196
- isClient: !isServer,
197
- isServer,
198
- isDevelopment: true
199
- }, () => (0, import_css.lazyPostCSS)(dir, getSupportedBrowsers(dir, dev)), [])
189
+ use: cssLoader
200
190
  });
201
191
  }
202
192
  }
@@ -277,4 +267,8 @@ function getSupportedBrowsers(dir, isDevelopment) {
277
267
  return browsers;
278
268
  }
279
269
  __name(getSupportedBrowsers, "getSupportedBrowsers");
270
+ // Annotate the CommonJS export names for ESM import in node:
271
+ 0 && (module.exports = {
272
+ withTamagui
273
+ });
280
274
  //# sourceMappingURL=withTamagui.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/withTamagui.ts"],
4
- "sourcesContent": ["import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-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 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 isWebpack5 = !!(config.future?.webpack5 || config.webpack5)\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' web '} |`\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\n 'react/jsx-dev-runtime.js': jsxDevRuntime,\n 'react/jsx-dev-runtime': jsxDevRuntime,\n // 'react-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\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.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 (!isServer && !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 'inline'\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 if (isWebpack5) {\n return async (opts: { context: string; request: string }) => {\n const { request, context } = opts\n const res = includeModule(context, request)\n if (res === 'inline') {\n return\n }\n if (typeof res === 'string') {\n return res\n }\n if (res) {\n return await external(opts)\n }\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\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 }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev && !isServer) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n })\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: 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: true,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n ),\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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",
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 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 ['react-native-web$', 'react-native-web'],\n ['@testing-library/react-native', '@tamagui/proxy-worm'],\n ['@gorhom/bottom-sheet$', '@gorhom/bottom-sheet', ['commonjs', 'module']]\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 (!isServer && !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
6
  "names": []
7
7
  }
@@ -3,6 +3,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
  import path from "path";
4
4
  import browserslist from "browserslist";
5
5
  import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
6
+ import MiniCSSExtractPlugin from "mini-css-extract-plugin";
6
7
  import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
7
8
  import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
8
9
  import { shouldExclude } from "tamagui-loader";
@@ -12,34 +13,34 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
12
13
  return {
13
14
  ...nextConfig,
14
15
  webpack: (webpackConfig, options) => {
15
- var _a, _b;
16
+ var _a;
16
17
  const { dir, config, dev, isServer } = options;
17
18
  if (typeof globalThis["__DEV__"] === "undefined") {
18
19
  globalThis["__DEV__"] = dev;
19
20
  }
20
21
  const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
21
- const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
22
- const jsxRuntime = require.resolve("react/jsx-runtime");
23
- const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
24
- const rnw = require.resolve("react-native-web");
25
- const reanimated = require.resolve("react-native-reanimated");
26
- const proxyWorm = require.resolve("@dish/proxy-worm");
27
22
  const prefix = `${isServer ? " ssr " : " web "} |`;
28
- webpackConfig.resolve.alias = {
23
+ const safeResolves = /* @__PURE__ */ __name((...resolves) => {
24
+ let res = [];
25
+ for (const [out, mod, replace] of resolves) {
26
+ try {
27
+ const next = [out, require.resolve(mod)];
28
+ if (replace) {
29
+ next[1] = next[1].replace(...replace);
30
+ }
31
+ res.push(next);
32
+ } catch (err) {
33
+ console.log(prefix, `withTamagui skipping resolving ${out}`);
34
+ }
35
+ }
36
+ return Object.fromEntries(res);
37
+ }, "safeResolves");
38
+ const alias = {
29
39
  ...webpackConfig.resolve.alias || {},
30
- "react/jsx-runtime.js": jsxRuntime,
31
- "react/jsx-runtime": jsxRuntime,
32
- "react/jsx-dev-runtime.js": jsxDevRuntime,
33
- "react/jsx-dev-runtime": jsxDevRuntime,
34
- "react-native$": rnw,
35
- "react-native-reanimated": reanimated,
36
- "react-native-web$": rnw,
37
- "@testing-library/react-native": proxyWorm,
38
- "@gorhom/bottom-sheet$": require.resolve("@gorhom/bottom-sheet").replace("commonjs", "module"),
39
- "react-native-web/src": require.resolve("react-native-web/dist"),
40
- react: require.resolve("react"),
41
- "react-dom": require.resolve("react-dom")
40
+ ...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"], ["react-native-web$", "react-native-web"], ["@testing-library/react-native", "@tamagui/proxy-worm"], ["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet", ["commonjs", "module"]]),
41
+ "react-native-web/src": require.resolve("react-native-web/dist")
42
42
  };
43
+ webpackConfig.resolve.alias = alias;
43
44
  webpackConfig.plugins.push(new webpack.DefinePlugin({
44
45
  "process.env.IS_STATIC": '""',
45
46
  "process.env.TAMAGUI_TARGET": '"web"',
@@ -88,11 +89,11 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
88
89
  if (userRes !== void 0) {
89
90
  return userRes;
90
91
  }
91
- if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
92
+ if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)\/$/.test(fullPath)) {
92
93
  return `commonjs ${fullPath}`;
93
94
  }
94
95
  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") {
95
- return "inline";
96
+ return;
96
97
  }
97
98
  if (/^\@?react-native-/.test(request)) {
98
99
  return false;
@@ -104,60 +105,50 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
104
105
  if (typeof external !== "function") {
105
106
  return external;
106
107
  }
107
- if (isWebpack5) {
108
- return async (opts) => {
109
- const { request, context } = opts;
110
- const res = includeModule(context, request);
111
- if (res === "inline") {
112
- return;
113
- }
108
+ return (ctx, cb) => {
109
+ const isCb = typeof cb === "function";
110
+ const res = includeModule(ctx.context, ctx.request);
111
+ if (isCb) {
114
112
  if (typeof res === "string") {
115
- return res;
113
+ return cb(null, res);
116
114
  }
117
115
  if (res) {
118
- return await external(opts);
116
+ return external(ctx, cb);
119
117
  }
120
- };
121
- }
122
- return (ctx, req, cb) => {
123
- const res = includeModule(ctx, req);
124
- if (typeof res === "string") {
125
- return cb(null, res);
126
- }
127
- if (res) {
128
- return external(ctx, cb);
118
+ return cb();
129
119
  }
130
- return cb();
120
+ return !res ? Promise.resolve(void 0) : typeof res === "string" ? Promise.resolve(res) : external(ctx);
131
121
  };
132
122
  })
133
123
  ];
134
124
  }
135
125
  const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
126
+ const cssLoader = getGlobalCssLoader({
127
+ assetPrefix: options.config.assetPrefix || config.assetPrefix,
128
+ future: nextConfig.future,
129
+ experimental: nextConfig.experimental || {},
130
+ isClient: !isServer,
131
+ isServer,
132
+ isDevelopment: dev
133
+ }, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), []);
136
134
  if (oneOfRule) {
137
- if (!dev && !isServer) {
138
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
135
+ if (!dev) {
136
+ const postCSSLoader = cssLoader[cssLoader.length - 1];
139
137
  oneOfRule.oneOf.unshift({
140
138
  test: /\.css$/i,
141
- use: [MiniCssExtractPlugin.loader, "css-loader"],
139
+ use: [MiniCSSExtractPlugin.loader, "css-loader", postCSSLoader],
142
140
  sideEffects: true
143
141
  });
144
- const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
145
- webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
142
+ webpackConfig.plugins.push(new MiniCSSExtractPlugin({
146
143
  filename: "static/css/[name].[contenthash].css",
147
- ignoreOrder: true
144
+ ignoreOrder: true,
145
+ runtime: false
148
146
  }));
149
147
  } else {
150
148
  oneOfRule.oneOf.unshift({
151
149
  test: /\.css$/i,
152
150
  sideEffects: true,
153
- use: getGlobalCssLoader({
154
- assetPrefix: options.config.assetPrefix || config.assetPrefix,
155
- future: nextConfig.future,
156
- experimental: nextConfig.experimental || {},
157
- isClient: !isServer,
158
- isServer,
159
- isDevelopment: true
160
- }, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
151
+ use: cssLoader
161
152
  });
162
153
  }
163
154
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/withTamagui.ts"],
4
- "sourcesContent": ["import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport browserslist from 'browserslist'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-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 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 isWebpack5 = !!(config.future?.webpack5 || config.webpack5)\n\n // fixes https://github.com/kentcdodds/mdx-bundler/issues/143\n const jsxRuntime = require.resolve('react/jsx-runtime')\n const jsxDevRuntime = require.resolve('react/jsx-dev-runtime')\n const rnw = require.resolve('react-native-web')\n const reanimated = require.resolve('react-native-reanimated')\n const proxyWorm = require.resolve('@dish/proxy-worm')\n const prefix = `${isServer ? ' ssr ' : ' web '} |`\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react/jsx-runtime.js': jsxRuntime,\n 'react/jsx-runtime': jsxRuntime,\n 'react/jsx-dev-runtime.js': jsxDevRuntime,\n 'react/jsx-dev-runtime': jsxDevRuntime,\n // 'react-dom/client': require.resolve('react-dom/client'),\n 'react-native$': rnw,\n 'react-native-reanimated': reanimated,\n 'react-native-web$': rnw,\n '@testing-library/react-native': proxyWorm,\n '@gorhom/bottom-sheet$': require\n .resolve('@gorhom/bottom-sheet')\n .replace('commonjs', 'module'),\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.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 (!isServer && !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 'inline'\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 if (isWebpack5) {\n return async (opts: { context: string; request: string }) => {\n const { request, context } = opts\n const res = includeModule(context, request)\n if (res === 'inline') {\n return\n }\n if (typeof res === 'string') {\n return res\n }\n if (res) {\n return await external(opts)\n }\n }\n }\n return (ctx, req, cb) => {\n const res = includeModule(ctx, req)\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 }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev && !isServer) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n })\n const idx = webpackConfig.plugins.findIndex(\n (x) => x.constructor.name === 'NextMiniCssExtractPlugin'\n )\n webpackConfig.plugins.splice(\n idx,\n 1,\n new MiniCssExtractPlugin({\n filename: 'static/css/[name].[contenthash].css',\n ignoreOrder: true,\n })\n )\n } else {\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: 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: true,\n },\n // @ts-ignore\n () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),\n []\n ),\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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",
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 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 ['react-native-web$', 'react-native-web'],\n ['@testing-library/react-native', '@tamagui/proxy-worm'],\n ['@gorhom/bottom-sheet$', '@gorhom/bottom-sheet', ['commonjs', 'module']]\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 (!isServer && !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
6
  "names": []
7
7
  }
@@ -3,6 +3,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
  import path from "path";
4
4
  import browserslist from "browserslist";
5
5
  import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
6
+ import MiniCSSExtractPlugin from "mini-css-extract-plugin";
6
7
  import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
7
8
  import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
8
9
  import { shouldExclude } from "tamagui-loader";
@@ -12,34 +13,34 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
12
13
  return {
13
14
  ...nextConfig,
14
15
  webpack: (webpackConfig, options) => {
15
- var _a, _b;
16
+ var _a;
16
17
  const { dir, config, dev, isServer } = options;
17
18
  if (typeof globalThis["__DEV__"] === "undefined") {
18
19
  globalThis["__DEV__"] = dev;
19
20
  }
20
21
  const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
21
- const isWebpack5 = !!(((_b = config.future) == null ? void 0 : _b.webpack5) || config.webpack5);
22
- const jsxRuntime = require.resolve("react/jsx-runtime");
23
- const jsxDevRuntime = require.resolve("react/jsx-dev-runtime");
24
- const rnw = require.resolve("react-native-web");
25
- const reanimated = require.resolve("react-native-reanimated");
26
- const proxyWorm = require.resolve("@dish/proxy-worm");
27
22
  const prefix = `${isServer ? " ssr " : " web "} |`;
28
- webpackConfig.resolve.alias = {
23
+ const safeResolves = /* @__PURE__ */ __name((...resolves) => {
24
+ let res = [];
25
+ for (const [out, mod, replace] of resolves) {
26
+ try {
27
+ const next = [out, require.resolve(mod)];
28
+ if (replace) {
29
+ next[1] = next[1].replace(...replace);
30
+ }
31
+ res.push(next);
32
+ } catch (err) {
33
+ console.log(prefix, `withTamagui skipping resolving ${out}`);
34
+ }
35
+ }
36
+ return Object.fromEntries(res);
37
+ }, "safeResolves");
38
+ const alias = {
29
39
  ...webpackConfig.resolve.alias || {},
30
- "react/jsx-runtime.js": jsxRuntime,
31
- "react/jsx-runtime": jsxRuntime,
32
- "react/jsx-dev-runtime.js": jsxDevRuntime,
33
- "react/jsx-dev-runtime": jsxDevRuntime,
34
- "react-native$": rnw,
35
- "react-native-reanimated": reanimated,
36
- "react-native-web$": rnw,
37
- "@testing-library/react-native": proxyWorm,
38
- "@gorhom/bottom-sheet$": require.resolve("@gorhom/bottom-sheet").replace("commonjs", "module"),
39
- "react-native-web/src": require.resolve("react-native-web/dist"),
40
- react: require.resolve("react"),
41
- "react-dom": require.resolve("react-dom")
40
+ ...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"], ["react-native-web$", "react-native-web"], ["@testing-library/react-native", "@tamagui/proxy-worm"], ["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet", ["commonjs", "module"]]),
41
+ "react-native-web/src": require.resolve("react-native-web/dist")
42
42
  };
43
+ webpackConfig.resolve.alias = alias;
43
44
  webpackConfig.plugins.push(new webpack.DefinePlugin({
44
45
  "process.env.IS_STATIC": '""',
45
46
  "process.env.TAMAGUI_TARGET": '"web"',
@@ -88,11 +89,11 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
88
89
  if (userRes !== void 0) {
89
90
  return userRes;
90
91
  }
91
- if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)$/.test(fullPath)) {
92
+ if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web") || /^(react-dom|react)\/$/.test(fullPath)) {
92
93
  return `commonjs ${fullPath}`;
93
94
  }
94
95
  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") {
95
- return "inline";
96
+ return;
96
97
  }
97
98
  if (/^\@?react-native-/.test(request)) {
98
99
  return false;
@@ -104,60 +105,50 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
104
105
  if (typeof external !== "function") {
105
106
  return external;
106
107
  }
107
- if (isWebpack5) {
108
- return async (opts) => {
109
- const { request, context } = opts;
110
- const res = includeModule(context, request);
111
- if (res === "inline") {
112
- return;
113
- }
108
+ return (ctx, cb) => {
109
+ const isCb = typeof cb === "function";
110
+ const res = includeModule(ctx.context, ctx.request);
111
+ if (isCb) {
114
112
  if (typeof res === "string") {
115
- return res;
113
+ return cb(null, res);
116
114
  }
117
115
  if (res) {
118
- return await external(opts);
116
+ return external(ctx, cb);
119
117
  }
120
- };
121
- }
122
- return (ctx, req, cb) => {
123
- const res = includeModule(ctx, req);
124
- if (typeof res === "string") {
125
- return cb(null, res);
126
- }
127
- if (res) {
128
- return external(ctx, cb);
118
+ return cb();
129
119
  }
130
- return cb();
120
+ return !res ? Promise.resolve(void 0) : typeof res === "string" ? Promise.resolve(res) : external(ctx);
131
121
  };
132
122
  })
133
123
  ];
134
124
  }
135
125
  const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
126
+ const cssLoader = getGlobalCssLoader({
127
+ assetPrefix: options.config.assetPrefix || config.assetPrefix,
128
+ future: nextConfig.future,
129
+ experimental: nextConfig.experimental || {},
130
+ isClient: !isServer,
131
+ isServer,
132
+ isDevelopment: dev
133
+ }, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), []);
136
134
  if (oneOfRule) {
137
- if (!dev && !isServer) {
138
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
135
+ if (!dev) {
136
+ const postCSSLoader = cssLoader[cssLoader.length - 1];
139
137
  oneOfRule.oneOf.unshift({
140
138
  test: /\.css$/i,
141
- use: [MiniCssExtractPlugin.loader, "css-loader"],
139
+ use: [MiniCSSExtractPlugin.loader, "css-loader", postCSSLoader],
142
140
  sideEffects: true
143
141
  });
144
- const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
145
- webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
142
+ webpackConfig.plugins.push(new MiniCSSExtractPlugin({
146
143
  filename: "static/css/[name].[contenthash].css",
147
- ignoreOrder: true
144
+ ignoreOrder: true,
145
+ runtime: false
148
146
  }));
149
147
  } else {
150
148
  oneOfRule.oneOf.unshift({
151
149
  test: /\.css$/i,
152
150
  sideEffects: true,
153
- use: getGlobalCssLoader({
154
- assetPrefix: options.config.assetPrefix || config.assetPrefix,
155
- future: nextConfig.future,
156
- experimental: nextConfig.experimental || {},
157
- isClient: !isServer,
158
- isServer,
159
- isDevelopment: true
160
- }, () => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)), [])
151
+ use: cssLoader
161
152
  });
162
153
  }
163
154
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/next-plugin",
3
- "version": "1.0.0-beta.179+a2bba1a8",
3
+ "version": "1.0.0-beta.181+fff2a5b2",
4
4
  "source": "src/index.ts",
5
5
  "license": "MIT",
6
6
  "typings": "types",
@@ -18,17 +18,17 @@
18
18
  "clean:build": "tamagui-build clean:build"
19
19
  },
20
20
  "dependencies": {
21
- "@tamagui/proxy-worm": "^1.0.0-beta.179+a2bba1a8",
22
- "@tamagui/static": "^1.0.0-beta.179+a2bba1a8",
21
+ "@tamagui/proxy-worm": "^1.0.0-beta.181+fff2a5b2",
22
+ "@tamagui/static": "^1.0.0-beta.181+fff2a5b2",
23
23
  "browserslist": "^4.19.1",
24
24
  "css-minimizer-webpack-plugin": "^3.1.3",
25
25
  "esbuild-loader": "^2.18.0",
26
26
  "next-compose-plugins": "^2.2.1",
27
- "tamagui-loader": "^1.0.0-beta.179+a2bba1a8",
27
+ "tamagui-loader": "^1.0.0-beta.181+fff2a5b2",
28
28
  "thread-loader": "^3.0.4"
29
29
  },
30
30
  "devDependencies": {
31
- "@tamagui/build": "^1.0.0-beta.179+a2bba1a8",
31
+ "@tamagui/build": "^1.0.0-beta.181+fff2a5b2",
32
32
  "next": "^12.1.4"
33
33
  },
34
34
  "peerDependencies": {
@@ -37,5 +37,5 @@
37
37
  "publishConfig": {
38
38
  "access": "public"
39
39
  },
40
- "gitHead": "a2bba1a86895896d70f8d1b91a5faf94adf776e4"
40
+ "gitHead": "fff2a5b25ea3881d499e5376cd166f58556acaba"
41
41
  }
@@ -1,4 +1,4 @@
1
- import { TamaguiOptions } from '@tamagui/static';
1
+ import type { TamaguiOptions } from '@tamagui/static';
2
2
  export declare type WithTamaguiProps = TamaguiOptions & {
3
3
  shouldIncludeModuleServer?: (props: {
4
4
  context: string;
@@ -1 +1 @@
1
- {"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAQhD,oBAAY,gBAAgB,GAAG,cAAc,GAAG;IAC9C,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,mBAAoB,gBAAgB,mBACtC,GAAG,QA0SxB,CAAA"}
1
+ {"version":3,"file":"withTamagui.d.ts","sourceRoot":"","sources":["../src/withTamagui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AASrD,oBAAY,gBAAgB,GAAG,cAAc,GAAG;IAC9C,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACnC,CAAA;AAED,eAAO,MAAM,WAAW,mBAAoB,gBAAgB,mBACtC,GAAG,QA6SxB,CAAA"}