@enclave-run/sdk 0.0.0-dev.5 → 0.0.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/index.js +67 -25
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +67 -25
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -24
package/dist/index.js
CHANGED
|
@@ -127,7 +127,7 @@ var import_openapi_fetch = __toESM(require("openapi-fetch"));
|
|
|
127
127
|
var import_platform2 = __toESM(require("platform"));
|
|
128
128
|
|
|
129
129
|
// package.json
|
|
130
|
-
var version = "0.0.0
|
|
130
|
+
var version = "0.0.0";
|
|
131
131
|
|
|
132
132
|
// src/utils.ts
|
|
133
133
|
var import_platform = __toESM(require("platform"));
|
|
@@ -353,11 +353,11 @@ function formatLog(log) {
|
|
|
353
353
|
return JSON.parse(JSON.stringify(log));
|
|
354
354
|
}
|
|
355
355
|
function createRpcLogger(logger) {
|
|
356
|
-
function logEach(
|
|
356
|
+
function logEach(stream2) {
|
|
357
357
|
return __asyncGenerator(this, null, function* () {
|
|
358
358
|
var _a3;
|
|
359
359
|
try {
|
|
360
|
-
for (var iter = __forAwait(
|
|
360
|
+
for (var iter = __forAwait(stream2), more, temp, error; more = !(temp = yield new __await(iter.next())).done; more = false) {
|
|
361
361
|
const m = temp.value;
|
|
362
362
|
(_a3 = logger.debug) == null ? void 0 : _a3.call(logger, "Response stream:", formatLog(m));
|
|
363
363
|
yield m;
|
|
@@ -4479,6 +4479,10 @@ var SandboxRegionScope = class {
|
|
|
4479
4479
|
}
|
|
4480
4480
|
};
|
|
4481
4481
|
|
|
4482
|
+
// src/template/buildApi.ts
|
|
4483
|
+
var import_node_fs2 = __toESM(require("fs"));
|
|
4484
|
+
var import_node_stream = __toESM(require("stream"));
|
|
4485
|
+
|
|
4482
4486
|
// src/template/logger.ts
|
|
4483
4487
|
var import_chalk = __toESM(require("chalk"));
|
|
4484
4488
|
var LogEntry = class {
|
|
@@ -4600,11 +4604,13 @@ function defaultBuildLogger(options) {
|
|
|
4600
4604
|
// src/template/utils.ts
|
|
4601
4605
|
var import_node_crypto = __toESM(require("crypto"));
|
|
4602
4606
|
var import_node_fs = __toESM(require("fs"));
|
|
4607
|
+
var import_node_os = __toESM(require("os"));
|
|
4603
4608
|
var import_node_path = __toESM(require("path"));
|
|
4604
4609
|
var import_node_url = __toESM(require("url"));
|
|
4605
4610
|
|
|
4606
4611
|
// src/template/consts.ts
|
|
4607
4612
|
var FINALIZE_STEP_NAME = "finalize";
|
|
4613
|
+
var FILE_UPLOAD_TIMEOUT_MS = 36e5;
|
|
4608
4614
|
var BASE_STEP_NAME = "base";
|
|
4609
4615
|
var STACK_TRACE_DEPTH = 3;
|
|
4610
4616
|
var RESOLVE_SYMLINKS = false;
|
|
@@ -4756,7 +4762,7 @@ function getCallerDirectory(depth) {
|
|
|
4756
4762
|
function padOctal(mode) {
|
|
4757
4763
|
return mode.toString(8).padStart(4, "0");
|
|
4758
4764
|
}
|
|
4759
|
-
async function
|
|
4765
|
+
async function getTarArchiveInputs(fileName, fileContextPath, ignorePatterns) {
|
|
4760
4766
|
const { create } = await dynamicImport("tar");
|
|
4761
4767
|
const allFiles = await getAllFilesInPath(
|
|
4762
4768
|
fileName,
|
|
@@ -4764,24 +4770,40 @@ async function tarFileStream(fileName, fileContextPath, ignorePatterns, resolveS
|
|
|
4764
4770
|
ignorePatterns,
|
|
4765
4771
|
true
|
|
4766
4772
|
);
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
cwd: fileContextPath,
|
|
4772
|
-
follow: resolveSymlinks,
|
|
4773
|
-
noDirRecurse: true
|
|
4774
|
-
},
|
|
4775
|
-
filePaths
|
|
4776
|
-
);
|
|
4773
|
+
return {
|
|
4774
|
+
create,
|
|
4775
|
+
filePaths: allFiles.map((file) => file.relativePosix())
|
|
4776
|
+
};
|
|
4777
4777
|
}
|
|
4778
|
-
async function
|
|
4779
|
-
|
|
4778
|
+
async function spoolTarArchive(fileName, fileContextPath, ignorePatterns, resolveSymlinks) {
|
|
4779
|
+
const { create, filePaths } = await getTarArchiveInputs(
|
|
4780
4780
|
fileName,
|
|
4781
4781
|
fileContextPath,
|
|
4782
|
-
ignorePatterns
|
|
4783
|
-
resolveSymlinks
|
|
4782
|
+
ignorePatterns
|
|
4784
4783
|
);
|
|
4784
|
+
const tmpDir = await import_node_fs.default.promises.mkdtemp(
|
|
4785
|
+
import_node_path.default.join(import_node_os.default.tmpdir(), "enclave-template-")
|
|
4786
|
+
);
|
|
4787
|
+
const tarPath = import_node_path.default.join(tmpDir, "context.tar.gz");
|
|
4788
|
+
const cleanup = () => import_node_fs.default.promises.rm(tmpDir, { recursive: true, force: true }).catch(() => {
|
|
4789
|
+
});
|
|
4790
|
+
try {
|
|
4791
|
+
await create(
|
|
4792
|
+
{
|
|
4793
|
+
gzip: true,
|
|
4794
|
+
cwd: fileContextPath,
|
|
4795
|
+
follow: resolveSymlinks,
|
|
4796
|
+
noDirRecurse: true,
|
|
4797
|
+
file: tarPath
|
|
4798
|
+
},
|
|
4799
|
+
filePaths
|
|
4800
|
+
);
|
|
4801
|
+
const { size } = await import_node_fs.default.promises.stat(tarPath);
|
|
4802
|
+
return { path: tarPath, size, cleanup };
|
|
4803
|
+
} catch (error) {
|
|
4804
|
+
await cleanup();
|
|
4805
|
+
throw error;
|
|
4806
|
+
}
|
|
4785
4807
|
}
|
|
4786
4808
|
function getBuildStepIndex(step, stackTracesLength) {
|
|
4787
4809
|
if (step === BASE_STEP_NAME) {
|
|
@@ -4841,22 +4863,34 @@ async function getFileUploadLink(client, { templateID, filesHash }, stackTrace)
|
|
|
4841
4863
|
}
|
|
4842
4864
|
async function uploadFile(options, stackTrace) {
|
|
4843
4865
|
const { fileName, url: url2, fileContextPath, ignorePatterns, resolveSymlinks } = options;
|
|
4866
|
+
let cleanup;
|
|
4867
|
+
let bodyStream;
|
|
4844
4868
|
try {
|
|
4845
|
-
const
|
|
4869
|
+
const archive = await spoolTarArchive(
|
|
4846
4870
|
fileName,
|
|
4847
4871
|
fileContextPath,
|
|
4848
4872
|
ignorePatterns,
|
|
4849
4873
|
resolveSymlinks
|
|
4850
4874
|
);
|
|
4875
|
+
cleanup = archive.cleanup;
|
|
4876
|
+
bodyStream = import_node_fs2.default.createReadStream(archive.path);
|
|
4851
4877
|
const res = await fetch(url2, {
|
|
4852
4878
|
method: "PUT",
|
|
4853
|
-
|
|
4854
|
-
|
|
4879
|
+
body: import_node_stream.default.Readable.toWeb(bodyStream),
|
|
4880
|
+
headers: {
|
|
4881
|
+
"Content-Length": archive.size.toString()
|
|
4882
|
+
},
|
|
4883
|
+
signal: AbortSignal.timeout(FILE_UPLOAD_TIMEOUT_MS),
|
|
4884
|
+
// Node fetch requires duplex for a streaming request body, but the DOM
|
|
4885
|
+
// RequestInit type does not expose it.
|
|
4886
|
+
// @ts-expect-error Node fetch extension
|
|
4855
4887
|
duplex: "half"
|
|
4856
4888
|
});
|
|
4857
4889
|
if (!res.ok) {
|
|
4890
|
+
const responseDetails = (await res.text().catch(() => "")).slice(0, 4096);
|
|
4891
|
+
const status = `${res.status} ${res.statusText}`.trim();
|
|
4858
4892
|
throw new FileUploadError(
|
|
4859
|
-
`Failed to upload file: ${
|
|
4893
|
+
`Failed to upload file: ${status}${responseDetails ? ` - ${responseDetails}` : ""}`,
|
|
4860
4894
|
stackTrace
|
|
4861
4895
|
);
|
|
4862
4896
|
}
|
|
@@ -4865,6 +4899,14 @@ async function uploadFile(options, stackTrace) {
|
|
|
4865
4899
|
throw error;
|
|
4866
4900
|
}
|
|
4867
4901
|
throw new FileUploadError(`Failed to upload file: ${error}`, stackTrace);
|
|
4902
|
+
} finally {
|
|
4903
|
+
if (bodyStream && !bodyStream.closed) {
|
|
4904
|
+
await new Promise((resolve) => {
|
|
4905
|
+
bodyStream == null ? void 0 : bodyStream.once("close", resolve);
|
|
4906
|
+
bodyStream == null ? void 0 : bodyStream.destroy();
|
|
4907
|
+
});
|
|
4908
|
+
}
|
|
4909
|
+
await (cleanup == null ? void 0 : cleanup());
|
|
4868
4910
|
}
|
|
4869
4911
|
}
|
|
4870
4912
|
async function triggerBuild(client, { templateID, buildID, template }) {
|
|
@@ -5051,7 +5093,7 @@ async function getTemplateTags(client, { templateID }) {
|
|
|
5051
5093
|
|
|
5052
5094
|
// src/template/dockerfileParser.ts
|
|
5053
5095
|
var import_dockerfile_ast = require("dockerfile-ast");
|
|
5054
|
-
var
|
|
5096
|
+
var import_node_fs3 = __toESM(require("fs"));
|
|
5055
5097
|
|
|
5056
5098
|
// src/template/readycmd.ts
|
|
5057
5099
|
var ReadyCmd = class {
|
|
@@ -5088,8 +5130,8 @@ function waitForTimeout(timeout) {
|
|
|
5088
5130
|
function parseDockerfile(dockerfileContentOrPath, templateBuilder) {
|
|
5089
5131
|
let dockerfileContent;
|
|
5090
5132
|
try {
|
|
5091
|
-
if (
|
|
5092
|
-
dockerfileContent =
|
|
5133
|
+
if (import_node_fs3.default.existsSync(dockerfileContentOrPath) && import_node_fs3.default.statSync(dockerfileContentOrPath).isFile()) {
|
|
5134
|
+
dockerfileContent = import_node_fs3.default.readFileSync(dockerfileContentOrPath, "utf-8");
|
|
5093
5135
|
} else {
|
|
5094
5136
|
dockerfileContent = dockerfileContentOrPath;
|
|
5095
5137
|
}
|