Skip to content

Commit

Permalink
chore: transform sdk (#4)
Browse files Browse the repository at this point in the history
* chore: re structure exports

* chore: restructure directories

* chore: init js-resolver directory

* chore: use local js-resolver-sdk

* fix: js-resolver-sdk exports

* fix: axios version 1.2.0 not compatible

* chore: read resolver from cwd/.tmp

* chore: revert back to single directory

* chore: update tsconfigs

* fix: deterministic compression
  • Loading branch information
brandonchuah authored Dec 2, 2022
1 parent c56d017 commit b1f84b6
Show file tree
Hide file tree
Showing 31 changed files with 122 additions and 66 deletions.
2 changes: 1 addition & 1 deletion .env_example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SECRETS_ALCHEMY_ID=
SECRETS_ALCHEMY_ID=
41 changes: 36 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,42 @@
{
"name": "@gelatonetwork/js-resolver-poc",
"name": "@gelatonetwork/js-resolver-sdk",
"version": "0.1.0",
"description": "Gelato Ops template for JS resolvers",
"description": "Gelato Automate JS resolvers sdk",
"url": "https://github.com/gelatodigital/js-resolver-poc",
"main": "dist/lib/index.js",
"types": "dist/lib/types/index.d.ts",
"files": [
"dist/lib/**/*"
],
"exports": {
".": "./dist/lib/index.js",
"./tcp": "./dist/lib/tcp/index.js",
"./runtime": "./dist/lib/runtime/index.js",
"./builder": "./dist/lib/builder/index.js",
"./uploader": "./dist/lib/uploader/index.js"
},
"typesVersions": {
"*": {
"*": [
"dist/lib/index.d.ts"
],
"tcp": [
"dist/lib/tcp/index.d.ts"
],
"runtime": [
"dist/lib/runtime/index.d.ts"
],
"builder": [
"dist/lib/builder/index.d.ts"
],
"uploader": [
"dist/lib/uploader/index.d.ts"
]
}
},
"scripts": {
"build": "tsc",
"build": "rm -rf dist && tsc --project tsconfig.build.json && yarn deps",
"deps": "yarn link && yarn link @gelatonetwork/js-resolver-sdk",
"format": "prettier --write '*/**/*.{js,json,md,ts}'",
"format:check": "prettier --check '*/**/*.{js,json,md,ts}'",
"lint": "eslint --cache .",
Expand All @@ -19,7 +51,6 @@
"devDependencies": {
"@tsconfig/recommended": "^1.0.1",
"@types/node": "^16.11.12",
"@types/tar": "^6.1.3",
"@typescript-eslint/eslint-plugin": "^5.40.0",
"@typescript-eslint/parser": "^5.6.0",
"eslint": "^8.4.1",
Expand All @@ -32,7 +63,7 @@
"dependencies": {
"@types/dockerode": "^3.3.11",
"ajv": "^8.11.0",
"axios": "^1.1.2",
"axios": "1.1.2",
"colors": "^1.4.0",
"dockerode": "^3.3.4",
"dotenv": "^16.0.3",
Expand Down
1 change: 1 addition & 0 deletions src/lib/builder/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./JsResolverBuilder";
6 changes: 1 addition & 5 deletions src/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,2 @@
export * from "./JsResolverSdk";
export * from "./tcp/JsResolverTcpClient";
export * from "./tcp/JsResolverTcpServer";
export * from "./types/JsResolverContext";
export * from "./types/JsResolverEvent";
export * from "./types/JsResolverResult";
export * from "./types";
4 changes: 2 additions & 2 deletions src/lib/runtime/JsResolverRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ import { JsResolverTcpClient } from "../tcp/JsResolverTcpClient";
import { JsResolverContextData } from "../types/JsResolverContext";
import { JsResolverEvent } from "../types/JsResolverEvent";
import { JsResolverAbstractSandbox } from "./sandbox/JsResolverAbstractSandbox";
import { JsResolverExec } from "../types/JsResolverExecResult";
import { JsResolverDockerSandbox } from "./sandbox/JsResolverDockerSandbox";
import { JsResolverThreadSandbox } from "./sandbox/JsResolverThreadSandbox";
import {
JsResolverExec,
JsResolverRunnerPayload,
JsResolverRunnerOptions,
} from "../types/JsResolverRunnerPayload";
} from "./types";
import { JsResolverUserArgs } from "../types/JsResolverUserArgs";

const START_TIMEOUT = 10_000;
Expand Down
4 changes: 2 additions & 2 deletions src/lib/runtime/JsResolverRunnerPool.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { JsResolverTcpHelper } from "../tcp/JsResolverTcpHelper";
import { JsResolverExec } from "../types/JsResolverExecResult";
import { JsResolverRunnerPayload } from "../types/JsResolverRunnerPayload";
import { JsResolverExec } from "./types/JsResolverExecResult";
import { JsResolverRunnerPayload } from "./types";
import { JsResolverRunner } from "./JsResolverRunner";

export class JsResolverRunnerPool {
Expand Down
3 changes: 3 additions & 0 deletions src/lib/runtime/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from "./JsResolverRunner";
export * from "./JsResolverRunnerPool";
export * from "./types";
2 changes: 1 addition & 1 deletion src/lib/runtime/sandbox/JsResolverAbstractSandbox.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { EventEmitter } from "node:stream";
import colors from "colors/safe";
import { JsResolverSandboxOptions } from "../../types/JsResolverSandboxOptions";
import { JsResolverSandboxOptions } from "../../tcp";

export abstract class JsResolverAbstractSandbox extends EventEmitter {
protected _memoryLimit: number;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { JsResolverResult } from "./JsResolverResult";
import { JsResolverResult } from "../../types/JsResolverResult";

type JsResolverExecStats = {
duration: number;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { JsResolverContextData } from "./JsResolverContext";
import { JsResolverContextData } from "../../types/JsResolverContext";

export interface JsResolverRunnerOptions {
memory: number;
Expand Down
2 changes: 2 additions & 0 deletions src/lib/runtime/types/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from "./JsResolverExecResult";
export * from "./JsResolverRunnerPayload";
4 changes: 4 additions & 0 deletions src/lib/tcp/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export * from "./JsResolverTcpClient";
export * from "./JsResolverTcpHelper";
export * from "./JsResolverTcpServer";
export * from "./types";
File renamed without changes.
1 change: 1 addition & 0 deletions src/lib/tcp/types/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./JsResolverSandboxOptions";
4 changes: 4 additions & 0 deletions src/lib/types/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export * from "./JsResolverContext";
export * from "./JsResolverEvent";
export * from "./JsResolverResult";
export * from "./JsResolverUserArgs";
22 changes: 13 additions & 9 deletions src/lib/uploader/JsResolverUploader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,18 @@ export class JsResolverUploader {
const { base } = path.parse(jsResolverBuildPath);

// create directory with jsResolver.cjs & schema
const time = Math.floor(Date.now() / 1000);
const folderCompressedName = `.tmp/jsResolver-${time}`;
const folderCompressedTar = `${folderCompressedName}.tgz`;
if (!fs.existsSync(folderCompressedName)) {
fs.mkdirSync(folderCompressedName, { recursive: true });
const folderCompressedName = `jsResolver`;
const folderCompressedPath = `.tmp/${folderCompressedName}`;
const folderCompressedTar = `${folderCompressedPath}.tgz`;

if (!fs.existsSync(folderCompressedPath)) {
fs.mkdirSync(folderCompressedPath, { recursive: true });
}

// move files to directory
await fsp.rename(jsResolverBuildPath, `${folderCompressedName}/${base}`);
await fsp.rename(jsResolverBuildPath, `${folderCompressedPath}/${base}`);
try {
await fsp.copyFile(schemaPath, `${folderCompressedName}/schema.json`);
await fsp.copyFile(schemaPath, `${folderCompressedPath}/schema.json`);
} catch (err) {
throw new Error(
`Schema not found at path: ${schemaPath}. \n${err.message}`
Expand All @@ -111,6 +112,9 @@ export class JsResolverUploader {
.c(
{
gzip: true,
cwd: `${process.cwd()}/.tmp`,
noMtime: true,
portable: true,
},
[folderCompressedName]
)
Expand All @@ -121,7 +125,7 @@ export class JsResolverUploader {
});

// delete directory after compression
await fsp.rm(folderCompressedName, { recursive: true });
await fsp.rm(folderCompressedPath, { recursive: true });

return folderCompressedTar;
}
Expand All @@ -130,7 +134,7 @@ export class JsResolverUploader {
try {
const { dir } = path.parse(input);

tar.x({ file: `${input}`, sync: true, cwd: dir });
await tar.x({ file: input, cwd: dir });
} catch (err) {
throw new Error(
`JsResolverUploaderError: Extract JsResolver from ${input} failed. \n${err.message}`
Expand Down
1 change: 1 addition & 0 deletions src/lib/uploader/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./JsResolverUploader";
5 changes: 4 additions & 1 deletion src/resolvers/fails/escape-memory.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { JsResolverSdk, JsResolverContext } from "../../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";

JsResolverSdk.onChecker(async (context: JsResolverContext) => {
const arr: string[] = [];
Expand Down
5 changes: 4 additions & 1 deletion src/resolvers/fails/escape-timeout.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { JsResolverSdk, JsResolverContext } from "../../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";
import { setTimeout as delay } from "timers/promises";

JsResolverSdk.onChecker(async (context: JsResolverContext) => {
Expand Down
7 changes: 5 additions & 2 deletions src/resolvers/fails/no-result.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { JsResolverSdk } from "../../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";
import { setTimeout as delay } from "timers/promises";

JsResolverSdk.onChecker(async (context) => {
JsResolverSdk.onChecker(async (context: JsResolverContext) => {
await delay(1000);
process.exit(0);
});
2 changes: 1 addition & 1 deletion src/resolvers/fails/not-registered.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { JsResolverSdk, JsResolverContext } from "../../lib";
import { JsResolverContext } from "@gelatonetwork/js-resolver-sdk";

const main = async (context: JsResolverContext) => {
return { canExec: false, message: "Sandbox escaped timeout" };
Expand Down
5 changes: 4 additions & 1 deletion src/resolvers/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { JsResolverSdk, JsResolverContext } from "../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";
import { Contract, ethers } from "ethers";
import axios from "axios";

Expand Down
5 changes: 4 additions & 1 deletion src/resolvers/oracle/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { JsResolverSdk, JsResolverContext } from "../../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";
import { Contract, ethers } from "ethers";
import axios from "axios";

Expand Down
5 changes: 4 additions & 1 deletion src/resolvers/wait.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import { JsResolverSdk, JsResolverContext } from "../lib";
import {
JsResolverSdk,
JsResolverContext,
} from "@gelatonetwork/js-resolver-sdk";
import { setTimeout as delay } from "timers/promises";

JsResolverSdk.onChecker(async (context: JsResolverContext) => {
Expand Down
12 changes: 7 additions & 5 deletions src/scripts/benchmark.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import "dotenv/config";
import colors from "colors/safe";
import { setTimeout as delay } from "timers/promises";
import { JsResolverContextData } from "../lib";
import { JsResolverBuilder } from "../lib/builder/JsResolverBuilder";
import { JsResolverExec } from "../lib/types/JsResolverExecResult";
import { JsResolverContextData } from "@gelatonetwork/js-resolver-sdk";
import {
JsResolverExec,
JsResolverRunnerPool,
JsResolverRunner,
} from "@gelatonetwork/js-resolver-sdk/runtime";
import { JsResolverBuilder } from "@gelatonetwork/js-resolver-sdk/builder";
import { performance } from "perf_hooks";
import { JsResolverRunnerPool } from "../lib/runtime/JsResolverRunnerPool";
import { JsResolverRunner } from "../lib/runtime/JsResolverRunner";

const jsResolverSrcPath = process.argv[2] ?? "./src/resolvers/index.ts";

Expand Down
2 changes: 1 addition & 1 deletion src/scripts/fetch.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import "dotenv/config";
import colors from "colors/safe";
import { JsResolverUploader } from "../lib/uploader/JsResolverUploader";
import { JsResolverUploader } from "@gelatonetwork/js-resolver-sdk/uploader";

const OK = colors.green("✓");
const KO = colors.red("✗");
Expand Down
6 changes: 3 additions & 3 deletions src/scripts/test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import "dotenv/config";
import colors from "colors/safe";
import { JsResolverContextData } from "../lib";
import { JsResolverBuilder } from "../lib/builder/JsResolverBuilder";
import { JsResolverRunner } from "../lib/runtime/JsResolverRunner";
import { JsResolverContextData } from "@gelatonetwork/js-resolver-sdk";
import { JsResolverRunner } from "@gelatonetwork/js-resolver-sdk/runtime";
import { JsResolverBuilder } from "@gelatonetwork/js-resolver-sdk/builder";

const jsResolverSrcPath = process.argv[2] ?? "./src/resolvers/index.ts";

Expand Down
4 changes: 2 additions & 2 deletions src/scripts/upload.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import "dotenv/config";
import colors from "colors/safe";
import { JsResolverBuilder } from "../lib/builder/JsResolverBuilder";
import { JsResolverUploader } from "../lib/uploader/JsResolverUploader";
import { JsResolverBuilder } from "@gelatonetwork/js-resolver-sdk/builder";
import { JsResolverUploader } from "@gelatonetwork/js-resolver-sdk/uploader";

const OK = colors.green("✓");
const KO = colors.red("✗");
Expand Down
4 changes: 4 additions & 0 deletions tsconfig.build.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"extends": "./tsconfig.json",
"exclude": ["src/resolvers/**/*", "src/scripts/**/*"]
}
2 changes: 1 addition & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@
"declaration": true,
"useUnknownInCatchVariables": false
},
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/resolvers/fails/no-result.js", "src/resolvers/syntax-error.js", "src/resolvers/escape.js"],
"include": ["src/**/*.ts", "src/**/*.d.ts"],
"exclude": ["node_modules"]
}
23 changes: 4 additions & 19 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -507,14 +507,6 @@
dependencies:
"@types/node" "*"

"@types/tar@^6.1.3":
version "6.1.3"
resolved "https://registry.yarnpkg.com/@types/tar/-/tar-6.1.3.tgz#46a2ce7617950c4852dfd7e9cd41aa8161b9d750"
integrity sha512-YzDOr5kdAeqS8dcO6NTTHTMJ44MUCBDoLEIyPtwEn7PssKqUYL49R1iCVJPeiPzPlKi6DbH33eZkpeJ27e4vHg==
dependencies:
"@types/node" "*"
minipass "^3.3.5"

"@typescript-eslint/eslint-plugin@^5.40.0":
version "5.42.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz#696b9cc21dfd4749c1c8ad1307f76a36a00aa0e3"
Expand Down Expand Up @@ -677,10 +669,10 @@ asynckit@^0.4.0:
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==

axios@^1.1.2:
version "1.1.3"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35"
integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA==
[email protected]:
version "1.1.2"
resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.2.tgz#8b6f6c540abf44ab98d9904e8daf55351ca4a331"
integrity sha512-bznQyETwElsXl2RK7HLLwb5GPpOLlycxHCtrpDR/4RqqBzjARaOTo3jz4IgtntWUYee7Ne4S8UHd92VCuzPaWA==
dependencies:
follow-redirects "^1.15.0"
form-data "^4.0.0"
Expand Down Expand Up @@ -1563,13 +1555,6 @@ minipass@^3.0.0:
dependencies:
yallist "^4.0.0"

minipass@^3.3.5:
version "3.3.5"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.5.tgz#6da7e53a48db8a856eeb9153d85b230a2119e819"
integrity sha512-rQ/p+KfKBkeNwo04U15i+hOwoVBVmekmm/HcfTkTN2t9pbQKCMm4eN5gFeqgrrSp/kH/7BYYhTIHOxGqzbBPaA==
dependencies:
yallist "^4.0.0"

minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
Expand Down

0 comments on commit b1f84b6

Please sign in to comment.