@blaxel/core 0.2.59-preview.42 → 0.2.59-preview.43
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/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/client/sdk.gen.js +142 -155
- package/dist/cjs/common/settings.js +2 -2
- package/dist/cjs/sandbox/action.js +2 -2
- package/dist/cjs/sandbox/client/sdk.gen.js +1 -103
- package/dist/cjs/sandbox/interpreter.js +7 -4
- package/dist/cjs/sandbox/preview.js +11 -8
- package/dist/cjs/sandbox/sandbox.js +3 -3
- package/dist/cjs/sandbox/session.js +11 -11
- package/dist/cjs/sandbox/types.js +4 -1
- package/dist/cjs/tools/index.js +1 -3
- package/dist/cjs/types/client/sdk.gen.d.ts +177 -166
- package/dist/cjs/types/client/types.gen.d.ts +1805 -1375
- package/dist/cjs/types/sandbox/client/sdk.gen.d.ts +1 -31
- package/dist/cjs/types/sandbox/client/types.gen.d.ts +0 -83
- package/dist/cjs/types/sandbox/preview.d.ts +2 -2
- package/dist/cjs/types/sandbox/sandbox.d.ts +3 -3
- package/dist/cjs/types/volume/index.d.ts +3 -3
- package/dist/cjs/volume/index.js +12 -14
- package/dist/cjs-browser/.tsbuildinfo +1 -1
- package/dist/cjs-browser/client/sdk.gen.js +142 -155
- package/dist/cjs-browser/common/settings.js +2 -2
- package/dist/cjs-browser/sandbox/action.js +2 -2
- package/dist/cjs-browser/sandbox/client/sdk.gen.js +1 -103
- package/dist/cjs-browser/sandbox/interpreter.js +7 -4
- package/dist/cjs-browser/sandbox/preview.js +11 -8
- package/dist/cjs-browser/sandbox/sandbox.js +3 -3
- package/dist/cjs-browser/sandbox/session.js +11 -11
- package/dist/cjs-browser/sandbox/types.js +4 -1
- package/dist/cjs-browser/tools/index.js +1 -3
- package/dist/cjs-browser/types/client/sdk.gen.d.ts +177 -166
- package/dist/cjs-browser/types/client/types.gen.d.ts +1805 -1375
- package/dist/cjs-browser/types/sandbox/client/sdk.gen.d.ts +1 -31
- package/dist/cjs-browser/types/sandbox/client/types.gen.d.ts +0 -83
- package/dist/cjs-browser/types/sandbox/preview.d.ts +2 -2
- package/dist/cjs-browser/types/sandbox/sandbox.d.ts +3 -3
- package/dist/cjs-browser/types/volume/index.d.ts +3 -3
- package/dist/cjs-browser/volume/index.js +12 -14
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/client/sdk.gen.js +140 -151
- package/dist/esm/common/settings.js +2 -2
- package/dist/esm/sandbox/action.js +2 -2
- package/dist/esm/sandbox/client/sdk.gen.js +0 -96
- package/dist/esm/sandbox/interpreter.js +7 -4
- package/dist/esm/sandbox/preview.js +11 -8
- package/dist/esm/sandbox/sandbox.js +3 -3
- package/dist/esm/sandbox/session.js +11 -11
- package/dist/esm/sandbox/types.js +4 -1
- package/dist/esm/tools/index.js +1 -3
- package/dist/esm/volume/index.js +12 -14
- package/dist/esm-browser/.tsbuildinfo +1 -1
- package/dist/esm-browser/client/sdk.gen.js +140 -151
- package/dist/esm-browser/common/settings.js +2 -2
- package/dist/esm-browser/sandbox/action.js +2 -2
- package/dist/esm-browser/sandbox/client/sdk.gen.js +0 -96
- package/dist/esm-browser/sandbox/interpreter.js +7 -4
- package/dist/esm-browser/sandbox/preview.js +11 -8
- package/dist/esm-browser/sandbox/sandbox.js +3 -3
- package/dist/esm-browser/sandbox/session.js +11 -11
- package/dist/esm-browser/sandbox/types.js +4 -1
- package/dist/esm-browser/tools/index.js +1 -3
- package/dist/esm-browser/volume/index.js +12 -14
- package/package.json +1 -1
|
@@ -9,8 +9,8 @@ const index_js_1 = require("../authentication/index.js");
|
|
|
9
9
|
const env_js_1 = require("../common/env.js");
|
|
10
10
|
const node_js_1 = require("../common/node.js");
|
|
11
11
|
// Build info - these placeholders are replaced at build time by build:replace-imports
|
|
12
|
-
const BUILD_VERSION = "0.2.59-preview.
|
|
13
|
-
const BUILD_COMMIT = "
|
|
12
|
+
const BUILD_VERSION = "0.2.59-preview.43";
|
|
13
|
+
const BUILD_COMMIT = "b0ebd759d4036536a387b2f2150e1b348f17ef2f";
|
|
14
14
|
const BUILD_SENTRY_DSN = "https://fd5e60e1c9820e1eef5ccebb84a07127@o4508714045276160.ingest.us.sentry.io/4510465864564736";
|
|
15
15
|
// Cache for config.yaml tracking value
|
|
16
16
|
let configTrackingValue = null;
|
|
@@ -36,7 +36,7 @@ class SandboxAction {
|
|
|
36
36
|
this.sandbox = sandbox;
|
|
37
37
|
}
|
|
38
38
|
get name() {
|
|
39
|
-
return this.sandbox.metadata
|
|
39
|
+
return this.sandbox.metadata.name;
|
|
40
40
|
}
|
|
41
41
|
get fallbackUrl() {
|
|
42
42
|
if (this.externalUrl != this.url) {
|
|
@@ -45,7 +45,7 @@ class SandboxAction {
|
|
|
45
45
|
return null;
|
|
46
46
|
}
|
|
47
47
|
get externalUrl() {
|
|
48
|
-
return this.sandbox.metadata
|
|
48
|
+
return this.sandbox.metadata.url ?? `${settings_js_1.settings.runUrl}/${settings_js_1.settings.workspace}/sandboxes/${this.name}`;
|
|
49
49
|
}
|
|
50
50
|
get internalUrl() {
|
|
51
51
|
const hash = (0, internal_js_1.getGlobalUniqueHash)(settings_js_1.settings.workspace, "sandbox", this.name);
|
|
@@ -1,111 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// This file is auto-generated by @hey-api/openapi-ts
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.getWatchFilesystemByPath = exports.getProcessByIdentifierLogsStream = exports.getProcessByIdentifierLogs = exports.deleteProcessByIdentifierKill = exports.getProcessByIdentifier = exports.deleteProcessByIdentifier = exports.postProcess = exports.getProcess = exports.getNetworkProcessByPidPorts = exports.postNetworkProcessByPidMonitor = exports.deleteNetworkProcessByPidMonitor = exports.putFilesystemTreeByPath = exports.getFilesystemTreeByPath = exports.deleteFilesystemTreeByPath = exports.putFilesystemByPath = exports.getFilesystemByPath = exports.deleteFilesystemByPath = exports.getFilesystemSearchByPath = exports.postFilesystemMultipartInitiateByPath = exports.getFilesystemMultipartByUploadIdParts = exports.putFilesystemMultipartByUploadIdPart = exports.postFilesystemMultipartByUploadIdComplete = exports.deleteFilesystemMultipartByUploadIdAbort = exports.getFilesystemMultipart = exports.getFilesystemFindByPath = exports.getFilesystemContentSearchByPath = exports.getCodegenRerankingByPath = exports.putCodegenFastapplyByPath =
|
|
4
|
+
exports.getWatchFilesystemByPath = exports.getProcessByIdentifierLogsStream = exports.getProcessByIdentifierLogs = exports.deleteProcessByIdentifierKill = exports.getProcessByIdentifier = exports.deleteProcessByIdentifier = exports.postProcess = exports.getProcess = exports.getNetworkProcessByPidPorts = exports.postNetworkProcessByPidMonitor = exports.deleteNetworkProcessByPidMonitor = exports.putFilesystemTreeByPath = exports.getFilesystemTreeByPath = exports.deleteFilesystemTreeByPath = exports.putFilesystemByPath = exports.getFilesystemByPath = exports.deleteFilesystemByPath = exports.getFilesystemSearchByPath = exports.postFilesystemMultipartInitiateByPath = exports.getFilesystemMultipartByUploadIdParts = exports.putFilesystemMultipartByUploadIdPart = exports.postFilesystemMultipartByUploadIdComplete = exports.deleteFilesystemMultipartByUploadIdAbort = exports.getFilesystemMultipart = exports.getFilesystemFindByPath = exports.getFilesystemContentSearchByPath = exports.getCodegenRerankingByPath = exports.putCodegenFastapplyByPath = void 0;
|
|
5
5
|
const client_fetch_1 = require("@hey-api/client-fetch");
|
|
6
6
|
const client_gen_1 = require("./client.gen");
|
|
7
|
-
/**
|
|
8
|
-
* Welcome message
|
|
9
|
-
* Returns a welcome message with links to documentation
|
|
10
|
-
*/
|
|
11
|
-
const delete_ = (options) => {
|
|
12
|
-
return (options?.client ?? client_gen_1.client).delete({
|
|
13
|
-
security: [
|
|
14
|
-
{
|
|
15
|
-
scheme: 'bearer',
|
|
16
|
-
type: 'http'
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
url: '/',
|
|
20
|
-
...options
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
exports.delete_ = delete_;
|
|
24
|
-
/**
|
|
25
|
-
* Welcome message
|
|
26
|
-
* Returns a welcome message with links to documentation
|
|
27
|
-
*/
|
|
28
|
-
const get = (options) => {
|
|
29
|
-
return (options?.client ?? client_gen_1.client).get({
|
|
30
|
-
security: [
|
|
31
|
-
{
|
|
32
|
-
scheme: 'bearer',
|
|
33
|
-
type: 'http'
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
url: '/',
|
|
37
|
-
...options
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
exports.get = get;
|
|
41
|
-
/**
|
|
42
|
-
* Welcome message
|
|
43
|
-
* Returns a welcome message with links to documentation
|
|
44
|
-
*/
|
|
45
|
-
const options = (options) => {
|
|
46
|
-
return (options?.client ?? client_gen_1.client).options({
|
|
47
|
-
security: [
|
|
48
|
-
{
|
|
49
|
-
scheme: 'bearer',
|
|
50
|
-
type: 'http'
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
url: '/',
|
|
54
|
-
...options
|
|
55
|
-
});
|
|
56
|
-
};
|
|
57
|
-
exports.options = options;
|
|
58
|
-
/**
|
|
59
|
-
* Welcome message
|
|
60
|
-
* Returns a welcome message with links to documentation
|
|
61
|
-
*/
|
|
62
|
-
const patch = (options) => {
|
|
63
|
-
return (options?.client ?? client_gen_1.client).patch({
|
|
64
|
-
security: [
|
|
65
|
-
{
|
|
66
|
-
scheme: 'bearer',
|
|
67
|
-
type: 'http'
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
url: '/',
|
|
71
|
-
...options
|
|
72
|
-
});
|
|
73
|
-
};
|
|
74
|
-
exports.patch = patch;
|
|
75
|
-
/**
|
|
76
|
-
* Welcome message
|
|
77
|
-
* Returns a welcome message with links to documentation
|
|
78
|
-
*/
|
|
79
|
-
const post = (options) => {
|
|
80
|
-
return (options?.client ?? client_gen_1.client).post({
|
|
81
|
-
security: [
|
|
82
|
-
{
|
|
83
|
-
scheme: 'bearer',
|
|
84
|
-
type: 'http'
|
|
85
|
-
}
|
|
86
|
-
],
|
|
87
|
-
url: '/',
|
|
88
|
-
...options
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
exports.post = post;
|
|
92
|
-
/**
|
|
93
|
-
* Welcome message
|
|
94
|
-
* Returns a welcome message with links to documentation
|
|
95
|
-
*/
|
|
96
|
-
const put = (options) => {
|
|
97
|
-
return (options?.client ?? client_gen_1.client).put({
|
|
98
|
-
security: [
|
|
99
|
-
{
|
|
100
|
-
scheme: 'bearer',
|
|
101
|
-
type: 'http'
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
url: '/',
|
|
105
|
-
...options
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
exports.put = put;
|
|
109
7
|
/**
|
|
110
8
|
* Apply code edit
|
|
111
9
|
* Uses the configured LLM provider (Relace or Morph) to apply a code edit to the original content.
|
|
@@ -35,7 +35,7 @@ class CodeInterpreter extends sandbox_js_1.SandboxInstance {
|
|
|
35
35
|
ports: CodeInterpreter.DEFAULT_PORTS,
|
|
36
36
|
lifecycle: CodeInterpreter.DEFAULT_LIFECYCLE,
|
|
37
37
|
};
|
|
38
|
-
const allowedCopyKeys = new Set(["name", "envs", "memory", "region", "headers"]);
|
|
38
|
+
const allowedCopyKeys = new Set(["name", "envs", "memory", "region", "headers", "labels"]);
|
|
39
39
|
if (sandbox && typeof sandbox === "object") {
|
|
40
40
|
if (Array.isArray(sandbox)) {
|
|
41
41
|
// Skip arrays
|
|
@@ -43,10 +43,13 @@ class CodeInterpreter extends sandbox_js_1.SandboxInstance {
|
|
|
43
43
|
else if ("metadata" in sandbox || "spec" in sandbox) {
|
|
44
44
|
// It's a Sandbox object
|
|
45
45
|
const sandboxObj = sandbox;
|
|
46
|
-
if (sandboxObj.metadata
|
|
46
|
+
if (sandboxObj.metadata.name) {
|
|
47
47
|
payload["name"] = sandboxObj.metadata.name;
|
|
48
48
|
}
|
|
49
|
-
if (sandboxObj.
|
|
49
|
+
if (sandboxObj.metadata.labels) {
|
|
50
|
+
payload["labels"] = sandboxObj.metadata.labels;
|
|
51
|
+
}
|
|
52
|
+
if (sandboxObj.spec.runtime) {
|
|
50
53
|
if (sandboxObj.spec.runtime.envs) {
|
|
51
54
|
payload["envs"] = sandboxObj.spec.runtime.envs;
|
|
52
55
|
}
|
|
@@ -54,7 +57,7 @@ class CodeInterpreter extends sandbox_js_1.SandboxInstance {
|
|
|
54
57
|
payload["memory"] = sandboxObj.spec.runtime.memory;
|
|
55
58
|
}
|
|
56
59
|
}
|
|
57
|
-
if (sandboxObj.spec
|
|
60
|
+
if (sandboxObj.spec.region) {
|
|
58
61
|
payload["region"] = sandboxObj.spec.region;
|
|
59
62
|
}
|
|
60
63
|
}
|
|
@@ -8,13 +8,13 @@ class SandboxPreviewToken {
|
|
|
8
8
|
this.previewToken = previewToken;
|
|
9
9
|
}
|
|
10
10
|
get value() {
|
|
11
|
-
return this.previewToken.spec
|
|
11
|
+
return this.previewToken.spec.token ?? "";
|
|
12
12
|
}
|
|
13
13
|
get expiresAt() {
|
|
14
|
-
return this.previewToken.spec
|
|
14
|
+
return this.previewToken.spec.expiresAt ?? new Date();
|
|
15
15
|
}
|
|
16
16
|
get expired() {
|
|
17
|
-
return this.previewToken.spec
|
|
17
|
+
return this.previewToken.spec.expired ?? false;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.SandboxPreviewToken = SandboxPreviewToken;
|
|
@@ -24,10 +24,10 @@ class SandboxPreviewTokens {
|
|
|
24
24
|
this.preview = preview;
|
|
25
25
|
}
|
|
26
26
|
get previewName() {
|
|
27
|
-
return this.preview.metadata
|
|
27
|
+
return this.preview.metadata.name;
|
|
28
28
|
}
|
|
29
29
|
get resourceName() {
|
|
30
|
-
return this.preview.metadata
|
|
30
|
+
return this.preview.metadata.resourceName ?? "";
|
|
31
31
|
}
|
|
32
32
|
async create(expiresAt) {
|
|
33
33
|
const { data } = await (0, index_js_1.createSandboxPreviewToken)({
|
|
@@ -36,6 +36,9 @@ class SandboxPreviewTokens {
|
|
|
36
36
|
previewName: this.previewName,
|
|
37
37
|
},
|
|
38
38
|
body: {
|
|
39
|
+
metadata: {
|
|
40
|
+
name: "token-" + Date.now(),
|
|
41
|
+
},
|
|
39
42
|
spec: {
|
|
40
43
|
expiresAt: expiresAt.toISOString(),
|
|
41
44
|
},
|
|
@@ -75,7 +78,7 @@ class SandboxPreview {
|
|
|
75
78
|
this.tokens = new SandboxPreviewTokens(this);
|
|
76
79
|
}
|
|
77
80
|
get name() {
|
|
78
|
-
return this.preview.metadata
|
|
81
|
+
return this.preview.metadata.name;
|
|
79
82
|
}
|
|
80
83
|
get metadata() {
|
|
81
84
|
return this.preview.metadata;
|
|
@@ -91,7 +94,7 @@ class SandboxPreviews {
|
|
|
91
94
|
this.sandbox = sandbox;
|
|
92
95
|
}
|
|
93
96
|
get sandboxName() {
|
|
94
|
-
return this.sandbox.metadata
|
|
97
|
+
return this.sandbox.metadata.name;
|
|
95
98
|
}
|
|
96
99
|
async list() {
|
|
97
100
|
const { data } = await (0, index_js_1.listSandboxPreviews)({
|
|
@@ -114,7 +117,7 @@ class SandboxPreviews {
|
|
|
114
117
|
}
|
|
115
118
|
async createIfNotExists(preview) {
|
|
116
119
|
try {
|
|
117
|
-
const previewInstance = await this.get(preview.metadata
|
|
120
|
+
const previewInstance = await this.get(preview.metadata.name);
|
|
118
121
|
return previewInstance;
|
|
119
122
|
}
|
|
120
123
|
catch (e) {
|
|
@@ -111,7 +111,6 @@ class SandboxInstance {
|
|
|
111
111
|
}
|
|
112
112
|
sandbox.spec.runtime.image = sandbox.spec.runtime.image || defaultImage;
|
|
113
113
|
sandbox.spec.runtime.memory = sandbox.spec.runtime.memory || defaultMemory;
|
|
114
|
-
sandbox.spec.runtime.generation = sandbox.spec.runtime.generation || "mk3";
|
|
115
114
|
const { data } = await (0, index_js_1.createSandbox)({
|
|
116
115
|
body: sandbox,
|
|
117
116
|
throwOnError: true,
|
|
@@ -149,7 +148,7 @@ class SandboxInstance {
|
|
|
149
148
|
return data;
|
|
150
149
|
}
|
|
151
150
|
async delete() {
|
|
152
|
-
return await SandboxInstance.delete(this.metadata
|
|
151
|
+
return await SandboxInstance.delete(this.metadata.name);
|
|
153
152
|
}
|
|
154
153
|
static async updateMetadata(sandboxName, metadata) {
|
|
155
154
|
const sandbox = await SandboxInstance.get(sandboxName);
|
|
@@ -168,7 +167,7 @@ class SandboxInstance {
|
|
|
168
167
|
}
|
|
169
168
|
catch (e) {
|
|
170
169
|
if (typeof e === "object" && e !== null && "code" in e && (e.code === 409 || e.code === 'SANDBOX_ALREADY_EXISTS')) {
|
|
171
|
-
const name = 'name' in sandbox ? sandbox.name : sandbox.metadata
|
|
170
|
+
const name = 'name' in sandbox ? sandbox.name : sandbox.metadata.name;
|
|
172
171
|
if (!name) {
|
|
173
172
|
throw new Error("Sandbox name is required");
|
|
174
173
|
}
|
|
@@ -191,6 +190,7 @@ class SandboxInstance {
|
|
|
191
190
|
const sandboxName = session.name.includes("-") ? session.name.split("-")[0] : session.name;
|
|
192
191
|
const sandbox = {
|
|
193
192
|
metadata: { name: sandboxName },
|
|
193
|
+
spec: {},
|
|
194
194
|
forceUrl: session.url,
|
|
195
195
|
headers: { "X-Blaxel-Preview-Token": session.token },
|
|
196
196
|
params: { bl_preview_token: session.token }
|
|
@@ -9,7 +9,7 @@ class SandboxSessions {
|
|
|
9
9
|
this.sandbox = sandbox;
|
|
10
10
|
}
|
|
11
11
|
get sandboxName() {
|
|
12
|
-
return this.sandbox.metadata
|
|
12
|
+
return this.sandbox.metadata.name;
|
|
13
13
|
}
|
|
14
14
|
async create(options = {}) {
|
|
15
15
|
const expiresAt = options.expiresAt ?? new Date(Date.now() + 24 * 60 * 60 * 1000); // 1 day from now
|
|
@@ -37,7 +37,7 @@ class SandboxSessions {
|
|
|
37
37
|
const tokenObj = await preview.tokens.create(expiresAt);
|
|
38
38
|
return {
|
|
39
39
|
name: body.metadata.name,
|
|
40
|
-
url: preview.spec
|
|
40
|
+
url: preview.spec.url ?? "",
|
|
41
41
|
token: tokenObj.value,
|
|
42
42
|
expiresAt: typeof tokenObj.expiresAt === 'string' ? new Date(tokenObj.expiresAt) : tokenObj.expiresAt,
|
|
43
43
|
};
|
|
@@ -72,13 +72,13 @@ class SandboxSessions {
|
|
|
72
72
|
});
|
|
73
73
|
if (data === null)
|
|
74
74
|
return [];
|
|
75
|
-
return await Promise.all(data.filter((preview) => preview.metadata
|
|
76
|
-
const token = await this.getToken(preview.metadata
|
|
75
|
+
return await Promise.all(data.filter((preview) => preview.metadata.name?.includes("session-")).map(async (preview) => {
|
|
76
|
+
const token = await this.getToken(preview.metadata.name);
|
|
77
77
|
return {
|
|
78
|
-
name: preview.metadata
|
|
79
|
-
url: preview.spec
|
|
80
|
-
token: token?.spec
|
|
81
|
-
expiresAt: token?.spec
|
|
78
|
+
name: preview.metadata.name,
|
|
79
|
+
url: preview.spec.url ?? "",
|
|
80
|
+
token: token?.spec.token ?? "",
|
|
81
|
+
expiresAt: token?.spec.expiresAt ?? new Date(),
|
|
82
82
|
};
|
|
83
83
|
}));
|
|
84
84
|
}
|
|
@@ -92,9 +92,9 @@ class SandboxSessions {
|
|
|
92
92
|
});
|
|
93
93
|
const token = await this.getToken(name);
|
|
94
94
|
return {
|
|
95
|
-
url: data.spec
|
|
96
|
-
token: token?.spec
|
|
97
|
-
expiresAt: token?.spec
|
|
95
|
+
url: data.spec.url ?? "",
|
|
96
|
+
token: token?.spec.token ?? "",
|
|
97
|
+
expiresAt: token?.spec.expiresAt ?? new Date(),
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
async delete(name) {
|
|
@@ -11,10 +11,13 @@ function normalizePorts(ports) {
|
|
|
11
11
|
for (const port of ports) {
|
|
12
12
|
if (typeof port === 'object' && port !== null) {
|
|
13
13
|
if ('name' in port || 'target' in port || 'protocol' in port) {
|
|
14
|
+
if (typeof port.target !== 'number') {
|
|
15
|
+
throw new Error(`Port target must be a number: ${JSON.stringify(port)}`);
|
|
16
|
+
}
|
|
14
17
|
// It's a Port-like object, ensure protocol defaults to HTTP
|
|
15
18
|
const normalizedPort = {
|
|
16
19
|
name: typeof port.name === 'string' ? port.name : undefined,
|
|
17
|
-
target:
|
|
20
|
+
target: port.target,
|
|
18
21
|
protocol: typeof port.protocol === 'string' ? port.protocol : "HTTP"
|
|
19
22
|
};
|
|
20
23
|
portObjects.push(normalizedPort);
|