Skip to content

Commit

Permalink
Merge branch 'fix-ignore-fields' into 'dev'
Browse files Browse the repository at this point in the history
create axios package

See merge request ergo/rosen-bridge/network-client!23
  • Loading branch information
vorujack committed Apr 29, 2024
2 parents 112ba73 + 1c55ac7 commit 48bd449
Show file tree
Hide file tree
Showing 20 changed files with 893 additions and 993 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ node_modules
yarn.lock
dist
.nyc_output
# TypeScript cache
*.tsbuildinfo
3 changes: 3 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ installation:
paths:
- node_modules
- clients/*/node_modules
- packages/*/node_modules
script:
- npm ci

Expand All @@ -26,6 +27,8 @@ build:
- node_modules
- clients/*/node_modules
- clients/*/dist
- packages/*/node_modules
- packages/*/dist
script:
- npm run build

Expand Down
6 changes: 2 additions & 4 deletions clients/cardano-koios/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@rosen-clients/cardano-koios",
"version": "2.0.1",
"version": "2.0.2",
"description": "A client library for Cardano Koios",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
Expand Down Expand Up @@ -45,8 +45,6 @@
"dist"
],
"dependencies": {
"@types/json-bigint": "^1.0.1",
"axios": "^1.3.4",
"json-bigint": "^1.0.0"
"@rosen-clients/axios": "^0.1.0"
}
}
18 changes: 8 additions & 10 deletions clients/cardano-koios/src/api/koiosAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -298,18 +298,16 @@ import {
bigIntsDatumInfo,
} from '../types';

import { createAxiosInstance, JsonFieldBigintFactory } from '../axios';

// eslint-disable-next-line
type SecondParameter<T extends (...args: any) => any> = T extends (
config: any,
args: infer P
) => any
? P
: never;
import {
createAxiosInstanceWithHeaders,
JsonFieldBigintFactory,
} from '../axios';

