From 6ceaf989deb846246074d5869cec462b7663af1f Mon Sep 17 00:00:00 2001 From: maxprilutskiy Date: Sun, 6 Oct 2024 17:20:45 -0700 Subject: [PATCH] moved to ts --- action/Dockerfile | 2 +- action/package.json | 2 +- action/pnpm-lock.yaml | 170 ++++++++++++++---- action/src/{do-stuff.mjs => do-stuff.ts} | 0 action/src/index.mjs | 26 --- action/src/index.ts | 25 +++ action/src/instances/{_env.mjs => _env.ts} | 0 action/src/instances/config.mjs | 7 - action/src/instances/config.ts | 10 ++ action/src/instances/git.mjs | 13 -- .../src/instances/{octokit.mjs => octokit.ts} | 2 +- action/tsconfig.json | 24 +++ 12 files changed, 198 insertions(+), 83 deletions(-) rename action/src/{do-stuff.mjs => do-stuff.ts} (100%) delete mode 100644 action/src/index.mjs create mode 100644 action/src/index.ts rename action/src/instances/{_env.mjs => _env.ts} (100%) delete mode 100644 action/src/instances/config.mjs create mode 100644 action/src/instances/config.ts delete mode 100644 action/src/instances/git.mjs rename action/src/instances/{octokit.mjs => octokit.ts} (81%) create mode 100644 action/tsconfig.json diff --git a/action/Dockerfile b/action/Dockerfile index 8123580..bb676af 100644 --- a/action/Dockerfile +++ b/action/Dockerfile @@ -16,4 +16,4 @@ COPY src /src RUN npm install -g pnpm && pnpm install # Run the Node.js application -ENTRYPOINT ["node", "/src/index.mjs"] +ENTRYPOINT ["ts-node", "/src/index.ts"] diff --git a/action/package.json b/action/package.json index 5a937ee..adb017a 100644 --- a/action/package.json +++ b/action/package.json @@ -1,7 +1,7 @@ { "dependencies": { "octokit": "^4.0.2", - "simple-git": "^3.26.0", + "ts-node": "^10.9.2", "zod": "^3.23.8" } } \ No newline at end of file diff --git a/action/pnpm-lock.yaml b/action/pnpm-lock.yaml index 146d76d..0639758 100644 --- a/action/pnpm-lock.yaml +++ b/action/pnpm-lock.yaml @@ -11,20 +11,28 @@ importers: octokit: specifier: ^4.0.2 version: 4.0.2 - simple-git: - specifier: ^3.26.0 - version: 3.26.0 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.7.4)(typescript@5.6.2) zod: specifier: ^3.23.8 version: 3.23.8 packages: - '@kwsites/file-exists@1.1.1': - resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} - '@kwsites/promise-deferred@1.1.1': - resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} '@octokit/app@15.1.0': resolution: {integrity: sha512-TkBr7QgOmE6ORxvIAhDbZsqPkF7RSqTY4pLTtUQCvr6dTXqvi2fFo46q3h1lxlk/sGMQjqyZ0kEahkD/NyzOHg==} @@ -133,36 +141,80 @@ packages: resolution: {integrity: sha512-TUkJLtI163Bz5+JK0O+zDkQpn4gKwN+BovclUvCj6pI/6RXrFqQvUMRS2M+Rt8Rv0qR3wjoMoOPmpJKeOh0nBg==} engines: {node: '>= 18'} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@types/aws-lambda@8.10.145': resolution: {integrity: sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw==} + '@types/node@22.7.4': + resolution: {integrity: sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + before-after-hook@3.0.2: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} octokit@4.0.2: resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==} engines: {node: '>= 18'} - simple-git@3.26.0: - resolution: {integrity: sha512-5tbkCSzuskR6uA7uA23yjasmA0RzugVo8QM2bpsnxkrgP13eisFT7TMS4a+xKEJvbmr4qf+l0WT3eKa9IxxUyw==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} universal-github-app-jwt@2.2.0: resolution: {integrity: sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ==} @@ -170,18 +222,30 @@ packages: universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} snapshots: - '@kwsites/file-exists@1.1.1': + '@cspotcode/source-map-support@0.8.1': dependencies: - debug: 4.3.6 - transitivePeerDependencies: - - supports-color + '@jridgewell/trace-mapping': 0.3.9 + + '@jridgewell/resolve-uri@3.1.2': {} - '@kwsites/promise-deferred@1.1.1': {} + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@octokit/app@15.1.0': dependencies: @@ -329,19 +393,39 @@ snapshots: '@octokit/request-error': 6.1.4 '@octokit/webhooks-methods': 5.1.0 + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@types/aws-lambda@8.10.145': {} + '@types/node@22.7.4': + dependencies: + undici-types: 6.19.8 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + arg@4.1.3: {} + before-after-hook@3.0.2: {} bottleneck@2.19.5: {} - debug@4.3.6: - dependencies: - ms: 2.1.2 + create-require@1.1.1: {} + + diff@4.0.2: {} lru-cache@10.4.3: {} - ms@2.1.2: {} + make-error@1.3.6: {} octokit@4.0.2: dependencies: @@ -356,16 +440,34 @@ snapshots: '@octokit/request-error': 6.1.4 '@octokit/types': 13.5.0 - simple-git@3.26.0: + ts-node@10.9.2(@types/node@22.7.4)(typescript@5.6.2): dependencies: - '@kwsites/file-exists': 1.1.1 - '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.6 - transitivePeerDependencies: - - supports-color + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.7.4 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + typescript@5.6.2: {} + + undici-types@6.19.8: {} universal-github-app-jwt@2.2.0: {} universal-user-agent@7.0.2: {} + v8-compile-cache-lib@3.0.1: {} + + yn@3.1.1: {} + zod@3.23.8: {} diff --git a/action/src/do-stuff.mjs b/action/src/do-stuff.ts similarity index 100% rename from action/src/do-stuff.mjs rename to action/src/do-stuff.ts diff --git a/action/src/index.mjs b/action/src/index.mjs deleted file mode 100644 index 406e215..0000000 --- a/action/src/index.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import { execSync } from 'child_process'; - -import loadConfig from './instances/config.mjs'; -// Uses GitHub's official Octokit -import loadOctokit from './instances/octokit.mjs'; -import doStuff from './do-stuff.mjs'; -import loadEnv from './instances/_env.mjs'; - -const env = await loadEnv(); -const config = await loadConfig(); -const octokit = await loadOctokit(); - -console.log(env); - -// Run - -// Do stuff -await doStuff(); -// Commit changes -execSync('git config --global user.name "Replexica"'); -execSync('git config --global user.email "support@replexica.com"'); -execSync(`git config --global safe.directory ${process.cwd()}`); - -execSync('git add .'); -execSync(`git commit -m "${env.REPLEXICA_COMMIT_MESSAGE}"`); -execSync('git push'); diff --git a/action/src/index.ts b/action/src/index.ts new file mode 100644 index 0000000..d605d74 --- /dev/null +++ b/action/src/index.ts @@ -0,0 +1,25 @@ +import { execSync } from 'child_process'; + +import loadConfig from './instances/config'; +// Uses GitHub's official Octokit +import loadOctokit from './instances/octokit'; +import doStuff from './do-stuff'; + +// Run + +(async function main() { + const config = await loadConfig(); + const octokit = await loadOctokit(); + + // Do stuff + await doStuff(); + // Commit changes + execSync('git config --global user.name "Replexica"'); + execSync('git config --global user.email "support@replexica.com"'); + execSync(`git config --global safe.directory ${process.cwd()}`); + + execSync('git add .'); + execSync(`git commit -m "${config.commitMessageText}"`); + execSync('git push'); + +})(); diff --git a/action/src/instances/_env.mjs b/action/src/instances/_env.ts similarity index 100% rename from action/src/instances/_env.mjs rename to action/src/instances/_env.ts diff --git a/action/src/instances/config.mjs b/action/src/instances/config.mjs deleted file mode 100644 index b1a4b51..0000000 --- a/action/src/instances/config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import env from './_env.mjs'; - -export default async function loadConfig() { - return { - pullRequest: true, - }; -} \ No newline at end of file diff --git a/action/src/instances/config.ts b/action/src/instances/config.ts new file mode 100644 index 0000000..8a15c21 --- /dev/null +++ b/action/src/instances/config.ts @@ -0,0 +1,10 @@ +import loadEnv from './_env.js'; + +export default async function loadConfig() { + const env = await loadEnv(); + + return { + isPullRequestMode: env.REPLEXICA_PULL_REQUEST, + commitMessageText: env.REPLEXICA_COMMIT_MESSAGE, + }; +} \ No newline at end of file diff --git a/action/src/instances/git.mjs b/action/src/instances/git.mjs deleted file mode 100644 index 073b1e5..0000000 --- a/action/src/instances/git.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import simpleGit from "simple-git"; - -export default async function loadGit() { - return simpleGit({ - config: { - user: { - name: 'Replexica', - email: 'support@replexica.com' - }, - safeDirectory: process.cwd(), - } - }); -} \ No newline at end of file diff --git a/action/src/instances/octokit.mjs b/action/src/instances/octokit.ts similarity index 81% rename from action/src/instances/octokit.mjs rename to action/src/instances/octokit.ts index a53494a..c73e6cb 100644 --- a/action/src/instances/octokit.mjs +++ b/action/src/instances/octokit.ts @@ -1,4 +1,4 @@ -import env from './_env.mjs'; +import env from './_env.js'; import { Octokit } from 'octokit'; export default async function loadOctokit() { diff --git a/action/tsconfig.json b/action/tsconfig.json new file mode 100644 index 0000000..5d8b948 --- /dev/null +++ b/action/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "strict": true, + "pretty": true, + "esModuleInterop": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "moduleResolution": "NodeNext", + "module": "NodeNext", + "target": "ESNext", + "rootDir": "src", + "outDir": "build", + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx" + ], + "exclude": [ + "src/**/*.spec.ts", + "src/**/*.spec.tsx" + ] +}