Compare commits

..
10 Commits
Author SHA1 Message Date
Expo CI 951ccba62c v27.7.2 2026-11-10 17:00:49 +00:00
Tomasz Mazur 8c0e01d64c [eas-cli] Show the ID argument and examples in workflow:ssh help (#4829)
* [eas-cli] Fix workflow SSH help and error text

* [eas-cli] Revert worker wording in workflow:run SSH text

* [eas-cli] Revert workflow:ssh error text
2026-11-10 17:36:59 +01:00
Vojtech NovakandClaude Fable 5.1 539acb8c23 [eas-cli] Add --log-source to eas simulator (#4823)
* [eas-cli] Add --android-log-source to eas simulator

Co-Authored-By: Claude Fable 5.1 <[email protected]>

* [eas-cli] Drop the retention period from the --android-log-source help

Co-Authored-By: Claude Fable 5.1 <[email protected]>

* [eas-cli] Shorten the --android-log-source changeset

Co-Authored-By: Claude Fable 5.1 <[email protected]>

* [eas-cli] Rename --android-log-source to --log-source

The flag is unprefixed like the step input it feeds. Passing it without
--platform android fails at runtime.

Co-Authored-By: Claude Fable 5.1 <[email protected]>

---------

Co-authored-by: Claude Fable 5.1 <[email protected]>
2026-11-10 17:18:53 +01:00
Expo CI 18d85d571a bump STAGING and PRODUCTION to 27.7.1 in cli-versions.json 2026-11-10 13:36:49 +00:00
Tomasz Mazur f2cf409b21 [build-tools] Start SSH session shells in the build directory (#4843) 2026-11-10 13:40:14 +01:00
Tomasz Mazur 0cf8cd014f [eas-cli] Show the ended message when workflow:ssh is given a finished build ID (#4842) 2026-11-10 13:38:46 +01:00
Expo CI 8df11a04ee v27.7.1 2026-11-10 11:28:19 +00:00
Tomek Czajecki c9d198a894 [eas-cli] update dependencies with security advisories (#4847)
* [eas-cli] update dependencies with security advisories

* [eas-cli] remove unrelated lockfile dedupe
2026-11-10 13:03:43 +02:00
Szymon Świerk 4b70eb14fb [build-tools] Strip the repository access token from the git remote before the sandbox agent starts (#4826)
* [build-tools] Strip the repository access token from the git remote before the sandbox agent starts

* [build-tools] improve the comment explaining why the repository token is stripped before the sandbox starts
2026-11-10 11:25:41 +01:00
Expo CI c224ba58ff bump STAGING and PRODUCTION to 27.7.0 in cli-versions.json 2026-11-10 08:32:43 +00:00
48 changed files with 923 additions and 498 deletions

No files matched your search

+16
View File
@@ -2,6 +2,22 @@
This is the log of notable changes to EAS CLI and related packages.
## [27.7.2](https://github.com/expo/eas-cli/releases/tag/v27.7.2) - 2026-11-10
### 🐛 Bug fixes
- [eas-cli] Add `--log-source` to `eas simulator` to select which Android logs a session records. ([#4823](https://github.com/expo/eas-cli/pull/4823) by [@vonovak](https://github.com/vonovak))
- [build-tools] Start SSH session shells in the job's build directory instead of the worker's directory. ([#4843](https://github.com/expo/eas-cli/pull/4843) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
- [eas-cli] Show that the ssh session has ended, instead of saying SSH was not enabled, when `eas workflow:ssh` is given the ID of a finished build. ([#4842](https://github.com/expo/eas-cli/pull/4842) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
- [eas-cli] Show the ID argument and examples in `eas workflow:ssh --help`. ([#4829](https://github.com/expo/eas-cli/pull/4829) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
## [27.7.1](https://github.com/expo/eas-cli/releases/tag/v27.7.1) - 2026-11-10
### 🐛 Bug fixes
- [eas-cli][eas-json][build-tools][eas-build-job][steps][local-build-plugin][worker][simulator-launcher] Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
- [build-tools] Strip the GitHub repository access token from the git remote before a sandbox agent starts. ([#4826](https://github.com/expo/eas-cli/pull/4826) by [@sswrk](https://github.com/sswrk))
## [27.7.0](https://github.com/expo/eas-cli/releases/tag/v27.7.0) - 2026-11-10
### 🎉 New features
+2 -2
View File
@@ -1,4 +1,4 @@
{
"STAGING": "27.6.0",
"PRODUCTION": "27.6.0"
"STAGING": "27.7.1",
"PRODUCTION": "27.7.1"
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"npmClient": "yarn",
"version": "27.7.0",
"version": "27.7.2",
"$schema": "node_modules/lerna/schemas/lerna-schema.json"
}
+13
View File
@@ -1,5 +1,18 @@
# @expo/build-tools
## 27.7.2
### Patch Changes
- Start SSH session shells in the job's build directory instead of the worker's directory. ([#4843](https://github.com/expo/eas-cli/pull/4843) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
- Strip the GitHub repository access token from the git remote before a sandbox agent starts. ([#4826](https://github.com/expo/eas-cli/pull/4826) by [@sswrk](https://github.com/sswrk))
## 27.7.0
### Patch Changes
+12 -12
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/build-tools",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
@@ -42,17 +42,17 @@
"dependencies": {
"@expo/config": "55.0.10",
"@expo/config-plugins": "55.0.7",
"@expo/downloader": "27.7.0",
"@expo/eas-build-job": "27.7.0",
"@expo/downloader": "27.7.2",
"@expo/eas-build-job": "27.7.2",
"@expo/env": "^0.4.0",
"@expo/logger": "27.7.0",
"@expo/logger": "27.7.2",
"@expo/package-manager": "1.9.10",
"@expo/plist": "^0.3.5",
"@expo/results": "^1.0.0",
"@expo/spawn-async": "1.7.2",
"@expo/steps": "27.7.0",
"@expo/template-file": "27.7.0",
"@expo/turtle-spawn": "27.7.0",
"@expo/steps": "27.7.2",
"@expo/template-file": "27.7.2",
"@expo/turtle-spawn": "27.7.2",
"@expo/xcpretty": "^4.4.7",
"@ngrok/ngrok": "1.7.0",
"@sentry/node": "7.77.0",
@@ -63,11 +63,11 @@
"fast-xml-parser": "^4.4.1",
"fs-extra": "^11.2.0",
"gql.tada": "^1.11.3",
"joi": "^17.13.1",
"joi": "^17.13.9",
"jose": "5.10.0",
"lodash": "^4.18.1",
"node-fetch": "^2.7.0",
"node-forge": "^1.3.1",
"node-forge": "^1.4.3",
"node-pty": "1.2.0-beta.15",
"node-stream-zip": "1.15.0",
"nullthrows": "^1.1.1",
@@ -77,11 +77,11 @@
"resolve-from": "^5.0.0",
"retry": "^0.13.1",
"semver": "^7.6.2",
"tar": "7.5.19",
"tar": "7.5.22",
"uuid": "9.0.1",
"ws": "8.21.1",
"yaml": "^2.8.1",
"zod": "^4.3.5"
"yaml": "^2.9.1",
"zod": "^4.6.7"
},
"devDependencies": {
"@expo/repack-app": "~0.9.0",
@@ -1,8 +1,8 @@
import { UserError } from '@expo/eas-build-job';
import { SystemError, UserError } from '@expo/eas-build-job';
import spawn from '@expo/turtle-spawn';
import { vol } from 'memfs';
import { fetchAndCheckoutRefAsync } from '../git';
import { fetchAndCheckoutRefAsync, stripRepositoryCredentialsAsync } from '../git';
jest.mock('@expo/turtle-spawn');
@@ -147,3 +147,64 @@ describe(fetchAndCheckoutRefAsync, () => {
expect(error.message).not.toContain('ghs_secret123');
});
});
describe(stripRepositoryCredentialsAsync, () => {
const token = 'ghs_secret123';
function mockRemoteUrl(url: string): void {
jest.mocked(spawn).mockResolvedValueOnce({ stdout: `${url}\n` } as never);
}
it('strips the token from the origin remote', async () => {
mockRemoteUrl(`https://x-access-token:${token}@github.com/expo/app.git`);
await stripRepositoryCredentialsAsync({ repositoryDirectory });
expect(spawn).toHaveBeenNthCalledWith(1, 'git', ['remote', 'get-url', 'origin'], {
cwd: repositoryDirectory,
});
expect(spawn).toHaveBeenNthCalledWith(
2,
'git',
['remote', 'set-url', 'origin', 'https://github.com/expo/app.git'],
{ cwd: repositoryDirectory }
);
expect(spawn).toHaveBeenCalledTimes(2);
});
it('keeps the host and port of a GitHub Enterprise remote', async () => {
mockRemoteUrl(`https://x-access-token:${token}@ghe.example.com:8443/org/app.git`);
await stripRepositoryCredentialsAsync({ repositoryDirectory });
expect(spawn).toHaveBeenNthCalledWith(
2,
'git',
['remote', 'set-url', 'origin', 'https://ghe.example.com:8443/org/app.git'],
{ cwd: repositoryDirectory }
);
});
it('does nothing when the origin remote carries no credentials', async () => {
mockRemoteUrl('https://github.com/expo/app.git');
await stripRepositoryCredentialsAsync({ repositoryDirectory });
expect(spawn).toHaveBeenCalledTimes(1);
});
it('throws when the remote URL cannot be rewritten', async () => {
mockRemoteUrl(`https://x-access-token:${token}@github.com/expo/app.git`);
const gitError = Object.assign(new Error('git exited with non-zero code: 128'), {
stderr: "fatal: No such remote 'origin'",
});
jest.mocked(spawn).mockRejectedValueOnce(gitError);
const promise = stripRepositoryCredentialsAsync({ repositoryDirectory });
await expect(promise).rejects.toBeInstanceOf(SystemError);
await expect(promise).rejects.toMatchObject({ cause: gitError });
const error = await promise.catch(err => err);
expect(error.message).not.toContain(token);
});
});
+40 -1
View File
@@ -1,4 +1,4 @@
import { ArchiveSource, ArchiveSourceType, UserError } from '@expo/eas-build-job';
import { ArchiveSource, ArchiveSourceType, SystemError, UserError } from '@expo/eas-build-job';
import { bunyan } from '@expo/logger';
import spawn from '@expo/turtle-spawn';
import fs from 'fs-extra';
@@ -99,6 +99,45 @@ export async function fetchAndCheckoutRefAsync({
}
}
export async function stripRepositoryCredentialsAsync({
repositoryDirectory,
}: {
repositoryDirectory: string;
}): Promise<void> {
let remoteUrl: URL;
try {
const { stdout } = await spawn('git', ['remote', 'get-url', 'origin'], {
cwd: repositoryDirectory,
});
remoteUrl = new URL(stdout.trim());
} catch (err) {
throw new SystemError('Failed to read the origin remote URL of the project repository.', {
cause: err,
});
}
if (!remoteUrl.username && !remoteUrl.password) {
return;
}
try {
await spawn('git', ['remote', 'set-url', 'origin', stripCredentialsFromGitUrl(remoteUrl)], {
cwd: repositoryDirectory,
});
} catch (err) {
throw new SystemError('Failed to strip credentials from the origin remote URL.', {
cause: err,
});
}
}
function stripCredentialsFromGitUrl(url: URL): string {
const strippedUrl = new URL(url.toString());
strippedUrl.username = '';
strippedUrl.password = '';
return strippedUrl.toString();
}
function getSanitizedGitUrl(maybeGitUrl: string): string | null {
try {
const url = new URL(maybeGitUrl);
@@ -1,14 +1,30 @@
import { EnvironmentSecretType, SystemError, UserError } from '@expo/eas-build-job';
import {
ArchiveSourceType,
EnvironmentSecretType,
SystemError,
UserError,
} from '@expo/eas-build-job';
import fetch from 'node-fetch';
import { stripRepositoryCredentialsAsync } from '../../../common/git';
import * as sandboxDaemon from '../../utils/sandboxDaemon';
import { SandboxWorkerApi } from '../../utils/sandboxWorkerApi';
import { createStartSandboxBuildFunction } from '../startSandbox';
const { AbortError, Response } = jest.requireActual('node-fetch') as typeof import('node-fetch');
jest.mock('../../../common/git');
const checkedOutStepCtx = { logger: {}, global: { wasCheckedOut: () => true } } as any;
const notCheckedOutStepCtx = { logger: {}, global: { wasCheckedOut: () => false } } as any;
const URL_JOB = {
projectArchive: { type: ArchiveSourceType.URL, url: 'https://example.com/project.tar.gz' },
};
const context = {
job: {
...URL_JOB,
secrets: {
environmentSecrets: [
{
@@ -183,6 +199,97 @@ describe('sandbox build functions', () => {
expect(stopAsync).toHaveBeenCalledTimes(1);
});
it('strips the repository credentials before starting the daemon for git sources', async () => {
const startupError = new Error('stop after checking options');
const start = jest
.spyOn(sandboxDaemon, 'startSandboxDaemonAsync')
.mockRejectedValue(startupError);
const fn = createStartSandboxBuildFunction({
...context,
job: {
...context.job,
projectArchive: {
type: ArchiveSourceType.GIT,
gitRef: 'refs/heads/main',
gitCommitHash: '0123456789abcdef0123456789abcdef01234567',
},
},
projectTargetDirectory: '/workingdir/build',
} as any);
await expect(fn.fn!(checkedOutStepCtx, { inputs, outputs: {}, env: {} })).rejects.toBe(
startupError
);
expect(stripRepositoryCredentialsAsync).toHaveBeenCalledWith({
repositoryDirectory: '/workingdir/build',
});
expect(jest.mocked(stripRepositoryCredentialsAsync).mock.invocationCallOrder[0]).toBeLessThan(
start.mock.invocationCallOrder[0]
);
});
it('strips the repository credentials from the source directory before eas/checkout', async () => {
const startupError = new Error('stop after checking options');
jest.spyOn(sandboxDaemon, 'startSandboxDaemonAsync').mockRejectedValue(startupError);
const fn = createStartSandboxBuildFunction({
...context,
job: {
...context.job,
projectArchive: {
type: ArchiveSourceType.GIT,
gitRef: null,
gitCommitHash: '0123456789abcdef0123456789abcdef01234567',
},
},
projectSourceDirectory: '/workingdir/temporary-custom-build',
projectTargetDirectory: '/workingdir/build',
} as any);
await expect(fn.fn!(notCheckedOutStepCtx, { inputs, outputs: {}, env: {} })).rejects.toBe(
startupError
);
expect(stripRepositoryCredentialsAsync).toHaveBeenCalledWith({
repositoryDirectory: '/workingdir/temporary-custom-build',
});
});
it('does not start the daemon when stripping the repository credentials fails', async () => {
const stripError = new SystemError('Failed to strip credentials from the origin remote URL.');
jest.mocked(stripRepositoryCredentialsAsync).mockRejectedValueOnce(stripError);
const start = jest.spyOn(sandboxDaemon, 'startSandboxDaemonAsync');
const fn = createStartSandboxBuildFunction({
...context,
job: {
...context.job,
projectArchive: {
type: ArchiveSourceType.GIT,
gitRef: null,
gitCommitHash: '0123456789abcdef0123456789abcdef01234567',
},
},
projectTargetDirectory: '/workingdir/build',
} as any);
await expect(fn.fn!(checkedOutStepCtx, { inputs, outputs: {}, env: {} })).rejects.toBe(
stripError
);
expect(start).not.toHaveBeenCalled();
});
it('leaves the remote alone for non-git sources', async () => {
const startupError = new Error('stop after checking options');
jest.spyOn(sandboxDaemon, 'startSandboxDaemonAsync').mockRejectedValue(startupError);
const fn = createStartSandboxBuildFunction({
...context,
projectTargetDirectory: '/workingdir/build',
} as any);
await expect(fn.fn!({ logger: {} } as any, { inputs, outputs: {}, env: {} })).rejects.toBe(
startupError
);
expect(stripRepositoryCredentialsAsync).not.toHaveBeenCalled();
});
it.each([
{
missing: 'the sandbox worker token',
@@ -1,6 +1,7 @@
import { SystemError, UserError } from '@expo/eas-build-job';
import { ArchiveSourceType, SystemError, UserError } from '@expo/eas-build-job';
import { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';
import { stripRepositoryCredentialsAsync } from '../../common/git';
import { CustomBuildContext } from '../../customBuildContext';
import { withLogPhaseAsync } from '../../utils/logPhase';
import { startSandboxDaemonAsync } from '../utils/sandboxDaemon';
@@ -45,6 +46,15 @@ export function createStartSandboxBuildFunction(ctx: CustomBuildContext): BuildF
`Invalid sandbox maximum duration: ${String(maxDurationSeconds)}. Provide a finite number greater than zero, or omit max_duration_seconds.`
);
}
if (ctx.job.projectArchive.type === ArchiveSourceType.GIT) {
// Scripts and commands inside the sandbox could read the token from .git/config.
await stripRepositoryCredentialsAsync({
repositoryDirectory: stepCtx.global.wasCheckedOut()
? ctx.projectTargetDirectory
: ctx.projectSourceDirectory,
});
}
const daemon = await startSandboxDaemonAsync({
credential: workerApi.token,
serverUrl: mcpServerUrl,
@@ -1,7 +1,10 @@
import { SystemError } from '@expo/eas-build-job';
import downloadFile from '@expo/downloader';
import spawn from '@expo/turtle-spawn';
import { spawnSync } from 'node:child_process';
import fs from 'node:fs/promises';
import os from 'node:os';
import path from 'node:path';
import { createMockLogger } from '../../__tests__/utils/logger';
import { BuildContext } from '../../context';
@@ -164,10 +167,14 @@ describe(startUptermHostAsync, () => {
};
}
function makeCtx(env: Record<string, string> = {}): BuildContext {
function makeCtx(
env: Record<string, string> = {},
buildDirectory = '/workingdir/build'
): BuildContext {
return {
logger: createMockLogger(),
env,
buildDirectory,
} as unknown as BuildContext;
}
@@ -227,6 +234,33 @@ describe(startUptermHostAsync, () => {
);
});
it('starts each client shell in the build directory', async () => {
const realFs = jest.requireActual<typeof import('node:fs')>('node:fs');
const tmpDir = realFs.mkdtempSync(path.join(os.tmpdir(), 'eas-upterm-join-'));
try {
const buildDirectory = path.join(tmpDir, "it's $HOME `pwd`", 'build');
realFs.mkdirSync(buildDirectory, { recursive: true });
await startUptermHostAsync(makeCtx({}, buildDirectory), { relayServerUrl: 'wss://r' });
const joinScriptCall = mockedFs.writeFile.mock.calls.find(
([file]) => file === '/tmp/eas-ssh-1/join.sh'
);
const joinScriptPath = path.join(tmpDir, 'join.sh');
realFs.writeFileSync(joinScriptPath, String(joinScriptCall?.[1]));
const result = spawnSync('bash', [joinScriptPath], {
cwd: tmpDir,
env: { PATH: process.env.PATH, HOME: tmpDir },
input: 'pwd\n',
encoding: 'utf8',
});
expect(result.stdout.trim()).toBe(buildDirectory);
} finally {
realFs.rmSync(tmpDir, { recursive: true, force: true });
}
});
it('downloads from GCS into a fresh temp dir when upterm is not on PATH', async () => {
uptermOnPath = false;
+6 -1
View File
@@ -202,7 +202,12 @@ export async function startUptermHostAsync(
await spawn('ssh-keygen', ['-t', 'ed25519', '-N', '', '-f', hostKeyPath, '-q'], {
logger: ctx.logger,
});
await fs.writeFile(forceCommandPath, '#!/usr/bin/env bash\nexec bash -l\n', { mode: 0o755 });
const quotedBuildDirectory = `'${ctx.buildDirectory.replaceAll("'", "'\\''")}'`;
await fs.writeFile(
forceCommandPath,
`#!/usr/bin/env bash\ncd -- ${quotedBuildDirectory}\nexec bash -l\n`,
{ mode: 0o755 }
);
let currentProcess: SpawnPromise<SpawnResult> | null = null;
@@ -1,5 +1,13 @@
# create-eas-build-function
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
@@ -1,6 +1,6 @@
{
"name": "create-eas-build-function",
"version": "27.7.0",
"version": "27.7.2",
"description": "Create functions for use in EAS Build custom builds.",
"keywords": [
"expo",
@@ -35,7 +35,7 @@
"clean": "rimraf ./build/ \"*.tsbuildinfo\""
},
"dependencies": {
"@expo/steps": "27.7.0"
"@expo/steps": "27.7.2"
},
"devDependencies": {
"@expo/package-manager": "1.9.10",
+8
View File
@@ -1,5 +1,13 @@
# @expo/downloader
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/downloader",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
@@ -1,5 +1,13 @@
# eas-build-cache-provider
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
@@ -1,6 +1,6 @@
{
"name": "eas-build-cache-provider",
"version": "27.7.0",
"version": "27.7.2",
"description": "A build cache provider plugin for the Expo CLI",
"homepage": "https://github.com/expo/eas-cli",
"bugs": "https://github.com/expo/eas-cli/issues",
+10
View File
@@ -1,5 +1,15 @@
# @expo/eas-build-job
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/eas-build-job",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "MIT",
"author": "Expo <[email protected]>",
@@ -25,12 +25,12 @@
"clean": "rimraf node_modules dist coverage \"*.tsbuildinfo\""
},
"dependencies": {
"@expo/logger": "27.7.0",
"@expo/logger": "27.7.2",
"@expo/results": "1.0.0",
"@expo/turtle-spawn": "27.7.0",
"joi": "^17.13.1",
"@expo/turtle-spawn": "27.7.2",
"joi": "^17.13.9",
"semver": "^7.6.2",
"zod": "^4.3.5"
"zod": "^4.6.7"
},
"devDependencies": {
"@types/jest": "^29.5.12",
+14
View File
@@ -1,5 +1,19 @@
# eas-cli
## 27.7.2
### Patch Changes
- Add `--log-source` to `eas simulator` to select which Android logs a session records. ([#4823](https://github.com/expo/eas-cli/pull/4823) by [@vonovak](https://github.com/vonovak))
- Show that the ssh session has ended, instead of saying SSH was not enabled, when `eas workflow:ssh` is given the ID of a finished build. ([#4842](https://github.com/expo/eas-cli/pull/4842) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
- Show the ID argument and examples in `eas workflow:ssh --help`. ([#4829](https://github.com/expo/eas-cli/pull/4829) by [@AHGIJMKLKKZNPJKQR](https://github.com/AHGIJMKLKKZNPJKQR))
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
### Minor Changes
+186 -163
View File
File diff suppressed because it is too large. Load diff
+20
View File
@@ -47534,6 +47534,26 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "logSources",
"description": "Logs to record during the session and upload afterward: emulator-output and device-logcat. Defaults to\n[\"emulator-output\"]. An empty list disables recording and uploading both sources. Device-wide logcat can contain\ncredentials and personal data; include device-logcat only when you want to retain it.\nLogs are not redacted and use the existing 90-day artifact retention policy.",
"type": {
"kind": "LIST",
"name": null,
"ofType": {
"kind": "NON_NULL",
"name": null,
"ofType": {
"kind": "SCALAR",
"name": "String",
"ofType": null
}
}
},
"defaultValue": null,
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "systemImagePackage",
"description": "Android SDK system image package to use for the emulator (e.g.\n\"system-images;android-35;google_apis;x86_64\").",
+13 -13
View File
@@ -1,6 +1,6 @@
{
"name": "eas-cli",
"version": "27.7.0",
"version": "27.7.2",
"description": "EAS command line tool",
"keywords": [
"cli",
@@ -48,12 +48,12 @@
"@expo/code-signing-certificates": "0.0.5",
"@expo/config": "55.0.10",
"@expo/config-plugins": "55.0.7",
"@expo/eas-build-job": "27.7.0",
"@expo/eas-json": "27.7.0",
"@expo/eas-build-job": "27.7.2",
"@expo/eas-json": "27.7.2",
"@expo/env": "^1.0.0",
"@expo/experimentation": "0.0.5",
"@expo/json-file": "8.3.3",
"@expo/logger": "27.7.0",
"@expo/logger": "27.7.2",
"@expo/multipart-body-parser": "2.0.0",
"@expo/osascript": "2.1.4",
"@expo/package-manager": "1.9.10",
@@ -65,7 +65,7 @@
"@expo/results": "1.0.0",
"@expo/rudder-sdk-node": "1.1.1",
"@expo/spawn-async": "1.7.2",
"@expo/steps": "27.7.0",
"@expo/steps": "27.7.2",
"@expo/timeago.js": "1.0.0",
"@oclif/core": "^4.8.3",
"@oclif/plugin-autocomplete": "^3.2.40",
@@ -74,7 +74,7 @@
"@urql/core": "4.0.11",
"@urql/exchange-retry": "1.2.0",
"agent-cli-detector": "0.1.7",
"ajv": "8.11.0",
"ajv": "8.20.0",
"ajv-formats": "2.1.1",
"better-opn": "3.0.2",
"bplist-parser": "^0.3.0",
@@ -101,15 +101,15 @@
"indent-string": "4.0.0",
"invariant": "^2.2.2",
"jks-js": "1.1.0",
"joi": "17.11.0",
"joi": "17.13.9",
"keychain": "1.5.0",
"log-symbols": "4.1.0",
"mime": "3.0.0",
"minimatch": "5.1.2",
"minimatch": "5.1.9",
"minizlib": "3.1.0",
"nanoid": "3.3.8",
"nanoid": "3.3.20",
"node-fetch": "2.6.7",
"node-forge": "1.4.0",
"node-forge": "1.4.3",
"node-stream-zip": "1.15.0",
"nullthrows": "1.1.1",
"open": "8.4.0",
@@ -126,7 +126,7 @@
"semver": "7.5.4",
"set-interval-async": "3.0.3",
"slash": "3.0.0",
"tar": "7.5.19",
"tar": "7.5.22",
"tar-stream": "3.1.7",
"terminal-link": "2.1.1",
"ts-deepmerge": "6.2.0",
@@ -136,8 +136,8 @@
"uuid": "11.1.1",
"wrap-ansi": "7.0.0",
"ws": "8.21.1",
"yaml": "2.6.0",
"zod": "^4.1.3"
"yaml": "2.9.1",
"zod": "^4.6.7"
},
"devDependencies": {
"@graphql-codegen/cli": "6.3.1",
@@ -1685,6 +1685,38 @@ describe(Simulator, () => {
);
});
it('accumulates repeated --log-source flags in order', async () => {
const { command } = createCommand([
'--platform',
'android',
'--non-interactive',
'--log-source',
'emulator-output',
'--log-source',
'device-logcat',
]);
await command.runAsync();
expect(mockCreateDeviceRunSessionAsync).toHaveBeenCalledWith(
graphqlClient,
expect.objectContaining({ android: { logSources: ['emulator-output', 'device-logcat'] } })
);
});
it('leaves Android log sources omitted unless explicitly requested', async () => {
const { command } = createCommand(['--platform', 'android', '--non-interactive']);
await command.runAsync();
expect(mockCreateDeviceRunSessionAsync.mock.calls[0][1].android?.logSources).toBeUndefined();
});
it.each([
{ args: ['--platform', 'ios', '--log-source', 'device-logcat'] },
{ args: ['--platform', 'android', '--log-source', 'unknown'] },
])('rejects invalid Android logging options $args', async ({ args }) => {
const { command } = createCommand([...args, '--non-interactive']);
await expect(command.runAsync()).rejects.toThrow();
expect(mockCreateDeviceRunSessionAsync).not.toHaveBeenCalled();
});
it('passes --network-capture to the createDeviceRunSession mutation', async () => {
const { command } = createCommand([
'--platform',
@@ -190,6 +190,12 @@ With local egress, actions wait for the connection and require interactive mode.
description:
'Version of the package backing the simulator session (e.g. "0.1.3-alpha.3"). Defaults to "latest" when omitted.',
}),
'log-source': Flags.option({
description:
'Android logs to record during the session and upload afterward. Repeat to select both sources; replaces the default emulator-output selection. Device-wide device-logcat may contain credentials and personal data. Logs are not redacted.',
options: ['emulator-output', 'device-logcat'],
multiple: true,
})(),
'network-capture': Flags.boolean({
allowNo: true,
description:
@@ -300,6 +306,7 @@ With local egress, actions wait for the connection and require interactive mode.
const tags = flags.tag?.map(tag => tag.trim()).filter(tag => tag.length > 0);
const deviceIdentifier = flags.device?.trim() || undefined;
const systemImagePackage = flags['system-image']?.trim() || undefined;
const logSources = flags['log-source'];
const buildId = flags['build-id']?.trim() || undefined;
const buildFingerprint = flags['build-fingerprint']?.trim() || undefined;
const applicationArchiveUrlFromFlag = flags['application-archive-url']?.trim() || undefined;
@@ -346,6 +353,11 @@ With local egress, actions wait for the connection and require interactive mode.
const platform = await resolvePlatformAsync(flags.platform, nonInteractive);
const egress = flags.egress === 'local' ? DeviceRunSessionEgress.Local : undefined;
if (logSources && platform !== AppPlatform.Android) {
throw new EasCommandError(
'--log-source selects Android emulator logs. Pass --platform android.'
);
}
if (systemImagePackage && platform !== AppPlatform.Android) {
throw new EasCommandError('--system-image is only supported with --platform android.');
}
@@ -421,6 +433,19 @@ With local egress, actions wait for the connection and require interactive mode.
packageVersion: flags['package-version'],
nonInteractive,
});
const android = {
...(deviceIdentifier ? { deviceIdentifier } : {}),
...(systemImagePackage ? { systemImagePackage } : {}),
...(logSources ? { logSources } : {}),
};
const platformInput =
platform === AppPlatform.Ios
? deviceIdentifier
? { ios: { deviceIdentifier } }
: {}
: Object.keys(android).length
? { android }
: {};
const session = await withSimulatorRequestAnalyticsAsync(
analytics,
requestProperties,
@@ -436,18 +461,7 @@ With local egress, actions wait for the connection and require interactive mode.
packageVersion: flags['package-version'],
networkCapture: flags['network-capture'],
...(networkCaptureFields.length ? { networkCaptureFields } : {}),
...(platform === AppPlatform.Ios
? deviceIdentifier
? { ios: { deviceIdentifier } }
: {}
: deviceIdentifier || systemImagePackage
? {
android: {
...(deviceIdentifier ? { deviceIdentifier } : {}),
...(systemImagePackage ? { systemImagePackage } : {}),
},
}
: {}),
...platformInput,
...(buildId ? { buildId } : {}),
...(buildFingerprint ? { buildFingerprint } : {}),
...(applicationArchiveUrlFromFlag
@@ -105,6 +105,13 @@ export default class WorkflowSsh extends EasCommand {
static override description =
'[EXPERIMENTAL] open an ssh session on the worker running a workflow job';
static override usage = 'workflow:ssh [--show-connect] ID';
static override examples = [
'$ eas workflow:ssh <ID> \t # Open an SSH session on the worker. Use the ID in the job logs ("Start SSH session" step)',
'$ eas workflow:ssh --show-connect <ID> \t # Print the ssh command to connect, without opening the SSH session',
];
static override strict = false;
static override flags = {
+7
View File
@@ -6658,6 +6658,13 @@ export type CreateAndConfigureRepositoryInput = {
export type CreateAndroidDeviceRunSessionInput = {
/** AVD hardware profile id to use for the emulator (e.g. "pixel_9"). Defaults to "medium_phone". */
deviceIdentifier?: InputMaybe<Scalars['String']['input']>;
/**
* Logs to record during the session and upload afterward: emulator-output and device-logcat. Defaults to
* ["emulator-output"]. An empty list disables recording and uploading both sources. Device-wide logcat can contain
* credentials and personal data; include device-logcat only when you want to retain it.
* Logs are not redacted and use the existing 90-day artifact retention policy.
*/
logSources?: InputMaybe<Array<Scalars['String']['input']>>;
/**
* Android SDK system image package to use for the emulator (e.g.
* "system-images;android-35;google_apis;x86_64").
@@ -215,9 +215,10 @@ export const WorkflowJobSshQuery = {
throw error;
}
const build = data.builds.byId;
const jobCompleted = FINAL_BUILD_STATUSES.has(build.status);
return {
sshRequested: build.sshSession !== null,
jobCompleted: FINAL_BUILD_STATUSES.has(build.status),
sshRequested: build.sshSession !== null || jobCompleted,
jobCompleted,
session: build.sshSession,
};
},
@@ -1,4 +1,5 @@
import { ExpoGraphqlClient } from '../../../commandUtils/context/contextUtils/createGraphqlClient';
import { resolveSshConnectStatus, terminalSshStatusMessage } from '../../../commands/workflow/ssh';
import { GraphqlError } from '../../client';
import { BuildStatus, JobRunStatus, WorkflowJobStatus } from '../../generated';
import { WorkflowJobSshQuery } from '../WorkflowJobSshQuery';
@@ -227,6 +228,19 @@ describe(WorkflowJobSshQuery.connectInfoForBuildAsync.name, () => {
}
);
it.each([BuildStatus.Errored, BuildStatus.Finished, BuildStatus.Canceled])(
'reports the ssh session as ended for a %s build without an sshSession',
async status => {
const { graphqlClient } = makeClient({ id: 'build-1', status, sshSession: null });
const sshStatus = resolveSshConnectStatus(
await WorkflowJobSshQuery.connectInfoForBuildAsync(graphqlClient, 'build-1')
);
expect(sshStatus).toBe('ended');
expect(terminalSshStatusMessage(sshStatus, 'build-1')).toBe('This ssh session has ended.');
}
);
it.each([BuildStatus.New, BuildStatus.InQueue, BuildStatus.PendingCancel])(
'treats %s as not completed',
async status => {
+10
View File
@@ -1,5 +1,15 @@
# @expo/eas-json
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+3 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/eas-json",
"version": "27.7.0",
"version": "27.7.2",
"description": "A library for interacting with eas.json",
"homepage": "https://github.com/expo/eas-cli",
"bugs": "https://github.com/expo/eas-cli/issues",
@@ -32,12 +32,12 @@
},
"dependencies": {
"@babel/code-frame": "7.23.5",
"@expo/eas-build-job": "27.7.0",
"@expo/eas-build-job": "27.7.2",
"chalk": "4.1.2",
"env-string": "1.0.1",
"fs-extra": "11.2.0",
"golden-fleece": "1.0.9",
"joi": "17.11.0",
"joi": "17.13.9",
"log-symbols": "4.1.0",
"semver": "7.5.2",
"terminal-link": "2.1.1",
+10
View File
@@ -1,5 +1,15 @@
# eas-cli-local-build-plugin
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+7 -7
View File
@@ -1,6 +1,6 @@
{
"name": "eas-cli-local-build-plugin",
"version": "27.7.0",
"version": "27.7.2",
"description": "Tool for running EAS compatible builds on a local machine.",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
@@ -26,20 +26,20 @@
"clean": "rimraf node_modules dist coverage \"*.tsbuildinfo\""
},
"dependencies": {
"@expo/build-tools": "27.7.0",
"@expo/build-tools": "27.7.2",
"@expo/bunyan": "^4.0.1",
"@expo/eas-build-job": "27.7.0",
"@expo/logger": "27.7.0",
"@expo/eas-build-job": "27.7.2",
"@expo/logger": "27.7.2",
"@expo/spawn-async": "^1.7.2",
"@expo/turtle-spawn": "27.7.0",
"@expo/turtle-spawn": "27.7.2",
"chalk": "4.1.2",
"env-paths": "^2.2.1",
"fs-extra": "^11.2.0",
"joi": "^17.13.1",
"joi": "^17.13.9",
"lodash": "^4.18.1",
"nullthrows": "^1.1.1",
"semver": "^7.6.2",
"tar": "7.5.19",
"tar": "7.5.22",
"uuid": "^9.0.1"
},
"devDependencies": {
+8
View File
@@ -1,5 +1,13 @@
# @expo/logger
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/logger",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
+10
View File
@@ -1,5 +1,15 @@
# @expo/simulator-launcher
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/simulator-launcher",
"version": "27.7.0",
"version": "27.7.2",
"description": "Launch and claim Simulator sessions on EAS workers",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
@@ -34,6 +34,6 @@
"semver": "^7.6.2",
"ts-jest": "^29.4.12",
"typescript": "^6.0.3",
"zod": "^4.3.5"
"zod": "^4.6.7"
}
}
+10
View File
@@ -1,5 +1,15 @@
# @expo/steps
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+6 -6
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/steps",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
@@ -27,18 +27,18 @@
"clean": "rimraf node_modules dist coverage \"*.tsbuildinfo\""
},
"dependencies": {
"@expo/eas-build-job": "27.7.0",
"@expo/logger": "27.7.0",
"@expo/eas-build-job": "27.7.2",
"@expo/logger": "27.7.2",
"@expo/spawn-async": "^1.7.2",
"arg": "^5.0.2",
"fast-glob": "^3.3.2",
"fs-extra": "^11.2.0",
"joi": "^17.13.1",
"joi": "^17.13.9",
"jsep": "^1.3.8",
"lodash.clonedeep": "^4.5.0",
"uuid": "^11.1.1",
"yaml": "^2.4.3",
"zod": "^4.3.5"
"yaml": "^2.9.1",
"zod": "^4.6.7"
},
"devDependencies": {
"@jest/globals": "^29.7.0",
+8
View File
@@ -1,5 +1,13 @@
# @expo/template-file
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/template-file",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
+8
View File
@@ -1,5 +1,13 @@
# @expo/turtle-spawn
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/turtle-spawn",
"version": "27.7.0",
"version": "27.7.2",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
"author": "Expo <[email protected]>",
@@ -25,7 +25,7 @@
"clean": "rimraf node_modules dist coverage \"*.tsbuildinfo\""
},
"dependencies": {
"@expo/logger": "27.7.0",
"@expo/logger": "27.7.2",
"@expo/spawn-async": "^1.7.2"
},
"devDependencies": {
+8
View File
@@ -1,5 +1,13 @@
# @expo/vm-tools
## 27.7.2
No changes in this release.
## 27.7.1
No changes in this release.
## 27.7.0
No changes in this release.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/vm-tools",
"version": "27.7.0",
"version": "27.7.2",
"description": "VM startup script loader",
"bugs": "https://github.com/expo/eas-cli/issues",
"license": "BUSL-1.1",
+10
View File
@@ -1,5 +1,15 @@
# @expo/worker
## 27.7.2
No changes in this release.
## 27.7.1
### Patch Changes
- Update `node-forge`, `tar`, `nanoid`, `minimatch`, `joi`, `ajv`, `yaml`, and `zod` to versions with fixes for published security advisories. ([#4847](https://github.com/expo/eas-cli/pull/4847) by [@tchayen](https://github.com/tchayen))
## 27.7.0
No changes in this release.
+9 -9
View File
@@ -1,6 +1,6 @@
{
"name": "@expo/worker",
"version": "27.7.0",
"version": "27.7.2",
"private": true,
"scripts": {
"start": "yarn watch",
@@ -19,17 +19,17 @@
},
"dependencies": {
"@babel/core": "7.24.7",
"@expo/build-tools": "27.7.0",
"@expo/build-tools": "27.7.2",
"@expo/config-plugins": "55.0.7",
"@expo/config-types": "55.0.5",
"@expo/eas-build-job": "27.7.0",
"@expo/logger": "27.7.0",
"@expo/eas-build-job": "27.7.2",
"@expo/logger": "27.7.2",
"@expo/results": "1.0.0",
"@expo/rudder-sdk-node": "1.1.1",
"@expo/spawn-async": "1.7.2",
"@expo/steps": "27.7.0",
"@expo/template-file": "27.7.0",
"@expo/turtle-spawn": "27.7.0",
"@expo/steps": "27.7.2",
"@expo/template-file": "27.7.2",
"@expo/turtle-spawn": "27.7.2",
"@hapi/boom": "10.0.1",
"check-disk-space": "3.4.0",
"fast-glob": "3.3.2",
@@ -45,12 +45,12 @@
"node-os-utils": "1.3.7",
"nullthrows": "1.1.1",
"semver": "7.6.3",
"tar": "7.5.19",
"tar": "7.5.22",
"uuid": "3.4.0",
"uuidv7": "1.1.0",
"ws": "8.21.1",
"xml2js": "0.6.2",
"zod": "4.1.8"
"zod": "4.6.7"
},
"devDependencies": {
"@types/babel__core": "7.20.5",
Generated
+137 -245
View File
@@ -2515,24 +2515,24 @@ __metadata:
languageName: node
linkType: hard
"@expo/build-tools@npm:27.7.0, @expo/build-tools@workspace:packages/build-tools":
"@expo/build-tools@npm:27.7.2, @expo/build-tools@workspace:packages/build-tools":
version: 0.0.0-use.local
resolution: "@expo/build-tools@workspace:packages/build-tools"
dependencies:
"@expo/config": "npm:55.0.10"
"@expo/config-plugins": "npm:55.0.7"
"@expo/downloader": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.0"
"@expo/downloader": "npm:27.7.2"
"@expo/eas-build-job": "npm:27.7.2"
"@expo/env": "npm:^0.4.0"
"@expo/logger": "npm:27.7.0"
"@expo/logger": "npm:27.7.2"
"@expo/package-manager": "npm:1.9.10"
"@expo/plist": "npm:^0.3.5"
"@expo/repack-app": "npm:~0.9.0"
"@expo/results": "npm:^1.0.0"
"@expo/spawn-async": "npm:1.7.2"
"@expo/steps": "npm:27.7.0"
"@expo/template-file": "npm:27.7.0"
"@expo/turtle-spawn": "npm:27.7.0"
"@expo/steps": "npm:27.7.2"
"@expo/template-file": "npm:27.7.2"
"@expo/turtle-spawn": "npm:27.7.2"
"@expo/xcpretty": "npm:^4.4.7"
"@ngrok/ngrok": "npm:1.7.0"
"@sentry/node": "npm:7.77.0"
@@ -2557,13 +2557,13 @@ __metadata:
fs-extra: "npm:^11.2.0"
gql.tada: "npm:^1.11.3"
jest: "npm:^29.7.0"
joi: "npm:^17.13.1"
joi: "npm:^17.13.9"
jose: "npm:5.10.0"
lodash: "npm:^4.18.1"
memfs: "npm:^4.17.1"
nock: "npm:13.4.0"
node-fetch: "npm:^2.7.0"
node-forge: "npm:^1.3.1"
node-forge: "npm:^1.4.3"
node-pty: "npm:1.2.0-beta.15"
node-stream-zip: "npm:1.15.0"
nullthrows: "npm:^1.1.1"
@@ -2574,15 +2574,15 @@ __metadata:
retry: "npm:^0.13.1"
rimraf: "npm:3.0.2"
semver: "npm:^7.6.2"
tar: "npm:7.5.19"
tar: "npm:7.5.22"
ts-jest: "npm:^29.4.12"
ts-mockito: "npm:^2.6.1"
tslib: "npm:^2.6.3"
typescript: "npm:^6.0.3"
uuid: "npm:^9.0.1"
ws: "npm:8.21.1"
yaml: "npm:^2.8.1"
zod: "npm:^4.3.5"
yaml: "npm:^2.9.1"
zod: "npm:^4.6.7"
languageName: unknown
linkType: soft
@@ -2768,7 +2768,7 @@ __metadata:
languageName: node
linkType: hard
"@expo/downloader@npm:27.7.0, @expo/downloader@workspace:packages/downloader":
"@expo/downloader@npm:27.7.2, @expo/downloader@workspace:packages/downloader":
version: 0.0.0-use.local
resolution: "@expo/downloader@workspace:packages/downloader"
dependencies:
@@ -2784,31 +2784,31 @@ __metadata:
languageName: unknown
linkType: soft
"@expo/eas-build-job@npm:27.7.0, @expo/eas-build-job@workspace:packages/eas-build-job":
"@expo/eas-build-job@npm:27.7.2, @expo/eas-build-job@workspace:packages/eas-build-job":
version: 0.0.0-use.local
resolution: "@expo/eas-build-job@workspace:packages/eas-build-job"
dependencies:
"@expo/logger": "npm:27.7.0"
"@expo/logger": "npm:27.7.2"
"@expo/results": "npm:1.0.0"
"@expo/turtle-spawn": "npm:27.7.0"
"@expo/turtle-spawn": "npm:27.7.2"
"@types/jest": "npm:^29.5.12"
"@types/node": "npm:22.20.5"
jest: "npm:^29.7.0"
joi: "npm:^17.13.1"
joi: "npm:^17.13.9"
rimraf: "npm:3.0.2"
semver: "npm:^7.6.2"
ts-jest: "npm:^29.4.12"
typescript: "npm:^6.0.3"
zod: "npm:^4.3.5"
zod: "npm:^4.6.7"
languageName: unknown
linkType: soft
"@expo/eas-json@npm:27.7.0, @expo/eas-json@workspace:packages/eas-json":
"@expo/eas-json@npm:27.7.2, @expo/eas-json@workspace:packages/eas-json":
version: 0.0.0-use.local
resolution: "@expo/eas-json@workspace:packages/eas-json"
dependencies:
"@babel/code-frame": "npm:7.23.5"
"@expo/eas-build-job": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.2"
"@tsconfig/node22": "npm:22.0.6"
"@types/babel__code-frame": "npm:7.0.3"
"@types/fs-extra": "npm:11.0.4"
@@ -2817,7 +2817,7 @@ __metadata:
fs-extra: "npm:11.2.0"
golden-fleece: "npm:1.0.9"
jest: "npm:29.7.0"
joi: "npm:17.11.0"
joi: "npm:17.13.9"
log-symbols: "npm:4.1.0"
memfs: "npm:3.4.13"
rimraf: "npm:3.0.2"
@@ -2931,7 +2931,7 @@ __metadata:
languageName: node
linkType: hard
"@expo/logger@npm:27.7.0, @expo/logger@workspace:packages/logger":
"@expo/logger@npm:27.7.2, @expo/logger@workspace:packages/logger":
version: 0.0.0-use.local
resolution: "@expo/logger@workspace:packages/logger"
dependencies:
@@ -3134,7 +3134,7 @@ __metadata:
semver: "npm:^7.6.2"
ts-jest: "npm:^29.4.12"
typescript: "npm:^6.0.3"
zod: "npm:^4.3.5"
zod: "npm:^4.6.7"
bin:
simulator-launcher: bin/simulator-launcher
languageName: unknown
@@ -3149,12 +3149,12 @@ __metadata:
languageName: node
linkType: hard
"@expo/steps@npm:27.7.0, @expo/steps@workspace:packages/steps":
"@expo/steps@npm:27.7.2, @expo/steps@workspace:packages/steps":
version: 0.0.0-use.local
resolution: "@expo/steps@workspace:packages/steps"
dependencies:
"@expo/eas-build-job": "npm:27.7.0"
"@expo/logger": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.2"
"@expo/logger": "npm:27.7.2"
"@expo/spawn-async": "npm:^1.7.2"
"@jest/globals": "npm:^29.7.0"
"@types/jest": "npm:^29.5.12"
@@ -3166,7 +3166,7 @@ __metadata:
fast-glob: "npm:^3.3.2"
fs-extra: "npm:^11.2.0"
jest: "npm:^29.7.0"
joi: "npm:^17.13.1"
joi: "npm:^17.13.9"
jsep: "npm:^1.3.8"
lodash.clonedeep: "npm:^4.5.0"
rimraf: "npm:3.0.2"
@@ -3175,12 +3175,12 @@ __metadata:
ts-node: "npm:^10.9.2"
typescript: "npm:^6.0.3"
uuid: "npm:^11.1.1"
yaml: "npm:^2.4.3"
zod: "npm:^4.3.5"
yaml: "npm:^2.9.1"
zod: "npm:^4.6.7"
languageName: unknown
linkType: soft
"@expo/template-file@npm:27.7.0, @expo/template-file@workspace:packages/template-file":
"@expo/template-file@npm:27.7.2, @expo/template-file@workspace:packages/template-file":
version: 0.0.0-use.local
resolution: "@expo/template-file@workspace:packages/template-file"
dependencies:
@@ -3203,11 +3203,11 @@ __metadata:
languageName: node
linkType: hard
"@expo/turtle-spawn@npm:27.7.0, @expo/turtle-spawn@workspace:packages/turtle-spawn":
"@expo/turtle-spawn@npm:27.7.2, @expo/turtle-spawn@workspace:packages/turtle-spawn":
version: 0.0.0-use.local
resolution: "@expo/turtle-spawn@workspace:packages/turtle-spawn"
dependencies:
"@expo/logger": "npm:27.7.0"
"@expo/logger": "npm:27.7.2"
"@expo/spawn-async": "npm:^1.7.2"
"@types/jest": "npm:^29.5.12"
"@types/node": "npm:22.20.5"
@@ -3238,17 +3238,17 @@ __metadata:
resolution: "@expo/worker@workspace:packages/worker"
dependencies:
"@babel/core": "npm:7.24.7"
"@expo/build-tools": "npm:27.7.0"
"@expo/build-tools": "npm:27.7.2"
"@expo/config-plugins": "npm:55.0.7"
"@expo/config-types": "npm:55.0.5"
"@expo/eas-build-job": "npm:27.7.0"
"@expo/logger": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.2"
"@expo/logger": "npm:27.7.2"
"@expo/results": "npm:1.0.0"
"@expo/rudder-sdk-node": "npm:1.1.1"
"@expo/spawn-async": "npm:1.7.2"
"@expo/steps": "npm:27.7.0"
"@expo/template-file": "npm:27.7.0"
"@expo/turtle-spawn": "npm:27.7.0"
"@expo/steps": "npm:27.7.2"
"@expo/template-file": "npm:27.7.2"
"@expo/turtle-spawn": "npm:27.7.2"
"@hapi/boom": "npm:10.0.1"
"@types/babel__core": "npm:7.20.5"
"@types/fs-extra": "npm:11.0.4"
@@ -3282,14 +3282,14 @@ __metadata:
rimraf: "npm:3.0.2"
semver: "npm:7.6.3"
supertest: "npm:7.2.2"
tar: "npm:7.5.19"
tar: "npm:7.5.22"
ts-jest: "npm:29.4.12"
typescript: "npm:6.0.3"
uuid: "npm:3.4.0"
uuidv7: "npm:1.1.0"
ws: "npm:8.21.1"
xml2js: "npm:0.6.2"
zod: "npm:4.1.8"
zod: "npm:4.6.7"
languageName: unknown
linkType: soft
@@ -4264,15 +4264,6 @@ __metadata:
languageName: node
linkType: hard
"@hapi/topo@npm:^5.0.0":
version: 5.0.0
resolution: "@hapi/topo@npm:5.0.0"
dependencies:
"@hapi/hoek": "npm:^9.0.0"
checksum: 10c0/37ddfc19e3e61cb3a0591686a0707fcfe3b965b88d2f1c0291f2b688e28d4f98456087665ecdbe80bd27640e03a68f433909c010f961f95ac69b3028d44a4ca0
languageName: node
linkType: hard
"@hapi/topo@npm:^5.1.0":
version: 5.1.0
resolution: "@hapi/topo@npm:5.1.0"
@@ -6492,15 +6483,6 @@ __metadata:
languageName: node
linkType: hard
"@sideway/address@npm:^4.1.3":
version: 4.1.3
resolution: "@sideway/address@npm:4.1.3"
dependencies:
"@hapi/hoek": "npm:^9.0.0"
checksum: 10c0/d5f1cb09a66577eecd2f3b0b664fc9343218e7d8f2dc6abcc1045911bcc65b474e40825fe278cf05f649dde552e5f37d900691f38e9fc0b48486f3ee5d343b9c
languageName: node
linkType: hard
"@sideway/address@npm:^4.1.5":
version: 4.1.5
resolution: "@sideway/address@npm:4.1.5"
@@ -8431,15 +8413,15 @@ __metadata:
languageName: node
linkType: hard
"ajv@npm:8.11.0, ajv@npm:^8.0.0":
version: 8.11.0
resolution: "ajv@npm:8.11.0"
"ajv@npm:8.20.0, ajv@npm:^8.0.0":
version: 8.20.0
resolution: "ajv@npm:8.20.0"
dependencies:
fast-deep-equal: "npm:^3.1.1"
fast-deep-equal: "npm:^3.1.3"
fast-uri: "npm:^3.0.1"
json-schema-traverse: "npm:^1.0.0"
require-from-string: "npm:^2.0.2"
uri-js: "npm:^4.2.2"
checksum: 10c0/8a4b1b639a53d52169b94dd1cdd03716fe7bbc1fc676006957ba82497e764f4bd44b92f75e37c8804ea3176ee3c224322e22779d071fb01cd89aefaaa42c9414
checksum: 10c0/5df9a1c8f83863cde1bd3a9ddb426f599718f88e3dc9153616c79fb28e0be455335830d7f21d745576519f057b371352daa31047b6a33d7036fe08777d60cf2a
languageName: node
linkType: hard
@@ -9011,21 +8993,21 @@ __metadata:
languageName: node
linkType: hard
"brace-expansion@npm:^5.0.2":
version: 5.0.4
resolution: "brace-expansion@npm:5.0.4"
"brace-expansion@npm:^2.0.2":
version: 2.1.7
resolution: "brace-expansion@npm:2.1.7"
dependencies:
balanced-match: "npm:^4.0.2"
checksum: 10c0/359cbcfa80b2eb914ca1f3440e92313fbfe7919ee6b274c35db55bec555aded69dac5ee78f102cec90c35f98c20fa43d10936d0cd9978158823c249257e1643a
balanced-match: "npm:^1.0.0"
checksum: 10c0/17ee4194c85b05cde0a7b7c068eeef664440c027116ef42c3d35c13ebabdc9fd3eaf05c5c8a06dd0ca20ae012d652561d8ac2a699daa5cbee1f0510e5134ab4d
languageName: node
linkType: hard
"brace-expansion@npm:^5.0.5":
version: 5.0.7
resolution: "brace-expansion@npm:5.0.7"
"brace-expansion@npm:^5.0.8":
version: 5.0.12
resolution: "brace-expansion@npm:5.0.12"
dependencies:
balanced-match: "npm:^4.0.2"
checksum: 10c0/4769109c3c082de178e449a371bcad50d51ab468f644bce2dd9188efe0cf0a080ed102105d7fc8577382cedc45bad7e6443a91bf3d8102264ee8cf927dbaf205
checksum: 10c0/a40ac64d3bdb5bb222456514d3633c1f627f03b844f509c69e70f98b78be0ce85e21b44bbfecdd0ddd4cc0855ca4242b41ea96ddccf88c7c3c7a84405474bb3a
languageName: node
linkType: hard
@@ -10141,7 +10123,7 @@ __metadata:
resolution: "create-eas-build-function@workspace:packages/create-eas-build-function"
dependencies:
"@expo/package-manager": "npm:1.9.10"
"@expo/steps": "npm:27.7.0"
"@expo/steps": "npm:27.7.2"
"@jest/globals": "npm:^29.7.0"
"@types/jest": "npm:^29.5.12"
"@types/node": "npm:22.20.5"
@@ -10725,12 +10707,12 @@ __metadata:
version: 0.0.0-use.local
resolution: "eas-cli-local-build-plugin@workspace:packages/local-build-plugin"
dependencies:
"@expo/build-tools": "npm:27.7.0"
"@expo/build-tools": "npm:27.7.2"
"@expo/bunyan": "npm:^4.0.1"
"@expo/eas-build-job": "npm:27.7.0"
"@expo/logger": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.2"
"@expo/logger": "npm:27.7.2"
"@expo/spawn-async": "npm:^1.7.2"
"@expo/turtle-spawn": "npm:27.7.0"
"@expo/turtle-spawn": "npm:27.7.2"
"@types/fs-extra": "npm:^11.0.4"
"@types/hapi__joi": "npm:^17.1.14"
"@types/lodash": "npm:^4.17.4"
@@ -10740,12 +10722,12 @@ __metadata:
env-paths: "npm:^2.2.1"
fs-extra: "npm:^11.2.0"
jest: "npm:^29.7.0"
joi: "npm:^17.13.1"
joi: "npm:^17.13.9"
lodash: "npm:^4.18.1"
nullthrows: "npm:^1.1.1"
rimraf: "npm:3.0.2"
semver: "npm:^7.6.2"
tar: "npm:7.5.19"
tar: "npm:7.5.22"
ts-jest: "npm:^29.4.12"
typescript: "npm:^6.0.3"
uuid: "npm:^9.0.1"
@@ -10784,12 +10766,12 @@ __metadata:
"@expo/code-signing-certificates": "npm:0.0.5"
"@expo/config": "npm:55.0.10"
"@expo/config-plugins": "npm:55.0.7"
"@expo/eas-build-job": "npm:27.7.0"
"@expo/eas-json": "npm:27.7.0"
"@expo/eas-build-job": "npm:27.7.2"
"@expo/eas-json": "npm:27.7.2"
"@expo/env": "npm:^1.0.0"
"@expo/experimentation": "npm:0.0.5"
"@expo/json-file": "npm:8.3.3"
"@expo/logger": "npm:27.7.0"
"@expo/logger": "npm:27.7.2"
"@expo/multipart-body-parser": "npm:2.0.0"
"@expo/osascript": "npm:2.1.4"
"@expo/package-manager": "npm:1.9.10"
@@ -10801,7 +10783,7 @@ __metadata:
"@expo/results": "npm:1.0.0"
"@expo/rudder-sdk-node": "npm:1.1.1"
"@expo/spawn-async": "npm:1.7.2"
"@expo/steps": "npm:27.7.0"
"@expo/steps": "npm:27.7.2"
"@expo/timeago.js": "npm:1.0.0"
"@graphql-codegen/cli": "npm:6.3.1"
"@graphql-codegen/introspection": "npm:5.0.2"
@@ -10837,7 +10819,7 @@ __metadata:
"@urql/core": "npm:4.0.11"
"@urql/exchange-retry": "npm:1.2.0"
agent-cli-detector: "npm:0.1.7"
ajv: "npm:8.11.0"
ajv: "npm:8.20.0"
ajv-formats: "npm:2.1.1"
axios: "npm:1.18.1"
better-opn: "npm:3.0.2"
@@ -10867,18 +10849,18 @@ __metadata:
invariant: "npm:^2.2.2"
jest: "npm:29.7.0"
jks-js: "npm:1.1.0"
joi: "npm:17.11.0"
joi: "npm:17.13.9"
keychain: "npm:1.5.0"
log-symbols: "npm:4.1.0"
memfs: "npm:3.4.13"
mime: "npm:3.0.0"
minimatch: "npm:5.1.2"
minimatch: "npm:5.1.9"
minizlib: "npm:3.1.0"
mockdate: "npm:3.0.5"
nanoid: "npm:3.3.8"
nanoid: "npm:3.3.20"
nock: "npm:13.4.0"
node-fetch: "npm:2.6.7"
node-forge: "npm:1.4.0"
node-forge: "npm:1.4.3"
node-stream-zip: "npm:1.15.0"
nullthrows: "npm:1.1.1"
open: "npm:8.4.0"
@@ -10896,7 +10878,7 @@ __metadata:
semver: "npm:7.5.4"
set-interval-async: "npm:3.0.3"
slash: "npm:3.0.0"
tar: "npm:7.5.19"
tar: "npm:7.5.22"
tar-stream: "npm:3.1.7"
terminal-link: "npm:2.1.1"
ts-deepmerge: "npm:6.2.0"
@@ -10909,8 +10891,8 @@ __metadata:
uuid: "npm:11.1.1"
wrap-ansi: "npm:7.0.0"
ws: "npm:8.21.1"
yaml: "npm:2.6.0"
zod: "npm:^4.1.3"
yaml: "npm:2.9.1"
zod: "npm:^4.6.7"
bin:
eas: ./bin/run
languageName: unknown
@@ -11378,7 +11360,7 @@ __metadata:
languageName: node
linkType: hard
"fast-deep-equal@npm:3.1.3, fast-deep-equal@npm:^3.1.1":
"fast-deep-equal@npm:3.1.3, fast-deep-equal@npm:^3.1.3":
version: 3.1.3
resolution: "fast-deep-equal@npm:3.1.3"
checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0
@@ -11484,6 +11466,13 @@ __metadata:
languageName: node
linkType: hard
"fast-uri@npm:^3.0.1":
version: 3.1.9
resolution: "fast-uri@npm:3.1.9"
checksum: 10c0/052757540d8c0bbc16bb124a45b8f5cb5d0932f9b89f019221ee41cdb3cafc1db44b2e809d6b888b87922af3e5560a863124454e9d9193e1fc955887357b5add
languageName: node
linkType: hard
"fast-wrap-ansi@npm:^0.2.0":
version: 0.2.2
resolution: "fast-wrap-ansi@npm:0.2.2"
@@ -14070,29 +14059,16 @@ __metadata:
languageName: node
linkType: hard
"joi@npm:17.11.0":
version: 17.11.0
resolution: "joi@npm:17.11.0"
dependencies:
"@hapi/hoek": "npm:^9.0.0"
"@hapi/topo": "npm:^5.0.0"
"@sideway/address": "npm:^4.1.3"
"@sideway/formula": "npm:^3.0.1"
"@sideway/pinpoint": "npm:^2.0.0"
checksum: 10c0/c41c86fe772828b88fbdbcaef2e41235ccbb107c22523a377f9a2fd39829f203213f37a352589f49d9a9b38bf1c645846defede8b81d8c1f3123117c1a600010
languageName: node
linkType: hard
"joi@npm:^17.13.1":
version: 17.13.1
resolution: "joi@npm:17.13.1"
"joi@npm:17.13.9, joi@npm:^17.13.9":
version: 17.13.9
resolution: "joi@npm:17.13.9"
dependencies:
"@hapi/hoek": "npm:^9.3.0"
"@hapi/topo": "npm:^5.1.0"
"@sideway/address": "npm:^4.1.5"
"@sideway/formula": "npm:^3.0.1"
"@sideway/pinpoint": "npm:^2.0.0"
checksum: 10c0/485627809c5e424fc4af4310e06bc31a34fe10635b0bdbfcc425336db5e06b1da3ff8b35101878ffcbcd94c0187e7134c935fb2d1aeba641c92d7f505e6ffd8d
checksum: 10c0/7a52549e8e9d99853d6166b647d102e58197720869aa5339f9b9c1704e471a70918645944a8aa6a9998955dc0a521ffd1580fdb3e9e502b1e2bb88793dd0e50c
languageName: node
linkType: hard
@@ -15296,7 +15272,7 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:10.1.1, minimatch@npm:^10.0.3, minimatch@npm:^10.1.1":
"minimatch@npm:10.1.1":
version: 10.1.1
resolution: "minimatch@npm:10.1.1"
dependencies:
@@ -15305,7 +15281,16 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:2 || 3, minimatch@npm:3.0.4":
"minimatch@npm:2 || 3, minimatch@npm:^3.0.4":
version: 3.1.5
resolution: "minimatch@npm:3.1.5"
dependencies:
brace-expansion: "npm:^1.1.7"
checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70
languageName: node
linkType: hard
"minimatch@npm:3.0.4":
version: 3.0.4
resolution: "minimatch@npm:3.0.4"
dependencies:
@@ -15323,66 +15308,39 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:5.1.2":
version: 5.1.2
resolution: "minimatch@npm:5.1.2"
"minimatch@npm:5.1.9, minimatch@npm:^5.0.1":
version: 5.1.9
resolution: "minimatch@npm:5.1.9"
dependencies:
brace-expansion: "npm:^2.0.1"
checksum: 10c0/1376e34455e8eb1a493ea648571a0c449b99c44753aa3a562204b68dfea3ebd40193b9132d67c0e4adddeb9311a53173252664aafeba6516e5101c99fb6d0171
checksum: 10c0/4202718683815a7288b13e470160a4f9560cf392adef4f453927505817e01ef6b3476ecde13cfcaed17e7326dd3b69ad44eb2daeb19a217c5500f9277893f1d6
languageName: node
linkType: hard
"minimatch@npm:^10.0.0":
version: 10.2.5
resolution: "minimatch@npm:10.2.5"
"minimatch@npm:^10.0.0, minimatch@npm:^10.0.3, minimatch@npm:^10.1.1, minimatch@npm:^10.2.4":
version: 10.2.6
resolution: "minimatch@npm:10.2.6"
dependencies:
brace-expansion: "npm:^5.0.5"
checksum: 10c0/6bb058bd6324104b9ec2f763476a35386d05079c1f5fe4fbf1f324a25237cd4534d6813ecd71f48208f4e635c1221899bef94c3c89f7df55698fe373aaae20fd
languageName: node
linkType: hard
"minimatch@npm:^10.2.4":
version: 10.2.4
resolution: "minimatch@npm:10.2.4"
dependencies:
brace-expansion: "npm:^5.0.2"
checksum: 10c0/35f3dfb7b99b51efd46afd378486889f590e7efb10e0f6a10ba6800428cf65c9a8dedb74427d0570b318d749b543dc4e85f06d46d2858bc8cac7e1eb49a95945
languageName: node
linkType: hard
"minimatch@npm:^3.0.4":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
brace-expansion: "npm:^1.1.7"
checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311
languageName: node
linkType: hard
"minimatch@npm:^5.0.1":
version: 5.1.0
resolution: "minimatch@npm:5.1.0"
dependencies:
brace-expansion: "npm:^2.0.1"
checksum: 10c0/21c4877438068da0728eeb678107ea716fd3c76fcde713c9d11b01d7d15c276071aa2fecfcd353b970a290cffd572c3ed43e0a64804470ab9ae97717ed13fb18
brace-expansion: "npm:^5.0.8"
checksum: 10c0/4559a836243b98bd4d17ea9f7edae698717c76399eea7be374f3737f33164e4907f19e9726891ddeb122f750a5a7fa80d2ac43e851d6e5984dc4ff42ec127d3a
languageName: node
linkType: hard
"minimatch@npm:^8.0.2":
version: 8.0.4
resolution: "minimatch@npm:8.0.4"
version: 8.0.7
resolution: "minimatch@npm:8.0.7"
dependencies:
brace-expansion: "npm:^2.0.1"
checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca
checksum: 10c0/46d9dee24174f8a9eadec97ba36cba2e63f1fff8b36324e1825229bd9307ffee7ffd2f5a2749b29ba796eda877cd9c1687f9d1b399a10b290346561f2a8145f8
languageName: node
linkType: hard
"minimatch@npm:^9.0.4":
version: 9.0.5
resolution: "minimatch@npm:9.0.5"
version: 9.0.9
resolution: "minimatch@npm:9.0.9"
dependencies:
brace-expansion: "npm:^2.0.1"
checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed
brace-expansion: "npm:^2.0.2"
checksum: 10c0/0b6a58530dbb00361745aa6c8cffaba4c90f551afe7c734830bd95fd88ebf469dd7355a027824ea1d09e37181cfeb0a797fb17df60c15ac174303ac110eb7e86
languageName: node
linkType: hard
@@ -15660,12 +15618,12 @@ __metadata:
languageName: node
linkType: hard
"nanoid@npm:3.3.8":
version: 3.3.8
resolution: "nanoid@npm:3.3.8"
"nanoid@npm:3.3.20":
version: 3.3.20
resolution: "nanoid@npm:3.3.20"
bin:
nanoid: bin/nanoid.cjs
checksum: 10c0/4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120
checksum: 10c0/856e8bf3bddb959d65997bd94908be030dbc5e6ed88fb3af2a638e51d1938f4d4f454c7c7231aba340775224f88b8cfd3ce1693c70471bfd05f5b6a2227c0c1e
languageName: node
linkType: hard
@@ -15820,10 +15778,10 @@ __metadata:
languageName: node
linkType: hard
"node-forge@npm:1.4.0, node-forge@npm:^1.2.1, node-forge@npm:^1.3.1":
version: 1.4.0
resolution: "node-forge@npm:1.4.0"
checksum: 10c0/67330a5f1f95257a4c8a93b7d555abe87b5f15e350123aa396c97a21a8ca94f9c6549008eb2c73668a91e0d7e3a905785acbd8f8bd0751c29401292011f8f8e1
"node-forge@npm:1.4.3, node-forge@npm:^1.2.1, node-forge@npm:^1.3.1, node-forge@npm:^1.4.3":
version: 1.4.3
resolution: "node-forge@npm:1.4.3"
checksum: 10c0/02202bf144dfb6f9662c21a2fdbc6251cb1e8b6dd7e4016d2bb8c996fb61a46383f7426503e06e3f15014d1b8a3215c32ee5cf22e5023ecd8e6d88b6a41dada0
languageName: node
linkType: hard
@@ -17450,13 +17408,6 @@ __metadata:
languageName: node
linkType: hard
"punycode@npm:^2.1.0":
version: 2.1.1
resolution: "punycode@npm:2.1.1"
checksum: 10c0/83815ca9b9177f055771f31980cbec7ffaef10257d50a95ab99b4a30f0404846e85fa6887ee1bbc0aaddb7bad6d96e2fa150a016051ff0f6b92be4ad613ddca8
languageName: node
linkType: hard
"pure-rand@npm:^6.0.0":
version: 6.0.4
resolution: "pure-rand@npm:6.0.4"
@@ -19014,16 +18965,16 @@ __metadata:
languageName: node
linkType: hard
"tar@npm:7.5.19, tar@npm:^7.4.3, tar@npm:^7.5.2, tar@npm:^7.5.4":
version: 7.5.19
resolution: "tar@npm:7.5.19"
"tar@npm:7.5.22, tar@npm:^7.4.3, tar@npm:^7.5.2, tar@npm:^7.5.4":
version: 7.5.22
resolution: "tar@npm:7.5.22"
dependencies:
"@isaacs/fs-minipass": "npm:^4.0.0"
chownr: "npm:^3.0.0"
minipass: "npm:^7.1.2"
minizlib: "npm:^3.1.0"
yallist: "npm:^5.0.0"
checksum: 10c0/7022e8cb04a8ceccc0689f2c731743fa2aab2e3c3f559f7dbc37b65ef7d5913049b427284eded2ec0765c5db5ff72dd7939fe2ae15785ff422cef2116c95d798
checksum: 10c0/1311f6be85a8157ac4c9147bae43e13923d2a1aae15e4aa1bd5239e4e03d2cf53cfe103dde7f35832fbb4c938b042856bc8e9a0afd29abd05e2d1608788c4fea
languageName: node
linkType: hard
@@ -19879,15 +19830,6 @@ __metadata:
languageName: node
linkType: hard
"uri-js@npm:^4.2.2":
version: 4.2.2
resolution: "uri-js@npm:4.2.2"
dependencies:
punycode: "npm:^2.1.0"
checksum: 10c0/883130a63b280644e290f4b34d9ee6cc38477b57904bd39e1e31c33823b1d7897cd410113a2b588f8c0fb32543b43c29aa1569235fd72c57a6a82b595a476ba0
languageName: node
linkType: hard
"urlpattern-polyfill@npm:^10.0.0":
version: 10.1.0
resolution: "urlpattern-polyfill@npm:10.1.0"
@@ -20456,57 +20398,7 @@ __metadata:
languageName: node
linkType: hard
"yaml@npm:2.6.0":
version: 2.6.0
resolution: "yaml@npm:2.6.0"
bin:
yaml: bin.mjs
checksum: 10c0/9e74cdb91cc35512a1c41f5ce509b0e93cc1d00eff0901e4ba831ee75a71ddf0845702adcd6f4ee6c811319eb9b59653248462ab94fa021ab855543a75396ceb
languageName: node
linkType: hard
"yaml@npm:^1.7.2":
version: 1.10.0
resolution: "yaml@npm:1.10.0"
checksum: 10c0/04df034f8b250a785d715bce396a1ee78c7f5d937c37dfd1929fb7ab41dccc91ee834af77721763ae547e9b38e22ade5706a2cb8a8ebdd55b6a3612c43b6eb3d
languageName: node
linkType: hard
"yaml@npm:^2.3.1":
version: 2.3.1
resolution: "yaml@npm:2.3.1"
checksum: 10c0/ed4c21a907fb1cd60a25177612fa46d95064a144623d269199817908475fe85bef20fb17406e3bdc175351b6488056a6f84beb7836e8c262646546a0220188e3
languageName: node
linkType: hard
"yaml@npm:^2.4.3":
version: 2.4.3
resolution: "yaml@npm:2.4.3"
bin:
yaml: bin.mjs
checksum: 10c0/b4a9dea34265f000402c909144ac310be42c4526dfd16dff1aee2b04a0d94051713651c0cd2b0a3d8109266997422120f16a7934629d12f22dc215839ebbeccf
languageName: node
linkType: hard
"yaml@npm:^2.6.0":
version: 2.8.0
resolution: "yaml@npm:2.8.0"
bin:
yaml: bin.mjs
checksum: 10c0/f6f7310cf7264a8107e72c1376f4de37389945d2fb4656f8060eca83f01d2d703f9d1b925dd8f39852a57034fafefde6225409ddd9f22aebfda16c6141b71858
languageName: node
linkType: hard
"yaml@npm:^2.8.1":
version: 2.8.1
resolution: "yaml@npm:2.8.1"
bin:
yaml: bin.mjs
checksum: 10c0/7c587be00d9303d2ae1566e03bc5bc7fe978ba0d9bf39cc418c3139d37929dfcb93a230d9749f2cb578b6aa5d9ebebc322415e4b653cb83acd8bc0bc321707f3
languageName: node
linkType: hard
"yaml@npm:^2.9.0":
"yaml@npm:2.9.1, yaml@npm:^2.3.1, yaml@npm:^2.6.0, yaml@npm:^2.9.0, yaml@npm:^2.9.1":
version: 2.9.1
resolution: "yaml@npm:2.9.1"
bin:
@@ -20515,6 +20407,13 @@ __metadata:
languageName: node
linkType: hard
"yaml@npm:^1.7.2":
version: 1.10.3
resolution: "yaml@npm:1.10.3"
checksum: 10c0/c309ff85a0a569a981d71ab9cf0fef68672a16b9cdf40639d1c3b30034f6cd16ee428602bd6d64ecf006f8c8bee499023cac236538f79898aa99fb5db529a2ed
languageName: node
linkType: hard
"yargs-parser@npm:21.1.1, yargs-parser@npm:^21.1.1":
version: 21.1.1
resolution: "yargs-parser@npm:21.1.1"
@@ -20639,17 +20538,10 @@ __metadata:
languageName: node
linkType: hard
"zod@npm:4.1.8, zod@npm:^4.1.3":
version: 4.1.8
resolution: "zod@npm:4.1.8"
checksum: 10c0/5eae39da09d7bd0564a30dfd2348811e4e2e7dd15955d8f3444f8e196f35e5422b1482eda234b722fafb0738f4a8b718adb042b860936bfdd2cc19cdbdac8a9a
languageName: node
linkType: hard
"zod@npm:^4.1.12, zod@npm:^4.3.5":
version: 4.3.5
resolution: "zod@npm:4.3.5"
checksum: 10c0/5a2db7e59177a3d7e202543f5136cb87b97b047b77c8a3d824098d3fa8b80d3aa40a0a5f296965c3b82dfdccdd05dbbfacce91347f16a39c675680fd7b1ab109
"zod@npm:4.6.7, zod@npm:^4.1.12, zod@npm:^4.6.7":
version: 4.6.7
resolution: "zod@npm:4.6.7"
checksum: 10c0/4ce2eb14034317b7254e347ca37b5ad591cf8333147030cf05b9b5d31692d45073f7f2747aa50cf8c6b29012194d2b22978cecc89969cf34a0d18e89d0ee7d7b
languageName: node
linkType: hard