@chainlink/external-adapter-framework 2.6.0 → 2.7.1
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/adapter/types.d.ts +1 -1
- package/config/index.d.ts +4 -0
- package/config/index.js +4 -0
- package/config/index.js.map +1 -1
- package/debug/router.js +7 -36
- package/debug/router.js.map +1 -1
- package/debug/settings-page.d.ts +1 -7
- package/debug/settings-page.js +0 -22
- package/debug/settings-page.js.map +1 -1
- package/generator-adapter/generators/app/index.js +11 -5
- package/generator-adapter/node_modules/.yarn-integrity +14 -13
- package/generator-adapter/node_modules/@types/node/README.md +3 -3
- package/generator-adapter/node_modules/@types/node/async_hooks.d.ts +65 -1
- package/generator-adapter/node_modules/@types/node/buffer.buffer.d.ts +2 -0
- package/generator-adapter/node_modules/@types/node/buffer.d.ts +8 -4
- package/generator-adapter/node_modules/@types/node/child_process.d.ts +26 -122
- package/generator-adapter/node_modules/@types/node/cluster.d.ts +1 -1
- package/generator-adapter/node_modules/@types/node/compatibility/disposable.d.ts +0 -2
- package/generator-adapter/node_modules/@types/node/compatibility/indexable.d.ts +0 -3
- package/generator-adapter/node_modules/@types/node/compatibility/iterators.d.ts +0 -1
- package/generator-adapter/node_modules/@types/node/crypto.d.ts +17 -1
- package/generator-adapter/node_modules/@types/node/diagnostics_channel.d.ts +37 -13
- package/generator-adapter/node_modules/@types/node/dns/promises.d.ts +36 -9
- package/generator-adapter/node_modules/@types/node/dns.d.ts +73 -20
- package/generator-adapter/node_modules/@types/node/events.d.ts +0 -1
- package/generator-adapter/node_modules/@types/node/fs/promises.d.ts +62 -54
- package/generator-adapter/node_modules/@types/node/fs.d.ts +149 -54
- package/generator-adapter/node_modules/@types/node/globals.d.ts +137 -478
- package/generator-adapter/node_modules/@types/node/http.d.ts +93 -6
- package/generator-adapter/node_modules/@types/node/http2.d.ts +81 -2
- package/generator-adapter/node_modules/@types/node/https.d.ts +5 -0
- package/generator-adapter/node_modules/@types/node/index.d.ts +7 -3
- package/generator-adapter/node_modules/@types/node/{inspector.d.ts → inspector.generated.d.ts} +219 -10
- package/generator-adapter/node_modules/@types/node/module.d.ts +136 -17
- package/generator-adapter/node_modules/@types/node/net.d.ts +15 -9
- package/generator-adapter/node_modules/@types/node/package.json +3 -83
- package/generator-adapter/node_modules/@types/node/perf_hooks.d.ts +2 -2
- package/generator-adapter/node_modules/@types/node/process.d.ts +3 -4
- package/generator-adapter/node_modules/@types/node/querystring.d.ts +2 -3
- package/generator-adapter/node_modules/@types/node/readline/promises.d.ts +0 -1
- package/generator-adapter/node_modules/@types/node/repl.d.ts +3 -5
- package/generator-adapter/node_modules/@types/node/sqlite.d.ts +207 -0
- package/generator-adapter/node_modules/@types/node/stream/web.d.ts +11 -3
- package/generator-adapter/node_modules/@types/node/stream.d.ts +5 -10
- package/generator-adapter/node_modules/@types/node/test.d.ts +1873 -1970
- package/generator-adapter/node_modules/@types/node/tls.d.ts +1 -1
- package/generator-adapter/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +2 -0
- package/generator-adapter/node_modules/@types/node/ts5.6/index.d.ts +7 -3
- package/generator-adapter/node_modules/@types/node/url.d.ts +12 -3
- package/generator-adapter/node_modules/@types/node/util.d.ts +33 -5
- package/generator-adapter/node_modules/@types/node/v8.d.ts +60 -30
- package/generator-adapter/node_modules/@types/node/vm.d.ts +61 -8
- package/generator-adapter/node_modules/@types/node/web-globals/abortcontroller.d.ts +34 -0
- package/generator-adapter/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
- package/generator-adapter/node_modules/@types/node/web-globals/events.d.ts +94 -0
- package/generator-adapter/node_modules/@types/node/web-globals/fetch.d.ts +46 -0
- package/generator-adapter/node_modules/@types/node/web-globals/navigator.d.ts +22 -0
- package/generator-adapter/node_modules/@types/node/web-globals/storage.d.ts +24 -0
- package/generator-adapter/node_modules/@types/node/worker_threads.d.ts +87 -28
- package/generator-adapter/node_modules/@types/node/zlib.d.ts +8 -2
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.d.ts +3 -0
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js +12 -2
- package/generator-adapter/node_modules/@yeoman/adapter/dist/adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.d.ts +3 -0
- package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.js +12 -2
- package/generator-adapter/node_modules/@yeoman/adapter/dist/queued-adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.d.ts +3 -0
- package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.js +12 -2
- package/generator-adapter/node_modules/@yeoman/adapter/dist/testing/test-adapter.js.map +1 -1
- package/generator-adapter/node_modules/@yeoman/adapter/package.json +4 -4
- package/generator-adapter/node_modules/@yeoman/adapter/types/adapter.d.ts +12 -1
- package/generator-adapter/node_modules/@yeoman/types/package.json +3 -3
- package/generator-adapter/node_modules/@yeoman/types/types/environment/environment.d.ts +4 -1
- package/generator-adapter/node_modules/@yeoman/types/types/environment/methods-options.d.ts +7 -3
- package/generator-adapter/node_modules/@yeoman/types/types/generator/generator.d.ts +8 -5
- package/generator-adapter/node_modules/@yeoman/types/types/generator/utils.d.ts +1 -0
- package/generator-adapter/node_modules/ansi-regex/index.d.ts +9 -13
- package/generator-adapter/node_modules/ansi-regex/index.js +6 -6
- package/generator-adapter/node_modules/ansi-regex/license +1 -1
- package/generator-adapter/node_modules/ansi-regex/package.json +12 -6
- package/generator-adapter/node_modules/ansi-regex/readme.md +4 -22
- package/generator-adapter/node_modules/cli-spinners/index.d.ts +122 -111
- package/generator-adapter/node_modules/cli-spinners/index.js +7 -11
- package/generator-adapter/node_modules/cli-spinners/package.json +15 -9
- package/generator-adapter/node_modules/cli-spinners/readme.md +23 -3
- package/generator-adapter/node_modules/cli-spinners/spinners.json +44 -1
- package/generator-adapter/node_modules/emoji-regex/README.md +14 -48
- package/generator-adapter/node_modules/emoji-regex/index.d.ts +21 -1
- package/generator-adapter/node_modules/emoji-regex/index.js +5 -3
- package/generator-adapter/node_modules/emoji-regex/package.json +12 -7
- package/generator-adapter/node_modules/get-east-asian-width/index.js +2 -3
- package/generator-adapter/node_modules/get-east-asian-width/lookup.js +11 -11
- package/generator-adapter/node_modules/get-east-asian-width/package.json +1 -1
- package/generator-adapter/node_modules/ora/index.d.ts +3 -3
- package/generator-adapter/node_modules/ora/index.js +67 -48
- package/generator-adapter/node_modules/ora/node_modules/chalk/package.json +83 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/readme.md +297 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/index.d.ts +325 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/index.js +225 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/utilities.js +33 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +236 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/ansi-styles/index.js +223 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/supports-color/browser.d.ts +1 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/supports-color/browser.js +34 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/supports-color/index.d.ts +55 -0
- package/generator-adapter/node_modules/ora/node_modules/chalk/source/vendor/supports-color/index.js +190 -0
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser-symbols.js +4 -0
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/browser.js +1 -8
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/index.js +1 -20
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/package.json +10 -7
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/symbols.js +14 -0
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/package.json +3 -1
- package/generator-adapter/node_modules/ora/node_modules/strip-ansi/readme.md +5 -9
- package/generator-adapter/node_modules/ora/package.json +13 -13
- package/generator-adapter/node_modules/ora/readme.md +49 -3
- package/generator-adapter/node_modules/string-width/index.js +52 -45
- package/generator-adapter/node_modules/string-width/package.json +8 -7
- package/generator-adapter/node_modules/{string-width → strip-ansi}/node_modules/ansi-regex/index.d.ts +13 -9
- package/generator-adapter/node_modules/strip-ansi/node_modules/ansi-regex/index.js +10 -0
- package/generator-adapter/node_modules/{ora/node_modules/log-symbols/node_modules/is-unicode-supported → strip-ansi/node_modules/ansi-regex}/license +1 -1
- package/generator-adapter/node_modules/{string-width → strip-ansi}/node_modules/ansi-regex/package.json +6 -12
- package/generator-adapter/node_modules/{ora → strip-ansi}/node_modules/ansi-regex/readme.md +22 -4
- package/generator-adapter/package.json +3 -3
- package/index.js +3 -0
- package/index.js.map +1 -1
- package/package.json +19 -19
- package/status/router.d.ts +49 -0
- package/status/router.js +55 -0
- package/status/router.js.map +1 -0
- package/transports/http.d.ts +1 -2
- package/transports/sse.d.ts +2 -2
- package/transports/sse.js +2 -5
- package/transports/sse.js.map +1 -1
- package/transports/websocket.js +53 -17
- package/transports/websocket.js.map +1 -1
- package/util/settings.d.ts +11 -0
- package/util/settings.js +29 -0
- package/util/settings.js.map +1 -0
- package/generator-adapter/node_modules/@types/node/dom-events.d.ts +0 -124
- package/generator-adapter/node_modules/emoji-regex/index.mjs +0 -4
- package/generator-adapter/node_modules/ora/node_modules/ansi-regex/index.d.ts +0 -33
- package/generator-adapter/node_modules/ora/node_modules/ansi-regex/index.js +0 -10
- package/generator-adapter/node_modules/ora/node_modules/ansi-regex/package.json +0 -61
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported/index.d.ts +0 -12
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported/index.js +0 -17
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported/package.json +0 -43
- package/generator-adapter/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported/readme.md +0 -35
- package/generator-adapter/node_modules/string-width/node_modules/ansi-regex/index.js +0 -10
- package/generator-adapter/node_modules/string-width/node_modules/ansi-regex/license +0 -9
- package/generator-adapter/node_modules/string-width/node_modules/ansi-regex/readme.md +0 -60
- package/generator-adapter/node_modules/wrap-ansi/node_modules/emoji-regex/LICENSE-MIT.txt +0 -20
- package/generator-adapter/node_modules/wrap-ansi/node_modules/emoji-regex/README.md +0 -73
- package/generator-adapter/node_modules/wrap-ansi/node_modules/emoji-regex/index.d.ts +0 -23
- package/generator-adapter/node_modules/wrap-ansi/node_modules/emoji-regex/index.js +0 -6
- package/generator-adapter/node_modules/wrap-ansi/node_modules/emoji-regex/package.json +0 -50
- /package/generator-adapter/node_modules/{wrap-ansi/node_modules/emoji-regex → emoji-regex}/es2015/index.js +0 -0
- /package/generator-adapter/node_modules/{wrap-ansi/node_modules/emoji-regex → emoji-regex}/es2015/text.js +0 -0
- /package/generator-adapter/node_modules/{wrap-ansi/node_modules/emoji-regex → emoji-regex}/text.js +0 -0
- /package/generator-adapter/node_modules/ora/node_modules/{ansi-regex → chalk}/license +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "string-width",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.1.0",
|
|
4
4
|
"description": "Get the visual width of a string - the number of columns required to display it",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "sindresorhus/string-width",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"sideEffects": false,
|
|
19
19
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
20
|
+
"node": ">=20"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"test": "xo && ava && tsd"
|
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
"columns",
|
|
37
37
|
"fullwidth",
|
|
38
38
|
"full-width",
|
|
39
|
+
"wcwidth",
|
|
40
|
+
"wcswidth",
|
|
39
41
|
"full",
|
|
40
42
|
"ansi",
|
|
41
43
|
"escape",
|
|
@@ -52,13 +54,12 @@
|
|
|
52
54
|
"east-asian-width"
|
|
53
55
|
],
|
|
54
56
|
"dependencies": {
|
|
55
|
-
"
|
|
56
|
-
"get-east-asian-width": "^1.0.0",
|
|
57
|
+
"get-east-asian-width": "^1.3.0",
|
|
57
58
|
"strip-ansi": "^7.1.0"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
|
-
"ava": "^
|
|
61
|
-
"tsd": "^0.
|
|
62
|
-
"xo": "^
|
|
61
|
+
"ava": "^6.4.1",
|
|
62
|
+
"tsd": "^0.33.0",
|
|
63
|
+
"xo": "^1.2.2"
|
|
63
64
|
}
|
|
64
65
|
}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
declare namespace ansiRegex {
|
|
2
|
+
interface Options {
|
|
3
|
+
/**
|
|
4
|
+
Match only the first ANSI escape.
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
6
|
+
@default false
|
|
7
|
+
*/
|
|
8
|
+
onlyFirst: boolean;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
Regular expression for matching ANSI escape codes.
|
|
12
14
|
|
|
13
15
|
@example
|
|
14
16
|
```
|
|
15
|
-
import ansiRegex
|
|
17
|
+
import ansiRegex = require('ansi-regex');
|
|
16
18
|
|
|
17
19
|
ansiRegex().test('\u001B[4mcake\u001B[0m');
|
|
18
20
|
//=> true
|
|
@@ -30,4 +32,6 @@ ansiRegex().test('cake');
|
|
|
30
32
|
//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
|
|
31
33
|
```
|
|
32
34
|
*/
|
|
33
|
-
|
|
35
|
+
declare function ansiRegex(options?: ansiRegex.Options): RegExp;
|
|
36
|
+
|
|
37
|
+
export = ansiRegex;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
module.exports = ({onlyFirst = false} = {}) => {
|
|
4
|
+
const pattern = [
|
|
5
|
+
'[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)',
|
|
6
|
+
'(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'
|
|
7
|
+
].join('|');
|
|
8
|
+
|
|
9
|
+
return new RegExp(pattern, onlyFirst ? undefined : 'g');
|
|
10
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (
|
|
3
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
6
|
|
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ansi-regex",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "Regular expression for matching ANSI escape codes",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "chalk/ansi-regex",
|
|
7
|
-
"funding": "https://github.com/chalk/ansi-regex?sponsor=1",
|
|
8
7
|
"author": {
|
|
9
8
|
"name": "Sindre Sorhus",
|
|
10
9
|
"email": "sindresorhus@gmail.com",
|
|
11
|
-
"url": "
|
|
10
|
+
"url": "sindresorhus.com"
|
|
12
11
|
},
|
|
13
|
-
"type": "module",
|
|
14
|
-
"exports": "./index.js",
|
|
15
|
-
"types": "./index.d.ts",
|
|
16
|
-
"sideEffects": false,
|
|
17
12
|
"engines": {
|
|
18
|
-
"node": ">=
|
|
13
|
+
"node": ">=8"
|
|
19
14
|
},
|
|
20
15
|
"scripts": {
|
|
21
16
|
"test": "xo && ava && tsd",
|
|
@@ -53,9 +48,8 @@
|
|
|
53
48
|
"pattern"
|
|
54
49
|
],
|
|
55
50
|
"devDependencies": {
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"xo": "^0.54.2"
|
|
51
|
+
"ava": "^2.4.0",
|
|
52
|
+
"tsd": "^0.9.0",
|
|
53
|
+
"xo": "^0.25.3"
|
|
60
54
|
}
|
|
61
55
|
}
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
> Regular expression for matching [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
|
|
4
4
|
|
|
5
|
+
|
|
5
6
|
## Install
|
|
6
7
|
|
|
7
|
-
```sh
|
|
8
|
-
npm install ansi-regex
|
|
9
8
|
```
|
|
9
|
+
$ npm install ansi-regex
|
|
10
|
+
```
|
|
11
|
+
|
|
10
12
|
|
|
11
13
|
## Usage
|
|
12
14
|
|
|
13
15
|
```js
|
|
14
|
-
|
|
16
|
+
const ansiRegex = require('ansi-regex');
|
|
15
17
|
|
|
16
18
|
ansiRegex().test('\u001B[4mcake\u001B[0m');
|
|
17
19
|
//=> true
|
|
@@ -29,6 +31,7 @@ ansiRegex().test('cake');
|
|
|
29
31
|
//=> ['\u001B]8;;https://github.com\u0007', '\u001B]8;;\u0007']
|
|
30
32
|
```
|
|
31
33
|
|
|
34
|
+
|
|
32
35
|
## API
|
|
33
36
|
|
|
34
37
|
### ansiRegex(options?)
|
|
@@ -41,11 +44,12 @@ Type: `object`
|
|
|
41
44
|
|
|
42
45
|
##### onlyFirst
|
|
43
46
|
|
|
44
|
-
Type: `boolean
|
|
47
|
+
Type: `boolean`<br>
|
|
45
48
|
Default: `false` *(Matches any ANSI escape codes in a string)*
|
|
46
49
|
|
|
47
50
|
Match only the first ANSI escape.
|
|
48
51
|
|
|
52
|
+
|
|
49
53
|
## FAQ
|
|
50
54
|
|
|
51
55
|
### Why do you test for codes not in the ECMA 48 standard?
|
|
@@ -54,7 +58,21 @@ Some of the codes we run as a test are codes that we acquired finding various li
|
|
|
54
58
|
|
|
55
59
|
On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
|
|
56
60
|
|
|
61
|
+
|
|
57
62
|
## Maintainers
|
|
58
63
|
|
|
59
64
|
- [Sindre Sorhus](https://github.com/sindresorhus)
|
|
60
65
|
- [Josh Junon](https://github.com/qix-)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
<div align="center">
|
|
71
|
+
<b>
|
|
72
|
+
<a href="https://tidelift.com/subscription/pkg/npm-ansi-regex?utm_source=npm-ansi-regex&utm_medium=referral&utm_campaign=readme">Get professional support for this package with a Tidelift subscription</a>
|
|
73
|
+
</b>
|
|
74
|
+
<br>
|
|
75
|
+
<sub>
|
|
76
|
+
Tidelift helps make open source sustainable for maintainers while giving companies<br>assurances about security, maintenance, and licensing for their dependencies.
|
|
77
|
+
</sub>
|
|
78
|
+
</div>
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
],
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"yeoman-generator": "7.5.1",
|
|
15
|
-
"@yeoman/types": "1.
|
|
15
|
+
"@yeoman/types": "1.8.0",
|
|
16
16
|
"mem-fs": "4.1.2",
|
|
17
|
-
"@yeoman/adapter": "
|
|
18
|
-
"@types/node": "22.
|
|
17
|
+
"@yeoman/adapter": "3.1.0",
|
|
18
|
+
"@types/node": "22.18.6"
|
|
19
19
|
}
|
|
20
20
|
}
|
package/index.js
CHANGED
|
@@ -13,6 +13,7 @@ const router_1 = __importDefault(require("./debug/router"));
|
|
|
13
13
|
const metrics_1 = require("./metrics");
|
|
14
14
|
const util_1 = require("./util");
|
|
15
15
|
const validation_1 = require("./validation");
|
|
16
|
+
const router_2 = __importDefault(require("./status/router"));
|
|
16
17
|
const logger = (0, util_1.makeLogger)('Main');
|
|
17
18
|
const VERSION = process.env['npm_package_version'];
|
|
18
19
|
const getTLSOptions = (adapterSettings) => {
|
|
@@ -151,6 +152,8 @@ async function buildRestApi(adapter) {
|
|
|
151
152
|
(0, router_1.default)(app, adapter);
|
|
152
153
|
logger.info('Serving debug endpoints');
|
|
153
154
|
}
|
|
155
|
+
// Register status endpoint
|
|
156
|
+
(0, router_2.default)(app, adapter);
|
|
154
157
|
// Use global error handling
|
|
155
158
|
app.setErrorHandler(validation_1.errorCatchingMiddleware);
|
|
156
159
|
// Always reply with json content
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAkD;AAElD,+BAA2B;AAC3B,qCAAwC;AACxC,uCAAwD;AACxD,+DAA8D;AAE9D,4DAAmD;AACnD,uCAAsE;AACtE,iCAMe;AACf,6CAA2E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainlink/external-adapter-framework",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"repository": "git://github.com/smartcontractkit/ea-framework-js.git",
|
|
6
7
|
"dependencies": {
|
|
7
8
|
"ajv": "8.17.1",
|
|
8
|
-
"axios": "1.
|
|
9
|
-
"eventsource": "
|
|
10
|
-
"fastify": "5.
|
|
11
|
-
"ioredis": "5.
|
|
9
|
+
"axios": "1.12.2",
|
|
10
|
+
"eventsource": "4.0.0",
|
|
11
|
+
"fastify": "5.6.1",
|
|
12
|
+
"ioredis": "5.8.0",
|
|
12
13
|
"mock-socket": "9.3.1",
|
|
13
|
-
"pino": "
|
|
14
|
-
"pino-pretty": "13.
|
|
14
|
+
"pino": "10.0.0",
|
|
15
|
+
"pino-pretty": "13.1.1",
|
|
15
16
|
"prom-client": "15.1.3",
|
|
16
17
|
"redlock": "5.0.0-beta.2",
|
|
17
|
-
"ws": "8.18.
|
|
18
|
+
"ws": "8.18.3"
|
|
18
19
|
},
|
|
19
20
|
"scripts": {
|
|
20
21
|
"build": "rm -rf dist/src && mkdir -p ./dist/src && cp package.json dist/src && cp README.md dist/src && tsc && yarn pre-build-generator",
|
|
@@ -35,25 +36,24 @@
|
|
|
35
36
|
"create-external-adapter": "adapter-generator.js"
|
|
36
37
|
},
|
|
37
38
|
"devDependencies": {
|
|
38
|
-
"@sinonjs/fake-timers": "
|
|
39
|
-
"@types/
|
|
40
|
-
"@types/node": "22.15.3",
|
|
39
|
+
"@sinonjs/fake-timers": "15.0.0",
|
|
40
|
+
"@types/node": "22.18.6",
|
|
41
41
|
"@types/sinonjs__fake-timers": "8.1.5",
|
|
42
42
|
"@types/ws": "8.18.1",
|
|
43
|
-
"@typescript-eslint/eslint-plugin": "8.
|
|
44
|
-
"@typescript-eslint/parser": "8.
|
|
45
|
-
"ava": "6.
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "8.45.0",
|
|
44
|
+
"@typescript-eslint/parser": "8.45.0",
|
|
45
|
+
"ava": "6.4.1",
|
|
46
46
|
"axios-mock-adapter": "2.1.0",
|
|
47
47
|
"c8": "10.1.3",
|
|
48
|
-
"eslint": "9.
|
|
49
|
-
"eslint-config-prettier": "10.1.
|
|
48
|
+
"eslint": "9.37.0",
|
|
49
|
+
"eslint-config-prettier": "10.1.8",
|
|
50
50
|
"eslint-plugin-tsdoc": "0.4.0",
|
|
51
51
|
"mocksse": "1.0.4",
|
|
52
|
-
"prettier": "3.
|
|
52
|
+
"prettier": "3.6.2",
|
|
53
53
|
"ts-node": "10.9.2",
|
|
54
54
|
"ts-node-dev": "2.0.0",
|
|
55
|
-
"typedoc": "0.28.
|
|
56
|
-
"typescript": "5.
|
|
55
|
+
"typedoc": "0.28.13",
|
|
56
|
+
"typescript": "5.9.3"
|
|
57
57
|
},
|
|
58
58
|
"prettier": {
|
|
59
59
|
"semi": false,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
import { Adapter } from '../adapter';
|
|
3
|
+
export interface StatusResponse {
|
|
4
|
+
adapter: {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
uptimeSeconds: number;
|
|
8
|
+
};
|
|
9
|
+
endpoints: {
|
|
10
|
+
name: string;
|
|
11
|
+
aliases: string[];
|
|
12
|
+
transports: string[];
|
|
13
|
+
}[];
|
|
14
|
+
defaultEndpoint: string;
|
|
15
|
+
configuration: {
|
|
16
|
+
name: string;
|
|
17
|
+
value: unknown;
|
|
18
|
+
type: string;
|
|
19
|
+
description: string;
|
|
20
|
+
required: boolean;
|
|
21
|
+
default: unknown;
|
|
22
|
+
customSetting: boolean;
|
|
23
|
+
envDefaultOverride: unknown;
|
|
24
|
+
}[];
|
|
25
|
+
runtime: {
|
|
26
|
+
nodeVersion: string;
|
|
27
|
+
platform: string;
|
|
28
|
+
architecture: string;
|
|
29
|
+
hostname: string;
|
|
30
|
+
};
|
|
31
|
+
metrics: {
|
|
32
|
+
enabled: boolean;
|
|
33
|
+
port?: number;
|
|
34
|
+
endpoint?: string;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* This function registers the status endpoint for the adapter.
|
|
39
|
+
* This endpoint provides comprehensive information about the adapter including:
|
|
40
|
+
* - Adapter metadata (name, version, commit)
|
|
41
|
+
* - Configuration (obfuscated sensitive values)
|
|
42
|
+
* - Runtime information
|
|
43
|
+
* - Dependencies status
|
|
44
|
+
* - Endpoints and transports
|
|
45
|
+
*
|
|
46
|
+
* @param app - the fastify instance that has been created
|
|
47
|
+
* @param adapter - the adapter for which to create the status endpoint
|
|
48
|
+
*/
|
|
49
|
+
export default function registerStatusEndpoint(app: FastifyInstance, adapter: Adapter): void;
|
package/status/router.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = registerStatusEndpoint;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
const os_1 = require("os");
|
|
6
|
+
const settings_1 = require("../util/settings");
|
|
7
|
+
/**
|
|
8
|
+
* This function registers the status endpoint for the adapter.
|
|
9
|
+
* This endpoint provides comprehensive information about the adapter including:
|
|
10
|
+
* - Adapter metadata (name, version, commit)
|
|
11
|
+
* - Configuration (obfuscated sensitive values)
|
|
12
|
+
* - Runtime information
|
|
13
|
+
* - Dependencies status
|
|
14
|
+
* - Endpoints and transports
|
|
15
|
+
*
|
|
16
|
+
* @param app - the fastify instance that has been created
|
|
17
|
+
* @param adapter - the adapter for which to create the status endpoint
|
|
18
|
+
*/
|
|
19
|
+
function registerStatusEndpoint(app, adapter) {
|
|
20
|
+
// Status endpoint that returns comprehensive adapter information
|
|
21
|
+
app.get((0, path_1.join)(adapter.config.settings.BASE_URL, '/status'), async () => {
|
|
22
|
+
const metricsEndpoint = adapter.config.settings.METRICS_USE_BASE_URL
|
|
23
|
+
? (0, path_1.join)(adapter.config.settings.BASE_URL, 'metrics')
|
|
24
|
+
: '/metrics';
|
|
25
|
+
const statusResponse = {
|
|
26
|
+
adapter: {
|
|
27
|
+
name: adapter.name,
|
|
28
|
+
version: process.env['npm_package_version'] || 'unknown',
|
|
29
|
+
uptimeSeconds: process.uptime(),
|
|
30
|
+
},
|
|
31
|
+
endpoints: adapter.endpoints.map((endpoint) => ({
|
|
32
|
+
name: endpoint.name,
|
|
33
|
+
aliases: endpoint.aliases || [],
|
|
34
|
+
transports: endpoint.transportRoutes.routeNames(),
|
|
35
|
+
})),
|
|
36
|
+
defaultEndpoint: adapter.defaultEndpoint || '',
|
|
37
|
+
configuration: (0, settings_1.buildSettingsList)(adapter),
|
|
38
|
+
runtime: {
|
|
39
|
+
nodeVersion: process.version,
|
|
40
|
+
platform: process.platform,
|
|
41
|
+
architecture: process.arch,
|
|
42
|
+
hostname: (0, os_1.hostname)(),
|
|
43
|
+
},
|
|
44
|
+
metrics: {
|
|
45
|
+
enabled: adapter.config.settings.METRICS_ENABLED,
|
|
46
|
+
port: adapter.config.settings.METRICS_ENABLED
|
|
47
|
+
? adapter.config.settings.METRICS_PORT
|
|
48
|
+
: undefined,
|
|
49
|
+
endpoint: adapter.config.settings.METRICS_ENABLED ? metricsEndpoint : undefined,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
return statusResponse;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/status/router.ts"],"names":[],"mappings":";;AAqDA,yCAqCC;AAzFD,+BAA2B;AAC3B,2BAA6B;AAE7B,+CAAoD;AAqCpD;;;;;;;;;;;GAWG;AACH,SAAwB,sBAAsB,CAAC,GAAoB,EAAE,OAAgB;IACnF,iEAAiE;IACjE,GAAG,CAAC,GAAG,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB;YAClE,CAAC,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;YACnD,CAAC,CAAC,UAAU,CAAA;QAEd,MAAM,cAAc,GAAmB;YACrC,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,SAAS;gBACxD,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE;aAChC;YACD,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC9C,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,UAAU,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE;aAClD,CAAC,CAAC;YACH,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE;YAC9C,aAAa,EAAE,IAAA,4BAAiB,EAAC,OAAO,CAAC;YACzC,OAAO,EAAE;gBACP,WAAW,EAAE,OAAO,CAAC,OAAO;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,YAAY,EAAE,OAAO,CAAC,IAAI;gBAC1B,QAAQ,EAAE,IAAA,aAAQ,GAAE;aACrB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe;gBAChD,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe;oBAC3C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY;oBACtC,CAAC,CAAC,SAAS;gBACb,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAChF;SACF,CAAA;QAED,OAAO,cAAc,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/transports/http.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { SubscriptionTransport } from './abstract/subscription';
|
|
|
9
9
|
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
|
10
10
|
* Extends the common TransportGenerics, adding Provider specific types for this Batch endpoint.
|
|
11
11
|
*/
|
|
12
|
-
type HttpTransportGenerics = TransportGenerics & {
|
|
12
|
+
export type HttpTransportGenerics = TransportGenerics & {
|
|
13
13
|
/**
|
|
14
14
|
* Type details for any provider specific interfaces.
|
|
15
15
|
*/
|
|
@@ -92,4 +92,3 @@ export declare class HttpTransport<T extends HttpTransportGenerics> extends Subs
|
|
|
92
92
|
private handleRequest;
|
|
93
93
|
private makeRequest;
|
|
94
94
|
}
|
|
95
|
-
export {};
|
package/transports/sse.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AxiosRequestConfig } from 'axios';
|
|
2
|
-
import EventSource from 'eventsource';
|
|
2
|
+
import { EventSource, EventSourceInit } from 'eventsource';
|
|
3
3
|
import { EndpointContext } from '../adapter';
|
|
4
4
|
import { Requester } from '../util/requester';
|
|
5
5
|
import { ProviderResult } from '../util/types';
|
|
@@ -8,7 +8,7 @@ import { TransportDependencies, TransportGenerics } from './';
|
|
|
8
8
|
import { StreamingTransport, SubscriptionDeltas } from './abstract/streaming';
|
|
9
9
|
export interface SSEConfig {
|
|
10
10
|
url: string;
|
|
11
|
-
eventSourceInitDict?:
|
|
11
|
+
eventSourceInitDict?: EventSourceInit;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
package/transports/sse.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.SseTransport = void 0;
|
|
7
|
-
const eventsource_1 =
|
|
4
|
+
const eventsource_1 = require("eventsource");
|
|
8
5
|
const cache_1 = require("../cache");
|
|
9
6
|
const util_1 = require("../util");
|
|
10
7
|
const streaming_1 = require("./abstract/streaming");
|
|
@@ -18,7 +15,7 @@ class SseTransport extends streaming_1.StreamingTransport {
|
|
|
18
15
|
constructor(config) {
|
|
19
16
|
super();
|
|
20
17
|
this.config = config;
|
|
21
|
-
this.EventSource = eventsource_1.
|
|
18
|
+
this.EventSource = eventsource_1.EventSource;
|
|
22
19
|
this.timeOfLastReq = 0;
|
|
23
20
|
}
|
|
24
21
|
getSubscriptionTtlFromConfig(adapterSettings) {
|
package/transports/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/transports/sse.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/transports/sse.ts"],"names":[],"mappings":"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"}
|
package/transports/websocket.js
CHANGED
|
@@ -10,6 +10,8 @@ const metrics_1 = require("../metrics");
|
|
|
10
10
|
const util_1 = require("../util");
|
|
11
11
|
const streaming_1 = require("./abstract/streaming");
|
|
12
12
|
const metrics_2 = require("./metrics");
|
|
13
|
+
// Explicit initial grace (1s) after open for web socket; after that, rely on "time since last message"
|
|
14
|
+
const INITIAL_WS_GRACE_MS = 1000;
|
|
13
15
|
const logger = (0, util_1.makeLogger)('WebSocketTransport');
|
|
14
16
|
class WebSocketClassProvider {
|
|
15
17
|
static set(ctor) {
|
|
@@ -39,7 +41,9 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
39
41
|
return adapterSettings.WS_SUBSCRIPTION_TTL;
|
|
40
42
|
}
|
|
41
43
|
connectionClosed() {
|
|
42
|
-
return !this.wsConnection ||
|
|
44
|
+
return (!this.wsConnection ||
|
|
45
|
+
this.wsConnection.readyState === ws_1.default.CLOSED ||
|
|
46
|
+
this.wsConnection.readyState === ws_1.default.CLOSING);
|
|
43
47
|
}
|
|
44
48
|
serializeMessage(payload) {
|
|
45
49
|
return typeof payload === 'string' ? payload : JSON.stringify(payload);
|
|
@@ -60,6 +64,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
60
64
|
},
|
|
61
65
|
// Called when any message is received by the open connection
|
|
62
66
|
message: async (event) => {
|
|
67
|
+
this.lastMessageReceivedAt = Date.now();
|
|
63
68
|
const parsed = this.deserializeMessage(event.data);
|
|
64
69
|
(0, util_1.censorLogs)(() => logger.trace(`Got ws message: ${event.data}`));
|
|
65
70
|
const providerDataReceived = Date.now();
|
|
@@ -75,8 +80,6 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
75
80
|
});
|
|
76
81
|
logger.trace(`Writing ${results?.length ?? 0} responses to cache`);
|
|
77
82
|
if (Array.isArray(results) && results.length > 0) {
|
|
78
|
-
// Updating the last message received time here, to only care about messages we use
|
|
79
|
-
this.lastMessageReceivedAt = Date.now();
|
|
80
83
|
await this.responseCache.write(this.name, results);
|
|
81
84
|
}
|
|
82
85
|
// Do this after writing so we get the values to the cache ASAP
|
|
@@ -172,18 +175,10 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
172
175
|
const now = Date.now();
|
|
173
176
|
const timeSinceLastMessage = Math.max(0, now - this.lastMessageReceivedAt);
|
|
174
177
|
const timeSinceConnectionOpened = Math.max(0, now - this.connectionOpenedAt);
|
|
175
|
-
const
|
|
176
|
-
|
|
177
|
-
timeSinceLastActivity > context.adapterSettings.WS_SUBSCRIPTION_UNRESPONSIVE_TTL;
|
|
178
|
+
const connectionUnresponsive = timeSinceConnectionOpened >= INITIAL_WS_GRACE_MS &&
|
|
179
|
+
timeSinceLastMessage > context.adapterSettings.WS_SUBSCRIPTION_UNRESPONSIVE_TTL;
|
|
178
180
|
let connectionClosed = this.connectionClosed();
|
|
179
|
-
logger.trace(`WS conn staleness info:
|
|
180
|
-
now: ${now} |
|
|
181
|
-
timeSinceLastMessage: ${timeSinceLastMessage} |
|
|
182
|
-
timeSinceConnectionOpened: ${timeSinceConnectionOpened} |
|
|
183
|
-
timeSinceLastActivity: ${timeSinceLastActivity} |
|
|
184
|
-
subscriptionUnresponsiveTtl: ${context.adapterSettings.WS_SUBSCRIPTION_UNRESPONSIVE_TTL} |
|
|
185
|
-
connectionUnresponsive: ${connectionUnresponsive} |
|
|
186
|
-
`);
|
|
181
|
+
logger.trace(`WS conn staleness info: now: ${now} | timeSinceLastMessage: ${timeSinceLastMessage} | timeSinceConnectionOpened: ${timeSinceConnectionOpened} | subscriptionUnresponsiveTtl: ${context.adapterSettings.WS_SUBSCRIPTION_UNRESPONSIVE_TTL} | connectionUnresponsive: ${connectionUnresponsive} |`);
|
|
187
182
|
// Check if we should close the current connection
|
|
188
183
|
if (!connectionClosed && (urlChanged || connectionUnresponsive)) {
|
|
189
184
|
if (urlChanged) {
|
|
@@ -195,11 +190,16 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
195
190
|
// Check if connection was opened very recently; if so, wait a bit before continuing.
|
|
196
191
|
// This is so if we just opened the connection and are waiting to receive some messages,
|
|
197
192
|
// we don't close is immediately after and miss the chance to receive them
|
|
198
|
-
if (timeSinceConnectionOpened <
|
|
193
|
+
if (timeSinceConnectionOpened < INITIAL_WS_GRACE_MS) {
|
|
199
194
|
logger.info(`Connection was opened only ${timeSinceConnectionOpened}ms ago, waiting for that to get to 1s before continuing...`);
|
|
200
|
-
await (0, util_1.sleep)(
|
|
195
|
+
await (0, util_1.sleep)(INITIAL_WS_GRACE_MS - timeSinceConnectionOpened);
|
|
196
|
+
}
|
|
197
|
+
if (this.wsConnection && this.wsConnection.readyState !== ws_1.default.CLOSED) {
|
|
198
|
+
const old = this.wsConnection;
|
|
199
|
+
// Prevent any further sends/reads via this reference
|
|
200
|
+
this.wsConnection = undefined;
|
|
201
|
+
await waitForGracefulClose(old, 1500);
|
|
201
202
|
}
|
|
202
|
-
this.wsConnection?.close(1000);
|
|
203
203
|
connectionClosed = true;
|
|
204
204
|
if (subscriptions.desired.length) {
|
|
205
205
|
(0, util_1.censorLogs)(() => logger.trace(`Connection will be reopened and will subscribe to new and resubscribe to existing: ${JSON.stringify(subscriptions.desired)}`));
|
|
@@ -297,4 +297,40 @@ class WebsocketReverseMappingTransport extends WebSocketTransport {
|
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
299
|
exports.WebsocketReverseMappingTransport = WebsocketReverseMappingTransport;
|
|
300
|
+
/**
|
|
301
|
+
* Waits for a WebSocket connection to close gracefully.
|
|
302
|
+
*
|
|
303
|
+
* @param ws - The WebSocket instance (from the `ws` package).
|
|
304
|
+
* @param gracefulMs - Max time in milliseconds to wait for a graceful close before terminating. Defaults to 1500 ms.
|
|
305
|
+
* @returns A promise that resolves when the socket has closed or been terminated.
|
|
306
|
+
*/
|
|
307
|
+
async function waitForGracefulClose(ws, gracefulMs = 1500) {
|
|
308
|
+
if (!ws || ws.readyState === ws_1.default.CLOSED) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
const closed = new Promise((resolve) => {
|
|
312
|
+
ws.once('close', resolve);
|
|
313
|
+
});
|
|
314
|
+
try {
|
|
315
|
+
ws.close(1000);
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
logger.debug(`ws.close threw: ${err.message}`);
|
|
319
|
+
}
|
|
320
|
+
try {
|
|
321
|
+
await Promise.race([closed, (0, util_1.sleep)(gracefulMs)]);
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
logger.debug(`waiting for close failed: ${err.message}`);
|
|
325
|
+
}
|
|
326
|
+
const state = ws.readyState;
|
|
327
|
+
if (state !== ws_1.default.CLOSED) {
|
|
328
|
+
try {
|
|
329
|
+
ws.terminate();
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
logger.debug(`ws.terminate threw: ${err.message}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
300
336
|
//# sourceMappingURL=websocket.js.map
|