feat: Implement draft version of the code execution app

This commit is contained in:
Faruk AYDIN
2024-07-29 16:02:15 +02:00
committed by Ali BARIN
parent 09d3a06b27
commit c99b9dbe0a
8 changed files with 585 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ FROM node:18-alpine
ENV PORT=3000
RUN \
apk --no-cache add --virtual build-dependencies python3 build-base git
apk --no-cache add --virtual build-dependencies python3 build-base git make g++
WORKDIR /automatisch

View File

@@ -0,0 +1,332 @@
diff --git a/packages/backend/code-execution.patch b/packages/backend/code-execution.patch
index 646bc6dd..e69de29b 100644
--- a/packages/backend/code-execution.patch
+++ b/packages/backend/code-execution.patch
@@ -1,327 +0,0 @@
-diff --git a/docker/Dockerfile b/docker/Dockerfile
-index f4aa6577..e3b9c10f 100644
---- a/docker/Dockerfile
-+++ b/docker/Dockerfile
-@@ -4,7 +4,7 @@ FROM node:18-alpine
- ENV PORT 3000
-
- RUN \
-- apk --no-cache add --virtual build-dependencies python3 build-base git
-+ apk --no-cache add --virtual build-dependencies python3 build-base git make g++
-
- WORKDIR /automatisch
-
-diff --git a/packages/backend/package.json b/packages/backend/package.json
-index 50b8109f..677f5325 100644
---- a/packages/backend/package.json
-+++ b/packages/backend/package.json
-@@ -49,6 +49,7 @@
- "http-errors": "~1.6.3",
- "http-proxy-agent": "^7.0.0",
- "https-proxy-agent": "^7.0.1",
-+ "isolated-vm": "^5.0.1",
- "jsonwebtoken": "^9.0.0",
- "knex": "^2.4.0",
- "libphonenumber-js": "^1.10.48",
-diff --git a/yarn.lock b/yarn.lock
-index 7904bbef..30e88cd9 100644
---- a/yarn.lock
-+++ b/yarn.lock
-@@ -5816,6 +5816,11 @@ base16@^1.0.0:
- resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz"
- integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=
-
-+base64-js@^1.3.1:
-+ version "1.5.1"
-+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
-+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-+
- basic-auth@^2.0.1, basic-auth@~2.0.1:
- version "2.0.1"
- resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz"
-@@ -5868,6 +5873,15 @@ binary-extensions@^2.0.0:
- resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-+bl@^4.0.3:
-+ version "4.1.0"
-+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
-+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
-+ dependencies:
-+ buffer "^5.5.0"
-+ inherits "^2.0.4"
-+ readable-stream "^3.4.0"
-+
- bluebird@^3.5.5:
- version "3.7.2"
- resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
-@@ -6008,6 +6022,14 @@ buffer-writer@2.0.0:
- resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz"
- integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==
-
-+buffer@^5.5.0:
-+ version "5.7.1"
-+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
-+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
-+ dependencies:
-+ base64-js "^1.3.1"
-+ ieee754 "^1.1.13"
-+
- builtin-modules@^3.1.0:
- version "3.2.0"
- resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz"
-@@ -6304,7 +6326,7 @@ chokidar@^3.4.2, chokidar@^3.5.2:
- optionalDependencies:
- fsevents "~2.3.2"
-
--chownr@^1.1.4:
-+chownr@^1.1.1, chownr@^1.1.4:
- version "1.1.4"
- resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
- integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
-@@ -7283,6 +7305,13 @@ decompress-response@^3.3.0:
- dependencies:
- mimic-response "^1.0.0"
-
-+decompress-response@^6.0.0:
-+ version "6.0.0"
-+ resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
-+ integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
-+ dependencies:
-+ mimic-response "^3.1.0"
-+
- dedent@^0.7.0:
- version "0.7.0"
- resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz"
-@@ -7770,7 +7799,7 @@ encoding@^0.1.12, encoding@^0.1.13:
- dependencies:
- iconv-lite "^0.6.2"
-
--end-of-stream@^1.1.0:
-+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
- version "1.4.4"
- resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
-@@ -8488,6 +8517,11 @@ exit@^0.1.2:
- resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
- integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
-
-+expand-template@^2.0.3:
-+ version "2.0.3"
-+ resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
-+ integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
-+
- expect@^27.4.6:
- version "27.4.6"
- resolved "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz"
-@@ -8914,6 +8948,11 @@ fresh@0.5.2:
- resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
- integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
-
-+fs-constants@^1.0.0:
-+ version "1.0.0"
-+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
-+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
-+
- fs-extra@^10.0.0:
- version "10.0.0"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz"
-@@ -9169,6 +9208,11 @@ gitconfiglocal@^1.0.0:
- dependencies:
- ini "^1.3.2"
-
-+github-from-package@0.0.0:
-+ version "0.0.0"
-+ resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
-+ integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
-+
- glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2:
- version "5.1.2"
- resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
-@@ -9717,6 +9761,11 @@ identity-obj-proxy@^3.0.0:
- dependencies:
- harmony-reflect "^1.4.6"
-
-+ieee754@^1.1.13:
-+ version "1.2.1"
-+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
-+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-+
- ignore-by-default@^1.0.1:
- version "1.0.1"
- resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz"
-@@ -10238,6 +10287,13 @@ isobject@^3.0.1:
- resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"
- integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
-
-+isolated-vm@^5.0.1:
-+ version "5.0.1"
-+ resolved "https://registry.yarnpkg.com/isolated-vm/-/isolated-vm-5.0.1.tgz#d87b12cf8889e351cb1598a4aeea00bb458bf20c"
-+ integrity sha512-hs7+ff59Z2zDvavfcjuot/r1gm6Bmpt+GoZxmVfxUmXaX5scOvUq/Rnme+mUtSh5lW41hH8gAuvk/yTJDYO8Fg==
-+ dependencies:
-+ prebuild-install "^7.1.1"
-+
- isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
-@@ -11616,6 +11672,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
- resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"
- integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
-
-+mimic-response@^3.1.0:
-+ version "3.1.0"
-+ resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
-+ integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
-+
- min-indent@^1.0.0:
- version "1.0.1"
- resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
-@@ -11675,6 +11736,11 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
- resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz"
- integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
-
-+minimist@^1.2.3:
-+ version "1.2.8"
-+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
-+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-+
- minipass-collect@^1.0.2:
- version "1.0.2"
- resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz"
-@@ -11780,6 +11846,11 @@ minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2:
- minipass "^3.0.0"
- yallist "^4.0.0"
-
-+mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
-+ version "0.5.3"
-+ resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
-+ integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-+
- mkdirp-infer-owner@^2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz"
-@@ -11995,6 +12066,11 @@ nanoid@^3.3.7:
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
- integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-
-+napi-build-utils@^1.0.1:
-+ version "1.0.2"
-+ resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
-+ integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
-+
- natural-compare@^1.4.0:
- version "1.4.0"
- resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
-@@ -12023,6 +12099,13 @@ no-case@^3.0.4:
- lower-case "^2.0.2"
- tslib "^2.0.3"
-
-+node-abi@^3.3.0:
-+ version "3.65.0"
-+ resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3"
-+ integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==
-+ dependencies:
-+ semver "^7.3.5"
-+
- node-addon-api@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
-@@ -13683,6 +13766,24 @@ preact@^10.0.0:
- resolved "https://registry.npmjs.org/preact/-/preact-10.10.2.tgz"
- integrity sha512-GUXSsfwq4NKhlLYY5ctfNE0IjFk7Xo4952yPI8yMkXdhzeQmQ+FahZITe7CeHXMPyKBVQ8SoCmGNIy9TSOdhgQ==
-
-+prebuild-install@^7.1.1:
-+ version "7.1.2"
-+ resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056"
-+ integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==
-+ dependencies:
-+ detect-libc "^2.0.0"
-+ expand-template "^2.0.3"
-+ github-from-package "0.0.0"
-+ minimist "^1.2.3"
-+ mkdirp-classic "^0.5.3"
-+ napi-build-utils "^1.0.1"
-+ node-abi "^3.3.0"
-+ pump "^3.0.0"
-+ rc "^1.2.7"
-+ simple-get "^4.0.0"
-+ tar-fs "^2.0.0"
-+ tunnel-agent "^0.6.0"
-+
- prelude-ls@^1.2.1:
- version "1.2.1"
- resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
-@@ -13989,7 +14090,7 @@ raw-body@^2.5.2:
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
--rc@^1.2.8:
-+rc@^1.2.7, rc@^1.2.8:
- version "1.2.8"
- resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
- integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
-@@ -14342,6 +14443,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-+readable-stream@^3.1.1:
-+ version "3.6.2"
-+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
-+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
-+ dependencies:
-+ inherits "^2.0.3"
-+ string_decoder "^1.1.1"
-+ util-deprecate "^1.0.1"
-+
- readdir-scoped-modules@^1.0.0:
- version "1.1.0"
- resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz"
-@@ -15054,6 +15164,20 @@ signal-exit@^4.0.1, signal-exit@^4.1.0:
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
- integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-
-+simple-concat@^1.0.0:
-+ version "1.0.1"
-+ resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
-+ integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-+
-+simple-get@^4.0.0:
-+ version "4.0.1"
-+ resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
-+ integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
-+ dependencies:
-+ decompress-response "^6.0.0"
-+ once "^1.3.1"
-+ simple-concat "^1.0.0"
-+
- simple-swizzle@^0.2.2:
- version "0.2.2"
- resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
-@@ -15799,6 +15923,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
- resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
- integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
-
-+tar-fs@^2.0.0:
-+ version "2.1.1"
-+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
-+ integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
-+ dependencies:
-+ chownr "^1.1.1"
-+ mkdirp-classic "^0.5.2"
-+ pump "^3.0.0"
-+ tar-stream "^2.1.4"
-+
-+tar-stream@^2.1.4:
-+ version "2.2.0"
-+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
-+ integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
-+ dependencies:
-+ bl "^4.0.3"
-+ end-of-stream "^1.4.1"
-+ fs-constants "^1.0.0"
-+ inherits "^2.0.3"
-+ readable-stream "^3.1.1"
-+
- tar@^4.4.12:
- version "4.4.19"
- resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz"

