From 8e2b5cf1cd41d858250b46511a207030a1b6dd4e Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 12:43:52 +0800 Subject: [PATCH 1/7] just commit something --- package-lock.json | 70 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 71 insertions(+) diff --git a/package-lock.json b/package-lock.json index 8f493f3..fd82148 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", "ava": "^3.15.0", + "aws-v-cli": "^0.2.3", "esbuild": "^0.12.0", "eslint": "^7.26.0", "ts-node": "^9.1.1", @@ -726,6 +727,30 @@ "node": ">=10.18.0 <11 || >=12.14.0 <12.17.0 || >=12.17.0 <13 || >=14.0.0 <15 || >=15" } }, + "node_modules/aws-v-cli": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/aws-v-cli/-/aws-v-cli-0.2.3.tgz", + "integrity": "sha512-gs4ngTIb0Hj+JtieaMN4euzEFSbd9iZ0MdSJy5UNg2FFBPqF2zmLqXfGqRUZh2gko3TbjFZOKjHo6Xe3clsXXw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "axios": "^0.21.1", + "progress": "^2.0.3" + }, + "bin": { + "awsv": "index.js", + "awsv-update": "src/updater.js" + } + }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1826,6 +1851,26 @@ "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, + "node_modules/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", @@ -5070,6 +5115,25 @@ "yargs": "^16.2.0" } }, + "aws-v-cli": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/aws-v-cli/-/aws-v-cli-0.2.3.tgz", + "integrity": "sha512-gs4ngTIb0Hj+JtieaMN4euzEFSbd9iZ0MdSJy5UNg2FFBPqF2zmLqXfGqRUZh2gko3TbjFZOKjHo6Xe3clsXXw==", + "dev": true, + "requires": { + "axios": "^0.21.1", + "progress": "^2.0.3" + } + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dev": true, + "requires": { + "follow-redirects": "^1.10.0" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5906,6 +5970,12 @@ "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", "dev": true }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true + }, "fs-extra": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", diff --git a/package.json b/package.json index 2909a9e..8bfb264 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "@typescript-eslint/eslint-plugin": "^4.23.0", "@typescript-eslint/parser": "^4.23.0", "ava": "^3.15.0", + "aws-v-cli": "^0.2.3", "esbuild": "^0.12.0", "eslint": "^7.26.0", "ts-node": "^9.1.1", -- Gitee From d7b592366260fac46f2219cb65e6b66e0daf36c1 Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:09:13 +0800 Subject: [PATCH 2/7] new feature added and test pass for setup the missing clean.js file --- package.json | 2 +- src/lib.ts | 28 ++++++++++++++-------------- tests/lib.test.ts | 21 ++++++++++++++++++--- 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 681ee48..8649bd9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "create-tsdev", - "version": "0.3.0", + "version": "0.4.0", "description": "Using npx to generate a TS dev env", "main": "index.js", "files": [ diff --git a/src/lib.ts b/src/lib.ts index 50c9348..598b65a 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -20,7 +20,7 @@ export { CustomError } /** * @param {array} arg -- process.argv - * @return {promise} resolve nothing + * @return {promise} resolve */ export async function processArg(argv: any): Promise { return Promise.resolve(argv) @@ -130,7 +130,7 @@ export function runInstall(args: any): Promise { * @param {object} args from cli * @return {promise} true on success */ -export function installAction(args: any): Promise { +export async function installAction(args: any): Promise { const _act = args.action if (_act && _act !== PLACEHOLDER) { const ymlFile = join(__dirname, 'actions', [_act, YML_EXT].join('.')) @@ -150,11 +150,10 @@ export function installAction(args: any): Promise { console.error(`Copy ${_act} ${YML_EXT} failed`, err) }) } - // noting to do - return Promise.resolve(args) + // noting to do, same question as below + return args } - /** * To create some start-up template or not * 1. If skipTpl === true then no @@ -162,23 +161,24 @@ export function installAction(args: any): Promise { * @param {object} args * @return {Promise} */ -export function setupTpl(args: any): Promise { +export async function setupTpl(args: any): Promise { + const projectDir = process.cwd() + const files = [ + [join(__dirname, '..', 'clean.js'), join(projectDir, 'clean.js')] + ] if (args.skipTpl !== true) { - const projectDir = process.cwd() const tplDir = join(__dirname, 'tpl') const srcDir = join(projectDir, 'src') if (!fsx.existsSync(srcDir)) { - const files = [ + files.push( [join(tplDir, 'main.tpl'), join(projectDir, 'src' ,'main.ts')], [join(tplDir, 'main.test.tpl'), join(projectDir, 'tests', 'main.test.ts')] - ] - - return Promise.all( - files.map(fileTodo => Reflect.apply(fsx.copy, null, fileTodo)) ) - .then(() => args) } } - return Promise.resolve(args) + return Promise.all( + files.map(fileTodo => Reflect.apply(fsx.copy, null, fileTodo)) + ) + .then(() => args) } diff --git a/tests/lib.test.ts b/tests/lib.test.ts index f7a5daf..3d399cb 100644 --- a/tests/lib.test.ts +++ b/tests/lib.test.ts @@ -1,12 +1,13 @@ // main test file import test from 'ava' -import { copySync, removeSync, readJsonSync } from 'fs-extra' +import { copySync, removeSync, readJsonSync, existsSync, ensureDir } from 'fs-extra' import { join } from 'path' import { processArg, changeAndGetPkg, CustomError, - copyProps + copyProps, + setupTpl } from '../src/lib' @@ -14,15 +15,19 @@ const fixtures: string = join(__dirname, 'fixtures') const pkgTpl: string = join(fixtures, 'package-tpl.json') const dest: string = join(fixtures, 'package.json' ) +const tmp = join(fixtures, 'tmp-1') + + test.before(() => { copySync(pkgTpl, dest) + ensureDir(tmp) }) test.after(() => { removeSync(dest) + removeSync(tmp) }) - test(`Expect to able to get the right properties`, async t => { const p = '/home/joel/Projects/create-t1sts' const result = await processArg({to: p, skipInstall: true, action: 'somethingelse', skipTpl: true}) @@ -47,3 +52,13 @@ test(`Expect to copy over the necessary properties to the package.json`, t => { t.true(result.scripts !== undefined) t.is(result.scripts.test, "ava") }) + + +test(`Expect to copy over the required tpl files`, async t => { + // move into the tmp directory as pwd + process.chdir(tmp) + + await setupTpl({skipTpl: true}) + + t.true(existsSync(join(tmp, 'clean.js'))) +}) -- Gitee From 7c67454da40752453cd4be86d3e33116cc55c217 Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:14:45 +0800 Subject: [PATCH 3/7] setup an empty folder for the next AWS template development --- src/lib.ts | 7 +++++++ src/tpl/aws/README.md | 3 +++ tests/lib.test.ts | 10 ++++++++++ 3 files changed, 20 insertions(+) create mode 100644 src/tpl/aws/README.md diff --git a/src/lib.ts b/src/lib.ts index 598b65a..d39388b 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -182,3 +182,10 @@ export async function setupTpl(args: any): Promise { ) .then(() => args) } + +/* +// just for testing purpose +export async function dummyFn(): Promise { + return 'something' +} +*/ diff --git a/src/tpl/aws/README.md b/src/tpl/aws/README.md new file mode 100644 index 0000000..5de5019 --- /dev/null +++ b/src/tpl/aws/README.md @@ -0,0 +1,3 @@ +# AWS template + +this folder store all the AWS Lambda development files templates diff --git a/tests/lib.test.ts b/tests/lib.test.ts index 3d399cb..07ff696 100644 --- a/tests/lib.test.ts +++ b/tests/lib.test.ts @@ -28,6 +28,16 @@ test.after(() => { removeSync(tmp) }) +/* +// result: IT DOES +test.only(`To see if the async method can return a promise`, t => { + return dummyFn() + .then(r => { + t.truthy(r) + }) +}) +*/ + test(`Expect to able to get the right properties`, async t => { const p = '/home/joel/Projects/create-t1sts' const result = await processArg({to: p, skipInstall: true, action: 'somethingelse', skipTpl: true}) -- Gitee From db0ae2948e428f21d88d1ff674580a01f90fe4af Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:24:14 +0800 Subject: [PATCH 4/7] experiment with esbuild to run ava ts test --- package-lock.json | 55 +++++++++++++++++++++++++++++++++++++++++++++-- package.json | 4 ++++ 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index f4e9ed4..5440929 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { "name": "create-tsdev", - "version": "0.2.0", + "version": "0.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.2.0", + "version": "0.4.0", "license": "MIT", "dependencies": { "fs-extra": "^10.0.0", @@ -23,6 +23,7 @@ "ava": "^3.15.0", "aws-v-cli": "^0.2.3", "esbuild": "^0.12.0", + "esbuild-register": "^2.5.0", "eslint": "^7.26.0", "ts-node": "^9.1.1", "typedoc": "^0.20.36", @@ -1485,6 +1486,26 @@ "esbuild": "bin/esbuild" } }, + "node_modules/esbuild-register": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-2.5.0.tgz", + "integrity": "sha512-5a8W3rH7IQbIPR9pPXJFkC3+CRMtm/OSpBz3hkWUUU63oPZ3NU6dVDGfaIjKnRizCTIRoGjNE6KEDt5p1sLwEw==", + "dev": true, + "dependencies": { + "esbuild": "^0.11.5", + "jsonc-parser": "^3.0.0" + } + }, + "node_modules/esbuild-register/node_modules/esbuild": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -2507,6 +2528,12 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -5672,6 +5699,24 @@ "integrity": "sha512-WfQ00MKm/Y4ysz1u9PCUAsV66k5lbrcEvS6aG9jhBIavpB94FBdaWeBkaZXxCZB4w+oqh+j4ozJFWnnFprOXbg==", "dev": true }, + "esbuild-register": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-2.5.0.tgz", + "integrity": "sha512-5a8W3rH7IQbIPR9pPXJFkC3+CRMtm/OSpBz3hkWUUU63oPZ3NU6dVDGfaIjKnRizCTIRoGjNE6KEDt5p1sLwEw==", + "dev": true, + "requires": { + "esbuild": "^0.11.5", + "jsonc-parser": "^3.0.0" + }, + "dependencies": { + "esbuild": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", + "dev": true + } + } + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -6422,6 +6467,12 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", + "dev": true + }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", diff --git a/package.json b/package.json index 8649bd9..71ff796 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,7 @@ "ava": "^3.15.0", "aws-v-cli": "^0.2.3", "esbuild": "^0.12.0", + "esbuild-register": "^2.5.0", "eslint": "^7.26.0", "ts-node": "^9.1.1", "typedoc": "^0.20.36", @@ -57,6 +58,9 @@ "ts" ], "require": [ + "esbuild-register" + ], + "old-require-should-not-get-called": [ "ts-node/register" ] }, -- Gitee From b1b475a3c8b3eaef6f98febb7e9311d17503e335 Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:25:41 +0800 Subject: [PATCH 5/7] test and working correctly with esbuild-register --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 25abdf4..bad5028 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ The idea is based on this [blog post](https://www.metachris.com/2021/04/starting - ~~Add options to add github / gitlab CI actions~~ - ~~Option to setup postCSS and browser env~~ (this will be in another package) - Add serverless CI option -- for ava.js, work out a way to use `esbuild` instead of `node-ts/register` (just like using `esm`) +- ~~for ava.js, work out a way to use `esbuild` instead of `node-ts/register` (just like using `esm`)~~ now using [esbuild-register](https://github.com/egoist/esbuild-register) --- diff --git a/package.json b/package.json index 71ff796..90b16d1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "create-tsdev", - "version": "0.4.0", + "version": "0.5.0", "description": "Using npx to generate a TS dev env", "main": "index.js", "files": [ -- Gitee From 3aaffbaa84cefd8596eac51074d76c37c8a9bda5 Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:26:07 +0800 Subject: [PATCH 6/7] remove the unused ts-node/register --- package.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/package.json b/package.json index 90b16d1..eb60e47 100644 --- a/package.json +++ b/package.json @@ -59,9 +59,6 @@ ], "require": [ "esbuild-register" - ], - "old-require-should-not-get-called": [ - "ts-node/register" ] }, "dependencies": { -- Gitee From 76c04bc78758c2fa6115b3ca71337de5a491eaba Mon Sep 17 00:00:00 2001 From: to1source-me Date: Wed, 26 May 2021 13:47:38 +0800 Subject: [PATCH 7/7] update descriptions --- README.md | 4 ++-- tests/lib.test.ts | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bad5028..bacaeb6 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ The idea is based on this [blog post](https://www.metachris.com/2021/04/starting - ~~Add options to add github / gitlab CI actions~~ - ~~Option to setup postCSS and browser env~~ (this will be in another package) -- Add serverless CI option -- ~~for ava.js, work out a way to use `esbuild` instead of `node-ts/register` (just like using `esm`)~~ now using [esbuild-register](https://github.com/egoist/esbuild-register) +- ~~Add serverless CI option (added in 0.3.0)~~ +- ~~for ava.js, work out a way to use `esbuild` instead of `node-ts/register` (just like using `esm`)~~ (v0.5.0) using [esbuild-register](https://github.com/egoist/esbuild-register) --- diff --git a/tests/lib.test.ts b/tests/lib.test.ts index 07ff696..80aa480 100644 --- a/tests/lib.test.ts +++ b/tests/lib.test.ts @@ -1,4 +1,4 @@ -// main test file +// lib test file import test from 'ava' import { copySync, removeSync, readJsonSync, existsSync, ensureDir } from 'fs-extra' import { join } from 'path' @@ -10,7 +10,6 @@ import { setupTpl } from '../src/lib' - const fixtures: string = join(__dirname, 'fixtures') const pkgTpl: string = join(fixtures, 'package-tpl.json') const dest: string = join(fixtures, 'package.json' ) @@ -29,7 +28,7 @@ test.after(() => { }) /* -// result: IT DOES +// result: IT DOES test.only(`To see if the async method can return a promise`, t => { return dummyFn() .then(r => { -- Gitee