@expo/cli 0.18.13 → 0.18.15
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/start/server/middleware/CorsMiddleware.js +3 -2
- package/build/src/start/server/middleware/CorsMiddleware.js.map +1 -1
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js +26 -7
- package/build/src/start/server/middleware/ReactDevToolsPageMiddleware.js.map +1 -1
- package/build/src/utils/telemetry/getContext.js +1 -1
- package/package.json +7 -7
- package/static/react-devtools-page/index.html +6 -37
- package/static/react-devtools-page/standalone.js +3 -0
package/build/bin/cli
CHANGED
|
@@ -25,8 +25,9 @@ function createCorsMiddleware(exp) {
|
|
|
25
25
|
}
|
|
26
26
|
return (req, res, next)=>{
|
|
27
27
|
if (typeof req.headers.origin === "string") {
|
|
28
|
-
const { hostname } = new URL(req.headers.origin);
|
|
29
|
-
|
|
28
|
+
const { host , hostname } = new URL(req.headers.origin);
|
|
29
|
+
const isSameOrigin = host === req.headers.host;
|
|
30
|
+
if (!isSameOrigin && !allowedHostnames.includes(hostname)) {
|
|
30
31
|
next(new Error(`Unauthorized request from ${req.headers.origin}. ` + "This may happen because of a conflicting browser extension to intercept HTTP requests. " + "Please try again without browser extensions or using incognito mode."));
|
|
31
32
|
return;
|
|
32
33
|
}
|
|
@@ -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 DEFAULT_ALLOWED_CORS_HOSTNAMES = [\n 'localhost',\n 'chrome-devtools-frontend.appspot.com', // Support remote Chrome DevTools frontend\n 'devtools', // Support local Chrome DevTools `devtools://devtools`\n];\n\nexport function createCorsMiddleware(exp: ExpoConfig) {\n const allowedHostnames = [...DEFAULT_ALLOWED_CORS_HOSTNAMES];\n // Support for expo-router API routes\n if (exp.extra?.router?.headOrigin) {\n allowedHostnames.push(new URL(exp.extra.router.headOrigin).hostname);\n }\n if (exp.extra?.router?.origin) {\n allowedHostnames.push(new URL(exp.extra.router.origin).hostname);\n }\n\n return (req: ServerRequest, res: ServerResponse, next: (err?: Error) => void) => {\n if (typeof req.headers.origin === 'string') {\n const { hostname } = new URL(req.headers.origin);\n if (!allowedHostnames.includes(hostname)) {\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 'Please try again without browser extensions or using incognito mode.'\n )\n );\n return;\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin);\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":["createCorsMiddleware","DEFAULT_ALLOWED_CORS_HOSTNAMES","exp","allowedHostnames","extra","router","headOrigin","push","URL","hostname","origin","req","res","next","headers","includes","Error","setHeader","maybePreventMetroResetCorsHeader","pathname","url","
|
|
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_HOSTNAMES = [\n 'localhost',\n 'chrome-devtools-frontend.appspot.com', // Support remote Chrome DevTools frontend\n 'devtools', // Support local Chrome DevTools `devtools://devtools`\n];\n\nexport function createCorsMiddleware(exp: ExpoConfig) {\n const allowedHostnames = [...DEFAULT_ALLOWED_CORS_HOSTNAMES];\n // Support for expo-router API routes\n if (exp.extra?.router?.headOrigin) {\n allowedHostnames.push(new URL(exp.extra.router.headOrigin).hostname);\n }\n if (exp.extra?.router?.origin) {\n allowedHostnames.push(new URL(exp.extra.router.origin).hostname);\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 if (!isSameOrigin && !allowedHostnames.includes(hostname)) {\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 'Please try again without browser extensions or using incognito mode.'\n )\n );\n return;\n }\n\n res.setHeader('Access-Control-Allow-Origin', req.headers.origin);\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":["createCorsMiddleware","DEFAULT_ALLOWED_CORS_HOSTNAMES","exp","allowedHostnames","extra","router","headOrigin","push","URL","hostname","origin","req","res","next","headers","host","isSameOrigin","includes","Error","setHeader","maybePreventMetroResetCorsHeader","pathname","url","endsWith","bind","key","args"],"mappings":"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"}
|
|
@@ -12,9 +12,9 @@ _export(exports, {
|
|
|
12
12
|
ReactDevToolsEndpoint: ()=>ReactDevToolsEndpoint,
|
|
13
13
|
ReactDevToolsPageMiddleware: ()=>ReactDevToolsPageMiddleware
|
|
14
14
|
});
|
|
15
|
-
function
|
|
16
|
-
const data = require("
|
|
17
|
-
|
|
15
|
+
function _assert() {
|
|
16
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("assert"));
|
|
17
|
+
_assert = function() {
|
|
18
18
|
return data;
|
|
19
19
|
};
|
|
20
20
|
return data;
|
|
@@ -33,6 +33,13 @@ function _resolveFrom() {
|
|
|
33
33
|
};
|
|
34
34
|
return data;
|
|
35
35
|
}
|
|
36
|
+
function _send() {
|
|
37
|
+
const data = /*#__PURE__*/ _interopRequireDefault(require("send"));
|
|
38
|
+
_send = function() {
|
|
39
|
+
return data;
|
|
40
|
+
};
|
|
41
|
+
return data;
|
|
42
|
+
}
|
|
36
43
|
const _expoMiddleware = require("./ExpoMiddleware");
|
|
37
44
|
function _interopRequireDefault(obj) {
|
|
38
45
|
return obj && obj.__esModule ? obj : {
|
|
@@ -46,14 +53,26 @@ class ReactDevToolsPageMiddleware extends _expoMiddleware.ExpoMiddleware {
|
|
|
46
53
|
ReactDevToolsEndpoint
|
|
47
54
|
]);
|
|
48
55
|
}
|
|
56
|
+
shouldHandleRequest(req) {
|
|
57
|
+
var ref;
|
|
58
|
+
if (!((ref = req.url) == null ? void 0 : ref.startsWith(ReactDevToolsEndpoint))) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
49
63
|
async handleRequestAsync(req, res) {
|
|
64
|
+
(0, _assert().default)(req.headers.host, "Request headers must include host");
|
|
65
|
+
var _url;
|
|
66
|
+
const { pathname } = new URL((_url = req.url) != null ? _url : "/", `http://${req.headers.host}`);
|
|
67
|
+
const requestPath = pathname.substring(ReactDevToolsEndpoint.length) || "/";
|
|
50
68
|
var // Production: This will resolve when installed in the project.
|
|
51
69
|
ref;
|
|
52
|
-
const
|
|
70
|
+
const entryPath = (ref = _resolveFrom().default.silent(this.projectRoot, "expo/static/react-devtools-page/index.html")) != null ? ref : // Development: This will resolve when testing locally.
|
|
53
71
|
_path().default.resolve(__dirname, "../../../../../static/react-devtools-page/index.html");
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
72
|
+
const staticRoot = _path().default.dirname(entryPath);
|
|
73
|
+
(0, _send().default)(req, requestPath, {
|
|
74
|
+
root: staticRoot
|
|
75
|
+
}).pipe(res);
|
|
57
76
|
}
|
|
58
77
|
}
|
|
59
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/start/server/middleware/ReactDevToolsPageMiddleware.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../../src/start/server/middleware/ReactDevToolsPageMiddleware.ts"],"sourcesContent":["import assert from 'assert';\nimport path from 'path';\nimport resolveFrom from 'resolve-from';\nimport send from 'send';\n\nimport { ExpoMiddleware } from './ExpoMiddleware';\nimport { ServerRequest, ServerResponse } from './server.types';\n\nexport const ReactDevToolsEndpoint = '/_expo/react-devtools';\n\nexport class ReactDevToolsPageMiddleware extends ExpoMiddleware {\n constructor(projectRoot: string) {\n super(projectRoot, [ReactDevToolsEndpoint]);\n }\n\n override shouldHandleRequest(req: ServerRequest): boolean {\n if (!req.url?.startsWith(ReactDevToolsEndpoint)) {\n return false;\n }\n return true;\n }\n\n async handleRequestAsync(req: ServerRequest, res: ServerResponse): Promise<void> {\n assert(req.headers.host, 'Request headers must include host');\n const { pathname } = new URL(req.url ?? '/', `http://${req.headers.host}`);\n const requestPath = pathname.substring(ReactDevToolsEndpoint.length) || '/';\n\n const entryPath =\n // Production: This will resolve when installed in the project.\n resolveFrom.silent(this.projectRoot, 'expo/static/react-devtools-page/index.html') ??\n // Development: This will resolve when testing locally.\n path.resolve(__dirname, '../../../../../static/react-devtools-page/index.html');\n\n const staticRoot = path.dirname(entryPath);\n send(req, requestPath, { root: staticRoot }).pipe(res);\n }\n}\n"],"names":["ReactDevToolsEndpoint","ReactDevToolsPageMiddleware","ExpoMiddleware","constructor","projectRoot","shouldHandleRequest","req","url","startsWith","handleRequestAsync","res","assert","headers","host","pathname","URL","requestPath","substring","length","resolveFrom","entryPath","silent","path","resolve","__dirname","staticRoot","dirname","send","root","pipe"],"mappings":"AAAA;;;;;;;;;;;IAQaA,qBAAqB,MAArBA,qBAAqB;IAErBC,2BAA2B,MAA3BA,2BAA2B;;;8DAVrB,QAAQ;;;;;;;8DACV,MAAM;;;;;;;8DACC,cAAc;;;;;;;8DACrB,MAAM;;;;;;gCAEQ,kBAAkB;;;;;;AAG1C,MAAMD,qBAAqB,GAAG,uBAAuB,AAAC;AAEtD,MAAMC,2BAA2B,SAASC,eAAc,eAAA;IAC7DC,YAAYC,WAAmB,CAAE;QAC/B,KAAK,CAACA,WAAW,EAAE;YAACJ,qBAAqB;SAAC,CAAC,CAAC;IAC9C;IAESK,mBAAmB,CAACC,GAAkB,EAAW;YACnDA,GAAO;QAAZ,IAAI,EAACA,CAAAA,GAAO,GAAPA,GAAG,CAACC,GAAG,SAAY,GAAnBD,KAAAA,CAAmB,GAAnBA,GAAO,CAAEE,UAAU,CAACR,qBAAqB,CAAC,CAAA,EAAE;YAC/C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd;UAEMS,kBAAkB,CAACH,GAAkB,EAAEI,GAAmB,EAAiB;QAC/EC,IAAAA,OAAM,EAAA,QAAA,EAACL,GAAG,CAACM,OAAO,CAACC,IAAI,EAAE,mCAAmC,CAAC,CAAC;YACjCP,IAAO;QAApC,MAAM,EAAEQ,QAAQ,CAAA,EAAE,GAAG,IAAIC,GAAG,CAACT,CAAAA,IAAO,GAAPA,GAAG,CAACC,GAAG,YAAPD,IAAO,GAAI,GAAG,EAAE,CAAC,OAAO,EAAEA,GAAG,CAACM,OAAO,CAACC,IAAI,CAAC,CAAC,CAAC,AAAC;QAC3E,MAAMG,WAAW,GAAGF,QAAQ,CAACG,SAAS,CAACjB,qBAAqB,CAACkB,MAAM,CAAC,IAAI,GAAG,AAAC;YAG1E,+DAA+D;QAC/DC,GAAkF;QAFpF,MAAMC,SAAS,GAEbD,CAAAA,GAAkF,GAAlFA,YAAW,EAAA,QAAA,CAACE,MAAM,CAAC,IAAI,CAACjB,WAAW,EAAE,4CAA4C,CAAC,YAAlFe,GAAkF,GAClF,uDAAuD;QACvDG,KAAI,EAAA,QAAA,CAACC,OAAO,CAACC,SAAS,EAAE,sDAAsD,CAAC,AAAC;QAElF,MAAMC,UAAU,GAAGH,KAAI,EAAA,QAAA,CAACI,OAAO,CAACN,SAAS,CAAC,AAAC;QAC3CO,IAAAA,KAAI,EAAA,QAAA,EAACrB,GAAG,EAAEU,WAAW,EAAE;YAAEY,IAAI,EAAEH,UAAU;SAAE,CAAC,CAACI,IAAI,CAACnB,GAAG,CAAC,CAAC;IACzD;CACD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.15",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "build/bin/cli",
|
|
6
6
|
"bin": {
|
|
@@ -40,9 +40,9 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@babel/runtime": "^7.20.0",
|
|
42
42
|
"@expo/code-signing-certificates": "0.0.5",
|
|
43
|
-
"@expo/config": "~9.0.0",
|
|
44
|
-
"@expo/config-plugins": "~8.0.0",
|
|
45
|
-
"@expo/devcert": "^1.
|
|
43
|
+
"@expo/config": "~9.0.0-beta.0",
|
|
44
|
+
"@expo/config-plugins": "~8.0.0-beta.0",
|
|
45
|
+
"@expo/devcert": "^1.0.0",
|
|
46
46
|
"@expo/env": "~0.3.0",
|
|
47
47
|
"@expo/image-utils": "^0.5.0",
|
|
48
48
|
"@expo/json-file": "^8.3.0",
|
|
@@ -50,11 +50,11 @@
|
|
|
50
50
|
"@expo/osascript": "^2.0.31",
|
|
51
51
|
"@expo/package-manager": "^1.5.0",
|
|
52
52
|
"@expo/plist": "^0.1.0",
|
|
53
|
-
"@expo/prebuild-config": "7.0.
|
|
53
|
+
"@expo/prebuild-config": "7.0.5",
|
|
54
54
|
"@expo/rudder-sdk-node": "1.1.1",
|
|
55
55
|
"@expo/spawn-async": "^1.7.2",
|
|
56
56
|
"@expo/xcpretty": "^4.3.0",
|
|
57
|
-
"@react-native/dev-middleware": "
|
|
57
|
+
"@react-native/dev-middleware": "0.74.83",
|
|
58
58
|
"@urql/core": "2.3.6",
|
|
59
59
|
"@urql/exchange-retry": "0.3.0",
|
|
60
60
|
"accepts": "^1.3.8",
|
|
@@ -171,5 +171,5 @@
|
|
|
171
171
|
"tree-kill": "^1.2.2",
|
|
172
172
|
"tsd": "^0.28.1"
|
|
173
173
|
},
|
|
174
|
-
"gitHead": "
|
|
174
|
+
"gitHead": "01afaad3852d3af00238b2e28ea6e13db6f0a1f8"
|
|
175
175
|
}
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
width: 100%;
|
|
36
36
|
height: 100%;
|
|
37
37
|
}
|
|
38
|
-
|
|
39
38
|
</style>
|
|
40
39
|
</head>
|
|
41
40
|
|
|
@@ -45,45 +44,15 @@
|
|
|
45
44
|
</noscript>
|
|
46
45
|
<div id="hint">Connecting to ReactDevToolsProxy...</div>
|
|
47
46
|
<div id="root"></div>
|
|
48
|
-
<!--
|
|
49
|
-
JSPM Generator Import Map
|
|
50
|
-
Edit URL: https://generator.jspm.io/#U2NgYGBkDM0rySzJSU1hKEpNTC7RTUktK8nPzynWTc4vSnUw0TMy1zPSLy5JzEtJzMnPSwUAiUm0+zQA
|
|
51
|
-
-->
|
|
52
47
|
<script type="importmap">
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
},
|
|
57
|
-
"scopes": {
|
|
58
|
-
"https://ga.jspm.io/": {
|
|
59
|
-
"buffer": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/buffer.js",
|
|
60
|
-
"child_process": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/child_process.js",
|
|
61
|
-
"crypto": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/crypto.js",
|
|
62
|
-
"events": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/events.js",
|
|
63
|
-
"fs": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/fs.js",
|
|
64
|
-
"http": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/http.js",
|
|
65
|
-
"https": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/https.js",
|
|
66
|
-
"net": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/net.js",
|
|
67
|
-
"path": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/path.js",
|
|
68
|
-
"process": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/process-production.js",
|
|
69
|
-
"stream": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/stream.js",
|
|
70
|
-
"tls": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/tls.js",
|
|
71
|
-
"url": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/url.js",
|
|
72
|
-
"util": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/util.js",
|
|
73
|
-
"vm": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/vm.js",
|
|
74
|
-
"zlib": "https://ga.jspm.io/npm:@jspm/core@2.0.1/nodelibs/browser/zlib.js"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
48
|
+
{
|
|
49
|
+
"imports": {
|
|
50
|
+
"react-devtools-core/standalone": "./react-devtools/standalone.js"
|
|
77
51
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
<!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support (all except Chrome 89+) -->
|
|
81
|
-
<script async src="https://ga.jspm.io/npm:es-module-shims@1.5.1/dist/es-module-shims.js"
|
|
82
|
-
crossorigin="anonymous"></script>
|
|
83
|
-
|
|
52
|
+
}
|
|
53
|
+
</script>
|
|
84
54
|
<script type="module">
|
|
85
|
-
import
|
|
86
|
-
const DevTools = DevToolsUIWrapper.default;
|
|
55
|
+
import DevTools from "react-devtools-core/standalone";
|
|
87
56
|
|
|
88
57
|
/**
|
|
89
58
|
* Private command to support DevTools frontend reload
|