View File

@@ -49,6 +49,7 @@
"http-errors": "~1.6.3",
"http-proxy-agent": "^7.0.0",
"https-proxy-agent": "^7.0.1",
"isolated-vm": "^5.0.1",
"jsonwebtoken": "^9.0.0",
"knex": "^2.4.0",
"libphonenumber-js": "^1.10.48",

View File

@@ -0,0 +1,3 @@
import runJavascript from './run-javascript/index.js';
export default [runJavascript];

View File

@@ -0,0 +1,81 @@
import defineAction from '../../../../helpers/define-action.js';
export default defineAction({
name: 'Run Javascript',
key: 'runJavascript',
description:
'Run browser Javascript code. You can not use NodeJS specific features and npm packages.',
arguments: [
{
label: 'Inputs',
key: 'inputs',
type: 'dynamic',
required: false,
description:
'To be able to use data from previous steps, you need to expose them as input entries. You can access these input values in your code by using the `inputs` argument.',
value: [
{
key: '',
value: '',
},
],
fields: [
{
label: 'Key',
key: 'key',
type: 'string',
required: true,
variables: true,
},
{
label: 'Value',
key: 'value',
type: 'string',
required: true,
variables: true,
},
],
},
{
label: 'Code Snippet',
key: 'codeSnippet',
type: 'string',
required: true,
variables: false,
value: 'const code = async (inputs) => { return true; };',
},
],
async run($) {
const { inputs = [], codeSnippet } = $.step.parameters;
const ivm = (await import('isolated-vm')).default;
const isolate = new ivm.Isolate({ memoryLimit: 128 });
try {
const context = await isolate.createContext();
const externalData = new ivm.ExternalCopy(inputs).copyInto();
const compiledCodeSnippet = await isolate.compileScript(codeSnippet);
const codeRun = await compiledCodeSnippet.run(context);
const codeFunction = await context.global.get('code', {
reference: true,
promise: true,
});
const result = await codeFunction.apply(undefined, [externalData], {});
// const codeReturn = await outRef.copy();
const codeReturn = await result.copy();
// console.log(codeReturn);
$.setActionItem({ raw: { output: codeReturn } });
} finally {
isolate.dispose();
}
},
});

