@expo/steps 1.0.204 → 1.0.206-alpha.0
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/dist_commonjs/BuildConfig.cjs +11 -11
- package/dist_commonjs/BuildConfig.js.map +1 -1
- package/dist_commonjs/BuildFunctionGroup.cjs +2 -2
- package/dist_commonjs/BuildFunctionGroup.js.map +1 -1
- package/dist_commonjs/BuildStepInput.cjs +2 -2
- package/dist_commonjs/BuildStepInput.js.map +1 -1
- package/dist_commonjs/BuildStepOutput.cjs +2 -2
- package/dist_commonjs/BuildStepOutput.js.map +1 -1
- package/dist_commonjs/BuildTemporaryFiles.cjs +4 -5
- package/dist_commonjs/BuildTemporaryFiles.js.map +1 -1
- package/dist_commonjs/interpolation.cjs +1 -2
- package/dist_commonjs/interpolation.js.map +1 -1
- package/dist_commonjs/utils/customFunction.cjs +4 -4
- package/dist_commonjs/utils/customFunction.js.map +1 -1
- package/dist_commonjs/utils/expodash/duplicates.cjs +1 -2
- package/dist_commonjs/utils/expodash/duplicates.js.map +1 -1
- package/dist_commonjs/utils/expodash/uniq.cjs +1 -2
- package/dist_commonjs/utils/expodash/uniq.js.map +1 -1
- package/dist_commonjs/utils/jsepEval.cjs +1 -2
- package/dist_commonjs/utils/jsepEval.js.map +1 -1
- package/dist_commonjs/utils/nullthrows.cjs +1 -2
- package/dist_commonjs/utils/nullthrows.js.map +1 -1
- package/dist_commonjs/utils/shell/command.cjs +2 -3
- package/dist_commonjs/utils/shell/command.d.ts +0 -1
- package/dist_commonjs/utils/shell/command.js.map +1 -1
- package/dist_commonjs/utils/shell/spawn.cjs +1 -2
- package/dist_commonjs/utils/shell/spawn.d.ts +0 -1
- package/dist_commonjs/utils/shell/spawn.js.map +1 -1
- package/dist_commonjs/utils/template.cjs +11 -11
- package/dist_commonjs/utils/template.js.map +1 -1
- package/dist_esm/utils/shell/command.d.ts +0 -1
- package/dist_esm/utils/shell/spawn.d.ts +0 -1
- package/package.json +5 -5
|
@@ -3,7 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.BuildConfigSchema = exports.BuildFunctionsConfigFileSchema = void 0;
|
|
7
|
+
exports.readAndValidateBuildConfigFromPathAsync = readAndValidateBuildConfigFromPathAsync;
|
|
8
|
+
exports.readAndValidateBuildFunctionsConfigFileAsync = readAndValidateBuildFunctionsConfigFileAsync;
|
|
9
|
+
exports.readRawBuildConfigAsync = readRawBuildConfigAsync;
|
|
10
|
+
exports.validateConfig = validateConfig;
|
|
11
|
+
exports.mergeConfigWithImportedFunctions = mergeConfigWithImportedFunctions;
|
|
12
|
+
exports.isBuildStepCommandRun = isBuildStepCommandRun;
|
|
13
|
+
exports.isBuildStepBareCommandRun = isBuildStepBareCommandRun;
|
|
14
|
+
exports.isBuildStepFunctionCall = isBuildStepFunctionCall;
|
|
15
|
+
exports.isBuildStepBareFunctionOrFunctionGroupCall = isBuildStepBareFunctionOrFunctionGroupCall;
|
|
16
|
+
exports.validateAllFunctionsExist = validateAllFunctionsExist;
|
|
7
17
|
const assert_1 = __importDefault(require("assert"));
|
|
8
18
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
19
|
const path_1 = __importDefault(require("path"));
|
|
@@ -148,7 +158,6 @@ async function readAndValidateBuildConfigFromPathAsync(configPath, params = {})
|
|
|
148
158
|
validateAllFunctionsExist(config, params);
|
|
149
159
|
return config;
|
|
150
160
|
}
|
|
151
|
-
exports.readAndValidateBuildConfigFromPathAsync = readAndValidateBuildConfigFromPathAsync;
|
|
152
161
|
async function importFunctionsAsync(baseConfigPath, configPathsToImport) {
|
|
153
162
|
if (!configPathsToImport) {
|
|
154
163
|
return {};
|
|
@@ -200,12 +209,10 @@ async function readAndValidateBuildFunctionsConfigFileAsync(configPath) {
|
|
|
200
209
|
const rawConfig = await readRawBuildConfigAsync(configPath);
|
|
201
210
|
return validateConfig(exports.BuildFunctionsConfigFileSchema, rawConfig);
|
|
202
211
|
}
|
|
203
|
-
exports.readAndValidateBuildFunctionsConfigFileAsync = readAndValidateBuildFunctionsConfigFileAsync;
|
|
204
212
|
async function readRawBuildConfigAsync(configPath) {
|
|
205
213
|
const contents = await promises_1.default.readFile(configPath, 'utf-8');
|
|
206
214
|
return yaml_1.default.parse(contents);
|
|
207
215
|
}
|
|
208
|
-
exports.readRawBuildConfigAsync = readRawBuildConfigAsync;
|
|
209
216
|
function validateConfig(schema, config, configFilePath) {
|
|
210
217
|
const { error, value } = schema.validate(config, {
|
|
211
218
|
allowUnknown: false,
|
|
@@ -220,7 +227,6 @@ function validateConfig(schema, config, configFilePath) {
|
|
|
220
227
|
}
|
|
221
228
|
return value;
|
|
222
229
|
}
|
|
223
|
-
exports.validateConfig = validateConfig;
|
|
224
230
|
function mergeConfigWithImportedFunctions(config, importedFunctions) {
|
|
225
231
|
var _a;
|
|
226
232
|
if (Object.keys(importedFunctions).length === 0) {
|
|
@@ -233,23 +239,18 @@ function mergeConfigWithImportedFunctions(config, importedFunctions) {
|
|
|
233
239
|
}
|
|
234
240
|
}
|
|
235
241
|
}
|
|
236
|
-
exports.mergeConfigWithImportedFunctions = mergeConfigWithImportedFunctions;
|
|
237
242
|
function isBuildStepCommandRun(step) {
|
|
238
243
|
return Boolean(step) && typeof step === 'object' && typeof step.run === 'object';
|
|
239
244
|
}
|
|
240
|
-
exports.isBuildStepCommandRun = isBuildStepCommandRun;
|
|
241
245
|
function isBuildStepBareCommandRun(step) {
|
|
242
246
|
return Boolean(step) && typeof step === 'object' && typeof step.run === 'string';
|
|
243
247
|
}
|
|
244
|
-
exports.isBuildStepBareCommandRun = isBuildStepBareCommandRun;
|
|
245
248
|
function isBuildStepFunctionCall(step) {
|
|
246
249
|
return Boolean(step) && typeof step === 'object' && !('run' in step);
|
|
247
250
|
}
|
|
248
|
-
exports.isBuildStepFunctionCall = isBuildStepFunctionCall;
|
|
249
251
|
function isBuildStepBareFunctionOrFunctionGroupCall(step) {
|
|
250
252
|
return typeof step === 'string';
|
|
251
253
|
}
|
|
252
|
-
exports.isBuildStepBareFunctionOrFunctionGroupCall = isBuildStepBareFunctionOrFunctionGroupCall;
|
|
253
254
|
function validateAllFunctionsExist(config, { externalFunctionIds = [], externalFunctionGroupsIds = [], skipNamespacedFunctionsOrFunctionGroupsCheck, }) {
|
|
254
255
|
const calledFunctionsOrFunctionGroupsSet = new Set();
|
|
255
256
|
for (const step of config.build.steps) {
|
|
@@ -281,7 +282,6 @@ function validateAllFunctionsExist(config, { externalFunctionIds = [], externalF
|
|
|
281
282
|
.join(', ')}.`);
|
|
282
283
|
}
|
|
283
284
|
}
|
|
284
|
-
exports.validateAllFunctionsExist = validateAllFunctionsExist;
|
|
285
285
|
function maybeResolveCustomFunctionRelativePath(dir, customFunctionPath) {
|
|
286
286
|
if (!path_1.default.isAbsolute(customFunctionPath)) {
|
|
287
287
|
return path_1.default.resolve(dir, customFunctionPath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildConfig.js","sourceRoot":"","sources":["../src/BuildConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport Joi from 'joi';\nimport YAML from 'yaml';\n\nimport { BuildConfigError, BuildWorkflowError } from './errors.js';\nimport { BuildRuntimePlatform } from './BuildRuntimePlatform.js';\nimport { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput.js';\nimport { BuildStepEnv } from './BuildStepEnv.js';\nimport { BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX } from './utils/template.js';\n\nexport type BuildFunctions = Record<string, BuildFunctionConfig>;\n\ninterface BuildFunctionsConfigFile {\n configFilesToImport?: string[];\n functions?: BuildFunctions;\n}\n\nexport interface BuildConfig extends BuildFunctionsConfigFile {\n build: {\n name?: string;\n steps: BuildStepConfig[];\n };\n}\n\nexport type BuildStepConfig =\n | BuildStepCommandRun\n | BuildStepBareCommandRun\n | BuildStepFunctionCall\n | BuildStepBareFunctionOrFunctionGroupCall;\n\nexport type BuildStepCommandRun = {\n run: BuildFunctionCallConfig & {\n outputs?: BuildStepOutputs;\n command: string;\n };\n};\nexport type BuildStepBareCommandRun = { run: string };\nexport type BuildStepFunctionCall = {\n [functionId: string]: BuildFunctionCallConfig;\n};\nexport type BuildStepBareFunctionOrFunctionGroupCall = string;\n\nexport type BuildFunctionCallConfig = {\n id?: string;\n inputs?: BuildStepInputs;\n name?: string;\n workingDirectory?: string;\n shell?: string;\n env?: BuildStepEnv;\n if?: string;\n};\n\nexport type BuildStepInputs = Record<string, unknown>;\nexport type BuildStepOutputs = (\n | string\n | {\n name: string;\n required?: boolean;\n }\n)[];\n\nexport interface BuildFunctionConfig {\n inputs?: BuildFunctionInputs;\n outputs?: BuildFunctionOutputs;\n name?: string;\n supportedRuntimePlatforms?: BuildRuntimePlatform[];\n shell?: string;\n command?: string;\n path?: string;\n}\n\nexport type BuildFunctionInputs = (\n | string\n | {\n name: string;\n defaultValue?: BuildStepInputValueType;\n allowedValues?: BuildStepInputValueType[];\n required?: boolean;\n allowedValueType: BuildStepInputValueTypeName;\n }\n)[];\nexport type BuildFunctionOutputs = BuildStepOutputs;\n\nconst BuildFunctionInputsSchema = Joi.array().items(\n Joi.alternatives().conditional(Joi.ref('.'), {\n is: Joi.string(),\n then: Joi.string().required(),\n otherwise: Joi.object({\n name: Joi.string().required(),\n defaultValue: Joi.when('allowedValues', {\n is: Joi.exist(),\n then: Joi.valid(Joi.in('allowedValues')).messages({\n 'any.only': '{{#label}} must be one of allowed values',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.string().allow(''),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.alternatives(\n Joi.boolean(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a boolean or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.alternatives(\n Joi.number(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a number or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.alternatives(\n Joi.object(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a object or reference to output or context value',\n }),\n }),\n allowedValues: Joi.when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.array().items(Joi.string().allow('')),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.array().items(Joi.boolean()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.array().items(Joi.number()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.array().items(Joi.object()),\n }),\n allowedValueType: Joi.string()\n .valid(...Object.values(BuildStepInputValueTypeName))\n .default(BuildStepInputValueTypeName.STRING),\n required: Joi.boolean(),\n })\n .rename('allowed_values', 'allowedValues')\n .rename('default_value', 'defaultValue')\n .rename('type', 'allowedValueType')\n .required(),\n })\n);\n\nconst BuildStepOutputsSchema = Joi.array().items(\n Joi.alternatives().try(\n Joi.string().required(),\n Joi.object({\n name: Joi.string().required(),\n required: Joi.boolean(),\n }).required()\n )\n);\n\nconst BuildFunctionCallSchema = Joi.object({\n id: Joi.string(),\n inputs: Joi.object().pattern(\n Joi.string(),\n Joi.alternatives().try(Joi.string().allow(''), Joi.boolean(), Joi.number(), Joi.object())\n ),\n name: Joi.string(),\n workingDirectory: Joi.string(),\n shell: Joi.string(),\n env: Joi.object().pattern(Joi.string(), Joi.string().allow('')),\n if: Joi.string(),\n}).rename('working_directory', 'workingDirectory');\n\nconst BuildStepConfigSchema = Joi.any<BuildStepConfig>()\n .invalid(null)\n .when(\n Joi.object().pattern(\n Joi.string().disallow('run').required(),\n Joi.object().unknown().required()\n ),\n {\n then: Joi.object().pattern(\n Joi.string().disallow('run').min(1).required(),\n BuildFunctionCallSchema.required(),\n { matches: Joi.array().length(1) }\n ),\n }\n )\n .when(Joi.object({ run: Joi.object().unknown().required() }), {\n then: Joi.object({\n run: BuildFunctionCallSchema.keys({\n outputs: BuildStepOutputsSchema,\n command: Joi.string().required(),\n }),\n }),\n })\n .when(Joi.object({ run: Joi.string().required() }), {\n then: Joi.object({\n run: Joi.string().min(1).required(),\n }),\n })\n .when(Joi.string(), {\n then: Joi.string().min(1),\n });\n\nconst BuildFunctionConfigSchema = Joi.object({\n name: Joi.string(),\n supportedRuntimePlatforms: Joi.array().items(...Object.values(BuildRuntimePlatform)),\n inputs: BuildFunctionInputsSchema,\n outputs: BuildStepOutputsSchema,\n command: Joi.string(),\n path: Joi.string(),\n shell: Joi.string(),\n})\n .rename('supported_platforms', 'supportedRuntimePlatforms')\n .xor('command', 'path')\n .nand('command', 'path');\n\nexport const BuildFunctionsConfigFileSchema = Joi.object<BuildFunctionsConfigFile>({\n configFilesToImport: Joi.array().items(Joi.string().pattern(/\\.y(a)?ml$/)),\n functions: Joi.object().pattern(\n Joi.string()\n .pattern(/^[\\w-]+$/, 'function names')\n .min(1)\n .required()\n .disallow('run'),\n BuildFunctionConfigSchema.required()\n ),\n})\n .rename('import', 'configFilesToImport')\n .required();\n\nexport const BuildConfigSchema = BuildFunctionsConfigFileSchema.append<BuildConfig>({\n build: Joi.object({\n name: Joi.string(),\n steps: Joi.array().items(BuildStepConfigSchema.required()).required(),\n }).required(),\n}).required();\n\ninterface BuildConfigValidationParams {\n externalFunctionIds?: string[];\n externalFunctionGroupsIds?: string[];\n skipNamespacedFunctionsOrFunctionGroupsCheck?: boolean;\n}\n\nexport async function readAndValidateBuildConfigFromPathAsync(\n configPath: string,\n params: BuildConfigValidationParams = {}\n): Promise<BuildConfig> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n\n const config = validateConfig(BuildConfigSchema, rawConfig);\n for (const functionName in config.functions) {\n const customFunctionPath = config.functions[functionName].path;\n if (customFunctionPath) {\n config.functions[functionName].path = maybeResolveCustomFunctionRelativePath(\n path.dirname(configPath),\n customFunctionPath\n );\n }\n }\n\n const importedFunctions = await importFunctionsAsync(configPath, config.configFilesToImport);\n mergeConfigWithImportedFunctions(config, importedFunctions);\n validateAllFunctionsExist(config, params);\n return config;\n}\n\nasync function importFunctionsAsync(\n baseConfigPath: string,\n configPathsToImport?: string[]\n): Promise<BuildFunctions> {\n if (!configPathsToImport) {\n return {};\n }\n\n const baseConfigDir = path.dirname(baseConfigPath);\n\n const errors: BuildConfigError[] = [];\n const importedFunctions: BuildFunctions = {};\n // this is a set of visited files identified by ABSOLUTE paths\n const visitedFiles = new Set<string>([baseConfigPath]);\n const configFilesToVisit = (configPathsToImport ?? []).map((childConfigRelativePath) =>\n path.resolve(baseConfigDir, childConfigRelativePath)\n );\n while (configFilesToVisit.length > 0) {\n const childConfigPath = configFilesToVisit.shift();\n assert(childConfigPath, 'Guaranteed by loop condition');\n if (visitedFiles.has(childConfigPath)) {\n continue;\n }\n visitedFiles.add(childConfigPath);\n try {\n const childConfig = await readAndValidateBuildFunctionsConfigFileAsync(childConfigPath);\n const childDir = path.dirname(childConfigPath);\n for (const functionName in childConfig.functions) {\n if (!(functionName in importedFunctions)) {\n const f = childConfig.functions[functionName];\n if (f.path) {\n f.path = maybeResolveCustomFunctionRelativePath(childDir, f.path);\n }\n importedFunctions[functionName] = f;\n }\n }\n if (childConfig.configFilesToImport) {\n configFilesToVisit.push(\n ...childConfig.configFilesToImport.map((relativePath) =>\n path.resolve(childDir, relativePath)\n )\n );\n }\n } catch (err) {\n if (err instanceof BuildConfigError) {\n errors.push(err);\n } else {\n throw err;\n }\n }\n }\n if (errors.length > 0) {\n throw new BuildWorkflowError(`Detected build config errors in imported files.`, errors);\n }\n return importedFunctions;\n}\n\nexport async function readAndValidateBuildFunctionsConfigFileAsync(\n configPath: string\n): Promise<BuildFunctionsConfigFile> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n return validateConfig(BuildFunctionsConfigFileSchema, rawConfig);\n}\n\nexport async function readRawBuildConfigAsync(configPath: string): Promise<any> {\n const contents = await fs.readFile(configPath, 'utf-8');\n return YAML.parse(contents);\n}\n\nexport function validateConfig<T>(\n schema: Joi.ObjectSchema<T>,\n config: object,\n configFilePath?: string\n): T {\n const { error, value } = schema.validate(config, {\n allowUnknown: false,\n abortEarly: false,\n });\n if (error) {\n const errorMessage = error.details.map(({ message }) => message).join(', ');\n throw new BuildConfigError(errorMessage, {\n cause: error,\n ...(configFilePath && { metadata: { configFilePath } }),\n });\n }\n return value;\n}\n\nexport function mergeConfigWithImportedFunctions(\n config: BuildConfig,\n importedFunctions: BuildFunctions\n): void {\n if (Object.keys(importedFunctions).length === 0) {\n return;\n }\n config.functions = config.functions ?? {};\n for (const functionName in importedFunctions) {\n if (!(functionName in config.functions)) {\n config.functions[functionName] = importedFunctions[functionName];\n }\n }\n}\n\nexport function isBuildStepCommandRun(step: BuildStepConfig): step is BuildStepCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'object';\n}\n\nexport function isBuildStepBareCommandRun(step: BuildStepConfig): step is BuildStepBareCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'string';\n}\n\nexport function isBuildStepFunctionCall(step: BuildStepConfig): step is BuildStepFunctionCall {\n return Boolean(step) && typeof step === 'object' && !('run' in step);\n}\n\nexport function isBuildStepBareFunctionOrFunctionGroupCall(\n step: BuildStepConfig\n): step is BuildStepBareFunctionOrFunctionGroupCall {\n return typeof step === 'string';\n}\n\nexport function validateAllFunctionsExist(\n config: BuildConfig,\n {\n externalFunctionIds = [],\n externalFunctionGroupsIds = [],\n skipNamespacedFunctionsOrFunctionGroupsCheck,\n }: BuildConfigValidationParams\n): void {\n const calledFunctionsOrFunctionGroupsSet = new Set<string>();\n for (const step of config.build.steps) {\n if (typeof step === 'string') {\n calledFunctionsOrFunctionGroupsSet.add(step);\n } else if (step !== null && !('run' in step)) {\n const keys = Object.keys(step);\n assert(\n keys.length === 1,\n 'There must be at most one function call in the step (enforced by joi).'\n );\n calledFunctionsOrFunctionGroupsSet.add(keys[0]);\n }\n }\n const calledFunctionsOrFunctionGroup = Array.from(calledFunctionsOrFunctionGroupsSet);\n const externalFunctionIdsSet = new Set(externalFunctionIds);\n const externalFunctionGroupsIdsSet = new Set(externalFunctionGroupsIds);\n const nonExistentFunctionsOrFunctionGroups = calledFunctionsOrFunctionGroup.filter(\n (calledFunctionOrFunctionGroup) => {\n if (\n isFullIdNamespaced(calledFunctionOrFunctionGroup) &&\n skipNamespacedFunctionsOrFunctionGroupsCheck\n ) {\n return false;\n }\n return (\n !(calledFunctionOrFunctionGroup in (config.functions ?? {})) &&\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\nfunction maybeResolveCustomFunctionRelativePath(dir: string, customFunctionPath: string): string {\n if (!path.isAbsolute(customFunctionPath)) {\n return path.resolve(dir, customFunctionPath);\n }\n return customFunctionPath;\n}\n\nfunction isFullIdNamespaced(fullId: string): boolean {\n return fullId.includes('/');\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BuildConfig.js","sourceRoot":"","sources":["../src/BuildConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport fs from 'fs/promises';\nimport path from 'path';\n\nimport Joi from 'joi';\nimport YAML from 'yaml';\n\nimport { BuildConfigError, BuildWorkflowError } from './errors.js';\nimport { BuildRuntimePlatform } from './BuildRuntimePlatform.js';\nimport { BuildStepInputValueTypeName, BuildStepInputValueType } from './BuildStepInput.js';\nimport { BuildStepEnv } from './BuildStepEnv.js';\nimport { BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX } from './utils/template.js';\n\nexport type BuildFunctions = Record<string, BuildFunctionConfig>;\n\ninterface BuildFunctionsConfigFile {\n configFilesToImport?: string[];\n functions?: BuildFunctions;\n}\n\nexport interface BuildConfig extends BuildFunctionsConfigFile {\n build: {\n name?: string;\n steps: BuildStepConfig[];\n };\n}\n\nexport type BuildStepConfig =\n | BuildStepCommandRun\n | BuildStepBareCommandRun\n | BuildStepFunctionCall\n | BuildStepBareFunctionOrFunctionGroupCall;\n\nexport type BuildStepCommandRun = {\n run: BuildFunctionCallConfig & {\n outputs?: BuildStepOutputs;\n command: string;\n };\n};\nexport type BuildStepBareCommandRun = { run: string };\nexport type BuildStepFunctionCall = {\n [functionId: string]: BuildFunctionCallConfig;\n};\nexport type BuildStepBareFunctionOrFunctionGroupCall = string;\n\nexport type BuildFunctionCallConfig = {\n id?: string;\n inputs?: BuildStepInputs;\n name?: string;\n workingDirectory?: string;\n shell?: string;\n env?: BuildStepEnv;\n if?: string;\n};\n\nexport type BuildStepInputs = Record<string, unknown>;\nexport type BuildStepOutputs = (\n | string\n | {\n name: string;\n required?: boolean;\n }\n)[];\n\nexport interface BuildFunctionConfig {\n inputs?: BuildFunctionInputs;\n outputs?: BuildFunctionOutputs;\n name?: string;\n supportedRuntimePlatforms?: BuildRuntimePlatform[];\n shell?: string;\n command?: string;\n path?: string;\n}\n\nexport type BuildFunctionInputs = (\n | string\n | {\n name: string;\n defaultValue?: BuildStepInputValueType;\n allowedValues?: BuildStepInputValueType[];\n required?: boolean;\n allowedValueType: BuildStepInputValueTypeName;\n }\n)[];\nexport type BuildFunctionOutputs = BuildStepOutputs;\n\nconst BuildFunctionInputsSchema = Joi.array().items(\n Joi.alternatives().conditional(Joi.ref('.'), {\n is: Joi.string(),\n then: Joi.string().required(),\n otherwise: Joi.object({\n name: Joi.string().required(),\n defaultValue: Joi.when('allowedValues', {\n is: Joi.exist(),\n then: Joi.valid(Joi.in('allowedValues')).messages({\n 'any.only': '{{#label}} must be one of allowed values',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.string().allow(''),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.alternatives(\n Joi.boolean(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a boolean or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.alternatives(\n Joi.number(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a number or reference to output or context value',\n }),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.alternatives(\n Joi.object(),\n Joi.string().pattern(\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n 'context or output reference regex pattern'\n )\n ).messages({\n 'alternatives.types':\n '{{#label}} must be a object or reference to output or context value',\n }),\n }),\n allowedValues: Joi.when('allowedValueType', {\n is: BuildStepInputValueTypeName.STRING,\n then: Joi.array().items(Joi.string().allow('')),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.BOOLEAN,\n then: Joi.array().items(Joi.boolean()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.NUMBER,\n then: Joi.array().items(Joi.number()),\n })\n .when('allowedValueType', {\n is: BuildStepInputValueTypeName.JSON,\n then: Joi.array().items(Joi.object()),\n }),\n allowedValueType: Joi.string()\n .valid(...Object.values(BuildStepInputValueTypeName))\n .default(BuildStepInputValueTypeName.STRING),\n required: Joi.boolean(),\n })\n .rename('allowed_values', 'allowedValues')\n .rename('default_value', 'defaultValue')\n .rename('type', 'allowedValueType')\n .required(),\n })\n);\n\nconst BuildStepOutputsSchema = Joi.array().items(\n Joi.alternatives().try(\n Joi.string().required(),\n Joi.object({\n name: Joi.string().required(),\n required: Joi.boolean(),\n }).required()\n )\n);\n\nconst BuildFunctionCallSchema = Joi.object({\n id: Joi.string(),\n inputs: Joi.object().pattern(\n Joi.string(),\n Joi.alternatives().try(Joi.string().allow(''), Joi.boolean(), Joi.number(), Joi.object())\n ),\n name: Joi.string(),\n workingDirectory: Joi.string(),\n shell: Joi.string(),\n env: Joi.object().pattern(Joi.string(), Joi.string().allow('')),\n if: Joi.string(),\n}).rename('working_directory', 'workingDirectory');\n\nconst BuildStepConfigSchema = Joi.any<BuildStepConfig>()\n .invalid(null)\n .when(\n Joi.object().pattern(\n Joi.string().disallow('run').required(),\n Joi.object().unknown().required()\n ),\n {\n then: Joi.object().pattern(\n Joi.string().disallow('run').min(1).required(),\n BuildFunctionCallSchema.required(),\n { matches: Joi.array().length(1) }\n ),\n }\n )\n .when(Joi.object({ run: Joi.object().unknown().required() }), {\n then: Joi.object({\n run: BuildFunctionCallSchema.keys({\n outputs: BuildStepOutputsSchema,\n command: Joi.string().required(),\n }),\n }),\n })\n .when(Joi.object({ run: Joi.string().required() }), {\n then: Joi.object({\n run: Joi.string().min(1).required(),\n }),\n })\n .when(Joi.string(), {\n then: Joi.string().min(1),\n });\n\nconst BuildFunctionConfigSchema = Joi.object({\n name: Joi.string(),\n supportedRuntimePlatforms: Joi.array().items(...Object.values(BuildRuntimePlatform)),\n inputs: BuildFunctionInputsSchema,\n outputs: BuildStepOutputsSchema,\n command: Joi.string(),\n path: Joi.string(),\n shell: Joi.string(),\n})\n .rename('supported_platforms', 'supportedRuntimePlatforms')\n .xor('command', 'path')\n .nand('command', 'path');\n\nexport const BuildFunctionsConfigFileSchema = Joi.object<BuildFunctionsConfigFile>({\n configFilesToImport: Joi.array().items(Joi.string().pattern(/\\.y(a)?ml$/)),\n functions: Joi.object().pattern(\n Joi.string()\n .pattern(/^[\\w-]+$/, 'function names')\n .min(1)\n .required()\n .disallow('run'),\n BuildFunctionConfigSchema.required()\n ),\n})\n .rename('import', 'configFilesToImport')\n .required();\n\nexport const BuildConfigSchema = BuildFunctionsConfigFileSchema.append<BuildConfig>({\n build: Joi.object({\n name: Joi.string(),\n steps: Joi.array().items(BuildStepConfigSchema.required()).required(),\n }).required(),\n}).required();\n\ninterface BuildConfigValidationParams {\n externalFunctionIds?: string[];\n externalFunctionGroupsIds?: string[];\n skipNamespacedFunctionsOrFunctionGroupsCheck?: boolean;\n}\n\nexport async function readAndValidateBuildConfigFromPathAsync(\n configPath: string,\n params: BuildConfigValidationParams = {}\n): Promise<BuildConfig> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n\n const config = validateConfig(BuildConfigSchema, rawConfig);\n for (const functionName in config.functions) {\n const customFunctionPath = config.functions[functionName].path;\n if (customFunctionPath) {\n config.functions[functionName].path = maybeResolveCustomFunctionRelativePath(\n path.dirname(configPath),\n customFunctionPath\n );\n }\n }\n\n const importedFunctions = await importFunctionsAsync(configPath, config.configFilesToImport);\n mergeConfigWithImportedFunctions(config, importedFunctions);\n validateAllFunctionsExist(config, params);\n return config;\n}\n\nasync function importFunctionsAsync(\n baseConfigPath: string,\n configPathsToImport?: string[]\n): Promise<BuildFunctions> {\n if (!configPathsToImport) {\n return {};\n }\n\n const baseConfigDir = path.dirname(baseConfigPath);\n\n const errors: BuildConfigError[] = [];\n const importedFunctions: BuildFunctions = {};\n // this is a set of visited files identified by ABSOLUTE paths\n const visitedFiles = new Set<string>([baseConfigPath]);\n const configFilesToVisit = (configPathsToImport ?? []).map((childConfigRelativePath) =>\n path.resolve(baseConfigDir, childConfigRelativePath)\n );\n while (configFilesToVisit.length > 0) {\n const childConfigPath = configFilesToVisit.shift();\n assert(childConfigPath, 'Guaranteed by loop condition');\n if (visitedFiles.has(childConfigPath)) {\n continue;\n }\n visitedFiles.add(childConfigPath);\n try {\n const childConfig = await readAndValidateBuildFunctionsConfigFileAsync(childConfigPath);\n const childDir = path.dirname(childConfigPath);\n for (const functionName in childConfig.functions) {\n if (!(functionName in importedFunctions)) {\n const f = childConfig.functions[functionName];\n if (f.path) {\n f.path = maybeResolveCustomFunctionRelativePath(childDir, f.path);\n }\n importedFunctions[functionName] = f;\n }\n }\n if (childConfig.configFilesToImport) {\n configFilesToVisit.push(\n ...childConfig.configFilesToImport.map((relativePath) =>\n path.resolve(childDir, relativePath)\n )\n );\n }\n } catch (err) {\n if (err instanceof BuildConfigError) {\n errors.push(err);\n } else {\n throw err;\n }\n }\n }\n if (errors.length > 0) {\n throw new BuildWorkflowError(`Detected build config errors in imported files.`, errors);\n }\n return importedFunctions;\n}\n\nexport async function readAndValidateBuildFunctionsConfigFileAsync(\n configPath: string\n): Promise<BuildFunctionsConfigFile> {\n const rawConfig = await readRawBuildConfigAsync(configPath);\n return validateConfig(BuildFunctionsConfigFileSchema, rawConfig);\n}\n\nexport async function readRawBuildConfigAsync(configPath: string): Promise<any> {\n const contents = await fs.readFile(configPath, 'utf-8');\n return YAML.parse(contents);\n}\n\nexport function validateConfig<T>(\n schema: Joi.ObjectSchema<T>,\n config: object,\n configFilePath?: string\n): T {\n const { error, value } = schema.validate(config, {\n allowUnknown: false,\n abortEarly: false,\n });\n if (error) {\n const errorMessage = error.details.map(({ message }) => message).join(', ');\n throw new BuildConfigError(errorMessage, {\n cause: error,\n ...(configFilePath && { metadata: { configFilePath } }),\n });\n }\n return value;\n}\n\nexport function mergeConfigWithImportedFunctions(\n config: BuildConfig,\n importedFunctions: BuildFunctions\n): void {\n if (Object.keys(importedFunctions).length === 0) {\n return;\n }\n config.functions = config.functions ?? {};\n for (const functionName in importedFunctions) {\n if (!(functionName in config.functions)) {\n config.functions[functionName] = importedFunctions[functionName];\n }\n }\n}\n\nexport function isBuildStepCommandRun(step: BuildStepConfig): step is BuildStepCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'object';\n}\n\nexport function isBuildStepBareCommandRun(step: BuildStepConfig): step is BuildStepBareCommandRun {\n return Boolean(step) && typeof step === 'object' && typeof step.run === 'string';\n}\n\nexport function isBuildStepFunctionCall(step: BuildStepConfig): step is BuildStepFunctionCall {\n return Boolean(step) && typeof step === 'object' && !('run' in step);\n}\n\nexport function isBuildStepBareFunctionOrFunctionGroupCall(\n step: BuildStepConfig\n): step is BuildStepBareFunctionOrFunctionGroupCall {\n return typeof step === 'string';\n}\n\nexport function validateAllFunctionsExist(\n config: BuildConfig,\n {\n externalFunctionIds = [],\n externalFunctionGroupsIds = [],\n skipNamespacedFunctionsOrFunctionGroupsCheck,\n }: BuildConfigValidationParams\n): void {\n const calledFunctionsOrFunctionGroupsSet = new Set<string>();\n for (const step of config.build.steps) {\n if (typeof step === 'string') {\n calledFunctionsOrFunctionGroupsSet.add(step);\n } else if (step !== null && !('run' in step)) {\n const keys = Object.keys(step);\n assert(\n keys.length === 1,\n 'There must be at most one function call in the step (enforced by joi).'\n );\n calledFunctionsOrFunctionGroupsSet.add(keys[0]);\n }\n }\n const calledFunctionsOrFunctionGroup = Array.from(calledFunctionsOrFunctionGroupsSet);\n const externalFunctionIdsSet = new Set(externalFunctionIds);\n const externalFunctionGroupsIdsSet = new Set(externalFunctionGroupsIds);\n const nonExistentFunctionsOrFunctionGroups = calledFunctionsOrFunctionGroup.filter(\n (calledFunctionOrFunctionGroup) => {\n if (\n isFullIdNamespaced(calledFunctionOrFunctionGroup) &&\n skipNamespacedFunctionsOrFunctionGroupsCheck\n ) {\n return false;\n }\n return (\n !(calledFunctionOrFunctionGroup in (config.functions ?? {})) &&\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\nfunction maybeResolveCustomFunctionRelativePath(dir: string, customFunctionPath: string): string {\n if (!path.isAbsolute(customFunctionPath)) {\n return path.resolve(dir, customFunctionPath);\n }\n return customFunctionPath;\n}\n\nfunction isFullIdNamespaced(fullId: string): boolean {\n return fullId.includes('/');\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.BuildFunctionGroup = void 0;
|
|
4
|
+
exports.createBuildFunctionGroupByIdMapping = createBuildFunctionGroupByIdMapping;
|
|
4
5
|
const BuildStepInput_js_1 = require("./BuildStepInput.cjs");
|
|
5
6
|
const errors_js_1 = require("./errors.cjs");
|
|
6
7
|
class BuildFunctionGroup {
|
|
@@ -37,5 +38,4 @@ function createBuildFunctionGroupByIdMapping(buildFunctionGroups) {
|
|
|
37
38
|
}
|
|
38
39
|
return buildFunctionGroupById;
|
|
39
40
|
}
|
|
40
|
-
exports.createBuildFunctionGroupByIdMapping = createBuildFunctionGroupByIdMapping;
|
|
41
41
|
//# sourceMappingURL=BuildFunctionGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildFunctionGroup.js","sourceRoot":"","sources":["../src/BuildFunctionGroup.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BuildFunctionGroup.js","sourceRoot":"","sources":["../src/BuildFunctionGroup.ts"],"names":[],"mappings":";;;AAgEA,kFAaC;AA1ED,2DAI6B;AAC7B,2CAA+C;AAI/C,MAAa,kBAAkB;IAW7B,YAAY,EACV,SAAS,EACT,EAAE,EACF,cAAc,EACd,qCAAqC,GAatC;QACC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,IAAI,CAAC,qCAAqC,GAAG,CAAC,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;;YAC7E,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,cAAc,0CAAE,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE;gBACxD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACrC,IAAI,KAAK,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;oBAC3B,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;gBAClC,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;YACH,OAAO,qCAAqC,CAAC,GAAG,EAAE;gBAChD,MAAM,EAAE,IAAA,6CAAyB,EAAC,MAAM,CAAC;aAC1C,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC;CACF;AAlDD,gDAkDC;AAED,SAAgB,mCAAmC,CACjD,mBAAyC;IAEzC,MAAM,sBAAsB,GAA2B,EAAE,CAAC;IAC1D,KAAK,MAAM,kBAAkB,IAAI,mBAAmB,EAAE,CAAC;QACrD,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACzE,MAAM,IAAI,4BAAgB,CACxB,gCAAgC,kBAAkB,CAAC,SAAS,EAAE,sBAAsB,CACrF,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,GAAG,kBAAkB,CAAC;IAC9E,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC","sourcesContent":["import { BuildFunctionCallInputs } from './BuildFunction.js';\nimport { BuildStep } from './BuildStep.js';\nimport { BuildStepGlobalContext } from './BuildStepContext.js';\nimport {\n BuildStepInputById,\n BuildStepInputProvider,\n makeBuildStepInputByIdMap,\n} from './BuildStepInput.js';\nimport { BuildConfigError } from './errors.js';\n\nexport type BuildFunctionGroupById = Record<string, BuildFunctionGroup | undefined>;\n\nexport class BuildFunctionGroup {\n public readonly namespace: string;\n public readonly id: string;\n public readonly inputProviders?: BuildStepInputProvider[];\n public readonly createBuildStepsFromFunctionGroupCall: (\n globalCtx: BuildStepGlobalContext,\n options?: {\n callInputs?: BuildFunctionCallInputs;\n }\n ) => BuildStep[];\n\n constructor({\n namespace,\n id,\n inputProviders,\n createBuildStepsFromFunctionGroupCall,\n }: {\n namespace: string;\n id: string;\n inputProviders?: BuildStepInputProvider[];\n createBuildStepsFromFunctionGroupCall: (\n globalCtx: BuildStepGlobalContext,\n {\n inputs,\n }: {\n inputs: BuildStepInputById;\n }\n ) => BuildStep[];\n }) {\n this.namespace = namespace;\n this.id = id;\n this.inputProviders = inputProviders;\n\n this.createBuildStepsFromFunctionGroupCall = (ctx, { callInputs = {} } = {}) => {\n const inputs = this.inputProviders?.map((inputProvider) => {\n const input = inputProvider(ctx, id);\n if (input.id in callInputs) {\n input.set(callInputs[input.id]);\n }\n return input;\n });\n return createBuildStepsFromFunctionGroupCall(ctx, {\n inputs: makeBuildStepInputByIdMap(inputs),\n });\n };\n }\n\n public getFullId(): string {\n return this.namespace === undefined ? this.id : `${this.namespace}/${this.id}`;\n }\n}\n\nexport function createBuildFunctionGroupByIdMapping(\n buildFunctionGroups: BuildFunctionGroup[]\n): BuildFunctionGroupById {\n const buildFunctionGroupById: BuildFunctionGroupById = {};\n for (const buildFunctionGroup of buildFunctionGroups) {\n if (buildFunctionGroupById[buildFunctionGroup.getFullId()] !== undefined) {\n throw new BuildConfigError(\n `Build function group with id ${buildFunctionGroup.getFullId()} is already defined.`\n );\n }\n buildFunctionGroupById[buildFunctionGroup.getFullId()] = buildFunctionGroup;\n }\n return buildFunctionGroupById;\n}\n"]}
|
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.BuildStepInput = exports.BuildStepInputValueTypeName = void 0;
|
|
7
|
+
exports.makeBuildStepInputByIdMap = makeBuildStepInputByIdMap;
|
|
7
8
|
const assert_1 = __importDefault(require("assert"));
|
|
8
9
|
const errors_js_1 = require("./errors.cjs");
|
|
9
10
|
const template_js_1 = require("./utils/template.cjs");
|
|
@@ -154,5 +155,4 @@ function makeBuildStepInputByIdMap(inputs) {
|
|
|
154
155
|
return acc;
|
|
155
156
|
}, {});
|
|
156
157
|
}
|
|
157
|
-
exports.makeBuildStepInputByIdMap = makeBuildStepInputByIdMap;
|
|
158
158
|
//# sourceMappingURL=BuildStepInput.js.map
|
|
@@ -1 +1 @@
|
|
|
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.js';\nimport { BuildStepRuntimeError } from './errors.js';\nimport {\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n interpolateWithOutputs,\n} from './utils/template.js';\nimport { interpolateJobContext } from './interpolation.js';\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
|
+
{"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.js';\nimport { BuildStepRuntimeError } from './errors.js';\nimport {\n BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX,\n interpolateWithOutputs,\n} from './utils/template.js';\nimport { interpolateJobContext } from './interpolation.js';\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,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.BuildStepOutput = void 0;
|
|
4
|
+
exports.makeBuildStepOutputByIdMap = makeBuildStepOutputByIdMap;
|
|
4
5
|
const errors_js_1 = require("./errors.cjs");
|
|
5
6
|
class BuildStepOutput {
|
|
6
7
|
static createProvider(params) {
|
|
@@ -58,5 +59,4 @@ function makeBuildStepOutputByIdMap(outputs) {
|
|
|
58
59
|
return acc;
|
|
59
60
|
}, {});
|
|
60
61
|
}
|
|
61
|
-
exports.makeBuildStepOutputByIdMap = makeBuildStepOutputByIdMap;
|
|
62
62
|
//# sourceMappingURL=BuildStepOutput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildStepOutput.js","sourceRoot":"","sources":["../src/BuildStepOutput.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"BuildStepOutput.js","sourceRoot":"","sources":["../src/BuildStepOutput.ts"],"names":[],"mappings":";;;AA8FA,gEAQC;AArGD,2CAAoD;AA6BpD,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,iCAAqB,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,iCAAqB,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.js';\nimport { BuildStepRuntimeError } from './errors.js';\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"]}
|
|
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.saveScriptToTemporaryFileAsync = saveScriptToTemporaryFileAsync;
|
|
7
|
+
exports.cleanUpStepTemporaryDirectoriesAsync = cleanUpStepTemporaryDirectoriesAsync;
|
|
8
|
+
exports.getTemporaryOutputsDirPath = getTemporaryOutputsDirPath;
|
|
9
|
+
exports.getTemporaryEnvsDirPath = getTemporaryEnvsDirPath;
|
|
7
10
|
const path_1 = __importDefault(require("path"));
|
|
8
11
|
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
12
|
const uuid_1 = require("uuid");
|
|
@@ -14,7 +17,6 @@ async function saveScriptToTemporaryFileAsync(ctx, stepId, scriptContents) {
|
|
|
14
17
|
await promises_1.default.writeFile(temporaryScriptPath, scriptContents);
|
|
15
18
|
return temporaryScriptPath;
|
|
16
19
|
}
|
|
17
|
-
exports.saveScriptToTemporaryFileAsync = saveScriptToTemporaryFileAsync;
|
|
18
20
|
async function cleanUpStepTemporaryDirectoriesAsync(ctx, stepId) {
|
|
19
21
|
if (ctx.skipCleanup) {
|
|
20
22
|
return;
|
|
@@ -23,7 +25,6 @@ async function cleanUpStepTemporaryDirectoriesAsync(ctx, stepId) {
|
|
|
23
25
|
await promises_1.default.rm(stepTemporaryDirectory, { recursive: true, force: true });
|
|
24
26
|
ctx.baseLogger.debug({ stepTemporaryDirectory }, 'Removed step temporary directory');
|
|
25
27
|
}
|
|
26
|
-
exports.cleanUpStepTemporaryDirectoriesAsync = cleanUpStepTemporaryDirectoriesAsync;
|
|
27
28
|
function getTemporaryStepDirPath(ctx, stepId) {
|
|
28
29
|
return path_1.default.join(ctx.stepsInternalBuildDirectory, 'steps', stepId);
|
|
29
30
|
}
|
|
@@ -33,9 +34,7 @@ function getTemporaryScriptsDirPath(ctx, stepId) {
|
|
|
33
34
|
function getTemporaryOutputsDirPath(ctx, stepId) {
|
|
34
35
|
return path_1.default.join(getTemporaryStepDirPath(ctx, stepId), 'outputs');
|
|
35
36
|
}
|
|
36
|
-
exports.getTemporaryOutputsDirPath = getTemporaryOutputsDirPath;
|
|
37
37
|
function getTemporaryEnvsDirPath(ctx, stepId) {
|
|
38
38
|
return path_1.default.join(getTemporaryStepDirPath(ctx, stepId), 'envs');
|
|
39
39
|
}
|
|
40
|
-
exports.getTemporaryEnvsDirPath = getTemporaryEnvsDirPath;
|
|
41
40
|
//# sourceMappingURL=BuildTemporaryFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildTemporaryFiles.js","sourceRoot":"","sources":["../src/BuildTemporaryFiles.ts"],"names":[],"mappings":"
|
|
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.js';\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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.interpolateJobContext =
|
|
3
|
+
exports.interpolateJobContext = interpolateJobContext;
|
|
4
4
|
const jsepEval_js_1 = require("./utils/jsepEval.cjs");
|
|
5
5
|
function interpolateJobContext({ target, context, }) {
|
|
6
6
|
if (typeof target === 'string') {
|
|
@@ -26,5 +26,4 @@ function interpolateJobContext({ target, context, }) {
|
|
|
26
26
|
}
|
|
27
27
|
return target;
|
|
28
28
|
}
|
|
29
|
-
exports.interpolateJobContext = interpolateJobContext;
|
|
30
29
|
//# sourceMappingURL=interpolation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interpolation.js","sourceRoot":"","sources":["../src/interpolation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interpolation.js","sourceRoot":"","sources":["../src/interpolation.ts"],"names":[],"mappings":";;AAIA,sDA8BC;AAhCD,qDAA+C;AAE/C,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,sBAAQ,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,sBAAQ,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.js';\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"]}
|
|
@@ -3,7 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.SCRIPTS_PATH = void 0;
|
|
7
|
+
exports.serializeInputs = serializeInputs;
|
|
8
|
+
exports.deserializeInputs = deserializeInputs;
|
|
9
|
+
exports.createCustomFunctionCall = createCustomFunctionCall;
|
|
7
10
|
const path_1 = __importDefault(require("path"));
|
|
8
11
|
const this_file_1 = require("this-file");
|
|
9
12
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
@@ -16,14 +19,12 @@ function serializeInputs(inputs) {
|
|
|
16
19
|
{ serializedValue: input === undefined ? undefined : JSON.stringify(input.value) },
|
|
17
20
|
]));
|
|
18
21
|
}
|
|
19
|
-
exports.serializeInputs = serializeInputs;
|
|
20
22
|
function deserializeInputs(inputs) {
|
|
21
23
|
return Object.fromEntries(Object.entries(inputs).map(([id, { serializedValue }]) => [
|
|
22
24
|
id,
|
|
23
25
|
{ value: serializedValue === undefined ? undefined : JSON.parse(serializedValue) },
|
|
24
26
|
]));
|
|
25
27
|
}
|
|
26
|
-
exports.deserializeInputs = deserializeInputs;
|
|
27
28
|
function createCustomFunctionCall(rawCustomFunctionModulePath) {
|
|
28
29
|
return async (ctx, { env, inputs, outputs }) => {
|
|
29
30
|
let customFunctionModulePath = rawCustomFunctionModulePath;
|
|
@@ -54,5 +55,4 @@ function createCustomFunctionCall(rawCustomFunctionModulePath) {
|
|
|
54
55
|
}
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
|
-
exports.createCustomFunctionCall = createCustomFunctionCall;
|
|
58
58
|
//# sourceMappingURL=customFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customFunction.js","sourceRoot":"","sources":["../../src/utils/customFunction.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"customFunction.js","sourceRoot":"","sources":["../../src/utils/customFunction.ts"],"names":[],"mappings":";;;;;;AAyBA,0CASC;AAED,8CASC;AAED,4DAuCC;AAtFD,gDAAwB;AAExB,yCAA0C;AAC1C,wDAA0B;AAO1B,+CAA8C;AAE9C,MAAM,WAAW,GAAG,IAAA,yBAAa,GAAE,CAAC;AAEvB,QAAA,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;AAW1F,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,qBAAU,EACd,MAAM,EACN;gBACE,cAAI,CAAC,IAAI,CAAC,oBAAY,EAAE,uBAAuB,CAAC;gBAChD,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 { createContext } from 'this-file';\nimport fs from 'fs-extra';\n\nimport { BuildStepFunction } from '../BuildStep.js';\nimport { BuildStepEnv } from '../BuildStepEnv.js';\nimport { SerializedBuildStepOutput } from '../BuildStepOutput.js';\nimport { SerializedBuildStepContext } from '../BuildStepContext.js';\n\nimport { spawnAsync } from './shell/spawn.js';\n\nconst thisFileCtx = createContext();\n\nexport const SCRIPTS_PATH = path.join(thisFileCtx.dirname, '../../dist_commonjs/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.cjs'),\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,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.duplicates =
|
|
3
|
+
exports.duplicates = duplicates;
|
|
4
4
|
function duplicates(items) {
|
|
5
5
|
const visitedItemsSet = new Set();
|
|
6
6
|
const duplicatedItemsSet = new Set();
|
|
@@ -14,5 +14,4 @@ function duplicates(items) {
|
|
|
14
14
|
}
|
|
15
15
|
return [...duplicatedItemsSet];
|
|
16
16
|
}
|
|
17
|
-
exports.duplicates = duplicates;
|
|
18
17
|
//# sourceMappingURL=duplicates.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../../src/utils/expodash/duplicates.ts"],"names":[],"mappings":"
|
|
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,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.uniq =
|
|
3
|
+
exports.uniq = uniq;
|
|
4
4
|
function uniq(items) {
|
|
5
5
|
const set = new Set(items);
|
|
6
6
|
return [...set];
|
|
7
7
|
}
|
|
8
|
-
exports.uniq = uniq;
|
|
9
8
|
//# sourceMappingURL=uniq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniq.js","sourceRoot":"","sources":["../../../src/utils/expodash/uniq.ts"],"names":[],"mappings":"
|
|
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"]}
|
|
@@ -8,7 +8,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
9
|
};
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.jsepEval =
|
|
11
|
+
exports.jsepEval = jsepEval;
|
|
12
12
|
const assert_1 = __importDefault(require("assert"));
|
|
13
13
|
const jsep_1 = __importDefault(require("jsep"));
|
|
14
14
|
const lodash_get_1 = __importDefault(require("lodash.get"));
|
|
@@ -172,5 +172,4 @@ function jsepEval(expression, context) {
|
|
|
172
172
|
const tree = (0, jsep_1.default)(expression);
|
|
173
173
|
return evaluateExpressionNode(tree, context !== null && context !== void 0 ? context : {});
|
|
174
174
|
}
|
|
175
|
-
exports.jsepEval = jsepEval;
|
|
176
175
|
//# sourceMappingURL=jsepEval.js.map
|
|
@@ -1 +1 @@
|
|
|
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
|
+
{"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,11 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nullthrows =
|
|
3
|
+
exports.nullthrows = nullthrows;
|
|
4
4
|
function nullthrows(value, message) {
|
|
5
5
|
if (value != null) {
|
|
6
6
|
return value;
|
|
7
7
|
}
|
|
8
8
|
throw new TypeError(message !== null && message !== void 0 ? message : `Expected value not to be null or undefined but got ${value}`);
|
|
9
9
|
}
|
|
10
|
-
exports.nullthrows = nullthrows;
|
|
11
10
|
//# sourceMappingURL=nullthrows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullthrows.js","sourceRoot":"","sources":["../../src/utils/nullthrows.ts"],"names":[],"mappings":"
|
|
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"]}
|
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.getDefaultShell = getDefaultShell;
|
|
7
|
+
exports.getShellCommandAndArgs = getShellCommandAndArgs;
|
|
7
8
|
const os_1 = __importDefault(require("os"));
|
|
8
9
|
// stolen from https://circleci.com/docs/configuration-reference/
|
|
9
10
|
const DEFAULT_SHELL = '/bin/bash -eo pipefail';
|
|
@@ -19,7 +20,6 @@ function getDefaultShell(platform = os_1.default.platform()) {
|
|
|
19
20
|
return DEFAULT_SHELL;
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
|
-
exports.getDefaultShell = getDefaultShell;
|
|
23
23
|
function getShellCommandAndArgs(shell, script) {
|
|
24
24
|
const splits = shell.split(' ');
|
|
25
25
|
const command = splits[0];
|
|
@@ -32,5 +32,4 @@ function getShellCommandAndArgs(shell, script) {
|
|
|
32
32
|
args,
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
-
exports.getShellCommandAndArgs = getShellCommandAndArgs;
|
|
36
35
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/utils/shell/command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/utils/shell/command.ts"],"names":[],"mappings":";;;;;AAQA,0CAOC;AAED,wDAcC;AA/BD,4CAAoB;AAEpB,iEAAiE;AACjE,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,MAAM,iBAAiB,GAA6C;IAClE,MAAM,EAAE,gCAAgC;CACzC,CAAC;AAEF,SAAgB,eAAe,CAAC,WAA4B,YAAE,CAAC,QAAQ,EAAE;IACvE,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,qBAAqB,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,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":["import os from 'os';\n\n// stolen from https://circleci.com/docs/configuration-reference/\nconst DEFAULT_SHELL = '/bin/bash -eo pipefail';\nconst SHELL_BY_PLATFORM: Partial<Record<NodeJS.Platform, string>> = {\n darwin: '/bin/bash --login -eo pipefail',\n};\n\nexport function getDefaultShell(platform: NodeJS.Platform = os.platform()): string {\n const platformSpecificShell = SHELL_BY_PLATFORM[platform];\n if (platformSpecificShell) {\n return platformSpecificShell;\n } else {\n return DEFAULT_SHELL;\n }\n}\n\nexport 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"]}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.spawnAsync =
|
|
6
|
+
exports.spawnAsync = spawnAsync;
|
|
7
7
|
const logger_1 = require("@expo/logger");
|
|
8
8
|
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
9
9
|
// If
|
|
@@ -19,5 +19,4 @@ function spawnAsync(command, args, allOptions = {
|
|
|
19
19
|
}
|
|
20
20
|
return promise;
|
|
21
21
|
}
|
|
22
|
-
exports.spawnAsync = spawnAsync;
|
|
23
22
|
//# sourceMappingURL=spawn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/utils/shell/spawn.ts"],"names":[],"mappings":"
|
|
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"]}
|
|
@@ -3,7 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX = exports.BUILD_GLOBAL_CONTEXT_EXPRESSION_REGEXP = exports.BUILD_STEP_OUTPUT_EXPRESSION_REGEXP = exports.BUILD_STEP_INPUT_EXPRESSION_REGEXP = void 0;
|
|
7
|
+
exports.interpolateWithInputs = interpolateWithInputs;
|
|
8
|
+
exports.interpolateWithOutputs = interpolateWithOutputs;
|
|
9
|
+
exports.interpolateStringWithOutputs = interpolateStringWithOutputs;
|
|
10
|
+
exports.interpolateObjectWithOutputs = interpolateObjectWithOutputs;
|
|
11
|
+
exports.getObjectValueForInterpolation = getObjectValueForInterpolation;
|
|
12
|
+
exports.interpolateWithGlobalContext = interpolateWithGlobalContext;
|
|
13
|
+
exports.interpolateStringWithGlobalContext = interpolateStringWithGlobalContext;
|
|
14
|
+
exports.interpolateObjectWithGlobalContext = interpolateObjectWithGlobalContext;
|
|
15
|
+
exports.findOutputPaths = findOutputPaths;
|
|
16
|
+
exports.parseOutputPath = parseOutputPath;
|
|
7
17
|
const lodash_get_1 = __importDefault(require("lodash.get"));
|
|
8
18
|
const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
|
|
9
19
|
const BuildStepInput_js_1 = require("../BuildStepInput.cjs");
|
|
@@ -16,7 +26,6 @@ exports.BUILD_STEP_OR_BUILD_GLOBAL_CONTEXT_REFERENCE_REGEX = /\${\s*((steps|eas)
|
|
|
16
26
|
function interpolateWithInputs(templateString, inputs) {
|
|
17
27
|
return interpolate(templateString, exports.BUILD_STEP_INPUT_EXPRESSION_REGEXP, inputs);
|
|
18
28
|
}
|
|
19
|
-
exports.interpolateWithInputs = interpolateWithInputs;
|
|
20
29
|
function interpolateWithOutputs(interpolableValue, fn) {
|
|
21
30
|
if (typeof interpolableValue === 'string') {
|
|
22
31
|
return interpolateStringWithOutputs(interpolableValue, fn);
|
|
@@ -25,11 +34,9 @@ function interpolateWithOutputs(interpolableValue, fn) {
|
|
|
25
34
|
return interpolateObjectWithOutputs(interpolableValue, fn);
|
|
26
35
|
}
|
|
27
36
|
}
|
|
28
|
-
exports.interpolateWithOutputs = interpolateWithOutputs;
|
|
29
37
|
function interpolateStringWithOutputs(templateString, fn) {
|
|
30
38
|
return interpolate(templateString, exports.BUILD_STEP_OUTPUT_EXPRESSION_REGEXP, fn);
|
|
31
39
|
}
|
|
32
|
-
exports.interpolateStringWithOutputs = interpolateStringWithOutputs;
|
|
33
40
|
function interpolateObjectWithOutputs(interpolableObject, fn) {
|
|
34
41
|
const interpolableObjectCopy = (0, lodash_clonedeep_1.default)(interpolableObject);
|
|
35
42
|
Object.keys(interpolableObject).forEach((property) => {
|
|
@@ -41,7 +48,6 @@ function interpolateObjectWithOutputs(interpolableObject, fn) {
|
|
|
41
48
|
});
|
|
42
49
|
return interpolableObjectCopy;
|
|
43
50
|
}
|
|
44
|
-
exports.interpolateObjectWithOutputs = interpolateObjectWithOutputs;
|
|
45
51
|
function getObjectValueForInterpolation(path, obj) {
|
|
46
52
|
const value = (0, lodash_get_1.default)(obj, path);
|
|
47
53
|
if (value === undefined) {
|
|
@@ -55,7 +61,6 @@ function getObjectValueForInterpolation(path, obj) {
|
|
|
55
61
|
}
|
|
56
62
|
return value;
|
|
57
63
|
}
|
|
58
|
-
exports.getObjectValueForInterpolation = getObjectValueForInterpolation;
|
|
59
64
|
function interpolateWithGlobalContext(interpolableValue, fn) {
|
|
60
65
|
if (typeof interpolableValue === 'string') {
|
|
61
66
|
return interpolateStringWithGlobalContext(interpolableValue, fn);
|
|
@@ -64,11 +69,9 @@ function interpolateWithGlobalContext(interpolableValue, fn) {
|
|
|
64
69
|
return interpolateObjectWithGlobalContext(interpolableValue, fn);
|
|
65
70
|
}
|
|
66
71
|
}
|
|
67
|
-
exports.interpolateWithGlobalContext = interpolateWithGlobalContext;
|
|
68
72
|
function interpolateStringWithGlobalContext(templateString, fn) {
|
|
69
73
|
return interpolate(templateString, exports.BUILD_GLOBAL_CONTEXT_EXPRESSION_REGEXP, fn);
|
|
70
74
|
}
|
|
71
|
-
exports.interpolateStringWithGlobalContext = interpolateStringWithGlobalContext;
|
|
72
75
|
function interpolateObjectWithGlobalContext(templateObject, fn) {
|
|
73
76
|
const templateObjectCopy = (0, lodash_clonedeep_1.default)(templateObject);
|
|
74
77
|
Object.keys(templateObject).forEach((property) => {
|
|
@@ -80,7 +83,6 @@ function interpolateObjectWithGlobalContext(templateObject, fn) {
|
|
|
80
83
|
});
|
|
81
84
|
return templateObjectCopy;
|
|
82
85
|
}
|
|
83
|
-
exports.interpolateObjectWithGlobalContext = interpolateObjectWithGlobalContext;
|
|
84
86
|
function interpolate(templateString, regex, varsOrFn) {
|
|
85
87
|
const matched = templateString.match(new RegExp(regex, 'g'));
|
|
86
88
|
if (!matched) {
|
|
@@ -109,7 +111,6 @@ function findOutputPaths(templateString) {
|
|
|
109
111
|
}
|
|
110
112
|
return result;
|
|
111
113
|
}
|
|
112
|
-
exports.findOutputPaths = findOutputPaths;
|
|
113
114
|
function parseOutputPath(outputPathWithObjectName) {
|
|
114
115
|
const splits = outputPathWithObjectName.split('.').slice(1);
|
|
115
116
|
if (splits.length !== 2) {
|
|
@@ -118,5 +119,4 @@ function parseOutputPath(outputPathWithObjectName) {
|
|
|
118
119
|
const [stepId, outputId] = splits;
|
|
119
120
|
return { stepId, outputId };
|
|
120
121
|
}
|
|
121
|
-
exports.parseOutputPath = parseOutputPath;
|
|
122
122
|
//# sourceMappingURL=template.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":";;;;;;
|
|
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.js';\nimport { BuildConfigError, BuildStepRuntimeError } from '../errors.js';\n\nimport { nullthrows } from './nullthrows.js';\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"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/steps",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.206-alpha.0",
|
|
5
5
|
"main": "./dist_commonjs/index.cjs",
|
|
6
6
|
"types": "./dist_esm/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -42,14 +42,14 @@
|
|
|
42
42
|
"ts-jest": "^29.1.4",
|
|
43
43
|
"ts-mockito": "^2.6.1",
|
|
44
44
|
"ts-node": "^10.9.2",
|
|
45
|
-
"typescript": "^5.4
|
|
45
|
+
"typescript": "^5.5.4"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
48
|
"node": ">=18"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@expo/eas-build-job": "1.0.
|
|
52
|
-
"@expo/logger": "1.0.
|
|
51
|
+
"@expo/eas-build-job": "1.0.206-alpha.0",
|
|
52
|
+
"@expo/logger": "1.0.206-alpha.0",
|
|
53
53
|
"@expo/spawn-async": "^1.7.2",
|
|
54
54
|
"arg": "^5.0.2",
|
|
55
55
|
"fs-extra": "^11.2.0",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"node": "20.14.0",
|
|
66
66
|
"yarn": "1.22.21"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "2afd3dccd564307d8a9e44a4180f80e1628372bd"
|
|
69
69
|
}
|