Skip to content

Commit

Permalink
chore(client-sdk): refactor as dependencies into a single client package
Browse files Browse the repository at this point in the history
  • Loading branch information
ajimae committed Jun 11, 2021
1 parent 5affa7a commit 1dbe0cf
Show file tree
Hide file tree
Showing 42 changed files with 95 additions and 347 deletions.
4 changes: 1 addition & 3 deletions packages/sdk-client/jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,13 @@ module.exports = {
verbose: true,
coverageThreshold: {
global: {
// branches: 100,
// lines: 100,
// functions: 100,
statements: 90
}
},
globals: {
'ts-jest': {
diagnostics: false,
ignoreCodes: ["TS7019", "TS2345", "TS7006", "TS7053"]
}
}
}
28 changes: 23 additions & 5 deletions packages/sdk-client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,27 @@
"name": "@commercetools/sdk-client",
"version": "3.0.0",
"description": "commercetools TypeScript SDK client for Platform API",
"keywords": ["commercetools", "sdk", "typescript", "api", "client"],
"keywords": [
"commercetools",
"sdk",
"typescript",
"client",
"middleware",
"http",
"oauth",
"auth"
],
"author": "Chukwuemeka Ajima <meeky.ae@gmail.com>",
"homepage": "https://github.com/commercetools/commercetools-sdk-typescript",
"license": "MIT",
"main": "dist/index.js",
"directories": {
"lib": "lib",
"test": "tests"
"test": "test"
},
"files": ["dist"],
"files": [
"dist"
],
"publishConfig": {
"access": "public"
},
Expand All @@ -22,18 +33,25 @@
"bugs": {
"url": "https://github.com/commercetools/commercetools-sdk-typescript/issues"
},
"dependencies": {
"@commercetools/typescript-sdk": "^0.0.22",
"node-fetch": "^2.6.1"
},
"devDependencies": {
"@types/jest": "^26.0.23",
"@types/node": "^15.6.1",
"@types/node": "^15.9.0",
"abort-controller": "3.0.0",
"common-tags": "^1.8.0",
"jest": "^27.0.3",
"jest-junit": "^12.1.0",
"nock": "12.0.3",
"rimraf": "^3.0.2",
"ts-jest": "^27.0.2",
"typescript": "^4.3.2"
},
"scripts": {
"prebuild": "rimraf dist/**",
"build": "rimraf dist && tsc --listFiles",
"build": "rimraf dist && tsc",
"test": "jest"
}
}
17 changes: 16 additions & 1 deletion packages/sdk-client/src/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,16 @@
export { default as createClient } from './client'
// clients
export { default as createClient } from './sdk-client/client'
export { default as getErrorByCode } from './sdk-client/errors'
export * as errors from './sdk-client/errors'

// auth
export { default as createAuthForClientCredentialsFlow } from './sdk-middleware-auth/client-credentials-flow'
export { default as createAuthForPasswordFlow } from './sdk-middleware-auth/password-flow'
export { default as createAuthForRefreshTokenFlow } from './sdk-middleware-auth/refresh-token-flow'
export { default as createAuthForAnonymousSessionFlow } from './sdk-middleware-auth/anonymous-session-flow'
export { default as createAuthWithExistingToken } from './sdk-middleware-auth/existing-token'
// http
export { default as createHttpClient } from './sdk-middleware-http/http'

// platfrom sdk
export { createApiBuilderFromCtpClient } from '@commercetools/typescript-sdk'
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
ProcessOptions,
SuccessResult,
ClientResponse,
} from '../../../types/sdk'
} from '../../../../types/sdk'
import validate from './validate'

