From 8ec323b1da90e9244886cb68d427b90266a862d0 Mon Sep 17 00:00:00 2001 From: Adrien de Peretti Date: Mon, 23 Sep 2024 14:13:02 +0200 Subject: [PATCH] refactor(types): Align configuration and fixes (#9240) RESOLVES FRMW-2712 **What** Refactor types packages to use the latest configuration of typescript and fixes issues --- packages/core/types/jest.config.js | 15 +- packages/core/types/package.json | 22 ++- packages/core/types/src/common/nested-pick.ts | 144 ------------------ packages/core/types/src/http/claim/common.ts | 8 +- .../src/http/collection/store/entities.ts | 2 +- .../types/src/http/payment/store/queries.ts | 1 - .../types/src/http/region/admin/queries.ts | 15 +- .../src/workflow/order/create-shipment.ts | 10 -- packages/core/types/tsconfig.build.json | 11 -- packages/core/types/tsconfig.json | 2 + packages/core/types/tsconfig.spec.json | 8 - yarn.lock | 2 +- 12 files changed, 42 insertions(+), 198 deletions(-) delete mode 100644 packages/core/types/src/common/nested-pick.ts delete mode 100644 packages/core/types/tsconfig.build.json delete mode 100644 packages/core/types/tsconfig.spec.json diff --git a/packages/core/types/jest.config.js b/packages/core/types/jest.config.js index 747af0cb05..867ce6519f 100644 --- a/packages/core/types/jest.config.js +++ b/packages/core/types/jest.config.js @@ -1,17 +1,24 @@ module.exports = { - moduleNameMapper: {}, transform: { "^.+\\.[jt]s$": [ "@swc/jest", { jsc: { - parser: { syntax: "typescript", decorators: true }, - transform: { decoratorMetadata: true }, + parser: { + syntax: "typescript", + decorators: true, + }, + transform: { + useDefineForClassFields: false, + legacyDecorator: true, + decoratorMetadata: true, + }, + target: "ES2021", }, }, ], }, + testPathIgnorePatterns: [`dist/`, `node_modules/`], testEnvironment: `node`, moduleFileExtensions: [`js`, `ts`], - modulePathIgnorePatterns: ["dist/"], } diff --git a/packages/core/types/package.json b/packages/core/types/package.json index e86460efae..dbaa584774 100644 --- a/packages/core/types/package.json +++ b/packages/core/types/package.json @@ -4,22 +4,33 @@ "description": "Medusa Types definition", "main": "dist/index.js", "types": "dist/index.d.ts", + "export": { + ".": "./dist/index.js" + }, "repository": { "type": "git", "url": "https://github.com/medusajs/medusa", "directory": "packages/types" }, "engines": { - "node": ">=16" + "node": ">=20" }, "publishConfig": { "access": "public" }, "files": [ - "dist" + "dist", + "!dist/**/__tests__", + "!dist/**/__fixtures__", + "!dist/**/__mocks__" ], "author": "Medusa", "license": "MIT", + "scripts": { + "build": "rimraf dist && tsc --build", + "watch": "tsc --build --watch", + "test": "exit 0" + }, "devDependencies": { "awilix": "^8.0.1", "bignumber.js": "^9.1.2", @@ -27,13 +38,8 @@ "expect-type": "^0.20.0", "ioredis": "^5.4.1", "rimraf": "^5.0.1", - "typescript": "^5.1.6", + "typescript": "^5.6.2", "vite": "^5.2.11", "winston": "^3.8.2" - }, - "scripts": { - "build": "rimraf dist && tsc -p tsconfig.spec.json --noEmit && tsc -p tsconfig.build.json", - "watch": "tsc --build --watch", - "test": "exit 0" } } diff --git a/packages/core/types/src/common/nested-pick.ts b/packages/core/types/src/common/nested-pick.ts deleted file mode 100644 index 1646a91ed6..0000000000 --- a/packages/core/types/src/common/nested-pick.ts +++ /dev/null @@ -1,144 +0,0 @@ -// TODO: The intent is to manage fields picking from a object, not to act upon at the moment and just keeping it here for reference. - -import { Prettify } from "./common" - -type Split = string extends S - ? string[] - : S extends "" - ? [] - : S extends `${infer T}${D}${infer U}` - ? [T, ...Split] - : [S] - -type NestedPickHelper = Path extends [ - infer First, - ...infer Rest -] - ? First extends keyof T - ? Rest extends string[] - ? Rest["length"] extends 0 - ? T[First] - : T[First] extends Array - ? { - [K in keyof Item as Rest[0] extends "*" - ? K - : K extends Rest[number] - ? K - : never]: Item[K] extends object - ? NestedPickHelper - : Item[K] extends Array - ? NestedPickHelper - : Rest[0] extends "*" - ? Item[K] - : K extends Rest[number] - ? Item[K] - : never - }[] - : T[First] extends object - ? { - [K in keyof T[First] as Rest[0] extends "*" - ? K - : K extends Rest[number] - ? K - : never]: T[First][K] extends object - ? NestedPickHelper - : T[First][K] extends Array - ? NestedPickHelper - : Rest[0] extends "*" - ? T[First][K] - : K extends Rest[number] - ? T[First][K] - : never - } - : First extends "*" - ? { - [K in keyof T]: T[K] - } - : { - [K in keyof T[First] as K extends Rest[number] - ? K - : never]: NestedPickHelper - } - : never - : First extends `${infer ArrayKey}[${infer Index}]` - ? ArrayKey extends keyof T - ? T[ArrayKey] extends (infer U)[] - ? NestedPickHelper - : never - : never - : First extends "*" - ? T - : never - : T - -type UnionToIntersection = (U extends any ? (x: U) => void : never) extends ( - x: infer I -) => void - ? I - : never - -export type NestedPickFirstIteration = { - [P in Props[number] as Split[0] & string]: NestedPickHelper< - T, - Split - > -} - -type NestedPick = { - [K in keyof NestedPickFirstIteration]: Prettify< - NestedPickFirstIteration[K] extends Array - ? UnionToIntersection[] - : UnionToIntersection[K]> - > -} - -type Obj = { - id: string - title: string - variant: { - id: string - description: string - } - options: { id: string; value: string }[] - extra: { - detail: { - name: string - info: { - data: string - } - } - } -} - -type Test = NestedPick< - Obj, - [ - "id", - "variant.description", - "variant.id", - "options.id", - "options.value", - "extra.detail.info.data" - ] -> - -const test: Test = { - id: "test", - variant: { - description: "test", - id: "test", - }, - options: [ - { - id: "test", - value: "test", - }, - ], - extra: { - detail: { - info: { - data: "test", - }, - }, - }, -} diff --git a/packages/core/types/src/http/claim/common.ts b/packages/core/types/src/http/claim/common.ts index 53f706d069..057ea7e2ff 100644 --- a/packages/core/types/src/http/claim/common.ts +++ b/packages/core/types/src/http/claim/common.ts @@ -1,8 +1,12 @@ import { OperatorMap } from "../../dal" -import { ClaimReason, OrderClaimType, ReturnDTO } from "../../order" +import { ClaimReason, OrderClaimType } from "../../order" import { BigNumberRawValue } from "../../totals" import { FindParams } from "../common" -import { BaseOrder, BaseOrderShippingMethod, BaseOrderTransaction } from "../order/common" +import { + BaseOrder, + BaseOrderShippingMethod, + BaseOrderTransaction, +} from "../order/common" import { BaseReturn } from "../return/common" export interface BaseClaimItem { diff --git a/packages/core/types/src/http/collection/store/entities.ts b/packages/core/types/src/http/collection/store/entities.ts index 0d99e0fd60..d955ef6c95 100644 --- a/packages/core/types/src/http/collection/store/entities.ts +++ b/packages/core/types/src/http/collection/store/entities.ts @@ -1,3 +1,3 @@ -import { BaseCollection, BaseCollectionListParams } from "../common" +import { BaseCollection } from "../common" export interface StoreCollection extends BaseCollection {} diff --git a/packages/core/types/src/http/payment/store/queries.ts b/packages/core/types/src/http/payment/store/queries.ts index 1a5b93f948..b657bba9c9 100644 --- a/packages/core/types/src/http/payment/store/queries.ts +++ b/packages/core/types/src/http/payment/store/queries.ts @@ -1,6 +1,5 @@ import { BasePaymentCollectionFilters, - BasePaymentProviderFilters, BasePaymentSessionFilters, } from "../common" diff --git a/packages/core/types/src/http/region/admin/queries.ts b/packages/core/types/src/http/region/admin/queries.ts index a78ae64105..67eed7aef1 100644 --- a/packages/core/types/src/http/region/admin/queries.ts +++ b/packages/core/types/src/http/region/admin/queries.ts @@ -1,11 +1,10 @@ -import { BaseFilterable, OperatorMap } from "../../../dal"; -import { FindParams } from "../../common"; -import { - BaseRegionCountryFilters, - BaseRegionFilters, -} from "../common" +import { BaseFilterable, OperatorMap } from "../../../dal" +import { FindParams } from "../../common" +import { BaseRegionCountryFilters } from "../common" -export interface AdminRegionFilters extends FindParams, BaseFilterable { +export interface AdminRegionFilters + extends FindParams, + BaseFilterable { q?: string id?: string | string[] currency_code?: string | string[] @@ -14,4 +13,4 @@ export interface AdminRegionFilters extends FindParams, BaseFilterable deleted_at?: OperatorMap } -export interface AdminRegionCountryFilters extends BaseRegionCountryFilters {} \ No newline at end of file +export interface AdminRegionCountryFilters extends BaseRegionCountryFilters {} diff --git a/packages/core/types/src/workflow/order/create-shipment.ts b/packages/core/types/src/workflow/order/create-shipment.ts index 966deb04f8..024e107489 100644 --- a/packages/core/types/src/workflow/order/create-shipment.ts +++ b/packages/core/types/src/workflow/order/create-shipment.ts @@ -16,13 +16,3 @@ export interface CreateOrderShipmentWorkflowInput { no_notification?: boolean metadata?: MetadataType } - -interface CreateOrderDeliveryItem { - id: string - quantity: BigNumberInput -} - -export interface CreateOrderDeliveryWorkflowInput { - order_id: string - fulfillment_id: string -} diff --git a/packages/core/types/tsconfig.build.json b/packages/core/types/tsconfig.build.json deleted file mode 100644 index 2ce34105bc..0000000000 --- a/packages/core/types/tsconfig.build.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src"], - "exclude": [ - "dist", - "src/**/__tests__", - "src/**/__mocks__", - "src/**/__fixtures__", - "node_modules" - ], -} diff --git a/packages/core/types/tsconfig.json b/packages/core/types/tsconfig.json index 16a0c571f8..d4c9e79afe 100644 --- a/packages/core/types/tsconfig.json +++ b/packages/core/types/tsconfig.json @@ -10,6 +10,8 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, + "noUnusedLocals": true, + "forceConsistentCasingInFileNames": true, "sourceMap": true, "noImplicitReturns": true, "strictNullChecks": true, diff --git a/packages/core/types/tsconfig.spec.json b/packages/core/types/tsconfig.spec.json deleted file mode 100644 index 48e47e8cbb..0000000000 --- a/packages/core/types/tsconfig.spec.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src", "integration-tests"], - "exclude": ["node_modules", "dist"], - "compilerOptions": { - "sourceMap": true - } -} diff --git a/yarn.lock b/yarn.lock index 54e570e199..6a90e3f575 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6618,7 +6618,7 @@ __metadata: expect-type: ^0.20.0 ioredis: ^5.4.1 rimraf: ^5.0.1 - typescript: ^5.1.6 + typescript: ^5.6.2 vite: ^5.2.11 winston: ^3.8.2 languageName: unknown