Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ on:
# The only commits that will contain changes to the masterlist will be releases
paths:
- 'MASTERLIST.md'
pull_request:
branches:
- 'main'

concurrency:
group: deploy-and-release
Expand All @@ -36,7 +39,7 @@ jobs:
name: Create ECR for ${{ matrix.adapter.shortName }}
runs-on: ubuntu-latest
needs: [calculate-changes]
if: needs.calculate-changes.outputs.adapter-list != '{"adapter":[]}'
if: false
permissions: # These are needed for the configure-aws-credentials action
id-token: write
contents: read
Expand Down Expand Up @@ -67,7 +70,7 @@ jobs:
permissions:
contents: read
id-token: write
needs: [calculate-changes, create-ecr]
needs: [calculate-changes]
strategy:
max-parallel: 20
matrix: ${{ fromJson(needs.calculate-changes.outputs.adapter-list) }}
Expand All @@ -83,7 +86,7 @@ jobs:
docker-image-tag-override: ${{ matrix.adapter.version }}
docker-manifest-additional-tags: latest
docker-push: true
environment: release
#environment: release
git-sha: ${{ github.sha }}
github-event-name: ${{ github.event_name }}
github-ref-name: ${{ github.ref_name }}
Expand All @@ -97,6 +100,7 @@ jobs:

deploy:
name: Trigger infra deployment
if: false
permissions:
id-token: write
contents: read
Expand Down
2 changes: 1 addition & 1 deletion packages/sources/the-network-firm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"prepack": "yarn build",
"build": "tsc -b",
"server": "node -e 'require(\"./index.js\").server()'",
"server:dist": "node -e 'require(\"./dist/index.js\").server()'",
"server:dist": "node --inspect=0.0.0.0:9229 --expose-gc -e 'require(\"./dist/index.js\").server()'",
"start": "yarn server:dist"
},
"devDependencies": {
Expand Down
24 changes: 24 additions & 0 deletions packages/sources/the-network-firm/src/endpoint/heapdump.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { AdapterEndpoint } from '@chainlink/external-adapter-framework/adapter'
import { InputParameters } from '@chainlink/external-adapter-framework/validation'
import { config } from '../config'
import { customTransport } from '../transport/heapdump'

export const inputParameters = new InputParameters({}, [{}])

export type BaseEndpointTypes = {
Parameters: typeof inputParameters.definition
Response: {
Data: {
snapshot: string
}
Result: null
}
Settings: typeof config.settings
}

export const endpoint = new AdapterEndpoint({
name: 'heapdump',
aliases: [],
transport: customTransport,
inputParameters,
})
1 change: 1 addition & 0 deletions packages/sources/the-network-firm/src/endpoint/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ export { endpoint as backed } from './backed'
export { endpoint as emgemx } from './emgemx'
export { endpoint as eurr } from './eurr'
export { endpoint as gift } from './gift'
export { endpoint as heapdump } from './heapdump'
export { endpoint as mco2 } from './mco2'
export { endpoint as reserve } from './reserve'
export { endpoint as stbt } from './stbt'
Expand Down
15 changes: 13 additions & 2 deletions packages/sources/the-network-firm/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
import { expose, ServerInstance } from '@chainlink/external-adapter-framework'
import { PoRAdapter } from '@chainlink/external-adapter-framework/adapter/por'
import { config } from './config'
import { backed, emgemx, eurr, gift, mco2, reserve, stbt, uranium, usdr } from './endpoint'
import {
backed,
emgemx,
eurr,
gift,
heapdump,
mco2,
reserve,
stbt,
uranium,
usdr,
} from './endpoint'

export const adapter = new PoRAdapter({
defaultEndpoint: mco2.name,
name: 'THE_NETWORK_FIRM',
config,
endpoints: [backed, emgemx, eurr, gift, mco2, stbt, uranium, usdr, reserve],
endpoints: [backed, emgemx, eurr, gift, mco2, stbt, uranium, usdr, reserve, heapdump],
rateLimiting: {
tiers: {
default: {
Expand Down
55 changes: 55 additions & 0 deletions packages/sources/the-network-firm/src/transport/heapdump.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { ResponseCache } from '@chainlink/external-adapter-framework/cache/response'
import { Transport, TransportDependencies } from '@chainlink/external-adapter-framework/transports'
import { AdapterRequest, AdapterResponse } from '@chainlink/external-adapter-framework/util'
import { Requester } from '@chainlink/external-adapter-framework/util/requester'
import v8 from 'v8'
import { BaseEndpointTypes, inputParameters } from '../endpoint/heapdump'

export type CustomTransportTypes = BaseEndpointTypes & {
Provider: {
RequestBody: never
ResponseBody: any
}
}
export class CustomTransport implements Transport<CustomTransportTypes> {
name!: string
responseCache!: ResponseCache<CustomTransportTypes>
requester!: Requester

async initialize(
dependencies: TransportDependencies<CustomTransportTypes>,
_adapterSettings: CustomTransportTypes['Settings'],
_endpointName: string,
transportName: string,
): Promise<void> {
this.responseCache = dependencies.responseCache
this.requester = dependencies.requester
this.name = transportName
}
async foregroundExecute(
_: AdapterRequest<typeof inputParameters.validated>,
): Promise<AdapterResponse<CustomTransportTypes['Response']>> {
const chunks: Buffer[] = []
const stream = v8.getHeapSnapshot()
for await (const chunk of stream) {
chunks.push(chunk instanceof Buffer ? chunk : Buffer.from(chunk))
}

const response = {
data: {
snapshot: Buffer.concat(chunks).toString('base64'),
},
statusCode: 200,
result: null,
timestamps: {
providerDataRequestedUnixMs: Date.now(),
providerDataReceivedUnixMs: Date.now(),
providerIndicatedTimeUnixMs: undefined,
},
}

return response
}
}

export const customTransport = new CustomTransport()
Loading