From 595ddb6689c2b01d66e600f23980951ab0e9b177 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:55:58 +0530 Subject: [PATCH 01/10] feat: read file --- server/src/workflow-management/storage.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 server/src/workflow-management/storage.ts diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts new file mode 100644 index 00000000..cc366b55 --- /dev/null +++ b/server/src/workflow-management/storage.ts @@ -0,0 +1,19 @@ +/** + * A group of functions for storing recordings on the file system. + * Functions are asynchronous to unload the server from heavy file system operations. + */ +import fs from 'fs'; +import * as path from "path"; + +export const readFile = (path: string): Promise => { + return new Promise((resolve, reject) => { + fs.readFile(path, 'utf8', (err, data) => { + if (err) { + reject(err); + } else { + resolve(data); + } + }); + }); +}; + From be07e5a40e3446013410deb05e7eb4c75df8ce3f Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:56:15 +0530 Subject: [PATCH 02/10] docs: read file --- server/src/workflow-management/storage.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index cc366b55..a130fdad 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -5,6 +5,12 @@ import fs from 'fs'; import * as path from "path"; +/** + * Reads a file from path and returns its content as a string. + * @param path The path to the file. + * @returns {Promise} + * @category WorkflowManagement-Storage + */ export const readFile = (path: string): Promise => { return new Promise((resolve, reject) => { fs.readFile(path, 'utf8', (err, data) => { From 246ae0fc0b785c1d9c94e12f84ace7b373e6ffec Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:58:07 +0530 Subject: [PATCH 03/10] feat: save file --- server/src/workflow-management/storage.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index a130fdad..1d6ea993 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -23,3 +23,19 @@ export const readFile = (path: string): Promise => { }); }; +export const saveFile = (path: string, data: string): Promise => { + return new Promise((resolve, reject) => { + fs.writeFile(path, data, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +}; + + + + + From 491e26e8200c811b29350f75fefcce7715fb5144 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:58:17 +0530 Subject: [PATCH 04/10] docs: save file --- server/src/workflow-management/storage.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index 1d6ea993..374b6db3 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -23,6 +23,13 @@ export const readFile = (path: string): Promise => { }); }; +/** + * Writes a string to a file. If the file already exists, it is overwritten. + * @param path The path to the file. + * @param data The data to write to the file. + * @returns {Promise} + * @category WorkflowManagement-Storage + */ export const saveFile = (path: string, data: string): Promise => { return new Promise((resolve, reject) => { fs.writeFile(path, data, (err) => { From cdfab73e5185e9bd2b945de8036be007e8be0222 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:58:50 +0530 Subject: [PATCH 05/10] feat: del file --- server/src/workflow-management/storage.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index 374b6db3..ca259a7e 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -43,6 +43,19 @@ export const saveFile = (path: string, data: string): Promise => { }; +export const deleteFile = (path: string): Promise => { + return new Promise((resolve, reject) => { + fs.unlink(path, (err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); +}; + + From e3fce41d4f9e6cc7ce63f2e58155d2984700d5f7 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:59:00 +0530 Subject: [PATCH 06/10] docs: del file --- server/src/workflow-management/storage.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index ca259a7e..4c78bf5a 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -42,7 +42,12 @@ export const saveFile = (path: string, data: string): Promise => { }); }; - +/** + * Deletes a file from the file system. + * @param path The path to the file. + * @returns {Promise} + * @category WorkflowManagement-Storage + */ export const deleteFile = (path: string): Promise => { return new Promise((resolve, reject) => { fs.unlink(path, (err) => { From 06e68eccfe6a06919dbe75396410b95d36c1eba0 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:59:38 +0530 Subject: [PATCH 07/10] feat: apply callback to all resolved promises --- server/src/workflow-management/storage.ts | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index 4c78bf5a..5c7a8b06 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -60,7 +60,24 @@ export const deleteFile = (path: string): Promise => { }); }; - - - +/** + * A helper function to apply a callback to the all resolved + * promises made out of an array of the items. + * @param items An array of items. + * @param block The function to call for each item after the promise for it was resolved. + * @returns {Promise} + * @category WorkflowManagement-Storage + */ +function promiseAllP(items: any, block: any) { + let promises: any = []; + items.forEach(function(item : any, index: number) { + promises.push( function(item,i) { + return new Promise(function(resolve, reject) { + // @ts-ignore + return block.apply(this,[item,index,resolve,reject]); + }); + }(item,index)) + }); + return Promise.all(promises); +} From 5a965dd2c666ba5743f114a950db1b247e2b3f21 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 20:59:51 +0530 Subject: [PATCH 08/10] docs: read files --- server/src/workflow-management/storage.ts | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index 5c7a8b06..50d8ca97 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -81,3 +81,27 @@ function promiseAllP(items: any, block: any) { return Promise.all(promises); } + +export const readFiles = (dirname: string): Promise => { + return new Promise((resolve, reject) => { + fs.readdir(dirname, function(err, filenames) { + if (err) return reject(err); + promiseAllP(filenames.filter((filename: string) => !filename.startsWith('.')), + (filename: string, index : number, resolve: any, reject: any) => { + fs.readFile(path.resolve(dirname, filename), 'utf-8', function(err, content) { + if (err) return reject(err); + return resolve(content); + }); + }) + .then(results => { + return resolve(results); + }) + .catch(error => { + return reject(error); + }); + }); + }); +} + + + From d4d9fab6bbaa2e3591db93461a203c4c4fc98460 Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 21:00:04 +0530 Subject: [PATCH 09/10] feat: read files --- server/src/workflow-management/storage.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server/src/workflow-management/storage.ts b/server/src/workflow-management/storage.ts index 50d8ca97..40b0bbcd 100644 --- a/server/src/workflow-management/storage.ts +++ b/server/src/workflow-management/storage.ts @@ -81,7 +81,12 @@ function promiseAllP(items: any, block: any) { return Promise.all(promises); } - +/** + * Reads all files from a directory and returns an array of their contents. + * @param dirname The path to the directory. + * @category WorkflowManagement-Storage + * @returns {Promise} + */ export const readFiles = (dirname: string): Promise => { return new Promise((resolve, reject) => { fs.readdir(dirname, function(err, filenames) { From ab11311189d944ec86852cd1c96d840d97066e2c Mon Sep 17 00:00:00 2001 From: karishmas6 Date: Sat, 8 Jun 2024 21:00:32 +0530 Subject: [PATCH 10/10] feat: imports --- server/src/index.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 server/src/index.ts diff --git a/server/src/index.ts b/server/src/index.ts new file mode 100644 index 00000000..46ce10e3 --- /dev/null +++ b/server/src/index.ts @@ -0,0 +1,13 @@ +export * from "./server"; +export * from "./logger"; +export * from "./types"; +export * from "./browser-management/controller"; +export * from "./browser-management/inputHandlers"; +export * from "./browser-management/classes/RemoteBrowser"; +export * from "./browser-management/classes/BrowserPool"; +export * from "./socket-connection/connection"; +export * from "./workflow-management/selector"; +export * from "./workflow-management/storage"; +export * from "./workflow-management/utils"; +export * from "./workflow-management/classes/Interpreter"; +export * from "./workflow-management/classes/Generator";