@codemoreira/esad 1.4.6-6 → 1.4.6-8

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.
Files changed (2) hide show
  1. package/package.json +6 -2
  2. package/src/plugin/index.js +40 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemoreira/esad",
3
- "version": "1.4.6-6",
3
+ "version": "1.4.6-8",
4
4
  "description": "Easy Super App Development - Zero-Config CLI and DevTools for React Native Module Federation",
5
5
  "main": "src/plugin/index.js",
6
6
  "types": "./src/plugin/index.d.ts",
@@ -47,7 +47,11 @@
47
47
  "react-native-reanimated": "~3.16.1",
48
48
  "form-data": "^4.0.0",
49
49
  "fs-extra": "^11.2.0",
50
- "node-fetch": "^2.7.0"
50
+ "node-fetch": "^2.7.0",
51
+ "@babel/plugin-transform-flow-strip-types": "^7.20.0",
52
+ "@babel/plugin-transform-private-methods": "^7.20.0",
53
+ "@babel/plugin-transform-private-property-in-object": "^7.20.0",
54
+ "@babel/plugin-transform-class-properties": "^7.20.0"
51
55
  },
52
56
  "devDependencies": {
53
57
  "@rspack/core": "^1.7.9",
@@ -40,18 +40,17 @@ function withESAD(env, options) {
40
40
  },
41
41
  resolve: {
42
42
  ...Repack.getResolveOptions(),
43
+ alias: {
44
+ ...Repack.getResolveOptions().alias,
45
+ '@': dirname,
46
+ 'expo-router': path.resolve(dirname, 'node_modules/expo-router'),
47
+ 'react-native': path.resolve(dirname, 'node_modules/react-native'),
48
+ },
43
49
  extensions: [
44
50
  '.expo.ts', '.expo.tsx', '.expo.js', '.expo.jsx',
45
51
  '.native.ts', '.native.tsx', '.native.js', '.native.jsx',
46
52
  ...Repack.getResolveOptions().extensions,
47
53
  ],
48
- alias: {
49
- '@': dirname,
50
- 'expo-router': path.resolve(dirname, 'node_modules/expo-router'),
51
- 'react-native': path.resolve(dirname, 'node_modules/react-native'),
52
- 'react-native-web': path.resolve(dirname, 'node_modules/react-native'),
53
- ...Repack.getResolveOptions().alias,
54
- }
55
54
  },
56
55
  module: {
57
56
  rules: [
@@ -62,17 +61,37 @@ function withESAD(env, options) {
62
61
  include: [
63
62
  path.resolve(dirname, 'app'),
64
63
  path.resolve(dirname, 'index.js'),
65
- /[\\/]node_modules[\\/](expo-router|react-native|@react-native|expo-modules-core)[\\/]/
64
+ /[\\/]node_modules[\\/](expo-router|react-native|@react-native|expo-modules-core|@module-federation|@react-navigation|react-native-safe-area-context|react-native-screens)[\\/]/
66
65
  ],
67
66
  use: {
68
- loader: 'babel-loader',
67
+ loader: require.resolve('babel-loader'),
69
68
  options: {
70
- presets: ['babel-preset-expo'],
69
+ presets: [
70
+ [
71
+ require.resolve('babel-preset-expo'),
72
+ {
73
+ jsxRuntime: 'automatic',
74
+ },
75
+ ],
76
+ ],
77
+ plugins: [
78
+ require.resolve('@babel/plugin-transform-flow-strip-types'),
79
+ [require.resolve('@babel/plugin-transform-private-methods'), { loose: true }],
80
+ [require.resolve('@babel/plugin-transform-private-property-in-object'), { loose: true }],
81
+ [require.resolve('@babel/plugin-transform-class-properties'), { loose: true }]
82
+ ],
71
83
  babelrc: false,
72
84
  configFile: false,
85
+ caller: {
86
+ name: 'esad-rspack',
87
+ platform,
88
+ }
73
89
  },
74
90
  },
75
91
  type: 'javascript/auto',
92
+ resolve: {
93
+ fullySpecified: false,
94
+ }
76
95
  },
77
96
  ...Repack.getJsTransformRules(),
78
97
  ]
@@ -91,7 +110,7 @@ function withESAD(env, options) {
91
110
  'process.env.EXPO_OS': JSON.stringify(platform),
92
111
  'process.env.EXPO_PROJECT_ROOT': JSON.stringify(dirname),
93
112
  'process.env.EXPO_ROUTER_ABS_APP_ROOT': JSON.stringify(path.resolve(dirname, 'app')),
94
- 'process.env.EXPO_ROUTER_APP_ROOT': JSON.stringify('./app'),
113
+ 'process.env.EXPO_ROUTER_APP_ROOT': JSON.stringify('../../app'), // Relative from node_modules/expo-router/_ctx.js
95
114
  'process.env.EXPO_ROUTER_IMPORT_MODE': JSON.stringify('sync'),
96
115
  }),
97
116
  new ExpoModulesPlugin(),
@@ -111,6 +130,10 @@ function withESAD(env, options) {
111
130
  'react-native-safe-area-context': { singleton: true, eager: true, requiredVersion: pkg.dependencies['react-native-safe-area-context'] },
112
131
  'expo-router': { singleton: true, eager: true, requiredVersion: pkg.dependencies['expo-router'] },
113
132
  'react-native-screens': { singleton: true, eager: true, requiredVersion: pkg.dependencies['react-native-screens'] },
133
+ 'expo-constants': { singleton: true, eager: true, requiredVersion: pkg.dependencies['expo-constants'] },
134
+ 'expo-linking': { singleton: true, eager: true, requiredVersion: pkg.dependencies['expo-linking'] },
135
+ '@module-federation/runtime': { singleton: true, eager: true },
136
+ '@module-federation/sdk': { singleton: true, eager: true },
114
137
  '@codemoreira/esad/client': {
115
138
  singleton: true,
116
139
  eager: options.type === 'host', // Only eager in host to ensure it's available
@@ -125,21 +148,12 @@ function withESAD(env, options) {
125
148
  // Add Host-specific DevServer magic for Expo
126
149
  if (options.type === 'host') {
127
150
  config.devServer = {
128
- setupMiddlewares: (middlewares) => {
129
- middlewares.unshift((req, res, next) => {
130
- if (req.url.startsWith('/.expo/.virtual-metro-entry.bundle')) {
131
- const query = req.url.split('?')[1];
132
- const isMap = req.url.includes('.map');
133
- const target = isMap ? '/index.bundle.map' : '/index.bundle';
134
- const location = query ? `${target}?${query}` : target;
135
- res.writeHead(302, { Location: location });
136
- res.end();
137
- return;
138
- }
139
- next();
140
- });
141
- return middlewares;
142
- },
151
+ proxy: [
152
+ {
153
+ context: ['/.expo/.virtual-metro-entry'],
154
+ pathRewrite: { '^/.expo/.virtual-metro-entry': '/index.bundle' },
155
+ },
156
+ ],
143
157
  };
144
158
  }
145
159