@expo/cli 54.0.18 → 54.0.20
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/build/bin/cli +1 -1
- package/build/src/install/applyPlugins.js +2 -1
- package/build/src/install/applyPlugins.js.map +1 -1
- package/build/src/install/fixPackages.js +1 -1
- package/build/src/install/fixPackages.js.map +1 -1
- package/build/src/install/installAsync.js +1 -1
- package/build/src/install/installAsync.js.map +1 -1
- package/build/src/install/utils/parsePackageSpecifier.js +24 -0
- package/build/src/install/utils/parsePackageSpecifier.js.map +1 -0
- package/build/src/start/server/metro/MetroBundlerDevServer.js +13 -2
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/MetroTerminalReporter.js +7 -0
- package/build/src/start/server/metro/MetroTerminalReporter.js.map +1 -1
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js +1 -3
- package/build/src/start/server/metro/createExpoAutolinkingResolver.js.map +1 -1
- package/build/src/start/server/metro/createExpoFallbackResolver.js +1 -3
- package/build/src/start/server/metro/createExpoFallbackResolver.js.map +1 -1
- package/build/src/start/server/metro/createServerComponentsMiddleware.js +1 -2
- package/build/src/start/server/metro/createServerComponentsMiddleware.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +11 -8
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +4 -5
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/middleware/CorsMiddleware.js +43 -12
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/CreateFileMiddleware.js +63 -24
- package/build/src/start/server/middleware/CreateFileMiddleware.js.map +1 -1
- package/build/src/utils/telemetry/clients/FetchClient.js +1 -1
- package/build/src/utils/telemetry/utils/context.js +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/CorsMiddleware.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config';\n\nimport type { ServerRequest, ServerResponse } from './server.types';\n\nconst
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/CorsMiddleware.ts"],"sourcesContent":["import type { ExpoConfig } from '@expo/config';\n\nimport type { ServerRequest, ServerResponse } from './server.types';\n\nconst DEFAULT_ALLOWED_CORS_HOSTS = [\n 'devtools', // Support local Chrome DevTools `devtools://devtools`\n];\n\n/** Check if hostname matches \"localhost\" exactly, the local IPv6,\n * a local IPV4 in the 127.0.0.0/8 range, or an IPv6-to-4 range\n * (starting with ::ffff: and ending in an IPv4) */\nexport const _isLocalHostname = (hostname: string) => {\n if (hostname === 'localhost') {\n return true;\n }\n let maybeIp = hostname;\n const ipv6To4Prefix = '::ffff:';\n if (maybeIp.startsWith(ipv6To4Prefix)) {\n maybeIp = maybeIp.slice(ipv6To4Prefix.length);\n }\n if (maybeIp === '::1') {\n return true;\n } else if (/^127(?:.\\d+){3}$/.test(maybeIp)) {\n return maybeIp.split('.').every((part) => {\n const num = parseInt(part, 10);\n return num >= 0 && num <= 255;\n });\n } else {\n return false;\n }\n};\n\nexport function createCorsMiddleware(exp: ExpoConfig) {\n const allowedHosts = [...DEFAULT_ALLOWED_CORS_HOSTS];\n // Support for expo-router API routes\n if (exp.extra?.router?.headOrigin) {\n allowedHosts.push(new URL(exp.extra.router.headOrigin).host);\n }\n if (exp.extra?.router?.origin) {\n allowedHosts.push(new URL(exp.extra.router.origin).host);\n }\n\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (typeof req.headers.origin === 'string') {\n const { host, hostname } = new URL(req.headers.origin);\n const isSameOrigin = host === req.headers.host;\n const isLocalhost = _isLocalHostname(hostname);\n const isAllowedHost = allowedHosts.includes(host) || isLocalhost;\n if (!isSameOrigin && !isAllowedHost) {\n next(\n new Error(\n `Unauthorized request from ${req.headers.origin}. ` +\n 'This may happen because of a conflicting browser extension to intercept HTTP requests. ' +\n 'Disable browser extensions or use incognito mode and try again.'\n )\n );\n return;\n } else if (!isLocalhost && isAllowedHost) {\n // Skipped for localhost to only allow requests from this dev-sever and not escalate\n // the cross-origin resource sharing that's allowed beyond the browser's defaults\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin);\n }\n\n maybePreventMetroResetCorsHeader(req, res);\n }\n\n // Block MIME-type sniffing.\n res.setHeader('X-Content-Type-Options', 'nosniff');\n\n next();\n };\n}\n\n// When accessing source maps,\n// metro will overwrite the `Access-Control-Allow-Origin` header with hardcoded `devtools://devtools` value.\n// https://github.com/facebook/metro/blob/a7f8955e6d2424b0d5f73d4bcdaf22560e1d5f27/packages/metro/src/Server.js#L540\n// This is a workaround to prevent this behavior.\nfunction maybePreventMetroResetCorsHeader(req: ServerRequest, res: ServerResponse) {\n const pathname = req.url ? new URL(req.url, `http://${req.headers.host}`).pathname : '';\n if (pathname.endsWith('.map')) {\n const setHeader = res.setHeader.bind(res);\n res.setHeader = (key, ...args) => {\n if (key !== 'Access-Control-Allow-Origin') {\n setHeader(key, ...args);\n }\n return res;\n };\n }\n}\n"],"names":["_isLocalHostname","createCorsMiddleware","DEFAULT_ALLOWED_CORS_HOSTS","hostname","maybeIp","ipv6To4Prefix","startsWith","slice","length","test","split","every","part","num","parseInt","exp","allowedHosts","extra","router","headOrigin","push","URL","host","origin","req","res","next","headers","isSameOrigin","isLocalhost","isAllowedHost","includes","Error","setHeader","maybePreventMetroResetCorsHeader","pathname","url","endsWith","bind","key","args"],"mappings":";;;;;;;;;;;IAWaA,gBAAgB;eAAhBA;;IAqBGC,oBAAoB;eAApBA;;;AA5BhB,MAAMC,6BAA6B;IACjC;CACD;AAKM,MAAMF,mBAAmB,CAACG;IAC/B,IAAIA,aAAa,aAAa;QAC5B,OAAO;IACT;IACA,IAAIC,UAAUD;IACd,MAAME,gBAAgB;IACtB,IAAID,QAAQE,UAAU,CAACD,gBAAgB;QACrCD,UAAUA,QAAQG,KAAK,CAACF,cAAcG,MAAM;IAC9C;IACA,IAAIJ,YAAY,OAAO;QACrB,OAAO;IACT,OAAO,IAAI,mBAAmBK,IAAI,CAACL,UAAU;QAC3C,OAAOA,QAAQM,KAAK,CAAC,KAAKC,KAAK,CAAC,CAACC;YAC/B,MAAMC,MAAMC,SAASF,MAAM;YAC3B,OAAOC,OAAO,KAAKA,OAAO;QAC5B;IACF,OAAO;QACL,OAAO;IACT;AACF;AAEO,SAASZ,qBAAqBc,GAAe;QAG9CA,mBAAAA,YAGAA,oBAAAA;IALJ,MAAMC,eAAe;WAAId;KAA2B;IACpD,qCAAqC;IACrC,KAAIa,aAAAA,IAAIE,KAAK,sBAATF,oBAAAA,WAAWG,MAAM,qBAAjBH,kBAAmBI,UAAU,EAAE;QACjCH,aAAaI,IAAI,CAAC,IAAIC,IAAIN,IAAIE,KAAK,CAACC,MAAM,CAACC,UAAU,EAAEG,IAAI;IAC7D;IACA,KAAIP,cAAAA,IAAIE,KAAK,sBAATF,qBAAAA,YAAWG,MAAM,qBAAjBH,mBAAmBQ,MAAM,EAAE;QAC7BP,aAAaI,IAAI,CAAC,IAAIC,IAAIN,IAAIE,KAAK,CAACC,MAAM,CAACK,MAAM,EAAED,IAAI;IACzD;IAEA,OAAO,CAACE,KAAoBC,KAAqBC;QAC/C,IAAI,OAAOF,IAAIG,OAAO,CAACJ,MAAM,KAAK,UAAU;YAC1C,MAAM,EAAED,IAAI,EAAEnB,QAAQ,EAAE,GAAG,IAAIkB,IAAIG,IAAIG,OAAO,CAACJ,MAAM;YACrD,MAAMK,eAAeN,SAASE,IAAIG,OAAO,CAACL,IAAI;YAC9C,MAAMO,cAAc7B,iBAAiBG;YACrC,MAAM2B,gBAAgBd,aAAae,QAAQ,CAACT,SAASO;YACrD,IAAI,CAACD,gBAAgB,CAACE,eAAe;gBACnCJ,KACE,IAAIM,MACF,CAAC,0BAA0B,EAAER,IAAIG,OAAO,CAACJ,MAAM,CAAC,EAAE,CAAC,GACjD,4FACA;gBAGN;YACF,OAAO,IAAI,CAACM,eAAeC,eAAe;gBACxC,oFAAoF;gBACpF,iFAAiF;gBACjFL,IAAIQ,SAAS,CAAC,+BAA+BT,IAAIG,OAAO,CAACJ,MAAM;YACjE;YAEAW,iCAAiCV,KAAKC;QACxC;QAEA,4BAA4B;QAC5BA,IAAIQ,SAAS,CAAC,0BAA0B;QAExCP;IACF;AACF;AAEA,8BAA8B;AAC9B,4GAA4G;AAC5G,oHAAoH;AACpH,iDAAiD;AACjD,SAASQ,iCAAiCV,GAAkB,EAAEC,GAAmB;IAC/E,MAAMU,WAAWX,IAAIY,GAAG,GAAG,IAAIf,IAAIG,IAAIY,GAAG,EAAE,CAAC,OAAO,EAAEZ,IAAIG,OAAO,CAACL,IAAI,EAAE,EAAEa,QAAQ,GAAG;IACrF,IAAIA,SAASE,QAAQ,CAAC,SAAS;QAC7B,MAAMJ,YAAYR,IAAIQ,SAAS,CAACK,IAAI,CAACb;QACrCA,IAAIQ,SAAS,GAAG,CAACM,KAAK,GAAGC;YACvB,IAAID,QAAQ,+BAA+B;gBACzCN,UAAUM,QAAQC;YACpB;YACA,OAAOf;QACT;IACF;AACF"}
|
|
@@ -34,18 +34,50 @@ function _interop_require_default(obj) {
|
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
36
|
const debug = require('debug')('expo:start:server:middleware:createFile');
|
|
37
|
+
const ROUTER_INDEX_CONTENTS = `import { StyleSheet, Text, View } from "react-native";
|
|
38
|
+
|
|
39
|
+
export default function Page() {
|
|
40
|
+
return (
|
|
41
|
+
<View style={styles.container}>
|
|
42
|
+
<View style={styles.main}>
|
|
43
|
+
<Text style={styles.title}>Hello World</Text>
|
|
44
|
+
<Text style={styles.subtitle}>This is the first page of your app.</Text>
|
|
45
|
+
</View>
|
|
46
|
+
</View>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const styles = StyleSheet.create({
|
|
51
|
+
container: {
|
|
52
|
+
flex: 1,
|
|
53
|
+
alignItems: "center",
|
|
54
|
+
padding: 24,
|
|
55
|
+
},
|
|
56
|
+
main: {
|
|
57
|
+
flex: 1,
|
|
58
|
+
justifyContent: "center",
|
|
59
|
+
maxWidth: 960,
|
|
60
|
+
marginHorizontal: "auto",
|
|
61
|
+
},
|
|
62
|
+
title: {
|
|
63
|
+
fontSize: 64,
|
|
64
|
+
fontWeight: "bold",
|
|
65
|
+
},
|
|
66
|
+
subtitle: {
|
|
67
|
+
fontSize: 36,
|
|
68
|
+
color: "#38434D",
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
`;
|
|
37
72
|
class CreateFileMiddleware extends _ExpoMiddleware.ExpoMiddleware {
|
|
38
|
-
constructor(
|
|
39
|
-
super(projectRoot, [
|
|
73
|
+
constructor(options){
|
|
74
|
+
super(options.projectRoot, [
|
|
40
75
|
'/_expo/touch'
|
|
41
|
-
]), this.
|
|
76
|
+
]), this.options = options;
|
|
42
77
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
resolveExtension(inputPath) {
|
|
47
|
-
let resolvedPath = inputPath;
|
|
48
|
-
const extension = _path().default.extname(inputPath);
|
|
78
|
+
resolveExtension(basePath, relativePath) {
|
|
79
|
+
let resolvedPath = relativePath;
|
|
80
|
+
const extension = _path().default.extname(relativePath);
|
|
49
81
|
if (extension === '.js') {
|
|
50
82
|
// Automatically convert JS files to TS files when added to a project
|
|
51
83
|
// with TypeScript.
|
|
@@ -54,7 +86,7 @@ class CreateFileMiddleware extends _ExpoMiddleware.ExpoMiddleware {
|
|
|
54
86
|
resolvedPath = resolvedPath.replace(/\.js$/, '.tsx');
|
|
55
87
|
}
|
|
56
88
|
}
|
|
57
|
-
return resolvedPath;
|
|
89
|
+
return _path().default.join(basePath, resolvedPath);
|
|
58
90
|
}
|
|
59
91
|
async parseRawBody(req) {
|
|
60
92
|
const rawBody = await new Promise((resolve, reject)=>{
|
|
@@ -69,19 +101,26 @@ class CreateFileMiddleware extends _ExpoMiddleware.ExpoMiddleware {
|
|
|
69
101
|
reject(err);
|
|
70
102
|
});
|
|
71
103
|
});
|
|
72
|
-
const
|
|
73
|
-
this.assertTouchFileBody(properties);
|
|
74
|
-
return properties;
|
|
75
|
-
}
|
|
76
|
-
assertTouchFileBody(body) {
|
|
104
|
+
const body = JSON.parse(rawBody);
|
|
77
105
|
if (typeof body !== 'object' || body == null) {
|
|
78
106
|
throw new Error('Expected object');
|
|
107
|
+
} else if (typeof body.type !== 'string') {
|
|
108
|
+
throw new Error('Expected "type" in body to be string');
|
|
79
109
|
}
|
|
80
|
-
|
|
81
|
-
|
|
110
|
+
switch(body.type){
|
|
111
|
+
case 'router_index':
|
|
112
|
+
return body;
|
|
113
|
+
default:
|
|
114
|
+
throw new Error('Unknown "type" passed in body');
|
|
82
115
|
}
|
|
83
|
-
|
|
84
|
-
|
|
116
|
+
}
|
|
117
|
+
makeOutputForInput(input) {
|
|
118
|
+
switch(input.type){
|
|
119
|
+
case 'router_index':
|
|
120
|
+
return {
|
|
121
|
+
absolutePath: this.resolveExtension(this.options.appDir, 'index.js'),
|
|
122
|
+
contents: ROUTER_INDEX_CONTENTS
|
|
123
|
+
};
|
|
85
124
|
}
|
|
86
125
|
}
|
|
87
126
|
async handleRequestAsync(req, res) {
|
|
@@ -100,18 +139,18 @@ class CreateFileMiddleware extends _ExpoMiddleware.ExpoMiddleware {
|
|
|
100
139
|
return;
|
|
101
140
|
}
|
|
102
141
|
debug(`Requested: %O`, properties);
|
|
103
|
-
const
|
|
104
|
-
if (_fs().default.existsSync(
|
|
142
|
+
const file = this.makeOutputForInput(properties);
|
|
143
|
+
if (_fs().default.existsSync(file.absolutePath)) {
|
|
105
144
|
res.statusCode = 409;
|
|
106
145
|
res.end('File already exists.');
|
|
107
146
|
return;
|
|
108
147
|
}
|
|
109
|
-
debug(`Resolved path:`,
|
|
148
|
+
debug(`Resolved path:`, file.absolutePath);
|
|
110
149
|
try {
|
|
111
|
-
await _fs().default.promises.mkdir(_path().default.dirname(
|
|
150
|
+
await _fs().default.promises.mkdir(_path().default.dirname(file.absolutePath), {
|
|
112
151
|
recursive: true
|
|
113
152
|
});
|
|
114
|
-
await _fs().default.promises.writeFile(
|
|
153
|
+
await _fs().default.promises.writeFile(file.absolutePath, file.contents, 'utf8');
|
|
115
154
|
} catch (e) {
|
|
116
155
|
debug('Error writing file', e);
|
|
117
156
|
res.statusCode = 500;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/CreateFileMiddleware.ts"],"sourcesContent":["/**\n * Copyright © 2022 650 Industries.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nconst debug = require('debug')('expo:start:server:middleware:createFile') as typeof console.log;\n\ninterface TouchFileInput {\n type: 'router_index';\n}\n\ninterface TouchFileOutput {\n absolutePath: string;\n contents: string;\n}\n\nconst ROUTER_INDEX_CONTENTS = `import { StyleSheet, Text, View } from \"react-native\";\n\nexport default function Page() {\n return (\n <View style={styles.container}>\n <View style={styles.main}>\n <Text style={styles.title}>Hello World</Text>\n <Text style={styles.subtitle}>This is the first page of your app.</Text>\n </View>\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: \"center\",\n padding: 24,\n },\n main: {\n flex: 1,\n justifyContent: \"center\",\n maxWidth: 960,\n marginHorizontal: \"auto\",\n },\n title: {\n fontSize: 64,\n fontWeight: \"bold\",\n },\n subtitle: {\n fontSize: 36,\n color: \"#38434D\",\n },\n});\n`;\n\ninterface CreateFileMiddlewareOptions {\n /** The absolute metro or server root, used to calculate the relative dom entry path */\n metroRoot: string;\n /** The absolute project root, used to resolve the `expo/dom/entry.js` path */\n projectRoot: string;\n /** The expo-router root */\n appDir: string;\n}\n\n/**\n * Middleware for creating a file given a `POST` request with\n * `{ contents: string, path: string }` in the body.\n */\nexport class CreateFileMiddleware extends ExpoMiddleware {\n constructor(protected options: CreateFileMiddlewareOptions) {\n super(options.projectRoot, ['/_expo/touch']);\n }\n\n protected resolveExtension(basePath: string, relativePath: string): string {\n let resolvedPath = relativePath;\n const extension = path.extname(relativePath);\n if (extension === '.js') {\n // Automatically convert JS files to TS files when added to a project\n // with TypeScript.\n const tsconfigPath = path.join(this.projectRoot, 'tsconfig.json');\n if (fs.existsSync(tsconfigPath)) {\n resolvedPath = resolvedPath.replace(/\\.js$/, '.tsx');\n }\n }\n return path.join(basePath, resolvedPath);\n }\n\n protected async parseRawBody(req: ServerRequest): Promise<TouchFileInput> {\n const rawBody = await new Promise<string>((resolve, reject) => {\n let body = '';\n req.on('data', (chunk) => {\n body += chunk.toString();\n });\n req.on('end', () => {\n resolve(body);\n });\n req.on('error', (err) => {\n reject(err);\n });\n });\n\n const body = JSON.parse(rawBody);\n if (typeof body !== 'object' || body == null) {\n throw new Error('Expected object');\n } else if (typeof body.type !== 'string') {\n throw new Error('Expected \"type\" in body to be string');\n }\n\n switch (body.type) {\n case 'router_index':\n return body;\n default:\n throw new Error('Unknown \"type\" passed in body');\n }\n }\n\n private makeOutputForInput(input: TouchFileInput): TouchFileOutput {\n switch (input.type) {\n case 'router_index':\n return {\n absolutePath: this.resolveExtension(this.options.appDir, 'index.js'),\n contents: ROUTER_INDEX_CONTENTS,\n };\n }\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n if (req.method !== 'POST') {\n res.statusCode = 405;\n res.end('Method Not Allowed');\n return;\n }\n\n let properties: TouchFileInput;\n try {\n properties = await this.parseRawBody(req);\n } catch (e) {\n debug('Error parsing request body', e);\n res.statusCode = 400;\n res.end('Bad Request');\n return;\n }\n\n debug(`Requested: %O`, properties);\n\n const file = this.makeOutputForInput(properties);\n if (fs.existsSync(file.absolutePath)) {\n res.statusCode = 409;\n res.end('File already exists.');\n return;\n }\n\n debug(`Resolved path:`, file.absolutePath);\n\n try {\n await fs.promises.mkdir(path.dirname(file.absolutePath), { recursive: true });\n await fs.promises.writeFile(file.absolutePath, file.contents, 'utf8');\n } catch (e) {\n debug('Error writing file', e);\n res.statusCode = 500;\n res.end('Error writing file.');\n return;\n }\n\n debug(`File created`);\n res.statusCode = 200;\n res.end('OK');\n }\n}\n"],"names":["CreateFileMiddleware","debug","require","ROUTER_INDEX_CONTENTS","ExpoMiddleware","constructor","options","projectRoot","resolveExtension","basePath","relativePath","resolvedPath","extension","path","extname","tsconfigPath","join","fs","existsSync","replace","parseRawBody","req","rawBody","Promise","resolve","reject","body","on","chunk","toString","err","JSON","parse","Error","type","makeOutputForInput","input","absolutePath","appDir","contents","handleRequestAsync","res","method","statusCode","end","properties","e","file","promises","mkdir","dirname","recursive","writeFile"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ class FetchClient {
|
|
|
33
33
|
this.headers = {
|
|
34
34
|
accept: 'application/json',
|
|
35
35
|
'content-type': 'application/json',
|
|
36
|
-
'user-agent': `expo-cli/${"54.0.
|
|
36
|
+
'user-agent': `expo-cli/${"54.0.20"}`,
|
|
37
37
|
authorization: 'Basic ' + _nodebuffer().Buffer.from(`${target}:`).toString('base64')
|
|
38
38
|
};
|
|
39
39
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "54.0.
|
|
3
|
+
"version": "54.0.20",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "build/bin/cli",
|
|
6
6
|
"bin": {
|
|
@@ -43,18 +43,18 @@
|
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@0no-co/graphql.web": "^1.0.8",
|
|
45
45
|
"@expo/code-signing-certificates": "^0.0.5",
|
|
46
|
-
"@expo/config": "~12.0.
|
|
47
|
-
"@expo/config-plugins": "~54.0.
|
|
46
|
+
"@expo/config": "~12.0.13",
|
|
47
|
+
"@expo/config-plugins": "~54.0.4",
|
|
48
48
|
"@expo/devcert": "^1.2.1",
|
|
49
49
|
"@expo/env": "~2.0.8",
|
|
50
50
|
"@expo/image-utils": "^0.8.8",
|
|
51
51
|
"@expo/json-file": "^10.0.8",
|
|
52
|
-
"@expo/metro": "~54.
|
|
53
|
-
"@expo/metro-config": "~54.0.
|
|
52
|
+
"@expo/metro": "~54.2.0",
|
|
53
|
+
"@expo/metro-config": "~54.0.12",
|
|
54
54
|
"@expo/osascript": "^2.3.8",
|
|
55
55
|
"@expo/package-manager": "^1.9.9",
|
|
56
56
|
"@expo/plist": "^0.4.8",
|
|
57
|
-
"@expo/prebuild-config": "^54.0.
|
|
57
|
+
"@expo/prebuild-config": "^54.0.8",
|
|
58
58
|
"@expo/schema-utils": "^0.1.8",
|
|
59
59
|
"@expo/spawn-async": "^1.7.2",
|
|
60
60
|
"@expo/ws-tunnel": "^1.0.1",
|
|
@@ -169,5 +169,5 @@
|
|
|
169
169
|
"tree-kill": "^1.2.2",
|
|
170
170
|
"tsd": "^0.28.1"
|
|
171
171
|
},
|
|
172
|
-
"gitHead": "
|
|
172
|
+
"gitHead": "309f8dc09d24203fb80eca0ad534106c5f73c4b7"
|
|
173
173
|
}
|