@service-bridge/node 0.1.3
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 +854 -0
- package/biome.json +28 -0
- package/bun.lock +249 -0
- package/dist/express.d.ts +51 -0
- package/dist/express.js +129 -0
- package/dist/fastify.d.ts +43 -0
- package/dist/fastify.js +122 -0
- package/dist/index.js +34410 -0
- package/dist/trace.d.ts +19 -0
- package/http/dist/express.d.ts +51 -0
- package/http/dist/express.d.ts.map +1 -0
- package/http/dist/express.test.d.ts +2 -0
- package/http/dist/express.test.d.ts.map +1 -0
- package/http/dist/fastify.d.ts +43 -0
- package/http/dist/fastify.d.ts.map +1 -0
- package/http/dist/fastify.test.d.ts +2 -0
- package/http/dist/fastify.test.d.ts.map +1 -0
- package/http/dist/index.d.ts +7 -0
- package/http/dist/index.d.ts.map +1 -0
- package/http/dist/trace.d.ts +19 -0
- package/http/dist/trace.d.ts.map +1 -0
- package/http/dist/trace.test.d.ts +2 -0
- package/http/dist/trace.test.d.ts.map +1 -0
- package/http/package.json +48 -0
- package/http/src/express.test.ts +125 -0
- package/http/src/express.ts +209 -0
- package/http/src/fastify.test.ts +142 -0
- package/http/src/fastify.ts +159 -0
- package/http/src/index.ts +10 -0
- package/http/src/sdk-augment.d.ts +11 -0
- package/http/src/servicebridge.d.ts +23 -0
- package/http/src/trace.test.ts +97 -0
- package/http/src/trace.ts +56 -0
- package/http/tsconfig.json +17 -0
- package/http/tsconfig.test.json +6 -0
- package/package.json +65 -0
- package/sdk/dist/generated/servicebridge-package-definition.d.ts +4709 -0
- package/sdk/dist/grpc-client.d.ts +304 -0
- package/sdk/dist/grpc-client.test.d.ts +1 -0
- package/sdk/dist/index.d.ts +2 -0
- package/sdk/package.json +30 -0
- package/sdk/scripts/generate-proto.ts +65 -0
- package/sdk/src/generated/servicebridge-package-definition.ts +5198 -0
- package/sdk/src/grpc-client.d.ts +305 -0
- package/sdk/src/grpc-client.d.ts.map +1 -0
- package/sdk/src/grpc-client.test.ts +422 -0
- package/sdk/src/grpc-client.ts +2924 -0
- package/sdk/src/index.d.ts +3 -0
- package/sdk/src/index.d.ts.map +1 -0
- package/sdk/src/index.ts +29 -0
- package/sdk/tsconfig.json +13 -0
package/biome.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.4.6/schema.json",
|
|
3
|
+
"files": {
|
|
4
|
+
"includes": [
|
|
5
|
+
"sdk/src/**/*.ts",
|
|
6
|
+
"!sdk/src/**/*.d.ts",
|
|
7
|
+
"!sdk/src/generated",
|
|
8
|
+
"sdk/scripts/**/*.ts",
|
|
9
|
+
"http/src/**/*.ts"
|
|
10
|
+
],
|
|
11
|
+
"ignoreUnknown": false
|
|
12
|
+
},
|
|
13
|
+
"formatter": { "enabled": true, "indentStyle": "space", "indentWidth": 2 },
|
|
14
|
+
"linter": {
|
|
15
|
+
"enabled": true,
|
|
16
|
+
"rules": {
|
|
17
|
+
"recommended": true,
|
|
18
|
+
"suspicious": { "noExplicitAny": "warn" }
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"overrides": [
|
|
22
|
+
{
|
|
23
|
+
"includes": ["**/generated/**"],
|
|
24
|
+
"linter": { "enabled": false },
|
|
25
|
+
"formatter": { "enabled": false }
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
}
|
package/bun.lock
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"configVersion": 1,
|
|
4
|
+
"workspaces": {
|
|
5
|
+
"": {
|
|
6
|
+
"name": "@servicebridge/node",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@grpc/grpc-js": "^1.9.0",
|
|
9
|
+
"@grpc/proto-loader": "^0.7.10",
|
|
10
|
+
"protobufjs": "^8.0.0",
|
|
11
|
+
},
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@biomejs/biome": "^2.4.5",
|
|
14
|
+
"@types/bun": "latest",
|
|
15
|
+
"@types/express": "^4.17.21",
|
|
16
|
+
"@types/node": "^20.0.0",
|
|
17
|
+
"fastify": "^4.29.0",
|
|
18
|
+
"typescript": "^5.3.0",
|
|
19
|
+
},
|
|
20
|
+
"peerDependencies": {
|
|
21
|
+
"express": ">=4.0.0",
|
|
22
|
+
"fastify": ">=4.0.0",
|
|
23
|
+
},
|
|
24
|
+
"optionalPeers": [
|
|
25
|
+
"express",
|
|
26
|
+
"fastify",
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
"packages": {
|
|
31
|
+
"@biomejs/biome": ["@biomejs/biome@2.4.6", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.4.6", "@biomejs/cli-darwin-x64": "2.4.6", "@biomejs/cli-linux-arm64": "2.4.6", "@biomejs/cli-linux-arm64-musl": "2.4.6", "@biomejs/cli-linux-x64": "2.4.6", "@biomejs/cli-linux-x64-musl": "2.4.6", "@biomejs/cli-win32-arm64": "2.4.6", "@biomejs/cli-win32-x64": "2.4.6" }, "bin": { "biome": "bin/biome" } }, "sha512-QnHe81PMslpy3mnpL8DnO2M4S4ZnYPkjlGCLWBZT/3R9M6b5daArWMMtEfP52/n174RKnwRIf3oT8+wc9ihSfQ=="],
|
|
32
|
+
|
|
33
|
+
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.4.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-NW18GSyxr+8sJIqgoGwVp5Zqm4SALH4b4gftIA0n62PTuBs6G2tHlwNAOj0Vq0KKSs7Sf88VjjmHh0O36EnzrQ=="],
|
|
34
|
+
|
|
35
|
+
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.4.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-4uiE/9tuI7cnjtY9b07RgS7gGyYOAfIAGeVJWEfeCnAarOAS7qVmuRyX6d7JTKw28/mt+rUzMasYeZ+0R/U1Mw=="],
|
|
36
|
+
|
|
37
|
+
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.4.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-kMLaI7OF5GN1Q8Doymjro1P8rVEoy7BKQALNz6fiR8IC1WKduoNyteBtJlHT7ASIL0Cx2jR6VUOBIbcB1B8pew=="],
|
|
38
|
+
|
|
39
|
+
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.4.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-F/JdB7eN22txiTqHM5KhIVt0jVkzZwVYrdTR1O3Y4auBOQcXxHK4dxULf4z43QyZI5tsnQJrRBHZy7wwtL+B3A=="],
|
|
40
|
+
|
|
41
|
+
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.4.6", "", { "os": "linux", "cpu": "x64" }, "sha512-oHXmUFEoH8Lql1xfc3QkFLiC1hGR7qedv5eKNlC185or+o4/4HiaU7vYODAH3peRCfsuLr1g6v2fK9dFFOYdyw=="],
|
|
42
|
+
|
|
43
|
+
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.4.6", "", { "os": "linux", "cpu": "x64" }, "sha512-C9s98IPDu7DYarjlZNuzJKTjVHN03RUnmHV5htvqsx6vEUXCDSJ59DNwjKVD5XYoSS4N+BYhq3RTBAL8X6svEg=="],
|
|
44
|
+
|
|
45
|
+
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.4.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-xzThn87Pf3YrOGTEODFGONmqXpTwUNxovQb72iaUOdcw8sBSY3+3WD8Hm9IhMYLnPi0n32s3L3NWU6+eSjfqFg=="],
|
|
46
|
+
|
|
47
|
+
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.4.6", "", { "os": "win32", "cpu": "x64" }, "sha512-7++XhnsPlr1HDbor5amovPjOH6vsrFOCdp93iKXhFn6bcMUI6soodj3WWKfgEO6JosKU1W5n3uky3WW9RlRjTg=="],
|
|
48
|
+
|
|
49
|
+
"@fastify/ajv-compiler": ["@fastify/ajv-compiler@3.6.0", "", { "dependencies": { "ajv": "^8.11.0", "ajv-formats": "^2.1.1", "fast-uri": "^2.0.0" } }, "sha512-LwdXQJjmMD+GwLOkP7TVC68qa+pSSogeWWmznRJ/coyTcfe9qA05AHFSe1eZFwK6q+xVRpChnvFUkf1iYaSZsQ=="],
|
|
50
|
+
|
|
51
|
+
"@fastify/error": ["@fastify/error@3.4.1", "", {}, "sha512-wWSvph+29GR783IhmvdwWnN4bUxTD01Vm5Xad4i7i1VuAOItLvbPAb69sb0IQ2N57yprvhNIwAP5B6xfKTmjmQ=="],
|
|
52
|
+
|
|
53
|
+
"@fastify/fast-json-stringify-compiler": ["@fastify/fast-json-stringify-compiler@4.3.0", "", { "dependencies": { "fast-json-stringify": "^5.7.0" } }, "sha512-aZAXGYo6m22Fk1zZzEUKBvut/CIIQe/BapEORnxiD5Qr0kPHqqI69NtEMCme74h+at72sPhbkb4ZrLd1W3KRLA=="],
|
|
54
|
+
|
|
55
|
+
"@fastify/merge-json-schemas": ["@fastify/merge-json-schemas@0.1.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3" } }, "sha512-fERDVz7topgNjtXsJTTW1JKLy0rhuLRcquYqNR9rF7OcVpCa2OVW49ZPDIhaRRCaUuvVxI+N416xUoF76HNSXA=="],
|
|
56
|
+
|
|
57
|
+
"@grpc/grpc-js": ["@grpc/grpc-js@1.14.3", "", { "dependencies": { "@grpc/proto-loader": "^0.8.0", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA=="],
|
|
58
|
+
|
|
59
|
+
"@grpc/proto-loader": ["@grpc/proto-loader@0.7.15", "", { "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", "protobufjs": "^7.2.5", "yargs": "^17.7.2" }, "bin": { "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" } }, "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ=="],
|
|
60
|
+
|
|
61
|
+
"@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="],
|
|
62
|
+
|
|
63
|
+
"@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="],
|
|
64
|
+
|
|
65
|
+
"@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="],
|
|
66
|
+
|
|
67
|
+
"@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="],
|
|
68
|
+
|
|
69
|
+
"@protobufjs/codegen": ["@protobufjs/codegen@2.0.4", "", {}, "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="],
|
|
70
|
+
|
|
71
|
+
"@protobufjs/eventemitter": ["@protobufjs/eventemitter@1.1.0", "", {}, "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="],
|
|
72
|
+
|
|
73
|
+
"@protobufjs/fetch": ["@protobufjs/fetch@1.1.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" } }, "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ=="],
|
|
74
|
+
|
|
75
|
+
"@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="],
|
|
76
|
+
|
|
77
|
+
"@protobufjs/inquire": ["@protobufjs/inquire@1.1.0", "", {}, "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="],
|
|
78
|
+
|
|
79
|
+
"@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="],
|
|
80
|
+
|
|
81
|
+
"@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="],
|
|
82
|
+
|
|
83
|
+
"@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="],
|
|
84
|
+
|
|
85
|
+
"@types/body-parser": ["@types/body-parser@1.19.6", "", { "dependencies": { "@types/connect": "*", "@types/node": "*" } }, "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g=="],
|
|
86
|
+
|
|
87
|
+
"@types/bun": ["@types/bun@1.3.10", "", { "dependencies": { "bun-types": "1.3.10" } }, "sha512-0+rlrUrOrTSskibryHbvQkDOWRJwJZqZlxrUs1u4oOoTln8+WIXBPmAuCF35SWB2z4Zl3E84Nl/D0P7803nigQ=="],
|
|
88
|
+
|
|
89
|
+
"@types/connect": ["@types/connect@3.4.38", "", { "dependencies": { "@types/node": "*" } }, "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug=="],
|
|
90
|
+
|
|
91
|
+
"@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="],
|
|
92
|
+
|
|
93
|
+
"@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.8", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA=="],
|
|
94
|
+
|
|
95
|
+
"@types/http-errors": ["@types/http-errors@2.0.5", "", {}, "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg=="],
|
|
96
|
+
|
|
97
|
+
"@types/mime": ["@types/mime@1.3.5", "", {}, "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w=="],
|
|
98
|
+
|
|
99
|
+
"@types/node": ["@types/node@20.19.37", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw=="],
|
|
100
|
+
|
|
101
|
+
"@types/qs": ["@types/qs@6.15.0", "", {}, "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow=="],
|
|
102
|
+
|
|
103
|
+
"@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="],
|
|
104
|
+
|
|
105
|
+
"@types/send": ["@types/send@1.2.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ=="],
|
|
106
|
+
|
|
107
|
+
"@types/serve-static": ["@types/serve-static@1.15.10", "", { "dependencies": { "@types/http-errors": "*", "@types/node": "*", "@types/send": "<1" } }, "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw=="],
|
|
108
|
+
|
|
109
|
+
"abstract-logging": ["abstract-logging@2.0.1", "", {}, "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA=="],
|
|
110
|
+
|
|
111
|
+
"ajv": ["ajv@8.18.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A=="],
|
|
112
|
+
|
|
113
|
+
"ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="],
|
|
114
|
+
|
|
115
|
+
"ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
|
|
116
|
+
|
|
117
|
+
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
|
118
|
+
|
|
119
|
+
"atomic-sleep": ["atomic-sleep@1.0.0", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="],
|
|
120
|
+
|
|
121
|
+
"avvio": ["avvio@8.4.0", "", { "dependencies": { "@fastify/error": "^3.3.0", "fastq": "^1.17.1" } }, "sha512-CDSwaxINFy59iNwhYnkvALBwZiTydGkOecZyPkqBpABYR1KqGEsET0VOOYDwtleZSUIdeY36DC2bSZ24CO1igA=="],
|
|
122
|
+
|
|
123
|
+
"bun-types": ["bun-types@1.3.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-tcpfCCl6XWo6nCVnpcVrxQ+9AYN1iqMIzgrSKYMB/fjLtV2eyAVEg7AxQJuCq/26R6HpKWykQXuSOq/21RYcbg=="],
|
|
124
|
+
|
|
125
|
+
"cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="],
|
|
126
|
+
|
|
127
|
+
"color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
|
128
|
+
|
|
129
|
+
"color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
|
130
|
+
|
|
131
|
+
"cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="],
|
|
132
|
+
|
|
133
|
+
"emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
|
134
|
+
|
|
135
|
+
"escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
|
|
136
|
+
|
|
137
|
+
"fast-content-type-parse": ["fast-content-type-parse@1.1.0", "", {}, "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ=="],
|
|
138
|
+
|
|
139
|
+
"fast-decode-uri-component": ["fast-decode-uri-component@1.0.1", "", {}, "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="],
|
|
140
|
+
|
|
141
|
+
"fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
|
|
142
|
+
|
|
143
|
+
"fast-json-stringify": ["fast-json-stringify@5.16.1", "", { "dependencies": { "@fastify/merge-json-schemas": "^0.1.0", "ajv": "^8.10.0", "ajv-formats": "^3.0.1", "fast-deep-equal": "^3.1.3", "fast-uri": "^2.1.0", "json-schema-ref-resolver": "^1.0.1", "rfdc": "^1.2.0" } }, "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g=="],
|
|
144
|
+
|
|
145
|
+
"fast-querystring": ["fast-querystring@1.1.2", "", { "dependencies": { "fast-decode-uri-component": "^1.0.1" } }, "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg=="],
|
|
146
|
+
|
|
147
|
+
"fast-uri": ["fast-uri@2.4.0", "", {}, "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA=="],
|
|
148
|
+
|
|
149
|
+
"fastify": ["fastify@4.29.1", "", { "dependencies": { "@fastify/ajv-compiler": "^3.5.0", "@fastify/error": "^3.4.0", "@fastify/fast-json-stringify-compiler": "^4.3.0", "abstract-logging": "^2.0.1", "avvio": "^8.3.0", "fast-content-type-parse": "^1.1.0", "fast-json-stringify": "^5.8.0", "find-my-way": "^8.0.0", "light-my-request": "^5.11.0", "pino": "^9.0.0", "process-warning": "^3.0.0", "proxy-addr": "^2.0.7", "rfdc": "^1.3.0", "secure-json-parse": "^2.7.0", "semver": "^7.5.4", "toad-cache": "^3.3.0" } }, "sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ=="],
|
|
150
|
+
|
|
151
|
+
"fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="],
|
|
152
|
+
|
|
153
|
+
"find-my-way": ["find-my-way@8.2.2", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", "safe-regex2": "^3.1.0" } }, "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA=="],
|
|
154
|
+
|
|
155
|
+
"forwarded": ["forwarded@0.2.0", "", {}, "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="],
|
|
156
|
+
|
|
157
|
+
"get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="],
|
|
158
|
+
|
|
159
|
+
"ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="],
|
|
160
|
+
|
|
161
|
+
"is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
|
|
162
|
+
|
|
163
|
+
"json-schema-ref-resolver": ["json-schema-ref-resolver@1.0.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3" } }, "sha512-EJAj1pgHc1hxF6vo2Z3s69fMjO1INq6eGHXZ8Z6wCQeldCuwxGK9Sxf4/cScGn3FZubCVUehfWtcDM/PLteCQw=="],
|
|
164
|
+
|
|
165
|
+
"json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
|
|
166
|
+
|
|
167
|
+
"light-my-request": ["light-my-request@5.14.0", "", { "dependencies": { "cookie": "^0.7.0", "process-warning": "^3.0.0", "set-cookie-parser": "^2.4.1" } }, "sha512-aORPWntbpH5esaYpGOOmri0OHDOe3wC5M2MQxZ9dvMLZm6DnaAn0kJlcbU9hwsQgLzmZyReKwFwwPkR+nHu5kA=="],
|
|
168
|
+
|
|
169
|
+
"lodash.camelcase": ["lodash.camelcase@4.3.0", "", {}, "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="],
|
|
170
|
+
|
|
171
|
+
"long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="],
|
|
172
|
+
|
|
173
|
+
"on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="],
|
|
174
|
+
|
|
175
|
+
"pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="],
|
|
176
|
+
|
|
177
|
+
"pino-abstract-transport": ["pino-abstract-transport@2.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="],
|
|
178
|
+
|
|
179
|
+
"pino-std-serializers": ["pino-std-serializers@7.1.0", "", {}, "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw=="],
|
|
180
|
+
|
|
181
|
+
"process-warning": ["process-warning@3.0.0", "", {}, "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="],
|
|
182
|
+
|
|
183
|
+
"protobufjs": ["protobufjs@8.0.0", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-jx6+sE9h/UryaCZhsJWbJtTEy47yXoGNYI4z8ZaRncM0zBKeRqjO2JEcOUYwrYGb1WLhXM1FfMzW3annvFv0rw=="],
|
|
184
|
+
|
|
185
|
+
"proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="],
|
|
186
|
+
|
|
187
|
+
"quick-format-unescaped": ["quick-format-unescaped@4.0.4", "", {}, "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="],
|
|
188
|
+
|
|
189
|
+
"real-require": ["real-require@0.2.0", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="],
|
|
190
|
+
|
|
191
|
+
"require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="],
|
|
192
|
+
|
|
193
|
+
"require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="],
|
|
194
|
+
|
|
195
|
+
"ret": ["ret@0.4.3", "", {}, "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ=="],
|
|
196
|
+
|
|
197
|
+
"reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
|
|
198
|
+
|
|
199
|
+
"rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
|
|
200
|
+
|
|
201
|
+
"safe-regex2": ["safe-regex2@3.1.0", "", { "dependencies": { "ret": "~0.4.0" } }, "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug=="],
|
|
202
|
+
|
|
203
|
+
"safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="],
|
|
204
|
+
|
|
205
|
+
"secure-json-parse": ["secure-json-parse@2.7.0", "", {}, "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="],
|
|
206
|
+
|
|
207
|
+
"semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
|
|
208
|
+
|
|
209
|
+
"set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="],
|
|
210
|
+
|
|
211
|
+
"sonic-boom": ["sonic-boom@4.2.1", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q=="],
|
|
212
|
+
|
|
213
|
+
"split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="],
|
|
214
|
+
|
|
215
|
+
"string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
|
|
216
|
+
|
|
217
|
+
"strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
|
|
218
|
+
|
|
219
|
+
"thread-stream": ["thread-stream@3.1.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="],
|
|
220
|
+
|
|
221
|
+
"toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="],
|
|
222
|
+
|
|
223
|
+
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
224
|
+
|
|
225
|
+
"undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
226
|
+
|
|
227
|
+
"wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
|
|
228
|
+
|
|
229
|
+
"y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="],
|
|
230
|
+
|
|
231
|
+
"yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="],
|
|
232
|
+
|
|
233
|
+
"yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="],
|
|
234
|
+
|
|
235
|
+
"@grpc/grpc-js/@grpc/proto-loader": ["@grpc/proto-loader@0.8.0", "", { "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", "protobufjs": "^7.5.3", "yargs": "^17.7.2" }, "bin": { "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" } }, "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ=="],
|
|
236
|
+
|
|
237
|
+
"@grpc/proto-loader/protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="],
|
|
238
|
+
|
|
239
|
+
"@types/serve-static/@types/send": ["@types/send@0.17.6", "", { "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og=="],
|
|
240
|
+
|
|
241
|
+
"ajv/fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="],
|
|
242
|
+
|
|
243
|
+
"fast-json-stringify/ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="],
|
|
244
|
+
|
|
245
|
+
"pino/process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="],
|
|
246
|
+
|
|
247
|
+
"@grpc/grpc-js/@grpc/proto-loader/protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="],
|
|
248
|
+
}
|
|
249
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ServiceBridgeService } from "@service-bridge/node";
|
|
2
|
+
import type { Application, NextFunction, Request, Response } from "express";
|
|
3
|
+
import type { IncomingTraceContext } from "./trace";
|
|
4
|
+
import { extractTraceFromHeaders } from "./trace";
|
|
5
|
+
export { extractTraceFromHeaders };
|
|
6
|
+
export type { IncomingTraceContext };
|
|
7
|
+
declare global {
|
|
8
|
+
namespace Express {
|
|
9
|
+
interface Request {
|
|
10
|
+
servicebridge: ServiceBridgeService;
|
|
11
|
+
traceId?: string;
|
|
12
|
+
spanId?: string;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export interface ServiceBridgeExpressOptions {
|
|
17
|
+
/** ServiceBridge client (from servicebridge()). Required. */
|
|
18
|
+
client: ServiceBridgeService;
|
|
19
|
+
/** Paths to skip tracing. Default: [] */
|
|
20
|
+
excludePaths?: string[];
|
|
21
|
+
/** Set x-trace-id response header for propagation. Default: true */
|
|
22
|
+
propagateTraceHeader?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Auto-register route patterns in the ServiceBridge HTTP catalog on first hit.
|
|
25
|
+
* Routes appear in the UI after their first request. Default: true.
|
|
26
|
+
* Use registerExpressRoutes() for eager (pre-traffic) registration.
|
|
27
|
+
*/
|
|
28
|
+
autoRegister?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function servicebridgeMiddleware(options: ServiceBridgeExpressOptions): (req: Request, res: Response, next: NextFunction) => void;
|
|
31
|
+
export interface RegisterExpressRoutesOptions {
|
|
32
|
+
/** Stable identifier for this process instance used in http_instances. */
|
|
33
|
+
instanceId?: string;
|
|
34
|
+
/** Address where this service can be reached, e.g. "http://10.0.0.1:3000" */
|
|
35
|
+
endpoint?: string;
|
|
36
|
+
/** Service names allowed to call these endpoints. Default: [] */
|
|
37
|
+
allowedCallers?: string[];
|
|
38
|
+
/** Path prefixes to exclude from registration. Default: [] */
|
|
39
|
+
excludePaths?: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Scan an Express application's route table and register every route pattern
|
|
43
|
+
* in the ServiceBridge HTTP catalog. Safe to call multiple times (idempotent).
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* app.get('/users/:id', handler);
|
|
47
|
+
* app.post('/orders', handler);
|
|
48
|
+
* app.listen(3000, () => registerExpressRoutes(app, sb));
|
|
49
|
+
*/
|
|
50
|
+
export declare function registerExpressRoutes(app: Application, client: ServiceBridgeService, opts?: RegisterExpressRoutesOptions): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=express.d.ts.map
|
package/dist/express.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// http/src/express.ts
|
|
2
|
+
import { runWithTraceContext } from "@service-bridge/node";
|
|
3
|
+
|
|
4
|
+
// http/src/trace.ts
|
|
5
|
+
function parseTraceparent(traceparent) {
|
|
6
|
+
const parts = traceparent.trim().split("-");
|
|
7
|
+
if (parts.length !== 4 || parts[0] !== "00")
|
|
8
|
+
return null;
|
|
9
|
+
const [, traceId, parentSpanId] = parts;
|
|
10
|
+
if (!traceId || !parentSpanId || traceId.length !== 32 || parentSpanId.length !== 16)
|
|
11
|
+
return null;
|
|
12
|
+
return { traceId, parentSpanId };
|
|
13
|
+
}
|
|
14
|
+
function randomTraceId() {
|
|
15
|
+
return crypto.randomUUID().replace(/-/g, "");
|
|
16
|
+
}
|
|
17
|
+
function extractTraceFromHeaders(headers) {
|
|
18
|
+
const traceparent = headers.traceparent;
|
|
19
|
+
const tp = Array.isArray(traceparent) ? traceparent[0] : traceparent;
|
|
20
|
+
if (tp) {
|
|
21
|
+
const parsed = parseTraceparent(tp);
|
|
22
|
+
if (parsed)
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
25
|
+
const xTraceId = headers["x-trace-id"];
|
|
26
|
+
const traceId = Array.isArray(xTraceId) ? xTraceId[0] : xTraceId;
|
|
27
|
+
if (traceId && typeof traceId === "string") {
|
|
28
|
+
return { traceId: traceId.trim(), parentSpanId: "" };
|
|
29
|
+
}
|
|
30
|
+
return { traceId: randomTraceId(), parentSpanId: "" };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// http/src/express.ts
|
|
34
|
+
function servicebridgeMiddleware(options) {
|
|
35
|
+
const {
|
|
36
|
+
client,
|
|
37
|
+
excludePaths = [],
|
|
38
|
+
propagateTraceHeader = true,
|
|
39
|
+
autoRegister = true
|
|
40
|
+
} = options;
|
|
41
|
+
const registeredPatterns = new Set;
|
|
42
|
+
return function middleware(req, res, next) {
|
|
43
|
+
const path = req.path ?? req.url?.split("?")[0] ?? "/";
|
|
44
|
+
if (excludePaths.some((p) => path.startsWith(p))) {
|
|
45
|
+
req.servicebridge = client;
|
|
46
|
+
next();
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const headers = {};
|
|
50
|
+
for (const [k, v] of Object.entries(req.headers)) {
|
|
51
|
+
if (v != null)
|
|
52
|
+
headers[k.toLowerCase()] = v;
|
|
53
|
+
}
|
|
54
|
+
const traceCtx = extractTraceFromHeaders(headers);
|
|
55
|
+
const span = client.startHttpSpan({
|
|
56
|
+
method: req.method,
|
|
57
|
+
path,
|
|
58
|
+
traceId: traceCtx.traceId,
|
|
59
|
+
parentSpanId: traceCtx.parentSpanId
|
|
60
|
+
});
|
|
61
|
+
req.servicebridge = client;
|
|
62
|
+
req.traceId = span.traceId;
|
|
63
|
+
req.spanId = span.spanId;
|
|
64
|
+
if (propagateTraceHeader) {
|
|
65
|
+
res.setHeader("x-trace-id", span.traceId);
|
|
66
|
+
}
|
|
67
|
+
const onFinish = () => {
|
|
68
|
+
res.off("finish", onFinish);
|
|
69
|
+
res.off("close", onFinish);
|
|
70
|
+
span.end({
|
|
71
|
+
statusCode: res.statusCode,
|
|
72
|
+
success: res.statusCode < 400
|
|
73
|
+
});
|
|
74
|
+
if (autoRegister) {
|
|
75
|
+
const routePattern = req.route?.path;
|
|
76
|
+
if (routePattern && typeof routePattern === "string") {
|
|
77
|
+
const key = `${req.method}:${routePattern}`;
|
|
78
|
+
if (!registeredPatterns.has(key)) {
|
|
79
|
+
registeredPatterns.add(key);
|
|
80
|
+
client.registerHttpEndpoint({ method: req.method, route: routePattern }).catch(() => {
|
|
81
|
+
registeredPatterns.delete(key);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
res.on("finish", onFinish);
|
|
88
|
+
res.on("close", onFinish);
|
|
89
|
+
runWithTraceContext({ traceId: span.traceId, spanId: span.spanId }, () => {
|
|
90
|
+
next();
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
async function registerExpressRoutes(app, client, opts = {}) {
|
|
95
|
+
const { instanceId, endpoint, allowedCallers = [], excludePaths = [] } = opts;
|
|
96
|
+
const routes = extractExpressRoutes(app);
|
|
97
|
+
await Promise.allSettled(routes.filter(({ path }) => !excludePaths.some((p) => path.startsWith(p))).map(({ method, path: route }) => client.registerHttpEndpoint({
|
|
98
|
+
method,
|
|
99
|
+
route,
|
|
100
|
+
instanceId,
|
|
101
|
+
endpoint,
|
|
102
|
+
allowedCallers
|
|
103
|
+
})));
|
|
104
|
+
}
|
|
105
|
+
function getLayerStack(app) {
|
|
106
|
+
const r = app._router ?? app.router;
|
|
107
|
+
return r?.stack ?? app.stack ?? [];
|
|
108
|
+
}
|
|
109
|
+
function extractExpressRoutes(app, prefix = "") {
|
|
110
|
+
const routes = [];
|
|
111
|
+
const stack = getLayerStack(app);
|
|
112
|
+
for (const layer of stack) {
|
|
113
|
+
if (layer.route) {
|
|
114
|
+
const routePath = prefix + (layer.route.path ?? "");
|
|
115
|
+
const methods = Object.keys(layer.route.methods ?? {}).filter((m) => m !== "_all");
|
|
116
|
+
for (const method of methods) {
|
|
117
|
+
routes.push({ method: method.toUpperCase(), path: routePath });
|
|
118
|
+
}
|
|
119
|
+
} else if (layer.name === "router" && layer.handle) {
|
|
120
|
+
routes.push(...extractExpressRoutes(layer.handle, prefix));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return routes;
|
|
124
|
+
}
|
|
125
|
+
export {
|
|
126
|
+
servicebridgeMiddleware,
|
|
127
|
+
registerExpressRoutes,
|
|
128
|
+
extractTraceFromHeaders
|
|
129
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ServiceBridgeService } from "@service-bridge/node";
|
|
2
|
+
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
|
|
3
|
+
declare module "fastify" {
|
|
4
|
+
interface FastifyRequest {
|
|
5
|
+
servicebridge: ServiceBridgeService;
|
|
6
|
+
traceId?: string;
|
|
7
|
+
spanId?: string;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export interface ServiceBridgeFastifyOptions {
|
|
11
|
+
/** ServiceBridge client (from servicebridge()). Required. */
|
|
12
|
+
client: ServiceBridgeService;
|
|
13
|
+
/** Paths to skip tracing. Default: [] */
|
|
14
|
+
excludePaths?: string[];
|
|
15
|
+
/** Set x-trace-id response header for propagation. Default: true */
|
|
16
|
+
propagateTraceHeader?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Auto-register every route in the ServiceBridge HTTP catalog via Fastify's
|
|
19
|
+
* onRoute hook. Routes appear in the UI as soon as the server starts (before
|
|
20
|
+
* any traffic). Default: true.
|
|
21
|
+
*/
|
|
22
|
+
autoRegister?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Options forwarded to registerHttpEndpoint for each auto-discovered route.
|
|
25
|
+
*/
|
|
26
|
+
register?: {
|
|
27
|
+
/** Stable identifier for this process instance. */
|
|
28
|
+
instanceId?: string;
|
|
29
|
+
/** Address where this service can be reached, e.g. "http://10.0.0.1:3000" */
|
|
30
|
+
endpoint?: string;
|
|
31
|
+
/** Service names allowed to call these endpoints. Default: [] */
|
|
32
|
+
allowedCallers?: string[];
|
|
33
|
+
/** Path prefixes to exclude from registration. Default: [] */
|
|
34
|
+
excludePaths?: string[];
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export declare function servicebridgePlugin(fastify: FastifyInstance, options: ServiceBridgeFastifyOptions): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Wraps a route handler to run inside trace context.
|
|
40
|
+
* Use when the handler calls req.servicebridge.rpc() or event() — ensures trace propagation.
|
|
41
|
+
*/
|
|
42
|
+
export declare function wrapHandler<T>(handler: (request: FastifyRequest, reply: FastifyReply) => T): (request: FastifyRequest, reply: FastifyReply) => T;
|
|
43
|
+
//# sourceMappingURL=fastify.d.ts.map
|
package/dist/fastify.js
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// http/src/fastify.ts
|
|
2
|
+
import { runWithTraceContext } from "@service-bridge/node";
|
|
3
|
+
|
|
4
|
+
// http/src/trace.ts
|
|
5
|
+
function parseTraceparent(traceparent) {
|
|
6
|
+
const parts = traceparent.trim().split("-");
|
|
7
|
+
if (parts.length !== 4 || parts[0] !== "00")
|
|
8
|
+
return null;
|
|
9
|
+
const [, traceId, parentSpanId] = parts;
|
|
10
|
+
if (!traceId || !parentSpanId || traceId.length !== 32 || parentSpanId.length !== 16)
|
|
11
|
+
return null;
|
|
12
|
+
return { traceId, parentSpanId };
|
|
13
|
+
}
|
|
14
|
+
function randomTraceId() {
|
|
15
|
+
return crypto.randomUUID().replace(/-/g, "");
|
|
16
|
+
}
|
|
17
|
+
function extractTraceFromHeaders(headers) {
|
|
18
|
+
const traceparent = headers.traceparent;
|
|
19
|
+
const tp = Array.isArray(traceparent) ? traceparent[0] : traceparent;
|
|
20
|
+
if (tp) {
|
|
21
|
+
const parsed = parseTraceparent(tp);
|
|
22
|
+
if (parsed)
|
|
23
|
+
return parsed;
|
|
24
|
+
}
|
|
25
|
+
const xTraceId = headers["x-trace-id"];
|
|
26
|
+
const traceId = Array.isArray(xTraceId) ? xTraceId[0] : xTraceId;
|
|
27
|
+
if (traceId && typeof traceId === "string") {
|
|
28
|
+
return { traceId: traceId.trim(), parentSpanId: "" };
|
|
29
|
+
}
|
|
30
|
+
return { traceId: randomTraceId(), parentSpanId: "" };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// http/src/fastify.ts
|
|
34
|
+
async function servicebridgePlugin(fastify, options) {
|
|
35
|
+
const {
|
|
36
|
+
client,
|
|
37
|
+
excludePaths = [],
|
|
38
|
+
propagateTraceHeader = true,
|
|
39
|
+
autoRegister = true,
|
|
40
|
+
register: registerOpts = {}
|
|
41
|
+
} = options;
|
|
42
|
+
fastify.decorateRequest("servicebridge", null);
|
|
43
|
+
fastify.decorateRequest("traceId", null);
|
|
44
|
+
fastify.decorateRequest("spanId", null);
|
|
45
|
+
if (autoRegister) {
|
|
46
|
+
const excludeReg = registerOpts.excludePaths ?? [];
|
|
47
|
+
fastify.addHook("onRoute", (routeOptions) => {
|
|
48
|
+
const routePath = routeOptions.url ?? routeOptions.path ?? "";
|
|
49
|
+
if (excludeReg.some((p) => routePath.startsWith(p)))
|
|
50
|
+
return;
|
|
51
|
+
const methods = Array.isArray(routeOptions.method) ? routeOptions.method : [routeOptions.method];
|
|
52
|
+
for (const method of methods) {
|
|
53
|
+
if (method === "HEAD" || method === "OPTIONS")
|
|
54
|
+
continue;
|
|
55
|
+
client.registerHttpEndpoint({
|
|
56
|
+
method,
|
|
57
|
+
route: routePath,
|
|
58
|
+
instanceId: registerOpts.instanceId,
|
|
59
|
+
endpoint: registerOpts.endpoint,
|
|
60
|
+
allowedCallers: registerOpts.allowedCallers ?? []
|
|
61
|
+
}).catch(() => {});
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
fastify.addHook("onRequest", async (request, reply) => {
|
|
66
|
+
request.servicebridge = client;
|
|
67
|
+
const path = request.url?.split("?")[0] ?? "/";
|
|
68
|
+
if (excludePaths.some((p) => path.startsWith(p))) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const headers = {};
|
|
72
|
+
for (const [k, v] of Object.entries(request.headers)) {
|
|
73
|
+
if (typeof v === "string" || Array.isArray(v)) {
|
|
74
|
+
headers[k.toLowerCase()] = v;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const traceCtx = extractTraceFromHeaders(headers);
|
|
78
|
+
const span = client.startHttpSpan({
|
|
79
|
+
method: request.method,
|
|
80
|
+
path,
|
|
81
|
+
traceId: traceCtx.traceId,
|
|
82
|
+
parentSpanId: traceCtx.parentSpanId
|
|
83
|
+
});
|
|
84
|
+
let ended = false;
|
|
85
|
+
const endSpan = (opts) => {
|
|
86
|
+
if (ended)
|
|
87
|
+
return;
|
|
88
|
+
ended = true;
|
|
89
|
+
span.end(opts);
|
|
90
|
+
};
|
|
91
|
+
request.traceId = span.traceId;
|
|
92
|
+
request.spanId = span.spanId;
|
|
93
|
+
if (propagateTraceHeader) {
|
|
94
|
+
reply.header("x-trace-id", span.traceId);
|
|
95
|
+
}
|
|
96
|
+
request.raw.once("close", () => {
|
|
97
|
+
if (!reply.sent) {
|
|
98
|
+
endSpan({ success: false, error: "connection closed" });
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
reply.raw.once("finish", () => {
|
|
102
|
+
endSpan({
|
|
103
|
+
statusCode: reply.statusCode,
|
|
104
|
+
success: reply.statusCode < 400
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function wrapHandler(handler) {
|
|
110
|
+
return (request, reply) => {
|
|
111
|
+
const traceId = request.traceId;
|
|
112
|
+
const spanId = request.spanId;
|
|
113
|
+
if (traceId && spanId) {
|
|
114
|
+
return runWithTraceContext({ traceId, spanId }, () => handler(request, reply));
|
|
115
|
+
}
|
|
116
|
+
return handler(request, reply);
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export {
|
|
120
|
+
wrapHandler,
|
|
121
|
+
servicebridgePlugin
|
|
122
|
+
};
|