export const getKoiosAPI = (url: string, authToken?: string) => {
const instance = createAxiosInstance(url, authToken);
const instance = createAxiosInstanceWithHeaders(url, {
Authorization: `Bearer ${authToken}`,
});

/**
* Get the tip info about the latest block seen by chain
* @summary Query Chain Tip
Expand Down
66 changes: 8 additions & 58 deletions clients/cardano-koios/src/axios.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,9 @@
import Axios, { AxiosRequestConfig } from 'axios';
import JsonBigintFactory from 'json-bigint';

const JsonBigInt = JsonBigintFactory({
alwaysParseAsBig: false,
useNativeBigInt: true,
});

const transformBigInt = (obj: any, bigIntObj: any, field: string): any => {
if (Array.isArray(obj)) {
return (obj as unknown as Array<JSON>).map((row, index) => {
return transformBigInt(
row,
(bigIntObj as unknown as Array<JSON>)[index],
field
);
}) as unknown as JSON;
}
if (!Object.hasOwn(obj, field.split('.')[0])) {
return {
...obj,
};
}
if (field.indexOf('.') !== -1) {
const subKeys = field.split('.');
return {
...obj,
[subKeys[0]]: transformBigInt(
obj[subKeys[0]],
bigIntObj[subKeys[0]],
subKeys.slice(1).join('.')
),
};
}
return { ...obj, [field]: BigInt(bigIntObj[field]) };
};
export const JsonFieldBigintFactory = (fields: Array<string>) => {
return (data: any) => {
let dataJson = JSON.parse(data);
const dataBigInt = JsonBigInt.parse(data);
fields.forEach((field) => {
dataJson = transformBigInt(dataJson, dataBigInt, field);
});
return dataJson;
};
};

export const axiosInstance = Axios.create();

export const createAxiosInstance = (url: string, authToken?: string) => {
const instance = Axios.create();
instance.defaults.baseURL = url;
if (authToken) {
instance.defaults.headers.common['Authorization'] = `Bearer ${authToken}`;
}
return <T>(config: AxiosRequestConfig): Promise<T> => {
return instance.request<T>(config).then((response) => response.data);
};
import { createAxiosInstanceWithHeaders } from '@rosen-clients/axios';
export {
JsonFieldBigintFactory,
createAxiosInstanceWithHeaders,
} from '@rosen-clients/axios';

export const createAxiosInstance = (url: string) => {
return createAxiosInstanceWithHeaders(url, {});
};
3 changes: 2 additions & 1 deletion clients/cardano-koios/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
"outDir": "dist",
"rootDir": "./"
},
"include": ["src"]
"include": ["src"],
"references": [{ "path": "../../packages/axios/tsconfig.build.json" }]
}
6 changes: 2 additions & 4 deletions clients/ergo-explorer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@rosen-clients/ergo-explorer",
"version": "1.1.0",
"version": "1.1.1",
"description": "A client library for Ergo Explorer",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
Expand Down Expand Up @@ -43,8 +43,6 @@
"dist"
],
"dependencies": {
"@types/json-bigint": "^1.0.1",
"axios": "^1.3.4",
"json-bigint": "^1.0.0"
"@rosen-clients/axios": "^0.1.0"
}
}
54 changes: 3 additions & 51 deletions clients/ergo-explorer/src/axios.ts
Original file line number Diff line number Diff line change
@@ -1,54 +1,6 @@
import Axios, { AxiosRequestConfig } from 'axios';
import JsonBigintFactory from 'json-bigint';

const JsonBigInt = JsonBigintFactory({
alwaysParseAsBig: false,
useNativeBigInt: true,
});

const transformBigInt = (obj: any, bigIntObj: any, field: string): any => {
if (Array.isArray(obj)) {
return (obj as unknown as Array<JSON>).map((row, index) => {
return transformBigInt(
row,
(bigIntObj as unknown as Array<JSON>)[index],
field
);
}) as unknown as JSON;
}
if (!Object.hasOwn(obj, field.split('.')[0])) {
return {
...obj,
};
}
if (field.indexOf('.') !== -1) {
const subKeys = field.split('.');
return {
...obj,
[subKeys[0]]: transformBigInt(
obj[subKeys[0]],
bigIntObj[subKeys[0]],
subKeys.slice(1).join('.')
),
};
}
return { ...obj, [field]: BigInt(bigIntObj[field]) };
};
export const JsonFieldBigintFactory = (fields: Array<string>) => {
return (data: any) => {
let dataJson = JSON.parse(data);
const dataBigInt = JsonBigInt.parse(data);
fields.forEach((field) => {
dataJson = transformBigInt(dataJson, dataBigInt, field);
});
return dataJson;
};
};
import { createAxiosInstanceWithHeaders } from '@rosen-clients/axios';
export { JsonFieldBigintFactory } from '@rosen-clients/axios';

export const createAxiosInstance = (url: string) => {
const instance = Axios.create();
instance.defaults.baseURL = url;
return <T>(config: AxiosRequestConfig): Promise<T> => {
return instance.request<T>(config).then((response) => response.data);
};
return createAxiosInstanceWithHeaders(url, {});
};
3 changes: 2 additions & 1 deletion clients/ergo-explorer/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
"outDir": "dist",
"rootDir": "./"
},
"include": ["src"]
"include": ["src"],
"references": [{ "path": "../../packages/axios/tsconfig.build.json" }]
}
6 changes: 2 additions & 4 deletions clients/ergo-node/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@rosen-clients/ergo-node",
"version": "1.1.0",
"version": "1.1.1",
"description": "A client library for Ergo Node",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
Expand Down Expand Up @@ -40,8 +40,6 @@
"dist"
],
"dependencies": {
"@types/json-bigint": "^1.0.1",
"axios": "^1.3.4",
"json-bigint": "^1.0.0"
"@rosen-clients/axios": "^0.1.0"
}
}
56 changes: 3 additions & 53 deletions clients/ergo-node/src/axios.ts
Original file line number Diff line number Diff line change
@@ -1,56 +1,6 @@
import Axios, { AxiosRequestConfig } from 'axios';
import JsonBigintFactory from 'json-bigint';

const JsonBigInt = JsonBigintFactory({
alwaysParseAsBig: false,
useNativeBigInt: true,
});

const transformBigInt = (obj: any, bigIntObj: any, field: string): any => {
if (Array.isArray(obj)) {
return (obj as unknown as Array<JSON>).map((row, index) => {
return transformBigInt(
row,
(bigIntObj as unknown as Array<JSON>)[index],
field
);
}) as unknown as JSON;
}
if (!Object.hasOwn(obj, field.split('.')[0])) {
return {
...obj,
};
}
if (field.indexOf('.') !== -1) {
const subKeys = field.split('.');
return {
...obj,
[subKeys[0]]: transformBigInt(
obj[subKeys[0]],
bigIntObj[subKeys[0]],
subKeys.slice(1).join('.')
),
};
}
return { ...obj, [field]: BigInt(bigIntObj[field]) };
};
export const JsonFieldBigintFactory = (fields: Array<string>) => {
return (data: any) => {
let dataJson = JSON.parse(data);
const dataBigInt = JsonBigInt.parse(data);
fields.forEach((field) => {
dataJson = transformBigInt(dataJson, dataBigInt, field);
});
return dataJson;
};
};

export const axiosInstance = Axios.create();
import { createAxiosInstanceWithHeaders } from '@rosen-clients/axios';
export { JsonFieldBigintFactory } from '@rosen-clients/axios';

export const createAxiosInstance = (url: string) => {
const instance = Axios.create();
instance.defaults.baseURL = url;
return <T>(config: AxiosRequestConfig): Promise<T> => {
return instance.request<T>(config).then((response) => response.data);
};
return createAxiosInstanceWithHeaders(url, {});
};
3 changes: 2 additions & 1 deletion clients/ergo-node/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
"outDir": "dist",
"rootDir": "./"
},
"include": ["src"]
"include": ["src"],
"references": [{ "path": "../../packages/axios/tsconfig.build.json" }]
}
Loading

0 comments on commit 48bd449

Please sign in to comment.