From dc208625842f9cc7cb4f015fd8e53bfe6a9e72c9 Mon Sep 17 00:00:00 2001 From: Maksim Sharipov Date: Fri, 15 Nov 2024 13:53:32 +0100 Subject: [PATCH] feat: add github action --- .github/workflows/ci.yaml | 41 ++++++ package.json | 1 + packages/core/config/jest.config.json | 19 --- packages/core/jest.config.ts | 23 ++++ packages/core/package.json | 2 +- packages/core/tsconfig.json | 2 +- packages/preact/tsconfig.json | 2 +- packages/react-native/tsconfig.json | 2 +- packages/react/config/jest.config.json | 21 --- packages/react/jest.config.ts | 33 +++++ .../__tests__/test_setup.ts => jest.setup.ts} | 0 packages/react/package.json | 2 +- packages/react/tsconfig.json | 2 +- ...onfig.settings.json => tsconfig.base.json} | 5 +- packages/tsconfig.json | 4 - yarn.lock | 129 +++++++++++++++++- 16 files changed, 231 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/ci.yaml delete mode 100644 packages/core/config/jest.config.json create mode 100644 packages/core/jest.config.ts delete mode 100644 packages/react/config/jest.config.json create mode 100644 packages/react/jest.config.ts rename packages/react/{src/__tests__/test_setup.ts => jest.setup.ts} (100%) rename packages/{tsconfig.settings.json => tsconfig.base.json} (78%) delete mode 100644 packages/tsconfig.json diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..5635039 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,41 @@ +name: CI Workflow + +on: + push: + branches: + - '*' # Runs on all branches + pull_request: + branches: + - '*' # Runs on pull requests to any branch + +jobs: + build-and-test: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout the code + - name: Checkout code + uses: actions/checkout@v3 + + # Step 2: Set up Node.js + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'yarn' + + # Step 3: Install Yarn Berry + - name: Install Yarn Berry + run: yarn set version berry + + # Step 4: Install dependencies + - name: Install dependencies + run: yarn install + + # Step 5: Run the build script + - name: Build the project + run: yarn run build + + # Step 6: Run tests + - name: Run tests + run: yarn run test diff --git a/package.json b/package.json index 1249379..f2e69c4 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "jest": "^29.7.0", "node-notifier": "^10.0.1", "ts-jest": "^29.2.5", + "ts-node": "^10.9.2", "tsup": "^8.3.5", "typescript": "^5.6.3" }, diff --git a/packages/core/config/jest.config.json b/packages/core/config/jest.config.json deleted file mode 100644 index 0064fe3..0000000 --- a/packages/core/config/jest.config.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "moduleFileExtensions": ["tsx", "ts", "js"], - "collectCoverage": false, - "coveragePathIgnorePatterns": ["/node_modules/"], - "coverageThreshold": { - "global": { - "branches": 100, - "functions": 100, - "lines": 100, - "statements": 100 - } - }, - "notify": true, - "transform": { - "^.+\\.tsx?$": "ts-jest" - }, - "rootDir": "..", - "testMatch": ["/src/**/__tests__/**/*.test.(ts|tsx|js)"] -} \ No newline at end of file diff --git a/packages/core/jest.config.ts b/packages/core/jest.config.ts new file mode 100644 index 0000000..91fe281 --- /dev/null +++ b/packages/core/jest.config.ts @@ -0,0 +1,23 @@ +import type { Config } from 'jest'; + +const config: Config = { + moduleFileExtensions: ['tsx', 'ts', 'js'], + collectCoverage: false, + coveragePathIgnorePatterns: ['/node_modules/'], + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, + notify: true, + transform: { + '^.+\\.tsx?$': 'ts-jest', + }, + rootDir: '..', + testMatch: ['/core/src/**/__tests__/**/*.test.(ts|tsx|js)'], +}; + +export default config; diff --git a/packages/core/package.json b/packages/core/package.json index 4662d0f..77a8c51 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -16,7 +16,7 @@ "scripts": { "build": "yarn run --top-level tsup src/index.ts --format cjs,esm --dts --clean --sourcemap --out-dir lib --minify", "prepare": "npm run test && npm run build", - "test": "jest --detectOpenHandles --config config/jest.config.json --no-cache" + "test": "jest --detectOpenHandles --no-cache" }, "directories": { "lib": "lib" diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 312130f..4ebc4ec 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.settings.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "lib" diff --git a/packages/preact/tsconfig.json b/packages/preact/tsconfig.json index 50db089..8d45a0e 100644 --- a/packages/preact/tsconfig.json +++ b/packages/preact/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.settings.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "jsxFactory": "h", "rootDir": "src", diff --git a/packages/react-native/tsconfig.json b/packages/react-native/tsconfig.json index 312130f..4ebc4ec 100644 --- a/packages/react-native/tsconfig.json +++ b/packages/react-native/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.settings.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "lib" diff --git a/packages/react/config/jest.config.json b/packages/react/config/jest.config.json deleted file mode 100644 index c0bf104..0000000 --- a/packages/react/config/jest.config.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "moduleFileExtensions": ["tsx", "ts", "js"], - "collectCoverage": false, - "coveragePathIgnorePatterns": ["/node_modules/", "./src/context.ts"], - "setupFilesAfterEnv": ["./src/__tests__/test_setup.ts"], - "coverageThreshold": { - "global": { - "branches": 100, - "functions": 100, - "lines": 100, - "statements": 100 - } - }, - "testEnvironment": "jsdom", - "notify": true, - "transform": { - "^.+\\.tsx?$": "ts-jest" - }, - "rootDir": "..", - "testMatch": ["/src/**/__tests__/**/*.test.(ts|tsx|js)"] -} diff --git a/packages/react/jest.config.ts b/packages/react/jest.config.ts new file mode 100644 index 0000000..eb705f6 --- /dev/null +++ b/packages/react/jest.config.ts @@ -0,0 +1,33 @@ +import { JestConfigWithTsJest } from 'ts-jest'; + +const config: JestConfigWithTsJest = { + moduleFileExtensions: ['tsx', 'ts', 'js'], + collectCoverage: false, + coveragePathIgnorePatterns: [ + '/node_modules/', + '/react//src/context.ts', + ], + setupFilesAfterEnv: ['/react/jest.setup.ts'], + coverageThreshold: { + global: { + branches: 100, + functions: 100, + lines: 100, + statements: 100, + }, + }, + testEnvironment: 'jsdom', + notify: true, + transform: { + '^.+\\.tsx?$': [ + 'ts-jest', + { + tsconfig: '/react/tsconfig.json', + }, + ], + }, + rootDir: '..', + testMatch: ['/react/src/**/__tests__/**/*.test.(ts|tsx|js)'], +}; + +export default config; diff --git a/packages/react/src/__tests__/test_setup.ts b/packages/react/jest.setup.ts similarity index 100% rename from packages/react/src/__tests__/test_setup.ts rename to packages/react/jest.setup.ts diff --git a/packages/react/package.json b/packages/react/package.json index ed9cf26..9688b27 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -25,7 +25,7 @@ "scripts": { "build": "yarn run --top-level tsup src/index.tsx --format cjs,esm --dts --clean --sourcemap --out-dir lib --minify", "prepare": "npm run test && npm run build", - "test": "jest --detectOpenHandles --config config/jest.config.json --no-cache" + "test": "jest --detectOpenHandles --no-cache" }, "sideEffects": false, "publishConfig": { diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json index 312130f..4ebc4ec 100644 --- a/packages/react/tsconfig.json +++ b/packages/react/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.settings.json", + "extends": "../tsconfig.base.json", "compilerOptions": { "rootDir": "src", "outDir": "lib" diff --git a/packages/tsconfig.settings.json b/packages/tsconfig.base.json similarity index 78% rename from packages/tsconfig.settings.json rename to packages/tsconfig.base.json index dfe9214..6b8ae9c 100644 --- a/packages/tsconfig.settings.json +++ b/packages/tsconfig.base.json @@ -7,13 +7,12 @@ "experimentalDecorators": false, "forceConsistentCasingInFileNames": true, "jsx": "react", - "lib": ["dom", "es6", "es2016", "es2017"], + "lib": ["DOM", "ESNext"], "moduleResolution": "bundler", - "outDir": "dist", "removeComments": true, "sourceMap": true, "strict": true, "target": "es6" }, - "exclude": ["**/**/__tests__/**/**"] + "exclude": ["lib/**/*", "**/**/__tests__/**/**"] } diff --git a/packages/tsconfig.json b/packages/tsconfig.json deleted file mode 100644 index 81d778f..0000000 --- a/packages/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "files": [], - "references": [{ "path": "core" }, { "path": "react" }] -} diff --git a/yarn.lock b/yarn.lock index 6a724dd..67d348e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -367,6 +367,15 @@ __metadata: languageName: node linkType: hard +"@cspotcode/source-map-support@npm:^0.8.0": + version: 0.8.1 + resolution: "@cspotcode/source-map-support@npm:0.8.1" + dependencies: + "@jridgewell/trace-mapping": "npm:0.3.9" + checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff + languageName: node + linkType: hard + "@eo-locale/core@workspace:*, @eo-locale/core@workspace:packages/core": version: 0.0.0-use.local resolution: "@eo-locale/core@workspace:packages/core" @@ -866,7 +875,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/resolve-uri@npm:^3.1.0": +"@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": version: 3.1.2 resolution: "@jridgewell/resolve-uri@npm:3.1.2" checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d @@ -887,6 +896,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:0.3.9": + version: 0.3.9 + resolution: "@jridgewell/trace-mapping@npm:0.3.9" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.0.3" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -1133,6 +1152,34 @@ __metadata: languageName: node linkType: hard +"@tsconfig/node10@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 10/51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 + languageName: node + linkType: hard + +"@tsconfig/node12@npm:^1.0.7": + version: 1.0.11 + resolution: "@tsconfig/node12@npm:1.0.11" + checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a + languageName: node + linkType: hard + +"@tsconfig/node14@npm:^1.0.0": + version: 1.0.3 + resolution: "@tsconfig/node14@npm:1.0.3" + checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d + languageName: node + linkType: hard + +"@tsconfig/node16@npm:^1.0.2": + version: 1.0.4 + resolution: "@tsconfig/node16@npm:1.0.4" + checksum: 10/202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff + languageName: node + linkType: hard + "@types/aria-query@npm:^5.0.1": version: 5.0.4 resolution: "@types/aria-query@npm:5.0.4" @@ -1330,7 +1377,7 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^8.0.2": +"acorn-walk@npm:^8.0.2, acorn-walk@npm:^8.1.1": version: 8.3.4 resolution: "acorn-walk@npm:8.3.4" dependencies: @@ -1339,7 +1386,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.8.1": +"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.8.1": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -1458,6 +1505,13 @@ __metadata: languageName: node linkType: hard +"arg@npm:^4.1.0": + version: 4.1.3 + resolution: "arg@npm:4.1.3" + checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599 + languageName: node + linkType: hard + "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1896,6 +1950,13 @@ __metadata: languageName: node linkType: hard +"create-require@npm:^1.1.0": + version: 1.1.1 + resolution: "create-require@npm:1.1.1" + checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3": version: 7.0.5 resolution: "cross-spawn@npm:7.0.5" @@ -2035,6 +2096,13 @@ __metadata: languageName: node linkType: hard +"diff@npm:^4.0.1": + version: 4.0.2 + resolution: "diff@npm:4.0.2" + checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069 + languageName: node + linkType: hard + "dom-accessibility-api@npm:^0.5.9": version: 0.5.16 resolution: "dom-accessibility-api@npm:0.5.16" @@ -2135,6 +2203,7 @@ __metadata: jest: "npm:^29.7.0" node-notifier: "npm:^10.0.1" ts-jest: "npm:^29.2.5" + ts-node: "npm:^10.9.2" tsup: "npm:^8.3.5" typescript: "npm:^5.6.3" languageName: unknown @@ -3550,7 +3619,7 @@ __metadata: languageName: node linkType: hard -"make-error@npm:^1.3.6": +"make-error@npm:^1.1.1, make-error@npm:^1.3.6": version: 1.3.6 resolution: "make-error@npm:1.3.6" checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402 @@ -4868,6 +4937,44 @@ __metadata: languageName: node linkType: hard +"ts-node@npm:^10.9.2": + version: 10.9.2 + resolution: "ts-node@npm:10.9.2" + dependencies: + "@cspotcode/source-map-support": "npm:^0.8.0" + "@tsconfig/node10": "npm:^1.0.7" + "@tsconfig/node12": "npm:^1.0.7" + "@tsconfig/node14": "npm:^1.0.0" + "@tsconfig/node16": "npm:^1.0.2" + acorn: "npm:^8.4.1" + acorn-walk: "npm:^8.1.1" + arg: "npm:^4.1.0" + create-require: "npm:^1.1.0" + diff: "npm:^4.0.1" + make-error: "npm:^1.1.1" + v8-compile-cache-lib: "npm:^3.0.1" + yn: "npm:3.1.1" + 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 + bin: + ts-node: dist/bin.js + ts-node-cwd: dist/bin-cwd.js + ts-node-esm: dist/bin-esm.js + ts-node-script: dist/bin-script.js + ts-node-transpile-only: dist/bin-transpile.js + ts-script: dist/bin-script-deprecated.js + checksum: 10/a91a15b3c9f76ac462f006fa88b6bfa528130dcfb849dd7ef7f9d640832ab681e235b8a2bc58ecde42f72851cc1d5d4e22c901b0c11aa51001ea1d395074b794 + languageName: node + linkType: hard + "tsup@npm:^8.3.5": version: 8.3.5 resolution: "tsup@npm:8.3.5" @@ -5008,6 +5115,13 @@ __metadata: languageName: node linkType: hard +"v8-compile-cache-lib@npm:^3.0.1": + version: 3.0.1 + resolution: "v8-compile-cache-lib@npm:3.0.1" + checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961 + languageName: node + linkType: hard + "v8-to-istanbul@npm:^9.0.1": version: 9.0.1 resolution: "v8-to-istanbul@npm:9.0.1" @@ -5219,6 +5333,13 @@ __metadata: languageName: node linkType: hard +"yn@npm:3.1.1": + version: 3.1.1 + resolution: "yn@npm:3.1.1" + checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6 + languageName: node + linkType: hard + "yocto-queue@npm:^0.1.0": version: 0.1.0 resolution: "yocto-queue@npm:0.1.0"