View File

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800px" height="800px" viewBox="0 0 512 512">
<polyline points="160 368 32 256 160 144" style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/>
<polyline points="352 368 480 256 352 144" style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/>
<line x1="304" y1="96" x2="208" y2="416" style="fill:none;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/>
</svg>

After

Width:  |  Height:  |  Size: 519 B

View File

@@ -0,0 +1,14 @@
import defineApp from '../../helpers/define-app.js';
import actions from './actions/index.js';
export default defineApp({
name: 'Code',
key: 'code',
baseUrl: '',
apiBaseUrl: '',
iconUrl: '{BASE_URL}/apps/code/assets/favicon.svg',
authDocUrl: '{DOCS_URL}/apps/code/connection',
primaryColor: '000000',
supportsConnections: false,
actions,
});

151
yarn.lock
View File

@@ -5816,6 +5816,11 @@ base16@^1.0.0:
resolved "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz"
integrity sha1-4pf2DX7BAUp6lxo568ipjAtoHnA=
base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
basic-auth@^2.0.1, basic-auth@~2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz"
@@ -5868,6 +5873,15 @@ binary-extensions@^2.0.0:
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
bl@^4.0.3:
version "4.1.0"
resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
dependencies:
buffer "^5.5.0"
inherits "^2.0.4"
readable-stream "^3.4.0"
bluebird@^3.5.5:
version "3.7.2"
resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
@@ -6008,6 +6022,14 @@ buffer-writer@2.0.0:
resolved "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz"
integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==
buffer@^5.5.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builtin-modules@^3.1.0:
version "3.2.0"
resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz"
@@ -6304,7 +6326,7 @@ chokidar@^3.4.2, chokidar@^3.5.2:
optionalDependencies:
fsevents "~2.3.2"
chownr@^1.1.4:
chownr@^1.1.1, chownr@^1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
@@ -7283,6 +7305,13 @@ decompress-response@^3.3.0:
dependencies:
mimic-response "^1.0.0"
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
dependencies:
mimic-response "^3.1.0"
dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz"
@@ -7770,7 +7799,7 @@ encoding@^0.1.12, encoding@^0.1.13:
dependencies:
iconv-lite "^0.6.2"
end-of-stream@^1.1.0:
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
@@ -8488,6 +8517,11 @@ exit@^0.1.2:
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
expand-template@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
expect@^27.4.6:
version "27.4.6"
resolved "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz"
@@ -8914,6 +8948,11 @@ fresh@0.5.2:
resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
fs-extra@^10.0.0:
version "10.0.0"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz"
@@ -9169,6 +9208,11 @@ gitconfiglocal@^1.0.0:
dependencies:
ini "^1.3.2"
github-from-package@0.0.0:
version "0.0.0"
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
@@ -9717,6 +9761,11 @@ identity-obj-proxy@^3.0.0:
dependencies:
harmony-reflect "^1.4.6"
ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
ignore-by-default@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz"
@@ -10238,6 +10287,13 @@ isobject@^3.0.1:
resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
isolated-vm@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/isolated-vm/-/isolated-vm-5.0.1.tgz#d87b12cf8889e351cb1598a4aeea00bb458bf20c"
integrity sha512-hs7+ff59Z2zDvavfcjuot/r1gm6Bmpt+GoZxmVfxUmXaX5scOvUq/Rnme+mUtSh5lW41hH8gAuvk/yTJDYO8Fg==
dependencies:
prebuild-install "^7.1.1"
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
@@ -11616,6 +11672,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1:
resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz"
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
min-indent@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
@@ -11675,6 +11736,11 @@ minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6:
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz"
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
minimist@^1.2.3:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
minipass-collect@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz"
@@ -11780,6 +11846,11 @@ minizlib@^2.0.0, minizlib@^2.1.1, minizlib@^2.1.2:
minipass "^3.0.0"
yallist "^4.0.0"
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
version "0.5.3"
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
mkdirp-infer-owner@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz"
@@ -11995,6 +12066,11 @@ nanoid@^3.3.7:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
napi-build-utils@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
@@ -12023,6 +12099,13 @@ no-case@^3.0.4:
lower-case "^2.0.2"
tslib "^2.0.3"
node-abi@^3.3.0:
version "3.65.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.65.0.tgz#ca92d559388e1e9cab1680a18c1a18757cdac9d3"
integrity sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==
dependencies:
semver "^7.3.5"
node-addon-api@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
@@ -13683,6 +13766,24 @@ preact@^10.0.0:
resolved "https://registry.npmjs.org/preact/-/preact-10.10.2.tgz"
integrity sha512-GUXSsfwq4NKhlLYY5ctfNE0IjFk7Xo4952yPI8yMkXdhzeQmQ+FahZITe7CeHXMPyKBVQ8SoCmGNIy9TSOdhgQ==
prebuild-install@^7.1.1:
version "7.1.2"
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056"
integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==
dependencies:
detect-libc "^2.0.0"
expand-template "^2.0.3"
github-from-package "0.0.0"
minimist "^1.2.3"
mkdirp-classic "^0.5.3"
napi-build-utils "^1.0.1"
node-abi "^3.3.0"
pump "^3.0.0"
rc "^1.2.7"
simple-get "^4.0.0"
tar-fs "^2.0.0"
tunnel-agent "^0.6.0"
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
@@ -13989,7 +14090,7 @@ raw-body@^2.5.2:
iconv-lite "0.4.24"
unpipe "1.0.0"
rc@^1.2.8:
rc@^1.2.7, rc@^1.2.8:
version "1.2.8"
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -14342,6 +14443,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.1.1:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readdir-scoped-modules@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz"
@@ -15054,6 +15164,20 @@ signal-exit@^4.0.1, signal-exit@^4.1.0:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
simple-concat@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
simple-get@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
dependencies:
decompress-response "^6.0.0"
once "^1.3.1"
simple-concat "^1.0.0"
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
@@ -15799,6 +15923,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
tar-fs@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
dependencies:
chownr "^1.1.1"
mkdirp-classic "^0.5.2"
pump "^3.0.0"
tar-stream "^2.1.4"
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
dependencies:
bl "^4.0.3"
end-of-stream "^1.4.1"
fs-constants "^1.0.0"
inherits "^2.0.3"
readable-stream "^3.1.1"
tar@^4.4.12:
version "4.4.19"
resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz"