Skip to content
This repository was archived by the owner on Feb 24, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import path from 'path';

import { BuildFunction, BuildStepEnv } from '@expo/steps';
import { BuildStepContext } from '@expo/steps/dist_esm/BuildStepContext';
import { BuildFunction, BuildStepEnv, BuildStepContext } from '@expo/steps';

import {
findPackagerRootDir,
Expand Down
7 changes: 2 additions & 5 deletions packages/steps/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
{
"extends": "../../.eslintrc.json",
"plugins": [
"async-protect"
],
"plugins": ["async-protect"],
"rules": {
"async-protect/async-suffix": "error",
"import/extensions": ["error", "always"]
"async-protect/async-suffix": "error"
}
}
27 changes: 0 additions & 27 deletions packages/steps/build.sh

This file was deleted.

2 changes: 1 addition & 1 deletion packages/steps/cli.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ set -eo pipefail

STEPS_ROOT_DIR=$( dirname "${BASH_SOURCE[0]}" )

node $STEPS_ROOT_DIR/dist_commonjs/cli/cli.cjs $@ | yarn run bunyan -o short
node $STEPS_ROOT_DIR/dist/cli/cli.js $@ | yarn run bunyan -o short
14 changes: 1 addition & 13 deletions packages/steps/jest.config.cjs
Original file line number Diff line number Diff line change
@@ -1,23 +1,11 @@
module.exports = {
preset: 'ts-jest/presets/default-esm',
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
tsconfig: 'tsconfig.json',
useESM: true,
},
],
},
preset: 'ts-jest',
testEnvironment: 'node',
rootDir: 'src',
testMatch: ['**/__tests__/*-test.ts'],
coverageReporters: ['json', 'lcov'],
coverageDirectory: '../coverage/tests/',
collectCoverageFrom: ['**/*.ts'],
moduleNameMapper: {
'^(\\.\\.?/.*)\\.js$': ['$1.ts', '$0'],
},
clearMocks: true,
setupFilesAfterEnv: ['<rootDir>/../jest/setup-tests.ts'],
};
30 changes: 9 additions & 21 deletions packages/steps/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,22 @@
"url": "https://github.com/expo/eas-build.git",
"directory": "packages/steps"
},
"type": "module",
"version": "1.0.265",
"main": "./dist_commonjs/index.cjs",
"types": "./dist_esm/index.d.ts",
"exports": {
".": {
"types": "./dist_esm/index.d.ts",
"import": "./dist_esm/index.js",
"require": "./dist_commonjs/index.cjs"
}
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"files": [
"bin",
"dist_commonjs",
"dist_esm",
"README.md"
"dist"
],
"scripts": {
"start": "yarn watch",
"build": "./build.sh",
"prepack": "./build.sh",
"watch": "chokidar --initial \"src/**/*.ts\" -i \"src/**/__tests__/**/*\" -c \"./build.sh\"",
"test": "node --experimental-vm-modules --no-warnings node_modules/.bin/jest -c=jest.config.cjs --no-cache",
"test:coverage": "node --experimental-vm-modules --no-warnings node_modules/.bin/jest -c=jest.config.cjs --no-cache --coverage",
"build": "tsc --project tsconfig.build.json",
"prepack": "rm -rf dist && tsc --project tsconfig.build.json",
"watch": "tsc --watch --preserveWatchOutput",
"test": "jest --config jest.config.cjs",
"test:coverage": "jest --config jest.config.cjs --coverage",
"test:watch": "yarn test --watch",
"clean": "rm -rf node_modules dist_* coverage"
"clean": "rm -rf node_modules dist coverage"
},
"author": "Expo <support@expo.io>",
"bugs": "https://github.com/expo/eas-build/issues",
Expand All @@ -41,7 +31,6 @@
"@types/lodash.clonedeep": "^4.5.9",
"@types/lodash.get": "^4.4.9",
"@types/node": "20.14.2",
"chokidar-cli": "^3.0.0",
"eslint-plugin-async-protect": "^3.1.0",
"jest": "^29.7.0",
"ts-jest": "^29.1.4",
Expand All @@ -62,7 +51,6 @@
"jsep": "^1.3.8",
"lodash.clonedeep": "^4.5.0",
"lodash.get": "^4.4.2",
"this-file": "^2.0.3",
"uuid": "^9.0.1",
"yaml": "^2.4.3"
},
Expand Down
18 changes: 9 additions & 9 deletions packages/steps/src/AbstractConfigParser.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { BuildFunction, BuildFunctionById } from './BuildFunction.js';
import { BuildFunctionGroup } from './BuildFunctionGroup.js';
import { BuildStep } from './BuildStep.js';
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildWorkflow } from './BuildWorkflow.js';
import { BuildWorkflowValidator } from './BuildWorkflowValidator.js';
import { BuildConfigError } from './errors.js';
import { duplicates } from './utils/expodash/duplicates.js';
import { uniq } from './utils/expodash/uniq.js';
import { BuildFunction, BuildFunctionById } from './BuildFunction';
import { BuildFunctionGroup } from './BuildFunctionGroup';
import { BuildStep } from './BuildStep';
import { BuildStepGlobalContext } from './BuildStepContext';
import { BuildWorkflow } from './BuildWorkflow';
import { BuildWorkflowValidator } from './BuildWorkflowValidator';
import { BuildConfigError } from './errors';
import { duplicates } from './utils/expodash/duplicates';
import { uniq } from './utils/expodash/uniq';

