Skip to content

Commit

Permalink
Merge pull request #499 from InjectiveLabs/feat/ofac-list
Browse files Browse the repository at this point in the history
Feat/OFAC list
  • Loading branch information
ThomasRalee committed Sep 6, 2024
2 parents a6386da + 0f4bdb1 commit 2ca3eb5
Show file tree
Hide file tree
Showing 25 changed files with 453 additions and 328 deletions.
39 changes: 39 additions & 0 deletions etc/ofac.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/* eslint-disable no-console */
const { dirname } = require('node:path')
const { mkdirSync, existsSync, writeFileSync } = require('node:fs')

const storeJsonFile = (path, data) => {
const dirPath = dirname(path)

if (!existsSync(dirPath)) {
try {
mkdirSync(dirPath, { recursive: true })
} catch (e) {
console.log('❌❌❌ Error creating directory', e)
}
}

try {
writeFileSync(path, data)
} catch (e) {
console.error(`❌❌❌ Error creating JSON file: ${path}`, e)
}
}

const fetchOfac = async () => {
const response = await fetch(
'https://raw.githubusercontent.com/InjectiveLabs/injective-lists/master/wallets/ofac.json',
)
const wallets = await response.text()

try {
storeJsonFile(`src/json/ofac.ts`, `export const ofacWallets = ${wallets}`)

console.log(`✅✅✅ OFAC list fetched`)
} catch (e) {
console.error(`❌❌❌ OFAC list NOT fetched`)
throw e
}
}

;(async () => await fetchOfac())()
1 change: 1 addition & 0 deletions packages/exceptions/src/types/modules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export enum ChainErrorModule {
Wasm = 'chain-wasm',
WasmX = 'chain-wasmx',
Tendermint = 'chain-tendermint',
Permissions = 'chain-permissions'
}

