@chainlink/external-adapter-framework 2.3.0 → 2.5.0
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.
- package/README.md +1 -1
- package/generator-adapter/node_modules/.yarn-integrity +3 -2
- package/generator-adapter/node_modules/@types/node/README.md +1 -1
- package/generator-adapter/node_modules/@types/node/fs.d.ts +28 -18
- package/generator-adapter/node_modules/@types/node/http.d.ts +2 -2
- package/generator-adapter/node_modules/@types/node/https.d.ts +3 -1
- package/generator-adapter/node_modules/@types/node/module.d.ts +50 -5
- package/generator-adapter/node_modules/@types/node/package.json +4 -4
- package/generator-adapter/node_modules/@types/node/process.d.ts +28 -0
- package/generator-adapter/node_modules/@types/node/sqlite.d.ts +63 -17
- package/generator-adapter/node_modules/@types/node/stream/consumers.d.ts +32 -6
- package/generator-adapter/node_modules/@types/node/test.d.ts +82 -0
- package/generator-adapter/node_modules/@types/node/timers/promises.d.ts +24 -13
- package/generator-adapter/node_modules/@types/node/timers.d.ts +159 -112
- package/generator-adapter/node_modules/@types/node/util.d.ts +11 -4
- package/generator-adapter/node_modules/@types/node/worker_threads.d.ts +1 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/LICENSE +21 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/README.md +6 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/agent.d.ts +31 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/api.d.ts +43 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/cache.d.ts +36 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/client.d.ts +108 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/connector.d.ts +34 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/content-type.d.ts +21 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/cookies.d.ts +28 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/dispatcher.d.ts +255 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/errors.d.ts +149 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/eventsource.d.ts +61 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/fetch.d.ts +209 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/file.d.ts +39 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/filereader.d.ts +54 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/formdata.d.ts +108 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/global-origin.d.ts +7 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/handlers.d.ts +15 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/header.d.ts +4 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/index.d.ts +71 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/interceptors.d.ts +17 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/mock-client.d.ts +25 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/package.json +55 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/patch.d.ts +33 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/pool.d.ts +39 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/proxy-agent.d.ts +28 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/readable.d.ts +60 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/retry-handler.d.ts +116 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/util.d.ts +18 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/webidl.d.ts +222 -0
- package/generator-adapter/node_modules/@types/through/node_modules/undici-types/websocket.d.ts +150 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/LICENSE +21 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/README.md +6 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/agent.d.ts +31 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/api.d.ts +43 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/cache.d.ts +36 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/client.d.ts +108 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/connector.d.ts +34 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/content-type.d.ts +21 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/cookies.d.ts +28 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/dispatcher.d.ts +255 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/errors.d.ts +149 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/eventsource.d.ts +61 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/fetch.d.ts +209 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/file.d.ts +39 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/filereader.d.ts +54 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/formdata.d.ts +108 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/global-origin.d.ts +7 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/handlers.d.ts +15 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/header.d.ts +4 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/index.d.ts +71 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/interceptors.d.ts +17 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/mock-client.d.ts +25 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/package.json +55 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/patch.d.ts +33 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/pool.d.ts +39 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/proxy-agent.d.ts +28 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/readable.d.ts +60 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/retry-handler.d.ts +116 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/util.d.ts +18 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/webidl.d.ts +222 -0
- package/generator-adapter/node_modules/@types/vinyl/node_modules/undici-types/websocket.d.ts +150 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/LICENSE +21 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/README.md +6 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/agent.d.ts +31 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/api.d.ts +43 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/cache.d.ts +36 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/client.d.ts +108 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/connector.d.ts +34 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/content-type.d.ts +21 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/cookies.d.ts +28 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/dispatcher.d.ts +255 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/errors.d.ts +149 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/eventsource.d.ts +61 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/fetch.d.ts +209 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/file.d.ts +39 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/filereader.d.ts +54 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/formdata.d.ts +108 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/global-origin.d.ts +7 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/handlers.d.ts +15 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/header.d.ts +4 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/index.d.ts +71 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/interceptors.d.ts +17 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/mock-client.d.ts +25 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/package.json +55 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/patch.d.ts +33 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/pool.d.ts +39 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/proxy-agent.d.ts +28 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/readable.d.ts +60 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/retry-handler.d.ts +116 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/util.d.ts +18 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/webidl.d.ts +222 -0
- package/generator-adapter/node_modules/mem-fs/node_modules/undici-types/websocket.d.ts +150 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/LICENSE +21 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/README.md +6 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/agent.d.ts +31 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/api.d.ts +43 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/balanced-pool.d.ts +29 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/cache.d.ts +36 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/client.d.ts +108 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/connector.d.ts +34 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/content-type.d.ts +21 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/cookies.d.ts +28 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/diagnostics-channel.d.ts +66 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/dispatcher.d.ts +255 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/env-http-proxy-agent.d.ts +21 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/errors.d.ts +149 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/eventsource.d.ts +61 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/fetch.d.ts +209 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/file.d.ts +39 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/filereader.d.ts +54 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/formdata.d.ts +108 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/global-origin.d.ts +7 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/handlers.d.ts +15 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/header.d.ts +4 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/index.d.ts +71 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/interceptors.d.ts +17 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/mock-client.d.ts +25 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/package.json +55 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/patch.d.ts +33 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/pool.d.ts +39 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/proxy-agent.d.ts +28 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/readable.d.ts +60 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/retry-agent.d.ts +8 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/retry-handler.d.ts +116 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/util.d.ts +18 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/webidl.d.ts +222 -0
- package/generator-adapter/node_modules/mem-fs-editor/node_modules/undici-types/websocket.d.ts +150 -0
- package/generator-adapter/node_modules/undici-types/dispatcher.d.ts +1 -0
- package/generator-adapter/node_modules/undici-types/package.json +1 -1
- package/generator-adapter/node_modules/undici-types/readable.d.ts +5 -0
- package/generator-adapter/node_modules/undici-types/webidl.d.ts +6 -0
- package/generator-adapter/package.json +1 -1
- package/package.json +11 -11
- package/util/group-runner.d.ts +12 -0
- package/util/group-runner.js +67 -0
- package/util/group-runner.js.map +1 -0
- package/util/index.d.ts +1 -1
- package/util/testing-utils.d.ts +2 -0
- package/util/testing-utils.js +65 -1
- package/util/testing-utils.js.map +1 -1
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// These types are not exported, and are only used internally
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Take in an unknown value and return one that is of type T
|
|
5
|
+
*/
|
|
6
|
+
type Converter<T> = (object: unknown) => T
|
|
7
|
+
|
|
8
|
+
type SequenceConverter<T> = (object: unknown, iterable?: IterableIterator<T>) => T[]
|
|
9
|
+
|
|
10
|
+
type RecordConverter<K extends string, V> = (object: unknown) => Record<K, V>
|
|
11
|
+
|
|
12
|
+
interface ConvertToIntOpts {
|
|
13
|
+
clamp?: boolean
|
|
14
|
+
enforceRange?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface WebidlErrors {
|
|
18
|
+
exception (opts: { header: string, message: string }): TypeError
|
|
19
|
+
/**
|
|
20
|
+
* @description Throw an error when conversion from one type to another has failed
|
|
21
|
+
*/
|
|
22
|
+
conversionFailed (opts: {
|
|
23
|
+
prefix: string
|
|
24
|
+
argument: string
|
|
25
|
+
types: string[]
|
|
26
|
+
}): TypeError
|
|
27
|
+
/**
|
|
28
|
+
* @description Throw an error when an invalid argument is provided
|
|
29
|
+
*/
|
|
30
|
+
invalidArgument (opts: {
|
|
31
|
+
prefix: string
|
|
32
|
+
value: string
|
|
33
|
+
type: string
|
|
34
|
+
}): TypeError
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface WebidlUtil {
|
|
38
|
+
/**
|
|
39
|
+
* @see https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
|
|
40
|
+
*/
|
|
41
|
+
Type (object: unknown):
|
|
42
|
+
| 'Undefined'
|
|
43
|
+
| 'Boolean'
|
|
44
|
+
| 'String'
|
|
45
|
+
| 'Symbol'
|
|
46
|
+
| 'Number'
|
|
47
|
+
| 'BigInt'
|
|
48
|
+
| 'Null'
|
|
49
|
+
| 'Object'
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
|
|
53
|
+
*/
|
|
54
|
+
ConvertToInt (
|
|
55
|
+
V: unknown,
|
|
56
|
+
bitLength: number,
|
|
57
|
+
signedness: 'signed' | 'unsigned',
|
|
58
|
+
opts?: ConvertToIntOpts
|
|
59
|
+
): number
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @see https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
|
|
63
|
+
*/
|
|
64
|
+
IntegerPart (N: number): number
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Stringifies {@param V}
|
|
68
|
+
*/
|
|
69
|
+
Stringify (V: any): string
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
interface WebidlConverters {
|
|
73
|
+
/**
|
|
74
|
+
* @see https://webidl.spec.whatwg.org/#es-DOMString
|
|
75
|
+
*/
|
|
76
|
+
DOMString (V: unknown, prefix: string, argument: string, opts?: {
|
|
77
|
+
legacyNullToEmptyString: boolean
|
|
78
|
+
}): string
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* @see https://webidl.spec.whatwg.org/#es-ByteString
|
|
82
|
+
*/
|
|
83
|
+
ByteString (V: unknown, prefix: string, argument: string): string
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @see https://webidl.spec.whatwg.org/#es-USVString
|
|
87
|
+
*/
|
|
88
|
+
USVString (V: unknown): string
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @see https://webidl.spec.whatwg.org/#es-boolean
|
|
92
|
+
*/
|
|
93
|
+
boolean (V: unknown): boolean
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @see https://webidl.spec.whatwg.org/#es-any
|
|
97
|
+
*/
|
|
98
|
+
any <Value>(V: Value): Value
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @see https://webidl.spec.whatwg.org/#es-long-long
|
|
102
|
+
*/
|
|
103
|
+
['long long'] (V: unknown): number
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-long-long
|
|
107
|
+
*/
|
|
108
|
+
['unsigned long long'] (V: unknown): number
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-long
|
|
112
|
+
*/
|
|
113
|
+
['unsigned long'] (V: unknown): number
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @see https://webidl.spec.whatwg.org/#es-unsigned-short
|
|
117
|
+
*/
|
|
118
|
+
['unsigned short'] (V: unknown, opts?: ConvertToIntOpts): number
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* @see https://webidl.spec.whatwg.org/#idl-ArrayBuffer
|
|
122
|
+
*/
|
|
123
|
+
ArrayBuffer (V: unknown): ArrayBufferLike
|
|
124
|
+
ArrayBuffer (V: unknown, opts: { allowShared: false }): ArrayBuffer
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* @see https://webidl.spec.whatwg.org/#es-buffer-source-types
|
|
128
|
+
*/
|
|
129
|
+
TypedArray (
|
|
130
|
+
V: unknown,
|
|
131
|
+
TypedArray: NodeJS.TypedArray | ArrayBufferLike
|
|
132
|
+
): NodeJS.TypedArray | ArrayBufferLike
|
|
133
|
+
TypedArray (
|
|
134
|
+
V: unknown,
|
|
135
|
+
TypedArray: NodeJS.TypedArray | ArrayBufferLike,
|
|
136
|
+
opts?: { allowShared: false }
|
|
137
|
+
): NodeJS.TypedArray | ArrayBuffer
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @see https://webidl.spec.whatwg.org/#es-buffer-source-types
|
|
141
|
+
*/
|
|
142
|
+
DataView (V: unknown, opts?: { allowShared: boolean }): DataView
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @see https://webidl.spec.whatwg.org/#BufferSource
|
|
146
|
+
*/
|
|
147
|
+
BufferSource (
|
|
148
|
+
V: unknown,
|
|
149
|
+
opts?: { allowShared: boolean }
|
|
150
|
+
): NodeJS.TypedArray | ArrayBufferLike | DataView
|
|
151
|
+
|
|
152
|
+
['sequence<ByteString>']: SequenceConverter<string>
|
|
153
|
+
|
|
154
|
+
['sequence<sequence<ByteString>>']: SequenceConverter<string[]>
|
|
155
|
+
|
|
156
|
+
['record<ByteString, ByteString>']: RecordConverter<string, string>
|
|
157
|
+
|
|
158
|
+
[Key: string]: (...args: any[]) => unknown
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface Webidl {
|
|
162
|
+
errors: WebidlErrors
|
|
163
|
+
util: WebidlUtil
|
|
164
|
+
converters: WebidlConverters
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* @description Performs a brand-check on {@param V} to ensure it is a
|
|
168
|
+
* {@param cls} object.
|
|
169
|
+
*/
|
|
170
|
+
brandCheck <Interface>(V: unknown, cls: Interface, opts?: { strict?: boolean }): asserts V is Interface
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* @see https://webidl.spec.whatwg.org/#es-sequence
|
|
174
|
+
* @description Convert a value, V, to a WebIDL sequence type.
|
|
175
|
+
*/
|
|
176
|
+
sequenceConverter <Type>(C: Converter<Type>): SequenceConverter<Type>
|
|
177
|
+
|
|
178
|
+
illegalConstructor (): never
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @see https://webidl.spec.whatwg.org/#es-to-record
|
|
182
|
+
* @description Convert a value, V, to a WebIDL record type.
|
|
183
|
+
*/
|
|
184
|
+
recordConverter <K extends string, V>(
|
|
185
|
+
keyConverter: Converter<K>,
|
|
186
|
+
valueConverter: Converter<V>
|
|
187
|
+
): RecordConverter<K, V>
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Similar to {@link Webidl.brandCheck} but allows skipping the check if third party
|
|
191
|
+
* interfaces are allowed.
|
|
192
|
+
*/
|
|
193
|
+
interfaceConverter <Interface>(cls: Interface): (
|
|
194
|
+
V: unknown,
|
|
195
|
+
opts?: { strict: boolean }
|
|
196
|
+
) => asserts V is typeof cls
|
|
197
|
+
|
|
198
|
+
// TODO(@KhafraDev): a type could likely be implemented that can infer the return type
|
|
199
|
+
// from the converters given?
|
|
200
|
+
/**
|
|
201
|
+
* Converts a value, V, to a WebIDL dictionary types. Allows limiting which keys are
|
|
202
|
+
* allowed, values allowed, optional and required keys. Auto converts the value to
|
|
203
|
+
* a type given a converter.
|
|
204
|
+
*/
|
|
205
|
+
dictionaryConverter (converters: {
|
|
206
|
+
key: string,
|
|
207
|
+
defaultValue?: () => unknown,
|
|
208
|
+
required?: boolean,
|
|
209
|
+
converter: (...args: unknown[]) => unknown,
|
|
210
|
+
allowedValues?: unknown[]
|
|
211
|
+
}[]): (V: unknown) => Record<string, unknown>
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @see https://webidl.spec.whatwg.org/#idl-nullable-type
|
|
215
|
+
* @description allows a type, V, to be null
|
|
216
|
+
*/
|
|
217
|
+
nullableConverter <T>(
|
|
218
|
+
converter: Converter<T>
|
|
219
|
+
): (V: unknown) => ReturnType<typeof converter> | null
|
|
220
|
+
|
|
221
|
+
argumentLengthCheck (args: { length: number }, min: number, context: string): void
|
|
222
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
|
|
3
|
+
import type { Blob } from 'buffer'
|
|
4
|
+
import type { MessagePort } from 'worker_threads'
|
|
5
|
+
import {
|
|
6
|
+
EventInit,
|
|
7
|
+
EventListenerOptions,
|
|
8
|
+
AddEventListenerOptions,
|
|
9
|
+
EventListenerOrEventListenerObject
|
|
10
|
+
} from './patch'
|
|
11
|
+
import Dispatcher from './dispatcher'
|
|
12
|
+
import { HeadersInit } from './fetch'
|
|
13
|
+
|
|
14
|
+
export type BinaryType = 'blob' | 'arraybuffer'
|
|
15
|
+
|
|
16
|
+
interface WebSocketEventMap {
|
|
17
|
+
close: CloseEvent
|
|
18
|
+
error: ErrorEvent
|
|
19
|
+
message: MessageEvent
|
|
20
|
+
open: Event
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface WebSocket extends EventTarget {
|
|
24
|
+
binaryType: BinaryType
|
|
25
|
+
|
|
26
|
+
readonly bufferedAmount: number
|
|
27
|
+
readonly extensions: string
|
|
28
|
+
|
|
29
|
+
onclose: ((this: WebSocket, ev: WebSocketEventMap['close']) => any) | null
|
|
30
|
+
onerror: ((this: WebSocket, ev: WebSocketEventMap['error']) => any) | null
|
|
31
|
+
onmessage: ((this: WebSocket, ev: WebSocketEventMap['message']) => any) | null
|
|
32
|
+
onopen: ((this: WebSocket, ev: WebSocketEventMap['open']) => any) | null
|
|
33
|
+
|
|
34
|
+
readonly protocol: string
|
|
35
|
+
readonly readyState: number
|
|
36
|
+
readonly url: string
|
|
37
|
+
|
|
38
|
+
close(code?: number, reason?: string): void
|
|
39
|
+
send(data: string | ArrayBufferLike | Blob | ArrayBufferView): void
|
|
40
|
+
|
|
41
|
+
readonly CLOSED: number
|
|
42
|
+
readonly CLOSING: number
|
|
43
|
+
readonly CONNECTING: number
|
|
44
|
+
readonly OPEN: number
|
|
45
|
+
|
|
46
|
+
addEventListener<K extends keyof WebSocketEventMap>(
|
|
47
|
+
type: K,
|
|
48
|
+
listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
|
|
49
|
+
options?: boolean | AddEventListenerOptions
|
|
50
|
+
): void
|
|
51
|
+
addEventListener(
|
|
52
|
+
type: string,
|
|
53
|
+
listener: EventListenerOrEventListenerObject,
|
|
54
|
+
options?: boolean | AddEventListenerOptions
|
|
55
|
+
): void
|
|
56
|
+
removeEventListener<K extends keyof WebSocketEventMap>(
|
|
57
|
+
type: K,
|
|
58
|
+
listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any,
|
|
59
|
+
options?: boolean | EventListenerOptions
|
|
60
|
+
): void
|
|
61
|
+
removeEventListener(
|
|
62
|
+
type: string,
|
|
63
|
+
listener: EventListenerOrEventListenerObject,
|
|
64
|
+
options?: boolean | EventListenerOptions
|
|
65
|
+
): void
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export declare const WebSocket: {
|
|
69
|
+
prototype: WebSocket
|
|
70
|
+
new (url: string | URL, protocols?: string | string[] | WebSocketInit): WebSocket
|
|
71
|
+
readonly CLOSED: number
|
|
72
|
+
readonly CLOSING: number
|
|
73
|
+
readonly CONNECTING: number
|
|
74
|
+
readonly OPEN: number
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
interface CloseEventInit extends EventInit {
|
|
78
|
+
code?: number
|
|
79
|
+
reason?: string
|
|
80
|
+
wasClean?: boolean
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
interface CloseEvent extends Event {
|
|
84
|
+
readonly code: number
|
|
85
|
+
readonly reason: string
|
|
86
|
+
readonly wasClean: boolean
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export declare const CloseEvent: {
|
|
90
|
+
prototype: CloseEvent
|
|
91
|
+
new (type: string, eventInitDict?: CloseEventInit): CloseEvent
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
interface MessageEventInit<T = any> extends EventInit {
|
|
95
|
+
data?: T
|
|
96
|
+
lastEventId?: string
|
|
97
|
+
origin?: string
|
|
98
|
+
ports?: (typeof MessagePort)[]
|
|
99
|
+
source?: typeof MessagePort | null
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
interface MessageEvent<T = any> extends Event {
|
|
103
|
+
readonly data: T
|
|
104
|
+
readonly lastEventId: string
|
|
105
|
+
readonly origin: string
|
|
106
|
+
readonly ports: ReadonlyArray<typeof MessagePort>
|
|
107
|
+
readonly source: typeof MessagePort | null
|
|
108
|
+
initMessageEvent(
|
|
109
|
+
type: string,
|
|
110
|
+
bubbles?: boolean,
|
|
111
|
+
cancelable?: boolean,
|
|
112
|
+
data?: any,
|
|
113
|
+
origin?: string,
|
|
114
|
+
lastEventId?: string,
|
|
115
|
+
source?: typeof MessagePort | null,
|
|
116
|
+
ports?: (typeof MessagePort)[]
|
|
117
|
+
): void;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export declare const MessageEvent: {
|
|
121
|
+
prototype: MessageEvent
|
|
122
|
+
new<T>(type: string, eventInitDict?: MessageEventInit<T>): MessageEvent<T>
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
interface ErrorEventInit extends EventInit {
|
|
126
|
+
message?: string
|
|
127
|
+
filename?: string
|
|
128
|
+
lineno?: number
|
|
129
|
+
colno?: number
|
|
130
|
+
error?: any
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
interface ErrorEvent extends Event {
|
|
134
|
+
readonly message: string
|
|
135
|
+
readonly filename: string
|
|
136
|
+
readonly lineno: number
|
|
137
|
+
readonly colno: number
|
|
138
|
+
readonly error: any
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export declare const ErrorEvent: {
|
|
142
|
+
prototype: ErrorEvent
|
|
143
|
+
new (type: string, eventInitDict?: ErrorEventInit): ErrorEvent
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
interface WebSocketInit {
|
|
147
|
+
protocols?: string | string[],
|
|
148
|
+
dispatcher?: Dispatcher,
|
|
149
|
+
headers?: HeadersInit
|
|
150
|
+
}
|
|
@@ -244,6 +244,7 @@ declare namespace Dispatcher {
|
|
|
244
244
|
readonly bodyUsed: boolean;
|
|
245
245
|
arrayBuffer(): Promise<ArrayBuffer>;
|
|
246
246
|
blob(): Promise<Blob>;
|
|
247
|
+
bytes(): Promise<Uint8Array>;
|
|
247
248
|
formData(): Promise<never>;
|
|
248
249
|
json(): Promise<unknown>;
|
|
249
250
|
text(): Promise<string>;
|
|
@@ -25,6 +25,11 @@ declare class BodyReadable extends Readable {
|
|
|
25
25
|
*/
|
|
26
26
|
blob(): Promise<Blob>
|
|
27
27
|
|
|
28
|
+
/** Consumes and returns the body as an Uint8Array
|
|
29
|
+
* https://fetch.spec.whatwg.org/#dom-body-bytes
|
|
30
|
+
*/
|
|
31
|
+
bytes(): Promise<Uint8Array>
|
|
32
|
+
|
|
28
33
|
/** Consumes and returns the body as an ArrayBuffer
|
|
29
34
|
* https://fetch.spec.whatwg.org/#dom-body-arraybuffer
|
|
30
35
|
*/
|
|
@@ -67,6 +67,12 @@ interface WebidlUtil {
|
|
|
67
67
|
* Stringifies {@param V}
|
|
68
68
|
*/
|
|
69
69
|
Stringify (V: any): string
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Mark a value as uncloneable for Node.js.
|
|
73
|
+
* This is only effective in some newer Node.js versions.
|
|
74
|
+
*/
|
|
75
|
+
markAsUncloneable (V: any): void
|
|
70
76
|
}
|
|
71
77
|
|
|
72
78
|
interface WebidlConverters {
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainlink/external-adapter-framework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"ajv": "8.17.1",
|
|
8
|
-
"axios": "1.8.
|
|
8
|
+
"axios": "1.8.4",
|
|
9
9
|
"eventsource": "2.0.2",
|
|
10
|
-
"fastify": "5.2.
|
|
10
|
+
"fastify": "5.2.2",
|
|
11
11
|
"ioredis": "5.6.0",
|
|
12
12
|
"mock-socket": "9.3.1",
|
|
13
13
|
"pino": "9.6.0",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"build-generator": "mkdir -p ./dist/src/generator-adapter/generators/app/templates && cp -R scripts/generator-adapter/generators/app/templates dist/src/generator-adapter/generators/app && cp scripts/generator-adapter/package.json dist/src/generator-adapter && cp -R scripts/generator-adapter/node_modules dist/src/generator-adapter && tsc --project scripts/generator-adapter/tsconfig.json && tsc scripts/adapter-generator.ts --outDir dist/src",
|
|
23
23
|
"generate-docs": "typedoc src/**/*.ts",
|
|
24
24
|
"generate-ref-tables": "ts-node scripts/metrics-table.ts > docs/reference-tables/metrics.md && ts-node scripts/ea-settings-table.ts > docs/reference-tables/ea-settings.md && yarn prettier --write docs/reference-tables",
|
|
25
|
-
"lint-fix": "eslint --max-warnings=0 --fix . && prettier --write
|
|
26
|
-
"lint": "eslint --max-warnings=0 . && prettier --check
|
|
25
|
+
"lint-fix": "eslint --max-warnings=0 --fix . && prettier --write '**/*.{ts,md,json,yaml}'",
|
|
26
|
+
"lint": "eslint --max-warnings=0 . && prettier --check '**/*.{ts,md,json,yaml}'",
|
|
27
27
|
"portal-path": "echo \"portal:$(readlink -f ./dist/src)\"",
|
|
28
28
|
"test-debug": "EA_HOST=localhost LOG_LEVEL=trace DEBUG=true EA_PORT=0 c8 ava --verbose",
|
|
29
29
|
"test": "tsc -p test/tsconfig.json --noEmit && yarn ava",
|
|
@@ -37,15 +37,15 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@sinonjs/fake-timers": "14.0.0",
|
|
39
39
|
"@types/eventsource": "1.1.15",
|
|
40
|
-
"@types/node": "22.
|
|
40
|
+
"@types/node": "22.14.0",
|
|
41
41
|
"@types/sinonjs__fake-timers": "8.1.5",
|
|
42
|
-
"@types/ws": "8.18.
|
|
43
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
44
|
-
"@typescript-eslint/parser": "8.
|
|
42
|
+
"@types/ws": "8.18.1",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "8.29.0",
|
|
44
|
+
"@typescript-eslint/parser": "8.29.0",
|
|
45
45
|
"ava": "6.2.0",
|
|
46
46
|
"axios-mock-adapter": "2.1.0",
|
|
47
47
|
"c8": "10.1.3",
|
|
48
|
-
"eslint": "9.
|
|
48
|
+
"eslint": "9.24.0",
|
|
49
49
|
"eslint-config-prettier": "10.1.1",
|
|
50
50
|
"eslint-plugin-tsdoc": "0.4.0",
|
|
51
51
|
"mocksse": "1.0.4",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"ts-node": "10.9.2",
|
|
54
54
|
"ts-node-dev": "2.0.0",
|
|
55
55
|
"typedoc": "0.28.1",
|
|
56
|
-
"typescript": "5.8.
|
|
56
|
+
"typescript": "5.8.3"
|
|
57
57
|
},
|
|
58
58
|
"prettier": {
|
|
59
59
|
"semi": false,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type Callback<T> = () => Promise<T>;
|
|
2
|
+
type Resolve<T> = (arg: T | Promise<T>) => void;
|
|
3
|
+
export declare class GroupRunner {
|
|
4
|
+
private groupSize;
|
|
5
|
+
private currentGroup;
|
|
6
|
+
private previousStartRunning;
|
|
7
|
+
constructor(groupSize: number);
|
|
8
|
+
run<T>(callback: Callback<T>): Promise<T>;
|
|
9
|
+
startRunning<T>(callback: Callback<T>, resolve: Resolve<T>): Promise<void>;
|
|
10
|
+
wrapFunction<Args extends unknown[], Return>(func: (...args: Args) => Promise<Return>): (...args: Args) => Promise<Return>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupRunner = void 0;
|
|
4
|
+
// Runs tasks in groups of a fixed size.
|
|
5
|
+
// The next group won't be started until the previous group is finished.
|
|
6
|
+
//
|
|
7
|
+
// Example usage:
|
|
8
|
+
//
|
|
9
|
+
// const fetchBalances(addresses: string[]): Promise<number[]> {
|
|
10
|
+
// // addresses can contain thousands of addresses
|
|
11
|
+
// const groupRunner = new GroupRunner(10)
|
|
12
|
+
// const getBalance = groupRunner.wrapFunction(fetchBalance)
|
|
13
|
+
// const balancePromises: Promise<number>[] = []
|
|
14
|
+
// for (const address of addresses) {
|
|
15
|
+
// // There will be at most 10 concurrent calls to fetchBalance.
|
|
16
|
+
// // fetchBalance might do an RPC and we don't want to get rate limited.
|
|
17
|
+
// balancePromises.push(getBalance(address)))
|
|
18
|
+
// }
|
|
19
|
+
// return Promise.all(balancePromises)
|
|
20
|
+
// }
|
|
21
|
+
//
|
|
22
|
+
//
|
|
23
|
+
// Implementation note:
|
|
24
|
+
// Once the size has been reached, we wait for all previous tasks to finish
|
|
25
|
+
// before running the new task.
|
|
26
|
+
// Alternatively, we could run more tasks as soon as some (rather than all)
|
|
27
|
+
// tasks have finished, to make progress sooner, but the former is what's
|
|
28
|
+
// currently used in multiple places in the external-adapters-js repo so we
|
|
29
|
+
// chose that behavior.
|
|
30
|
+
class GroupRunner {
|
|
31
|
+
constructor(groupSize) {
|
|
32
|
+
this.groupSize = groupSize;
|
|
33
|
+
this.currentGroup = [];
|
|
34
|
+
this.previousStartRunning = Promise.resolve();
|
|
35
|
+
}
|
|
36
|
+
// Calls the given callback eventually but makes sure any previous group of
|
|
37
|
+
// groupSize size has settled before calling and subsequent callbacks.
|
|
38
|
+
run(callback) {
|
|
39
|
+
return new Promise((resolve) => {
|
|
40
|
+
// This creates an implicit queue which guarantees that there are no
|
|
41
|
+
// concurrent calls into startRunning. This is necessary to avoid having
|
|
42
|
+
// currentGroup being cleared concurrently.
|
|
43
|
+
this.previousStartRunning = this.previousStartRunning.then(() => {
|
|
44
|
+
return this.startRunning(callback, resolve);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Waits for a previous group to finish, if necessary, and then runs the
|
|
49
|
+
// given callback. When this method resolves, the callback has been called
|
|
50
|
+
// but not necessarily resolved.
|
|
51
|
+
async startRunning(callback, resolve) {
|
|
52
|
+
if (this.currentGroup.length >= this.groupSize) {
|
|
53
|
+
await Promise.allSettled(this.currentGroup);
|
|
54
|
+
this.currentGroup = [];
|
|
55
|
+
}
|
|
56
|
+
const promise = callback();
|
|
57
|
+
this.currentGroup.push(promise);
|
|
58
|
+
resolve(promise);
|
|
59
|
+
}
|
|
60
|
+
wrapFunction(func) {
|
|
61
|
+
return (...args) => {
|
|
62
|
+
return this.run(() => func(...args));
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.GroupRunner = GroupRunner;
|
|
67
|
+
//# sourceMappingURL=group-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-runner.js","sourceRoot":"","sources":["../../../src/util/group-runner.ts"],"names":[],"mappings":";;;AAGA,wCAAwC;AACxC,wEAAwE;AACxE,EAAE;AACF,iBAAiB;AACjB,EAAE;AACF,gEAAgE;AAChE,qDAAqD;AACrD,6CAA6C;AAC7C,+DAA+D;AAC/D,mDAAmD;AACnD,wCAAwC;AACxC,qEAAqE;AACrE,8EAA8E;AAC9E,kDAAkD;AAClD,OAAO;AACP,yCAAyC;AACzC,IAAI;AACJ,EAAE;AACF,EAAE;AACF,uBAAuB;AACvB,2EAA2E;AAC3E,+BAA+B;AAC/B,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,uBAAuB;AACvB,MAAa,WAAW;IAItB,YAAoB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAH7B,iBAAY,GAAuB,EAAE,CAAA;QACrC,yBAAoB,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAEvB,CAAC;IAEzC,2EAA2E;IAC3E,sEAAsE;IACtE,GAAG,CAAI,QAAqB;QAC1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,oEAAoE;YACpE,wEAAwE;YACxE,2CAA2C;YAC3C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC9D,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,gCAAgC;IAChC,KAAK,CAAC,YAAY,CAAI,QAAqB,EAAE,OAAmB;QAC9D,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/C,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC3C,IAAI,CAAC,YAAY,GAAG,EAAE,CAAA;QACxB,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAA;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;IAED,YAAY,CACV,IAAwC;QAExC,OAAO,CAAC,GAAG,IAAU,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACtC,CAAC,CAAA;IACH,CAAC;CACF;AAvCD,kCAuCC"}
|
package/util/index.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ export declare class DoubleLinkedList {
|
|
|
34
34
|
* @returns the result of the promise
|
|
35
35
|
*/
|
|
36
36
|
export declare const timeoutPromise: <T>(label: string, promise: Promise<T>, timeout: number) => Promise<T>;
|
|
37
|
-
type DeferredResolve<T> = (value: T) => void;
|
|
37
|
+
type DeferredResolve<T> = (value: T | PromiseLike<T>) => void;
|
|
38
38
|
type DeferredReject = (reason?: unknown) => void;
|
|
39
39
|
/**
|
|
40
40
|
* This function will create a promise, and synchronously return both the promise itself and
|
package/util/testing-utils.d.ts
CHANGED
|
@@ -121,3 +121,5 @@ export declare function setEnvVariables(envVariables: NodeJS.ProcessEnv): void;
|
|
|
121
121
|
* @param provider - singleton WebSocketClassProvider
|
|
122
122
|
*/
|
|
123
123
|
export declare const mockWebSocketProvider: (provider: typeof WebSocketClassProvider) => void;
|
|
124
|
+
export declare function makeStub<T>(name: string, obj: T): T;
|
|
125
|
+
export declare const allowedUndefinedStubProps: string[];
|
package/util/testing-utils.js
CHANGED
|
@@ -33,13 +33,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.mockWebSocketProvider = exports.TestAdapter = exports.RedisMock = exports.MockCache = exports.NopTransport = exports.MockWebsocketServer = exports.MockWebsocket = void 0;
|
|
36
|
+
exports.allowedUndefinedStubProps = exports.mockWebSocketProvider = exports.TestAdapter = exports.RedisMock = exports.MockCache = exports.NopTransport = exports.MockWebsocketServer = exports.MockWebsocket = void 0;
|
|
37
37
|
exports.runPeriodicAsyncBackgroundExecution = runPeriodicAsyncBackgroundExecution;
|
|
38
38
|
exports.runAllUntil = runAllUntil;
|
|
39
39
|
exports.runAllUntilTime = runAllUntilTime;
|
|
40
40
|
exports.assertEqualResponses = assertEqualResponses;
|
|
41
41
|
exports.waitUntilResolved = waitUntilResolved;
|
|
42
42
|
exports.setEnvVariables = setEnvVariables;
|
|
43
|
+
exports.makeStub = makeStub;
|
|
43
44
|
const mock_socket_1 = require("mock-socket");
|
|
44
45
|
const client = __importStar(require("prom-client"));
|
|
45
46
|
const cache_1 = require("../cache");
|
|
@@ -374,5 +375,68 @@ const mockWebSocketProvider = (provider) => {
|
|
|
374
375
|
provider.set(MockWebSocket); // eslint-disable-line @typescript-eslint/no-explicit-any
|
|
375
376
|
};
|
|
376
377
|
exports.mockWebSocketProvider = mockWebSocketProvider;
|
|
378
|
+
// Wraps an object such that accessing properties that do not exist will throw
|
|
379
|
+
// an error instead of returning undefined.
|
|
380
|
+
//
|
|
381
|
+
// This is useful during unit test creation, as it makes it clear which
|
|
382
|
+
// properties are missing rather than giving an error later on that undefined
|
|
383
|
+
// doesn't have some other property.
|
|
384
|
+
//
|
|
385
|
+
// Once a test is passing, you can remove the wrapping and the test will still
|
|
386
|
+
// pass. But it might be useful to keep it for when the code under test is
|
|
387
|
+
// changed later on.
|
|
388
|
+
//
|
|
389
|
+
// Example usage:
|
|
390
|
+
//
|
|
391
|
+
// In code under test:
|
|
392
|
+
//
|
|
393
|
+
// function doThing(obj) {
|
|
394
|
+
// const baz = obj.foo.baz
|
|
395
|
+
// ...
|
|
396
|
+
// }
|
|
397
|
+
//
|
|
398
|
+
// In test code:
|
|
399
|
+
//
|
|
400
|
+
// const obj = makeStub('obj', { foo: { bar: 1 } })
|
|
401
|
+
// doThing(obj)
|
|
402
|
+
//
|
|
403
|
+
// Throws (and logs, in case the error is caught by the code under test):
|
|
404
|
+
// Error: Property 'obj.foo.baz' does not exist
|
|
405
|
+
function makeStub(name, obj) {
|
|
406
|
+
if (obj === null || typeof obj !== 'object') {
|
|
407
|
+
return obj;
|
|
408
|
+
}
|
|
409
|
+
return new Proxy(obj, {
|
|
410
|
+
get: (target, prop) => {
|
|
411
|
+
const propName = `${name}.${String(prop)}`;
|
|
412
|
+
if (!(prop in target) && !isStubPropAllowedUndefined(prop)) {
|
|
413
|
+
const message = `Property '${propName}' does not exist`;
|
|
414
|
+
// eslint-disable-next-line no-console
|
|
415
|
+
console.error(message);
|
|
416
|
+
throw new Error(message);
|
|
417
|
+
}
|
|
418
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
419
|
+
return makeStub(propName, target[prop]);
|
|
420
|
+
},
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
// Properties checked by jest which don't need to be defined:
|
|
424
|
+
exports.allowedUndefinedStubProps = [
|
|
425
|
+
'$$typeof',
|
|
426
|
+
'nodeType',
|
|
427
|
+
'tagName',
|
|
428
|
+
'hasAttribute',
|
|
429
|
+
'@@__IMMUTABLE_ITERABLE__@@',
|
|
430
|
+
'@@__IMMUTABLE_RECORD__@@',
|
|
431
|
+
'toJSON',
|
|
432
|
+
'asymmetricMatch',
|
|
433
|
+
'then',
|
|
434
|
+
];
|
|
435
|
+
const isStubPropAllowedUndefined = (prop) => {
|
|
436
|
+
if (typeof prop === 'symbol') {
|
|
437
|
+
return true;
|
|
438
|
+
}
|
|
439
|
+
return exports.allowedUndefinedStubProps.includes(prop);
|
|
440
|
+
};
|
|
377
441
|
/* c8 ignore stop */ // eslint-disable-line
|
|
378
442
|
//# sourceMappingURL=testing-utils.js.map
|