From a05371024cf59d48b6ca849d76e9dc9f0b4062c1 Mon Sep 17 00:00:00 2001 From: Matthieu Sieben Date: Sun, 14 Jul 2024 09:35:56 +0200 Subject: [PATCH] work with packages from atproto repo --- metro.config.js | 66 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/metro.config.js b/metro.config.js index a49d95f9aa..83daa20333 100644 --- a/metro.config.js +++ b/metro.config.js @@ -1,6 +1,70 @@ // Learn more https://docs.expo.io/guides/customizing-metro +const {resolve} = require('node:path') const {getDefaultConfig} = require('expo/metro-config') -const cfg = getDefaultConfig(__dirname) + +const projectRoot = __dirname +const atprotoRoot = resolve(projectRoot, '../atproto') + +const cfg = getDefaultConfig(projectRoot) + +const atprotoPackagesDirs = [ + 'packages/api', + 'packages/aws', + 'packages/bsky', + 'packages/bsync', + 'packages/common', + 'packages/common-web', + 'packages/crypto', + 'packages/dev-env', + 'packages/dev-infra', + 'packages/did', + 'packages/identity', + 'packages/lex-cli', + 'packages/lexicon', + 'packages/ozone', + 'packages/pds', + 'packages/repo', + 'packages/syntax', + 'packages/xrpc', + 'packages/xrpc-server', + 'packages/oauth/jwk', + 'packages/oauth/jwk-jose', + 'packages/oauth/jwk-webcrypto', + 'packages/oauth/oauth-client', + 'packages/oauth/oauth-client-browser', + 'packages/oauth/oauth-client-node', + 'packages/oauth/oauth-provider', + 'packages/oauth/oauth-types', + 'packages/internal/did-resolver', + 'packages/internal/fetch', + 'packages/internal/fetch-node', + 'packages/internal/handle-resolver', + 'packages/internal/handle-resolver-node', + 'packages/internal/identity-resolver', + 'packages/internal/pipe', + 'packages/internal/rollup-plugin-bundle-manifest', + 'packages/internal/simple-store', + 'packages/internal/simple-store-memory', +] + +cfg.resolver.extraNodeModules = Object.fromEntries( + atprotoPackagesDirs.map(dir => { + const namespace = dir.includes('internal') ? '@atproto-labs' : '@atproto' + const name = dir.split('/').pop() + return [`${namespace}/${name}`, resolve(atprotoRoot, dir)] + }), +) + +cfg.watchFolders = [ + projectRoot, + atprotoRoot, + ...Object.values(cfg.resolver.extraNodeModules), +] + +cfg.resolver.nodeModulesPaths = [ + resolve(projectRoot, 'node_modules'), + resolve(atprotoRoot, 'node_modules'), +] cfg.resolver.sourceExts = process.env.RN_SRC_EXT ? process.env.RN_SRC_EXT.split(',').concat(cfg.resolver.sourceExts)