@chainlink/external-adapter-framework 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/adapter.js +60 -0
  2. package/dist/background-executor.js +45 -0
  3. package/dist/cache/factory.js +57 -0
  4. package/dist/cache/index.js +163 -0
  5. package/dist/cache/local.js +83 -0
  6. package/dist/cache/metrics.js +114 -0
  7. package/dist/cache/redis.js +100 -0
  8. package/dist/config/index.js +364 -0
  9. package/dist/config/provider-limits.js +75 -0
  10. package/dist/examples/coingecko/batch-warming.js +52 -0
  11. package/dist/examples/coingecko/index.js +10 -0
  12. package/dist/examples/coingecko/rest.js +50 -0
  13. package/dist/examples/ncfx/config/index.js +15 -0
  14. package/dist/examples/ncfx/index.js +10 -0
  15. package/dist/examples/ncfx/websocket.js +72 -0
  16. package/dist/index.js +89 -0
  17. package/dist/metrics/constants.js +25 -0
  18. package/dist/metrics/index.js +76 -0
  19. package/dist/metrics/util.js +9 -0
  20. package/dist/rate-limiting/factory.js +33 -0
  21. package/dist/rate-limiting/index.js +36 -0
  22. package/dist/rate-limiting/metrics.js +32 -0
  23. package/dist/rate-limiting/nop-limiter.js +15 -0
  24. package/dist/rate-limiting/simple-counting.js +61 -0
  25. package/dist/src/adapter.js +112 -0
  26. package/dist/src/background-executor.js +45 -0
  27. package/dist/src/cache/factory.js +57 -0
  28. package/dist/src/cache/index.js +165 -0
  29. package/dist/src/cache/local.js +83 -0
  30. package/dist/src/cache/metrics.js +114 -0
  31. package/dist/src/cache/redis.js +100 -0
  32. package/dist/src/config/index.js +366 -0
  33. package/dist/src/config/provider-limits.js +75 -0
  34. package/dist/src/examples/bank-frick/accounts.js +191 -0
  35. package/dist/src/examples/bank-frick/config/index.js +45 -0
  36. package/dist/src/examples/bank-frick/index.js +14 -0
  37. package/dist/src/examples/bank-frick/util.js +39 -0
  38. package/dist/src/examples/coingecko/batch-warming.js +52 -0
  39. package/dist/src/examples/coingecko/index.js +10 -0
  40. package/dist/src/examples/coingecko/rest.js +50 -0
  41. package/dist/src/examples/ncfx/config/index.js +15 -0
  42. package/dist/src/examples/ncfx/index.js +10 -0
  43. package/dist/src/examples/ncfx/websocket.js +72 -0
  44. package/dist/src/index.js +89 -0
  45. package/dist/src/metrics/constants.js +25 -0
  46. package/dist/src/metrics/index.js +76 -0
  47. package/dist/src/metrics/util.js +9 -0
  48. package/dist/src/rate-limiting/background/fixed-frequency.js +37 -0
  49. package/dist/src/rate-limiting/index.js +63 -0
  50. package/dist/src/rate-limiting/metrics.js +32 -0
  51. package/dist/src/rate-limiting/request/simple-counting.js +62 -0
  52. package/dist/src/test.js +6 -0
  53. package/dist/src/transports/batch-warming.js +55 -0
  54. package/dist/src/transports/index.js +85 -0
  55. package/dist/src/transports/metrics.js +119 -0
  56. package/dist/src/transports/rest.js +93 -0
  57. package/dist/src/transports/util.js +85 -0
  58. package/dist/src/transports/websocket.js +175 -0
  59. package/dist/src/util/expiring-sorted-set.js +47 -0
  60. package/dist/src/util/index.js +35 -0
  61. package/dist/src/util/logger.js +62 -0
  62. package/dist/src/util/request.js +2 -0
  63. package/dist/src/validation/error.js +41 -0
  64. package/dist/src/validation/index.js +84 -0
  65. package/dist/src/validation/input-params.js +30 -0
  66. package/dist/src/validation/override-functions.js +40 -0
  67. package/dist/src/validation/preset-tokens.json +23 -0
  68. package/dist/src/validation/validator.js +303 -0
  69. package/dist/test.js +6 -0
  70. package/dist/transports/batch-warming.js +57 -0
  71. package/dist/transports/index.js +76 -0
  72. package/dist/transports/metrics.js +133 -0
  73. package/dist/transports/rest.js +91 -0
  74. package/dist/transports/util.js +85 -0
  75. package/dist/transports/websocket.js +171 -0
  76. package/dist/util/expiring-sorted-set.js +47 -0
  77. package/dist/util/index.js +35 -0
  78. package/dist/util/logger.js +62 -0
  79. package/dist/util/request.js +2 -0
  80. package/dist/validation/error.js +41 -0
  81. package/dist/validation/index.js +82 -0
  82. package/dist/validation/input-params.js +30 -0
  83. package/dist/validation/overrideFunctions.js +42 -0
  84. package/dist/validation/presetTokens.json +23 -0
  85. package/dist/validation/validator.js +303 -0
  86. package/package.json +6 -2
  87. package/.c8rc.json +0 -3
  88. package/.eslintignore +0 -9
  89. package/.eslintrc.js +0 -96
  90. package/.github/README.MD +0 -17
  91. package/.github/actions/setup/action.yaml +0 -13
  92. package/.github/workflows/main.yaml +0 -39
  93. package/.github/workflows/publish.yaml +0 -17
  94. package/.prettierignore +0 -13
  95. package/.yarnrc +0 -0
  96. package/docker-compose.yaml +0 -35
  97. package/src/adapter.ts +0 -236
  98. package/src/background-executor.ts +0 -53
  99. package/src/cache/factory.ts +0 -28
  100. package/src/cache/index.ts +0 -236
  101. package/src/cache/local.ts +0 -73
  102. package/src/cache/metrics.ts +0 -112
  103. package/src/cache/redis.ts +0 -93
  104. package/src/config/index.ts +0 -501
  105. package/src/config/provider-limits.ts +0 -130
  106. package/src/examples/coingecko/batch-warming.ts +0 -79
  107. package/src/examples/coingecko/index.ts +0 -9
  108. package/src/examples/coingecko/rest.ts +0 -77
  109. package/src/examples/ncfx/config/index.ts +0 -12
  110. package/src/examples/ncfx/index.ts +0 -9
  111. package/src/examples/ncfx/websocket.ts +0 -100
  112. package/src/index.ts +0 -106
  113. package/src/metrics/constants.ts +0 -23
  114. package/src/metrics/index.ts +0 -116
  115. package/src/metrics/util.ts +0 -11
  116. package/src/rate-limiting/background/fixed-frequency.ts +0 -47
  117. package/src/rate-limiting/index.ts +0 -100
  118. package/src/rate-limiting/metrics.ts +0 -18
  119. package/src/rate-limiting/request/simple-counting.ts +0 -76
  120. package/src/test.ts +0 -5
  121. package/src/transports/batch-warming.ts +0 -121
  122. package/src/transports/index.ts +0 -173
  123. package/src/transports/metrics.ts +0 -95
  124. package/src/transports/rest.ts +0 -161
  125. package/src/transports/util.ts +0 -63
  126. package/src/transports/websocket.ts +0 -238
  127. package/src/util/expiring-sorted-set.ts +0 -52
  128. package/src/util/index.ts +0 -20
  129. package/src/util/logger.ts +0 -69
  130. package/src/util/request.ts +0 -115
  131. package/src/validation/error.ts +0 -116
  132. package/src/validation/index.ts +0 -101
  133. package/src/validation/input-params.ts +0 -45
  134. package/src/validation/override-functions.ts +0 -44
  135. package/src/validation/preset-tokens.json +0 -23
  136. package/src/validation/validator.ts +0 -384
  137. package/test/adapter.test.ts +0 -27
  138. package/test/background-executor.test.ts +0 -109
  139. package/test/cache/cache-key.test.ts +0 -96
  140. package/test/cache/helper.ts +0 -101
  141. package/test/cache/local.test.ts +0 -54
  142. package/test/cache/redis.test.ts +0 -89
  143. package/test/correlation.test.ts +0 -114
  144. package/test/index.test.ts +0 -37
  145. package/test/metrics/feed-id.test.ts +0 -33
  146. package/test/metrics/helper.ts +0 -14
  147. package/test/metrics/labels.test.ts +0 -36
  148. package/test/metrics/metrics.test.ts +0 -267
  149. package/test/metrics/redis-metrics.test.ts +0 -113
  150. package/test/metrics/warmer-metrics.test.ts +0 -192
  151. package/test/metrics/ws-metrics.test.ts +0 -225
  152. package/test/rate-limit-config.test.ts +0 -243
  153. package/test/transports/batch.test.ts +0 -465
  154. package/test/transports/rest.test.ts +0 -242
  155. package/test/transports/websocket.test.ts +0 -183
  156. package/test/tsconfig.json +0 -5
  157. package/test/util.ts +0 -76
  158. package/test/validation.test.ts +0 -169
  159. package/test.sh +0 -20
  160. package/tsconfig.json +0 -24
  161. package/typedoc.json +0 -6