export abstract class AbstractConfigParser {
protected readonly externalFunctions?: BuildFunction[];
Expand Down
10 changes: 5 additions & 5 deletions packages/steps/src/BuildConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import path from 'path';
import Joi from 'joi';
import YAML from 'yaml';

import { BuildConfigError, BuildWorkflowError } from './errors.js';
import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
import { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput.js';
import { BuildStepEnv } from './BuildStepEnv.js';
import { BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX } from './utils/template.js';
import { BuildConfigError, BuildWorkflowError } from './errors';
import { BuildRuntimePlatform } from './BuildRuntimePlatform';
import { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput';
import { BuildStepEnv } from './BuildStepEnv';
import { BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX } from './utils/template';

export type BuildFunctions = Record<string, BuildFunctionConfig>;

Expand Down
18 changes: 9 additions & 9 deletions packages/steps/src/BuildConfigParser.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,23 @@ import {
isBuildStepBareFunctionOrFunctionGroupCall,
isBuildStepCommandRun,
readAndValidateBuildConfigFromPathAsync,
} from './BuildConfig.js';
import { BuildFunction, BuildFunctionById } from './BuildFunction.js';
import { BuildStep } from './BuildStep.js';
} from './BuildConfig';
import { BuildFunction, BuildFunctionById } from './BuildFunction';
import { BuildStep } from './BuildStep';
import {
BuildStepInput,
BuildStepInputProvider,
BuildStepInputValueTypeName,
} from './BuildStepInput.js';
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepOutput, BuildStepOutputProvider } from './BuildStepOutput.js';
import { BuildConfigError } from './errors.js';
} from './BuildStepInput';
import { BuildStepGlobalContext } from './BuildStepContext';
import { BuildStepOutput, BuildStepOutputProvider } from './BuildStepOutput';
import { BuildConfigError } from './errors';
import {
BuildFunctionGroup,
BuildFunctionGroupById,
createBuildFunctionGroupByIdMapping,
} from './BuildFunctionGroup.js';
import { AbstractConfigParser } from './AbstractConfigParser.js';
} from './BuildFunctionGroup';
import { AbstractConfigParser } from './AbstractConfigParser';

