diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100644 new mode 100755 index feb2df6..daf6ef2 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -2,4 +2,4 @@ . "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/common.sh" -npx commitlint --edit $1 +pnpm commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 index 0aefdea..30263ed --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -2,4 +2,4 @@ . "$(dirname "$0")/_/husky.sh" . "$(dirname "$0")/common.sh" -npx lint-staged +pnpm lint-staged diff --git a/jest-base.config.js b/jest-base.config.js new file mode 100644 index 0000000..55f0fac --- /dev/null +++ b/jest-base.config.js @@ -0,0 +1,20 @@ +module.exports = { + moduleFileExtensions: ['js', 'json', 'ts'], + rootDir: 'test', + testRegex: '\\.(test|spec)\\.ts$', + transform: { + '^.+\\.(t|j)s$': 'ts-jest', + }, + collectCoverageFrom: ['**/*.(t|j)s'], + moduleNameMapper: { + '^src/(.*)': '/../src/$1', + '^test/(.*)': '/$1', + '^src': '/../src', + '^package\\.json$': '/../package.json', + }, + coverageDirectory: '../coverage', + testEnvironment: 'node', + coverageReporters: [ + 'json-summary', + ], +}; diff --git a/lint-staged.config.js b/lint-staged.config.js new file mode 100644 index 0000000..ae315ba --- /dev/null +++ b/lint-staged.config.js @@ -0,0 +1,6 @@ +module.exports = { + 'packages/*/{src,apps,libs,test}/**/*.{js,ts}': [ + 'pnpm run -r lint:staged-noargs', + 'pnpm run -r format:staged-noargs', + ], +}; diff --git a/packages/datever-cli/.eslintrc.js b/packages/datever-cli/.eslintrc.js new file mode 100644 index 0000000..0284a0d --- /dev/null +++ b/packages/datever-cli/.eslintrc.js @@ -0,0 +1,7 @@ +module.exports = { + parserOptions: { + project: './tsconfig.json', + tsconfigRootDir: __dirname, + sourceType: 'module', + }, +}; diff --git a/packages/datever-cli/.prettierrc b/packages/datever-cli/.prettierrc new file mode 100644 index 0000000..a9a4c60 --- /dev/null +++ b/packages/datever-cli/.prettierrc @@ -0,0 +1,6 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "arrowParens": "avoid", + "printWidth": 120 +} diff --git a/packages/datever-cli/commitlint.config.js b/packages/datever-cli/commitlint.config.js new file mode 100644 index 0000000..fb2e46e --- /dev/null +++ b/packages/datever-cli/commitlint.config.js @@ -0,0 +1 @@ +module.exports = require('../../commitlint.config'); diff --git a/packages/datever-cli/jest.config.js b/packages/datever-cli/jest.config.js new file mode 100644 index 0000000..bfd1ffa --- /dev/null +++ b/packages/datever-cli/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../jest-base.config'); diff --git a/packages/datever-cli/package.json b/packages/datever-cli/package.json index fb01420..a59f096 100644 --- a/packages/datever-cli/package.json +++ b/packages/datever-cli/package.json @@ -14,17 +14,62 @@ "url": "https://github.com/flisboac/datever/issues" }, "bin": { - "datever": "dist/ts/src/cli/main.js" + "datever": "dist/main/src/cli/main.js" }, "files": [ "dist", "README.md" ], + "scripts": { + "ci:build:version": "pnpm run build && pnpm run lint && pnpm run format && pnpm run test", + "ci:build:publish": "pnpm run build && pnpm run test:cov && pnpm run ci:test:cov-badges && pnpm run ci:git:add-badges && pnpm run docs:readme && git add README.md && pnpm run ci:git:commit-docs", + "ci:test:cov-badges": "pnpm run test:cov-badges || echo \"*** WARNING: Failed to generate test badges.\"", + "ci:git:add-badges": "git add img/badges || echo \"*** WARNING: Ignoring badge file \\\"${badge}\\\".\"", + "ci:git:commit-docs": "pnpm run git:check-clean || git commit --message \"chore(release): update documentation and badges\"", + "build": "pnpm run build:main", + "build:main": "tsc -p tsconfig.main.json && tsconfig-replace-paths -p tsconfig.main.json -s . -o dist/ts", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\"", + "lint:fix": "pnpm run lint -- --fix", + "lint:staged-noargs": "eslint --max-warnings 0", + "format": "pnpm run format:cli -- --check", + "format:cli": "prettier \"src/**/*.ts\" \"test/**/*.ts\"", + "format:fix": "pnpm run format:cli -- --write", + "format:staged-noargs": "prettier --check", + "test": "jest --passWithNoTests", + "test:cov": "jest --coverage --passWithNoTests --coverageReporters=\"json-summary\"", + "test:cov-badges": "jest-coverage-badges --input coverage/coverage-summary.json --output ./img/badges", + "test:dev": "dotenv -- jest", + "test:watch": "pnpm run test:dev -- --watch", + "test:debug": "dotenv -- node --inspect-brk=9230 -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "git:check-clean": "repository-check-dirty", + "git:why": "lint-staged", + "docs:readme": "doctoc --update-only --bitbucket README.md" + }, "dependencies": { "datever": "workspace:*", "tslib": "^2.3.1" }, "devDependencies": { - "@types/node": "^16.11.4" + "@types/jest": "^27.0.2", + "@types/node": "^16.11.4", + "@typescript-eslint/eslint-plugin": "^5.0.0", + "@typescript-eslint/parser": "^5.0.0", + "doctoc": "^2.1.0", + "dotenv-cli": "^4.0.0", + "eslint": "^8.0.1", + "eslint-config-prettier": "^8.3.0", + "eslint-import-resolver-typescript": "^2.5.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-prettier": "^4.0.0", + "jest": "^27.3.1", + "jest-coverage-badges": "^1.1.2", + "lint-staged": "^11.2.3", + "prettier": "^2.4.1", + "repository-check-dirty": "^3.1.1", + "ts-jest": "^27.0.7", + "ts-node": "^10.3.0", + "ts-node-dev": "^1.1.8", + "tsconfig-replace-paths": "0.0.5", + "typescript": "^4.4.4" } } diff --git a/packages/datever-cli/test/unit/lib/index.test.ts b/packages/datever-cli/test/unit/lib/index.test.ts new file mode 100644 index 0000000..3345e6d --- /dev/null +++ b/packages/datever-cli/test/unit/lib/index.test.ts @@ -0,0 +1,3 @@ +describe('tests', () => { + it('should be implemented ASAP!', () => expect(true).toBe(true)); +}); diff --git a/packages/datever-cli/tsconfig.json b/packages/datever-cli/tsconfig.json index ee0f14e..46ac72d 100644 --- a/packages/datever-cli/tsconfig.json +++ b/packages/datever-cli/tsconfig.json @@ -4,7 +4,7 @@ "rootDir": "./", "outDir": "./dist/ts", "baseUrl": ".", - "types": ["node"] + "types": ["node", "jest"] }, "exclude": [ "node_modules", @@ -12,6 +12,7 @@ "dist" ], "include": [ - "src" + "src", + "test" ] } diff --git a/packages/datever-cli/tsconfig.main.json b/packages/datever-cli/tsconfig.main.json new file mode 100644 index 0000000..3b1fa94 --- /dev/null +++ b/packages/datever-cli/tsconfig.main.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "rootDir": "./", + "outDir": "./dist/main", + "baseUrl": ".", + "types": ["node"] + }, + "include": [ + "src" + ] +} diff --git a/packages/datever/jest.config.js b/packages/datever/jest.config.js index 8f7003d..bfd1ffa 100644 --- a/packages/datever/jest.config.js +++ b/packages/datever/jest.config.js @@ -1,17 +1 @@ -module.exports = { - moduleFileExtensions: ['js', 'json', 'ts'], - rootDir: 'test', - testRegex: '\\.(test|spec)\\.ts$', - transform: { - '^.+\\.(t|j)s$': 'ts-jest', - }, - collectCoverageFrom: ['**/*.(t|j)s'], - moduleNameMapper: { - '^src/(.*)': '/../src/$1', - '^test/(.*)': '/$1', - '^src': '/../src', - '^package\\.json$': '/../package.json', - }, - coverageDirectory: '../coverage', - testEnvironment: 'node', -}; +module.exports = require('../../jest-base.config'); diff --git a/packages/datever/lint-staged.config.js b/packages/datever/lint-staged.config.js deleted file mode 100644 index dfb8818..0000000 --- a/packages/datever/lint-staged.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - '{src,apps,libs,test}/**/*.{js,ts}': [ - 'npm run lint:staged-noargs', - 'npm run format:staged-noargs', - ], -}; diff --git a/packages/datever/package.json b/packages/datever/package.json index fe93a2d..d14eecd 100644 --- a/packages/datever/package.json +++ b/packages/datever/package.json @@ -68,9 +68,9 @@ "build:parser": "shx mkdir -p dist/main/src/lib/parser && shx mkdir -p dist/module/src/lib/parser && peggy --format commonjs -o dist/main/src/lib/parser/rawParser.js src/lib/parser/rawParser.pegjs && peggy --format es -o dist/main/src/lib/parser/rawParser.js src/lib/parser/rawParser.pegjs", "build:parser:in-src": "peggy --format es -o src/lib/parser/rawParser.js src/lib/parser/rawParser.pegjs", "ci:build:version": "pnpm run build && pnpm run lint && pnpm run format && pnpm run test", - "ci:build:publish": "pnpm run build && pnpm run test:cov && pnpm run ci:test:cov-badges && pnpm run ci:git:add-badges && pnpm run docs:readme && git add README.md && ci:git:commit-docs", - "ci:test:cov-badges": "pnpm run test:cov-badges && || echo \"*** WARNING: Failed to generate test badges.\"", - "ci:git:add-badges": "git add img/badges || echo \"*** WARNING: Ignoring badge file \\\"${badge}\\\".", + "ci:build:publish": "pnpm run build && pnpm run test:cov && pnpm run ci:test:cov-badges && pnpm run ci:git:add-badges && pnpm run docs:readme && git add README.md && pnpm run ci:git:commit-docs", + "ci:test:cov-badges": "pnpm run test:cov-badges || echo \"*** WARNING: Failed to generate test badges.\"", + "ci:git:add-badges": "git add img/badges || echo \"*** WARNING: Ignoring badge file \\\"${badge}\\\".\"", "ci:git:commit-docs": "pnpm run git:check-clean || git commit --message \"chore(release): update documentation and badges\"", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\"", "lint:fix": "pnpm run lint -- --fix", @@ -78,9 +78,9 @@ "format": "pnpm run format:cli -- --check", "format:cli": "prettier \"src/**/*.ts\" \"test/**/*.ts\"", "format:fix": "pnpm run format:cli -- --write", - "format:staged-noargs": "prettier", + "format:staged-noargs": "prettier --check", "test": "jest --passWithNoTests", - "test:cov": "jest --coverage --passWithNoTests", + "test:cov": "jest --coverage --passWithNoTests --coverageReporters=\"json-summary\"", "test:cov-badges": "jest-coverage-badges --input coverage/coverage-summary.json --output ./img/badges", "test:dev": "dotenv -- jest", "test:watch": "pnpm run test:dev -- --watch", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f2e8452..56ccf99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,14 +83,54 @@ importers: packages/datever-cli: specifiers: + '@types/jest': ^27.0.2 '@types/node': ^16.11.4 + '@typescript-eslint/eslint-plugin': ^5.0.0 + '@typescript-eslint/parser': ^5.0.0 datever: workspace:* + doctoc: ^2.1.0 + dotenv-cli: ^4.0.0 + eslint: ^8.0.1 + eslint-config-prettier: ^8.3.0 + eslint-import-resolver-typescript: ^2.5.0 + eslint-plugin-import: ^2.25.2 + eslint-plugin-prettier: ^4.0.0 + jest: ^27.3.1 + jest-coverage-badges: ^1.1.2 + lint-staged: ^11.2.3 + prettier: ^2.4.1 + repository-check-dirty: ^3.1.1 + ts-jest: ^27.0.7 + ts-node: ^10.3.0 + ts-node-dev: ^1.1.8 + tsconfig-replace-paths: 0.0.5 tslib: ^2.3.1 + typescript: ^4.4.4 dependencies: datever: link:../datever tslib: 2.3.1 devDependencies: + '@types/jest': 27.0.2 '@types/node': 16.11.4 + '@typescript-eslint/eslint-plugin': 5.1.0_273a00ec265649c49755eee7222c1c12 + '@typescript-eslint/parser': 5.1.0_eslint@8.1.0+typescript@4.4.4 + doctoc: 2.1.0 + dotenv-cli: 4.0.0 + eslint: 8.1.0 + eslint-config-prettier: 8.3.0_eslint@8.1.0 + eslint-import-resolver-typescript: 2.5.0_f3fc3a8f1727ab01eb417b5ed5016c22 + eslint-plugin-import: 2.25.2_eslint@8.1.0 + eslint-plugin-prettier: 4.0.0_850528f9ec3c0797b9b19a94a36b5ba3 + jest: 27.3.1_ts-node@10.4.0 + jest-coverage-badges: 1.1.2 + lint-staged: 11.2.4 + prettier: 2.4.1 + repository-check-dirty: 3.1.1 + ts-jest: 27.0.7_2c4ca6574207836d1023f54689cc81ac + ts-node: 10.4.0_bada05a3e1cd24c0fc5f82f6eaa2ca15 + ts-node-dev: 1.1.8_typescript@4.4.4 + tsconfig-replace-paths: 0.0.5 + typescript: 4.4.4 packages: diff --git a/tsconfig.base.json b/tsconfig.base.json index e2b26d4..40bd7d0 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,9 +12,6 @@ "emitDecoratorMetadata": true, "experimentalDecorators": true, "esModuleInterop": true, - "rootDir": "./", - "outDir": "./dist/ts", - "baseUrl": ".", "paths": { "src/*": [ "src/*"