From 1913a84f1e3074eec3ae2b26d80fd532cd29a69c Mon Sep 17 00:00:00 2001 From: Aleksandr Kraiz Date: Mon, 28 Nov 2022 13:43:55 +0400 Subject: [PATCH] Types improvements --- package-lock.json | 46 +++++++++---------- package.json | 8 ++-- src/constants/index.ts | 1 + src/constants/networkCodes.ts | 1 + src/services/OrionAggregator/index.ts | 3 +- .../schemas/atomicSwapHistorySchema.ts | 3 +- src/services/OrionBlockchain/index.ts | 5 +- src/utils/typeHelpers.ts | 2 +- 8 files changed, 37 insertions(+), 32 deletions(-) create mode 100644 src/constants/networkCodes.ts diff --git a/package-lock.json b/package-lock.json index 34e0599..9b5e2ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@orionprotocol/sdk", - "version": "0.15.14", + "version": "0.15.15", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@orionprotocol/sdk", - "version": "0.15.14", + "version": "0.15.15", "license": "ISC", "dependencies": { "@ethersproject/abstract-signer": "^5.6.0", @@ -18,7 +18,7 @@ "crypto-browserify": "^3.12.0", "ethers": "^5.6.2", "isomorphic-unfetch": "^3.1.0", - "isomorphic-ws": "^4.0.1", + "isomorphic-ws": "^5.0.0", "just-clone": "^5.0.1", "neverthrow": "^4.3.1", "stream-browserify": "^3.0.0", @@ -28,7 +28,7 @@ "zod": "^3.17.3" }, "devDependencies": { - "@types/node": "^17.0.23", + "@types/node": "^18.11.9", "@types/socket.io-client": "1.4.33", "@types/uuid": "^8.3.4", "@types/ws": "^8.5.3", @@ -43,7 +43,7 @@ "husky": "^7.0.4", "jest": "^27.5.1", "ts-loader": "^9.3.0", - "typescript": "^4.7.2", + "typescript": "^4.9.3", "webpack": "^5.72.0", "webpack-cli": "^4.9.2" } @@ -2343,9 +2343,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "node_modules/@types/prettier": { @@ -6191,9 +6191,9 @@ } }, "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "peerDependencies": { "ws": "*" } @@ -10146,9 +10146,9 @@ } }, "node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12319,9 +12319,9 @@ "dev": true }, "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "version": "18.11.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, "@types/prettier": { @@ -15266,9 +15266,9 @@ } }, "isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "requires": {} }, "istanbul-lib-coverage": { @@ -18220,9 +18220,9 @@ } }, "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.3.tgz", + "integrity": "sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index ee7e3cb..53c1eb0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.15.15", + "version": "0.15.16", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", @@ -37,7 +37,7 @@ "url": "https://github.com/orionprotocol/sdk/issues" }, "devDependencies": { - "@types/node": "^17.0.23", + "@types/node": "^18.11.9", "@types/socket.io-client": "1.4.33", "@types/uuid": "^8.3.4", "@types/ws": "^8.5.3", @@ -52,7 +52,7 @@ "husky": "^7.0.4", "jest": "^27.5.1", "ts-loader": "^9.3.0", - "typescript": "^4.7.2", + "typescript": "^4.9.3", "webpack": "^5.72.0", "webpack-cli": "^4.9.2" }, @@ -66,7 +66,7 @@ "crypto-browserify": "^3.12.0", "ethers": "^5.6.2", "isomorphic-unfetch": "^3.1.0", - "isomorphic-ws": "^4.0.1", + "isomorphic-ws": "^5.0.0", "just-clone": "^5.0.1", "neverthrow": "^4.3.1", "stream-browserify": "^3.0.0", diff --git a/src/constants/index.ts b/src/constants/index.ts index 4d7fcb9..7eadf35 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -2,6 +2,7 @@ export { default as cancelOrderTypes } from './cancelOrderTypes'; export { default as orderStatuses } from './orderStatuses'; export { default as orderTypes } from './orderTypes'; export { default as subOrderStatuses } from './subOrderStatuses'; +export { default as networkCodes } from './networkCodes'; export * from './chains'; export * from './precisions'; diff --git a/src/constants/networkCodes.ts b/src/constants/networkCodes.ts new file mode 100644 index 0000000..4f8b514 --- /dev/null +++ b/src/constants/networkCodes.ts @@ -0,0 +1 @@ +export default ['ftm', 'bsc', 'eth', 'polygon', 'okc'] as const; diff --git a/src/services/OrionAggregator/index.ts b/src/services/OrionAggregator/index.ts index ecf1169..ec0c38b 100644 --- a/src/services/OrionAggregator/index.ts +++ b/src/services/OrionAggregator/index.ts @@ -14,6 +14,7 @@ import { pairConfigSchema } from './schemas'; import { aggregatedOrderbookSchema, exchangeOrderbookSchema, } from './schemas/aggregatedOrderbookSchema'; +import networkCodes from '../../constants/networkCodes'; class OrionAggregator { private readonly apiUrl: string; @@ -222,7 +223,7 @@ class OrionAggregator { */ placeAtomicSwap = ( secretHash: string, - sourceNetworkCode: string, + sourceNetworkCode: Uppercase, ) => fetchWithValidation( `${this.apiUrl}/api/v1/atomic-swap`, placeAtomicSwapSchema, diff --git a/src/services/OrionAggregator/schemas/atomicSwapHistorySchema.ts b/src/services/OrionAggregator/schemas/atomicSwapHistorySchema.ts index c030a52..7ae7d21 100644 --- a/src/services/OrionAggregator/schemas/atomicSwapHistorySchema.ts +++ b/src/services/OrionAggregator/schemas/atomicSwapHistorySchema.ts @@ -1,4 +1,5 @@ import { z } from 'zod'; +import networkCodes from '../../../constants/networkCodes'; import redeemOrderSchema from './redeemOrderSchema'; export const atomicSwapHistorySchema = z.array(z.object({ @@ -11,7 +12,7 @@ export const atomicSwapHistorySchema = z.array(z.object({ expiration: z.number(), secretHash: z.string(), used: z.boolean(), - sourceNetworkCode: z.string(), + sourceNetworkCode: z.enum(networkCodes), }), redeemOrder: redeemOrderSchema, status: z.enum(['SETTLED', 'EXPIRED', 'ACTIVE']), diff --git a/src/services/OrionBlockchain/index.ts b/src/services/OrionBlockchain/index.ts index bc40964..59bef09 100644 --- a/src/services/OrionBlockchain/index.ts +++ b/src/services/OrionBlockchain/index.ts @@ -14,6 +14,7 @@ import { import redeemOrderSchema from '../OrionAggregator/schemas/redeemOrderSchema'; import { sourceAtomicHistorySchema, targetAtomicHistorySchema } from './schemas/atomicHistorySchema'; import { makePartial } from '../../utils'; +import { networkCodes } from '../../constants'; interface IAdminAuthHeaders { auth: string; @@ -37,7 +38,7 @@ type AtomicSwapHistoryBaseQuery = { receiver?: string, used?: 0 | 1, page?: number, - sourceNetworkCode?: string, + sourceNetworkCode?: 'ftm' | 'bsc' | 'eth' | 'polygon' | 'okc', } type AtomicSwapHistorySourceQuery = AtomicSwapHistoryBaseQuery & { @@ -95,7 +96,7 @@ class OrionBlockchain { return `${this.apiUrl}/`; } - private getSummaryRedeem = (brokerAddress: string, unshifted?: 1 | 0, sourceNetworkCode?: string) => { + private getSummaryRedeem = (brokerAddress: string, unshifted?: 1 | 0, sourceNetworkCode?: typeof networkCodes[number]) => { const url = new URL(`${this.apiUrl}/api/atomic/summary-redeem/${brokerAddress}`); if (unshifted) { url.searchParams.append('unshifted', unshifted.toString()); diff --git a/src/utils/typeHelpers.ts b/src/utils/typeHelpers.ts index 72faee1..fde9b1f 100644 --- a/src/utils/typeHelpers.ts +++ b/src/utils/typeHelpers.ts @@ -26,7 +26,7 @@ export function isUnknownObject(x: unknown): x is { return x !== null && typeof x === 'object'; } -export function isKeyOfObject( +export function isKeyOfObject>( key: string | number | symbol, obj: T, ): key is keyof T {