function compose(...funcs: Array<Function>): Function {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { JsonObject } from "../../../types/sdk"

// @ts-nocheck
import { JsonObject } from "../../../../types/sdk"

function defineError(this: any, statusCode: number, message: string, meta: JsonObject<any> = {}) {
this.status = this.statusCode = this.code = statusCode
Expand Down
3 changes: 3 additions & 0 deletions packages/sdk-client/src/sdk-client/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export { default as createClient } from './client'
export { default as getErrorByCode } from './errors'
export * as errors from './errors'
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import METHODS from './allowed-methods'
import { ClientRequest } from '../../../types/sdk'
import { ClientRequest } from '../../../../types/sdk'

/**
* @throws {Error}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
MiddlewareResponse,
Next,
Task,
} from '../../../types/sdk'
} from '../../../../types/sdk'

import { buildRequestForAnonymousSessionFlow } from './build-requests'
import authMiddlewareBase from './base-auth-flow'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
PasswordAuthMiddlewareOptions,
AuthMiddlewareOptions,
executeRequestOptions,
} from '../../../types/sdk'
} from '../../../../types/sdk'
import { buildRequestForRefreshTokenFlow } from './build-requests'

function mergeAuthHeader(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {
AuthMiddlewareOptions,
PasswordAuthMiddlewareOptions,
RefreshAuthMiddlewareOptions,
} from '../../../types/sdk'
} from '../../../../types/sdk'

interface IBuiltRequestParams {
basicAuth: string
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { AuthMiddlewareOptions, TokenCacheOptions } from '../../../types/sdk'
import { AuthMiddlewareOptions, TokenCacheOptions } from '../../../../types/sdk'

export default function buildTokenCacheKey(
options: AuthMiddlewareOptions
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
MiddlewareResponse,
Next,
Task,
} from '../../../types/sdk'
} from '../../../../types/sdk'

import { buildRequestForClientCredentialsFlow } from './build-requests'
import buildTokenCacheKey from './build-token-cache-key'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
MiddlewareResponse,
ExistingTokenMiddlewareOptions,
Next,
} from '../../../types/sdk'
} from '../../../../types/sdk'

export default function createAuthMiddlewareWithExistingToken(
authorization: string = '',
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
MiddlewareResponse,
Next,
Task,
} from '../../../types/sdk'
} from '../../../../types/sdk'

import { buildRequestForPasswordFlow } from './build-requests'
import authMiddlewareBase from './base-auth-flow'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
MiddlewareResponse,
Next,
Task,
} from '../../../types/sdk'
} from '../../../../types/sdk'

import { buildRequestForRefreshTokenFlow } from './build-requests'
import authMiddlewareBase from './base-auth-flow'
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// @ts-nocheck
import {
JsonObject,
HttpErrorType,
Expand All @@ -8,22 +9,18 @@ import {
Next,
MethodType,
ClientRequest,
} from '../../../types/sdk'
} from '../../../../types/sdk'

import getErrorByCode, { NetworkError, HttpError } from './errors'
import getErrorByCode, { NetworkError, HttpError } from '../sdk-client/errors'
import parseHeaders from './parse-headers'

type ResponseErrorType = {
fn: new () => unknown
}

function createError({ statusCode, message, ...rest }: JsonObject<any>): HttpErrorType {
let errorMessage = message || 'Unexpected non-JSON error response'
if (statusCode === 404)
errorMessage = `URI not found: ${rest.originalRequest.uri}`

const ResponseError: ResponseErrorType = getErrorByCode(statusCode)
if (ResponseError) return new ResponseError(errorMessage, rest)
const ResponseError = getErrorByCode(statusCode)
if (ResponseError) return new ResponseError(errorMessage, rest);
return new HttpError(statusCode, errorMessage, rest)
}

Expand Down
1 change: 1 addition & 0 deletions packages/sdk-client/src/sdk-middleware-http/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export { default as createHttpMiddleware } from './http'
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { JsonObject } from "../../../types/sdk"
import { JsonObject } from "../../../../types/sdk"

export default function parseHeaders(headers: JsonObject<any>): JsonObject<string> {
if (headers.raw)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { createAuthMiddlewareForAnonymousSessionFlow } from '../src'
import { createAuthMiddlewareForAnonymousSessionFlow } from '../../src/sdk-middleware-auth'

import authMiddlewareBase from '../src/base-auth-flow'
import authMiddlewareBase from '../../src/sdk-middleware-auth/base-auth-flow'

jest.mock('../src/base-auth-flow')
jest.mock('../../src/sdk-middleware-auth/base-auth-flow')

function createTestRequest(options) {
return {
Expand Down Expand Up @@ -48,7 +48,7 @@ describe('Anonymous Session Flow', () => {
)
expect(actualParams.basicAuth).toBe('MTIzOnNlY3JldA==')
expect(authMiddlewareBase).toHaveBeenCalledTimes(1)
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
resolve(null)
}
const middlewareOptions = createTestMiddlewareOptions(null)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import nock from 'nock'
import fetch from 'node-fetch'
import createAuthMiddlewareBase from '../src/base-auth-flow'
import * as buildRequests from '../src/build-requests'
import store from '../src/utils'
import createAuthMiddlewareBase from '../../src/sdk-middleware-auth/base-auth-flow'
import * as buildRequests from '../../src/sdk-middleware-auth/build-requests'
import store from '../../src/sdk-middleware-auth/utils'

function createTestRequest(options) {
return {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import {
buildRequestForPasswordFlow,
buildRequestForRefreshTokenFlow,
buildRequestForAnonymousSessionFlow,
} from '../src/build-requests'
import * as scopes from '../src/scopes'
} from '../../src/sdk-middleware-auth/build-requests'
import * as scopes from '../../src/sdk-middleware-auth/scopes'

const allScopes = Object.keys(scopes).map(key => scopes[key])

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createAuthMiddlewareForClientCredentialsFlow } from '../src'
import authMiddlewareBase from '../src/base-auth-flow'
import { createAuthMiddlewareForClientCredentialsFlow } from '../../src/sdk-middleware-auth'
import authMiddlewareBase from '../../src/sdk-middleware-auth/base-auth-flow'

jest.mock('../src/base-auth-flow')
jest.mock('../../src/sdk-middleware-auth/base-auth-flow')

function createTestRequest(options) {
return {
Expand Down Expand Up @@ -30,7 +30,7 @@ describe('Client Crentials Flow', () => {
jest.resetAllMocks()
})
afterAll(() => {
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
})
test('should call the base-auth-flow method with the right params', () =>
new Promise((resolve, reject) => {
Expand Down Expand Up @@ -58,7 +58,7 @@ describe('Client Crentials Flow', () => {
})
expect(authMiddlewareBase).toHaveBeenCalledTimes(1)
resolve(null)
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
}
const middlewareOptions = createTestMiddlewareOptions(null)
const authMiddleware = createAuthMiddlewareForClientCredentialsFlow(
Expand Down Expand Up @@ -98,7 +98,7 @@ describe('Client Crentials Flow', () => {
})
expect(authMiddlewareBase).toHaveBeenCalledTimes(1)
resolve(null)
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
}
const middlewareOptions = createTestMiddlewareOptions({
fetch,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createAuthMiddlewareWithExistingToken } from '../src'
import { createAuthMiddlewareWithExistingToken } from '../../src/sdk-middleware-auth'

describe('Existing Token', () => {
const response = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { createAuthMiddlewareForPasswordFlow } from '../src'
import { createAuthMiddlewareForPasswordFlow } from '../../src/sdk-middleware-auth'

import authMiddlewareBase from '../src/base-auth-flow'
import authMiddlewareBase from '../../src/sdk-middleware-auth/base-auth-flow'

/**
* required to be at the root because Jest hoists it above all requires,
* if in any method like `beforeAll`,
* it will be hoisted within the scope of that method
*/
jest.mock('../src/base-auth-flow')
jest.mock('../../src/sdk-middleware-auth/base-auth-flow')

function createTestRequest(options) {
return {
Expand Down Expand Up @@ -37,7 +37,7 @@ function createTestMiddlewareOptions(options) {

describe('Password Flow', () => {
afterAll(() => {
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
})
test('should call the base-auth-flow method with the right params', () =>
new Promise((resolve, reject) => {
Expand All @@ -60,7 +60,7 @@ describe('Password Flow', () => {
basicAuth: 'MTIzOnNlY3JldA==',
})
expect(authMiddlewareBase).toHaveBeenCalledTimes(1)
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
resolve(null)
}
const middlewareOptions = createTestMiddlewareOptions(null)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createAuthMiddlewareForRefreshTokenFlow } from '../src'
import authMiddlewareBase from '../src/base-auth-flow'
import { createAuthMiddlewareForRefreshTokenFlow } from '../../src/sdk-middleware-auth'
import authMiddlewareBase from '../../src/sdk-middleware-auth/base-auth-flow'

jest.mock('../src/base-auth-flow')
jest.mock('../../src/sdk-middleware-auth/base-auth-flow')

function createTestRequest(options) {
return {
Expand All @@ -28,7 +28,7 @@ function createTestMiddlewareOptions(options) {

describe('Refresh Token Flow', () => {
afterAll(() => {
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
})
test('should call the base-auth-flow method with the right params', () =>
new Promise((resolve, reject) => {
Expand All @@ -52,7 +52,7 @@ describe('Refresh Token Flow', () => {
})
expect(authMiddlewareBase).toHaveBeenCalledTimes(1)
resolve(null)
jest.unmock('../src/base-auth-flow')
jest.unmock('../../src/sdk-middleware-auth/base-auth-flow')
}
const middlewareOptions = createTestMiddlewareOptions(null)
const authMiddleware = createAuthMiddlewareForRefreshTokenFlow(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import qs from 'querystring'
import { createClient } from '../src'
import { createClient } from '../../src/sdk-client'
import {
ClientRequest,
HttpErrorType,
MiddlewareResponse,
} from '../../../types/sdk'
} from '../../../../types/sdk'

const createPayloadResult = (tot, startingId = 0) => ({
count: tot,
Expand Down
Loading

0 comments on commit 1dbe0cf

Please sign in to comment.