@tamagui/next-plugin 1.0.0-alpha.34 → 1.0.0-alpha.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"at":1636517190314}
package/dist/index.cjs CHANGED
@@ -42,156 +42,151 @@ var __toModule = (module2) => {
42
42
 
43
43
  // src/index.ts
44
44
  __export(exports, {
45
- withTamagui: () => withTamagui
45
+ withTamagui: () => withTamagui,
46
+ withTranspileTamagui: () => withTranspileTamagui
46
47
  });
48
+ var import_next_transpile_modules = __toModule(require("next-transpile-modules"));
47
49
 
48
50
  // src/withTamagui.ts
51
+ var import_fs = __toModule(require("fs"));
49
52
  var import_path = __toModule(require("path"));
50
53
  var import_css_minimizer_webpack_plugin = __toModule(require("css-minimizer-webpack-plugin"));
51
- var import_webpack = __toModule(require("webpack"));
52
- var withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
53
- return (nextConfig = {}) => {
54
- return Object.assign({}, nextConfig, {
55
- webpack: (webpackConfig, options) => {
56
- const { config, dev, isServer } = options;
57
- webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, webpackConfig.resolve.alias || {}), {
58
- "react-native$": "react-native-web",
59
- "react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
60
- "react/jsx-runtime": require.resolve("react/jsx-runtime"),
61
- "react/jsx-dev-runtime": require.resolve("react/jsx-dev-runtime"),
62
- react: require.resolve("react"),
63
- "react-dom": require.resolve("react-dom")
64
- });
65
- webpackConfig.plugins.push(new import_webpack.default.DefinePlugin({
66
- "process.env.TAMAGUI_TARGET": '"web"'
67
- }));
68
- if (process.env.IGNORE_TS_CONFIG_PATHS) {
69
- console.log("ignoring tsconfig paths, they mess up transpile");
70
- delete webpackConfig.resolve.plugins[0].paths["@tamagui/*"];
71
- delete webpackConfig.resolve.plugins[0].paths["tamagui"];
72
- }
73
- const cssMin = webpackConfig.optimization.minimizer.find((x) => x.toString().includes("css-minimizer-plugin"));
74
- if (cssMin) {
75
- webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(cssMin.index, 1);
76
- }
77
- webpackConfig.optimization.minimizer.push(new import_css_minimizer_webpack_plugin.default());
78
- if (!webpackConfig.resolve.extensions.includes(".web.js")) {
79
- webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
80
- }
81
- webpackConfig.resolve.mainFields.unshift("module:jsx");
82
- const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
83
- const includeModule = /* @__PURE__ */ __name((context, request) => {
84
- const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
85
- if (/^\@?react-native-/.test(request)) {
86
- return false;
87
- }
88
- if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
89
- return `commonjs ${fullPath}`;
90
- }
91
- if (/^(react-dom|react)$/.test(fullPath)) {
92
- return `commonjs ${fullPath}`;
54
+ var withTamagui = /* @__PURE__ */ __name((snackOptions) => ({
55
+ webpack: (webpackConfig, options) => {
56
+ var _a;
57
+ ensureReactNativeWebShim();
58
+ const { config, dev, isServer } = options;
59
+ const cssMin = webpackConfig.optimization.minimizer.find((x) => x.toString().includes("css-minimizer-plugin"));
60
+ if (cssMin) {
61
+ webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(cssMin.index, 1);
62
+ }
63
+ webpackConfig.optimization.minimizer.push(new import_css_minimizer_webpack_plugin.default());
64
+ webpackConfig.resolve.alias = __spreadProps(__spreadValues({}, webpackConfig.resolve.alias || {}), {
65
+ "react-native$": "react-native-web",
66
+ "react-native-web/src/modules/normalizeColor": require.resolve("react-native-web/dist/cjs/modules/normalizeColor"),
67
+ "react/jsx-runtime": require.resolve("react/jsx-runtime"),
68
+ "react/jsx-dev-runtime": require.resolve("react/jsx-dev-runtime"),
69
+ react: require.resolve("react"),
70
+ "react-dom": require.resolve("react-dom")
71
+ });
72
+ if (!webpackConfig.resolve.extensions.includes(".web.js")) {
73
+ webpackConfig.resolve.extensions = [".web.js", ...webpackConfig.resolve.extensions];
74
+ }
75
+ webpackConfig.resolve.mainFields.unshift("module:jsx");
76
+ const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === "undefined";
77
+ const includeModule = /* @__PURE__ */ __name((context, request) => {
78
+ const fullPath = request[0] === "." ? import_path.default.join(context, request) : request;
79
+ if (fullPath.startsWith("next")) {
80
+ return `commonjs ${fullPath}`;
81
+ }
82
+ if (fullPath.startsWith("react-native-web") || fullPath.includes("node_modules/react-native-web")) {
83
+ return `commonjs ${fullPath}`;
84
+ }
85
+ if (/^(react-dom|react)$/.test(fullPath)) {
86
+ return `commonjs ${fullPath}`;
87
+ }
88
+ return true;
89
+ }, "includeModule");
90
+ if (isServer) {
91
+ webpackConfig.externals = [
92
+ ...webpackConfig.externals.map((external) => {
93
+ if (typeof external !== "function") {
94
+ return external;
93
95
  }
94
- return true;
95
- }, "includeModule");
96
- if (isServer) {
97
- webpackConfig.externals = [
98
- ...webpackConfig.externals.map((external) => {
99
- if (typeof external !== "function") {
100
- return external;
96
+ if (isWebpack5) {
97
+ return (ctx, cb) => {
98
+ const res = includeModule(ctx.context, ctx.request);
99
+ if (typeof res === "string") {
100
+ return cb(null, res);
101
101
  }
102
- if (isWebpack5) {
103
- return (ctx, cb) => {
104
- const res = includeModule(ctx.context, ctx.request);
105
- if (typeof res === "string") {
106
- return cb(null, res);
107
- }
108
- if (res) {
109
- return external(ctx, cb);
110
- }
111
- return cb();
112
- };
113
- }
114
- return (ctx, req, cb) => {
115
- const res = includeModule(ctx, req);
116
- if (typeof res === "string") {
117
- return cb(null, res);
118
- }
119
- if (res) {
120
- return external(ctx, cb);
121
- }
122
- return cb();
123
- };
124
- })
125
- ];
126
- }
127
- const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
128
- if (oneOfRule) {
129
- if (!dev) {
130
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
131
- oneOfRule.oneOf = [
132
- {
133
- test: /\.css$/i,
134
- use: [MiniCssExtractPlugin.loader, "css-loader"],
135
- sideEffects: true
136
- }
137
- ];
138
- const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
139
- webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
140
- filename: "static/css/[name].[contenthash].css",
141
- ignoreOrder: true
142
- }));
143
- } else {
144
- const {
145
- getGlobalCssLoader
146
- } = require("next/dist/build/webpack/config/blocks/css/loaders");
147
- oneOfRule.oneOf.unshift({
148
- test: /\.css$/i,
149
- sideEffects: true,
150
- use: getGlobalCssLoader({
151
- assetPrefix: options.config.assetPrefix,
152
- future: { webpack5: true },
153
- isClient: !isServer,
154
- isServer,
155
- isDevelopment: true
156
- }, [], [])
157
- });
158
- }
159
- }
160
- const shouldExclude = /* @__PURE__ */ __name((x) => {
161
- if (x.includes(options.dir) || tamaguiOptions.components.some((c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/_jsx/`))) {
162
- return false;
102
+ return cb();
103
+ };
163
104
  }
164
- return true;
165
- }, "shouldExclude");
166
- const [first, second, ...rest] = webpackConfig.module.rules;
167
- webpackConfig.module.rules = [
168
- first,
169
- second,
105
+ return (ctx, req, cb) => {
106
+ };
107
+ })
108
+ ];
109
+ }
110
+ const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
111
+ if (oneOfRule) {
112
+ if (!dev) {
113
+ const MiniCssExtractPlugin = require("mini-css-extract-plugin");
114
+ oneOfRule.oneOf = [
170
115
  {
171
- test: /\.(tsx|js|mjs|jsx)$/,
172
- exclude: shouldExclude,
173
- use: [
174
- {
175
- loader: "esbuild-loader",
176
- options: {
177
- loader: "tsx",
178
- minify: false
179
- }
180
- },
181
- {
182
- loader: "tamagui-loader",
183
- options: tamaguiOptions
184
- }
185
- ]
186
- },
187
- ...rest
116
+ test: /\.css$/i,
117
+ use: [MiniCssExtractPlugin.loader, "css-loader"],
118
+ sideEffects: true
119
+ }
188
120
  ];
189
- if (typeof nextConfig.webpack === "function") {
190
- return nextConfig.webpack(webpackConfig, options);
191
- }
192
- return webpackConfig;
121
+ const idx = webpackConfig.plugins.findIndex((x) => x.constructor.name === "NextMiniCssExtractPlugin");
122
+ webpackConfig.plugins.splice(idx, 1, new MiniCssExtractPlugin({
123
+ filename: "static/css/[name].[contenthash].css",
124
+ ignoreOrder: true
125
+ }));
126
+ } else {
127
+ const { getGlobalCssLoader } = require("next/dist/build/webpack/config/blocks/css/loaders");
128
+ oneOfRule.oneOf.unshift({
129
+ test: /\.css$/i,
130
+ sideEffects: true,
131
+ use: getGlobalCssLoader({
132
+ assetPrefix: options.config.assetPrefix,
133
+ future: { webpack5: true },
134
+ isClient: !isServer,
135
+ isServer,
136
+ isDevelopment: true
137
+ }, [], [])
138
+ });
139
+ }
140
+ }
141
+ const isNext11 = typeof ((_a = webpackConfig.module.rules[0].resolve) == null ? void 0 : _a.fullySpecified) === "boolean";
142
+ const loader = {
143
+ loader: "tamagui-loader",
144
+ options: snackOptions
145
+ };
146
+ if (isNext11) {
147
+ const [first, second, ...rest] = webpackConfig.module.rules;
148
+ webpackConfig.module.rules = [
149
+ first,
150
+ second,
151
+ {
152
+ test: /\.(tsx|ts|js|mjs|jsx)$/,
153
+ use: loader
154
+ },
155
+ ...rest
156
+ ];
157
+ } else {
158
+ webpackConfig.module.rules[0].use = [...[].concat(webpackConfig.module.rules[0].use), loader];
159
+ }
160
+ return webpackConfig;
161
+ }
162
+ }), "withTamagui");
163
+ function ensureReactNativeWebShim() {
164
+ const dirs = [
165
+ import_path.default.join(require.resolve("tamagui"), "..", ".."),
166
+ import_path.default.join(require.resolve("@tamagui/core"), "..", "..")
167
+ ];
168
+ for (const dir of dirs) {
169
+ const fakeReactNative = import_path.default.join(dir, "node_modules", "react-native.js");
170
+ const parentFakeDir = import_path.default.join(dir, "..", "..", "node_modules");
171
+ const files = new Set([
172
+ fakeReactNative,
173
+ import_fs.default.existsSync(parentFakeDir) ? import_path.default.join(parentFakeDir, "react-native.js") : null
174
+ ].filter(isPresent));
175
+ files.forEach((file) => {
176
+ if (!import_fs.default.existsSync(file)) {
177
+ import_fs.default.writeFileSync(fakeReactNative, 'module.exports = require("react-native-web")');
193
178
  }
194
179
  });
195
- };
196
- }, "withTamagui");
180
+ }
181
+ }
182
+ __name(ensureReactNativeWebShim, "ensureReactNativeWebShim");
183
+ function isPresent(input) {
184
+ return input != null;
185
+ }
186
+ __name(isPresent, "isPresent");
187
+
188
+ // src/index.ts
189
+ var withTranspileTamagui = (0, import_next_transpile_modules.default)(["tamagui"], {
190
+ debug: true
191
+ });
197
192
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/withTamagui.ts"],
4
- "sourcesContent": ["export * from './withTamagui'\n", "import path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\nimport webpack from 'webpack'\n\nexport const withTamagui = (tamaguiOptions: TamaguiOptions) => {\n return (nextConfig: any = {}) => {\n return Object.assign({}, nextConfig, {\n webpack: (webpackConfig, options) => {\n const { config, dev, isServer } = options\n\n webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react-native$': 'react-native-web',\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n // fix mdx-bundler issue importing .js specifically\n // 'react/jsx-runtime.js': require.resolve('react/jsx-runtime'),\n 'react/jsx-runtime': require.resolve('react/jsx-runtime'),\n 'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),\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.TAMAGUI_TARGET': '\"web\"',\n })\n )\n\n if (process.env.IGNORE_TS_CONFIG_PATHS) {\n console.log('ignoring tsconfig paths, they mess up transpile')\n delete webpackConfig.resolve.plugins[0].paths['@tamagui/*']\n delete webpackConfig.resolve.plugins[0].paths['tamagui']\n }\n\n // TODO document and make configurable\n // replace minifier with css-minimizer-webpack-plugin which handles deduping atomic styles\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 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 // why is it undefined on next11??? but it says using webpack5\n const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (/^\\@?react-native-/.test(request)) {\n return false\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\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 (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\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 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) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf = [\n {\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n },\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 const {\n getGlobalCssLoader,\n } = require('next/dist/build/webpack/config/blocks/css/loaders')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n {\n assetPrefix: options.config.assetPrefix,\n future: { webpack5: true },\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n [],\n []\n ),\n })\n }\n }\n\n // add loader\n const shouldExclude = (x) => {\n // analyze everything in our src dir\n // analyze everything in the components dirs\n if (\n x.includes(options.dir) ||\n tamaguiOptions.components.some(\n (c) => x.includes(`/node_modules/${c}`) || x.includes(`${c}/_jsx/`)\n )\n ) {\n return false\n }\n // exclude everything else\n return true\n }\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|js|mjs|jsx)$/,\n exclude: shouldExclude,\n use: [\n {\n loader: 'esbuild-loader',\n options: {\n loader: 'tsx',\n minify: false,\n },\n },\n {\n loader: 'tamagui-loader',\n options: tamaguiOptions,\n },\n ],\n },\n ...rest,\n ]\n\n if (typeof nextConfig.webpack === 'function') {\n return nextConfig.webpack(webpackConfig, options)\n }\n\n return webpackConfig\n },\n })\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import transpileModule from 'next-transpile-modules'\n\nexport { withTamagui } from './withTamagui'\n\nexport const withTranspileTamagui = transpileModule(['tamagui'], {\n debug: true,\n})\n", "import fs from 'fs'\nimport path from 'path'\n\nimport { TamaguiOptions } from '@tamagui/static'\nimport CssMinimizerPlugin from 'css-minimizer-webpack-plugin'\n\nexport const withTamagui = (snackOptions: TamaguiOptions) => ({\n webpack: (webpackConfig, options) => {\n ensureReactNativeWebShim()\n\n const { config, dev, isServer } = options\n\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 webpackConfig.resolve.alias = {\n ...(webpackConfig.resolve.alias || {}),\n 'react-native$': 'react-native-web',\n 'react-native-web/src/modules/normalizeColor': require.resolve(\n 'react-native-web/dist/cjs/modules/normalizeColor'\n ),\n 'react/jsx-runtime': require.resolve('react/jsx-runtime'),\n 'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),\n react: require.resolve('react'),\n 'react-dom': require.resolve('react-dom'),\n }\n\n if (!webpackConfig.resolve.extensions.includes('.web.js')) {\n webpackConfig.resolve.extensions = ['.web.js', ...webpackConfig.resolve.extensions]\n }\n\n // ensure we compile tamagui itself\n webpackConfig.resolve.mainFields.unshift('module:jsx')\n\n // why is it undefined on next11??? but it says using webpack5\n const isWebpack5 = !!config.future.webpack5 || typeof config.webpack5 === 'undefined'\n\n const includeModule = (context: string, request: string) => {\n const fullPath = request[0] === '.' ? path.join(context, request) : request\n if (fullPath.startsWith('next')) {\n return `commonjs ${fullPath}`\n }\n if (\n fullPath.startsWith('react-native-web') ||\n fullPath.includes('node_modules/react-native-web')\n ) {\n return `commonjs ${fullPath}`\n }\n if (/^(react-dom|react)$/.test(fullPath)) {\n return `commonjs ${fullPath}`\n }\n return true\n }\n\n if (isServer) {\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 (ctx, cb) => {\n const res = includeModule(ctx.context, ctx.request)\n // if (res === false) {\n // return external(ctx, cb)\n // }\n if (typeof res === 'string') {\n return cb(null, res)\n }\n return cb()\n }\n }\n return (ctx, req, cb) => {\n // const fullPath = path.join(ctx, req)\n // return includeModule(fullPath) ? cb() : external(ctx, req, cb)\n }\n }),\n ]\n }\n\n const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf)\n\n if (oneOfRule) {\n if (!dev) {\n // replace nextjs picky style rules with simple minicssextract\n const MiniCssExtractPlugin = require('mini-css-extract-plugin')\n oneOfRule.oneOf = [\n {\n test: /\\.css$/i,\n use: [MiniCssExtractPlugin.loader, 'css-loader'],\n sideEffects: true,\n },\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 const { getGlobalCssLoader } = require('next/dist/build/webpack/config/blocks/css/loaders')\n oneOfRule.oneOf.unshift({\n test: /\\.css$/i,\n sideEffects: true,\n use: getGlobalCssLoader(\n {\n assetPrefix: options.config.assetPrefix,\n future: { webpack5: true },\n isClient: !isServer,\n isServer,\n isDevelopment: true,\n },\n [],\n []\n ),\n })\n }\n }\n\n // add loader\n const isNext11 = typeof webpackConfig.module.rules[0].resolve?.fullySpecified === 'boolean'\n const loader = {\n loader: 'tamagui-loader',\n options: snackOptions,\n }\n if (isNext11) {\n const [first, second, ...rest] = webpackConfig.module.rules\n webpackConfig.module.rules = [\n first,\n second,\n {\n test: /\\.(tsx|ts|js|mjs|jsx)$/,\n use: loader,\n },\n ...rest,\n ]\n } else {\n webpackConfig.module.rules[0].use = [...[].concat(webpackConfig.module.rules[0].use), loader]\n }\n\n return webpackConfig\n },\n})\n\nfunction ensureReactNativeWebShim() {\n const dirs = [\n path.join(require.resolve('tamagui'), '..', '..'),\n path.join(require.resolve('@tamagui/core'), '..', '..'),\n ]\n for (const dir of dirs) {\n const fakeReactNative = path.join(dir, 'node_modules', 'react-native.js')\n // monorepo dev support.. for now\n const parentFakeDir = path.join(dir, '..', '..', 'node_modules')\n const files = new Set(\n [\n fakeReactNative,\n fs.existsSync(parentFakeDir) ? path.join(parentFakeDir, 'react-native.js') : null,\n ].filter(isPresent)\n )\n\n files.forEach((file) => {\n if (!fs.existsSync(file)) {\n // console.log('inserting react-native-web shim', file)\n fs.writeFileSync(fakeReactNative, 'module.exports = require(\"react-native-web\")')\n }\n })\n }\n}\n\nfunction isPresent<T extends Object>(input: null | void | undefined | T): input is T {\n return input != null\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/index.js CHANGED
@@ -1,2 +1,10 @@
1
- export * from "./withTamagui";
1
+ import transpileModule from "next-transpile-modules";
2
+ import { withTamagui } from "./withTamagui";
3
+ const withTranspileTamagui = transpileModule(["tamagui"], {
4
+ debug: true
5
+ });
6
+ export {
7
+ withTamagui,
8
+ withTranspileTamagui
9
+ };
2
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["export * from './withTamagui'\n"],
5
- "mappings": "AAAA;",
4
+ "sourcesContent": ["import transpileModule from 'next-transpile-modules'\n\nexport { withTamagui } from './withTamagui'\n\nexport const withTranspileTamagui = transpileModule(['tamagui'], {\n debug: true,\n})\n"],
5
+ "mappings": "AAAA;AAEA;AAEO,MAAM,uBAAuB,gBAAgB,CAAC,YAAY;AAAA,EAC/D,OAAO;AAAA;",
6
6
  "names": []
7
7
  }