From 3965336e1d92da9685db7591d44a21c52080b97d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20=C3=96zcan?= Date: Sun, 22 Sep 2024 03:42:04 +0300 Subject: [PATCH 1/2] feat(js-sdk): add ES module support for better compatibility with modern JavaScript environments chore(js-sdk): bump version to 0.0.2 to reflect new ES module changes chore(js-sdk): update "node" engine requirement to ">=20" as GitHub workflows now use Node.js 20 as the minimum version fix(js-sdk): normalize headers in client requests to fix incorrect merging due to wrong return format (should return a JSON object, not Headers class) chore(js-sdk): remove unnecessary return statements in client methods for code clarity and consistency chore(js-sdk): adjust TypeScript config to support both ESNext and CommonJS modules chore(js-sdk): update build script to generate ES module and CommonJS outputs chore(js-sdk): update dependencies for Jest, MSW, and TypeScript to pin versions and prevent unexpected package updates --- packages/core/js-sdk/package.json | 32 ++++++++++------- .../core/js-sdk/src/__tests__/client.spec.ts | 1 - packages/core/js-sdk/src/admin/order.ts | 2 +- packages/core/js-sdk/src/client.ts | 24 +++++++++---- packages/core/js-sdk/tsconfig.esm.json | 34 +++++++++++++++++++ packages/core/js-sdk/tsconfig.json | 14 +++++--- 6 files changed, 83 insertions(+), 24 deletions(-) create mode 100644 packages/core/js-sdk/tsconfig.esm.json diff --git a/packages/core/js-sdk/package.json b/packages/core/js-sdk/package.json index ffdebe04caefc..06fc87f6435b4 100644 --- a/packages/core/js-sdk/package.json +++ b/packages/core/js-sdk/package.json @@ -1,15 +1,21 @@ { "name": "@medusajs/js-sdk", - "version": "0.0.1", + "version": "0.0.2", "description": "SDK for the Medusa API", "main": "dist/index.js", + "module": "dist/esm/index.js", + "types": "dist/index.d.ts", + "exports": { + "import": "./dist/esm/index.js", + "require": "./dist/index.js" + }, "repository": { "type": "git", - "url": "https://github.com/medusajs/medusa", + "url": "git+https://github.com/medusajs/medusa.git", "directory": "packages/core/js-sdk" }, "engines": { - "node": ">=18" + "node": ">=20" }, "publishConfig": { "access": "public" @@ -20,19 +26,21 @@ "author": "Medusa", "license": "MIT", "devDependencies": { - "@medusajs/types": "^1.11.16", - "cross-env": "^5.2.1", - "jest": "^29.7.0", - "msw": "^2.3.0", - "rimraf": "^5.0.1", - "typescript": "^5.1.6" + "@types/jest": "29.5.13", + "cross-env": "7.0.3", + "jest": "29.7.0", + "msw": "2.4.9", + "rimraf": "6.0.1", + "typescript": "5.6.2" }, "dependencies": { - "fetch-event-stream": "^0.1.5", - "qs": "^6.12.1" + "@medusajs/client-types": "0.2.12", + "@medusajs/types": "1.12.0-preview-20240918180312", + "fetch-event-stream": "0.1.5", + "qs": "6.13.0" }, "scripts": { - "build": "rimraf dist && tsc --build", + "build": "rimraf dist && tsc -p tsconfig.json && tsc -p tsconfig.esm.json", "test": "jest --passWithNoTests --runInBand --bail --forceExit", "watch": "tsc --build --watch" } diff --git a/packages/core/js-sdk/src/__tests__/client.spec.ts b/packages/core/js-sdk/src/__tests__/client.spec.ts index 9628c3c17a072..0cb3f28304210 100644 --- a/packages/core/js-sdk/src/__tests__/client.spec.ts +++ b/packages/core/js-sdk/src/__tests__/client.spec.ts @@ -29,7 +29,6 @@ const server = setupServer( } }), http.get(`${baseUrl}/replaced-header`, ({ request, params, cookies }) => { - request.headers if (request.headers.get("Content-Type") === "application/xml") { return HttpResponse.json({ test: "test", diff --git a/packages/core/js-sdk/src/admin/order.ts b/packages/core/js-sdk/src/admin/order.ts index 8f3286fec2348..5a697a3c8865c 100644 --- a/packages/core/js-sdk/src/admin/order.ts +++ b/packages/core/js-sdk/src/admin/order.ts @@ -3,8 +3,8 @@ import { HttpTypes, PaginatedResponse, SelectParams, + AdminOrderChangesResponse } from "@medusajs/types" -import { AdminOrderChangesResponse } from "@medusajs/types/src/http/order/admin/responses" import { Client } from "../client" import { ClientHeaders } from "../types" diff --git a/packages/core/js-sdk/src/client.ts b/packages/core/js-sdk/src/client.ts index 2365cf22a8dda..ca99c252745c0 100644 --- a/packages/core/js-sdk/src/client.ts +++ b/packages/core/js-sdk/src/client.ts @@ -43,14 +43,28 @@ const normalizeRequest = ( if (body && headers.get("content-type")?.includes("application/json")) { body = JSON.stringify(body) } - - return { + + let returnData = { ...init, - headers, // TODO: Setting this to "include" poses some security risks, as it will send cookies to any domain. We should consider making this configurable. credentials: config.auth?.type === "session" ? "include" : "omit", ...(body ? { body: body as RequestInit["body"] } : {}), - } as RequestInit + } as RequestInit; + + // Normalize headers to lowercase + if(returnData.headers) { + for (const [key, value] of Object.entries(returnData.headers)) { + headers.set(key, value); + } + } + + returnData.headers = {}; + + for(const [key, value] of headers.entries()) { + returnData.headers[key] = value; + } + + return returnData; } const normalizeResponse = async (resp: Response, reqHeaders: Headers) => { @@ -291,8 +305,6 @@ export class Client { return this.token } } - - return } protected getTokenStorageInfo_ = () => { diff --git a/packages/core/js-sdk/tsconfig.esm.json b/packages/core/js-sdk/tsconfig.esm.json new file mode 100644 index 0000000000000..fa80be6851b9d --- /dev/null +++ b/packages/core/js-sdk/tsconfig.esm.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable" + ], + "target": "ES6", + "outDir": "./dist/esm", + "esModuleInterop": true, + "declarationMap": true, + "declaration": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "sourceMap": true, + "noImplicitReturns": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "noImplicitThis": true, + "allowJs": true, + "skipLibCheck": true + }, + "include": [ + "./src/**/*" + ], + "exclude": [ + "./dist/**/*", + "./src/**/__tests__", + "./src/**/__mocks__", + "node_modules" + ] +} diff --git a/packages/core/js-sdk/tsconfig.json b/packages/core/js-sdk/tsconfig.json index 760c0184284bf..91d295a2cb4b2 100644 --- a/packages/core/js-sdk/tsconfig.json +++ b/packages/core/js-sdk/tsconfig.json @@ -1,12 +1,16 @@ { "compilerOptions": { - "lib": ["es2021"], - "target": "es2021", + "lib": [ + "ESNext", + "DOM", + "DOM.Iterable" + ], + "target": "ES2021", "outDir": "./dist", "esModuleInterop": true, "declarationMap": true, "declaration": true, - "module": "ES2020", + "module": "CommonJS", "moduleResolution": "Node", "emitDecoratorMetadata": true, "experimentalDecorators": true, @@ -18,7 +22,9 @@ "allowJs": true, "skipLibCheck": true }, - "include": ["./src/**/*"], + "include": [ + "./src/**/*" + ], "exclude": [ "./dist/**/*", "./src/**/__tests__", From aa3d8c4cf1564bfb7c424ee27b2dd37ac2f2d933 Mon Sep 17 00:00:00 2001 From: Oguz Ozcan Date: Sun, 22 Sep 2024 04:05:00 +0300 Subject: [PATCH 2/2] chore(js-sdk): Removed unnecessary comment --- packages/core/js-sdk/src/client.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/js-sdk/src/client.ts b/packages/core/js-sdk/src/client.ts index ca99c252745c0..71459c3fcec64 100644 --- a/packages/core/js-sdk/src/client.ts +++ b/packages/core/js-sdk/src/client.ts @@ -51,7 +51,6 @@ const normalizeRequest = ( ...(body ? { body: body as RequestInit["body"] } : {}), } as RequestInit; - // Normalize headers to lowercase if(returnData.headers) { for (const [key, value] of Object.entries(returnData.headers)) { headers.set(key, value);