@@ -1,183 +0,0 @@
1
- import FakeTimers from '@sinonjs/fake-timers'
2
- import test from 'ava'
3
- import axios, { AxiosError } from 'axios'
4
- import { Server, WebSocket } from 'mock-socket'
5
- import { AddressInfo } from 'net'
6
- import { expose } from '../../src'
7
- import { Adapter, AdapterEndpoint } from '../../src/adapter'
8
- import { DEFAULT_SHARED_MS_BETWEEN_REQUESTS } from '../../src/rate-limiting'
9
- import { DEFAULT_WS_TTL, WebSocketClassProvider, WebSocketTransport } from '../../src/transports'
10
- import { ProviderResult } from '../../src/util'
11
- import { InputParameters } from '../../src/validation'
12
- import { MockCache } from '../util'
13
-
14
- interface AdapterRequestParams {
15
- base: string
16
- quote: string
17
- }
18
-
19
- export const inputParameters: InputParameters = {
20
- base: {
21
- type: 'string',
22
- required: true,
23
- },
24
- quote: {
25
- type: 'string',
26
- required: true,
27
- },
28
- }
29
-
30
- interface ProviderMessage {
31
- pair: string
32
- value: number
33
- }
34
-
35
- const URL = 'wss://test-ws.com/asd'
36
-
37
- /**
38
- * Sets the mocked websocket instance in the provided provider class.
39
- * We need this here, because the tests will connect using their instance of WebSocketClassProvider;
40
- * fetching from this library to the \@chainlink/ea-bootstrap package would access _another_ instance
41
- * of the same constructor. Although it should be a singleton, dependencies are different so that
42
- * means that the static classes themselves are also different.
43
- *
44
- * @param provider - singleton WebSocketClassProvider
45
- */
46
- export const mockWebSocketProvider = (provider: typeof WebSocketClassProvider): void => {
47
- // Extend mock WebSocket class to bypass protocol headers error
48
- class MockWebSocket extends WebSocket {
49
- constructor(url: string, protocol: string | string[] | Record<string, string> | undefined) {
50
- super(url, protocol instanceof Object ? undefined : protocol)
51
- }
52
- }
53
-
54
- // Need to disable typing, the mock-socket impl does not implement the ws interface fully
55
- provider.set(MockWebSocket as any) // eslint-disable-line @typescript-eslint/no-explicit-any
56
- }
57
-
58
- export const websocketTransport = new WebSocketTransport({
59
- url: URL,
60
- handlers: {
61
- async open() {
62
- return
63
- },
64
-
65
- message(message: ProviderMessage): ProviderResult<AdapterRequestParams>[] {
66
- const [base, quote] = message.pair.split('/')
67
- return [
68
- {
69
- params: { base, quote },
70
- value: message.value,
71
- },
72
- ]
73
- },
74
- },
75
- builders: {
76
- subscribeMessage: (params: AdapterRequestParams) => ({
77
- request: 'subscribe',
78
- pair: `${params.base}/${params.quote}`,
79
- }),
80
- unsubscribeMessage: (params: AdapterRequestParams) => ({
81
- request: 'unsubscribe',
82
- pair: `${params.base}/${params.quote}`,
83
- }),
84
- },
85
- })
86
-
87
- export const webSocketEndpoint: AdapterEndpoint = {
88
- name: 'test',
89
- transport: websocketTransport,
90
- inputParameters,
91
- }
92
-
93
- const CACHE_MAX_AGE = 1000
94
-
95
- const adapter: Adapter = {
96
- name: 'test',
97
- defaultEndpoint: 'test',
98
- endpoints: [webSocketEndpoint],
99
- envDefaultOverrides: {
100
- CACHE_MAX_AGE,
101
- },
102
- }
103
-
104
- test('connects to websocket, subscribes, gets message, unsubscribes', async (t) => {
105
- const clock = FakeTimers.install()
106
-
107
- // Disable retries to make the testing flow easier
108
- process.env['CACHE_POLLING_MAX_RETRIES'] = '0'
109
-
110
- const base = 'ETH'
111
- const quote = 'DOGE'
112
- const price = 251324
113
-
114
- // Mock WS
115
- mockWebSocketProvider(WebSocketClassProvider)
116
- const mockWsServer = new Server(URL, { mock: false })
117
- mockWsServer.on('connection', (socket) => {
118
- let counter = 0
119
- const parseMessage = () => {
120
- if (counter++ === 0) {
121
- socket.send(
122
- JSON.stringify({
123
- pair: `${base}/${quote}`,
124
- value: price,
125
- }),
126
- )
127
- }
128
- }
129
- socket.on('message', parseMessage)
130
- })
131
-
132
- // Create mocked cache so we can listen when values are set
133
- // This is a more reliable method than expecting precise clock timings
134
- const mockCache = new MockCache()
135
-
136
- // Start up adapter
137
- const server = await expose(adapter, {
138
- cache: mockCache,
139
- })
140
- const address = `http://localhost:${(server?.address() as AddressInfo)?.port}`
141
-
142
- const makeRequest = () =>
143
- axios.post(address, {
144
- data: {
145
- base,
146
- quote,
147
- },
148
- })
149
-
150
- // Expect the first response to time out
151
- // The polling behavior is tested in the cache tests, so this is easier here.
152
- // Start the request:
153
- const errorPromise: Promise<AxiosError | undefined> = t.throwsAsync(makeRequest)
154
- // Advance enough time for the initial request async flow
155
- clock.tickAsync(10)
156
- // Wait for the failed cache get -> instant 504
157
- const error = await errorPromise
158
- t.is(error?.response?.status, 504)
159
-
160
- // Advance clock so that the batch warmer executes once again and wait for the cache to be set
161
- const cacheValueSetPromise = mockCache.waitForNextSet()
162
- await clock.tickAsync(DEFAULT_SHARED_MS_BETWEEN_REQUESTS + 10)
163
- await cacheValueSetPromise
164
-
165
- // Second request should find the response in the cache
166
- const response = await makeRequest()
167
-
168
- t.is(response.status, 200)
169
- t.deepEqual(response.data, {
170
- data: null,
171
- result: price,
172
- statusCode: 200,
173
- })
174
-
175
- // Wait until the cache expires, and the subscription is out
176
- await clock.tickAsync(Math.ceil(CACHE_MAX_AGE / DEFAULT_WS_TTL) * DEFAULT_WS_TTL + 1)
177
-
178
- // Now that the cache is out and the subscription no longer there, this should time out
179
- const error2: AxiosError | undefined = await t.throwsAsync(makeRequest)
180
- t.is(error2?.response?.status, 504)
181
-
182
- clock.uninstall()
183
- })
@@ -1,5 +0,0 @@
1
- {
2
- "extends": "../tsconfig.json",
3
- "include": ["./**/*.ts"],
4
- "exclude": ["../src/**/*.ts"]
5
- }
package/test/util.ts DELETED
@@ -1,76 +0,0 @@
1
- import { InstalledClock } from '@sinonjs/fake-timers'
2
- import { LocalCache } from '../src/cache'
3
- import { SettingsMap } from '../src/config'
4
- import { AdapterDependencies, Transport } from '../src/transports'
5
- import { AdapterRequest, AdapterResponse } from '../src/util'
6
-
7
- export class NopTransport implements Transport<null, null, SettingsMap> {
8
- async initialize(dependencies: AdapterDependencies): Promise<void> {
9
- return
10
- }
11
- async hasBeenSetUp(): Promise<boolean> {
12
- return false
13
- }
14
- async setup(req: AdapterRequest<unknown>): Promise<void | AdapterResponse<null>> {
15
- return
16
- }
17
- }
18
-
19
- type Resolve<T> = (value: T) => void
20
- export const deferredPromise = <T>(): [Promise<T>, Resolve<T>] => {
21
- let resolve!: Resolve<T>
22
- const promise = new Promise<T>((r) => {
23
- resolve = r
24
- })
25
- return [promise, resolve]
26
- }
27
-
28
- export class MockCache extends LocalCache {
29
- private awaitingPromiseResolve?: (value: unknown) => void
30
-
31
- waitForNextSet() {
32
- // eslint-disable-next-line no-promise-executor-return
33
- return new Promise((resolve) => (this.awaitingPromiseResolve = resolve))
34
- }
35
- override async set(key: string, value: unknown, ttl: number): Promise<void> {
36
- super.set(key, value, ttl)
37
- if (this.awaitingPromiseResolve) {
38
- this.awaitingPromiseResolve(value)
39
- }
40
- }
41
- }
42
-
43
- export async function runPeriodicAsyncBackgroundExecution(
44
- clock: InstalledClock,
45
- {
46
- interval,
47
- times,
48
- stepValidation,
49
- }: {
50
- interval: number
51
- times: number
52
- stepValidation: (iteration: number) => boolean
53
- },
54
- ) {
55
- for (let i = 0; i < times; i++) {
56
- // Tick once for the interval
57
- await clock.tickAsync(interval)
58
-
59
- // Then use auxiliary method to ensure that the background process, if it
60
- // spawns new timers, gets executed to completion
61
- await runAllUntil(clock, () => stepValidation(i))
62
- }
63
- }
64
-
65
- async function runAllUntil(clock: InstalledClock, isComplete: () => boolean): Promise<void> {
66
- while (!isComplete()) {
67
- await clock.nextAsync()
68
- }
69
- }
70
-
71
- export async function runAllUntilTime(clock: InstalledClock, time: number): Promise<void> {
72
- const targetTime = clock.now + time
73
- while (clock.now < targetTime) {
74
- await clock.nextAsync()
75
- }
76
- }
@@ -1,169 +0,0 @@
1
- import untypedTest, { TestFn } from 'ava'
2
- import axios, { AxiosError } from 'axios'
3
- import { AddressInfo } from 'net'
4
- import { expose } from '../src'
5
- import { Adapter, AdapterEndpoint } from '../src/adapter'
6
- import { AdapterResponse } from '../src/util'
7
- import { NopTransport } from './util'
8
-
9
- const test = untypedTest as TestFn<{
10
- serverAddress: string
11
- adapterEndpoint: AdapterEndpoint
12
- }>
13
-
14
- test.beforeEach(async (t) => {
15
- const adapter: Adapter = {
16
- name: 'test',
17
- endpoints: [
18
- {
19
- name: 'test',
20
- inputParameters: {},
21
- transport: new (class extends NopTransport {
22
- override async setup(): Promise<void | AdapterResponse<null>> {
23
- return {
24
- data: null,
25
- statusCode: 200,
26
- result: null,
27
- }
28
- }
29
- })(),
30
- },
31
- ],
32
- }
33
-
34
- t.context.adapterEndpoint = adapter.endpoints[0]
35
- const server = await expose(adapter)
36
- if (!server) {
37
- throw 'Server did not start'
38
- }
39
- t.context.serverAddress = `http://localhost:${(server.address() as AddressInfo).port}`
40
- })
41
-
42
- /**
43
- * NOTE: The tests here are run serially, because to avoid setting up and tearing down the adapter
44
- * for each one, we're just modifying the inputParameters and sending a new request every time
45
- */
46
- test.serial('any content-type other than application/json throws 400', async (t) => {
47
- t.context.adapterEndpoint.inputParameters = {}
48
-
49
- const error: AxiosError | undefined = await t.throwsAsync(() =>
50
- axios.post(`${t.context.serverAddress}`, 'test string', {
51
- headers: {
52
- 'Content-Type': 'text/plain',
53
- },
54
- }),
55
- )
56
- t.is(error?.response?.status, 400)
57
- })
58
-
59
- test.serial('no body in request throws 400', async (t) => {
60
- t.context.adapterEndpoint.inputParameters = {}
61
-
62
- const error: AxiosError | undefined = await t.throwsAsync(() =>
63
- axios.post(`${t.context.serverAddress}`, '', {
64
- headers: {
65
- 'Content-Type': 'application/json',
66
- },
67
- }),
68
- )
69
- t.is(error?.response?.status, 400)
70
- })
71
-
72
- test.serial('invalid endpoint name throws 404', async (t) => {
73
- t.context.adapterEndpoint.inputParameters = {}
74
-
75
- const error: AxiosError | undefined = await t.throwsAsync(() =>
76
- axios.post(`${t.context.serverAddress}`, {
77
- endpoint: 'random',
78
- }),
79
- )
80
- t.is(error?.response?.status, 404)
81
- })
82
-
83
- test.serial('no endpoint without default throws 400', async (t) => {
84
- t.context.adapterEndpoint.inputParameters = {}
85
-
86
- const error: AxiosError | undefined = await t.throwsAsync(() =>
87
- axios.post(`${t.context.serverAddress}`, {
88
- data: {},
89
- }),
90
- )
91
- t.is(error?.response?.status, 400)
92
- })
93
-
94
- test.serial('no params returns 200', async (t) => {
95
- t.context.adapterEndpoint.inputParameters = {}
96
-
97
- const response = await axios.post(`${t.context.serverAddress}`, {
98
- data: {},
99
- endpoint: 'test',
100
- })
101
- t.is(response.status, 200)
102
- })
103
-
104
- test.serial('missing required param throws 400', async (t) => {
105
- t.context.adapterEndpoint.inputParameters = {
106
- base: {
107
- type: 'string',
108
- required: true,
109
- },
110
- }
111
-
112
- const error: AxiosError | undefined = await t.throwsAsync(() =>
113
- axios.post(`${t.context.serverAddress}`, {
114
- data: {},
115
- }),
116
- )
117
- t.is(error?.response?.status, 400)
118
- })
119
-
120
- test.serial('wrongly typed param throws 400', async (t) => {
121
- t.context.adapterEndpoint.inputParameters = {
122
- base: {
123
- type: 'string',
124
- required: true,
125
- },
126
- }
127
-
128
- const error: AxiosError | undefined = await t.throwsAsync(() =>
129
- axios.post(`${t.context.serverAddress}`, {
130
- data: {
131
- base: 123,
132
- },
133
- endpoint: 'test',
134
- }),
135
- )
136
- t.is(error?.response?.status, 400)
137
- })
138
-
139
- test.serial('correctly typed param returns 200', async (t) => {
140
- t.context.adapterEndpoint.inputParameters = {
141
- base: {
142
- type: 'string',
143
- required: true,
144
- },
145
- }
146
-
147
- const response = await axios.post(`${t.context.serverAddress}`, {
148
- data: {
149
- base: 'asd',
150
- },
151
- endpoint: 'test',
152
- })
153
- t.is(response.status, 200)
154
- })
155
-
156
- test.serial('omitted optional param returns 200', async (t) => {
157
- t.context.adapterEndpoint.inputParameters = {
158
- base: {
159
- type: 'string',
160
- required: false,
161
- },
162
- }
163
-
164
- const response = await axios.post(`${t.context.serverAddress}`, {
165
- data: {},
166
- endpoint: 'test',
167
- })
168
- t.is(response.status, 200)
169
- })
package/test.sh DELETED
@@ -1,20 +0,0 @@
1
- # for i in {1..100}; do
2
- # if (( $i % 50 == 0 )); then
3
- # echo "sent $i"
4
- # fi
5
- # curl -XPOST http://localhost:8080 -s \
6
- # -H 'Content-Type: application/json' \
7
- # -d '{"endpoint":"test", "data": {"base": "ethereum", "quote": "usd"}}' > /tmp/null &
8
- # sleep 0.1
9
- # done
10
-
11
- # wait
12
-
13
- # echo "done"
14
-
15
- curl -XPOST http://localhost:8080 -s \
16
- -H 'Content-Type: application/json' \
17
- -d '{"endpoint":"batch", "data": {"base": "ethereum", "quote": "usd"}}' > /tmp/null &
18
-
19
-
20
- wait
package/tsconfig.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "outDir": "dist",
4
- "rootDir": ".",
5
- "target": "es2020",
6
- "esModuleInterop": true,
7
- "moduleResolution": "node",
8
- "module": "CommonJS",
9
- "resolveJsonModule": true,
10
-
11
- // Type checking
12
- "allowUnreachableCode": false,
13
- "allowUnusedLabels": false,
14
- "alwaysStrict": true,
15
- "noImplicitAny": true,
16
- "noImplicitOverride": true,
17
- "noImplicitReturns": false,
18
- "noImplicitThis": true,
19
- "noPropertyAccessFromIndexSignature": true,
20
- "noUnusedLocals": true,
21
- "strict": true
22
- },
23
- "include": ["./src/**/*"]
24
- }
package/typedoc.json DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "$schema": "https://typedoc.org/schema.json",
3
- "entryPoints": ["./src/index.ts"],
4
- "out": "docs",
5
- "includeVersion": true
6
- }