@tamagui/next-plugin 1.0.1-beta.21 → 1.0.1-beta.210
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/withTamagui.js +223 -124
- package/dist/cjs/withTamagui.js.map +3 -3
- package/dist/esm/index.js +0 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/withTamagui.js +214 -107
- package/dist/esm/withTamagui.js.map +3 -3
- package/dist/jsx/index.js +1 -0
- package/dist/jsx/index.js.map +7 -0
- package/dist/jsx/withTamagui.js +214 -109
- package/dist/jsx/withTamagui.js.map +7 -0
- package/package.json +24 -15
- package/src/index.ts +1 -0
- package/src/withTamagui.ts +443 -0
- package/types/withTamagui.d.ts +6 -1
- package/types/index.d.ts.map +0 -1
- package/types/withTamagui.d.ts.map +0 -1
package/dist/esm/withTamagui.js
CHANGED
|
@@ -1,62 +1,151 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import path from "path";
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import path, { dirname, join } from "path";
|
|
4
3
|
import browserslist from "browserslist";
|
|
5
4
|
import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
|
|
5
|
+
import buildResolver from "esm-resolve";
|
|
6
|
+
import InlineCSSPlugin from "html-inline-css-webpack-plugin";
|
|
6
7
|
import MiniCSSExtractPlugin from "mini-css-extract-plugin";
|
|
7
8
|
import { lazyPostCSS } from "next/dist/build/webpack/config/blocks/css";
|
|
8
9
|
import { getGlobalCssLoader } from "next/dist/build/webpack/config/blocks/css/loaders";
|
|
9
|
-
import { shouldExclude } from "tamagui-loader";
|
|
10
|
+
import { shouldExclude as shouldExcludeDefault } from "tamagui-loader";
|
|
10
11
|
import webpack from "webpack";
|
|
11
|
-
const withTamagui =
|
|
12
|
+
const withTamagui = (tamaguiOptions) => {
|
|
12
13
|
return (nextConfig = {}) => {
|
|
13
14
|
return {
|
|
14
15
|
...nextConfig,
|
|
15
16
|
webpack: (webpackConfig, options) => {
|
|
16
17
|
var _a;
|
|
17
18
|
const { dir, config, dev, isServer } = options;
|
|
19
|
+
const resolver = buildResolver(join(dir, "index.js"), {
|
|
20
|
+
constraints: "node"
|
|
21
|
+
});
|
|
18
22
|
if (typeof globalThis["__DEV__"] === "undefined") {
|
|
19
23
|
globalThis["__DEV__"] = dev;
|
|
20
24
|
}
|
|
21
25
|
const isNext12 = typeof ((_a = options.config) == null ? void 0 : _a.swcMinify) === "boolean";
|
|
26
|
+
if (!isNext12) {
|
|
27
|
+
throw new Error(`Next.js 12 only supported`);
|
|
28
|
+
}
|
|
22
29
|
const prefix = `${isServer ? " ssr " : " web "} |`;
|
|
23
|
-
const safeResolves =
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
const safeResolves = (...resolves) => {
|
|
31
|
+
var _a2;
|
|
32
|
+
const res = [];
|
|
33
|
+
for (const [out, mod] of resolves) {
|
|
34
|
+
if (out.endsWith("$")) {
|
|
35
|
+
res.push([out, mod]);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
26
38
|
try {
|
|
27
|
-
|
|
28
|
-
if (replace) {
|
|
29
|
-
next[1] = next[1].replace(...replace);
|
|
30
|
-
}
|
|
31
|
-
res.push(next);
|
|
39
|
+
res.push([out, resolveEsm(mod)]);
|
|
32
40
|
} catch (err) {
|
|
41
|
+
if (out.includes(`@gorhom/bottom-sheet`)) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if ((_a2 = process.env.DEBUG) == null ? void 0 : _a2.startsWith("tamagui")) {
|
|
45
|
+
console.log(prefix, `withTamagui skipping resolving ${out}`, err);
|
|
46
|
+
}
|
|
33
47
|
}
|
|
34
48
|
}
|
|
35
49
|
return Object.fromEntries(res);
|
|
36
|
-
}
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
50
|
+
};
|
|
51
|
+
const resolveEsm = (relativePath) => {
|
|
52
|
+
if (isServer)
|
|
53
|
+
return require.resolve(relativePath);
|
|
54
|
+
const esm = resolver(relativePath);
|
|
55
|
+
return esm ? path.join(dir, esm) : require.resolve(relativePath);
|
|
56
|
+
};
|
|
57
|
+
const SEP = path.sep;
|
|
58
|
+
const componentsFullPaths = safeResolves(
|
|
59
|
+
...tamaguiOptions.components.map(
|
|
60
|
+
(moduleName) => [moduleName, moduleName]
|
|
61
|
+
)
|
|
62
|
+
);
|
|
63
|
+
const componentsBaseDirs = Object.entries(componentsFullPaths).map(
|
|
64
|
+
([_moduleName, fullPath]) => {
|
|
65
|
+
let rootPath = dirname(fullPath);
|
|
66
|
+
while (rootPath.length > 1) {
|
|
67
|
+
const pkg = join(rootPath, "package.json");
|
|
68
|
+
const hasPkg = existsSync(pkg);
|
|
69
|
+
if (hasPkg) {
|
|
70
|
+
return rootPath;
|
|
71
|
+
} else {
|
|
72
|
+
rootPath = join(rootPath, "..");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
throw new Error(`Couldn't find package.json in any path above: ${fullPath}`);
|
|
76
|
+
}
|
|
77
|
+
);
|
|
78
|
+
function isInComponentModule(fullPath) {
|
|
79
|
+
return componentsBaseDirs.some((componentDir) => fullPath.startsWith(componentDir));
|
|
80
|
+
}
|
|
81
|
+
const shouldExclude = (path2, projectRoot) => {
|
|
82
|
+
var _a2;
|
|
83
|
+
const res = (_a2 = tamaguiOptions.shouldExtract) == null ? void 0 : _a2.call(tamaguiOptions, path2, projectRoot);
|
|
84
|
+
if (typeof res === "boolean") {
|
|
85
|
+
return !res;
|
|
86
|
+
}
|
|
87
|
+
if (isInComponentModule(path2)) {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
return shouldExcludeDefault(path2, projectRoot);
|
|
91
|
+
};
|
|
92
|
+
const rnw = tamaguiOptions.useReactNativeWebLite ? "react-native-web-lite" : "react-native-web";
|
|
93
|
+
const tamaguiAliases = safeResolves(
|
|
94
|
+
["@tamagui/core/reset.css", "@tamagui/core/reset.css"],
|
|
95
|
+
["@tamagui/core", "@tamagui/core"],
|
|
96
|
+
["react-native-svg", "@tamagui/react-native-svg"],
|
|
97
|
+
["react/jsx-runtime.js", "react/jsx-runtime"],
|
|
98
|
+
["react/jsx-runtime", "react/jsx-runtime"],
|
|
99
|
+
["react/jsx-dev-runtime.js", "react/jsx-dev-runtime"],
|
|
100
|
+
["react/jsx-dev-runtime", "react/jsx-dev-runtime"],
|
|
101
|
+
["react-native-reanimated", "react-native-reanimated"],
|
|
102
|
+
["react-native$", rnw],
|
|
103
|
+
["react-native-web$", rnw],
|
|
104
|
+
["@testing-library/react-native", "@tamagui/proxy-worm"],
|
|
105
|
+
["@gorhom/bottom-sheet$", "@gorhom/bottom-sheet"],
|
|
106
|
+
["react-native/Libraries/Renderer/shims/ReactFabric", "@tamagui/proxy-worm"],
|
|
107
|
+
...tamaguiOptions.aliasReactPackages ? [
|
|
40
108
|
["react", "react"],
|
|
41
109
|
["react-dom", "react-dom"]
|
|
42
|
-
] : []
|
|
43
|
-
|
|
110
|
+
] : []
|
|
111
|
+
);
|
|
112
|
+
const alias = {
|
|
113
|
+
...webpackConfig.resolve.alias || {},
|
|
114
|
+
...tamaguiAliases
|
|
44
115
|
};
|
|
116
|
+
if (process.env.DEBUG) {
|
|
117
|
+
console.log("Tamagui alias:", alias);
|
|
118
|
+
}
|
|
119
|
+
if (process.env.ANALYZE === "true") {
|
|
120
|
+
Object.assign(webpackConfig.optimization, {
|
|
121
|
+
concatenateModules: false
|
|
122
|
+
});
|
|
123
|
+
}
|
|
45
124
|
webpackConfig.resolve.alias = alias;
|
|
46
|
-
webpackConfig.plugins.push(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
125
|
+
webpackConfig.plugins.push(
|
|
126
|
+
new webpack.DefinePlugin({
|
|
127
|
+
"process.env.IS_STATIC": '""',
|
|
128
|
+
"process.env.TAMAGUI_TARGET": '"web"',
|
|
129
|
+
__DEV__: JSON.stringify(dev)
|
|
130
|
+
})
|
|
131
|
+
);
|
|
51
132
|
const excludeExports = tamaguiOptions.excludeReactNativeWebExports;
|
|
52
133
|
if (Array.isArray(excludeExports)) {
|
|
134
|
+
if (excludeExports.includes("PressResponder")) {
|
|
135
|
+
console.warn(
|
|
136
|
+
`\u26A0\uFE0F Warning: as of beta 118, PressReponder shouldn't be excluded in excludeReactNativeWebExports`
|
|
137
|
+
);
|
|
138
|
+
}
|
|
53
139
|
try {
|
|
54
|
-
const regexStr =
|
|
140
|
+
const regexStr = `react-native-web(-lite)?/.*(${excludeExports.join("|")}).*js`;
|
|
55
141
|
const regex = new RegExp(regexStr);
|
|
56
|
-
|
|
57
|
-
|
|
142
|
+
webpackConfig.plugins.push(
|
|
143
|
+
new webpack.NormalModuleReplacementPlugin(regex, resolveEsm("@tamagui/proxy-worm"))
|
|
144
|
+
);
|
|
58
145
|
} catch (err) {
|
|
59
|
-
console.warn(
|
|
146
|
+
console.warn(
|
|
147
|
+
`Invalid names provided to excludeReactNativeWebExports: ${excludeExports.join(", ")}`
|
|
148
|
+
);
|
|
60
149
|
}
|
|
61
150
|
}
|
|
62
151
|
if (process.env.IGNORE_TS_CONFIG_PATHS) {
|
|
@@ -69,39 +158,54 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
69
158
|
}
|
|
70
159
|
}
|
|
71
160
|
if (!dev) {
|
|
72
|
-
const cssMin = webpackConfig.optimization.minimizer.find(
|
|
161
|
+
const cssMin = webpackConfig.optimization.minimizer.find(
|
|
162
|
+
(x) => x.toString().includes("css-minimizer-plugin")
|
|
163
|
+
);
|
|
73
164
|
if (cssMin) {
|
|
74
|
-
webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(
|
|
165
|
+
webpackConfig.optimization.minimizer = webpackConfig.optimization.minimizer.slice(
|
|
166
|
+
cssMin.index,
|
|
167
|
+
1
|
|
168
|
+
);
|
|
75
169
|
}
|
|
76
170
|
webpackConfig.optimization.minimizer.push(new CssMinimizerPlugin());
|
|
77
171
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
172
|
+
webpackConfig.resolve.extensions = [
|
|
173
|
+
.../* @__PURE__ */ new Set([".web.tsx", ".web.ts", ".web.js", ...webpackConfig.resolve.extensions])
|
|
174
|
+
];
|
|
81
175
|
webpackConfig.resolve.mainFields.unshift("module:jsx");
|
|
82
176
|
if (isServer) {
|
|
83
|
-
const
|
|
84
|
-
var _a2;
|
|
177
|
+
const externalize = (context, request) => {
|
|
85
178
|
const fullPath = request[0] === "." ? path.join(context, request) : request;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
179
|
+
if (tamaguiOptions.shouldExcludeFromServer) {
|
|
180
|
+
const userRes = tamaguiOptions.shouldExcludeFromServer({
|
|
181
|
+
context,
|
|
182
|
+
request,
|
|
183
|
+
fullPath
|
|
184
|
+
});
|
|
185
|
+
if (userRes !== void 0) {
|
|
186
|
+
return userRes;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (isInComponentModule(fullPath)) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
if (fullPath.includes("react-native-web-lite")) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
if (fullPath === "react-native" || fullPath.startsWith(`react-native${SEP}`)) {
|
|
196
|
+
return false;
|
|
93
197
|
}
|
|
94
|
-
if (fullPath.startsWith("react-native-web") || fullPath.includes(
|
|
198
|
+
if (fullPath.startsWith("react-native-web") || fullPath.includes(`node_modules${SEP}react-native-web`) || new RegExp(`^(react-dom|react)${SEP}$`).test(fullPath)) {
|
|
95
199
|
return `commonjs ${fullPath}`;
|
|
96
200
|
}
|
|
97
|
-
if (fullPath.
|
|
201
|
+
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
202
|
return;
|
|
99
203
|
}
|
|
100
|
-
if (
|
|
204
|
+
if (/^@?react-native-/.test(request)) {
|
|
101
205
|
return false;
|
|
102
206
|
}
|
|
103
207
|
return true;
|
|
104
|
-
}
|
|
208
|
+
};
|
|
105
209
|
webpackConfig.externals = [
|
|
106
210
|
...webpackConfig.externals.map((external) => {
|
|
107
211
|
if (typeof external !== "function") {
|
|
@@ -109,7 +213,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
109
213
|
}
|
|
110
214
|
return (ctx, cb) => {
|
|
111
215
|
const isCb = typeof cb === "function";
|
|
112
|
-
const res =
|
|
216
|
+
const res = externalize(ctx.context, ctx.request);
|
|
113
217
|
if (isCb) {
|
|
114
218
|
if (typeof res === "string") {
|
|
115
219
|
return cb(null, res);
|
|
@@ -125,56 +229,88 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
125
229
|
];
|
|
126
230
|
}
|
|
127
231
|
const oneOfRule = webpackConfig.module.rules.find((x) => !!x.oneOf);
|
|
128
|
-
const cssLoader = getGlobalCssLoader(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
232
|
+
const cssLoader = getGlobalCssLoader(
|
|
233
|
+
{
|
|
234
|
+
assetPrefix: options.config.assetPrefix || config.assetPrefix,
|
|
235
|
+
future: nextConfig.future,
|
|
236
|
+
experimental: nextConfig.experimental || {},
|
|
237
|
+
isClient: !isServer,
|
|
238
|
+
isServer,
|
|
239
|
+
isDevelopment: dev
|
|
240
|
+
},
|
|
241
|
+
() => lazyPostCSS(dir, getSupportedBrowsers(dir, dev)),
|
|
242
|
+
[]
|
|
243
|
+
);
|
|
136
244
|
if (oneOfRule) {
|
|
245
|
+
if (!tamaguiOptions.disableFontSupport) {
|
|
246
|
+
oneOfRule.oneOf.unshift({
|
|
247
|
+
test: /\.(woff(2)?|eot|ttf|otf)(\?v=\d+\.\d+\.\d+)?$/,
|
|
248
|
+
use: [
|
|
249
|
+
{
|
|
250
|
+
loader: require.resolve("url-loader"),
|
|
251
|
+
options: {
|
|
252
|
+
limit: nextConfig.inlineFontLimit || 1024,
|
|
253
|
+
fallback: require.resolve("file-loader"),
|
|
254
|
+
publicPath: `${nextConfig.assetPrefix || ""}/_next/static/chunks/fonts/`,
|
|
255
|
+
outputPath: `${isServer ? "../" : ""}static/chunks/fonts/`,
|
|
256
|
+
name: "[name].[ext]"
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
const cssTest = tamaguiOptions.includeCSSTest ?? ((file) => {
|
|
263
|
+
return file.endsWith(".css");
|
|
264
|
+
});
|
|
137
265
|
if (!dev) {
|
|
138
266
|
const postCSSLoader = cssLoader[cssLoader.length - 1];
|
|
139
267
|
oneOfRule.oneOf.unshift({
|
|
140
|
-
test:
|
|
268
|
+
test: cssTest,
|
|
141
269
|
use: [MiniCSSExtractPlugin.loader, "css-loader", postCSSLoader],
|
|
142
270
|
sideEffects: true
|
|
143
271
|
});
|
|
144
|
-
webpackConfig.plugins.push(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
272
|
+
webpackConfig.plugins.push(
|
|
273
|
+
new MiniCSSExtractPlugin({
|
|
274
|
+
filename: "static/css/[contenthash].css",
|
|
275
|
+
ignoreOrder: true,
|
|
276
|
+
runtime: false
|
|
277
|
+
})
|
|
278
|
+
);
|
|
279
|
+
if (tamaguiOptions.inlineCSS) {
|
|
280
|
+
webpackConfig.plugins.push(new InlineCSSPlugin());
|
|
281
|
+
}
|
|
149
282
|
} else {
|
|
150
283
|
oneOfRule.oneOf.unshift({
|
|
151
|
-
test:
|
|
284
|
+
test: cssTest,
|
|
152
285
|
sideEffects: true,
|
|
153
286
|
use: cssLoader
|
|
154
287
|
});
|
|
155
288
|
}
|
|
156
289
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
290
|
+
const firstOneOfRule = webpackConfig.module.rules.findIndex((x) => x && !!x.oneOf);
|
|
291
|
+
const oneOfJSRules = webpackConfig.module.rules[firstOneOfRule].oneOf;
|
|
292
|
+
const afterSWCLoaderIndex = oneOfJSRules.findIndex(
|
|
293
|
+
(x) => x && x.use && x.use.loader === "next-swc-loader" && x.issuerLayer !== "api"
|
|
294
|
+
) + 1;
|
|
295
|
+
const swcLoader = oneOfJSRules[afterSWCLoaderIndex];
|
|
296
|
+
oneOfJSRules.splice(
|
|
297
|
+
afterSWCLoaderIndex,
|
|
298
|
+
0,
|
|
299
|
+
{
|
|
300
|
+
test: /(bottom-sheet|react-native-reanimated).*\.[tj]sx?$/,
|
|
164
301
|
use: [
|
|
165
302
|
{
|
|
166
303
|
loader: "babel-loader",
|
|
167
304
|
options: {
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
"@babel/plugin-transform-react-jsx"
|
|
171
|
-
]
|
|
305
|
+
presets: ["@babel/preset-react"],
|
|
306
|
+
plugins: ["react-native-reanimated/plugin"]
|
|
172
307
|
}
|
|
173
308
|
}
|
|
174
309
|
]
|
|
175
|
-
},
|
|
310
|
+
},
|
|
311
|
+
{
|
|
176
312
|
test: /\.(jsx?|tsx?)$/,
|
|
177
|
-
exclude: (path2) => shouldExclude(path2, options.dir
|
|
313
|
+
exclude: (path2) => shouldExclude(path2, options.dir),
|
|
178
314
|
use: [
|
|
179
315
|
...[].concat(swcLoader.use),
|
|
180
316
|
{
|
|
@@ -182,36 +318,8 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
182
318
|
options: tamaguiOptions
|
|
183
319
|
}
|
|
184
320
|
]
|
|
185
|
-
}
|
|
186
|
-
|
|
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
|
-
}
|
|
321
|
+
}
|
|
322
|
+
);
|
|
215
323
|
if (typeof nextConfig.webpack === "function") {
|
|
216
324
|
return nextConfig.webpack(webpackConfig, options);
|
|
217
325
|
}
|
|
@@ -219,7 +327,7 @@ const withTamagui = /* @__PURE__ */ __name((tamaguiOptions) => {
|
|
|
219
327
|
}
|
|
220
328
|
};
|
|
221
329
|
};
|
|
222
|
-
}
|
|
330
|
+
};
|
|
223
331
|
function getSupportedBrowsers(dir, isDevelopment) {
|
|
224
332
|
let browsers;
|
|
225
333
|
try {
|
|
@@ -231,7 +339,6 @@ function getSupportedBrowsers(dir, isDevelopment) {
|
|
|
231
339
|
}
|
|
232
340
|
return browsers;
|
|
233
341
|
}
|
|
234
|
-
__name(getSupportedBrowsers, "getSupportedBrowsers");
|
|
235
342
|
export {
|
|
236
343
|
withTamagui
|
|
237
344
|
};
|
|
@@ -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": "
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["import { existsSync } from 'fs'\nimport path, { dirname, 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 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 SEP = path.sep\n\n // automatically compile our given components\n const componentsFullPaths = safeResolves(\n ...tamaguiOptions.components.map(\n (moduleName) => [moduleName, moduleName] as [string, string]\n )\n )\n\n const componentsBaseDirs = Object.entries(componentsFullPaths).map(\n ([_moduleName, fullPath]) => {\n let rootPath = dirname(fullPath as string)\n while (rootPath.length > 1) {\n const pkg = join(rootPath, 'package.json')\n const hasPkg = existsSync(pkg)\n if (hasPkg) {\n return rootPath\n } else {\n rootPath = join(rootPath, '..')\n }\n }\n throw new Error(`Couldn't find package.json in any path above: ${fullPath}`)\n }\n )\n\n function isInComponentModule(fullPath: string) {\n return componentsBaseDirs.some((componentDir) => fullPath.startsWith(componentDir))\n }\n\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 if (isInComponentModule(path)) {\n return false\n }\n return shouldExcludeDefault(path, projectRoot)\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 ['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 // eslint-disable-next-line no-console\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 // eslint-disable-next-line no-console\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 if (isInComponentModule(fullPath)) {\n return false\n }\n\n if (fullPath.includes('react-native-web-lite')) {\n // always inline react-native-web-lite due to errors where next.js resolved the path to esm\n return false\n }\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('/lucide-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": ["_a", "path"]
|
|
7
7
|
}
|
package/dist/jsx/index.js
CHANGED