1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package service
- import (
- "time"
- "github.com/langgenius/dify-sandbox/internal/core/runner/nodejs"
- runner_types "github.com/langgenius/dify-sandbox/internal/core/runner/types"
- "github.com/langgenius/dify-sandbox/internal/static"
- "github.com/langgenius/dify-sandbox/internal/types"
- )
- func RunNodeJsCode(code string, preload string, options *runner_types.RunnerOptions) *types.DifySandboxResponse {
- if err := checkOptions(options); err != nil {
- return types.ErrorResponse(-400, err.Error())
- }
-
- if !static.GetDifySandboxGlobalConfigurations().EnablePreload {
- preload = ""
- }
-
- timeout := time.Duration(
- static.GetDifySandboxGlobalConfigurations().WorkerTimeout * int(time.Second),
- )
- runner := nodejs.NodeJsRunner{}
- stdout, stderr, done, err := runner.Run(code, timeout, nil, preload, options)
- if err != nil {
- return types.ErrorResponse(-500, err.Error())
- }
- stdout_str := ""
- stderr_str := ""
- defer close(done)
- defer close(stdout)
- defer close(stderr)
- for {
- select {
- case <-done:
- return types.SuccessResponse(&RunCodeResponse{
- Stdout: stdout_str,
- Stderr: stderr_str,
- })
- case out := <-stdout:
- stdout_str += string(out)
- case err := <-stderr:
- stderr_str += string(err)
- }
- }
- }
|