From c7dd3db737bfb88159610058372fc4706ab691b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Wi=C4=99cek?= Date: Sat, 7 Sep 2024 13:00:55 +0200 Subject: [PATCH] Introduced Changesets and Biome, updated dependencies --- .changeset/README.md | 8 ++ .changeset/config.json | 11 +++ .eslintignore | 1 - .eslintrc.json | 62 --------------- .github/workflows/ci.yml | 29 +++++++ .gitignore | 165 ++++++++++++++++++++++++++++++++++++++- biome.json | 37 +++++++++ package.json | 59 +++++++++----- tsconfig.json | 36 ++++++--- 9 files changed, 311 insertions(+), 97 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 .github/workflows/ci.yml create mode 100644 biome.json diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..e5b6d8d --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..d03b641 --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.0.3/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": true, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index f1ff06d..0000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -lib/ \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 855d21f..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "root": true, - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 13, - "project": [ "./tsconfig.json" ] - }, - "plugins": [ - "@typescript-eslint" - ], - "rules": { - "indent": [ - "error", - 4 - ], - "linebreak-style": [ - "error", - "unix" - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ], - "@typescript-eslint/type-annotation-spacing": [ - "error", - { - "before": true, - "after": true, - "overrides": { - "colon": { - "before": false, - "after": true - } - } - } - ], - "@typescript-eslint/no-unsafe-member-access": [ - "off" - ], - "@typescript-eslint/no-unsafe-argument": [ - "off" - ], - "@typescript-eslint/no-unsafe-return": [ - "off" - ], - "@typescript-eslint/no-unsafe-assignment": [ - "off" - ], - "@typescript-eslint/no-unsafe-call": [ - "off" - ] - } -} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0f27eac --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,29 @@ +name: CI + +on: + pull_request: + push: + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + ci: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: "20" + + - name: Install dependencies + run: npm install + + - name: Run CI + run: npm run ci \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5efdd47..38cec46 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,163 @@ -.idea/ +# Created by https://www.toptal.com/developers/gitignore/api/node,visualstudiocode +# Edit at https://www.toptal.com/developers/gitignore?templates=node,visualstudiocode + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories node_modules/ -package-lock.json -yarn.lock \ No newline at end of file +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +# End of https://www.toptal.com/developers/gitignore/api/node,visualstudiocode \ No newline at end of file diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..227a5f8 --- /dev/null +++ b/biome.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "organizeImports": { + "enabled": true + }, + "formatter": { + "enabled": true, + "formatWithErrors": false, + "indentStyle": "space", + "indentWidth": 4, + "lineEnding": "lf", + "lineWidth": 100, + "attributePosition": "auto" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noExplicitAny": "warn" + } + } + }, + "javascript": { + "formatter": { + "jsxQuoteStyle": "double", + "quoteProperties": "asNeeded", + "trailingCommas": "all", + "semicolons": "always", + "arrowParentheses": "always", + "bracketSpacing": true, + "bracketSameLine": false, + "quoteStyle": "single", + "attributePosition": "auto" + } + } +} diff --git a/package.json b/package.json index 5ab8498..4e5cc77 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,51 @@ { "name": "simpay-typescript-api", "author": "Rafał Więcek", - "version": "2.3.0", - "description": "SimPay.pl API", - "main": "lib/index.js", - "types": "lib/index.d.ts", + "version": "3.0.0", + "description": "SimPay.pl API wrapper", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "type": "module", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "dev": "tsc && node lib/test.js" + "ci": "npm run build && npm run check && npm run check-exports", + "lint": "npx @biomejs/biome lint --write ./src", + "format": "npx @biomejs/biome format --write ./src", + "check": "npx @biomejs/biome check --write ./src", + "build": "tsc --build", + "test": "npm run build && node --loader ts-node/esm ./tests/index.ts", + "check-exports": "attw --pack . --ignore-rules=cjs-resolves-to-esm", + "local-release": "changeset version && changeset publish", + "prepublishOnly": "npm run ci" }, "keywords": [ "simpay", "payment", "db", - "api" + "api", + "directbilling", + "sms", + "simpay.pl", + "payments", + "payment-gateway", + "payment-gateways", + "payment-api", + "direct-billing", + "sms-payment", + "sms-payments", + "db-payment", + "db-payments" ], - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "axios": "^1.3.6" + "axios": "^1.7.7" }, "devDependencies": { - "@types/node": "^18.16.1", - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", - "eslint": "^8.39.0", - "typescript": "^5.0.4" + "@arethetypeswrong/cli": "^0.16.1", + "@biomejs/biome": "1.8.3", + "@changesets/cli": "^2.27.8", + "@types/node": "^22.5.4", + "ts-node": "^10.9.2", + "typescript": "^5.5.4" }, "repository": { "type": "git", @@ -38,6 +56,9 @@ }, "homepage": "https://github.com/SimPaypl/SimPay-API-TypeScript#readme", "files": [ - "lib/**/*" - ] + "dist" + ], + "engines": { + "node": ">=20.17.0" + } } diff --git a/tsconfig.json b/tsconfig.json index 87f85fe..1733595 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,27 @@ { "compilerOptions": { - "target": "es6", - "module": "commonjs", - "declaration": true, - "outDir": "./lib", - "strict": true + /* Base Options: */ + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + /* Strictness */ + "strict": true, + "noUncheckedIndexedAccess": true, + "noImplicitOverride": true, + /* If transpiling with TypeScript: */ + "module": "NodeNext", + "outDir": "dist", + "sourceMap": true, + /* AND if you're building for a library: */ + "declaration": true, + /* If your code doesn't run in the DOM: */ + "lib": ["es2022"] }, - "include": [ - "src" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "include": ["src"], + "exclude": ["node_modules", "dist", "test"] + } \ No newline at end of file