From 44c16bd7f5e0bf7c83290530f849571172a3faab Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:36:45 +0200 Subject: [PATCH 01/16] add CI workflows --- .github/workflows/ci-quick.yaml | 38 +++++++++++++++++++++++++++++++++ .github/workflows/ci.yaml | 38 +++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 .github/workflows/ci-quick.yaml create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml new file mode 100644 index 0000000..30d6f73 --- /dev/null +++ b/.github/workflows/ci-quick.yaml @@ -0,0 +1,38 @@ +name: CI - Test Suite + +on: + push: + branches: + - '**' + +jobs: + test: + name: Test on ${{ matrix.os }} with Node.js ${{ matrix.node-version }} + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + node-version: [22] + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install Bun + run: curl -fsSL https://bun.sh/install | bash + + - name: Set Bun environment path + shell: bash + run: echo "export PATH=\$HOME/.bun/bin:\$PATH" >> $GITHUB_ENV + + - name: Install dependencies + run: bun install + + - name: Run tests + run: bun test diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..f5022a9 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,38 @@ +name: CI - Test Suite + +on: + pull_request: + branches: + - '**' + +jobs: + test: + name: Test on ${{ matrix.os }} with Node.js ${{ matrix.node-version }} + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + node-version: [16, 18, 20, 22] + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Install Bun + run: curl -fsSL https://bun.sh/install | bash + + - name: Set Bun environment path + shell: bash + run: echo "export PATH=\$HOME/.bun/bin:\$PATH" >> $GITHUB_ENV + + - name: Install dependencies + run: bun install + + - name: Run tests + run: bun test From 51a8f6cde849ddf575632d5e28b14bc0abf9ea06 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:40:09 +0200 Subject: [PATCH 02/16] use setup-bun --- .github/workflows/ci-quick.yaml | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 30d6f73..2d08538 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -17,20 +17,13 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-node@v3 + uses: actions/setup-bun@v2 with: node-version: ${{ matrix.node-version }} - - name: Install Bun - run: curl -fsSL https://bun.sh/install | bash - - - name: Set Bun environment path - shell: bash - run: echo "export PATH=\$HOME/.bun/bin:\$PATH" >> $GITHUB_ENV - - name: Install dependencies run: bun install From 61a7f913752b008bf226adec46168bc3e6366773 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:43:18 +0200 Subject: [PATCH 03/16] fix typo --- .github/workflows/ci-quick.yaml | 4 ++-- .github/workflows/ci.yaml | 13 +++---------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 2d08538..9e24dcb 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -1,7 +1,7 @@ name: CI - Test Suite on: - push: + pull_request: branches: - '**' @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-bun@v2 + uses: oven/setup-bun@v2 with: node-version: ${{ matrix.node-version }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f5022a9..9e24dcb 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,24 +13,17 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node-version: [16, 18, 20, 22] + node-version: [22] steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up Node.js - uses: actions/setup-node@v3 + uses: oven/setup-bun@v2 with: node-version: ${{ matrix.node-version }} - - name: Install Bun - run: curl -fsSL https://bun.sh/install | bash - - - name: Set Bun environment path - shell: bash - run: echo "export PATH=\$HOME/.bun/bin:\$PATH" >> $GITHUB_ENV - - name: Install dependencies run: bun install From c61cc1da2e3b644e0d956a8a7d95113ae45a40ac Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:46:31 +0200 Subject: [PATCH 04/16] fix typo --- .github/workflows/ci-quick.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 9e24dcb..5ab3799 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -1,7 +1,7 @@ name: CI - Test Suite on: - pull_request: + push: branches: - '**' From 8416dad3df61b79dc06d0f73b184ad18d1d72178 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:47:32 +0200 Subject: [PATCH 05/16] fix setup-bun repo name --- .github/workflows/ci-quick.yaml | 2 +- .github/workflows/ci.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 5ab3799..7ffadbf 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: oven/setup-bun@v2 + uses: oven-sh/setup-bun@v2 with: node-version: ${{ matrix.node-version }} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9e24dcb..a6f121f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: oven/setup-bun@v2 + uses: oven-sh/setup-bun@v2 with: node-version: ${{ matrix.node-version }} From 652a4d40ada06c8a8354b8019e209a607d32fdd2 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:53:13 +0200 Subject: [PATCH 06/16] install types in dev dependencies --- bun.lockb | Bin 415625 -> 414679 bytes package.json | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 866eb34830e15be32be2f482a9d0ff6c73cdeab4..33a8b98949eeabf62b39c3e3b1421eb9d87bf701 100755 GIT binary patch delta 84580 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 +[![WTFPL](https://img.shields.io/badge/Licence-WTFPL-blue)](http://www.wtfpl.net/) +[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/gflohr/qgoda/blob/master/LICENSE) +[![Coverage](https://img.shields.io/coverallsCoverage/github/gflohr/e-invoice-eu?branch=main)](https://coveralls.io/github/gflohr/e-invoice-eu?branch=main) + # E-Invoice-EU Free and open source tool chain for generating EN16931 conforming invoices (Factur-X/ZUGFeRD, UBL, CII, XRechnung) from popular spreadsheet From 8a8c5c0bddb34a3fad8d86c21cf9bc4bab409693 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:47:30 +0200 Subject: [PATCH 14/16] split actions --- .github/workflows/ci.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1d13470..986fb1d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -37,9 +37,12 @@ jobs: - name: Run tests run: bun run test + - name: Test with coverage + if: ${{ matrix.coverage }} + run: bun run test:cov + - name: Upload coverage uses: coverallsapp/github-action@v2 if: ${{ matrix.coverage }} - run: bun run test:cov with: github-token: ${{ secrets.GITHUB_TOKEN }} From d886438842f688cf9b6f3ca80b7467889d7c5604 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:50:39 +0200 Subject: [PATCH 15/16] use standard badge --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d488ba3..31c5420 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ width="256" height="256" />

