@daytonaio/sdk 0.127.0 → 0.128.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/{src → cjs}/CodeInterpreter.d.ts +1 -0
- package/cjs/CodeInterpreter.d.ts.map +1 -0
- package/cjs/CodeInterpreter.js.map +1 -0
- package/{src → cjs}/ComputerUse.d.ts +1 -0
- package/cjs/ComputerUse.d.ts.map +1 -0
- package/cjs/ComputerUse.js.map +1 -0
- package/{src → cjs}/Daytona.d.ts +1 -0
- package/cjs/Daytona.d.ts.map +1 -0
- package/{src → cjs}/Daytona.js +1 -0
- package/cjs/Daytona.js.map +1 -0
- package/{src → cjs}/FileSystem.d.ts +1 -0
- package/cjs/FileSystem.d.ts.map +1 -0
- package/cjs/FileSystem.js.map +1 -0
- package/{src → cjs}/Git.d.ts +1 -0
- package/cjs/Git.d.ts.map +1 -0
- package/cjs/Git.js.map +1 -0
- package/{src → cjs}/Image.d.ts +21 -0
- package/cjs/Image.d.ts.map +1 -0
- package/{src → cjs}/Image.js +123 -91
- package/cjs/Image.js.map +1 -0
- package/{src → cjs}/LspServer.d.ts +1 -0
- package/cjs/LspServer.d.ts.map +1 -0
- package/cjs/LspServer.js.map +1 -0
- package/{src → cjs}/ObjectStorage.d.ts +1 -0
- package/cjs/ObjectStorage.d.ts.map +1 -0
- package/cjs/ObjectStorage.js.map +1 -0
- package/{src → cjs}/Process.d.ts +1 -0
- package/cjs/Process.d.ts.map +1 -0
- package/cjs/Process.js.map +1 -0
- package/{src → cjs}/PtyHandle.d.ts +1 -0
- package/cjs/PtyHandle.d.ts.map +1 -0
- package/cjs/PtyHandle.js.map +1 -0
- package/cjs/README.md +147 -0
- package/{src → cjs}/Sandbox.d.ts +2 -17
- package/cjs/Sandbox.d.ts.map +1 -0
- package/{src → cjs}/Sandbox.js +1 -27
- package/cjs/Sandbox.js.map +1 -0
- package/{src → cjs}/Snapshot.d.ts +2 -0
- package/cjs/Snapshot.d.ts.map +1 -0
- package/{src → cjs}/Snapshot.js +9 -1
- package/cjs/Snapshot.js.map +1 -0
- package/{src → cjs}/Volume.d.ts +1 -0
- package/cjs/Volume.d.ts.map +1 -0
- package/cjs/Volume.js.map +1 -0
- package/{src → cjs}/code-toolbox/SandboxJsCodeToolbox.d.ts +1 -0
- package/cjs/code-toolbox/SandboxJsCodeToolbox.d.ts.map +1 -0
- package/cjs/code-toolbox/SandboxJsCodeToolbox.js.map +1 -0
- package/{src → cjs}/code-toolbox/SandboxPythonCodeToolbox.d.ts +1 -0
- package/cjs/code-toolbox/SandboxPythonCodeToolbox.d.ts.map +1 -0
- package/cjs/code-toolbox/SandboxPythonCodeToolbox.js.map +1 -0
- package/{src → cjs}/code-toolbox/SandboxTsCodeToolbox.d.ts +1 -0
- package/cjs/code-toolbox/SandboxTsCodeToolbox.d.ts.map +1 -0
- package/cjs/code-toolbox/SandboxTsCodeToolbox.js.map +1 -0
- package/{src → cjs}/errors/DaytonaError.d.ts +1 -0
- package/cjs/errors/DaytonaError.d.ts.map +1 -0
- package/cjs/errors/DaytonaError.js.map +1 -0
- package/{src → cjs}/index.d.ts +1 -0
- package/cjs/index.d.ts.map +1 -0
- package/cjs/index.js.map +1 -0
- package/cjs/package.json +3 -0
- package/{src → cjs}/types/Charts.d.ts +1 -0
- package/cjs/types/Charts.d.ts.map +1 -0
- package/cjs/types/Charts.js.map +1 -0
- package/{src → cjs}/types/CodeInterpreter.d.ts +1 -0
- package/cjs/types/CodeInterpreter.d.ts.map +1 -0
- package/cjs/types/CodeInterpreter.js.map +1 -0
- package/{src → cjs}/types/ExecuteResponse.d.ts +1 -0
- package/cjs/types/ExecuteResponse.d.ts.map +1 -0
- package/cjs/types/ExecuteResponse.js.map +1 -0
- package/{src → cjs}/types/Pty.d.ts +1 -0
- package/cjs/types/Pty.d.ts.map +1 -0
- package/cjs/types/Pty.js.map +1 -0
- package/{src → cjs}/utils/ArtifactParser.d.ts +1 -0
- package/cjs/utils/ArtifactParser.d.ts.map +1 -0
- package/cjs/utils/ArtifactParser.js.map +1 -0
- package/{src → cjs}/utils/Binary.d.ts +1 -0
- package/cjs/utils/Binary.d.ts.map +1 -0
- package/cjs/utils/Binary.js.map +1 -0
- package/{src → cjs}/utils/FileTransfer.d.ts +1 -0
- package/cjs/utils/FileTransfer.d.ts.map +1 -0
- package/cjs/utils/FileTransfer.js.map +1 -0
- package/{src → cjs}/utils/Import.d.ts +2 -15
- package/cjs/utils/Import.d.ts.map +1 -0
- package/cjs/utils/Import.js +81 -0
- package/cjs/utils/Import.js.map +1 -0
- package/{src → cjs}/utils/Multipart.d.ts +1 -0
- package/cjs/utils/Multipart.d.ts.map +1 -0
- package/cjs/utils/Multipart.js.map +1 -0
- package/{src → cjs}/utils/Runtime.d.ts +1 -0
- package/cjs/utils/Runtime.d.ts.map +1 -0
- package/cjs/utils/Runtime.js.map +1 -0
- package/{src → cjs}/utils/Stream.d.ts +1 -0
- package/cjs/utils/Stream.d.ts.map +1 -0
- package/cjs/utils/Stream.js.map +1 -0
- package/{src → cjs}/utils/WebSocket.d.ts +1 -0
- package/cjs/utils/WebSocket.d.ts.map +1 -0
- package/cjs/utils/WebSocket.js.map +1 -0
- package/esm/CodeInterpreter.d.ts +96 -0
- package/esm/CodeInterpreter.d.ts.map +1 -0
- package/esm/CodeInterpreter.js +295 -0
- package/esm/CodeInterpreter.js.map +1 -0
- package/esm/ComputerUse.d.ts +443 -0
- package/esm/ComputerUse.d.ts.map +1 -0
- package/esm/ComputerUse.js +509 -0
- package/esm/ComputerUse.js.map +1 -0
- package/esm/Daytona.d.ts +354 -0
- package/esm/Daytona.d.ts.map +1 -0
- package/esm/Daytona.js +410 -0
- package/esm/Daytona.js.map +1 -0
- package/esm/FileSystem.d.ts +328 -0
- package/esm/FileSystem.d.ts.map +1 -0
- package/esm/FileSystem.js +331 -0
- package/esm/FileSystem.js.map +1 -0
- package/esm/Git.d.ts +203 -0
- package/esm/Git.d.ts.map +1 -0
- package/esm/Git.js +260 -0
- package/esm/Git.js.map +1 -0
- package/esm/Image.d.ts +285 -0
- package/esm/Image.d.ts.map +1 -0
- package/esm/Image.js +569 -0
- package/esm/Image.js.map +1 -0
- package/esm/LspServer.d.ts +172 -0
- package/esm/LspServer.d.ts.map +1 -0
- package/esm/LspServer.js +204 -0
- package/esm/LspServer.js.map +1 -0
- package/esm/ObjectStorage.d.ts +79 -0
- package/esm/ObjectStorage.d.ts.map +1 -0
- package/esm/ObjectStorage.js +187 -0
- package/esm/ObjectStorage.js.map +1 -0
- package/esm/Process.d.ts +442 -0
- package/esm/Process.d.ts.map +1 -0
- package/esm/Process.js +644 -0
- package/esm/Process.js.map +1 -0
- package/esm/PtyHandle.d.ts +155 -0
- package/esm/PtyHandle.d.ts.map +1 -0
- package/esm/PtyHandle.js +374 -0
- package/esm/PtyHandle.js.map +1 -0
- package/esm/README.md +147 -0
- package/esm/Sandbox.d.ts +359 -0
- package/esm/Sandbox.d.ts.map +1 -0
- package/esm/Sandbox.js +532 -0
- package/esm/Sandbox.js.map +1 -0
- package/esm/Snapshot.d.ts +138 -0
- package/esm/Snapshot.d.ts.map +1 -0
- package/esm/Snapshot.js +207 -0
- package/esm/Snapshot.js.map +1 -0
- package/esm/Volume.d.ts +84 -0
- package/esm/Volume.d.ts.map +1 -0
- package/esm/Volume.js +95 -0
- package/esm/Volume.js.map +1 -0
- package/esm/code-toolbox/SandboxJsCodeToolbox.d.ts +6 -0
- package/esm/code-toolbox/SandboxJsCodeToolbox.d.ts.map +1 -0
- package/esm/code-toolbox/SandboxJsCodeToolbox.js +13 -0
- package/esm/code-toolbox/SandboxJsCodeToolbox.js.map +1 -0
- package/esm/code-toolbox/SandboxPythonCodeToolbox.d.ts +12 -0
- package/esm/code-toolbox/SandboxPythonCodeToolbox.d.ts.map +1 -0
- package/esm/code-toolbox/SandboxPythonCodeToolbox.js +355 -0
- package/esm/code-toolbox/SandboxPythonCodeToolbox.js.map +1 -0
- package/esm/code-toolbox/SandboxTsCodeToolbox.d.ts +6 -0
- package/esm/code-toolbox/SandboxTsCodeToolbox.d.ts.map +1 -0
- package/esm/code-toolbox/SandboxTsCodeToolbox.js +14 -0
- package/esm/code-toolbox/SandboxTsCodeToolbox.js.map +1 -0
- package/esm/errors/DaytonaError.d.ts +32 -0
- package/esm/errors/DaytonaError.d.ts.map +1 -0
- package/esm/errors/DaytonaError.js +44 -0
- package/esm/errors/DaytonaError.js.map +1 -0
- package/esm/index.d.ts +22 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +22 -0
- package/esm/index.js.map +1 -0
- package/esm/package.json +3 -0
- package/esm/types/Charts.d.ts +152 -0
- package/esm/types/Charts.d.ts.map +1 -0
- package/esm/types/Charts.js +42 -0
- package/esm/types/Charts.js.map +1 -0
- package/esm/types/CodeInterpreter.d.ts +77 -0
- package/esm/types/CodeInterpreter.d.ts.map +1 -0
- package/esm/types/CodeInterpreter.js +6 -0
- package/esm/types/CodeInterpreter.js.map +1 -0
- package/esm/types/ExecuteResponse.d.ts +26 -0
- package/esm/types/ExecuteResponse.d.ts.map +1 -0
- package/esm/types/ExecuteResponse.js +6 -0
- package/esm/types/ExecuteResponse.js.map +1 -0
- package/esm/types/Pty.d.ts +48 -0
- package/esm/types/Pty.d.ts.map +1 -0
- package/esm/types/Pty.js +6 -0
- package/esm/types/Pty.js.map +1 -0
- package/esm/utils/ArtifactParser.d.ts +14 -0
- package/esm/utils/ArtifactParser.d.ts.map +1 -0
- package/esm/utils/ArtifactParser.js +51 -0
- package/esm/utils/ArtifactParser.js.map +1 -0
- package/esm/utils/Binary.d.ts +39 -0
- package/esm/utils/Binary.d.ts.map +1 -0
- package/esm/utils/Binary.js +157 -0
- package/esm/utils/Binary.js.map +1 -0
- package/esm/utils/FileTransfer.d.ts +15 -0
- package/esm/utils/FileTransfer.d.ts.map +1 -0
- package/esm/utils/FileTransfer.js +209 -0
- package/esm/utils/FileTransfer.js.map +1 -0
- package/esm/utils/Import.d.ts +211 -0
- package/esm/utils/Import.d.ts.map +1 -0
- package/esm/utils/Import.js +45 -0
- package/esm/utils/Import.js.map +1 -0
- package/esm/utils/Multipart.d.ts +27 -0
- package/esm/utils/Multipart.d.ts.map +1 -0
- package/esm/utils/Multipart.js +107 -0
- package/esm/utils/Multipart.js.map +1 -0
- package/esm/utils/Runtime.d.ts +37 -0
- package/esm/utils/Runtime.d.ts.map +1 -0
- package/esm/utils/Runtime.js +57 -0
- package/esm/utils/Runtime.js.map +1 -0
- package/esm/utils/Stream.d.ts +20 -0
- package/esm/utils/Stream.d.ts.map +1 -0
- package/esm/utils/Stream.js +360 -0
- package/esm/utils/Stream.js.map +1 -0
- package/esm/utils/WebSocket.d.ts +10 -0
- package/esm/utils/WebSocket.d.ts.map +1 -0
- package/esm/utils/WebSocket.js +22 -0
- package/esm/utils/WebSocket.js.map +1 -0
- package/package.json +20 -8
- package/src/CodeInterpreter.js.map +0 -1
- package/src/ComputerUse.js.map +0 -1
- package/src/Daytona.js.map +0 -1
- package/src/FileSystem.js.map +0 -1
- package/src/Git.js.map +0 -1
- package/src/Image.js.map +0 -1
- package/src/LspServer.js.map +0 -1
- package/src/ObjectStorage.js.map +0 -1
- package/src/Process.js.map +0 -1
- package/src/PtyHandle.js.map +0 -1
- package/src/Sandbox.js.map +0 -1
- package/src/Snapshot.js.map +0 -1
- package/src/Volume.js.map +0 -1
- package/src/code-toolbox/SandboxJsCodeToolbox.js.map +0 -1
- package/src/code-toolbox/SandboxPythonCodeToolbox.js.map +0 -1
- package/src/code-toolbox/SandboxTsCodeToolbox.js.map +0 -1
- package/src/errors/DaytonaError.js.map +0 -1
- package/src/index.js.map +0 -1
- package/src/types/Charts.js.map +0 -1
- package/src/types/CodeInterpreter.js.map +0 -1
- package/src/types/ExecuteResponse.js.map +0 -1
- package/src/types/Pty.js.map +0 -1
- package/src/utils/ArtifactParser.js.map +0 -1
- package/src/utils/Binary.js.map +0 -1
- package/src/utils/FileTransfer.js.map +0 -1
- package/src/utils/Import.js +0 -77
- package/src/utils/Import.js.map +0 -1
- package/src/utils/Multipart.js.map +0 -1
- package/src/utils/Runtime.js.map +0 -1
- package/src/utils/Stream.js.map +0 -1
- package/src/utils/WebSocket.js.map +0 -1
- /package/{src → cjs}/CodeInterpreter.js +0 -0
- /package/{src → cjs}/ComputerUse.js +0 -0
- /package/{src → cjs}/FileSystem.js +0 -0
- /package/{src → cjs}/Git.js +0 -0
- /package/{src → cjs}/LspServer.js +0 -0
- /package/{src → cjs}/ObjectStorage.js +0 -0
- /package/{src → cjs}/Process.js +0 -0
- /package/{src → cjs}/PtyHandle.js +0 -0
- /package/{src → cjs}/Volume.js +0 -0
- /package/{src → cjs}/code-toolbox/SandboxJsCodeToolbox.js +0 -0
- /package/{src → cjs}/code-toolbox/SandboxPythonCodeToolbox.js +0 -0
- /package/{src → cjs}/code-toolbox/SandboxTsCodeToolbox.js +0 -0
- /package/{src → cjs}/errors/DaytonaError.js +0 -0
- /package/{src → cjs}/index.js +0 -0
- /package/{src → cjs}/types/Charts.js +0 -0
- /package/{src → cjs}/types/CodeInterpreter.js +0 -0
- /package/{src → cjs}/types/ExecuteResponse.js +0 -0
- /package/{src → cjs}/types/Pty.js +0 -0
- /package/{src → cjs}/utils/ArtifactParser.js +0 -0
- /package/{src → cjs}/utils/Binary.js +0 -0
- /package/{src → cjs}/utils/FileTransfer.js +0 -0
- /package/{src → cjs}/utils/Multipart.js +0 -0
- /package/{src → cjs}/utils/Runtime.js +0 -0
- /package/{src → cjs}/utils/Stream.js +0 -0
- /package/{src → cjs}/utils/WebSocket.js +0 -0
package/esm/Sandbox.js
ADDED
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Daytona Platforms Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { SandboxState, } from '@daytonaio/api-client';
|
|
6
|
+
import { FileSystemApi, GitApi, ProcessApi, LspApi, InfoApi, ComputerUseApi, InterpreterApi, } from '@daytonaio/toolbox-api-client';
|
|
7
|
+
import { FileSystem } from './FileSystem.js';
|
|
8
|
+
import { Git } from './Git.js';
|
|
9
|
+
import { Process } from './Process.js';
|
|
10
|
+
import { LspServer } from './LspServer.js';
|
|
11
|
+
import { DaytonaError, DaytonaNotFoundError } from './errors/DaytonaError.js';
|
|
12
|
+
import { ComputerUse } from './ComputerUse.js';
|
|
13
|
+
import { CodeInterpreter } from './CodeInterpreter.js';
|
|
14
|
+
const TOOLBOX_URL_PLACEHOLDER = 'dtn-placeholder';
|
|
15
|
+
/**
|
|
16
|
+
* Represents a Daytona Sandbox.
|
|
17
|
+
*
|
|
18
|
+
* @property {FileSystem} fs - File system operations interface
|
|
19
|
+
* @property {Git} git - Git operations interface
|
|
20
|
+
* @property {Process} process - Process execution interface
|
|
21
|
+
* @property {CodeInterpreter} codeInterpreter - Stateful interpreter interface for executing code.
|
|
22
|
+
* Currently supports only Python. For other languages, use the `process.codeRun` method.
|
|
23
|
+
* @property {ComputerUse} computerUse - Computer use operations interface for desktop automation
|
|
24
|
+
* @property {string} id - Unique identifier for the Sandbox
|
|
25
|
+
* @property {string} organizationId - Organization ID of the Sandbox
|
|
26
|
+
* @property {string} [snapshot] - Daytona snapshot used to create the Sandbox
|
|
27
|
+
* @property {string} user - OS user running in the Sandbox
|
|
28
|
+
* @property {Record<string, string>} env - Environment variables set in the Sandbox
|
|
29
|
+
* @property {Record<string, string>} labels - Custom labels attached to the Sandbox
|
|
30
|
+
* @property {boolean} public - Whether the Sandbox is publicly accessible
|
|
31
|
+
* @property {string} target - Target location of the runner where the Sandbox runs
|
|
32
|
+
* @property {number} cpu - Number of CPUs allocated to the Sandbox
|
|
33
|
+
* @property {number} gpu - Number of GPUs allocated to the Sandbox
|
|
34
|
+
* @property {number} memory - Amount of memory allocated to the Sandbox in GiB
|
|
35
|
+
* @property {number} disk - Amount of disk space allocated to the Sandbox in GiB
|
|
36
|
+
* @property {SandboxState} state - Current state of the Sandbox (e.g., "started", "stopped")
|
|
37
|
+
* @property {string} [errorReason] - Error message if Sandbox is in error state
|
|
38
|
+
* @property {SandboxBackupStateEnum} [backupState] - Current state of Sandbox backup
|
|
39
|
+
* @property {string} [backupCreatedAt] - When the backup was created
|
|
40
|
+
* @property {number} [autoStopInterval] - Auto-stop interval in minutes
|
|
41
|
+
* @property {number} [autoArchiveInterval] - Auto-archive interval in minutes
|
|
42
|
+
* @property {number} [autoDeleteInterval] - Auto-delete interval in minutes
|
|
43
|
+
* @property {Array<SandboxVolume>} [volumes] - Volumes attached to the Sandbox
|
|
44
|
+
* @property {BuildInfo} [buildInfo] - Build information for the Sandbox if it was created from dynamic build
|
|
45
|
+
* @property {string} [createdAt] - When the Sandbox was created
|
|
46
|
+
* @property {string} [updatedAt] - When the Sandbox was last updated
|
|
47
|
+
* @property {boolean} networkBlockAll - Whether to block all network access for the Sandbox
|
|
48
|
+
* @property {string} [networkAllowList] - Comma-separated list of allowed CIDR network addresses for the Sandbox
|
|
49
|
+
*
|
|
50
|
+
* @class
|
|
51
|
+
*/
|
|
52
|
+
export class Sandbox {
|
|
53
|
+
clientConfig;
|
|
54
|
+
axiosInstance;
|
|
55
|
+
sandboxApi;
|
|
56
|
+
codeToolbox;
|
|
57
|
+
getToolboxBaseUrl;
|
|
58
|
+
fs;
|
|
59
|
+
git;
|
|
60
|
+
process;
|
|
61
|
+
computerUse;
|
|
62
|
+
codeInterpreter;
|
|
63
|
+
id;
|
|
64
|
+
name;
|
|
65
|
+
organizationId;
|
|
66
|
+
snapshot;
|
|
67
|
+
user;
|
|
68
|
+
env;
|
|
69
|
+
labels;
|
|
70
|
+
public;
|
|
71
|
+
target;
|
|
72
|
+
cpu;
|
|
73
|
+
gpu;
|
|
74
|
+
memory;
|
|
75
|
+
disk;
|
|
76
|
+
state;
|
|
77
|
+
errorReason;
|
|
78
|
+
backupState;
|
|
79
|
+
backupCreatedAt;
|
|
80
|
+
autoStopInterval;
|
|
81
|
+
autoArchiveInterval;
|
|
82
|
+
autoDeleteInterval;
|
|
83
|
+
volumes;
|
|
84
|
+
buildInfo;
|
|
85
|
+
createdAt;
|
|
86
|
+
updatedAt;
|
|
87
|
+
networkBlockAll;
|
|
88
|
+
networkAllowList;
|
|
89
|
+
infoApi;
|
|
90
|
+
/**
|
|
91
|
+
* Creates a new Sandbox instance
|
|
92
|
+
*
|
|
93
|
+
* @param {SandboxDto} sandboxDto - The API Sandbox instance
|
|
94
|
+
* @param {SandboxApi} sandboxApi - API client for Sandbox operations
|
|
95
|
+
* @param {InfoApi} infoApi - API client for info operations
|
|
96
|
+
* @param {SandboxCodeToolbox} codeToolbox - Language-specific toolbox implementation
|
|
97
|
+
*/
|
|
98
|
+
constructor(sandboxDto, clientConfig, axiosInstance, sandboxApi, codeToolbox, getToolboxBaseUrl) {
|
|
99
|
+
this.clientConfig = clientConfig;
|
|
100
|
+
this.axiosInstance = axiosInstance;
|
|
101
|
+
this.sandboxApi = sandboxApi;
|
|
102
|
+
this.codeToolbox = codeToolbox;
|
|
103
|
+
this.getToolboxBaseUrl = getToolboxBaseUrl;
|
|
104
|
+
this.processSandboxDto(sandboxDto);
|
|
105
|
+
// Lazy load the base URL for the toolbox
|
|
106
|
+
this.axiosInstance.defaults.baseURL = TOOLBOX_URL_PLACEHOLDER;
|
|
107
|
+
this.axiosInstance.interceptors.request.use(async (config) => {
|
|
108
|
+
if (this.axiosInstance.defaults.baseURL === TOOLBOX_URL_PLACEHOLDER) {
|
|
109
|
+
await this.ensureToolboxUrl();
|
|
110
|
+
config.baseURL = this.axiosInstance.defaults.baseURL;
|
|
111
|
+
}
|
|
112
|
+
return config;
|
|
113
|
+
});
|
|
114
|
+
// Initialize Services
|
|
115
|
+
const getPreviewToken = async () => (await this.getPreviewLink(1)).token;
|
|
116
|
+
this.fs = new FileSystem(this.clientConfig, new FileSystemApi(this.clientConfig, '', this.axiosInstance), this.ensureToolboxUrl.bind(this));
|
|
117
|
+
this.git = new Git(new GitApi(this.clientConfig, '', this.axiosInstance));
|
|
118
|
+
this.process = new Process(this.clientConfig, this.codeToolbox, new ProcessApi(this.clientConfig, '', this.axiosInstance), getPreviewToken, this.ensureToolboxUrl.bind(this));
|
|
119
|
+
this.codeInterpreter = new CodeInterpreter(this.clientConfig, new InterpreterApi(this.clientConfig, '', this.axiosInstance), getPreviewToken, this.ensureToolboxUrl.bind(this));
|
|
120
|
+
this.computerUse = new ComputerUse(new ComputerUseApi(this.clientConfig, '', this.axiosInstance));
|
|
121
|
+
this.infoApi = new InfoApi(this.clientConfig, '', this.axiosInstance);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Gets the user's home directory path for the logged in user inside the Sandbox.
|
|
125
|
+
*
|
|
126
|
+
* @returns {Promise<string | undefined>} The absolute path to the Sandbox user's home directory for the logged in user
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* const userHomeDir = await sandbox.getUserHomeDir();
|
|
130
|
+
* console.log(`Sandbox user home: ${userHomeDir}`);
|
|
131
|
+
*/
|
|
132
|
+
async getUserHomeDir() {
|
|
133
|
+
const response = await this.infoApi.getUserHomeDir();
|
|
134
|
+
return response.data.dir;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @deprecated Use `getUserHomeDir` instead. This method will be removed in a future version.
|
|
138
|
+
*/
|
|
139
|
+
async getUserRootDir() {
|
|
140
|
+
return this.getUserHomeDir();
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets the working directory path inside the Sandbox.
|
|
144
|
+
*
|
|
145
|
+
* @returns {Promise<string | undefined>} The absolute path to the Sandbox working directory. Uses the WORKDIR specified
|
|
146
|
+
* in the Dockerfile if present, or falling back to the user's home directory if not.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* const workDir = await sandbox.getWorkDir();
|
|
150
|
+
* console.log(`Sandbox working directory: ${workDir}`);
|
|
151
|
+
*/
|
|
152
|
+
async getWorkDir() {
|
|
153
|
+
const response = await this.infoApi.getWorkDir();
|
|
154
|
+
return response.data.dir;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Creates a new Language Server Protocol (LSP) server instance.
|
|
158
|
+
*
|
|
159
|
+
* The LSP server provides language-specific features like code completion,
|
|
160
|
+
* diagnostics, and more.
|
|
161
|
+
*
|
|
162
|
+
* @param {LspLanguageId} languageId - The language server type (e.g., "typescript")
|
|
163
|
+
* @param {string} pathToProject - Path to the project root directory. Relative paths are resolved based on the sandbox working directory.
|
|
164
|
+
* @returns {LspServer} A new LSP server instance configured for the specified language
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* const lsp = await sandbox.createLspServer('typescript', 'workspace/project');
|
|
168
|
+
*/
|
|
169
|
+
async createLspServer(languageId, pathToProject) {
|
|
170
|
+
return new LspServer(languageId, pathToProject, new LspApi(this.clientConfig, '', this.axiosInstance));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Sets labels for the Sandbox.
|
|
174
|
+
*
|
|
175
|
+
* Labels are key-value pairs that can be used to organize and identify Sandboxes.
|
|
176
|
+
*
|
|
177
|
+
* @param {Record<string, string>} labels - Dictionary of key-value pairs representing Sandbox labels
|
|
178
|
+
* @returns {Promise<void>}
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* // Set sandbox labels
|
|
182
|
+
* await sandbox.setLabels({
|
|
183
|
+
* project: 'my-project',
|
|
184
|
+
* environment: 'development',
|
|
185
|
+
* team: 'backend'
|
|
186
|
+
* });
|
|
187
|
+
*/
|
|
188
|
+
async setLabels(labels) {
|
|
189
|
+
this.labels = (await this.sandboxApi.replaceLabels(this.id, { labels })).data.labels;
|
|
190
|
+
return this.labels;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Start the Sandbox.
|
|
194
|
+
*
|
|
195
|
+
* This method starts the Sandbox and waits for it to be ready.
|
|
196
|
+
*
|
|
197
|
+
* @param {number} [timeout] - Maximum time to wait in seconds. 0 means no timeout.
|
|
198
|
+
* Defaults to 60-second timeout.
|
|
199
|
+
* @returns {Promise<void>}
|
|
200
|
+
* @throws {DaytonaError} - `DaytonaError` - If Sandbox fails to start or times out
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* const sandbox = await daytona.getCurrentSandbox('my-sandbox');
|
|
204
|
+
* await sandbox.start(40); // Wait up to 40 seconds
|
|
205
|
+
* console.log('Sandbox started successfully');
|
|
206
|
+
*/
|
|
207
|
+
async start(timeout = 60) {
|
|
208
|
+
if (timeout < 0) {
|
|
209
|
+
throw new DaytonaError('Timeout must be a non-negative number');
|
|
210
|
+
}
|
|
211
|
+
const startTime = Date.now();
|
|
212
|
+
const response = await this.sandboxApi.startSandbox(this.id, undefined, { timeout: timeout * 1000 });
|
|
213
|
+
this.processSandboxDto(response.data);
|
|
214
|
+
const timeElapsed = Date.now() - startTime;
|
|
215
|
+
await this.waitUntilStarted(timeout ? Math.max(0.001, timeout - timeElapsed / 1000) : timeout);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Stops the Sandbox.
|
|
219
|
+
*
|
|
220
|
+
* This method stops the Sandbox and waits for it to be fully stopped.
|
|
221
|
+
*
|
|
222
|
+
* @param {number} [timeout] - Maximum time to wait in seconds. 0 means no timeout.
|
|
223
|
+
* Defaults to 60-second timeout.
|
|
224
|
+
* @returns {Promise<void>}
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* const sandbox = await daytona.getCurrentSandbox('my-sandbox');
|
|
228
|
+
* await sandbox.stop();
|
|
229
|
+
* console.log('Sandbox stopped successfully');
|
|
230
|
+
*/
|
|
231
|
+
async stop(timeout = 60) {
|
|
232
|
+
if (timeout < 0) {
|
|
233
|
+
throw new DaytonaError('Timeout must be a non-negative number');
|
|
234
|
+
}
|
|
235
|
+
const startTime = Date.now();
|
|
236
|
+
await this.sandboxApi.stopSandbox(this.id, undefined, { timeout: timeout * 1000 });
|
|
237
|
+
await this.refreshDataSafe();
|
|
238
|
+
const timeElapsed = Date.now() - startTime;
|
|
239
|
+
await this.waitUntilStopped(timeout ? Math.max(0.001, timeout - timeElapsed / 1000) : timeout);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Deletes the Sandbox.
|
|
243
|
+
* @returns {Promise<void>}
|
|
244
|
+
*/
|
|
245
|
+
async delete(timeout = 60) {
|
|
246
|
+
await this.sandboxApi.deleteSandbox(this.id, undefined, { timeout: timeout * 1000 });
|
|
247
|
+
this.refreshDataSafe();
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Waits for the Sandbox to reach the 'started' state.
|
|
251
|
+
*
|
|
252
|
+
* This method polls the Sandbox status until it reaches the 'started' state
|
|
253
|
+
* or encounters an error.
|
|
254
|
+
*
|
|
255
|
+
* @param {number} [timeout] - Maximum time to wait in seconds. 0 means no timeout.
|
|
256
|
+
* Defaults to 60 seconds.
|
|
257
|
+
* @returns {Promise<void>}
|
|
258
|
+
* @throws {DaytonaError} - `DaytonaError` - If the sandbox ends up in an error state or fails to start within the timeout period.
|
|
259
|
+
*/
|
|
260
|
+
async waitUntilStarted(timeout = 60) {
|
|
261
|
+
if (timeout < 0) {
|
|
262
|
+
throw new DaytonaError('Timeout must be a non-negative number');
|
|
263
|
+
}
|
|
264
|
+
const checkInterval = 100; // Wait 100 ms between checks
|
|
265
|
+
const startTime = Date.now();
|
|
266
|
+
while (this.state !== 'started') {
|
|
267
|
+
await this.refreshData();
|
|
268
|
+
// @ts-expect-error this.refreshData() can modify this.state so this check is fine
|
|
269
|
+
if (this.state === 'started') {
|
|
270
|
+
return;
|
|
271
|
+
}
|
|
272
|
+
if (this.state === 'error') {
|
|
273
|
+
const errMsg = `Sandbox ${this.id} failed to start with status: ${this.state}, error reason: ${this.errorReason}`;
|
|
274
|
+
throw new DaytonaError(errMsg);
|
|
275
|
+
}
|
|
276
|
+
if (timeout !== 0 && Date.now() - startTime > timeout * 1000) {
|
|
277
|
+
throw new DaytonaError('Sandbox failed to become ready within the timeout period');
|
|
278
|
+
}
|
|
279
|
+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Wait for Sandbox to reach 'stopped' state.
|
|
284
|
+
*
|
|
285
|
+
* This method polls the Sandbox status until it reaches the 'stopped' state
|
|
286
|
+
* or encounters an error.
|
|
287
|
+
*
|
|
288
|
+
* @param {number} [timeout] - Maximum time to wait in seconds. 0 means no timeout.
|
|
289
|
+
* Defaults to 60 seconds.
|
|
290
|
+
* @returns {Promise<void>}
|
|
291
|
+
* @throws {DaytonaError} - `DaytonaError` - If the sandbox fails to stop within the timeout period.
|
|
292
|
+
*/
|
|
293
|
+
async waitUntilStopped(timeout = 60) {
|
|
294
|
+
if (timeout < 0) {
|
|
295
|
+
throw new DaytonaError('Timeout must be a non-negative number');
|
|
296
|
+
}
|
|
297
|
+
const checkInterval = 100; // Wait 100 ms between checks
|
|
298
|
+
const startTime = Date.now();
|
|
299
|
+
// Treat destroyed as stopped to cover ephemeral sandboxes that are automatically deleted after stopping
|
|
300
|
+
while (this.state !== 'stopped' && this.state !== 'destroyed') {
|
|
301
|
+
this.refreshDataSafe();
|
|
302
|
+
// @ts-expect-error this.refreshData() can modify this.state so this check is fine
|
|
303
|
+
if (this.state === 'stopped' || this.state === 'destroyed') {
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
if (this.state === 'error') {
|
|
307
|
+
const errMsg = `Sandbox failed to stop with status: ${this.state}, error reason: ${this.errorReason}`;
|
|
308
|
+
throw new DaytonaError(errMsg);
|
|
309
|
+
}
|
|
310
|
+
if (timeout !== 0 && Date.now() - startTime > timeout * 1000) {
|
|
311
|
+
throw new DaytonaError('Sandbox failed to become stopped within the timeout period');
|
|
312
|
+
}
|
|
313
|
+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Refreshes the Sandbox data from the API.
|
|
318
|
+
*
|
|
319
|
+
* @returns {Promise<void>}
|
|
320
|
+
*
|
|
321
|
+
* @example
|
|
322
|
+
* await sandbox.refreshData();
|
|
323
|
+
* console.log(`Sandbox ${sandbox.id}:`);
|
|
324
|
+
* console.log(`State: ${sandbox.state}`);
|
|
325
|
+
* console.log(`Resources: ${sandbox.cpu} CPU, ${sandbox.memory} GiB RAM`);
|
|
326
|
+
*/
|
|
327
|
+
async refreshData() {
|
|
328
|
+
const response = await this.sandboxApi.getSandbox(this.id);
|
|
329
|
+
this.processSandboxDto(response.data);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Refreshes the sandbox activity to reset the timer for automated lifecycle management actions.
|
|
333
|
+
*
|
|
334
|
+
* This method updates the sandbox's last activity timestamp without changing its state.
|
|
335
|
+
* It is useful for keeping long-running sessions alive while there is still user activity.
|
|
336
|
+
*
|
|
337
|
+
* @returns {Promise<void>}
|
|
338
|
+
*
|
|
339
|
+
* @example
|
|
340
|
+
* // Keep sandbox activity alive
|
|
341
|
+
* await sandbox.refreshActivity();
|
|
342
|
+
*/
|
|
343
|
+
async refreshActivity() {
|
|
344
|
+
await this.sandboxApi.updateLastActivity(this.id);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Set the auto-stop interval for the Sandbox.
|
|
348
|
+
*
|
|
349
|
+
* The Sandbox will automatically stop after being idle (no new events) for the specified interval.
|
|
350
|
+
* Events include any state changes or interactions with the Sandbox through the sdk.
|
|
351
|
+
* Interactions using Sandbox Previews are not included.
|
|
352
|
+
*
|
|
353
|
+
* @param {number} interval - Number of minutes of inactivity before auto-stopping.
|
|
354
|
+
* Set to 0 to disable auto-stop. Default is 15 minutes.
|
|
355
|
+
* @returns {Promise<void>}
|
|
356
|
+
* @throws {DaytonaError} - `DaytonaError` - If interval is not a non-negative integer
|
|
357
|
+
*
|
|
358
|
+
* @example
|
|
359
|
+
* // Auto-stop after 1 hour
|
|
360
|
+
* await sandbox.setAutostopInterval(60);
|
|
361
|
+
* // Or disable auto-stop
|
|
362
|
+
* await sandbox.setAutostopInterval(0);
|
|
363
|
+
*/
|
|
364
|
+
async setAutostopInterval(interval) {
|
|
365
|
+
if (!Number.isInteger(interval) || interval < 0) {
|
|
366
|
+
throw new DaytonaError('autoStopInterval must be a non-negative integer');
|
|
367
|
+
}
|
|
368
|
+
await this.sandboxApi.setAutostopInterval(this.id, interval);
|
|
369
|
+
this.autoStopInterval = interval;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Set the auto-archive interval for the Sandbox.
|
|
373
|
+
*
|
|
374
|
+
* The Sandbox will automatically archive after being continuously stopped for the specified interval.
|
|
375
|
+
*
|
|
376
|
+
* @param {number} interval - Number of minutes after which a continuously stopped Sandbox will be auto-archived.
|
|
377
|
+
* Set to 0 for the maximum interval. Default is 7 days.
|
|
378
|
+
* @returns {Promise<void>}
|
|
379
|
+
* @throws {DaytonaError} - `DaytonaError` - If interval is not a non-negative integer
|
|
380
|
+
*
|
|
381
|
+
* @example
|
|
382
|
+
* // Auto-archive after 1 hour
|
|
383
|
+
* await sandbox.setAutoArchiveInterval(60);
|
|
384
|
+
* // Or use the maximum interval
|
|
385
|
+
* await sandbox.setAutoArchiveInterval(0);
|
|
386
|
+
*/
|
|
387
|
+
async setAutoArchiveInterval(interval) {
|
|
388
|
+
if (!Number.isInteger(interval) || interval < 0) {
|
|
389
|
+
throw new DaytonaError('autoArchiveInterval must be a non-negative integer');
|
|
390
|
+
}
|
|
391
|
+
await this.sandboxApi.setAutoArchiveInterval(this.id, interval);
|
|
392
|
+
this.autoArchiveInterval = interval;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Set the auto-delete interval for the Sandbox.
|
|
396
|
+
*
|
|
397
|
+
* The Sandbox will automatically delete after being continuously stopped for the specified interval.
|
|
398
|
+
*
|
|
399
|
+
* @param {number} interval - Number of minutes after which a continuously stopped Sandbox will be auto-deleted.
|
|
400
|
+
* Set to negative value to disable auto-delete. Set to 0 to delete immediately upon stopping.
|
|
401
|
+
* By default, auto-delete is disabled.
|
|
402
|
+
* @returns {Promise<void>}
|
|
403
|
+
*
|
|
404
|
+
* @example
|
|
405
|
+
* // Auto-delete after 1 hour
|
|
406
|
+
* await sandbox.setAutoDeleteInterval(60);
|
|
407
|
+
* // Or delete immediately upon stopping
|
|
408
|
+
* await sandbox.setAutoDeleteInterval(0);
|
|
409
|
+
* // Or disable auto-delete
|
|
410
|
+
* await sandbox.setAutoDeleteInterval(-1);
|
|
411
|
+
*/
|
|
412
|
+
async setAutoDeleteInterval(interval) {
|
|
413
|
+
await this.sandboxApi.setAutoDeleteInterval(this.id, interval);
|
|
414
|
+
this.autoDeleteInterval = interval;
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Retrieves the preview link for the sandbox at the specified port. If the port is closed,
|
|
418
|
+
* it will be opened automatically. For private sandboxes, a token is included to grant access
|
|
419
|
+
* to the URL.
|
|
420
|
+
*
|
|
421
|
+
* @param {number} port - The port to open the preview link on.
|
|
422
|
+
* @returns {PortPreviewUrl} The response object for the preview link, which includes the `url`
|
|
423
|
+
* and the `token` (to access private sandboxes).
|
|
424
|
+
*
|
|
425
|
+
* @example
|
|
426
|
+
* const previewLink = await sandbox.getPreviewLink(3000);
|
|
427
|
+
* console.log(`Preview URL: ${previewLink.url}`);
|
|
428
|
+
* console.log(`Token: ${previewLink.token}`);
|
|
429
|
+
*/
|
|
430
|
+
async getPreviewLink(port) {
|
|
431
|
+
return (await this.sandboxApi.getPortPreviewUrl(this.id, port)).data;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Archives the sandbox, making it inactive and preserving its state. When sandboxes are archived, the entire filesystem
|
|
435
|
+
* state is moved to cost-effective object storage, making it possible to keep sandboxes available for an extended period.
|
|
436
|
+
* The tradeoff between archived and stopped states is that starting an archived sandbox takes more time, depending on its size.
|
|
437
|
+
* Sandbox must be stopped before archiving.
|
|
438
|
+
*/
|
|
439
|
+
async archive() {
|
|
440
|
+
await this.sandboxApi.archiveSandbox(this.id);
|
|
441
|
+
await this.refreshData();
|
|
442
|
+
}
|
|
443
|
+
/**
|
|
444
|
+
* Creates an SSH access token for the sandbox.
|
|
445
|
+
*
|
|
446
|
+
* @param {number} expiresInMinutes - The number of minutes the SSH access token will be valid for.
|
|
447
|
+
* @returns {Promise<SshAccessDto>} The SSH access token.
|
|
448
|
+
*/
|
|
449
|
+
async createSshAccess(expiresInMinutes) {
|
|
450
|
+
return (await this.sandboxApi.createSshAccess(this.id, undefined, expiresInMinutes)).data;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Revokes an SSH access token for the sandbox.
|
|
454
|
+
*
|
|
455
|
+
* @param {string} token - The token to revoke.
|
|
456
|
+
* @returns {Promise<void>}
|
|
457
|
+
*/
|
|
458
|
+
async revokeSshAccess(token) {
|
|
459
|
+
await this.sandboxApi.revokeSshAccess(this.id, undefined, token);
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Validates an SSH access token for the sandbox.
|
|
463
|
+
*
|
|
464
|
+
* @param {string} token - The token to validate.
|
|
465
|
+
* @returns {Promise<SshAccessValidationDto>} The SSH access validation result.
|
|
466
|
+
*/
|
|
467
|
+
async validateSshAccess(token) {
|
|
468
|
+
return (await this.sandboxApi.validateSshAccess(token)).data;
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Assigns the API sandbox data to the Sandbox object.
|
|
472
|
+
*
|
|
473
|
+
* @param {SandboxDto} sandboxDto - The API sandbox instance to assign data from
|
|
474
|
+
* @returns {void}
|
|
475
|
+
*/
|
|
476
|
+
processSandboxDto(sandboxDto) {
|
|
477
|
+
this.id = sandboxDto.id;
|
|
478
|
+
this.name = sandboxDto.name;
|
|
479
|
+
this.organizationId = sandboxDto.organizationId;
|
|
480
|
+
this.snapshot = sandboxDto.snapshot;
|
|
481
|
+
this.user = sandboxDto.user;
|
|
482
|
+
this.env = sandboxDto.env;
|
|
483
|
+
this.labels = sandboxDto.labels;
|
|
484
|
+
this.public = sandboxDto.public;
|
|
485
|
+
this.target = sandboxDto.target;
|
|
486
|
+
this.cpu = sandboxDto.cpu;
|
|
487
|
+
this.gpu = sandboxDto.gpu;
|
|
488
|
+
this.memory = sandboxDto.memory;
|
|
489
|
+
this.disk = sandboxDto.disk;
|
|
490
|
+
this.state = sandboxDto.state;
|
|
491
|
+
this.errorReason = sandboxDto.errorReason;
|
|
492
|
+
this.backupState = sandboxDto.backupState;
|
|
493
|
+
this.backupCreatedAt = sandboxDto.backupCreatedAt;
|
|
494
|
+
this.autoStopInterval = sandboxDto.autoStopInterval;
|
|
495
|
+
this.autoArchiveInterval = sandboxDto.autoArchiveInterval;
|
|
496
|
+
this.autoDeleteInterval = sandboxDto.autoDeleteInterval;
|
|
497
|
+
this.volumes = sandboxDto.volumes;
|
|
498
|
+
this.buildInfo = sandboxDto.buildInfo;
|
|
499
|
+
this.createdAt = sandboxDto.createdAt;
|
|
500
|
+
this.updatedAt = sandboxDto.updatedAt;
|
|
501
|
+
this.networkBlockAll = sandboxDto.networkBlockAll;
|
|
502
|
+
this.networkAllowList = sandboxDto.networkAllowList;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Refreshes the Sandbox data from the API, but does not throw an error if the sandbox has been deleted.
|
|
506
|
+
* Instead, it sets the state to destroyed.
|
|
507
|
+
*
|
|
508
|
+
* @returns {Promise<void>}
|
|
509
|
+
*/
|
|
510
|
+
async refreshDataSafe() {
|
|
511
|
+
try {
|
|
512
|
+
await this.refreshData();
|
|
513
|
+
}
|
|
514
|
+
catch (error) {
|
|
515
|
+
if (error instanceof DaytonaNotFoundError) {
|
|
516
|
+
this.state = SandboxState.DESTROYED;
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
async ensureToolboxUrl() {
|
|
521
|
+
if (this.axiosInstance.defaults.baseURL !== TOOLBOX_URL_PLACEHOLDER) {
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
this.axiosInstance.defaults.baseURL = await this.getToolboxBaseUrl();
|
|
525
|
+
if (!this.axiosInstance.defaults.baseURL.endsWith('/')) {
|
|
526
|
+
this.axiosInstance.defaults.baseURL += '/';
|
|
527
|
+
}
|
|
528
|
+
this.axiosInstance.defaults.baseURL += this.id;
|
|
529
|
+
this.clientConfig.basePath = this.axiosInstance.defaults.baseURL;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
//# sourceMappingURL=Sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sandbox.js","sourceRoot":"","sources":["../../../../../libs/sdk-typescript/src/Sandbox.ts"],"names":[],"mappings":"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"}
|