@expo/steps 1.0.271 → 18.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -100
- package/README.md +1 -1
- package/dist/AbstractConfigParser.js +9 -7
- package/dist/BuildConfig.d.ts +1 -1
- package/dist/BuildConfig.js +8 -11
- package/dist/BuildConfigParser.d.ts +2 -2
- package/dist/BuildConfigParser.js +16 -24
- package/dist/BuildFunction.d.ts +1 -1
- package/dist/BuildFunction.js +18 -8
- package/dist/BuildFunctionGroup.js +5 -3
- package/dist/BuildRuntimePlatform.js +0 -1
- package/dist/BuildStep.d.ts +2 -2
- package/dist/BuildStep.js +44 -24
- package/dist/BuildStepContext.d.ts +2 -2
- package/dist/BuildStepContext.js +22 -16
- package/dist/BuildStepEnv.js +0 -1
- package/dist/BuildStepInput.js +13 -9
- package/dist/BuildStepOutput.js +6 -4
- package/dist/BuildTemporaryFiles.js +1 -2
- package/dist/BuildWorkflow.js +5 -3
- package/dist/BuildWorkflowValidator.js +7 -8
- package/dist/StepMetrics.js +0 -1
- package/dist/StepsConfigParser.d.ts +2 -2
- package/dist/StepsConfigParser.js +12 -16
- package/dist/cli/cli.d.ts +1 -1
- package/dist/cli/cli.js +11 -6
- package/dist/errors.js +7 -4
- package/dist/index.js +17 -8
- package/dist/interpolation.js +1 -2
- package/dist/scripts/runCustomFunction.js +2 -3
- package/dist/utils/customFunction.d.ts +1 -1
- package/dist/utils/customFunction.js +1 -2
- package/dist/utils/expodash/duplicates.js +0 -1
- package/dist/utils/expodash/uniq.js +0 -1
- package/dist/utils/hashFiles.js +1 -2
- package/dist/utils/jsepEval.js +4 -5
- package/dist/utils/nullthrows.js +1 -2
- package/dist/utils/shell/bin.js +0 -1
- package/dist/utils/shell/command.js +0 -1
- package/dist/utils/shell/spawn.d.ts +2 -2
- package/dist/utils/shell/spawn.js +0 -1
- package/dist/utils/template.js +4 -5
- package/package.json +26 -29
- package/dist/AbstractConfigParser.js.map +0 -1
- package/dist/BuildConfig.js.map +0 -1
- package/dist/BuildConfigParser.js.map +0 -1
- package/dist/BuildFunction.js.map +0 -1
- package/dist/BuildFunctionGroup.js.map +0 -1
- package/dist/BuildRuntimePlatform.js.map +0 -1
- package/dist/BuildStep.js.map +0 -1
- package/dist/BuildStepContext.js.map +0 -1
- package/dist/BuildStepEnv.js.map +0 -1
- package/dist/BuildStepInput.js.map +0 -1
- package/dist/BuildStepOutput.js.map +0 -1
- package/dist/BuildTemporaryFiles.js.map +0 -1
- package/dist/BuildWorkflow.js.map +0 -1
- package/dist/BuildWorkflowValidator.js.map +0 -1
- package/dist/StepMetrics.js.map +0 -1
- package/dist/StepsConfigParser.js.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interpolation.js.map +0 -1
- package/dist/scripts/runCustomFunction.js.map +0 -1
- package/dist/utils/customFunction.js.map +0 -1
- package/dist/utils/expodash/duplicates.js.map +0 -1
- package/dist/utils/expodash/uniq.js.map +0 -1
- package/dist/utils/hashFiles.js.map +0 -1
- package/dist/utils/jsepEval.js.map +0 -1
- package/dist/utils/nullthrows.js.map +0 -1
- package/dist/utils/shell/bin.js.map +0 -1
- package/dist/utils/shell/command.js.map +0 -1
- package/dist/utils/shell/spawn.js.map +0 -1
- package/dist/utils/template.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildStepContext.js","sourceRoot":"","sources":["../src/BuildStepContext.ts"],"names":[],"mappings":"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","sourcesContent":["import os from 'os';\nimport path from 'path';\n\nimport fg from 'fast-glob';\nimport { Env, JobInterpolationContext, StaticJobInterpolationContext } from '@expo/eas-build-job';\nimport { bunyan } from '@expo/logger';\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { StepMetricInput, StepMetricsCollection } from './StepMetrics';\nimport { hashFiles } from './utils/hashFiles';\nimport { BuildStep, BuildStepOutputAccessor, SerializedBuildStepOutputAccessor } from './BuildStep';\nimport {\n getObjectValueForInterpolation,\n interpolateWithGlobalContext,\n parseOutputPath,\n} from './utils/template';\nimport { BuildStepRuntimeError } from './errors';\nimport { BuildRuntimePlatform } from './BuildRuntimePlatform';\nimport { BuildStepEnv } from './BuildStepEnv';\n\ninterface SerializedExternalBuildContextProvider {\n projectSourceDirectory: string;\n projectTargetDirectory: string;\n defaultWorkingDirectory: string;\n buildLogsDirectory: string;\n runtimePlatform: BuildRuntimePlatform;\n // We omit steps, because they should be calculated live based on global context.\n staticContext: Omit<StaticJobInterpolationContext, 'steps'>;\n env: BuildStepEnv;\n}\n\nexport interface ExternalBuildContextProvider {\n readonly projectSourceDirectory: string;\n readonly projectTargetDirectory: string;\n readonly defaultWorkingDirectory: string;\n readonly buildLogsDirectory: string;\n readonly runtimePlatform: BuildRuntimePlatform;\n readonly logger: bunyan;\n\n readonly staticContext: () => Omit<StaticJobInterpolationContext, 'steps'>;\n\n readonly env: BuildStepEnv;\n updateEnv(env: BuildStepEnv): void;\n}\n\nexport interface SerializedBuildStepGlobalContext {\n stepsInternalBuildDirectory: string;\n stepById: Record<string, SerializedBuildStepOutputAccessor>;\n provider: SerializedExternalBuildContextProvider;\n skipCleanup: boolean;\n}\n\nexport class BuildStepGlobalContext {\n public stepsInternalBuildDirectory: string;\n public readonly runtimePlatform: BuildRuntimePlatform;\n public readonly baseLogger: bunyan;\n private didCheckOut = false;\n private _hasAnyPreviousStepFailed = false;\n private stepById: Record<string, BuildStepOutputAccessor> = {};\n private readonly _stepMetrics: StepMetricsCollection = [];\n\n constructor(\n private readonly provider: ExternalBuildContextProvider,\n public readonly skipCleanup: boolean\n ) {\n this.stepsInternalBuildDirectory = path.join(os.tmpdir(), 'eas-build', uuidv4());\n this.runtimePlatform = provider.runtimePlatform;\n this.baseLogger = provider.logger;\n this._hasAnyPreviousStepFailed = false;\n }\n\n public get projectSourceDirectory(): string {\n return this.provider.projectSourceDirectory;\n }\n\n public get projectTargetDirectory(): string {\n return this.provider.projectTargetDirectory;\n }\n\n public get defaultWorkingDirectory(): string {\n return this.didCheckOut ? this.provider.defaultWorkingDirectory : this.projectTargetDirectory;\n }\n\n public get buildLogsDirectory(): string {\n return this.provider.buildLogsDirectory;\n }\n\n public get env(): BuildStepEnv {\n return this.provider.env;\n }\n\n public get staticContext(): StaticJobInterpolationContext {\n return {\n ...this.provider.staticContext(),\n steps: Object.fromEntries(\n Object.values(this.stepById).map((step) => [\n step.id,\n {\n outputs: Object.fromEntries(\n step.outputs.map((output) => {\n return [output.id, output.rawValue];\n })\n ),\n },\n ])\n ),\n };\n }\n\n public updateEnv(updatedEnv: BuildStepEnv): void {\n this.provider.updateEnv(updatedEnv);\n }\n\n public registerStep(step: BuildStep): void {\n this.stepById[step.id] = step;\n }\n\n public getStepOutputValue(path: string): string | undefined {\n const { stepId, outputId } = parseOutputPath(path);\n if (!(stepId in this.stepById)) {\n throw new BuildStepRuntimeError(`Step \"${stepId}\" does not exist.`);\n }\n return this.stepById[stepId].getOutputValueByName(outputId);\n }\n\n public getInterpolationContext(): JobInterpolationContext {\n const hasAnyPreviousStepFailed = this.hasAnyPreviousStepFailed;\n\n return {\n ...this.staticContext,\n always: () => true,\n never: () => false,\n success: () => !hasAnyPreviousStepFailed,\n failure: () => hasAnyPreviousStepFailed,\n env: this.env as Env,\n fromJSON: (json: string) => JSON.parse(json),\n toJSON: (value: unknown) => JSON.stringify(value),\n contains: (value, substring) => value.includes(substring),\n startsWith: (value, prefix) => value.startsWith(prefix),\n endsWith: (value, suffix) => value.endsWith(suffix),\n hashFiles: (...patterns: string[]) => this.hashFiles(...patterns),\n replaceAll: (input: string, stringToReplace: string, replacementString: string) => {\n while (input.includes(stringToReplace)) {\n input = input.replace(stringToReplace, replacementString);\n }\n return input;\n },\n substring: (input: string, start: number, end?: number) => input.substring(start, end),\n };\n }\n\n public interpolate<InterpolableType extends string | object>(\n value: InterpolableType\n ): InterpolableType {\n return interpolateWithGlobalContext(value, (path) => {\n return (\n getObjectValueForInterpolation(path, {\n eas: {\n runtimePlatform: this.runtimePlatform,\n ...this.staticContext,\n env: this.env,\n },\n })?.toString() ?? ''\n );\n });\n }\n\n public stepCtx(options: { logger: bunyan; relativeWorkingDirectory?: string }): BuildStepContext {\n return new BuildStepContext(this, options);\n }\n\n public markAsCheckedOut(logger: bunyan): void {\n this.didCheckOut = true;\n logger.info(\n `Changing default working directory to ${this.defaultWorkingDirectory} (was ${this.projectTargetDirectory})`\n );\n }\n\n public get hasAnyPreviousStepFailed(): boolean {\n return this._hasAnyPreviousStepFailed;\n }\n\n public markAsFailed(): void {\n this._hasAnyPreviousStepFailed = true;\n }\n\n public get stepMetrics(): StepMetricsCollection {\n return this._stepMetrics;\n }\n\n public addStepMetric(metric: StepMetricInput): void {\n this._stepMetrics.push({ ...metric, platform: this.runtimePlatform });\n }\n\n public wasCheckedOut(): boolean {\n return this.didCheckOut;\n }\n\n public hashFiles(...patterns: string[]): string {\n const cwd = this.defaultWorkingDirectory;\n const workspacePath = path.resolve(cwd);\n\n // Use glob to find matching files across all patterns\n const filePaths = fg.sync(patterns, {\n cwd,\n absolute: true,\n onlyFiles: true,\n });\n\n if (filePaths.length === 0) {\n return '';\n }\n\n const validFilePaths = filePaths.filter((file) =>\n file.startsWith(`${workspacePath}${path.sep}`)\n );\n\n if (validFilePaths.length === 0) {\n return '';\n }\n\n return hashFiles(validFilePaths);\n }\n\n public serialize(): SerializedBuildStepGlobalContext {\n return {\n stepsInternalBuildDirectory: this.stepsInternalBuildDirectory,\n stepById: Object.fromEntries(\n Object.entries(this.stepById).map(([id, step]) => [id, step.serialize()])\n ),\n provider: {\n projectSourceDirectory: this.provider.projectSourceDirectory,\n projectTargetDirectory: this.provider.projectTargetDirectory,\n defaultWorkingDirectory: this.provider.defaultWorkingDirectory,\n buildLogsDirectory: this.provider.buildLogsDirectory,\n runtimePlatform: this.provider.runtimePlatform,\n staticContext: this.provider.staticContext(),\n env: this.provider.env,\n },\n skipCleanup: this.skipCleanup,\n };\n }\n\n public static deserialize(\n serialized: SerializedBuildStepGlobalContext,\n logger: bunyan\n ): BuildStepGlobalContext {\n const deserializedProvider: ExternalBuildContextProvider = {\n projectSourceDirectory: serialized.provider.projectSourceDirectory,\n projectTargetDirectory: serialized.provider.projectTargetDirectory,\n defaultWorkingDirectory: serialized.provider.defaultWorkingDirectory,\n buildLogsDirectory: serialized.provider.buildLogsDirectory,\n runtimePlatform: serialized.provider.runtimePlatform,\n logger,\n staticContext: () => serialized.provider.staticContext,\n env: serialized.provider.env,\n updateEnv: () => {},\n };\n const ctx = new BuildStepGlobalContext(deserializedProvider, serialized.skipCleanup);\n for (const [id, stepOutputAccessor] of Object.entries(serialized.stepById)) {\n ctx.stepById[id] = BuildStepOutputAccessor.deserialize(stepOutputAccessor);\n }\n ctx.stepsInternalBuildDirectory = serialized.stepsInternalBuildDirectory;\n\n return ctx;\n }\n}\n\nexport interface SerializedBuildStepContext {\n relativeWorkingDirectory?: string;\n global: SerializedBuildStepGlobalContext;\n}\n\nexport class BuildStepContext {\n public readonly logger: bunyan;\n public readonly relativeWorkingDirectory?: string;\n\n constructor(\n private readonly ctx: BuildStepGlobalContext,\n {\n logger,\n relativeWorkingDirectory,\n }: {\n logger: bunyan;\n relativeWorkingDirectory?: string;\n }\n ) {\n this.logger = logger ?? ctx.baseLogger;\n this.relativeWorkingDirectory = relativeWorkingDirectory;\n }\n\n public get global(): BuildStepGlobalContext {\n return this.ctx;\n }\n\n public get workingDirectory(): string {\n if (!this.relativeWorkingDirectory) {\n return this.ctx.defaultWorkingDirectory;\n }\n\n if (path.isAbsolute(this.relativeWorkingDirectory)) {\n return path.join(this.ctx.projectTargetDirectory, this.relativeWorkingDirectory);\n }\n\n return path.join(this.ctx.defaultWorkingDirectory, this.relativeWorkingDirectory);\n }\n\n public serialize(): SerializedBuildStepContext {\n return {\n relativeWorkingDirectory: this.relativeWorkingDirectory,\n global: this.ctx.serialize(),\n };\n }\n\n public static deserialize(\n serialized: SerializedBuildStepContext,\n logger: bunyan\n ): BuildStepContext {\n const deserializedGlobal = BuildStepGlobalContext.deserialize(serialized.global, logger);\n return new BuildStepContext(deserializedGlobal, {\n logger,\n relativeWorkingDirectory: serialized.relativeWorkingDirectory,\n });\n }\n}\n"]}
|
package/dist/BuildStepEnv.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildStepEnv.js","sourceRoot":"","sources":["../src/BuildStepEnv.ts"],"names":[],"mappings":"","sourcesContent":["export type BuildStepEnv = Record<string, string | undefined>;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildStepInput.js","sourceRoot":"","sources":["../src/BuildStepInput.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { JobInterpolationContext } from '@expo/eas-build-job';\n\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStepRuntimeError } from './errors';\nimport {\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n interpolateWithOutputs,\n} from './utils/template';\nimport { interpolateJobContext } from './interpolation';\n\nexport enum BuildStepInputValueTypeName {\n STRING = 'string',\n BOOLEAN = 'boolean',\n NUMBER = 'number',\n JSON = 'json',\n}\n\nexport type BuildStepInputValueType<\n T extends BuildStepInputValueTypeName = BuildStepInputValueTypeName,\n> = T extends BuildStepInputValueTypeName.STRING\n ? string\n : T extends BuildStepInputValueTypeName.BOOLEAN\n ? boolean\n : T extends BuildStepInputValueTypeName.NUMBER\n ? number\n : Record<string, unknown>;\n\nexport type BuildStepInputById = Record<string, BuildStepInput>;\nexport type BuildStepInputProvider = (\n ctx: BuildStepGlobalContext,\n stepId: string\n) => BuildStepInput;\n\ninterface BuildStepInputProviderParams<\n T extends BuildStepInputValueTypeName = BuildStepInputValueTypeName,\n R extends boolean = boolean,\n> {\n id: string;\n allowedValues?: unknown[];\n defaultValue?: unknown;\n required: R;\n allowedValueTypeName: T;\n}\n\ninterface BuildStepInputParams<T extends BuildStepInputValueTypeName, R extends boolean>\n extends BuildStepInputProviderParams<T, R> {\n stepDisplayName: string;\n}\n\nexport class BuildStepInput<\n T extends BuildStepInputValueTypeName = BuildStepInputValueTypeName,\n R extends boolean = boolean,\n> {\n public readonly id: string;\n public readonly stepDisplayName: string;\n public readonly defaultValue?: unknown;\n public readonly allowedValues?: unknown[];\n public readonly allowedValueTypeName: T;\n public readonly required: R;\n\n private _value?: unknown;\n\n public static createProvider(params: BuildStepInputProviderParams): BuildStepInputProvider {\n return (ctx, stepDisplayName) => new BuildStepInput(ctx, { ...params, stepDisplayName });\n }\n\n constructor(\n private readonly ctx: BuildStepGlobalContext,\n {\n id,\n stepDisplayName,\n allowedValues,\n defaultValue,\n required,\n allowedValueTypeName,\n }: BuildStepInputParams<T, R>\n ) {\n this.id = id;\n this.stepDisplayName = stepDisplayName;\n this.allowedValues = allowedValues;\n this.defaultValue = defaultValue;\n this.required = required;\n this.allowedValueTypeName = allowedValueTypeName;\n }\n\n public getValue({\n interpolationContext,\n }: {\n interpolationContext: JobInterpolationContext;\n }): R extends true ? BuildStepInputValueType<T> : BuildStepInputValueType<T> | undefined {\n const rawValue = this._value ?? this.defaultValue;\n if (this.required && rawValue === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" is required but it was not set.`\n );\n }\n\n const interpolatedValue = interpolateJobContext({\n target: rawValue,\n context: interpolationContext,\n });\n\n const valueDoesNotRequireInterpolation =\n interpolatedValue === undefined ||\n interpolatedValue === null ||\n typeof interpolatedValue === 'boolean' ||\n typeof interpolatedValue === 'number';\n let returnValue;\n if (valueDoesNotRequireInterpolation) {\n if (\n typeof interpolatedValue !== this.allowedValueTypeName &&\n interpolatedValue !== undefined\n ) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" must be of type \"${this.allowedValueTypeName}\".`\n );\n }\n returnValue = interpolatedValue as BuildStepInputValueType<T>;\n } else {\n // `valueDoesNotRequireInterpolation` checks that `rawValue` is not undefined\n // so this will never be true.\n assert(interpolatedValue !== undefined);\n const valueInterpolatedWithGlobalContext = this.ctx.interpolate(interpolatedValue);\n const valueInterpolatedWithOutputsAndGlobalContext = interpolateWithOutputs(\n valueInterpolatedWithGlobalContext,\n (path) => this.ctx.getStepOutputValue(path) ?? ''\n );\n returnValue = this.parseInputValueToAllowedType(valueInterpolatedWithOutputsAndGlobalContext);\n }\n return returnValue;\n }\n\n public get rawValue(): unknown {\n return this._value ?? this.defaultValue;\n }\n\n public set(value: unknown): BuildStepInput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" is required.`\n );\n }\n\n this._value = value;\n return this;\n }\n\n public isRawValueOneOfAllowedValues(): boolean {\n const value = this._value ?? this.defaultValue;\n if (this.allowedValues === undefined || value === undefined) {\n return true;\n }\n return this.allowedValues.includes(value);\n }\n\n public isRawValueStepOrContextReference(): boolean {\n return (\n typeof this.rawValue === 'string' &&\n (!!BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX.exec(this.rawValue) ||\n // If value is an interpolation reference we're going to render whatever it evaluates to.\n // See `interpolateJobContext`.\n (this.rawValue.startsWith('${{') && this.rawValue.endsWith('}}')))\n );\n }\n\n private parseInputValueToAllowedType(\n value: string | object | boolean | number\n ): BuildStepInputValueType<T> {\n if (typeof value === 'object') {\n return value as BuildStepInputValueType<T>;\n }\n if (this.allowedValueTypeName === BuildStepInputValueTypeName.STRING) {\n return this.parseInputValueToString(value) as BuildStepInputValueType<T>;\n } else if (this.allowedValueTypeName === BuildStepInputValueTypeName.NUMBER) {\n return this.parseInputValueToNumber(value) as BuildStepInputValueType<T>;\n } else if (this.allowedValueTypeName === BuildStepInputValueTypeName.BOOLEAN) {\n return this.parseInputValueToBoolean(value) as BuildStepInputValueType<T>;\n } else {\n return this.parseInputValueToObject(value) as BuildStepInputValueType<T>;\n }\n }\n\n private parseInputValueToString(value: string | boolean | number): string {\n let parsedValue = value;\n try {\n parsedValue = JSON.parse(`\"${value}\"`);\n } catch (err) {\n if (!(err instanceof SyntaxError)) {\n throw err;\n }\n }\n return parsedValue as string;\n }\n\n private parseInputValueToNumber(value: string | boolean | number): number {\n const numberValue = Number(value);\n if (Number.isNaN(numberValue)) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" must be of type \"${this.allowedValueTypeName}\".`\n );\n }\n return numberValue;\n }\n\n private parseInputValueToBoolean(value: string | boolean | number): boolean {\n if (value === 'true' || value === true) {\n return true;\n } else if (value === 'false' || value === false) {\n return false;\n } else {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" must be of type \"${this.allowedValueTypeName}\".`\n );\n }\n }\n\n private parseInputValueToObject(value: string | boolean | number): Record<string, any> {\n try {\n return JSON.parse(value as string);\n } catch (e: any) {\n throw new BuildStepRuntimeError(\n `Input parameter \"${this.id}\" for step \"${this.stepDisplayName}\" must be of type \"${this.allowedValueTypeName}\".`,\n {\n cause: e,\n }\n );\n }\n }\n}\n\nexport function makeBuildStepInputByIdMap(inputs?: BuildStepInput[]): BuildStepInputById {\n if (inputs === undefined) {\n return {};\n }\n return inputs.reduce((acc, input) => {\n acc[input.id] = input;\n return acc;\n }, {} as BuildStepInputById);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildStepOutput.js","sourceRoot":"","sources":["../src/BuildStepOutput.ts"],"names":[],"mappings":";;;AA8FA,gEAQC;AArGD,qCAAiD;AA6BjD,MAAa,eAAe;IAOnB,MAAM,CAAC,cAAc,CAAC,MAAqC;QAChE,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;IACE,wFAAwF;IACvE,GAAuC,EACxD,EAAE,EAAE,EAAE,eAAe,EAAE,QAAQ,EAA4B;QAD1C,QAAG,GAAH,GAAG,CAAoC;QAGxD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK;QACd,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,8BAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,eAAe,mCAAmC,CACnG,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAqC,CAAC;IACpD,CAAC;IAEM,GAAG,CAAC,KAAkC;QAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,8BAAqB,CAC7B,qBAAqB,IAAI,CAAC,EAAE,eAAe,IAAI,CAAC,eAAe,gBAAgB,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS;QACd,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,UAAqC;QAC7D,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,SAAS,EAAE;YAClD,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,eAAe,EAAE,UAAU,CAAC,eAAe;YAC3C,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAC;QACH,YAAY,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QACvC,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AA9DD,0CA8DC;AAED,SAAgB,0BAA0B,CAAC,OAA2B;IACpE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAyB,CAAC,CAAC;AAChC,CAAC","sourcesContent":["import { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStepRuntimeError } from './errors';\n\nexport type BuildStepOutputById = Record<string, BuildStepOutput>;\nexport type BuildStepOutputProvider = (\n ctx: BuildStepGlobalContext,\n stepDisplayName: string\n) => BuildStepOutput;\n\ninterface BuildStepOutputProviderParams<R extends boolean = boolean> {\n id: string;\n required: R;\n}\n\ninterface BuildStepOutputParams<R extends boolean = boolean>\n extends BuildStepOutputProviderParams<R> {\n stepDisplayName: string;\n}\n\ntype BuildStepOutputValueType<R extends boolean = boolean> = R extends true\n ? string\n : string | undefined;\n\nexport interface SerializedBuildStepOutput<R extends boolean = boolean> {\n id: string;\n stepDisplayName: string;\n required: R;\n value?: string;\n}\n\nexport class BuildStepOutput<R extends boolean = boolean> {\n public readonly id: string;\n public readonly stepDisplayName: string;\n public readonly required: R;\n\n private _value?: string;\n\n public static createProvider(params: BuildStepOutputProviderParams): BuildStepOutputProvider {\n return (ctx, stepDisplayName) => new BuildStepOutput(ctx, { ...params, stepDisplayName });\n }\n\n constructor(\n // @ts-expect-error ctx is not used in this class but let's keep it here for consistency\n private readonly ctx: BuildStepGlobalContext | undefined,\n { id, stepDisplayName, required }: BuildStepOutputParams<R>\n ) {\n this.id = id;\n this.stepDisplayName = stepDisplayName;\n this.required = required;\n }\n\n public get rawValue(): string | undefined {\n return this._value;\n }\n\n public get value(): BuildStepOutputValueType<R> {\n if (this.required && this._value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepDisplayName}\" is required but it was not set.`\n );\n }\n return this._value as BuildStepOutputValueType<R>;\n }\n\n public set(value: BuildStepOutputValueType<R>): BuildStepOutput {\n if (this.required && value === undefined) {\n throw new BuildStepRuntimeError(\n `Output parameter \"${this.id}\" for step \"${this.stepDisplayName}\" is required.`\n );\n }\n this._value = value;\n return this;\n }\n\n public serialize(): SerializedBuildStepOutput {\n return {\n id: this.id,\n stepDisplayName: this.stepDisplayName,\n required: this.required,\n value: this._value,\n };\n }\n\n public static deserialize(serialized: SerializedBuildStepOutput): BuildStepOutput {\n const deserialized = new BuildStepOutput(undefined, {\n id: serialized.id,\n stepDisplayName: serialized.stepDisplayName,\n required: serialized.required,\n });\n deserialized._value = serialized.value;\n return deserialized;\n }\n}\n\nexport function makeBuildStepOutputByIdMap(outputs?: BuildStepOutput[]): BuildStepOutputById {\n if (outputs === undefined) {\n return {};\n }\n return outputs.reduce((acc, output) => {\n acc[output.id] = output;\n return acc;\n }, {} as BuildStepOutputById);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildTemporaryFiles.js","sourceRoot":"","sources":["../src/BuildTemporaryFiles.ts"],"names":[],"mappings":";;;;;AAOA,wEAUC;AAED,oFAUC;AAUD,gEAEC;AAED,0DAEC;AA7CD,gDAAwB;AACxB,2DAA6B;AAE7B,+BAAoC;AAI7B,KAAK,UAAU,8BAA8B,CAClD,GAA2B,EAC3B,MAAc,EACd,cAAsB;IAEtB,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,kBAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,mBAAmB,GAAG,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAA,SAAM,GAAE,KAAK,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACxD,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAEM,KAAK,UAAU,oCAAoC,CACxD,GAA2B,EAC3B,MAAc;IAEd,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,kBAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,sBAAsB,EAAE,EAAE,kCAAkC,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IAC1E,OAAO,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IAC7E,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,0BAA0B,CAAC,GAA2B,EAAE,MAAc;IACpF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC;AAED,SAAgB,uBAAuB,CAAC,GAA2B,EAAE,MAAc;IACjF,OAAO,cAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs/promises';\n\nimport { v4 as uuidv4 } from 'uuid';\n\nimport { BuildStepGlobalContext } from './BuildStepContext';\n\nexport async function saveScriptToTemporaryFileAsync(\n ctx: BuildStepGlobalContext,\n stepId: string,\n scriptContents: string\n): Promise<string> {\n const scriptsDir = getTemporaryScriptsDirPath(ctx, stepId);\n await fs.mkdir(scriptsDir, { recursive: true });\n const temporaryScriptPath = path.join(scriptsDir, `${uuidv4()}.sh`);\n await fs.writeFile(temporaryScriptPath, scriptContents);\n return temporaryScriptPath;\n}\n\nexport async function cleanUpStepTemporaryDirectoriesAsync(\n ctx: BuildStepGlobalContext,\n stepId: string\n): Promise<void> {\n if (ctx.skipCleanup) {\n return;\n }\n const stepTemporaryDirectory = getTemporaryStepDirPath(ctx, stepId);\n await fs.rm(stepTemporaryDirectory, { recursive: true, force: true });\n ctx.baseLogger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');\n}\n\nfunction getTemporaryStepDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(ctx.stepsInternalBuildDirectory, 'steps', stepId);\n}\n\nfunction getTemporaryScriptsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'scripts');\n}\n\nexport function getTemporaryOutputsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');\n}\n\nexport function getTemporaryEnvsDirPath(ctx: BuildStepGlobalContext, stepId: string): string {\n return path.join(getTemporaryStepDirPath(ctx, stepId), 'envs');\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildWorkflow.js","sourceRoot":"","sources":["../src/BuildWorkflow.ts"],"names":[],"mappings":";;;AAKA,MAAa,aAAa;IAIxB,YACmB,GAA2B,EAC5C,EAAE,UAAU,EAAE,cAAc,EAAkE;QAD7E,QAAG,GAAH,GAAG,CAAwB;QAG5C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,YAAY;QACvB,IAAI,UAAU,GAAiB,IAAI,CAAC;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC;gBACH,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CACnB,wDAAwD,IAAI,CAAC,WAAW,iCAAiC,IAAI,CAAC,WAAW,4JAA4J,CACtR,CAAC;gBACF,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,GAAG,CAAC;gBAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,CAAC;YAED,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBACpC,IAAI,UAA4B,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC1B,UAAU,GAAG,SAAS,CAAC;gBACzB,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,UAAU,GAAG,QAAQ,CAAC;oBACtB,UAAU,GAAG,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,GAAG,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC1B,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAW,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC;QACH,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,UAAU,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,IAAe,EAAE,MAAwB,EAAE,UAAkB;QACtF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC;YACrB,SAAS,EAAE,IAAI,CAAC,WAAW;YAC3B,MAAM;YACN,UAAU;SACX,CAAC,CAAC;IACL,CAAC;CACF;AA9DD,sCA8DC","sourcesContent":["import { BuildFunctionById } from './BuildFunction';\nimport { BuildStep } from './BuildStep';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { StepMetricResult } from './StepMetrics';\n\nexport class BuildWorkflow {\n public readonly buildSteps: BuildStep[];\n public readonly buildFunctions: BuildFunctionById;\n\n constructor(\n private readonly ctx: BuildStepGlobalContext,\n { buildSteps, buildFunctions }: { buildSteps: BuildStep[]; buildFunctions: BuildFunctionById }\n ) {\n this.buildSteps = buildSteps;\n this.buildFunctions = buildFunctions;\n }\n\n public async executeAsync(): Promise<void> {\n let maybeError: Error | null = null;\n for (const step of this.buildSteps) {\n let shouldExecuteStep = false;\n\n try {\n shouldExecuteStep = step.shouldExecuteStep();\n } catch (err: any) {\n step.ctx.logger.error({ err });\n step.ctx.logger.error(\n `Runner failed to evaluate if it should execute step \"${step.displayName}\", using step's if condition \"${step.ifCondition}\". This can be caused by trying to access non-existing object property. If you think this is a bug report it here: https://github.com/expo/eas-cli/issues.`\n );\n maybeError = maybeError ?? err;\n this.ctx.markAsFailed();\n }\n\n if (shouldExecuteStep) {\n const startTime = performance.now();\n let stepResult: StepMetricResult;\n try {\n await step.executeAsync();\n stepResult = 'success';\n } catch (err: any) {\n stepResult = 'failed';\n maybeError = maybeError ?? err;\n this.ctx.markAsFailed();\n } finally {\n this.collectStepMetrics(step, stepResult!, performance.now() - startTime);\n }\n } else {\n step.skip();\n }\n }\n\n if (maybeError) {\n throw maybeError;\n }\n }\n\n private collectStepMetrics(step: BuildStep, result: StepMetricResult, durationMs: number): void {\n if (!step.__metricsId) {\n return;\n }\n\n this.ctx.addStepMetric({\n metricsId: step.__metricsId,\n result,\n durationMs,\n });\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BuildWorkflowValidator.js","sourceRoot":"","sources":["../src/BuildWorkflowValidator.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport fs from 'fs-extra';\n\nimport { BuildStep } from './BuildStep';\nimport { BuildStepInputValueTypeName } from './BuildStepInput';\nimport { BuildWorkflow } from './BuildWorkflow';\nimport { BuildConfigError, BuildWorkflowError } from './errors';\nimport { duplicates } from './utils/expodash/duplicates';\nimport { nullthrows } from './utils/nullthrows';\nimport { findOutputPaths } from './utils/template';\n\nexport class BuildWorkflowValidator {\n constructor(private readonly workflow: BuildWorkflow) {}\n\n public async validateAsync(): Promise<void> {\n const errors: BuildConfigError[] = [];\n errors.push(...this.validateUniqueStepIds());\n errors.push(...this.validateInputs());\n errors.push(...this.validateAllowedPlatforms());\n errors.push(...(await this.validateCustomFunctionModulesAsync()));\n if (errors.length !== 0) {\n throw new BuildWorkflowError('Build workflow is invalid.', errors);\n }\n }\n\n private validateUniqueStepIds(): BuildConfigError[] {\n const stepIds = this.workflow.buildSteps.map(({ id }) => id);\n const duplicatedStepIds = duplicates(stepIds);\n if (duplicatedStepIds.length === 0) {\n return [];\n } else {\n const error = new BuildConfigError(\n `Duplicated step IDs: ${duplicatedStepIds.map((i) => `\"${i}\"`).join(', ')}`\n );\n return [error];\n }\n }\n\n private validateInputs(): BuildConfigError[] {\n const errors: BuildConfigError[] = [];\n\n const allStepIds = new Set(this.workflow.buildSteps.map((s) => s.id));\n const visitedStepByStepId: Record<string, BuildStep> = {};\n for (const currentStep of this.workflow.buildSteps) {\n for (const currentStepInput of currentStep.inputs ?? []) {\n if (currentStepInput.required && currentStepInput.rawValue === undefined) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" is required but it was not set.`\n );\n errors.push(error);\n }\n\n const currentType =\n typeof currentStepInput.rawValue === 'object'\n ? BuildStepInputValueTypeName.JSON\n : typeof currentStepInput.rawValue;\n if (\n currentStepInput.rawValue !== undefined &&\n !currentStepInput.isRawValueStepOrContextReference() &&\n currentType !== currentStepInput.allowedValueTypeName\n ) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${\n currentStep.displayName\n }\" is set to \"${\n typeof currentStepInput.rawValue === 'object'\n ? JSON.stringify(currentStepInput.rawValue)\n : currentStepInput.rawValue\n }\" which is not of type \"${\n currentStepInput.allowedValueTypeName\n }\" or is not step or context reference.`\n );\n errors.push(error);\n }\n\n if (currentStepInput.defaultValue === undefined) {\n continue;\n }\n if (!currentStepInput.isRawValueOneOfAllowedValues()) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${\n currentStep.displayName\n }\" is set to \"${currentStepInput.rawValue}\" which is not one of the allowed values: ${nullthrows(\n currentStepInput.allowedValues\n )\n .map((i) => `\"${i}\"`)\n .join(', ')}.`\n );\n errors.push(error);\n }\n const paths =\n typeof currentStepInput.defaultValue === 'string'\n ? findOutputPaths(currentStepInput.defaultValue)\n : [];\n for (const { stepId: referencedStepId, outputId: referencedStepOutputId } of paths) {\n if (!(referencedStepId in visitedStepByStepId)) {\n if (allStepIds.has(referencedStepId)) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an output parameter from the future step \"${referencedStepId}\".`\n );\n errors.push(error);\n } else {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an output parameter from a non-existent step \"${referencedStepId}\".`\n );\n errors.push(error);\n }\n } else {\n if (!visitedStepByStepId[referencedStepId].hasOutputParameter(referencedStepOutputId)) {\n const error = new BuildConfigError(\n `Input parameter \"${currentStepInput.id}\" for step \"${currentStep.displayName}\" uses an expression that references an undefined output parameter \"${referencedStepOutputId}\" from step \"${referencedStepId}\".`\n );\n errors.push(error);\n }\n }\n }\n }\n visitedStepByStepId[currentStep.id] = currentStep;\n }\n\n return errors;\n }\n\n private validateAllowedPlatforms(): BuildConfigError[] {\n const errors: BuildConfigError[] = [];\n for (const step of this.workflow.buildSteps) {\n if (!step.canBeRunOnRuntimePlatform()) {\n const error = new BuildConfigError(\n `Step \"${step.displayName}\" is not allowed on platform \"${\n step.ctx.global.runtimePlatform\n }\". Allowed platforms for this step are: ${nullthrows(\n step.supportedRuntimePlatforms,\n `step.supportedRuntimePlatforms can't be falsy if canBeRunOnRuntimePlatform() is false`\n )\n .map((p) => `\"${p}\"`)\n .join(', ')}.`\n );\n errors.push(error);\n }\n }\n return errors;\n }\n\n private async validateCustomFunctionModulesAsync(): Promise<BuildConfigError[]> {\n const errors: BuildConfigError[] = [];\n for (const buildFunction of Object.values(this.workflow.buildFunctions)) {\n if (!buildFunction.customFunctionModulePath) {\n continue;\n }\n\n if (!(await fs.exists(buildFunction.customFunctionModulePath))) {\n const error = new BuildConfigError(\n `Custom function module path \"${buildFunction.customFunctionModulePath}\" for function \"${buildFunction.id}\" does not exist.`\n );\n errors.push(error);\n continue;\n }\n\n if (!(await fs.exists(path.join(buildFunction.customFunctionModulePath, 'package.json')))) {\n const error = new BuildConfigError(\n `Custom function module path \"${buildFunction.customFunctionModulePath}\" for function \"${buildFunction.id}\" does not contain a package.json file.`\n );\n errors.push(error);\n }\n }\n return errors;\n }\n}\n"]}
|
package/dist/StepMetrics.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StepMetrics.js","sourceRoot":"","sources":["../src/StepMetrics.ts"],"names":[],"mappings":"","sourcesContent":["export type StepMetricResult = 'success' | 'failed';\n\nexport type StepMetricInput = {\n metricsId: string;\n result: StepMetricResult;\n durationMs: number;\n};\n\nexport type StepMetric = StepMetricInput & {\n platform: 'darwin' | 'linux';\n};\n\nexport type StepMetricsCollection = StepMetric[];\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StepsConfigParser.js","sourceRoot":"","sources":["../src/StepsConfigParser.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert';\n\nimport {\n FunctionStep,\n isStepFunctionStep,\n isStepShellStep,\n ShellStep,\n Step,\n validateSteps,\n} from '@expo/eas-build-job';\n\nimport { BuildFunction, BuildFunctionById } from './BuildFunction';\nimport {\n BuildFunctionGroup,\n BuildFunctionGroupById,\n createBuildFunctionGroupByIdMapping,\n} from './BuildFunctionGroup';\nimport { BuildStepGlobalContext } from './BuildStepContext';\nimport { BuildStep } from './BuildStep';\nimport { AbstractConfigParser } from './AbstractConfigParser';\nimport { BuildConfigError } from './errors';\nimport { BuildStepOutput } from './BuildStepOutput';\n\nexport class StepsConfigParser extends AbstractConfigParser {\n private readonly steps: Step[];\n\n constructor(\n ctx: BuildStepGlobalContext,\n {\n steps,\n externalFunctions,\n externalFunctionGroups,\n }: {\n steps: Step[];\n externalFunctions?: BuildFunction[];\n externalFunctionGroups?: BuildFunctionGroup[];\n }\n ) {\n super(ctx, {\n externalFunctions,\n externalFunctionGroups,\n });\n\n this.steps = steps;\n }\n\n protected async parseConfigToBuildStepsAndBuildFunctionByIdMappingAsync(): Promise<{\n buildSteps: BuildStep[];\n buildFunctionById: BuildFunctionById;\n }> {\n const validatedSteps = validateSteps(this.steps);\n StepsConfigParser.validateAllFunctionsExist(validatedSteps, {\n externalFunctionIds: this.getExternalFunctionFullIds(),\n externalFunctionGroupIds: this.getExternalFunctionGroupFullIds(),\n });\n\n const buildFunctionById = this.createBuildFunctionByIdMappingForExternalFunctions();\n const buildFunctionGroupById = createBuildFunctionGroupByIdMapping(\n this.externalFunctionGroups ?? []\n );\n\n const buildSteps: BuildStep[] = [];\n for (const stepConfig of validatedSteps) {\n buildSteps.push(\n ...this.createBuildStepsFromStepConfig(stepConfig, {\n buildFunctionById,\n buildFunctionGroupById,\n })\n );\n }\n\n return {\n buildSteps,\n buildFunctionById,\n };\n }\n\n private createBuildFunctionByIdMappingForExternalFunctions(): BuildFunctionById {\n const result: BuildFunctionById = {};\n\n if (this.externalFunctions === undefined) {\n return result;\n }\n\n for (const buildFunction of this.externalFunctions) {\n const fullId = buildFunction.getFullId();\n result[fullId] = buildFunction;\n }\n return result;\n }\n\n private createBuildStepsFromStepConfig(\n stepConfig: Step,\n {\n buildFunctionById,\n buildFunctionGroupById,\n }: {\n buildFunctionById: BuildFunctionById;\n buildFunctionGroupById: BuildFunctionGroupById;\n }\n ): BuildStep[] {\n if (isStepShellStep(stepConfig)) {\n return [this.createBuildStepFromShellStepConfig(stepConfig)];\n } else if (isStepFunctionStep(stepConfig)) {\n return this.createBuildStepsFromFunctionStepConfig(stepConfig, {\n buildFunctionById,\n buildFunctionGroupById,\n });\n } else {\n throw new BuildConfigError(\n 'Invalid job step configuration detected. Step must be shell or function step'\n );\n }\n }\n\n private createBuildStepFromShellStepConfig(step: ShellStep): BuildStep {\n const id = BuildStep.getNewId(step.id);\n const displayName = BuildStep.getDisplayName({ id, name: step.name, command: step.run });\n const outputs =\n step.outputs && this.createBuildStepOutputsFromDefinition(step.outputs, displayName);\n return new BuildStep(this.ctx, {\n id,\n outputs,\n name: step.name,\n displayName,\n workingDirectory: step.working_directory,\n shell: step.shell,\n command: step.run,\n env: step.env,\n ifCondition: step.if,\n __metricsId: step.__metrics_id,\n });\n }\n\n private createBuildStepsFromFunctionStepConfig(\n step: FunctionStep,\n {\n buildFunctionById,\n buildFunctionGroupById,\n }: {\n buildFunctionById: BuildFunctionById;\n buildFunctionGroupById: BuildFunctionGroupById;\n }\n ): BuildStep[] {\n const functionId = step.uses;\n const maybeFunctionGroup = buildFunctionGroupById[functionId];\n if (maybeFunctionGroup) {\n // TODO: allow to set id, name, working_directory, shell, env and if for function groups\n return maybeFunctionGroup.createBuildStepsFromFunctionGroupCall(this.ctx, {\n callInputs: step.with,\n });\n }\n\n const buildFunction = buildFunctionById[functionId];\n assert(buildFunction, 'function ID must be ID of function or function group');\n\n return [\n buildFunction.createBuildStepFromFunctionCall(this.ctx, {\n id: step.id,\n name: step.name,\n callInputs: step.with,\n workingDirectory: step.working_directory,\n shell: step.shell,\n env: step.env,\n ifCondition: step.if,\n }),\n ];\n }\n\n private createBuildStepOutputsFromDefinition(\n stepOutputs: Required<ShellStep>['outputs'],\n stepDisplayName: string\n ): BuildStepOutput[] {\n return stepOutputs.map(\n (entry) =>\n new BuildStepOutput(this.ctx, {\n id: entry.name,\n stepDisplayName,\n required: entry.required ?? true,\n })\n );\n }\n\n private static validateAllFunctionsExist(\n steps: Step[],\n {\n externalFunctionIds,\n externalFunctionGroupIds,\n }: {\n externalFunctionIds: string[];\n externalFunctionGroupIds: string[];\n }\n ): void {\n const calledFunctionsOrFunctionGroupsSet = new Set<string>();\n for (const step of steps) {\n if (step.uses) {\n calledFunctionsOrFunctionGroupsSet.add(step.uses);\n }\n }\n const calledFunctionsOrFunctionGroup = Array.from(calledFunctionsOrFunctionGroupsSet);\n const externalFunctionIdsSet = new Set(externalFunctionIds);\n const externalFunctionGroupsIdsSet = new Set(externalFunctionGroupIds);\n const nonExistentFunctionsOrFunctionGroups = calledFunctionsOrFunctionGroup.filter(\n (calledFunctionOrFunctionGroup) => {\n return (\n !externalFunctionIdsSet.has(calledFunctionOrFunctionGroup) &&\n !externalFunctionGroupsIdsSet.has(calledFunctionOrFunctionGroup)\n );\n }\n );\n if (nonExistentFunctionsOrFunctionGroups.length > 0) {\n throw new BuildConfigError(\n `Calling non-existent functions: ${nonExistentFunctionsOrFunctionGroups\n .map((f) => `\"${f}\"`)\n .join(', ')}.`\n );\n }\n }\n}\n"]}
|
package/dist/cli/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Job, Metadata, StaticJobInterpolationContext } from '@expo/eas-build-job';\nimport { bunyan, createLogger } from '@expo/logger';\n\nimport { BuildConfigParser } from '../BuildConfigParser';\nimport { ExternalBuildContextProvider, BuildStepGlobalContext } from '../BuildStepContext';\nimport { BuildWorkflowError } from '../errors';\nimport { BuildRuntimePlatform } from '../BuildRuntimePlatform';\nimport { BuildStepEnv } from '../BuildStepEnv';\n\nconst logger = createLogger({\n name: 'steps-cli',\n level: 'info',\n});\n\nexport class CliContextProvider implements ExternalBuildContextProvider {\n private _env: BuildStepEnv = {};\n\n constructor(\n public readonly logger: bunyan,\n public readonly runtimePlatform: BuildRuntimePlatform,\n public readonly projectSourceDirectory: string,\n public readonly projectTargetDirectory: string,\n public readonly defaultWorkingDirectory: string,\n public readonly buildLogsDirectory: string\n ) {}\n public get env(): BuildStepEnv {\n return this._env;\n }\n public staticContext(): Omit<StaticJobInterpolationContext, 'steps'> {\n return {\n job: {} as Job,\n metadata: {} as Metadata,\n expoApiServerURL: 'http://api.expo.test',\n };\n }\n public updateEnv(env: BuildStepEnv): void {\n this._env = env;\n }\n}\n\nasync function runAsync(\n configPath: string,\n relativeProjectDirectory: string,\n runtimePlatform: BuildRuntimePlatform\n): Promise<void> {\n const ctx = new BuildStepGlobalContext(\n new CliContextProvider(\n logger,\n runtimePlatform,\n relativeProjectDirectory,\n relativeProjectDirectory,\n relativeProjectDirectory,\n relativeProjectDirectory\n ),\n false\n );\n const parser = new BuildConfigParser(ctx, {\n configPath,\n });\n const workflow = await parser.parseAsync();\n await workflow.executeAsync();\n}\n\nconst relativeConfigPath = process.argv[2];\nconst relativeProjectDirectoryPath = process.argv[3];\nconst platform: BuildRuntimePlatform = (process.argv[4] ??\n process.platform) as BuildRuntimePlatform;\n\nif (!relativeConfigPath || !relativeProjectDirectoryPath) {\n console.error('Usage: yarn cli config.yml path/to/project/directory [darwin|linux]');\n process.exit(1);\n}\n\nconst configPath = path.resolve(process.cwd(), relativeConfigPath);\nconst workingDirectory = path.resolve(process.cwd(), relativeProjectDirectoryPath);\n\nrunAsync(configPath, workingDirectory, platform).catch((err) => {\n logger.error({ err }, 'Build failed');\n if (err instanceof BuildWorkflowError) {\n logger.error('Failed to parse the custom build config file.');\n for (const detailedErr of err.errors) {\n logger.error({ err: detailedErr });\n }\n }\n});\n"]}
|
package/dist/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAe,SAAU,SAAQ,KAAK;IAIpC,YAC2B,OAAe,EACxC,KAGC;;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QANU,YAAO,GAAP,OAAO,CAAQ;QAOxC,IAAI,CAAC,QAAQ,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,mCAAI,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAC;IAC5B,CAAC;CACF;AAED,MAAa,gBAAiB,SAAQ,SAAS;CAAG;AAAlD,4CAAkD;AAElD,6BAA8D;AAArD,4GAAA,cAAc,OAAwB;AAE/C,MAAa,kBAAmB,SAAQ,KAAK;CAAG;AAAhD,gDAAgD;AAEhD,MAAa,qBAAsB,SAAQ,SAAS;CAAG;AAAvD,sDAAuD;AAEvD,MAAa,kBAAmB,SAAQ,SAAS;IAC/C,YAC2B,OAAe,EACxB,MAA0B,EAC1C,KAGC;QAED,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAPG,YAAO,GAAP,OAAO,CAAQ;QACxB,WAAM,GAAN,MAAM,CAAoB;IAO5C,CAAC;CACF;AAXD,gDAWC","sourcesContent":["abstract class UserError extends Error {\n public readonly cause?: Error;\n public readonly metadata: object;\n\n constructor(\n public override readonly message: string,\n extra?: {\n metadata?: object;\n cause?: Error;\n }\n ) {\n super(message);\n this.metadata = extra?.cause ?? {};\n this.cause = extra?.cause;\n }\n}\n\nexport class BuildConfigError extends UserError {}\n\nexport { YAMLParseError as BuildConfigYAMLError } from 'yaml';\n\nexport class BuildInternalError extends Error {}\n\nexport class BuildStepRuntimeError extends UserError {}\n\nexport class BuildWorkflowError extends UserError {\n constructor(\n public override readonly message: string,\n public readonly errors: BuildConfigError[],\n extra?: {\n metadata?: object;\n cause?: Error;\n }\n ) {\n super(message, extra);\n }\n}\n"]}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,6CAAwE;AAA/D,sIAAA,uCAAuC,OAAA;AAChD,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mDAA+E;AAAtE,gHAAA,cAAc,OAAA;AAAE,6HAAA,2BAA2B,OAAA;AACpD,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,uDAA0F;AAAjF,0HAAA,sBAAsB,OAAA;AAC/B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AAEtB,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,mDAAmC;AACnC,kDAAgC;AAChC,sDAAoC;AACpC,mDAAiC;AACjC,oDAAkC","sourcesContent":["export { BuildStepContext } from './BuildStepContext';\nexport { readAndValidateBuildConfigFromPathAsync } from './BuildConfig';\nexport { BuildConfigParser } from './BuildConfigParser';\nexport { StepsConfigParser } from './StepsConfigParser';\nexport { BuildFunction } from './BuildFunction';\nexport { BuildRuntimePlatform } from './BuildRuntimePlatform';\nexport { BuildStepInput, BuildStepInputValueTypeName } from './BuildStepInput';\nexport { BuildStepOutput } from './BuildStepOutput';\nexport { BuildStepGlobalContext, ExternalBuildContextProvider } from './BuildStepContext';\nexport { BuildWorkflow } from './BuildWorkflow';\nexport { BuildStepEnv } from './BuildStepEnv';\nexport { BuildFunctionGroup } from './BuildFunctionGroup';\nexport { BuildStep } from './BuildStep';\nexport * as errors from './errors';\nexport * from './interpolation';\nexport * from './utils/shell/spawn';\nexport * from './utils/jsepEval';\nexport * from './utils/hashFiles';\nexport { StepMetric, StepMetricResult, StepMetricsCollection } from './StepMetrics';\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interpolation.js","sourceRoot":"","sources":["../src/interpolation.ts"],"names":[],"mappings":";;AAIA,sDA8BC;AAhCD,+CAA4C;AAE5C,SAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,GAIR;IACC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,mFAAmF;QACnF,0GAA0G;QAC1G,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,IAAA,mBAAQ,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,wFAAwF;QACxF,8DAA8D;QAC9D,OAAO,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;YAC/D,OAAO,GAAG,IAAA,mBAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;YAC3C,GAAG;YACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;SAClD,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { JobInterpolationContext } from '@expo/eas-build-job';\n\nimport { jsepEval } from './utils/jsepEval';\n\nexport function interpolateJobContext({\n target,\n context,\n}: {\n target: unknown;\n context: JobInterpolationContext;\n}): unknown {\n if (typeof target === 'string') {\n // If the value is e.g. `build: ${{ inputs.build }}`, we will interpolate the value\n // without changing `inputs.build` type, i.e. if it is an object it'll be like `build: {...inputs.build}`.\n if (target.startsWith('${{') && target.endsWith('}}')) {\n return jsepEval(target.slice(3, -2), context);\n }\n\n // Otherwise we replace all occurrences of `${{...}}` with the result of the expression.\n // e.g. `echo ${{ build.profile }}` becomes `echo production`.\n return target.replace(/\\$\\{\\{(.+?)\\}\\}/g, (_match, expression) => {\n return `${jsepEval(expression, context)}`;\n });\n } else if (Array.isArray(target)) {\n return target.map((value) => interpolateJobContext({ target: value, context }));\n } else if (typeof target === 'object' && target) {\n return Object.fromEntries(\n Object.entries(target).map(([key, value]) => [\n key,\n interpolateJobContext({ target: value, context }),\n ])\n );\n }\n return target;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runCustomFunction.js","sourceRoot":"","sources":["../../src/scripts/runCustomFunction.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { createLogger } from '@expo/logger';\nimport { SpawnPromise, SpawnResult } from '@expo/spawn-async';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { BuildStepOutput } from '../BuildStepOutput';\nimport { SerializedCustomBuildFunctionArguments, deserializeInputs } from '../utils/customFunction';\nimport { BuildStepContext } from '../BuildStepContext';\nimport { BuildStepFunction } from '../BuildStep';\nimport { spawnAsync } from '../utils/shell/spawn';\n\nasync function runCustomJsFunctionAsync(): Promise<void> {\n const customJavascriptFunctionModulePath = process.argv[2];\n const functionArgs = process.argv[3];\n\n assert(customJavascriptFunctionModulePath, 'customJavascriptFunctionModulePath is required');\n assert(functionArgs, 'serializedFunctionParams is required');\n\n let serializedFunctionArguments: SerializedCustomBuildFunctionArguments;\n try {\n serializedFunctionArguments = JSON.parse(functionArgs);\n } catch (e) {\n console.error('Failed to parse serializedFunctionParams');\n throw e;\n }\n\n const logger = createLogger({\n name: 'customFunctionLogger',\n streams: [\n {\n type: 'raw',\n stream: {\n write: (rec: any) => {\n if (rec) {\n switch (rec.level) {\n case 20: // Debug level\n if (rec.msg) {\n console.debug(rec.msg);\n }\n break;\n case 30: // Info level\n if (rec.msg) {\n console.log(rec.msg);\n }\n break;\n case 40: // Warn level\n if (rec.msg) {\n console.warn(rec.msg);\n }\n break;\n case 50: // Error level\n case 60: // Fatal level\n if (rec.msg) {\n console.error(rec.msg);\n }\n break;\n default:\n break;\n }\n }\n },\n },\n },\n ],\n });\n\n const ctx = BuildStepContext.deserialize(serializedFunctionArguments.ctx, logger);\n const inputs = deserializeInputs(serializedFunctionArguments.inputs);\n const outputs = Object.fromEntries(\n Object.entries(serializedFunctionArguments.outputs).map(([id, output]) => [\n id,\n BuildStepOutput.deserialize(output),\n ])\n );\n const env = serializedFunctionArguments.env;\n const envBefore = cloneDeep(serializedFunctionArguments.env);\n\n let customModule: { default: BuildStepFunction };\n try {\n customModule = await require(customJavascriptFunctionModulePath);\n } catch (e) {\n console.error('Failed to load custom function module');\n throw e;\n }\n\n const customJavascriptFunction = customModule.default;\n\n await customJavascriptFunction(ctx, { inputs, outputs, env });\n\n const promises: SpawnPromise<SpawnResult>[] = [];\n for (const output of Object.values(outputs)) {\n if (output.rawValue) {\n assert(output.value, 'output.value is required');\n promises.push(\n spawnAsync('set-output', [output.id, output.value], {\n env,\n stdio: 'pipe',\n })\n );\n }\n }\n for (const envName of Object.keys(env)) {\n const envValue = env[envName];\n if (envValue !== envBefore[envName] && envValue) {\n promises.push(\n spawnAsync('set-env', [envName, envValue], {\n env,\n stdio: 'pipe',\n })\n );\n }\n }\n await Promise.all(promises);\n}\n\nvoid runCustomJsFunctionAsync();\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"customFunction.js","sourceRoot":"","sources":["../../src/utils/customFunction.ts"],"names":[],"mappings":";;;;;;AAsBA,0CASC;AAED,8CASC;AAED,4DAuCC;AAnFD,gDAAwB;AAExB,wDAA0B;AAO1B,yCAA2C;AAE9B,QAAA,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAWvE,SAAgB,eAAe,CAC7B,MAAkD;IAElD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC1C,EAAE;QACF,EAAE,eAAe,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;KACnF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAC/B,MAAwD;IAExD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,EAAE;QACF,EAAE,KAAK,EAAE,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE;KACnF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CAAC,2BAAmC;IAC1E,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7C,IAAI,wBAAwB,GAAG,2BAA2B,CAAC;QAC3D,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,cAAI,CAAC,QAAQ,CAC5B,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,EAC/C,wBAAwB,CACzB,CAAC;YACF,wBAAwB,GAAG,cAAI,CAAC,OAAO,CACrC,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CACvD,CAAC;QACJ,CAAC;QACD,MAAM,mBAAmB,GAA2C;YAClE,GAAG;YACH,MAAM,EAAE,eAAe,CAAC,MAAM,CAAC;YAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CACxE;YACD,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE;SACrB,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAA,kBAAU,EACd,MAAM,EACN;gBACE,cAAI,CAAC,IAAI,CAAC,oBAAY,EAAE,sBAAsB,CAAC;gBAC/C,wBAAwB;gBACxB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC;aACpC,EACD;gBACE,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,GAAG,EAAE,GAAG,CAAC,gBAAgB;gBACzB,GAAG;gBACH,KAAK,EAAE,MAAM;aACd,CACF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import path from 'path';\n\nimport fs from 'fs-extra';\n\nimport { BuildStepFunction } from '../BuildStep';\nimport { BuildStepEnv } from '../BuildStepEnv';\nimport { SerializedBuildStepOutput } from '../BuildStepOutput';\nimport { SerializedBuildStepContext } from '../BuildStepContext';\n\nimport { spawnAsync } from './shell/spawn';\n\nexport const SCRIPTS_PATH = path.join(__dirname, '../../dist/scripts');\n\ntype SerializedBuildStepInput = { serializedValue: string | undefined };\n\nexport interface SerializedCustomBuildFunctionArguments {\n env: BuildStepEnv;\n inputs: Record<string, SerializedBuildStepInput>;\n outputs: Record<string, SerializedBuildStepOutput>;\n ctx: SerializedBuildStepContext;\n}\n\nexport function serializeInputs(\n inputs: Parameters<BuildStepFunction>[1]['inputs']\n): SerializedCustomBuildFunctionArguments['inputs'] {\n return Object.fromEntries(\n Object.entries(inputs).map(([id, input]) => [\n id,\n { serializedValue: input === undefined ? undefined : JSON.stringify(input.value) },\n ])\n );\n}\n\nexport function deserializeInputs(\n inputs: SerializedCustomBuildFunctionArguments['inputs']\n): Parameters<BuildStepFunction>[1]['inputs'] {\n return Object.fromEntries(\n Object.entries(inputs).map(([id, { serializedValue }]) => [\n id,\n { value: serializedValue === undefined ? undefined : JSON.parse(serializedValue) },\n ])\n );\n}\n\nexport function createCustomFunctionCall(rawCustomFunctionModulePath: string): BuildStepFunction {\n return async (ctx, { env, inputs, outputs }) => {\n let customFunctionModulePath = rawCustomFunctionModulePath;\n if (!(await fs.exists(ctx.global.projectSourceDirectory))) {\n const relative = path.relative(\n path.resolve(ctx.global.projectSourceDirectory),\n customFunctionModulePath\n );\n customFunctionModulePath = path.resolve(\n path.join(ctx.global.projectTargetDirectory, relative)\n );\n }\n const serializedArguments: SerializedCustomBuildFunctionArguments = {\n env,\n inputs: serializeInputs(inputs),\n outputs: Object.fromEntries(\n Object.entries(outputs).map(([id, output]) => [id, output.serialize()])\n ),\n ctx: ctx.serialize(),\n };\n try {\n await spawnAsync(\n 'node',\n [\n path.join(SCRIPTS_PATH, 'runCustomFunction.js'),\n customFunctionModulePath,\n JSON.stringify(serializedArguments),\n ],\n {\n logger: ctx.logger,\n cwd: ctx.workingDirectory,\n env,\n stdio: 'pipe',\n }\n );\n } catch {\n throw new Error(`Custom function exited with non-zero exit code.`);\n }\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../../src/utils/expodash/duplicates.ts"],"names":[],"mappings":";;AAAA,gCAWC;AAXD,SAAgB,UAAU,CAAI,KAAU;IACtC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAK,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAK,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,kBAAkB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["export function duplicates<T>(items: T[]): T[] {\n const visitedItemsSet = new Set<T>();\n const duplicatedItemsSet = new Set<T>();\n for (const item of items) {\n if (visitedItemsSet.has(item)) {\n duplicatedItemsSet.add(item);\n } else {\n visitedItemsSet.add(item);\n }\n }\n return [...duplicatedItemsSet];\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"uniq.js","sourceRoot":"","sources":["../../../src/utils/expodash/uniq.ts"],"names":[],"mappings":";;AAAA,oBAGC;AAHD,SAAgB,IAAI,CAAI,KAAU;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClB,CAAC","sourcesContent":["export function uniq<T>(items: T[]): T[] {\n const set = new Set(items);\n return [...set];\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hashFiles.js","sourceRoot":"","sources":["../../src/utils/hashFiles.ts"],"names":[],"mappings":";;;;;AASA,8BAyBC;AAlCD,mCAAoC;AAEpC,wDAA0B;AAE1B;;;;GAIG;AACH,SAAgB,SAAS,CAAC,SAAmB;IAC3C,MAAM,YAAY,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,IAAI,kBAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,kBAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC;gBACnE,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC7B,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,YAAY,CAAC,GAAG,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { createHash } from 'crypto';\n\nimport fs from 'fs-extra';\n\n/**\n * Hashes the contents of multiple files and returns a combined SHA256 hash.\n * @param filePaths Array of absolute file paths to hash\n * @returns Combined SHA256 hash of all files, or empty string if no files exist\n */\nexport function hashFiles(filePaths: string[]): string {\n const combinedHash = createHash('sha256');\n let hasFound = false;\n\n for (const filePath of filePaths) {\n try {\n if (fs.pathExistsSync(filePath)) {\n const fileContent = fs.readFileSync(filePath);\n const fileHash = createHash('sha256').update(fileContent).digest();\n combinedHash.write(fileHash);\n hasFound = true;\n }\n } catch (err: any) {\n throw new Error(`Failed to hash file ${filePath}: ${err.message}`);\n }\n }\n\n combinedHash.end();\n const result = combinedHash.digest('hex');\n\n if (!hasFound) {\n return '';\n }\n\n return result;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jsepEval.js","sourceRoot":"","sources":["../../src/utils/jsepEval.ts"],"names":[],"mappings":"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","sourcesContent":["// https://github.com/Sensative/jsep-eval/blob/master/src/jsep-eval.js\n// - migrated to TypeScript\n// - small refactoring (splitting operators into unary/binary)\n// - lack of LogicalExpression we don't need, because our version of JSEP does not expose it\n// - lack of Promise wrapper we don't need\n\nimport assert from 'assert';\n\nimport jsep from 'jsep';\nimport get from 'lodash.get';\n\nconst binaryOperatorFunctions = {\n '===': (a: any, b: any) => a === b,\n '!==': (a: any, b: any) => a !== b,\n '==': (a: any, b: any) => a == b, // eslint-disable-line\n '!=': (a: any, b: any) => a != b, // eslint-disable-line\n '>': (a: any, b: any) => a > b,\n '<': (a: any, b: any) => a < b,\n '>=': (a: any, b: any) => a >= b,\n '<=': (a: any, b: any) => a <= b,\n '+': (a: any, b: any) => a + b,\n '-': (a: any, b: any) => a - b,\n '*': (a: any, b: any) => a * b,\n '/': (a: any, b: any) => a / b,\n '%': (a: any, b: any) => a % b, // remainder\n '**': (a: any, b: any) => a ** b, // exponentiation\n '&': (a: any, b: any) => a & b, // bitwise AND\n '|': (a: any, b: any) => a | b, // bitwise OR\n '^': (a: any, b: any) => a ^ b, // bitwise XOR\n '<<': (a: any, b: any) => a << b, // left shift\n '>>': (a: any, b: any) => a >> b, // sign-propagating right shift\n '>>>': (a: any, b: any) => a >>> b, // zero-fill right shift\n // Let's make a home for the logical operators here as well\n '||': (a: any, b: any) => a || b,\n '&&': (a: any, b: any) => a && b,\n};\ntype BinaryOperator = keyof typeof binaryOperatorFunctions;\n\nconst unaryOperatorFunctions = {\n '!': (a: any) => !a,\n '~': (a: any) => ~a, // bitwise NOT\n '+': (a: any) => +a, // unary plus\n '-': (a: any) => -a, // unary negation\n '++': (a: any) => ++a, // increment\n '--': (a: any) => --a, // decrement\n};\ntype UnaryOperator = keyof typeof unaryOperatorFunctions;\n\nfunction isValid<T extends jsep.ExpressionType>(\n expression: jsep.Expression,\n types: T[]\n): expression is jsep.CoreExpression & { type: T } {\n return types.includes(expression.type as T);\n}\n\nfunction getParameterPath(node: jsep.MemberExpression, context: Record<string, unknown>): string {\n // it's a MEMBER expression\n // EXAMPLES: a[b] (computed)\n // a.b (not computed)\n const computed = node.computed;\n const object = node.object;\n const property = node.property;\n\n // object is either 'IDENTIFIER', 'MEMBER', or 'THIS'\n assert(\n isValid(object, ['MemberExpression', 'Identifier', 'ThisExpression']),\n 'Invalid object type'\n );\n assert(property, 'Member expression property is missing');\n\n let objectPath = '';\n if (object.type === 'ThisExpression') {\n objectPath = '';\n } else if (isValid(object, ['Identifier'])) {\n objectPath = object.name;\n } else {\n objectPath = getParameterPath(object, context);\n }\n\n if (computed) {\n // if computed -> evaluate anew\n const propertyPath = evaluateExpressionNode(property, context);\n return objectPath + '[' + propertyPath + ']';\n } else if (property.type === 'Identifier') {\n return (objectPath ? objectPath + '.' : '') + property.name;\n } else if (property.type === 'CallExpression') {\n const propertyPath = evaluateExpressionNode(property, context);\n return (objectPath ? objectPath + '.' : '') + propertyPath;\n } else if (property.type === 'Literal') {\n return (objectPath ? objectPath + '.' : '') + `${property.value}`;\n } else {\n assert(isValid(property, ['MemberExpression']), 'Invalid object type');\n const propertyPath = getParameterPath(property, context);\n return (objectPath ? objectPath + '.' : '') + propertyPath;\n }\n}\n\nfunction evaluateExpressionNode(node: jsep.Expression, context: Record<string, unknown>): unknown {\n switch (node.type as jsep.ExpressionType) {\n case 'Literal': {\n return (node as jsep.Literal).value;\n }\n case 'ThisExpression': {\n return context;\n }\n case 'Compound': {\n const compoundNode = node as jsep.Compound;\n const expressions = compoundNode.body.map((el) => evaluateExpressionNode(el, context));\n return expressions.pop();\n }\n case 'UnaryExpression': {\n const unaryNode = node as jsep.UnaryExpression;\n if (!(unaryNode.operator in unaryOperatorFunctions)) {\n throw new Error(`Unsupported unary operator: ${unaryNode.operator}`);\n }\n const operatorFn = unaryOperatorFunctions[unaryNode.operator as UnaryOperator];\n const argument = evaluateExpressionNode(unaryNode.argument, context);\n return operatorFn(argument);\n }\n case 'BinaryExpression': {\n const binaryNode = node as jsep.BinaryExpression;\n if (!(binaryNode.operator in binaryOperatorFunctions)) {\n throw new Error(`Unsupported binary operator: ${binaryNode.operator}`);\n }\n const operator = binaryOperatorFunctions[binaryNode.operator as BinaryOperator];\n const left = evaluateExpressionNode(binaryNode.left, context);\n const right = evaluateExpressionNode(binaryNode.right, context);\n return operator(left, right);\n }\n case 'ConditionalExpression': {\n const conditionalNode = node as jsep.ConditionalExpression;\n const test = evaluateExpressionNode(conditionalNode.test, context);\n const consequent = evaluateExpressionNode(conditionalNode.consequent, context);\n const alternate = evaluateExpressionNode(conditionalNode.alternate, context);\n return test ? consequent : alternate;\n }\n case 'CallExpression': {\n const allowedCalleeTypes: jsep.ExpressionType[] = [\n 'MemberExpression',\n 'Identifier',\n 'ThisExpression',\n ];\n const callNode = node as jsep.CallExpression;\n if (!allowedCalleeTypes.includes(callNode.callee.type as jsep.ExpressionType)) {\n throw new Error(\n `Invalid function callee type: ${\n callNode.callee.type\n }. Expected one of [${allowedCalleeTypes.join(', ')}].`\n );\n }\n const callee = evaluateExpressionNode(callNode.callee, context);\n const args = callNode.arguments.map((arg) => evaluateExpressionNode(arg, context));\n assert(typeof callee === 'function', 'Expected a function');\n // eslint-disable-next-line prefer-spread\n return callee.apply(null, args);\n }\n case 'Identifier': {\n const identifier = (node as jsep.Identifier).name;\n if (!(identifier in context)) {\n throw new Error(\n `Invalid identifier \"${identifier}\". Expected one of [${Object.keys(context).join(\n ', '\n )}].`\n );\n }\n return get(context, identifier);\n }\n case 'MemberExpression': {\n const memberNode = node as jsep.MemberExpression;\n return get(\n evaluateExpressionNode(memberNode.object, context),\n getParameterPath(\n {\n type: 'MemberExpression',\n object: { type: 'ThisExpression' },\n property: memberNode.property,\n computed: false,\n } as jsep.MemberExpression,\n context\n )\n );\n }\n case 'ArrayExpression': {\n const elements = (node as jsep.ArrayExpression).elements.map((el) =>\n el ? evaluateExpressionNode(el, context) : null\n );\n return elements;\n }\n default:\n throw new Error(`Unsupported expression type: ${node.type}`);\n }\n}\n\nexport function jsepEval(expression: string, context?: Record<string, unknown>): unknown {\n const tree = jsep(expression);\n return evaluateExpressionNode(tree, context ?? {});\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nullthrows.js","sourceRoot":"","sources":["../../src/utils/nullthrows.ts"],"names":[],"mappings":";;AAAA,gCAKC;AALD,SAAgB,UAAU,CAAI,KAA2B,EAAE,OAAgB;IACzE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,sDAAsD,KAAK,EAAE,CAAC,CAAC;AAChG,CAAC","sourcesContent":["export function nullthrows<T>(value: T | null | undefined, message?: string): NonNullable<T> {\n if (value != null) {\n return value;\n }\n throw new TypeError(message ?? `Expected value not to be null or undefined but got ${value}`);\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../src/utils/shell/bin.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAEX,QAAA,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC","sourcesContent":["import path from 'path';\n\nexport const BIN_PATH = path.join(__dirname, '../../../bin');\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/utils/shell/command.ts"],"names":[],"mappings":";;AAAA,wDAcC;AAdD,SAAgB,sBAAsB,CACpC,KAAa,EACb,MAAe;IAEf,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO;QACL,OAAO;QACP,IAAI;KACL,CAAC;AACJ,CAAC","sourcesContent":["export function getShellCommandAndArgs(\n shell: string,\n script?: string\n): { command: string; args?: string[] } {\n const splits = shell.split(' ');\n const command = splits[0];\n const args = [...splits.slice(1)];\n if (script) {\n args.push(script);\n }\n return {\n command,\n args,\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/utils/shell/spawn.ts"],"names":[],"mappings":";;;;;AA8BA,gCAcC;AA1CD,yCAAiE;AACjE,oEAI2B;AAoB3B,KAAK;AAEL,sDAAsD;AACtD,SAAgB,UAAU,CACxB,OAAe,EACf,IAAc,EACd,aAA2B;IACzB,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;CACnB;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAA,qBAAkB,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAA,wBAAe,EAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { IOType } from 'child_process';\n\nimport { pipeSpawnOutput, bunyan, PipeMode } from '@expo/logger';\nimport spawnAsyncOriginal, {\n SpawnResult,\n SpawnPromise,\n SpawnOptions as SpawnOptionsOriginal,\n} from '@expo/spawn-async';\n\n// We omit 'ignoreStdio' to simplify logic -- only 'stdio' governs stdio.\n// We omit 'stdio' here to add further down in a logger-based union.\ntype SpawnOptions = Omit<SpawnOptionsOriginal, 'stdio' | 'ignoreStdio'> & {\n lineTransformer?: (line: string) => string | null;\n mode?: PipeMode;\n} & (\n | {\n // If logger is passed, we require stdio to be pipe.\n logger: bunyan;\n stdio: 'pipe' | [IOType, 'pipe', 'pipe', ...IOType[]];\n }\n | {\n // If logger is not passed, stdio can be anything.\n // Defaults to inherit.\n logger?: never;\n stdio?: SpawnOptionsOriginal['stdio'];\n }\n );\n// If\n\n// eslint-disable-next-line async-protect/async-suffix\nexport function spawnAsync(\n command: string,\n args: string[],\n allOptions: SpawnOptions = {\n stdio: 'inherit',\n cwd: process.cwd(),\n }\n): SpawnPromise<SpawnResult> {\n const { logger, ...options } = allOptions;\n const promise = spawnAsyncOriginal(command, args, options);\n if (logger && promise.child) {\n pipeSpawnOutput(logger, promise.child, options);\n }\n return promise;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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","sourcesContent":["import get from 'lodash.get';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { BuildStepInputValueTypeName } from '../BuildStepInput';\nimport { BuildConfigError, BuildStepRuntimeError } from '../errors';\n\nimport { nullthrows } from './nullthrows';\n\nexport const BUILD_STEP_INPUT_EXPRESSION_REGEXP = /\\${\\s*(inputs\\.[\\S]+)\\s*}/;\nexport const BUILD_STEP_OUTPUT_EXPRESSION_REGEXP = /\\${\\s*(steps\\.[\\S]+)\\s*}/;\nexport const BUILD_GLOBAL_CONTEXT_EXPRESSION_REGEXP = /\\${\\s*(eas\\.[\\S]+)\\s*}/;\nexport const BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX = /\\${\\s*((steps|eas)\\.[\\S]+)\\s*}/;\n\nexport function interpolateWithInputs(\n templateString: string,\n inputs: Record<string, string>\n): string {\n return interpolate(templateString, BUILD_STEP_INPUT_EXPRESSION_REGEXP, inputs);\n}\n\nexport function interpolateWithOutputs<InterpolableType extends string | object>(\n interpolableValue: InterpolableType,\n fn: (path: string) => string\n): InterpolableType {\n if (typeof interpolableValue === 'string') {\n return interpolateStringWithOutputs(interpolableValue, fn) as InterpolableType;\n } else {\n return interpolateObjectWithOutputs(interpolableValue, fn) as InterpolableType;\n }\n}\n\nexport function interpolateStringWithOutputs(\n templateString: string,\n fn: (path: string) => string\n): string {\n return interpolate(templateString, BUILD_STEP_OUTPUT_EXPRESSION_REGEXP, fn);\n}\n\nexport function interpolateObjectWithOutputs(\n interpolableObject: object,\n fn: (path: string) => string\n): object {\n const interpolableObjectCopy = cloneDeep(interpolableObject);\n Object.keys(interpolableObject).forEach((property) => {\n const propertyValue = interpolableObject[property as keyof typeof interpolableObject];\n if (['string', 'object'].includes(typeof propertyValue)) {\n interpolableObjectCopy[property as keyof typeof interpolableObjectCopy] =\n interpolateWithOutputs(propertyValue, fn);\n }\n });\n return interpolableObjectCopy;\n}\n\nexport function getObjectValueForInterpolation(\n path: string,\n obj: Record<string, unknown>\n): string | number | boolean | null {\n const value = get(obj, path);\n\n if (value === undefined) {\n throw new BuildStepRuntimeError(\n `Object field \"${path}\" does not exist. Ensure you are using the correct field name.`\n );\n }\n\n if (!isAllowedValueTypeForObjectInterpolation(value)) {\n throw new BuildStepRuntimeError(\n `EAS context field \"${path}\" is not of type ${Object.values(BuildStepInputValueTypeName).join(\n ', '\n )}, or undefined. It is of type \"${typeof value}\". We currently only support accessing string or undefined values from the EAS context.`\n );\n }\n\n if (value !== null && typeof value === 'object') {\n return JSON.stringify(value);\n }\n\n return value;\n}\n\nexport function interpolateWithGlobalContext<InterpolableType extends string | object>(\n interpolableValue: InterpolableType,\n fn: (path: string) => string\n): InterpolableType {\n if (typeof interpolableValue === 'string') {\n return interpolateStringWithGlobalContext(interpolableValue, fn) as InterpolableType;\n } else {\n return interpolateObjectWithGlobalContext(interpolableValue, fn) as InterpolableType;\n }\n}\n\nexport function interpolateStringWithGlobalContext(\n templateString: string,\n fn: (path: string) => string\n): string {\n return interpolate(templateString, BUILD_GLOBAL_CONTEXT_EXPRESSION_REGEXP, fn);\n}\n\nexport function interpolateObjectWithGlobalContext(\n templateObject: object,\n fn: (path: string) => string\n): object {\n const templateObjectCopy = cloneDeep(templateObject);\n Object.keys(templateObject).forEach((property) => {\n const propertyValue = templateObject[property as keyof typeof templateObject];\n if (['string', 'object'].includes(typeof propertyValue)) {\n templateObjectCopy[property as keyof typeof templateObjectCopy] =\n interpolateWithGlobalContext(propertyValue, fn);\n }\n });\n return templateObjectCopy;\n}\n\nfunction interpolate(\n templateString: string,\n regex: RegExp,\n varsOrFn: Record<string, string> | ((key: string) => string)\n): string {\n const matched = templateString.match(new RegExp(regex, 'g'));\n if (!matched) {\n return templateString;\n }\n let result = templateString;\n for (const match of matched) {\n const [, path] = nullthrows(match.match(regex));\n const value = typeof varsOrFn === 'function' ? varsOrFn(path) : varsOrFn[path.split('.')[1]];\n result = result.replace(match, value);\n }\n return result;\n}\n\nfunction isAllowedValueTypeForObjectInterpolation(\n value: unknown\n): value is string | number | boolean | object | null {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n typeof value === 'object' ||\n value === null\n );\n}\n\ninterface BuildOutputPath {\n stepId: string;\n outputId: string;\n}\n\nexport function findOutputPaths(templateString: string): BuildOutputPath[] {\n const result: BuildOutputPath[] = [];\n const matches = templateString.matchAll(new RegExp(BUILD_STEP_OUTPUT_EXPRESSION_REGEXP, 'g'));\n for (const match of matches) {\n result.push(parseOutputPath(match[1]));\n }\n return result;\n}\n\nexport function parseOutputPath(outputPathWithObjectName: string): BuildOutputPath {\n const splits = outputPathWithObjectName.split('.').slice(1);\n if (splits.length !== 2) {\n throw new BuildConfigError(\n `Step output path must consist of two components joined with a dot, where first is the step ID, and second is the output name, e.g. \"step3.output1\". Passed: \"${outputPathWithObjectName}\"`\n );\n }\n const [stepId, outputId] = splits;\n return { stepId, outputId };\n}\n"]}
|