export class BuildConfigParser extends AbstractConfigParser {
private readonly configPath: string;
Expand Down
14 changes: 7 additions & 7 deletions packages/steps/src/BuildFunction.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import assert from 'assert';

import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
import { BuildStep, BuildStepFunction } from './BuildStep.js';
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepInputProvider } from './BuildStepInput.js';
import { BuildStepOutputProvider } from './BuildStepOutput.js';
import { BuildStepEnv } from './BuildStepEnv.js';
import { createCustomFunctionCall } from './utils/customFunction.js';
import { BuildRuntimePlatform } from './BuildRuntimePlatform';
import { BuildStep, BuildStepFunction } from './BuildStep';
import { BuildStepGlobalContext } from './BuildStepContext';
import { BuildStepInputProvider } from './BuildStepInput';
import { BuildStepOutputProvider } from './BuildStepOutput';
import { BuildStepEnv } from './BuildStepEnv';
import { createCustomFunctionCall } from './utils/customFunction';

export type BuildFunctionById = Record<string, BuildFunction>;
export type BuildFunctionCallInputs = Record<string, unknown>;
Expand Down
10 changes: 5 additions & 5 deletions packages/steps/src/BuildFunctionGroup.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { BuildFunctionCallInputs } from './BuildFunction.js';
import { BuildStep } from './BuildStep.js';
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildFunctionCallInputs } from './BuildFunction';
import { BuildStep } from './BuildStep';
import { BuildStepGlobalContext } from './BuildStepContext';
import {
BuildStepInputById,
BuildStepInputProvider,
makeBuildStepInputByIdMap,
} from './BuildStepInput.js';
import { BuildConfigError } from './errors.js';
} from './BuildStepInput';
import { BuildConfigError } from './errors';

export type BuildFunctionGroupById = Record<string, BuildFunctionGroup | undefined>;

Expand Down
26 changes: 13 additions & 13 deletions packages/steps/src/BuildStep.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,29 @@ import { Buffer } from 'buffer';
import { v4 as uuidv4 } from 'uuid';
import { JobInterpolationContext } from '@expo/eas-build-job';

import { BuildStepContext, BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepInput, BuildStepInputById, makeBuildStepInputByIdMap } from './BuildStepInput.js';
import { BuildStepContext, BuildStepGlobalContext } from './BuildStepContext';
import { BuildStepInput, BuildStepInputById, makeBuildStepInputByIdMap } from './BuildStepInput';
import {
BuildStepOutput,
BuildStepOutputById,
SerializedBuildStepOutput,
makeBuildStepOutputByIdMap,
} from './BuildStepOutput.js';
import { BIN_PATH } from './utils/shell/bin.js';
import { getShellCommandAndArgs } from './utils/shell/command.js';
} from './BuildStepOutput';
import { BIN_PATH } from './utils/shell/bin';
import { getShellCommandAndArgs } from './utils/shell/command';
import {
cleanUpStepTemporaryDirectoriesAsync,
getTemporaryEnvsDirPath,
getTemporaryOutputsDirPath,
saveScriptToTemporaryFileAsync,
} from './BuildTemporaryFiles.js';
import { spawnAsync } from './utils/shell/spawn.js';
import { interpolateWithInputs, interpolateWithOutputs } from './utils/template.js';
import { BuildStepRuntimeError } from './errors.js';
import { BuildStepEnv } from './BuildStepEnv.js';
import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
import { jsepEval } from './utils/jsepEval.js';
import { interpolateJobContext } from './interpolation.js';
} from './BuildTemporaryFiles';
import { spawnAsync } from './utils/shell/spawn';
import { interpolateWithInputs, interpolateWithOutputs } from './utils/template';
import { BuildStepRuntimeError } from './errors';
import { BuildStepEnv } from './BuildStepEnv';
import { BuildRuntimePlatform } from './BuildRuntimePlatform';
import { jsepEval } from './utils/jsepEval';
import { interpolateJobContext } from './interpolation';

