@expo/build-tools 1.0.179 → 1.0.180
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.
|
@@ -64,7 +64,7 @@ function createDownloadBuildFunction() {
|
|
|
64
64
|
}
|
|
65
65
|
exports.createDownloadBuildFunction = createDownloadBuildFunction;
|
|
66
66
|
async function downloadBuildAsync({ logger, buildId, expoApiServerURL, expoToken, extensions, }) {
|
|
67
|
-
const
|
|
67
|
+
const downloadDestinationDirectory = await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'download_build-downloaded-'));
|
|
68
68
|
const response = await (0, retryOnDNSFailure_1.retryOnDNSFailure)(node_fetch_1.default)(new URL(`/v2/artifacts/eas/${buildId}`, expoApiServerURL), {
|
|
69
69
|
headers: expoToken ? { Authorization: `Bearer ${expoToken}` } : undefined,
|
|
70
70
|
});
|
|
@@ -77,7 +77,7 @@ async function downloadBuildAsync({ logger, buildId, expoApiServerURL, expoToken
|
|
|
77
77
|
const archiveFilename = node_path_1.default
|
|
78
78
|
.basename(new URL(response.url).pathname)
|
|
79
79
|
.replace(/([^a-z0-9.-]+)/gi, '_');
|
|
80
|
-
const archivePath = node_path_1.default.join(
|
|
80
|
+
const archivePath = node_path_1.default.join(downloadDestinationDirectory, archiveFilename);
|
|
81
81
|
await streamPipeline(response.body, node_fs_1.default.createWriteStream(archivePath));
|
|
82
82
|
const { size } = await node_fs_1.default.promises.stat(archivePath);
|
|
83
83
|
logger.info(`Downloaded ${archivePath} (${(0, artifacts_1.formatBytes)(size)} bytes).`);
|
|
@@ -86,7 +86,7 @@ async function downloadBuildAsync({ logger, buildId, expoApiServerURL, expoToken
|
|
|
86
86
|
logger.info(`Artifact is not a .tar.gz archive, skipping decompression and validation.`);
|
|
87
87
|
return { artifactPath: archivePath };
|
|
88
88
|
}
|
|
89
|
-
const extractionDirectory = await node_fs_1.default.promises.mkdtemp(node_os_1.default.tmpdir());
|
|
89
|
+
const extractionDirectory = await node_fs_1.default.promises.mkdtemp(node_path_1.default.join(node_os_1.default.tmpdir(), 'download_build-extracted-'));
|
|
90
90
|
await (0, files_1.decompressTarAsync)({
|
|
91
91
|
archivePath,
|
|
92
92
|
destinationDirectory: extractionDirectory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadBuild.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadBuild.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,sDAAyB;AACzB,sDAAyB;AACzB,oDAA4B;AAC5B,+BAAiC;AAEjC,uCAKqB;AACrB,2CAA4C;AAC5C,4DAA+B;AAC/B,yCAAiC;AACjC,6BAAwB;AAExB,4DAAkE;AAElE,qEAAkE;AAClE,qDAAoD;AACpD,6CAAyE;AACzE,iDAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,gBAAM,CAAC,QAAQ,CAAC,CAAC;AAElD,SAAgB,2BAA2B;IACzC,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,YAAY;gBAChB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,IAAI;gBACtD,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;aAC3C,CAAC;SACH;QACD,eAAe,EAAE;YACf,uBAAe,CAAC,cAAc,CAAC;gBAC7B,EAAE,EAAE,eAAe;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE;;YAC/C,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;YAE5B,MAAM,UAAU,GAAG,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,KAAK,CAAC,CAAC;YAE/C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAAC;gBAChD,MAAM;gBACN,OAAO;gBACP,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB;gBAChE,SAAS,EAAE,MAAA,GAAG,CAAC,UAAU,mCAAI,IAAI;gBACjC,UAAU;aACX,CAAC,CAAC;YAEH,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AA3CD,kEA2CC;AAEM,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,UAAU,GAOX;IACC,MAAM,
|
|
1
|
+
{"version":3,"file":"downloadBuild.js","sourceRoot":"","sources":["../../../src/steps/functions/downloadBuild.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport stream from 'stream';\nimport { promisify } from 'util';\n\nimport {\n BuildFunction,\n BuildStepInput,\n BuildStepInputValueTypeName,\n BuildStepOutput,\n} from '@expo/steps';\nimport { asyncResult } from '@expo/results';\nimport fetch from 'node-fetch';\nimport { glob } from 'fast-glob';\nimport { z } from 'zod';\nimport { bunyan } from '@expo/logger';\nimport { UserFacingError } from '@expo/eas-build-job/dist/errors';\n\nimport { retryOnDNSFailure } from '../../utils/retryOnDNSFailure';\nimport { formatBytes } from '../../utils/artifacts';\nimport { decompressTarAsync, isFileTarGzAsync } from '../../utils/files';\nimport { pluralize } from '../../utils/strings';\n\nconst streamPipeline = promisify(stream.pipeline);\n\nexport function createDownloadBuildFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'download_build',\n name: 'Download build',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'build_id',\n required: true,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'extensions',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.JSON,\n defaultValue: ['apk', 'aab', 'ipa', 'app'],\n }),\n ],\n outputProviders: [\n BuildStepOutput.createProvider({\n id: 'artifact_path',\n required: true,\n }),\n ],\n fn: async (stepsCtx, { inputs, outputs, env }) => {\n const { logger } = stepsCtx;\n\n const extensions = z.array(z.string()).parse(inputs.extensions.value);\n logger.info(`Expected extensions: [${extensions.join(', ')}]`);\n const buildId = z.string().uuid().parse(inputs.build_id.value);\n logger.info(`Downloading build ${buildId}...`);\n\n const { artifactPath } = await downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL: stepsCtx.global.staticContext.expoApiServerURL,\n expoToken: env.EXPO_TOKEN ?? null,\n extensions,\n });\n\n outputs.artifact_path.set(artifactPath);\n },\n });\n}\n\nexport async function downloadBuildAsync({\n logger,\n buildId,\n expoApiServerURL,\n expoToken,\n extensions,\n}: {\n logger: bunyan;\n buildId: string;\n expoApiServerURL: string;\n expoToken: string | null;\n extensions: string[];\n}): Promise<{ artifactPath: string }> {\n const downloadDestinationDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-downloaded-')\n );\n\n const response = await retryOnDNSFailure(fetch)(\n new URL(`/v2/artifacts/eas/${buildId}`, expoApiServerURL),\n {\n headers: expoToken ? { Authorization: `Bearer ${expoToken}` } : undefined,\n }\n );\n\n if (!response.ok) {\n const textResult = await asyncResult(response.text());\n throw new Error(`Unexpected response from server (${response.status}): ${textResult.value}`);\n }\n\n // URL may contain percent-encoded characters, e.g. my%20file.apk\n // this replaces all non-alphanumeric characters (excluding dot) with underscore\n const archiveFilename = path\n .basename(new URL(response.url).pathname)\n .replace(/([^a-z0-9.-]+)/gi, '_');\n const archivePath = path.join(downloadDestinationDirectory, archiveFilename);\n\n await streamPipeline(response.body, fs.createWriteStream(archivePath));\n\n const { size } = await fs.promises.stat(archivePath);\n\n logger.info(`Downloaded ${archivePath} (${formatBytes(size)} bytes).`);\n\n const isFileATarGzArchive = await isFileTarGzAsync(archivePath);\n\n if (!isFileATarGzArchive) {\n logger.info(`Artifact is not a .tar.gz archive, skipping decompression and validation.`);\n return { artifactPath: archivePath };\n }\n\n const extractionDirectory = await fs.promises.mkdtemp(\n path.join(os.tmpdir(), 'download_build-extracted-')\n );\n await decompressTarAsync({\n archivePath,\n destinationDirectory: extractionDirectory,\n });\n\n const matchingFiles = await glob(`**/*.(${extensions.join('|')})`, {\n absolute: true,\n cwd: extractionDirectory,\n onlyFiles: false,\n onlyDirectories: false,\n });\n\n if (matchingFiles.length === 0) {\n throw new UserFacingError(\n 'EAS_DOWNLOAD_BUILD_NO_MATCHING_FILES',\n `No ${extensions.map((ext) => `.${ext}`).join(', ')} entries found in the archive.`\n );\n }\n\n logger.info(\n `Found ${matchingFiles.length} matching ${pluralize(matchingFiles.length, 'entry')}:\\n${matchingFiles.map((f) => `- ${path.relative(extractionDirectory, f)}`).join('\\n')}`\n );\n\n return { artifactPath: matchingFiles[0] };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/build-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.180",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
"node": "20.14.0",
|
|
77
77
|
"yarn": "1.22.21"
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "85912fba9fd2247b28e17d6bd8cd678c35a056da"
|
|
80
80
|
}
|