@expo/cli 0.19.3 → 0.19.5

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/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  </a>
7
7
  </p>
8
8
 
9
- <p align="center">The fastest way to build and run universal React Native apps for iOS, Android, and the web</p>
9
+ <p align="center">The fastest way to build and run universal React Native apps for Android, iOS, and the web</p>
10
10
 
11
11
  <p align="center">
12
12
 
package/build/bin/cli CHANGED
@@ -120,7 +120,7 @@ const args = (0, _arg().default)({
120
120
  });
121
121
  if (args["--version"]) {
122
122
  // Version is added in the build script.
123
- console.log("0.19.3");
123
+ console.log("0.19.5");
124
124
  process.exit(0);
125
125
  }
126
126
  if (args["--non-interactive"]) {
@@ -80,7 +80,7 @@ async function autoAddConfigPluginsAsync(projectRoot, exp, packages) {
80
80
  }
81
81
  return !!plugin;
82
82
  });
83
- await (0, _modifyConfigPlugins.attemptAddingPluginsAsync)(projectRoot, exp, plugins);
83
+ await (0, _modifyConfigPlugins.attemptAddingPluginsAsync)(projectRoot, plugins);
84
84
  }
85
85
 
86
86
  //# sourceMappingURL=autoAddConfigPlugins.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, exp, plugins);\n}\n"],"names":["getNamedPlugins","autoAddConfigPluginsAsync","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":"AAAA;;;;;;;;;;;IAgDgBA,eAAe,MAAfA,eAAe;IAiBTC,yBAAyB,MAAzBA,yBAAyB;;;yBA7DxC,kDAAkD;;;;;;;yBAC1B,uBAAuB;;;;;;qCAEZ,iCAAiC;AAE3E,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,6BAA6B,CAAC,AAAsB,AAAC;AAEpF,MAAMC,YAAY,GAAGC,IAAAA,eAAc,EAAA,eAAA,GAAE,AAAC;AAEtC;;;;;;;;CAQC,GACD,SAASC,sBAAsB,CAACC,WAAmB,EAAEC,WAAmB,EAAE;IACxE,IAAI;QACF,MAAMC,IAAI,GAAGC,IAAAA,eAAmC,EAAA,oCAAA,EAACH,WAAW,EAAEC,WAAW,CAAC,AAAC;QAC3E,IAAIC,IAAI,CAACE,YAAY,EAAE;YACrB,OAAOF,IAAI,CAACG,MAAM,CAAC;QACrB,CAAC;IACH,EAAE,OAAM,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAkBM,SAASZ,eAAe,CAACa,OAA2C,EAAY;IACrF,MAAMC,YAAY,GAAa,EAAE,AAAC;IAClC,KAAK,MAAMF,MAAM,IAAIC,OAAO,CAAE;QAC5B,IAAI;YACF,aAAa;YACb,MAAM,CAACE,MAAM,CAAC,GAAGC,IAAAA,eAAqB,EAAA,sBAAA,EAACJ,MAAM,CAAC,AAAC;YAC/C,IAAI,OAAOG,MAAM,KAAK,QAAQ,EAAE;gBAC9BD,YAAY,CAACG,IAAI,CAACF,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,EAAE,OAAM;QACN,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAOD,YAAY,CAAC;AACtB,CAAC;AAGM,eAAeb,yBAAyB,CAC7CM,WAAmB,EACnBW,GAAgC,EAChCC,QAAkB,EAClB;IACAjB,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAEpC,MAAMkB,cAAc,GAAGF,GAAG,CAACL,OAAO,IAAI,EAAE,AAAC;IACzC,MAAMQ,UAAU,GAAGrB,eAAe,CAACoB,cAAc,CAAC,AAAC;IAEnDlB,KAAK,CAAC,CAAC,kBAAkB,EAAEmB,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAMT,OAAO,GAAGM,QAAQ,CAACI,MAAM,CAAC,CAACC,GAAG,GAAK;QACvC,IAAIH,UAAU,CAACI,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC5B,oCAAoC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gGAAgG;QAChG,MAAMZ,MAAM,GAAGN,sBAAsB,CAACC,WAAW,EAAEiB,GAAG,CAAC,AAAC;QAExDtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,cAAc,EAAE,CAAC,CAACZ,MAAM,CAAC,CAAC,GAAG,CAACA,MAAM,GAAG,CAAC,QAAQ,EAAEA,MAAM,CAACc,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhG,IAAItB,YAAY,CAACqB,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC9BtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAACZ,MAAM,CAAC;IAClB,CAAC,CAAC,AAAC;IAEH,MAAMe,IAAAA,oBAAyB,0BAAA,EAACpB,WAAW,EAAEW,GAAG,EAAEL,OAAO,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"sources":["../../../../src/install/utils/autoAddConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig } from '@expo/config';\nimport {\n normalizeStaticPlugin,\n resolveConfigPluginFunctionWithInfo,\n} from '@expo/config-plugins/build/utils/plugin-resolver';\nimport { getAutoPlugins } from '@expo/prebuild-config';\n\nimport { attemptAddingPluginsAsync } from '../../utils/modifyConfigPlugins';\n\nconst debug = require('debug')('expo:install:config-plugins') as typeof console.log;\n\nconst AUTO_PLUGINS = getAutoPlugins();\n\n/**\n * Resolve if a package has a config plugin.\n * For sanity, we'll only support config plugins that use the `app.config.js` entry file,\n * this is because a package like `lodash` could be a \"valid\" config plugin and break the prebuild process.\n *\n * @param projectRoot\n * @param packageName\n * @returns\n */\nfunction packageHasConfigPlugin(projectRoot: string, packageName: string) {\n try {\n const info = resolveConfigPluginFunctionWithInfo(projectRoot, packageName);\n if (info.isPluginFile) {\n return info.plugin;\n }\n } catch {}\n return false;\n}\n\n/**\n * Get a list of plugins that were are supplied as string module IDs.\n * @example\n * ```json\n * {\n * \"plugins\": [\n * \"expo-camera\",\n * [\"react-native-firebase\", ...]\n * ]\n * }\n * ```\n * ↓ ↓ ↓ ↓ ↓ ↓\n *\n * `['expo-camera', 'react-native-firebase']`\n *\n */\nexport function getNamedPlugins(plugins: NonNullable<ExpoConfig['plugins']>): string[] {\n const namedPlugins: string[] = [];\n for (const plugin of plugins) {\n try {\n // @ts-ignore\n const [normal] = normalizeStaticPlugin(plugin);\n if (typeof normal === 'string') {\n namedPlugins.push(normal);\n }\n } catch {\n // ignore assertions\n }\n }\n return namedPlugins;\n}\n\n/** Attempts to ensure that non-auto plugins are added to the `app.json` `plugins` array when modules with Expo Config Plugins are installed. */\nexport async function autoAddConfigPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n packages: string[]\n) {\n debug('Checking config plugins...');\n\n const currentPlugins = exp.plugins || [];\n const normalized = getNamedPlugins(currentPlugins);\n\n debug(`Existing plugins: ${normalized.join(', ')}`);\n\n const plugins = packages.filter((pkg) => {\n if (normalized.includes(pkg)) {\n // already included in plugins array\n return false;\n }\n // Check if the package has a valid plugin. Must be a well-made plugin for it to work with this.\n const plugin = packageHasConfigPlugin(projectRoot, pkg);\n\n debug(`Package \"${pkg}\" has plugin: ${!!plugin}` + (plugin ? ` (args: ${plugin.length})` : ''));\n\n if (AUTO_PLUGINS.includes(pkg)) {\n debug(`Package \"${pkg}\" is an auto plugin, skipping...`);\n return false;\n }\n\n return !!plugin;\n });\n\n await attemptAddingPluginsAsync(projectRoot, plugins);\n}\n"],"names":["getNamedPlugins","autoAddConfigPluginsAsync","debug","require","AUTO_PLUGINS","getAutoPlugins","packageHasConfigPlugin","projectRoot","packageName","info","resolveConfigPluginFunctionWithInfo","isPluginFile","plugin","plugins","namedPlugins","normal","normalizeStaticPlugin","push","exp","packages","currentPlugins","normalized","join","filter","pkg","includes","length","attemptAddingPluginsAsync"],"mappings":"AAAA;;;;;;;;;;;IAgDgBA,eAAe,MAAfA,eAAe;IAiBTC,yBAAyB,MAAzBA,yBAAyB;;;yBA7DxC,kDAAkD;;;;;;;yBAC1B,uBAAuB;;;;;;qCAEZ,iCAAiC;AAE3E,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,6BAA6B,CAAC,AAAsB,AAAC;AAEpF,MAAMC,YAAY,GAAGC,IAAAA,eAAc,EAAA,eAAA,GAAE,AAAC;AAEtC;;;;;;;;CAQC,GACD,SAASC,sBAAsB,CAACC,WAAmB,EAAEC,WAAmB,EAAE;IACxE,IAAI;QACF,MAAMC,IAAI,GAAGC,IAAAA,eAAmC,EAAA,oCAAA,EAACH,WAAW,EAAEC,WAAW,CAAC,AAAC;QAC3E,IAAIC,IAAI,CAACE,YAAY,EAAE;YACrB,OAAOF,IAAI,CAACG,MAAM,CAAC;QACrB,CAAC;IACH,EAAE,OAAM,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAkBM,SAASZ,eAAe,CAACa,OAA2C,EAAY;IACrF,MAAMC,YAAY,GAAa,EAAE,AAAC;IAClC,KAAK,MAAMF,MAAM,IAAIC,OAAO,CAAE;QAC5B,IAAI;YACF,aAAa;YACb,MAAM,CAACE,MAAM,CAAC,GAAGC,IAAAA,eAAqB,EAAA,sBAAA,EAACJ,MAAM,CAAC,AAAC;YAC/C,IAAI,OAAOG,MAAM,KAAK,QAAQ,EAAE;gBAC9BD,YAAY,CAACG,IAAI,CAACF,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,EAAE,OAAM;QACN,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAOD,YAAY,CAAC;AACtB,CAAC;AAGM,eAAeb,yBAAyB,CAC7CM,WAAmB,EACnBW,GAAgC,EAChCC,QAAkB,EAClB;IACAjB,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAEpC,MAAMkB,cAAc,GAAGF,GAAG,CAACL,OAAO,IAAI,EAAE,AAAC;IACzC,MAAMQ,UAAU,GAAGrB,eAAe,CAACoB,cAAc,CAAC,AAAC;IAEnDlB,KAAK,CAAC,CAAC,kBAAkB,EAAEmB,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,MAAMT,OAAO,GAAGM,QAAQ,CAACI,MAAM,CAAC,CAACC,GAAG,GAAK;QACvC,IAAIH,UAAU,CAACI,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC5B,oCAAoC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,gGAAgG;QAChG,MAAMZ,MAAM,GAAGN,sBAAsB,CAACC,WAAW,EAAEiB,GAAG,CAAC,AAAC;QAExDtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,cAAc,EAAE,CAAC,CAACZ,MAAM,CAAC,CAAC,GAAG,CAACA,MAAM,GAAG,CAAC,QAAQ,EAAEA,MAAM,CAACc,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAEhG,IAAItB,YAAY,CAACqB,QAAQ,CAACD,GAAG,CAAC,EAAE;YAC9BtB,KAAK,CAAC,CAAC,SAAS,EAAEsB,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,CAAC,CAACZ,MAAM,CAAC;IAClB,CAAC,CAAC,AAAC;IAEH,MAAMe,IAAAA,oBAAyB,0BAAA,EAACpB,WAAW,EAAEM,OAAO,CAAC,CAAC;AACxD,CAAC"}
