@expo/cli 56.1.4 → 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.
@@ -8,9 +8,30 @@ Object.defineProperty(exports, "openBrowserAsync", {
8
8
  return openBrowserAsync;
9
9
  }
10
10
  });
11
- function _betteropn() {
12
- const data = /*#__PURE__*/ _interop_require_default(require("better-opn"));
13
- _betteropn = function() {
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
- async function openBrowserAsync(target, options) {
24
- if (process.platform !== 'win32') {
25
- return await (0, _betteropn().default)(target, options);
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
- const oldSystemRoot = process.env.SYSTEMROOT;
180
+ }
181
+ async function tryOpenInChromiumTabAsync(target) {
182
+ const matchUrl = process.env.OPEN_MATCH_HOST_ONLY === 'true' ? safeOrigin(target) : target;
28
183
  try {
29
- process.env.SYSTEMROOT = process.env.SYSTEMROOT ?? process.env.SystemRoot;
30
- return await (0, _betteropn().default)(target, options);
31
- } finally{
32
- process.env.SYSTEMROOT = oldSystemRoot;
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.4"}`,
29
+ 'user-agent': `expo-cli/${"56.1.5"}`,
30
30
  authorization: 'Basic ' + _nodebuffer().Buffer.from(`${target}:`).toString('base64')
31
31
  };
32
32
  }
@@ -83,7 +83,7 @@ function createContext() {
83
83
  cpu: summarizeCpuInfo(),
84
84
  app: {
85
85
  name: 'expo/cli',
86
- version: "56.1.4"
86
+ version: "56.1.5"
87
87
  },
88
88
  ci: _ciinfo().isCI ? {
89
89
  name: _ciinfo().name,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/cli",
3
- "version": "56.1.4",
3
+ "version": "56.1.5",
4
4
  "description": "The Expo CLI",
5
5
  "main": "main.js",
6
6
  "bin": {
@@ -39,22 +39,22 @@
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.5",
42
+ "@expo/config": "~56.0.6",
43
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.2",
46
+ "@expo/image-utils": "^0.9.3",
47
47
  "@expo/inline-modules": "^0.0.7",
48
48
  "@expo/json-file": "^10.1.0",
49
- "@expo/log-box": "^56.0.9",
49
+ "@expo/log-box": "^56.0.10",
50
50
  "@expo/metro": "~56.0.0",
51
- "@expo/metro-config": "~56.0.8",
52
- "@expo/metro-file-map": "^56.0.2",
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.7",
57
- "@expo/require-utils": "^56.1.0",
56
+ "@expo/prebuild-config": "^56.0.8",
57
+ "@expo/require-utils": "^56.1.1",
58
58
  "@expo/router-server": "^56.0.8",
59
59
  "@expo/schema-utils": "^56.0.0",
60
60
  "@expo/spawn-async": "^1.7.2",
@@ -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",
@@ -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/fingerprint": "0.18.1",
161
- "expo": "56.0.0-preview.11",
162
- "expo-modules-autolinking": "56.0.6",
159
+ "expo": "56.0.0-preview.12",
160
+ "expo-modules-autolinking": "56.0.7",
163
161
  "expo-module-scripts": "56.0.2",
164
- "expo-router": "56.2.0"
162
+ "expo-router": "56.2.1",
163
+ "@expo/fingerprint": "0.18.2"
165
164
  },
166
- "gitHead": "51c27fce31a5b3a877a4b05d832dabf4a99db5e1",
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
- <p>{{ Path }}</p>
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>