-[![WTFPL](https://img.shields.io/badge/Licence-WTFPL-blue)](http://www.wtfpl.net/) -[![Price](https://img.shields.io/badge/price-FREE-0098f7.svg)](https://github.com/gflohr/qgoda/blob/master/LICENSE) -[![Coverage](https://img.shields.io/coverallsCoverage/github/gflohr/e-invoice-eu?branch=main)](https://coveralls.io/github/gflohr/e-invoice-eu?branch=main) +[![licence](https://img.shields.io/badge/Licence-WTFPL-blue)](http://www.wtfpl.net/) +[![price](https://img.shields.io/badge/Price-FREE-green)](https://github.com/gflohr/qgoda/blob/main/LICENSE) +[![coverage](https://img.shields.io/coverallsCoverage/github/gflohr/e-invoice-eu?branch=main)](https://coveralls.io/github/gflohr/e-invoice-eu?branch=main) # E-Invoice-EU From f331a073b2613c821e0a29a44a845465e1838e49 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:52:57 +0200 Subject: [PATCH 16/16] use lowercase --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 31c5420..9ce85e7 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ width="256" height="256" />

-[![licence](https://img.shields.io/badge/Licence-WTFPL-blue)](http://www.wtfpl.net/) -[![price](https://img.shields.io/badge/Price-FREE-green)](https://github.com/gflohr/qgoda/blob/main/LICENSE) +[![licence](https://img.shields.io/badge/licence-WTFPL-blue)](http://www.wtfpl.net/) +[![price](https://img.shields.io/badge/price-FREE-green)](https://github.com/gflohr/qgoda/blob/main/LICENSE) [![coverage](https://img.shields.io/coverallsCoverage/github/gflohr/e-invoice-eu?branch=main)](https://coveralls.io/github/gflohr/e-invoice-eu?branch=main) # E-Invoice-EU

!4Um^iGJSWQxefngvdbA0CX1A8B=G- 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 DXDpaj delta 85660 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 diff --git a/package.json b/package.json index 16b6fd7..61b3672 100644 --- a/package.json +++ b/package.json @@ -15,9 +15,6 @@ "@nestjs/core": "^10.4.15", "@nestjs/platform-express": "^10.4.15", "@nestjs/swagger": "^8.1.0", - "@types/got": "^9.6.12", - "@types/jsdom": "^21.1.7", - "@types/xml2js": "^0.4.14", "ajv": "^8.17.1", "class-validator": "^0.14.1", "got": "^14.4.5", @@ -42,12 +39,14 @@ "@types/express": "^5.0.0", "@types/jest": "^29.5.14", "@types/js-yaml": "^4.0.9", + "@types/jsdom": "^21.1.7", "@types/jsonpath-plus": "^5.0.5", "@types/multer": "^1.4.12", "@types/node": "^22.10.2", "@types/semver": "^7.5.8", "@types/supertest": "^6.0.2", "@types/tmp": "^0.2.6", + "@types/xml2js": "^0.4.14", "@typescript-eslint/eslint-plugin": "^8.18.2", "@typescript-eslint/parser": "^8.18.2", "ajv-cli": "^5.0.0", From da9f5905128f84c2779d48f05812d003ca02397e Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 18:59:09 +0200 Subject: [PATCH 07/16] add debugging code --- .github/workflows/ci-quick.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 7ffadbf..43c415c 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -27,5 +27,11 @@ jobs: - name: Install dependencies run: bun install + - name: Node.js Version + run: node -v + + - name: List Node Modules + run: ls node_modules/ + - name: Run tests run: bun test From 46e0377e9fc8c92bf839c84f3a880705b074fbc6 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:01:55 +0200 Subject: [PATCH 08/16] fix node setup --- .github/workflows/ci-quick.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index 43c415c..a5ea54e 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -20,10 +20,13 @@ jobs: uses: actions/checkout@v4 - name: Set up Node.js - uses: oven-sh/setup-bun@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + - name: Install dependencies run: bun install From a7458e7a3adfe415136c26277af16be913cb54ad Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:06:33 +0200 Subject: [PATCH 09/16] do not use bun testing framework --- .github/workflows/ci-quick.yaml | 2 +- .github/workflows/ci.yaml | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index a5ea54e..f6fe95e 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -37,4 +37,4 @@ jobs: run: ls node_modules/ - name: Run tests - run: bun test + run: bun run test diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a6f121f..d100f0f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,19 +13,28 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node-version: [22] + node-version: [16, 18, 20, 22] steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Node.js - uses: oven-sh/setup-bun@v2 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + - name: Set up Bun + uses: oven-sh/setup-bun@v2 + - name: Install dependencies run: bun install + - name: Node.js Version + run: node -v + + - name: List Node Modules + run: ls node_modules/ + - name: Run tests - run: bun test + run: bun run test From 1375e0e97e4c364828c7e99ffc640b7aa84332b4 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:07:27 +0200 Subject: [PATCH 10/16] remove debugging code --- .github/workflows/ci-quick.yaml | 6 ------ .github/workflows/ci.yaml | 6 ------ 2 files changed, 12 deletions(-) diff --git a/.github/workflows/ci-quick.yaml b/.github/workflows/ci-quick.yaml index f6fe95e..1f50388 100644 --- a/.github/workflows/ci-quick.yaml +++ b/.github/workflows/ci-quick.yaml @@ -30,11 +30,5 @@ jobs: - name: Install dependencies run: bun install - - name: Node.js Version - run: node -v - - - name: List Node Modules - run: ls node_modules/ - - name: Run tests run: bun run test diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d100f0f..b9534c9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,11 +30,5 @@ jobs: - name: Install dependencies run: bun install - - name: Node.js Version - run: node -v - - - name: List Node Modules - run: ls node_modules/ - - name: Run tests run: bun run test From a00441384b8e84804a067e0a06da8e548e8fa153 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:16:50 +0200 Subject: [PATCH 11/16] require Node 17 --- .github/workflows/ci.yaml | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b9534c9..d5da910 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,7 +13,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node-version: [16, 18, 20, 22] + node-version: [18, 20, 22] steps: - name: Checkout code diff --git a/README.md b/README.md index f5c05b3..1f5c338 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ You can achieve similar results with these projects: ## Pre-requisites -- NodeJS 20.x +- NodeJS 17 or newer (currently tested with NodeJS 18, 20, and 22) - A package manager like bun, npm, yarn, pnpm, ... ## Installation From ed4009504dfa70e64454ea7cd31c5919392c90dd Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:30:52 +0200 Subject: [PATCH 12/16] integrate coveralls --- .github/workflows/ci.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d5da910..1d13470 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -14,6 +14,10 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] node-version: [18, 20, 22] + include: + - node-version: '22' + os: ubuntu-latest + coverage: true steps: - name: Checkout code @@ -32,3 +36,10 @@ jobs: - name: Run tests run: bun run test + + - name: Upload coverage + uses: coverallsapp/github-action@v2 + if: ${{ matrix.coverage }} + run: bun run test:cov + with: + github-token: ${{ secrets.GITHUB_TOKEN }} From 1d0cb29fc0f662abd5ce24c5bfdbd3a66e796996 Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Wed, 8 Jan 2025 19:43:15 +0200 Subject: [PATCH 13/16] add badges to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 1f5c338..d488ba3 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,10 @@ width="256" height="256" />