Live video on the AT Protocol
1const { FileStore } = require("metro-cache");
2const path = require("path");
3
4const { getSentryExpoConfig } = require("@sentry/react-native/metro");
5
6let config = getSentryExpoConfig(__dirname, {
7 // [Web-only]: Enables CSS support in Metro.
8 isCSSEnabled: true,
9});
10
11config.cacheStores = [
12 new FileStore({
13 root: path.join(__dirname, "node_modules", ".cache", "metro"),
14 }),
15];
16
17const overrides = {};
18
19const nativeOverrides = {
20 crypto: "react-native-quick-crypto",
21 // "node:crypto": "react-native-quick-crypto",
22 stream: "readable-stream",
23 // "node:buffer": "buffer",
24 // "node:util": "util",
25 // "node:http": path.resolve(__dirname, "./empty.mjs"),
26 // "node:https": path.resolve(__dirname, "./empty.mjs"),
27 // // "node:events": "events",
28};
29
30config.resolver.resolveRequest = (context, moduleName, platform) => {
31 if (moduleName.includes("zustand")) {
32 const result = require.resolve(moduleName);
33 return context.resolveRequest(context, result, platform);
34 }
35 if (platform !== "web") {
36 for (const [key, value] of Object.entries(nativeOverrides)) {
37 if (moduleName === key) {
38 return context.resolveRequest(context, value, platform);
39 }
40 }
41 }
42 for (const [key, value] of Object.entries(overrides)) {
43 if (moduleName === key) {
44 return context.resolveRequest(context, value, platform);
45 }
46 }
47 // otherwise chain to the standard Metro resolver.
48 return context.resolveRequest(context, moduleName, platform);
49};
50
51config.resolver.sourceExts.push("mjs");
52config.resolver.assetExts.push("md");
53
54config.resolver.unstable_conditionNames.push("@streamplace/dev", "browser");
55
56module.exports = config;