export enum IndexerErrorModule {
Expand Down
1 change: 1 addition & 0 deletions packages/sdk-ts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
},
"scripts": {
"postinstall": "link-module-alias",
"fetch:ofac": "node --experimental-fetch ./../../etc/ofac.js",
"build": "tsc --build --force tsconfig.build.json && tsc --build --force tsconfig.build.esm.json && yarn build:post && link-module-alias",
"build:watch": "tsc --build -w tsconfig.build.json && tsc -w --build tsconfig.build.esm.json && yarn build:post && link-module-alias",
"build:post": "shx cp ../../etc/stub/package.json.stub dist/cjs/package.json && shx cp ../../etc/stub/package.esm.json.stub dist/esm/package.json",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ const endpoints = getNetworkEndpoints(Network.MainnetSentry)
const chainGrpcPermissionsApi = new ChainGrpcPermissionsApi(endpoints.grpc)
const injectiveAddress = mockFactory.injectiveAddress


describe('ChainGrpcPermissionsApi', () => {
test('fetchModuleParams', async () => {
try {
Expand Down Expand Up @@ -57,7 +56,7 @@ describe('ChainGrpcPermissionsApi', () => {
try {
const response = await chainGrpcPermissionsApi.fetchAddressesByRole({
denom: INJ_DENOM,
role: "role",
role: 'role',
})

expect(response).toBeDefined()
Expand All @@ -70,7 +69,8 @@ describe('ChainGrpcPermissionsApi', () => {
)
} catch (e) {
console.error(
'chainGrpcPermissionsApi.fetchAddressesByRoles => ' + (e as any).message,
'chainGrpcPermissionsApi.fetchAddressesByRoles => ' +
(e as any).message,
)
}
})
Expand Down Expand Up @@ -116,7 +116,7 @@ describe('ChainGrpcPermissionsApi', () => {
test('fetchVouchersForAddress', async () => {
try {
const response = await chainGrpcPermissionsApi.fetchVouchersForAddress({
address: injectiveAddress
address: injectiveAddress,
})

expect(response).toBeDefined()
Expand All @@ -129,7 +129,8 @@ describe('ChainGrpcPermissionsApi', () => {
)
} catch (e) {
console.error(
'chainGrpcPermissionsApi.fetchVouchersForAddress => ' + (e as any).message,
'chainGrpcPermissionsApi.fetchVouchersForAddress => ' +
(e as any).message,
)
}
})
Expand Down
44 changes: 20 additions & 24 deletions packages/sdk-ts/src/client/chain/grpc/ChainGrpcPermissionsApi.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import {
GrpcUnaryRequestException,
UnspecifiedErrorCode,
GrpcUnaryRequestException,
UnspecifiedErrorCode,
} from '@injectivelabs/exceptions'
import { InjectivePermissionsV1Beta1Query } from '@injectivelabs/core-proto-ts'
import BaseGrpcConsumer from '../../base/BaseGrpcConsumer'
import { ChainGrpcPermissionsTransformer } from '../transformers'
import { ChainModule } from '../types'

/**
* @category Chain Grpc API
*/
export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
//protected module: string = ChainModule.
protected module: string = ChainModule.Permissions

protected client: InjectivePermissionsV1Beta1Query.QueryClientImpl

Expand All @@ -22,14 +23,9 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
)
}

async fetchAddressesByRole({
denom,
role,
}: {
denom: string
role: string
}) {
const request = InjectivePermissionsV1Beta1Query.QueryAddressesByRoleRequest.create()
async fetchAddressesByRole({ denom, role }: { denom: string; role: string }) {
const request =
InjectivePermissionsV1Beta1Query.QueryAddressesByRoleRequest.create()

request.denom = denom
request.role = role
Expand Down Expand Up @@ -65,7 +61,8 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
address: string
denom: string
}) {
const request = InjectivePermissionsV1Beta1Query.QueryAddressRolesRequest.create()
const request =
InjectivePermissionsV1Beta1Query.QueryAddressRolesRequest.create()

request.address = address
request.denom = denom
Expand Down Expand Up @@ -95,12 +92,13 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
}

async fetchAllNamespaces() {
const request = InjectivePermissionsV1Beta1Query.QueryAllNamespacesRequest.create()
const request =
InjectivePermissionsV1Beta1Query.QueryAllNamespacesRequest.create()

try {
const response =
await this.retry<InjectivePermissionsV1Beta1Query.QueryAllNamespacesResponse>(() =>
this.client.AllNamespaces(request, this.metadata),
await this.retry<InjectivePermissionsV1Beta1Query.QueryAllNamespacesResponse>(
() => this.client.AllNamespaces(request, this.metadata),
)

return ChainGrpcPermissionsTransformer.allNamespacesResponseToAllNamespaces(
Expand All @@ -126,8 +124,8 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {

try {
const response =
await this.retry<InjectivePermissionsV1Beta1Query.QueryParamsResponse>(() =>
this.client.Params(request, this.metadata),
await this.retry<InjectivePermissionsV1Beta1Query.QueryParamsResponse>(
() => this.client.Params(request, this.metadata),
)

return ChainGrpcPermissionsTransformer.moduleParamsResponseToModuleParams(
Expand Down Expand Up @@ -155,7 +153,8 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
denom: string
includeRoles: boolean
}) {
const request = InjectivePermissionsV1Beta1Query.QueryNamespaceByDenomRequest.create()
const request =
InjectivePermissionsV1Beta1Query.QueryNamespaceByDenomRequest.create()

request.denom = denom
request.includeRoles = includeRoles
Expand Down Expand Up @@ -184,12 +183,9 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
}
}

async fetchVouchersForAddress({
address,
}: {
address: string
}) {
const request = InjectivePermissionsV1Beta1Query.QueryVouchersForAddressRequest.create()
async fetchVouchersForAddress({ address }: { address: string }) {
const request =
InjectivePermissionsV1Beta1Query.QueryVouchersForAddressRequest.create()

request.address = address

Expand Down
Original file line number Diff line number Diff line change
@@ -1,79 +1,81 @@
import {
Namespace,
PermissionsModuleParams,
GrpcPermissionsNamespace,
} from '../types/permissions';
import { InjectivePermissionsV1Beta1Query } from '@injectivelabs/core-proto-ts';
Namespace,
PermissionsModuleParams,
GrpcPermissionsNamespace,
} from '../types/permissions'
import { InjectivePermissionsV1Beta1Query } from '@injectivelabs/core-proto-ts'

/**
* @category Chain Grpc Transformer
*/
export class ChainGrpcPermissionsTransformer {
static moduleParamsResponseToModuleParams(
response: InjectivePermissionsV1Beta1Query.QueryParamsResponse,
): PermissionsModuleParams {
const params = response.params!
static moduleParamsResponseToModuleParams(
response: InjectivePermissionsV1Beta1Query.QueryParamsResponse,
): PermissionsModuleParams {
const params = response.params!

return {
wasmHookQueryMaxGas: params.wasmHookQueryMaxGas,
}
return {
wasmHookQueryMaxGas: params.wasmHookQueryMaxGas,
}
}

static grpcNamespaceToNamespace (
grpcNamespace: GrpcPermissionsNamespace,
): Namespace {
return {
denom: grpcNamespace.denom,
wasmHook: grpcNamespace.wasmHook,
mintsPaused: grpcNamespace.mintsPaused,
sendsPaused: grpcNamespace.sendsPaused,
burnsPaused: grpcNamespace.burnsPaused,
rolePermissions: grpcNamespace.rolePermissions,
addressRoles: grpcNamespace.addressRoles,
}
static grpcNamespaceToNamespace(
grpcNamespace: GrpcPermissionsNamespace,
): Namespace {
return {
denom: grpcNamespace.denom,
wasmHook: grpcNamespace.wasmHook,
mintsPaused: grpcNamespace.mintsPaused,
sendsPaused: grpcNamespace.sendsPaused,
burnsPaused: grpcNamespace.burnsPaused,
rolePermissions: grpcNamespace.rolePermissions,
addressRoles: grpcNamespace.addressRoles,
}
}

static addressRolesResponseToAddressRoles(
response: InjectivePermissionsV1Beta1Query.QueryAddressRolesResponse,
){
return response.roles.map((role) => {
return {
roles: role,
}
})
}
static addressRolesResponseToAddressRoles(
response: InjectivePermissionsV1Beta1Query.QueryAddressRolesResponse,
) {
return response.roles.map((role) => {
return {
roles: role,
}
})
}

static addressesByRolesResponseToAddressesByRoles (
response: InjectivePermissionsV1Beta1Query.QueryAddressesByRoleResponse,
){
return response.addresses.map((address) => {
return {
addresses: address,
}
})
}
static addressesByRolesResponseToAddressesByRoles(
response: InjectivePermissionsV1Beta1Query.QueryAddressesByRoleResponse,
) {
return response.addresses.map((address) => {
return {
addresses: address,
}
})
}

static allNamespacesResponseToAllNamespaces (
response: InjectivePermissionsV1Beta1Query.QueryAllNamespacesResponse,
) {
return response.namespaces.map((namespace) => {
ChainGrpcPermissionsTransformer.grpcNamespaceToNamespace(namespace)
})
}
static allNamespacesResponseToAllNamespaces(
response: InjectivePermissionsV1Beta1Query.QueryAllNamespacesResponse,
) {
return response.namespaces.map((namespace) => {
ChainGrpcPermissionsTransformer.grpcNamespaceToNamespace(namespace)
})
}

static namespaceByDenomResponceToNamespaceByDenom (
response: InjectivePermissionsV1Beta1Query.QueryNamespaceByDenomResponse,
) {
return ChainGrpcPermissionsTransformer.grpcNamespaceToNamespace(response.namespace!)
}
static namespaceByDenomResponceToNamespaceByDenom(
response: InjectivePermissionsV1Beta1Query.QueryNamespaceByDenomResponse,
) {
return ChainGrpcPermissionsTransformer.grpcNamespaceToNamespace(
response.namespace!,
)
}

static vouchersForAddressResponseToVouchersForAddress (
response: InjectivePermissionsV1Beta1Query.QueryVouchersForAddressResponse,
) {
return response.vouchers.map((voucher) => {
return {
vouchers: voucher,
}
})
}
static vouchersForAddressResponseToVouchersForAddress(
response: InjectivePermissionsV1Beta1Query.QueryVouchersForAddressResponse,
) {
return response.vouchers.map((voucher) => {
return {
vouchers: voucher,
}
})
}
}
Loading

0 comments on commit 2ca3eb5

Please sign in to comment.