@expo/cli 56.1.3 → 56.1.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/build/bin/cli +1 -1
- package/build/src/api/endpoint.js +1 -1
- package/build/src/api/endpoint.js.map +1 -1
- package/build/src/api/user/actions.js +7 -0
- package/build/src/api/user/actions.js.map +1 -1
- package/build/src/api/user/expoSsoLauncher.js +76 -24
- package/build/src/api/user/expoSsoLauncher.js.map +1 -1
- package/build/src/api/user/user.js +12 -0
- package/build/src/api/user/user.js.map +1 -1
- package/build/src/customize/typescript.js.map +1 -1
- package/build/src/events/index.js +1 -1
- package/build/src/start/platforms/ios/simctl.js +4 -0
- package/build/src/start/platforms/ios/simctl.js.map +1 -1
- package/build/src/start/server/metro/MetroBundlerDevServer.js +57 -45
- package/build/src/start/server/metro/MetroBundlerDevServer.js.map +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js +1 -1
- package/build/src/start/server/metro/debugging/createDebugMiddleware.js.map +1 -1
- package/build/src/start/server/metro/instantiateMetro.js +2 -1
- package/build/src/start/server/metro/instantiateMetro.js.map +1 -1
- package/build/src/start/server/metro/runServer-fork.js +10 -1
- package/build/src/start/server/metro/runServer-fork.js.map +1 -1
- package/build/src/start/server/metro/withMetroMultiPlatform.js +8 -4
- package/build/src/start/server/metro/withMetroMultiPlatform.js.map +1 -1
- package/build/src/start/server/serverLogLikeMetro.js +2 -2
- package/build/src/start/server/serverLogLikeMetro.js.map +1 -1
- package/build/src/start/server/type-generation/routes.js +1 -3
- package/build/src/start/server/type-generation/routes.js.map +1 -1
- package/build/src/utils/open.js +243 -11
- package/build/src/utils/open.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 +17 -18
- package/static/loading-page/index.html +35 -1
package/build/src/utils/open.js
CHANGED
|
@@ -8,9 +8,30 @@ Object.defineProperty(exports, "openBrowserAsync", {
|
|
|
8
8
|
return openBrowserAsync;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
function
|
|
12
|
-
const data = /*#__PURE__*/
|
|
13
|
-
|
|
11
|
+
function _osascript() {
|
|
12
|
+
const data = /*#__PURE__*/ _interop_require_wildcard(require("@expo/osascript"));
|
|
13
|
+
_osascript = function() {
|
|
14
|
+
return data;
|
|
15
|
+
};
|
|
16
|
+
return data;
|
|
17
|
+
}
|
|
18
|
+
function _spawnasync() {
|
|
19
|
+
const data = /*#__PURE__*/ _interop_require_default(require("@expo/spawn-async"));
|
|
20
|
+
_spawnasync = function() {
|
|
21
|
+
return data;
|
|
22
|
+
};
|
|
23
|
+
return data;
|
|
24
|
+
}
|
|
25
|
+
function _os() {
|
|
26
|
+
const data = /*#__PURE__*/ _interop_require_default(require("os"));
|
|
27
|
+
_os = function() {
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
return data;
|
|
31
|
+
}
|
|
32
|
+
function _path() {
|
|
33
|
+
const data = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
34
|
+
_path = function() {
|
|
14
35
|
return data;
|
|
15
36
|
};
|
|
16
37
|
return data;
|
|
@@ -20,17 +41,228 @@ function _interop_require_default(obj) {
|
|
|
20
41
|
default: obj
|
|
21
42
|
};
|
|
22
43
|
}
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
|
|
44
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
45
|
+
if (typeof WeakMap !== "function") return null;
|
|
46
|
+
var cacheBabelInterop = new WeakMap();
|
|
47
|
+
var cacheNodeInterop = new WeakMap();
|
|
48
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
49
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
50
|
+
})(nodeInterop);
|
|
51
|
+
}
|
|
52
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
53
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
54
|
+
return obj;
|
|
55
|
+
}
|
|
56
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
57
|
+
return {
|
|
58
|
+
default: obj
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
62
|
+
if (cache && cache.has(obj)) {
|
|
63
|
+
return cache.get(obj);
|
|
64
|
+
}
|
|
65
|
+
var newObj = {
|
|
66
|
+
__proto__: null
|
|
67
|
+
};
|
|
68
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
69
|
+
for(var key in obj){
|
|
70
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
71
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
72
|
+
if (desc && (desc.get || desc.set)) {
|
|
73
|
+
Object.defineProperty(newObj, key, desc);
|
|
74
|
+
} else {
|
|
75
|
+
newObj[key] = obj[key];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
newObj.default = obj;
|
|
80
|
+
if (cache) {
|
|
81
|
+
cache.set(obj, newObj);
|
|
82
|
+
}
|
|
83
|
+
return newObj;
|
|
84
|
+
}
|
|
85
|
+
/** Splits an inline script into trimmed, non-empty lines for `osascript -e <line>`. */ function applescript(strings, ...values) {
|
|
86
|
+
let raw = strings[0];
|
|
87
|
+
for(let i = 0; i < values.length; i++){
|
|
88
|
+
raw += String(values[i]) + strings[i + 1];
|
|
89
|
+
}
|
|
90
|
+
return raw.split('\n').map((line)=>line.trim()).filter((line)=>line.length > 0);
|
|
91
|
+
}
|
|
92
|
+
/** Escapes a value for safe interpolation inside an AppleScript double-quoted string. */ function escapeAppleScriptString(value) {
|
|
93
|
+
return value.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\r/g, '\\r').replace(/\n/g, '\\n');
|
|
94
|
+
}
|
|
95
|
+
function buildOpenChromiumTabScript(target, matchUrl) {
|
|
96
|
+
const theURL = escapeAppleScriptString(target);
|
|
97
|
+
const matchURL = escapeAppleScriptString(matchUrl);
|
|
98
|
+
return applescript`
|
|
99
|
+
property targetTab: null
|
|
100
|
+
property targetTabIndex: -1
|
|
101
|
+
property targetWindow: null
|
|
102
|
+
property theProgram: ""
|
|
103
|
+
|
|
104
|
+
on run
|
|
105
|
+
set theProgram to my findRunningChromium()
|
|
106
|
+
if theProgram is "" then error "No Chromium browser is running."
|
|
107
|
+
set theURL to "${theURL}"
|
|
108
|
+
set matchURL to "${matchURL}"
|
|
109
|
+
using terms from application "Google Chrome"
|
|
110
|
+
tell application theProgram
|
|
111
|
+
if (count every window) = 0 then
|
|
112
|
+
make new window
|
|
113
|
+
end if
|
|
114
|
+
set found to my lookupTabWithUrl(matchURL)
|
|
115
|
+
if found then
|
|
116
|
+
set targetWindow's active tab index to targetTabIndex
|
|
117
|
+
tell targetTab to reload
|
|
118
|
+
tell targetWindow to activate
|
|
119
|
+
set index of targetWindow to 1
|
|
120
|
+
return
|
|
121
|
+
end if
|
|
122
|
+
set found to my lookupTabWithUrl("chrome://newtab/")
|
|
123
|
+
if found then
|
|
124
|
+
set targetWindow's active tab index to targetTabIndex
|
|
125
|
+
set URL of targetTab to theURL
|
|
126
|
+
tell targetWindow to activate
|
|
127
|
+
return
|
|
128
|
+
end if
|
|
129
|
+
tell window 1
|
|
130
|
+
activate
|
|
131
|
+
make new tab with properties {URL:theURL}
|
|
132
|
+
end tell
|
|
133
|
+
end tell
|
|
134
|
+
end using terms from
|
|
135
|
+
end run
|
|
136
|
+
|
|
137
|
+
on findRunningChromium()
|
|
138
|
+
set candidates to {"Google Chrome Canary", "Google Chrome", "Microsoft Edge", "Brave Browser", "Vivaldi", "Chromium"}
|
|
139
|
+
tell application "System Events"
|
|
140
|
+
set runningNames to name of every process
|
|
141
|
+
end tell
|
|
142
|
+
repeat with candidate in candidates
|
|
143
|
+
set candidateName to candidate as string
|
|
144
|
+
if candidateName is in runningNames then return candidateName
|
|
145
|
+
end repeat
|
|
146
|
+
return ""
|
|
147
|
+
end findRunningChromium
|
|
148
|
+
|
|
149
|
+
on lookupTabWithUrl(lookupUrl)
|
|
150
|
+
using terms from application "Google Chrome"
|
|
151
|
+
tell application theProgram
|
|
152
|
+
set found to false
|
|
153
|
+
set theTabIndex to -1
|
|
154
|
+
repeat with theWindow in every window
|
|
155
|
+
set theTabIndex to 0
|
|
156
|
+
repeat with theTab in every tab of theWindow
|
|
157
|
+
set theTabIndex to theTabIndex + 1
|
|
158
|
+
if (theTab's URL as string) contains lookupUrl then
|
|
159
|
+
set targetTab to theTab
|
|
160
|
+
set targetTabIndex to theTabIndex
|
|
161
|
+
set targetWindow to theWindow
|
|
162
|
+
set found to true
|
|
163
|
+
exit repeat
|
|
164
|
+
end if
|
|
165
|
+
end repeat
|
|
166
|
+
if found then exit repeat
|
|
167
|
+
end repeat
|
|
168
|
+
end tell
|
|
169
|
+
end using terms from
|
|
170
|
+
return found
|
|
171
|
+
end lookupTabWithUrl
|
|
172
|
+
`;
|
|
173
|
+
}
|
|
174
|
+
function safeOrigin(target) {
|
|
175
|
+
try {
|
|
176
|
+
return new URL(target).origin;
|
|
177
|
+
} catch {
|
|
178
|
+
return target;
|
|
26
179
|
}
|
|
27
|
-
|
|
180
|
+
}
|
|
181
|
+
async function tryOpenInChromiumTabAsync(target) {
|
|
182
|
+
const matchUrl = process.env.OPEN_MATCH_HOST_ONLY === 'true' ? safeOrigin(target) : target;
|
|
28
183
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
184
|
+
await _osascript().spawnAsync(buildOpenChromiumTabScript(target, matchUrl), {
|
|
185
|
+
stdio: 'ignore'
|
|
186
|
+
});
|
|
187
|
+
return true;
|
|
188
|
+
} catch {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async function openBrowserAsync(target) {
|
|
193
|
+
var _process_env_BROWSER;
|
|
194
|
+
const browserEnv = (_process_env_BROWSER = process.env.BROWSER) == null ? void 0 : _process_env_BROWSER.trim();
|
|
195
|
+
if ((browserEnv == null ? void 0 : browserEnv.toLowerCase()) === 'none') {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
// On macOS, `BROWSER=open` historically meant "use the default handler" rather than
|
|
199
|
+
// "launch an app called open" — treat it as if BROWSER were unset.
|
|
200
|
+
const browserApp = browserEnv && !(process.platform === 'darwin' && browserEnv.toLowerCase() === 'open') ? browserEnv : undefined;
|
|
201
|
+
const browserArgs = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];
|
|
202
|
+
if (process.platform === 'darwin') {
|
|
203
|
+
const isDefaultOrChrome = !browserApp || browserApp.toLowerCase() === 'google chrome';
|
|
204
|
+
if (isDefaultOrChrome && await tryOpenInChromiumTabAsync(target)) {
|
|
205
|
+
return true;
|
|
206
|
+
}
|
|
207
|
+
const openArgs = [];
|
|
208
|
+
if (browserApp) openArgs.push('-a', browserApp);
|
|
209
|
+
// Per `open(1)`, everything following `--args` is forwarded to the launched app,
|
|
210
|
+
// so the target URL must come after the args block to reach the app alongside them.
|
|
211
|
+
if (browserArgs.length > 0) openArgs.push('--args', ...browserArgs);
|
|
212
|
+
openArgs.push(target);
|
|
213
|
+
await (0, _spawnasync().default)('open', openArgs, {
|
|
214
|
+
stdio: 'ignore'
|
|
215
|
+
});
|
|
216
|
+
return true;
|
|
33
217
|
}
|
|
218
|
+
if (process.platform === 'win32') {
|
|
219
|
+
await spawnWindowsStartAsync(target, browserApp, browserArgs);
|
|
220
|
+
return true;
|
|
221
|
+
}
|
|
222
|
+
// WSL: when the user hasn't overridden BROWSER, route through Windows `cmd.exe` so
|
|
223
|
+
// the URL opens in the user's Windows browser. Falls through to `xdg-open` otherwise.
|
|
224
|
+
if (!browserApp && isWsl()) {
|
|
225
|
+
await (0, _spawnasync().default)('/mnt/c/Windows/System32/cmd.exe', [
|
|
226
|
+
'/c',
|
|
227
|
+
'start',
|
|
228
|
+
'""',
|
|
229
|
+
target
|
|
230
|
+
], {
|
|
231
|
+
stdio: 'ignore'
|
|
232
|
+
});
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
const command = browserApp ?? 'xdg-open';
|
|
236
|
+
await (0, _spawnasync().default)(command, [
|
|
237
|
+
...browserArgs,
|
|
238
|
+
target
|
|
239
|
+
], {
|
|
240
|
+
stdio: 'ignore'
|
|
241
|
+
});
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
async function spawnWindowsStartAsync(target, browserApp, browserArgs) {
|
|
245
|
+
// Windows preserves env var case in Node, but the OS variable is `SystemRoot`.
|
|
246
|
+
const systemRoot = process.env.SYSTEMROOT ?? process.env.SystemRoot ?? 'C:\\Windows';
|
|
247
|
+
const cmd = _path().default.join(systemRoot, 'System32', 'cmd.exe');
|
|
248
|
+
// `start ""` — the empty quoted string is the window title, so the URL isn't
|
|
249
|
+
// interpreted as a title argument.
|
|
250
|
+
const startArgs = [
|
|
251
|
+
'/c',
|
|
252
|
+
'start',
|
|
253
|
+
'""'
|
|
254
|
+
];
|
|
255
|
+
if (browserApp) startArgs.push(browserApp);
|
|
256
|
+
startArgs.push(target, ...browserArgs);
|
|
257
|
+
await (0, _spawnasync().default)(cmd, startArgs, {
|
|
258
|
+
stdio: 'ignore'
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
function isWsl() {
|
|
262
|
+
if (process.platform !== 'linux') return false;
|
|
263
|
+
if (process.env.WSL_DISTRO_NAME) return true;
|
|
264
|
+
const release = _os().default.release().toLowerCase();
|
|
265
|
+
return release.includes('microsoft') || release.includes('wsl');
|
|
34
266
|
}
|
|
35
267
|
|
|
36
268
|
//# sourceMappingURL=open.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/open.ts"],"sourcesContent":["import betterOpenBrowserAsync from 'better-opn';\n\n/**\n * Due to a bug in `open`, which is used as fallback on Windows, we need to ensure `process.env.SYSTEMROOT` is set.\n * This environment variable is set by Windows on `SystemRoot`, causing `open` to execute a command with an \"unknown\" drive letter.\n *\n * @see https://github.com/sindresorhus/open/issues/205\n */\nexport async function openBrowserAsync(\n target: string,\n options?: any\n): Promise<import('child_process').ChildProcess | false> {\n if (process.platform !== 'win32') {\n return await betterOpenBrowserAsync(target, options);\n }\n\n const oldSystemRoot = process.env.SYSTEMROOT;\n try {\n process.env.SYSTEMROOT = process.env.SYSTEMROOT ?? process.env.SystemRoot;\n return await betterOpenBrowserAsync(target, options);\n } finally {\n process.env.SYSTEMROOT = oldSystemRoot;\n }\n}\n"],"names":["openBrowserAsync","target","options","process","platform","betterOpenBrowserAsync","oldSystemRoot","env","SYSTEMROOT","SystemRoot"],"mappings":";;;;+BAQsBA;;;eAAAA;;;;gEARa;;;;;;;;;;;AAQ5B,eAAeA,iBACpBC,MAAc,EACdC,OAAa;IAEb,IAAIC,QAAQC,QAAQ,KAAK,SAAS;QAChC,OAAO,MAAMC,IAAAA,oBAAsB,EAACJ,QAAQC;IAC9C;IAEA,MAAMI,gBAAgBH,QAAQI,GAAG,CAACC,UAAU;IAC5C,IAAI;QACFL,QAAQI,GAAG,CAACC,UAAU,GAAGL,QAAQI,GAAG,CAACC,UAAU,IAAIL,QAAQI,GAAG,CAACE,UAAU;QACzE,OAAO,MAAMJ,IAAAA,oBAAsB,EAACJ,QAAQC;IAC9C,SAAU;QACRC,QAAQI,GAAG,CAACC,UAAU,GAAGF;IAC3B;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/open.ts"],"sourcesContent":["import * as osascript from '@expo/osascript';\nimport spawnAsync from '@expo/spawn-async';\nimport os from 'os';\nimport path from 'path';\n\n/** Splits an inline script into trimmed, non-empty lines for `osascript -e <line>`. */\nfunction applescript(strings: TemplateStringsArray, ...values: unknown[]): string[] {\n let raw = strings[0]!;\n for (let i = 0; i < values.length; i++) {\n raw += String(values[i]) + strings[i + 1];\n }\n return raw\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n}\n\n/** Escapes a value for safe interpolation inside an AppleScript double-quoted string. */\nfunction escapeAppleScriptString(value: string): string {\n return value\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\n/g, '\\\\n');\n}\n\nfunction buildOpenChromiumTabScript(target: string, matchUrl: string): string[] {\n const theURL = escapeAppleScriptString(target);\n const matchURL = escapeAppleScriptString(matchUrl);\n return applescript`\n property targetTab: null\n property targetTabIndex: -1\n property targetWindow: null\n property theProgram: \"\"\n\n on run\n set theProgram to my findRunningChromium()\n if theProgram is \"\" then error \"No Chromium browser is running.\"\n set theURL to \"${theURL}\"\n set matchURL to \"${matchURL}\"\n using terms from application \"Google Chrome\"\n tell application theProgram\n if (count every window) = 0 then\n make new window\n end if\n set found to my lookupTabWithUrl(matchURL)\n if found then\n set targetWindow's active tab index to targetTabIndex\n tell targetTab to reload\n tell targetWindow to activate\n set index of targetWindow to 1\n return\n end if\n set found to my lookupTabWithUrl(\"chrome://newtab/\")\n if found then\n set targetWindow's active tab index to targetTabIndex\n set URL of targetTab to theURL\n tell targetWindow to activate\n return\n end if\n tell window 1\n activate\n make new tab with properties {URL:theURL}\n end tell\n end tell\n end using terms from\n end run\n\n on findRunningChromium()\n set candidates to {\"Google Chrome Canary\", \"Google Chrome\", \"Microsoft Edge\", \"Brave Browser\", \"Vivaldi\", \"Chromium\"}\n tell application \"System Events\"\n set runningNames to name of every process\n end tell\n repeat with candidate in candidates\n set candidateName to candidate as string\n if candidateName is in runningNames then return candidateName\n end repeat\n return \"\"\n end findRunningChromium\n\n on lookupTabWithUrl(lookupUrl)\n using terms from application \"Google Chrome\"\n tell application theProgram\n set found to false\n set theTabIndex to -1\n repeat with theWindow in every window\n set theTabIndex to 0\n repeat with theTab in every tab of theWindow\n set theTabIndex to theTabIndex + 1\n if (theTab's URL as string) contains lookupUrl then\n set targetTab to theTab\n set targetTabIndex to theTabIndex\n set targetWindow to theWindow\n set found to true\n exit repeat\n end if\n end repeat\n if found then exit repeat\n end repeat\n end tell\n end using terms from\n return found\n end lookupTabWithUrl\n `;\n}\n\nfunction safeOrigin(target: string): string {\n try {\n return new URL(target).origin;\n } catch {\n return target;\n }\n}\n\nasync function tryOpenInChromiumTabAsync(target: string): Promise<boolean> {\n const matchUrl = process.env.OPEN_MATCH_HOST_ONLY === 'true' ? safeOrigin(target) : target;\n try {\n await osascript.spawnAsync(buildOpenChromiumTabScript(target, matchUrl), {\n stdio: 'ignore',\n });\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Opens a URL in the user's browser. Honors `BROWSER` (set to `none` to disable) and\n * `BROWSER_ARGS` environment variables. On macOS, reuses an existing tab in a running\n * Chromium-based browser when possible.\n *\n * @returns `true` when a browser was launched, `false` when `BROWSER=none`.\n */\nexport async function openBrowserAsync(target: string): Promise<boolean> {\n const browserEnv = process.env.BROWSER?.trim();\n if (browserEnv?.toLowerCase() === 'none') {\n return false;\n }\n\n // On macOS, `BROWSER=open` historically meant \"use the default handler\" rather than\n // \"launch an app called open\" — treat it as if BROWSER were unset.\n const browserApp =\n browserEnv && !(process.platform === 'darwin' && browserEnv.toLowerCase() === 'open')\n ? browserEnv\n : undefined;\n const browserArgs = process.env.BROWSER_ARGS ? process.env.BROWSER_ARGS.split(' ') : [];\n\n if (process.platform === 'darwin') {\n const isDefaultOrChrome = !browserApp || browserApp.toLowerCase() === 'google chrome';\n if (isDefaultOrChrome && (await tryOpenInChromiumTabAsync(target))) {\n return true;\n }\n const openArgs: string[] = [];\n if (browserApp) openArgs.push('-a', browserApp);\n // Per `open(1)`, everything following `--args` is forwarded to the launched app,\n // so the target URL must come after the args block to reach the app alongside them.\n if (browserArgs.length > 0) openArgs.push('--args', ...browserArgs);\n openArgs.push(target);\n await spawnAsync('open', openArgs, { stdio: 'ignore' });\n return true;\n }\n\n if (process.platform === 'win32') {\n await spawnWindowsStartAsync(target, browserApp, browserArgs);\n return true;\n }\n\n // WSL: when the user hasn't overridden BROWSER, route through Windows `cmd.exe` so\n // the URL opens in the user's Windows browser. Falls through to `xdg-open` otherwise.\n if (!browserApp && isWsl()) {\n await spawnAsync('/mnt/c/Windows/System32/cmd.exe', ['/c', 'start', '\"\"', target], {\n stdio: 'ignore',\n });\n return true;\n }\n\n const command = browserApp ?? 'xdg-open';\n await spawnAsync(command, [...browserArgs, target], { stdio: 'ignore' });\n return true;\n}\n\nasync function spawnWindowsStartAsync(\n target: string,\n browserApp: string | undefined,\n browserArgs: string[]\n): Promise<void> {\n // Windows preserves env var case in Node, but the OS variable is `SystemRoot`.\n const systemRoot = process.env.SYSTEMROOT ?? process.env.SystemRoot ?? 'C:\\\\Windows';\n const cmd = path.join(systemRoot, 'System32', 'cmd.exe');\n // `start \"\"` — the empty quoted string is the window title, so the URL isn't\n // interpreted as a title argument.\n const startArgs = ['/c', 'start', '\"\"'];\n if (browserApp) startArgs.push(browserApp);\n startArgs.push(target, ...browserArgs);\n await spawnAsync(cmd, startArgs, { stdio: 'ignore' });\n}\n\nfunction isWsl(): boolean {\n if (process.platform !== 'linux') return false;\n if (process.env.WSL_DISTRO_NAME) return true;\n const release = os.release().toLowerCase();\n return release.includes('microsoft') || release.includes('wsl');\n}\n"],"names":["openBrowserAsync","applescript","strings","values","raw","i","length","String","split","map","line","trim","filter","escapeAppleScriptString","value","replace","buildOpenChromiumTabScript","target","matchUrl","theURL","matchURL","safeOrigin","URL","origin","tryOpenInChromiumTabAsync","process","env","OPEN_MATCH_HOST_ONLY","osascript","spawnAsync","stdio","browserEnv","BROWSER","toLowerCase","browserApp","platform","undefined","browserArgs","BROWSER_ARGS","isDefaultOrChrome","openArgs","push","spawnWindowsStartAsync","isWsl","command","systemRoot","SYSTEMROOT","SystemRoot","cmd","path","join","startArgs","WSL_DISTRO_NAME","release","os","includes"],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ class FetchClient {
|
|
|
26
26
|
this.headers = {
|
|
27
27
|
accept: 'application/json',
|
|
28
28
|
'content-type': 'application/json',
|
|
29
|
-
'user-agent': `expo-cli/${"56.1.
|
|
29
|
+
'user-agent': `expo-cli/${"56.1.5"}`,
|
|
30
30
|
authorization: 'Basic ' + _nodebuffer().Buffer.from(`${target}:`).toString('base64')
|
|
31
31
|
};
|
|
32
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/cli",
|
|
3
|
-
"version": "56.1.
|
|
3
|
+
"version": "56.1.5",
|
|
4
4
|
"description": "The Expo CLI",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"bin": {
|
|
@@ -39,23 +39,23 @@
|
|
|
39
39
|
"homepage": "https://github.com/expo/expo/tree/main/packages/@expo/cli",
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@expo/code-signing-certificates": "^0.0.6",
|
|
42
|
-
"@expo/config": "~56.0.
|
|
43
|
-
"@expo/config-plugins": "~56.0.
|
|
42
|
+
"@expo/config": "~56.0.6",
|
|
43
|
+
"@expo/config-plugins": "~56.0.5",
|
|
44
44
|
"@expo/devcert": "^1.2.1",
|
|
45
45
|
"@expo/env": "~2.2.0",
|
|
46
|
-
"@expo/image-utils": "^0.9.
|
|
47
|
-
"@expo/inline-modules": "^0.0.
|
|
46
|
+
"@expo/image-utils": "^0.9.3",
|
|
47
|
+
"@expo/inline-modules": "^0.0.7",
|
|
48
48
|
"@expo/json-file": "^10.1.0",
|
|
49
|
-
"@expo/log-box": "^56.0.
|
|
49
|
+
"@expo/log-box": "^56.0.10",
|
|
50
50
|
"@expo/metro": "~56.0.0",
|
|
51
|
-
"@expo/metro-config": "~56.0.
|
|
52
|
-
"@expo/metro-file-map": "^56.0.
|
|
51
|
+
"@expo/metro-config": "~56.0.9",
|
|
52
|
+
"@expo/metro-file-map": "^56.0.3",
|
|
53
53
|
"@expo/osascript": "^2.5.0",
|
|
54
54
|
"@expo/package-manager": "^1.11.0",
|
|
55
55
|
"@expo/plist": "^0.6.0",
|
|
56
|
-
"@expo/prebuild-config": "^56.0.
|
|
57
|
-
"@expo/require-utils": "^56.1.
|
|
58
|
-
"@expo/router-server": "^56.0.
|
|
56
|
+
"@expo/prebuild-config": "^56.0.8",
|
|
57
|
+
"@expo/require-utils": "^56.1.1",
|
|
58
|
+
"@expo/router-server": "^56.0.8",
|
|
59
59
|
"@expo/schema-utils": "^56.0.0",
|
|
60
60
|
"@expo/spawn-async": "^1.7.2",
|
|
61
61
|
"@expo/ws-tunnel": "^1.0.1",
|
|
@@ -63,7 +63,6 @@
|
|
|
63
63
|
"@react-native/dev-middleware": "0.85.3",
|
|
64
64
|
"accepts": "^1.3.8",
|
|
65
65
|
"arg": "^5.0.2",
|
|
66
|
-
"better-opn": "~3.0.2",
|
|
67
66
|
"bplist-creator": "0.1.0",
|
|
68
67
|
"bplist-parser": "^0.3.1",
|
|
69
68
|
"chalk": "^4.0.0",
|
|
@@ -72,7 +71,7 @@
|
|
|
72
71
|
"connect": "^3.7.0",
|
|
73
72
|
"debug": "^4.3.4",
|
|
74
73
|
"dnssd-advertise": "^1.1.4",
|
|
75
|
-
"expo-server": "^56.0.
|
|
74
|
+
"expo-server": "^56.0.2",
|
|
76
75
|
"fetch-nodeshim": "^0.4.10",
|
|
77
76
|
"getenv": "^2.0.0",
|
|
78
77
|
"glob": "^13.0.0",
|
|
@@ -157,13 +156,13 @@
|
|
|
157
156
|
"playwright": "^1.59.0",
|
|
158
157
|
"taskr": "^1.1.0",
|
|
159
158
|
"tree-kill": "^1.2.2",
|
|
160
|
-
"expo": "56.0.0-preview.
|
|
161
|
-
"expo-modules-autolinking": "56.0.
|
|
162
|
-
"expo-router": "56.1.4",
|
|
159
|
+
"expo": "56.0.0-preview.12",
|
|
160
|
+
"expo-modules-autolinking": "56.0.7",
|
|
163
161
|
"expo-module-scripts": "56.0.2",
|
|
164
|
-
"
|
|
162
|
+
"expo-router": "56.2.1",
|
|
163
|
+
"@expo/fingerprint": "0.18.2"
|
|
165
164
|
},
|
|
166
|
-
"gitHead": "
|
|
165
|
+
"gitHead": "f26be3dd9396bf7c399a1d607865d0fabdbc0d64",
|
|
167
166
|
"scripts": {
|
|
168
167
|
"build": "taskr",
|
|
169
168
|
"clean": "expo-module clean",
|
|
@@ -115,6 +115,8 @@
|
|
|
115
115
|
display: flex;
|
|
116
116
|
flex-direction: row;
|
|
117
117
|
justify-content: space-between;
|
|
118
|
+
align-items: flex-start;
|
|
119
|
+
gap: 12px;
|
|
118
120
|
margin-right: 8px;
|
|
119
121
|
padding: 4px 8px;
|
|
120
122
|
border-radius: 8px;
|
|
@@ -129,6 +131,36 @@
|
|
|
129
131
|
line-height: 150%;
|
|
130
132
|
}
|
|
131
133
|
|
|
134
|
+
.info-box-details-record > p:first-child {
|
|
135
|
+
flex-shrink: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.info-box-details-record > p:last-child {
|
|
139
|
+
min-width: 0;
|
|
140
|
+
text-align: right;
|
|
141
|
+
white-space: nowrap;
|
|
142
|
+
overflow: hidden;
|
|
143
|
+
text-overflow: ellipsis;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.info-box-details-scroll {
|
|
147
|
+
min-width: 0;
|
|
148
|
+
flex: 1;
|
|
149
|
+
overflow-x: auto;
|
|
150
|
+
overflow-y: hidden;
|
|
151
|
+
-webkit-overflow-scrolling: touch;
|
|
152
|
+
scrollbar-width: none;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.info-box-details-scroll::-webkit-scrollbar {
|
|
156
|
+
display: none;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.info-box-details-scroll p {
|
|
160
|
+
white-space: nowrap;
|
|
161
|
+
padding-right: 8px;
|
|
162
|
+
}
|
|
163
|
+
|
|
132
164
|
.info-box-details-record:nth-child(odd) {
|
|
133
165
|
background: #f8f8fa;
|
|
134
166
|
}
|
|
@@ -242,7 +274,9 @@
|
|
|
242
274
|
</div> -->
|
|
243
275
|
<div class="info-box-details-record">
|
|
244
276
|
<p>Path</p>
|
|
245
|
-
<
|
|
277
|
+
<div class="info-box-details-scroll">
|
|
278
|
+
<p>{{ Path }}</p>
|
|
279
|
+
</div>
|
|
246
280
|
</div>
|
|
247
281
|
<!-- <div class="info-box-details-record">
|
|
248
282
|
<p>Last commit</p>
|