@@ -86,7 +86,7 @@ function createClientMessageHandler(socket, clientId, clients, broadcast) {
86
86
  if (!message) return;
87
87
  // Handle broadcast messages
88
88
  if (messageIsBroadcast(message)) {
89
- return broadcast(null, data);
89
+ return broadcast(null, data.toString());
90
90
  }
91
91
  // Handle incoming requests from clients
92
92
  if (messageIsRequest(message)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMessageSocket.ts"],"sourcesContent":["import { parse } from 'node:url';\nimport { type WebSocket, WebSocketServer, type RawData as WebSocketRawData } from 'ws';\n\nimport { createBroadcaster } from './utils/createSocketBroadcaster';\nimport { createSocketMap, type SocketId } from './utils/createSocketMap';\nimport { parseRawMessage, serializeMessage } from './utils/socketMessages';\n\ntype MessageSocketOptions = {\n logger: {\n warn: (message: string) => any;\n };\n};\n\n/**\n * Client \"command\" server that dispatches basic commands to connected clients.\n * This basic client to client communication, reload, or open dev menu cli commands.\n */\nexport function createMessagesSocket(options: MessageSocketOptions) {\n const clients = createSocketMap();\n const broadcast = createBroadcaster(clients.map);\n\n const server = new WebSocketServer({ noServer: true });\n\n server.on('connection', (socket, req) => {\n const client = clients.registerSocket(socket);\n\n // Assign the query parameters to the socket, used for `getpeers` requests\n // NOTE(cedric): this looks like a legacy feature, might be able to drop it\n if (req.url) {\n Object.defineProperty(socket, '_upgradeQuery', {\n value: parse(req.url).query,\n });\n }\n\n // Register disconnect handlers\n socket.on('close', client.terminate);\n socket.on('error', client.terminate);\n // Register message handler\n socket.on('message', createClientMessageHandler(socket, client.id, clients, broadcast));\n });\n\n return {\n endpoint: '/message' as const,\n server,\n broadcast: (method: BroadcastMessage['method'], params?: BroadcastMessage['params']) => {\n if (clients.map.size === 0) {\n return options.logger.warn(\n `No apps connected. Sending \"${method}\" to all React Native apps failed. Make sure your app is running in the simulator or on a phone connected via USB.`\n );\n }\n\n broadcast(null, serializeMessage({ method, params }));\n },\n };\n}\n\nfunction createClientMessageHandler(\n socket: WebSocket,\n clientId: SocketId,\n clients: ReturnType<typeof createSocketMap>,\n broadcast: ReturnType<typeof createBroadcaster>\n) {\n function handleServerRequest(message: RequestMessage) {\n // Ignore messages without identifiers, unable to link responses\n if (!message.id) return;\n\n if (message.method === 'getid') {\n return socket.send(serializeMessage({ id: message.id, result: clientId }));\n }\n\n if (message.method === 'getpeers') {\n const peers: Record<string, any> = {};\n clients.map.forEach((peerSocket, peerSocketId) => {\n if (peerSocketId !== clientId) {\n peers[peerSocketId] = '_upgradeQuery' in peerSocket ? peerSocket._upgradeQuery : {};\n }\n });\n return socket.send(serializeMessage({ id: message.id, result: peers }));\n }\n }\n\n return (data: WebSocketRawData, isBinary: boolean) => {\n const message = parseRawMessage<IncomingMessage>(data, isBinary);\n if (!message) return;\n\n // Handle broadcast messages\n if (messageIsBroadcast(message)) {\n return broadcast(null, data);\n }\n\n // Handle incoming requests from clients\n if (messageIsRequest(message)) {\n if (message.target === 'server') {\n return handleServerRequest(message);\n }\n\n return clients.findSocket(message.target)?.send(\n serializeMessage({\n method: message.method,\n params: message.params,\n id: !message.id\n ? undefined\n : {\n requestId: message.id,\n clientId,\n },\n })\n );\n }\n\n // Handle incoming responses\n if (messageIsResponse(message)) {\n return clients.findSocket(message.id.clientId)?.send(\n serializeMessage({\n id: message.id.requestId,\n result: message.result,\n error: message.error,\n })\n );\n }\n };\n}\n\ntype MessageId = {\n requestId: string;\n clientId: SocketId;\n};\n\ntype IncomingMessage = BroadcastMessage | RequestMessage | ResponseMessage;\n\ntype BroadcastMessage = {\n method: string;\n params?: Record<string, any>;\n};\n\ntype RequestMessage = {\n method: string;\n params?: Record<string, any>;\n target: string;\n id?: string;\n};\n\ntype ResponseMessage = {\n result?: any;\n error?: Error;\n id: MessageId;\n};\n\nfunction messageIsBroadcast(message: IncomingMessage): message is BroadcastMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n (!('id' in message) || message.id === undefined) &&\n (!('target' in message) || message.target === undefined)\n );\n}\n\nfunction messageIsRequest(message: IncomingMessage): message is RequestMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n 'target' in message &&\n typeof message.target === 'string'\n );\n}\n\nfunction messageIsResponse(message: IncomingMessage): message is ResponseMessage {\n return (\n 'id' in message &&\n typeof message.id === 'object' &&\n typeof message.id.requestId !== 'undefined' &&\n typeof message.id.clientId === 'string' &&\n (('result' in message && !!message.result) || ('error' in message && !!message.error))\n );\n}\n"],"names":["createMessagesSocket","options","clients","createSocketMap","broadcast","createBroadcaster","map","server","WebSocketServer","noServer","on","socket","req","client","registerSocket","url","Object","defineProperty","value","parse","query","terminate","createClientMessageHandler","id","endpoint","method","params","size","logger","warn","serializeMessage","clientId","handleServerRequest","message","send","result","peers","forEach","peerSocket","peerSocketId","_upgradeQuery","data","isBinary","parseRawMessage","messageIsBroadcast","messageIsRequest","target","findSocket","undefined","requestId","messageIsResponse","error"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../src/start/server/metro/dev-server/createMessageSocket.ts"],"sourcesContent":["import { parse } from 'node:url';\nimport { type WebSocket, WebSocketServer, type RawData as WebSocketRawData } from 'ws';\n\nimport { createBroadcaster } from './utils/createSocketBroadcaster';\nimport { createSocketMap, type SocketId } from './utils/createSocketMap';\nimport { parseRawMessage, serializeMessage } from './utils/socketMessages';\n\ntype MessageSocketOptions = {\n logger: {\n warn: (message: string) => any;\n };\n};\n\n/**\n * Client \"command\" server that dispatches basic commands to connected clients.\n * This basic client to client communication, reload, or open dev menu cli commands.\n */\nexport function createMessagesSocket(options: MessageSocketOptions) {\n const clients = createSocketMap();\n const broadcast = createBroadcaster(clients.map);\n\n const server = new WebSocketServer({ noServer: true });\n\n server.on('connection', (socket, req) => {\n const client = clients.registerSocket(socket);\n\n // Assign the query parameters to the socket, used for `getpeers` requests\n // NOTE(cedric): this looks like a legacy feature, might be able to drop it\n if (req.url) {\n Object.defineProperty(socket, '_upgradeQuery', {\n value: parse(req.url).query,\n });\n }\n\n // Register disconnect handlers\n socket.on('close', client.terminate);\n socket.on('error', client.terminate);\n // Register message handler\n socket.on('message', createClientMessageHandler(socket, client.id, clients, broadcast));\n });\n\n return {\n endpoint: '/message' as const,\n server,\n broadcast: (method: BroadcastMessage['method'], params?: BroadcastMessage['params']) => {\n if (clients.map.size === 0) {\n return options.logger.warn(\n `No apps connected. Sending \"${method}\" to all React Native apps failed. Make sure your app is running in the simulator or on a phone connected via USB.`\n );\n }\n\n broadcast(null, serializeMessage({ method, params }));\n },\n };\n}\n\nfunction createClientMessageHandler(\n socket: WebSocket,\n clientId: SocketId,\n clients: ReturnType<typeof createSocketMap>,\n broadcast: ReturnType<typeof createBroadcaster>\n) {\n function handleServerRequest(message: RequestMessage) {\n // Ignore messages without identifiers, unable to link responses\n if (!message.id) return;\n\n if (message.method === 'getid') {\n return socket.send(serializeMessage({ id: message.id, result: clientId }));\n }\n\n if (message.method === 'getpeers') {\n const peers: Record<string, any> = {};\n clients.map.forEach((peerSocket, peerSocketId) => {\n if (peerSocketId !== clientId) {\n peers[peerSocketId] = '_upgradeQuery' in peerSocket ? peerSocket._upgradeQuery : {};\n }\n });\n return socket.send(serializeMessage({ id: message.id, result: peers }));\n }\n }\n\n return (data: WebSocketRawData, isBinary: boolean) => {\n const message = parseRawMessage<IncomingMessage>(data, isBinary);\n if (!message) return;\n\n // Handle broadcast messages\n if (messageIsBroadcast(message)) {\n return broadcast(null, data.toString());\n }\n\n // Handle incoming requests from clients\n if (messageIsRequest(message)) {\n if (message.target === 'server') {\n return handleServerRequest(message);\n }\n\n return clients.findSocket(message.target)?.send(\n serializeMessage({\n method: message.method,\n params: message.params,\n id: !message.id\n ? undefined\n : {\n requestId: message.id,\n clientId,\n },\n })\n );\n }\n\n // Handle incoming responses\n if (messageIsResponse(message)) {\n return clients.findSocket(message.id.clientId)?.send(\n serializeMessage({\n id: message.id.requestId,\n result: message.result,\n error: message.error,\n })\n );\n }\n };\n}\n\ntype MessageId = {\n requestId: string;\n clientId: SocketId;\n};\n\ntype IncomingMessage = BroadcastMessage | RequestMessage | ResponseMessage;\n\ntype BroadcastMessage = {\n method: string;\n params?: Record<string, any>;\n};\n\ntype RequestMessage = {\n method: string;\n params?: Record<string, any>;\n target: string;\n id?: string;\n};\n\ntype ResponseMessage = {\n result?: any;\n error?: Error;\n id: MessageId;\n};\n\nfunction messageIsBroadcast(message: IncomingMessage): message is BroadcastMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n (!('id' in message) || message.id === undefined) &&\n (!('target' in message) || message.target === undefined)\n );\n}\n\nfunction messageIsRequest(message: IncomingMessage): message is RequestMessage {\n return (\n 'method' in message &&\n typeof message.method === 'string' &&\n 'target' in message &&\n typeof message.target === 'string'\n );\n}\n\nfunction messageIsResponse(message: IncomingMessage): message is ResponseMessage {\n return (\n 'id' in message &&\n typeof message.id === 'object' &&\n typeof message.id.requestId !== 'undefined' &&\n typeof message.id.clientId === 'string' &&\n (('result' in message && !!message.result) || ('error' in message && !!message.error))\n );\n}\n"],"names":["createMessagesSocket","options","clients","createSocketMap","broadcast","createBroadcaster","map","server","WebSocketServer","noServer","on","socket","req","client","registerSocket","url","Object","defineProperty","value","parse","query","terminate","createClientMessageHandler","id","endpoint","method","params","size","logger","warn","serializeMessage","clientId","handleServerRequest","message","send","result","peers","forEach","peerSocket","peerSocketId","_upgradeQuery","data","isBinary","parseRawMessage","messageIsBroadcast","toString","messageIsRequest","target","findSocket","undefined","requestId","messageIsResponse","error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/start/server/metro/dev-server/utils/createSocketBroadcaster.ts"],"sourcesContent":["import type { RawData as WebSocketRawData } from 'ws';\n\nimport type { SocketId, SocketMap } from './createSocketMap';\n\nconst debug = require('debug')('expo:metro:dev-server:broadcaster') as typeof console.log;\n\nexport function createBroadcaster(sockets: SocketMap) {\n return function broadcast(senderSocketId: SocketId | null, message: string | WebSocketRawData) {\n // Ignore if there are no connected sockets\n if (!sockets.size) return;\n\n for (const [socketId, socket] of sockets) {\n if (socketId === senderSocketId) continue;\n\n try {\n socket.send(message);\n } catch (error) {\n debug(`Failed to broadcast message to socket \"${socketId}\"`, error);\n }\n }\n };\n}\n"],"names":["createBroadcaster","debug","require","sockets","broadcast","senderSocketId","message","size","socketId","socket","send","error"],"mappings":"AAAA;;;;+BAMgBA,mBAAiB;;aAAjBA,iBAAiB;;AAFjC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,mCAAmC,CAAC,AAAsB,AAAC;AAEnF,SAASF,iBAAiB,CAACG,OAAkB,EAAE;IACpD,OAAO,SAASC,SAAS,CAACC,cAA+B,EAAEC,OAAkC,EAAE;QAC7F,2CAA2C;QAC3C,IAAI,CAACH,OAAO,CAACI,IAAI,EAAE,OAAO;QAE1B,KAAK,MAAM,CAACC,QAAQ,EAAEC,MAAM,CAAC,IAAIN,OAAO,CAAE;YACxC,IAAIK,QAAQ,KAAKH,cAAc,EAAE,SAAS;YAE1C,IAAI;gBACFI,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,CAAC;YACvB,EAAE,OAAOK,KAAK,EAAE;gBACdV,KAAK,CAAC,CAAC,uCAAuC,EAAEO,QAAQ,CAAC,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"sources":["../../../../../../../src/start/server/metro/dev-server/utils/createSocketBroadcaster.ts"],"sourcesContent":["import type { SocketId, SocketMap } from './createSocketMap';\n\nconst debug = require('debug')('expo:metro:dev-server:broadcaster') as typeof console.log;\n\nexport function createBroadcaster(sockets: SocketMap) {\n return function broadcast(senderSocketId: SocketId | null, message: string) {\n // Ignore if there are no connected sockets\n if (!sockets.size) return;\n\n for (const [socketId, socket] of sockets) {\n if (socketId === senderSocketId) continue;\n\n try {\n socket.send(message);\n } catch (error) {\n debug(`Failed to broadcast message to socket \"${socketId}\"`, error);\n }\n }\n };\n}\n"],"names":["createBroadcaster","debug","require","sockets","broadcast","senderSocketId","message","size","socketId","socket","send","error"],"mappings":"AAAA;;;;+BAIgBA,mBAAiB;;aAAjBA,iBAAiB;;AAFjC,MAAMC,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,mCAAmC,CAAC,AAAsB,AAAC;AAEnF,SAASF,iBAAiB,CAACG,OAAkB,EAAE;IACpD,OAAO,SAASC,SAAS,CAACC,cAA+B,EAAEC,OAAe,EAAE;QAC1E,2CAA2C;QAC3C,IAAI,CAACH,OAAO,CAACI,IAAI,EAAE,OAAO;QAE1B,KAAK,MAAM,CAACC,QAAQ,EAAEC,MAAM,CAAC,IAAIN,OAAO,CAAE;YACxC,IAAIK,QAAQ,KAAKH,cAAc,EAAE,SAAS;YAE1C,IAAI;gBACFI,MAAM,CAACC,IAAI,CAACJ,OAAO,CAAC,CAAC;YACvB,EAAE,OAAOK,KAAK,EAAE;gBACdV,KAAK,CAAC,CAAC,uCAAuC,EAAEO,QAAQ,CAAC,CAAC,CAAC,EAAEG,KAAK,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -54,14 +54,11 @@ function _interopRequireWildcard(obj, nodeInterop) {
54
54
  }
55
55
  return newObj;
56
56
  }
57
- async function attemptAddingPluginsAsync(projectRoot, exp, plugins) {
57
+ async function attemptAddingPluginsAsync(projectRoot, plugins) {
58
58
  if (!plugins.length) return;
59
- const edits = {
60
- plugins: [
61
- ...new Set((exp.plugins || []).concat(plugins))
62
- ]
63
- };
64
- const modification = await (0, _config().modifyConfigAsync)(projectRoot, edits, {
59
+ const modification = await (0, _config().modifyConfigAsync)(projectRoot, {
60
+ plugins
61
+ }, {
65
62
  skipSDKVersionRequirement: true,
66
63
  skipPlugins: true
67
64
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/modifyConfigPlugins.ts"],"sourcesContent":["import { ExpoConfig, modifyConfigAsync } from '@expo/config';\n\nimport { warnAboutConfigAndThrow } from './modifyConfigAsync';\nimport * as Log from '../log';\n\nexport async function attemptAddingPluginsAsync(\n projectRoot: string,\n exp: Pick<ExpoConfig, 'plugins'>,\n plugins: string[]\n): Promise<void> {\n if (!plugins.length) return;\n\n const edits = {\n plugins: [...new Set((exp.plugins || []).concat(plugins))],\n };\n const modification = await modifyConfigAsync(projectRoot, edits, {\n skipSDKVersionRequirement: true,\n skipPlugins: true,\n });\n if (modification.type === 'success') {\n Log.log(`\\u203A Added config plugin${plugins.length === 1 ? '' : 's'}: ${plugins.join(', ')}`);\n } else {\n const exactEdits = {\n plugins,\n };\n warnAboutConfigAndThrow(modification.type, modification.message!, exactEdits);\n }\n}\n"],"names":["attemptAddingPluginsAsync","projectRoot","exp","plugins","length","edits","Set","concat","modification","modifyConfigAsync","skipSDKVersionRequirement","skipPlugins","type","Log","log","join","exactEdits","warnAboutConfigAndThrow","message"],"mappings":"AAAA;;;;+BAKsBA,2BAAyB;;aAAzBA,yBAAyB;;;yBALD,cAAc;;;;;;mCAEpB,qBAAqB;2DACxC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtB,eAAeA,yBAAyB,CAC7CC,WAAmB,EACnBC,GAAgC,EAChCC,OAAiB,EACF;IACf,IAAI,CAACA,OAAO,CAACC,MAAM,EAAE,OAAO;IAE5B,MAAMC,KAAK,GAAG;QACZF,OAAO,EAAE;eAAI,IAAIG,GAAG,CAAC,CAACJ,GAAG,CAACC,OAAO,IAAI,EAAE,CAAC,CAACI,MAAM,CAACJ,OAAO,CAAC,CAAC;SAAC;KAC3D,AAAC;IACF,MAAMK,YAAY,GAAG,MAAMC,IAAAA,OAAiB,EAAA,kBAAA,EAACR,WAAW,EAAEI,KAAK,EAAE;QAC/DK,yBAAyB,EAAE,IAAI;QAC/BC,WAAW,EAAE,IAAI;KAClB,CAAC,AAAC;IACH,IAAIH,YAAY,CAACI,IAAI,KAAK,SAAS,EAAE;QACnCC,IAAG,CAACC,GAAG,CAAC,CAAC,0BAA0B,EAAEX,OAAO,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAED,OAAO,CAACY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO;QACL,MAAMC,UAAU,GAAG;YACjBb,OAAO;SACR,AAAC;QACFc,IAAAA,kBAAuB,wBAAA,EAACT,YAAY,CAACI,IAAI,EAAEJ,YAAY,CAACU,OAAO,EAAGF,UAAU,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
1
+ {"version":3,"sources":["../../../src/utils/modifyConfigPlugins.ts"],"sourcesContent":["import { modifyConfigAsync } from '@expo/config';\n\nimport { warnAboutConfigAndThrow } from './modifyConfigAsync';\nimport * as Log from '../log';\n\nexport async function attemptAddingPluginsAsync(\n projectRoot: string,\n plugins: string[]\n): Promise<void> {\n if (!plugins.length) return;\n\n const modification = await modifyConfigAsync(\n projectRoot,\n { plugins },\n {\n skipSDKVersionRequirement: true,\n skipPlugins: true,\n }\n );\n if (modification.type === 'success') {\n Log.log(`\\u203A Added config plugin${plugins.length === 1 ? '' : 's'}: ${plugins.join(', ')}`);\n } else {\n const exactEdits = {\n plugins,\n };\n warnAboutConfigAndThrow(modification.type, modification.message!, exactEdits);\n }\n}\n"],"names":["attemptAddingPluginsAsync","projectRoot","plugins","length","modification","modifyConfigAsync","skipSDKVersionRequirement","skipPlugins","type","Log","log","join","exactEdits","warnAboutConfigAndThrow","message"],"mappings":"AAAA;;;;+BAKsBA,2BAAyB;;aAAzBA,yBAAyB;;;yBALb,cAAc;;;;;;mCAER,qBAAqB;2DACxC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtB,eAAeA,yBAAyB,CAC7CC,WAAmB,EACnBC,OAAiB,EACF;IACf,IAAI,CAACA,OAAO,CAACC,MAAM,EAAE,OAAO;IAE5B,MAAMC,YAAY,GAAG,MAAMC,IAAAA,OAAiB,EAAA,kBAAA,EAC1CJ,WAAW,EACX;QAAEC,OAAO;KAAE,EACX;QACEI,yBAAyB,EAAE,IAAI;QAC/BC,WAAW,EAAE,IAAI;KAClB,CACF,AAAC;IACF,IAAIH,YAAY,CAACI,IAAI,KAAK,SAAS,EAAE;QACnCC,IAAG,CAACC,GAAG,CAAC,CAAC,0BAA0B,EAAER,OAAO,CAACC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,EAAED,OAAO,CAACS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO;QACL,MAAMC,UAAU,GAAG;YACjBV,OAAO;SACR,AAAC;QACFW,IAAAA,kBAAuB,wBAAA,EAACT,YAAY,CAACI,IAAI,EAAEJ,YAAY,CAACU,OAAO,EAAGF,UAAU,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
@@ -31,7 +31,7 @@ class FetchClient {
31
31
  this.headers = {
32
32
  accept: "application/json",
33
33
  "content-type": "application/json",
34
- "user-agent": `expo-cli/${"0.19.3"}`,
34
+ "user-agent": `expo-cli/${"0.19.5"}`,
35
35
  authorization: "Basic " + _nodeBuffer().Buffer.from(`${target}:`).toString("base64")
36
36
  };
37
37
  }
@@ -79,7 +79,7 @@ function createContext() {
79
79
  cpu: summarizeCpuInfo(),
80
80
  app: {
81
81
  name: "expo/cli",
82
- version: "0.19.3"
82
+ version: "0.19.5"
83
83
  },
84
84
  ci: _ciInfo().isCI ? {
85
85
  name: _ciInfo().name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/cli",
3
- "version": "0.19.3",
3
+ "version": "0.19.5",
4
4
  "description": "The Expo CLI",
5
5
  "main": "build/bin/cli",
6
6
  "bin": {
@@ -41,17 +41,17 @@
41
41
  "dependencies": {
42
42
  "@babel/runtime": "^7.20.0",
43
43
  "@expo/code-signing-certificates": "^0.0.5",
44
- "@expo/config": "~10.0.0",
45
- "@expo/config-plugins": "~9.0.0",
44
+ "@expo/config": "~10.0.2",
45
+ "@expo/config-plugins": "~9.0.3",
46
46
  "@expo/devcert": "^1.1.2",
47
47
  "@expo/env": "~0.4.0",
48
48
  "@expo/image-utils": "^0.6.0",
49
49
  "@expo/json-file": "^9.0.0",
50
- "@expo/metro-config": "~0.19.0-preview.0",
50
+ "@expo/metro-config": "~0.19.0-preview.2",
51
51
  "@expo/osascript": "^2.0.31",
52
52
  "@expo/package-manager": "^1.5.0",
53
53
  "@expo/plist": "^0.2.0",
54
- "@expo/prebuild-config": "^8.0.0",
54
+ "@expo/prebuild-config": "^8.0.3",
55
55
  "@expo/rudder-sdk-node": "^1.1.1",
56
56
  "@expo/spawn-async": "^1.7.2",
57
57
  "@expo/xcpretty": "^4.3.0",
@@ -167,5 +167,5 @@
167
167
  "tree-kill": "^1.2.2",
168
168
  "tsd": "^0.28.1"
169
169
  },
170
- "gitHead": "5ad642a63afa9190ceb4e57dd52c8bdf71d93dd8"
170
+ "gitHead": "8b9f5addf49cb5ef7598ca27ff60c0accff6a1c3"
171
171
  }