export enum BuildStepStatus {
NEW = 'new',
Expand Down
18 changes: 7 additions & 11 deletions packages/steps/src/BuildStepContext.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,17 @@ import { Env, JobInterpolationContext, StaticJobInterpolationContext } from '@ex
import { bunyan } from '@expo/logger';
import { v4 as uuidv4 } from 'uuid';

import { StepMetricInput, StepMetricsCollection } from './StepMetrics.js';
import { hashFiles } from './utils/hashFiles.js';
import {
BuildStep,
BuildStepOutputAccessor,
SerializedBuildStepOutputAccessor,
} from './BuildStep.js';
import { StepMetricInput, StepMetricsCollection } from './StepMetrics';
import { hashFiles } from './utils/hashFiles';
import { BuildStep, BuildStepOutputAccessor, SerializedBuildStepOutputAccessor } from './BuildStep';
import {
getObjectValueForInterpolation,
interpolateWithGlobalContext,
parseOutputPath,
} from './utils/template.js';
import { BuildStepRuntimeError } from './errors.js';
import { BuildRuntimePlatform } from './BuildRuntimePlatform.js';
import { BuildStepEnv } from './BuildStepEnv.js';
} from './utils/template';
import { BuildStepRuntimeError } from './errors';
import { BuildRuntimePlatform } from './BuildRuntimePlatform';
import { BuildStepEnv } from './BuildStepEnv';

interface SerializedExternalBuildContextProvider {
projectSourceDirectory: string;
Expand Down
8 changes: 4 additions & 4 deletions packages/steps/src/BuildStepInput.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import assert from 'assert';

import { JobInterpolationContext } from '@expo/eas-build-job';

import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepRuntimeError } from './errors.js';
import { BuildStepGlobalContext } from './BuildStepContext';
import { BuildStepRuntimeError } from './errors';
import {
BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,
interpolateWithOutputs,
} from './utils/template.js';
import { interpolateJobContext } from './interpolation.js';
} from './utils/template';
import { interpolateJobContext } from './interpolation';

export enum BuildStepInputValueTypeName {
STRING = 'string',
Expand Down
4 changes: 2 additions & 2 deletions packages/steps/src/BuildStepOutput.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepRuntimeError } from './errors.js';
import { BuildStepGlobalContext } from './BuildStepContext';
import { BuildStepRuntimeError } from './errors';

export type BuildStepOutputById = Record<string, BuildStepOutput>;
export type BuildStepOutputProvider = (
Expand Down
2 changes: 1 addition & 1 deletion packages/steps/src/BuildTemporaryFiles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import fs from 'fs/promises';

import { v4 as uuidv4 } from 'uuid';

import { BuildStepGlobalContext } from './BuildStepContext.js';
import { BuildStepGlobalContext } from './BuildStepContext';

export async function saveScriptToTemporaryFileAsync(
ctx: BuildStepGlobalContext,
Expand Down
8 changes: 4 additions & 4 deletions packages/steps/src/BuildWorkflow.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BuildFunctionById } from './BuildFunction.js';
import { BuildStep } from './BuildStep.js';
import { BuildStepGlobalContext } from './BuildStepContext.js';
import { StepMetricResult } from './StepMetrics.js';
import { BuildFunctionById } from './BuildFunction';
import { BuildStep } from './BuildStep';
import { BuildStepGlobalContext } from './BuildStepContext';
import { StepMetricResult } from './StepMetrics';

export class BuildWorkflow {
public readonly buildSteps: BuildStep[];
Expand Down
14 changes: 7 additions & 7 deletions packages/steps/src/BuildWorkflowValidator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import path from 'path';

import fs from 'fs-extra';

import { BuildStep } from './BuildStep.js';
import { BuildStepInputValueTypeName } from './BuildStepInput.js';
import { BuildWorkflow } from './BuildWorkflow.js';
import { BuildConfigError, BuildWorkflowError } from './errors.js';
import { duplicates } from './utils/expodash/duplicates.js';
import { nullthrows } from './utils/nullthrows.js';
import { findOutputPaths } from './utils/template.js';
import { BuildStep } from './BuildStep';
import { BuildStepInputValueTypeName } from './BuildStepInput';
import { BuildWorkflow } from './BuildWorkflow';
import { BuildConfigError, BuildWorkflowError } from './errors';
import { duplicates } from './utils/expodash/duplicates';
import { nullthrows } from './utils/nullthrows';
import { findOutputPaths } from './utils/template';

export class BuildWorkflowValidator {
constructor(private readonly workflow: BuildWorkflow) {}
Expand Down
Loading