diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index f998b84..c8da663 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -9,10 +9,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: install node v20 + - name: install node v22 uses: actions/setup-node@v1 with: - node-version: 20 + node-version: 22 - uses: actions/cache@v4 with: path: '**/node_modules' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3d33d00..e3c8e58 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: if: ${{ steps.release.outputs.release_created }} - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 22 registry-url: 'https://registry.npmjs.org' if: ${{ steps.release.outputs.release_created }} - run: yarn install --frozen-lockfile diff --git a/package.json b/package.json index 833f86d..c39e653 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lib" ], "devDependencies": { - "@tsconfig/recommended": "^1.0.8", + "@tsconfig/node22": "^22.0.2", "@types/jest": "^29.5.14", "@types/lodash": "^4.17.15", "@typescript-eslint/eslint-plugin": "^8.23.0", @@ -31,10 +31,13 @@ "jest": "^29.7.0", "prettier": "^3.4.2", "ts-jest": "^29.2.5", - "typescript": "^5.7.3" + "typescript": "^5.7.3", + "zod": "^4.1.11" }, "dependencies": { - "lodash": "^4.17.21", - "zod": "^3.24.1" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "zod": "^4.1.11" } } diff --git a/src/error-response.ts b/src/error-response.ts index b5daa99..5548bce 100644 --- a/src/error-response.ts +++ b/src/error-response.ts @@ -1,4 +1,4 @@ -import {z} from 'zod'; +import {z} from 'zod/v4'; /** https://github.com/AtB-AS/amp-rs/blob/main/amp-http/src/lib.rs */ export const HttpError = z.object({ diff --git a/src/fare-contract/__tests__/fixtures/carnet-farecontact.ts b/src/fare-contract/__tests__/fixtures/carnet-farecontact.ts index 75cd7b7..00fa599 100644 --- a/src/fare-contract/__tests__/fixtures/carnet-farecontact.ts +++ b/src/fare-contract/__tests__/fixtures/carnet-farecontact.ts @@ -1,4 +1,4 @@ -import {FareContractType} from '../../types'; +import {FareContractType, TravelRightType} from '../../types'; import {carnetTravelRight} from './carnet-travelright'; export const carnetFareContract: FareContractType = { @@ -13,6 +13,6 @@ export const carnetFareContract: FareContractType = { customerAccountId: 'ATB:CustomerAccount:Qw3fhcJudvgCYR7yHScbFd1mPtP2', orderId: 'E69J9NJH', created: new Date(Date.now() - 1000 * 60 * 60 * 10), // 10 hours ago - travelRights: [carnetTravelRight], + travelRights: [carnetTravelRight as unknown as TravelRightType], totalTaxAmount: '46.07', }; diff --git a/src/fare-contract/__tests__/fixtures/period-boat-farecontract.ts b/src/fare-contract/__tests__/fixtures/period-boat-farecontract.ts index 4d1e970..922413a 100644 --- a/src/fare-contract/__tests__/fixtures/period-boat-farecontract.ts +++ b/src/fare-contract/__tests__/fixtures/period-boat-farecontract.ts @@ -1,4 +1,4 @@ -import {FareContractType} from '../../types'; +import {FareContractType, TravelRightType} from '../../types'; import {periodBoatTravelRight} from './period-boat-travelright'; export const periodBoatFareContract: FareContractType = { @@ -13,6 +13,6 @@ export const periodBoatFareContract: FareContractType = { customerAccountId: 'ATB:CustomerAccount:Qw3fhcJudvgCYR7yHScbFd1mPtP2', orderId: '8MTTWRI4', created: new Date(Date.now() - 1000 * 60 * 60 * 10), // 10 hours ago - travelRights: [periodBoatTravelRight], + travelRights: [periodBoatTravelRight as unknown as TravelRightType], totalTaxAmount: '895.82', }; diff --git a/src/fare-contract/__tests__/travelrights.test.ts b/src/fare-contract/__tests__/travelrights.test.ts index 1f31f6b..5d192f0 100644 --- a/src/fare-contract/__tests__/travelrights.test.ts +++ b/src/fare-contract/__tests__/travelrights.test.ts @@ -18,13 +18,15 @@ describe('Travelright type', () => { expect(TravelRightType.safeParse(nightTravelRight).success).toBe(true); expect(TravelRightType.safeParse(periodTravelRight).success).toBe(true); expect( - TravelRightType.safeParse(periodBoatTravelRight as TravelRightType) - .success, + TravelRightType.safeParse( + periodBoatTravelRight as unknown as TravelRightType, + ).success, ).toBe(true); expect(TravelRightType.safeParse(singleTravelRight).success).toBe(true); expect( - TravelRightType.safeParse(singleBoatTravelRight as TravelRightType) - .success, + TravelRightType.safeParse( + singleBoatTravelRight as unknown as TravelRightType, + ).success, ).toBe(true); expect(TravelRightType.safeParse(youthTravelRight).success).toBe(true); expect(TravelRightType.safeParse(carnetTravelRight).success).toBe(true); diff --git a/src/fare-contract/types.ts b/src/fare-contract/types.ts index 6d767d8..1fd4931 100644 --- a/src/fare-contract/types.ts +++ b/src/fare-contract/types.ts @@ -1,4 +1,4 @@ -import {z} from 'zod'; +import {z} from 'zod/v4'; import {nullishToOptional} from '../utils'; export enum TravelRightStatus { diff --git a/src/offers/ticket-offer.ts b/src/offers/ticket-offer.ts index 718f566..255e312 100644 --- a/src/offers/ticket-offer.ts +++ b/src/offers/ticket-offer.ts @@ -1,4 +1,4 @@ -import {z} from 'zod'; +import {z} from 'zod/v4'; import {nullishToOptional} from '../utils'; /** diff --git a/tsconfig.json b/tsconfig.json index 982634a..d618366 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@tsconfig/recommended/tsconfig.json", + "extends": "@tsconfig/node22/tsconfig.json", "compilerOptions": { "outDir": "./lib", "declaration": true diff --git a/yarn.lock b/yarn.lock index 5d59660..0c4e931 100644 --- a/yarn.lock +++ b/yarn.lock @@ -647,10 +647,10 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@tsconfig/recommended@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.8.tgz#16483d57b56bbbd32b8c3af0eff1a40c32d006fa" - integrity sha512-TotjFaaXveVUdsrXCdalyF6E5RyG6+7hHHQVZonQtdlk1rJZ1myDIvPUUKPhoYv+JAzThb2lQJh9+9ZfF46hsA== +"@tsconfig/node22@^22.0.2": + version "22.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node22/-/node22-22.0.2.tgz#1e04e2c5cc946dac787d69bb502462a851ae51b6" + integrity sha512-Kmwj4u8sDRDrMYRoN9FDEcXD8UpBSaPQQ24Gz+Gamqfm7xxn+GBR7ge/Z7pK8OXNGyUzbSwJj+TH6B+DS/epyA== "@types/babel__core@^7.1.14": version "7.20.5" @@ -3704,7 +3704,7 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@^3.24.1: - version "3.24.1" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.1.tgz#27445c912738c8ad1e9de1bea0359fa44d9d35ee" - integrity sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A== +zod@^4.1.11: + version "4.1.11" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.11.tgz#4aab62f76cfd45e6c6166519ba31b2ea019f75f5" + integrity sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==