@toon-protocol/connector 3.20.1 → 3.29.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.
Files changed (181) hide show
  1. package/README.md +6 -6
  2. package/dist/auth/rfc9421/content-digest.d.ts +16 -0
  3. package/dist/auth/rfc9421/content-digest.d.ts.map +1 -0
  4. package/dist/auth/rfc9421/content-digest.js +35 -0
  5. package/dist/auth/rfc9421/content-digest.js.map +1 -0
  6. package/dist/auth/rfc9421/index.d.ts +9 -0
  7. package/dist/auth/rfc9421/index.d.ts.map +1 -0
  8. package/dist/auth/rfc9421/index.js +24 -0
  9. package/dist/auth/rfc9421/index.js.map +1 -0
  10. package/dist/auth/rfc9421/sign.d.ts +20 -0
  11. package/dist/auth/rfc9421/sign.d.ts.map +1 -0
  12. package/dist/auth/rfc9421/sign.js +43 -0
  13. package/dist/auth/rfc9421/sign.js.map +1 -0
  14. package/dist/auth/rfc9421/signature-base.d.ts +21 -0
  15. package/dist/auth/rfc9421/signature-base.d.ts.map +1 -0
  16. package/dist/auth/rfc9421/signature-base.js +57 -0
  17. package/dist/auth/rfc9421/signature-base.js.map +1 -0
  18. package/dist/auth/rfc9421/verify.d.ts +19 -0
  19. package/dist/auth/rfc9421/verify.d.ts.map +1 -0
  20. package/dist/auth/rfc9421/verify.js +215 -0
  21. package/dist/auth/rfc9421/verify.js.map +1 -0
  22. package/dist/btp/btp-client-manager.d.ts +1 -1
  23. package/dist/btp/btp-client-manager.d.ts.map +1 -1
  24. package/dist/btp/btp-client.d.ts +2 -2
  25. package/dist/btp/btp-client.d.ts.map +1 -1
  26. package/dist/btp/btp-client.js.map +1 -1
  27. package/dist/cli/admin-client-factory.d.ts +10 -0
  28. package/dist/cli/admin-client-factory.d.ts.map +1 -0
  29. package/dist/cli/admin-client-factory.js +33 -0
  30. package/dist/cli/admin-client-factory.js.map +1 -0
  31. package/dist/cli/commands/app.d.ts +6 -0
  32. package/dist/cli/commands/app.d.ts.map +1 -0
  33. package/dist/cli/commands/app.js +132 -0
  34. package/dist/cli/commands/app.js.map +1 -0
  35. package/dist/cli/commands/route.d.ts +3 -0
  36. package/dist/cli/commands/route.d.ts.map +1 -0
  37. package/dist/cli/commands/route.js +63 -0
  38. package/dist/cli/commands/route.js.map +1 -0
  39. package/dist/cli/commands/up.d.ts +3 -0
  40. package/dist/cli/commands/up.d.ts.map +1 -0
  41. package/dist/cli/commands/up.js +27 -0
  42. package/dist/cli/commands/up.js.map +1 -0
  43. package/dist/cli/index.js +32 -16
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/client/connector-admin-client.d.ts +17 -12
  46. package/dist/client/connector-admin-client.d.ts.map +1 -1
  47. package/dist/client/connector-admin-client.js.map +1 -1
  48. package/dist/config/config-loader.d.ts +0 -3
  49. package/dist/config/config-loader.d.ts.map +1 -1
  50. package/dist/config/config-loader.js +41 -161
  51. package/dist/config/config-loader.js.map +1 -1
  52. package/dist/config/environment-validator.js +6 -6
  53. package/dist/config/environment-validator.js.map +1 -1
  54. package/dist/config/types.d.ts +49 -17
  55. package/dist/config/types.d.ts.map +1 -1
  56. package/dist/config/types.js +93 -1
  57. package/dist/config/types.js.map +1 -1
  58. package/dist/core/connector-node.d.ts +13 -1
  59. package/dist/core/connector-node.d.ts.map +1 -1
  60. package/dist/core/connector-node.js +279 -171
  61. package/dist/core/connector-node.js.map +1 -1
  62. package/dist/core/handlers/http-proxy-handler.d.ts +47 -0
  63. package/dist/core/handlers/http-proxy-handler.d.ts.map +1 -0
  64. package/dist/core/handlers/http-proxy-handler.js +223 -0
  65. package/dist/core/handlers/http-proxy-handler.js.map +1 -0
  66. package/dist/core/local-delivery-client.d.ts +1 -0
  67. package/dist/core/local-delivery-client.d.ts.map +1 -1
  68. package/dist/core/local-delivery-client.js +25 -9
  69. package/dist/core/local-delivery-client.js.map +1 -1
  70. package/dist/core/packet-handler.d.ts +10 -0
  71. package/dist/core/packet-handler.d.ts.map +1 -1
  72. package/dist/core/packet-handler.js +121 -8
  73. package/dist/core/packet-handler.js.map +1 -1
  74. package/dist/core/payment-handler.d.ts +2 -1
  75. package/dist/core/payment-handler.d.ts.map +1 -1
  76. package/dist/core/payment-handler.js +24 -0
  77. package/dist/core/payment-handler.js.map +1 -1
  78. package/dist/core/registry-db-schema.d.ts +2 -1
  79. package/dist/core/registry-db-schema.d.ts.map +1 -1
  80. package/dist/core/registry-db-schema.js +9 -0
  81. package/dist/core/registry-db-schema.js.map +1 -1
  82. package/dist/core/registry-store.d.ts +1 -0
  83. package/dist/core/registry-store.d.ts.map +1 -1
  84. package/dist/core/registry-store.js +6 -4
  85. package/dist/core/registry-store.js.map +1 -1
  86. package/dist/core/route-upstream-registry.d.ts +17 -0
  87. package/dist/core/route-upstream-registry.d.ts.map +1 -0
  88. package/dist/core/route-upstream-registry.js +51 -0
  89. package/dist/core/route-upstream-registry.js.map +1 -0
  90. package/dist/discovery/ilp-peer-info-event.d.ts +22 -0
  91. package/dist/discovery/ilp-peer-info-event.d.ts.map +1 -0
  92. package/dist/discovery/ilp-peer-info-event.js +21 -0
  93. package/dist/discovery/ilp-peer-info-event.js.map +1 -0
  94. package/dist/discovery/index.d.ts +8 -0
  95. package/dist/discovery/index.d.ts.map +1 -1
  96. package/dist/discovery/index.js +16 -1
  97. package/dist/discovery/index.js.map +1 -1
  98. package/dist/discovery/self-announce-builder.d.ts +14 -0
  99. package/dist/discovery/self-announce-builder.d.ts.map +1 -0
  100. package/dist/discovery/self-announce-builder.js +88 -0
  101. package/dist/discovery/self-announce-builder.js.map +1 -0
  102. package/dist/discovery/self-announce-publish.d.ts +17 -0
  103. package/dist/discovery/self-announce-publish.d.ts.map +1 -0
  104. package/dist/discovery/self-announce-publish.js +35 -0
  105. package/dist/discovery/self-announce-publish.js.map +1 -0
  106. package/dist/discovery/self-announce-service.d.ts +36 -0
  107. package/dist/discovery/self-announce-service.d.ts.map +1 -0
  108. package/dist/discovery/self-announce-service.js +118 -0
  109. package/dist/discovery/self-announce-service.js.map +1 -0
  110. package/dist/http/admin-api-inventory.d.ts.map +1 -1
  111. package/dist/http/admin-api-inventory.js +0 -42
  112. package/dist/http/admin-api-inventory.js.map +1 -1
  113. package/dist/http/admin-api.d.ts +29 -13
  114. package/dist/http/admin-api.d.ts.map +1 -1
  115. package/dist/http/admin-api.js +141 -76
  116. package/dist/http/admin-api.js.map +1 -1
  117. package/dist/http/admin-server.d.ts +3 -4
  118. package/dist/http/admin-server.d.ts.map +1 -1
  119. package/dist/http/admin-server.js +4 -6
  120. package/dist/http/admin-server.js.map +1 -1
  121. package/dist/http/ilp-http-adapter.d.ts +10 -0
  122. package/dist/http/ilp-http-adapter.d.ts.map +1 -1
  123. package/dist/http/ilp-http-adapter.js +118 -0
  124. package/dist/http/ilp-http-adapter.js.map +1 -1
  125. package/dist/http/types.d.ts +1 -1
  126. package/dist/http/types.d.ts.map +1 -1
  127. package/dist/http/x402-greeting.d.ts +46 -0
  128. package/dist/http/x402-greeting.d.ts.map +1 -0
  129. package/dist/http/x402-greeting.js +77 -0
  130. package/dist/http/x402-greeting.js.map +1 -0
  131. package/dist/lib.d.ts +15 -4
  132. package/dist/lib.d.ts.map +1 -1
  133. package/dist/lib.js +42 -1
  134. package/dist/lib.js.map +1 -1
  135. package/dist/main.d.ts +3 -1
  136. package/dist/main.d.ts.map +1 -1
  137. package/dist/main.js +3 -1
  138. package/dist/main.js.map +1 -1
  139. package/dist/settlement/channel-manager.d.ts.map +1 -1
  140. package/dist/settlement/channel-manager.js +1 -1
  141. package/dist/settlement/channel-manager.js.map +1 -1
  142. package/dist/settlement/provider/solana-payment-channel-provider.d.ts.map +1 -1
  143. package/dist/settlement/provider/solana-payment-channel-provider.js +1 -1
  144. package/dist/settlement/provider/solana-payment-channel-provider.js.map +1 -1
  145. package/dist/settlement/solana-payment-channel-sdk.d.ts +1 -1
  146. package/dist/settlement/solana-payment-channel-sdk.d.ts.map +1 -1
  147. package/dist/settlement/solana-payment-channel-sdk.js +2 -2
  148. package/dist/settlement/solana-payment-channel-sdk.js.map +1 -1
  149. package/dist/transport/http-peer-transport.d.ts +46 -0
  150. package/dist/transport/http-peer-transport.d.ts.map +1 -0
  151. package/dist/transport/http-peer-transport.js +185 -0
  152. package/dist/transport/http-peer-transport.js.map +1 -0
  153. package/dist/transport/index.d.ts +0 -3
  154. package/dist/transport/index.d.ts.map +1 -1
  155. package/dist/transport/index.js +1 -8
  156. package/dist/transport/index.js.map +1 -1
  157. package/dist/wallet/mnemonic-keys.d.ts +15 -0
  158. package/dist/wallet/mnemonic-keys.d.ts.map +1 -0
  159. package/dist/wallet/mnemonic-keys.js +150 -0
  160. package/dist/wallet/mnemonic-keys.js.map +1 -0
  161. package/package.json +11 -8
  162. package/dist/transport/hs-desc-monitor.d.ts +0 -12
  163. package/dist/transport/hs-desc-monitor.d.ts.map +0 -1
  164. package/dist/transport/hs-desc-monitor.js +0 -105
  165. package/dist/transport/hs-desc-monitor.js.map +0 -1
  166. package/dist/transport/managed-anon-client.d.ts +0 -93
  167. package/dist/transport/managed-anon-client.d.ts.map +0 -1
  168. package/dist/transport/managed-anon-client.js +0 -522
  169. package/dist/transport/managed-anon-client.js.map +0 -1
  170. package/dist/transport/socks-transport-provider.d.ts +0 -29
  171. package/dist/transport/socks-transport-provider.d.ts.map +0 -1
  172. package/dist/transport/socks-transport-provider.js +0 -136
  173. package/dist/transport/socks-transport-provider.js.map +0 -1
  174. package/dist/transport/socks-url.d.ts +0 -6
  175. package/dist/transport/socks-url.d.ts.map +0 -1
  176. package/dist/transport/socks-url.js +0 -29
  177. package/dist/transport/socks-url.js.map +0 -1
  178. package/dist/transport/socks5-connect.d.ts +0 -12
  179. package/dist/transport/socks5-connect.d.ts.map +0 -1
  180. package/dist/transport/socks5-connect.js +0 -89
  181. package/dist/transport/socks5-connect.js.map +0 -1
package/README.md CHANGED
@@ -35,7 +35,7 @@ The connector supports two deployment modes via `deploymentMode` in config:
35
35
  | Mode | Value | How packets arrive | How packets are sent |
36
36
  | -------------- | -------------- | ----------------------------- | ------------------------------ |
37
37
  | **Embedded** | `'embedded'` | `setPacketHandler()` callback | `node.sendPacket()` |
38
- | **Standalone** | `'standalone'` | HTTP POST to BLS `handlerUrl` | HTTP POST to `/admin/ilp/send` |
38
+ | **Standalone** | `'standalone'` | HTTP POST to app `handlerUrl` | HTTP POST to `/admin/ilp/send` |
39
39
 
40
40
  When `deploymentMode` is omitted, it is inferred from `localDelivery` and `adminApi` flags.
41
41
 
@@ -107,7 +107,7 @@ environment: production
107
107
 
108
108
  localDelivery:
109
109
  enabled: true
110
- handlerUrl: http://my-bls:3100
110
+ handlerUrl: http://my-app:3100
111
111
  timeout: 5000
112
112
 
113
113
  adminApi:
@@ -147,7 +147,7 @@ const node = new ConnectorNode(config: ConnectorConfig | string, logger: Logger)
147
147
  | `healthCheckPort` | `number` | `8080` | HTTP health endpoint port |
148
148
  | `logLevel` | `string` | `'info'` | `'debug'` \| `'info'` \| `'warn'` \| `'error'` |
149
149
  | `adminApi` | `AdminApiConfig` | disabled | Admin REST API settings |
150
- | `localDelivery` | `LocalDeliveryConfig` | disabled | HTTP forwarding to BLS |
150
+ | `localDelivery` | `LocalDeliveryConfig` | disabled | HTTP forwarding to app |
151
151
  | `settlement` | `SettlementConfig` | — | TigerBeetle accounting config |
152
152
  | `chainProviders` | `ChainProviderConfigEntry[]` | — | Multi-chain settlement providers (EVM, Solana, Mina) |
153
153
  | `transport` | `TransportConfig` | direct | Network transport: `direct` or `socks5` (ATOR) |
@@ -257,19 +257,19 @@ peers:
257
257
 
258
258
  ## Per-Hop Notification
259
259
 
260
- Intermediate connectors can fire non-blocking notifications to a BLS for transit packets:
260
+ Intermediate connectors can fire non-blocking notifications to an app for transit packets:
261
261
 
262
262
  ```yaml
263
263
  localDelivery:
264
264
  enabled: true
265
- handlerUrl: http://my-bls:3100
265
+ handlerUrl: http://my-app:3100
266
266
  perHopNotification: true
267
267
  ```
268
268
 
269
269
  | | Transit (`isTransit: true`) | Final-Hop (`isTransit` omitted) |
270
270
  | ---------------- | --------------------------- | ---------------------------------- |
271
271
  | **When** | Packet passing through | Packet addressed to this connector |
272
- | **BLS response** | Ignored (fire-and-forget) | Drives ILP fulfill/reject |
272
+ | **App response** | Ignored (fire-and-forget) | Drives ILP fulfill/reject |
273
273
  | **Blocking** | No | Yes |
274
274
  | **Use case** | Logging, analytics | Payment acceptance, business logic |
275
275
 
@@ -0,0 +1,16 @@
1
+ export declare const CONTENT_DIGEST_ALG = "sha-256";
2
+ export declare const CONTENT_DIGEST_HEADER = "content-digest";
3
+ export declare function computeContentDigest(rawBody: Uint8Array): string;
4
+ export interface ParsedContentDigest {
5
+ alg: string;
6
+ base64: string;
7
+ }
8
+ export declare function parseContentDigest(value: string): ParsedContentDigest | undefined;
9
+ export type ContentDigestVerifyResult = {
10
+ ok: true;
11
+ } | {
12
+ ok: false;
13
+ reason: 'missing' | 'malformed' | 'unsupported_alg' | 'mismatch';
14
+ };
15
+ export declare function verifyContentDigest(headerValue: string | undefined, rawBody: Uint8Array): ContentDigestVerifyResult;
16
+ //# sourceMappingURL=content-digest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-digest.d.ts","sourceRoot":"","sources":["../../../src/auth/rfc9421/content-digest.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAG5C,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAStD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAIhE;AAGD,MAAM,WAAW,mBAAmB;IAElC,GAAG,EAAE,MAAM,CAAC;IAEZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAKjF;AAGD,MAAM,MAAM,yBAAyB,GACjC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,iBAAiB,GAAG,UAAU,CAAA;CAAE,CAAC;AAWpF,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,GAClB,yBAAyB,CAW3B"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONTENT_DIGEST_HEADER = exports.CONTENT_DIGEST_ALG = void 0;
4
+ exports.computeContentDigest = computeContentDigest;
5
+ exports.parseContentDigest = parseContentDigest;
6
+ exports.verifyContentDigest = verifyContentDigest;
7
+ const sha2_1 = require("@noble/hashes/sha2");
8
+ exports.CONTENT_DIGEST_ALG = 'sha-256';
9
+ exports.CONTENT_DIGEST_HEADER = 'content-digest';
10
+ function computeContentDigest(rawBody) {
11
+ const hash = (0, sha2_1.sha256)(rawBody);
12
+ const b64 = Buffer.from(hash).toString('base64');
13
+ return `${exports.CONTENT_DIGEST_ALG}=:${b64}:`;
14
+ }
15
+ function parseContentDigest(value) {
16
+ const match = /^\s*([A-Za-z0-9-]+)\s*=\s*:([A-Za-z0-9+/]+={0,2}):\s*$/.exec(value);
17
+ if (!match || match[1] === undefined || match[2] === undefined)
18
+ return undefined;
19
+ return { alg: match[1].toLowerCase(), base64: match[2] };
20
+ }
21
+ function verifyContentDigest(headerValue, rawBody) {
22
+ if (headerValue === undefined || headerValue.length === 0) {
23
+ return { ok: false, reason: 'missing' };
24
+ }
25
+ const parsed = parseContentDigest(headerValue);
26
+ if (!parsed)
27
+ return { ok: false, reason: 'malformed' };
28
+ if (parsed.alg !== exports.CONTENT_DIGEST_ALG)
29
+ return { ok: false, reason: 'unsupported_alg' };
30
+ const expected = Buffer.from((0, sha2_1.sha256)(rawBody)).toString('base64');
31
+ if (parsed.base64 !== expected)
32
+ return { ok: false, reason: 'mismatch' };
33
+ return { ok: true };
34
+ }
35
+ //# sourceMappingURL=content-digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-digest.js","sourceRoot":"","sources":["../../../src/auth/rfc9421/content-digest.ts"],"names":[],"mappings":";;;AAoCA,oDAIC;AAmBD,gDAKC;AAgBD,kDAcC;AAzED,6CAA4C;AAG/B,QAAA,kBAAkB,GAAG,SAAS,CAAC;AAG/B,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AAStD,SAAgB,oBAAoB,CAAC,OAAmB;IACtD,MAAM,IAAI,GAAG,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,GAAG,0BAAkB,KAAK,GAAG,GAAG,CAAC;AAC1C,CAAC;AAmBD,SAAgB,kBAAkB,CAAC,KAAa;IAE9C,MAAM,KAAK,GAAG,wDAAwD,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACjF,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAgBD,SAAgB,mBAAmB,CACjC,WAA+B,EAC/B,OAAmB;IAEnB,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,GAAG,KAAK,0BAAkB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAEvF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAA,aAAM,EAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { computeContentDigest, verifyContentDigest, parseContentDigest, CONTENT_DIGEST_ALG, CONTENT_DIGEST_HEADER, } from './content-digest';
2
+ export type { ParsedContentDigest, ContentDigestVerifyResult } from './content-digest';
3
+ export { buildSignatureBase, serializeSignatureParams, SignatureBaseError, COVERED_COMPONENTS, PRICE_HEADER, PRICE_HEADER_WIRE, SIGNATURE_ALG, } from './signature-base';
4
+ export type { RequestContext, SignatureParams } from './signature-base';
5
+ export { verify } from './verify';
6
+ export type { VerifyResult, VerifyOptions, VerifyFailureCode } from './verify';
7
+ export { signRequest, publicKeyToKeyid, DEFAULT_SIGNATURE_LABEL } from './sign';
8
+ export type { SignRequestInput, SignedHeaders } from './sign';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/auth/rfc9421/index.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAEvF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,QAAQ,CAAC;AAChF,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SIGNATURE_LABEL = exports.publicKeyToKeyid = exports.signRequest = exports.verify = exports.SIGNATURE_ALG = exports.PRICE_HEADER_WIRE = exports.PRICE_HEADER = exports.COVERED_COMPONENTS = exports.SignatureBaseError = exports.serializeSignatureParams = exports.buildSignatureBase = exports.CONTENT_DIGEST_HEADER = exports.CONTENT_DIGEST_ALG = exports.parseContentDigest = exports.verifyContentDigest = exports.computeContentDigest = void 0;
4
+ var content_digest_1 = require("./content-digest");
5
+ Object.defineProperty(exports, "computeContentDigest", { enumerable: true, get: function () { return content_digest_1.computeContentDigest; } });
6
+ Object.defineProperty(exports, "verifyContentDigest", { enumerable: true, get: function () { return content_digest_1.verifyContentDigest; } });
7
+ Object.defineProperty(exports, "parseContentDigest", { enumerable: true, get: function () { return content_digest_1.parseContentDigest; } });
8
+ Object.defineProperty(exports, "CONTENT_DIGEST_ALG", { enumerable: true, get: function () { return content_digest_1.CONTENT_DIGEST_ALG; } });
9
+ Object.defineProperty(exports, "CONTENT_DIGEST_HEADER", { enumerable: true, get: function () { return content_digest_1.CONTENT_DIGEST_HEADER; } });
10
+ var signature_base_1 = require("./signature-base");
11
+ Object.defineProperty(exports, "buildSignatureBase", { enumerable: true, get: function () { return signature_base_1.buildSignatureBase; } });
12
+ Object.defineProperty(exports, "serializeSignatureParams", { enumerable: true, get: function () { return signature_base_1.serializeSignatureParams; } });
13
+ Object.defineProperty(exports, "SignatureBaseError", { enumerable: true, get: function () { return signature_base_1.SignatureBaseError; } });
14
+ Object.defineProperty(exports, "COVERED_COMPONENTS", { enumerable: true, get: function () { return signature_base_1.COVERED_COMPONENTS; } });
15
+ Object.defineProperty(exports, "PRICE_HEADER", { enumerable: true, get: function () { return signature_base_1.PRICE_HEADER; } });
16
+ Object.defineProperty(exports, "PRICE_HEADER_WIRE", { enumerable: true, get: function () { return signature_base_1.PRICE_HEADER_WIRE; } });
17
+ Object.defineProperty(exports, "SIGNATURE_ALG", { enumerable: true, get: function () { return signature_base_1.SIGNATURE_ALG; } });
18
+ var verify_1 = require("./verify");
19
+ Object.defineProperty(exports, "verify", { enumerable: true, get: function () { return verify_1.verify; } });
20
+ var sign_1 = require("./sign");
21
+ Object.defineProperty(exports, "signRequest", { enumerable: true, get: function () { return sign_1.signRequest; } });
22
+ Object.defineProperty(exports, "publicKeyToKeyid", { enumerable: true, get: function () { return sign_1.publicKeyToKeyid; } });
23
+ Object.defineProperty(exports, "DEFAULT_SIGNATURE_LABEL", { enumerable: true, get: function () { return sign_1.DEFAULT_SIGNATURE_LABEL; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/rfc9421/index.ts"],"names":[],"mappings":";;;AAWA,mDAM0B;AALxB,sHAAA,oBAAoB,OAAA;AACpB,qHAAA,mBAAmB,OAAA;AACnB,oHAAA,kBAAkB,OAAA;AAClB,oHAAA,kBAAkB,OAAA;AAClB,uHAAA,qBAAqB,OAAA;AAIvB,mDAQ0B;AAPxB,oHAAA,kBAAkB,OAAA;AAClB,0HAAA,wBAAwB,OAAA;AACxB,oHAAA,kBAAkB,OAAA;AAClB,oHAAA,kBAAkB,OAAA;AAClB,8GAAA,YAAY,OAAA;AACZ,mHAAA,iBAAiB,OAAA;AACjB,+GAAA,aAAa,OAAA;AAIf,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAGf,+BAAgF;AAAvE,mGAAA,WAAW,OAAA;AAAE,wGAAA,gBAAgB,OAAA;AAAE,+GAAA,uBAAuB,OAAA"}
@@ -0,0 +1,20 @@
1
+ export declare const DEFAULT_SIGNATURE_LABEL = "sig1";
2
+ export interface SignRequestInput {
3
+ privateKey: Uint8Array;
4
+ method: string;
5
+ path: string;
6
+ body: Uint8Array;
7
+ price: string;
8
+ created?: number;
9
+ expires?: number;
10
+ keyid?: string;
11
+ label?: string;
12
+ }
13
+ export interface SignedHeaders {
14
+ headers: Record<string, string>;
15
+ label: string;
16
+ keyid: string;
17
+ }
18
+ export declare function publicKeyToKeyid(publicKey: Uint8Array): string;
19
+ export declare function signRequest(input: SignRequestInput): SignedHeaders;
20
+ //# sourceMappingURL=sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../../src/auth/rfc9421/sign.ts"],"names":[],"mappings":"AAgCA,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAG9C,MAAM,WAAW,gBAAgB;IAE/B,UAAU,EAAE,UAAU,CAAC;IAEvB,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IAEb,IAAI,EAAE,UAAU,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,WAAW,aAAa;IAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,KAAK,EAAE,MAAM,CAAC;IAEd,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAE9D;AASD,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,aAAa,CAoClE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SIGNATURE_LABEL = void 0;
4
+ exports.publicKeyToKeyid = publicKeyToKeyid;
5
+ exports.signRequest = signRequest;
6
+ const ed25519_1 = require("@noble/curves/ed25519");
7
+ const utils_1 = require("@noble/hashes/utils");
8
+ const content_digest_1 = require("./content-digest");
9
+ const signature_base_1 = require("./signature-base");
10
+ exports.DEFAULT_SIGNATURE_LABEL = 'sig1';
11
+ function publicKeyToKeyid(publicKey) {
12
+ return (0, utils_1.bytesToHex)(publicKey);
13
+ }
14
+ function signRequest(input) {
15
+ const label = input.label ?? exports.DEFAULT_SIGNATURE_LABEL;
16
+ const created = input.created ?? Math.floor(Date.now() / 1000);
17
+ const publicKey = ed25519_1.ed25519.getPublicKey(input.privateKey);
18
+ const keyid = input.keyid ?? publicKeyToKeyid(publicKey);
19
+ const contentDigest = (0, content_digest_1.computeContentDigest)(input.body);
20
+ const headers = {
21
+ 'content-digest': contentDigest,
22
+ [signature_base_1.PRICE_HEADER]: input.price,
23
+ };
24
+ const req = {
25
+ method: input.method,
26
+ path: input.path,
27
+ headers,
28
+ };
29
+ const params = {
30
+ created,
31
+ keyid,
32
+ alg: signature_base_1.SIGNATURE_ALG,
33
+ expires: input.expires,
34
+ };
35
+ const base = (0, signature_base_1.buildSignatureBase)(req, params, signature_base_1.COVERED_COMPONENTS);
36
+ const signature = ed25519_1.ed25519.sign(new TextEncoder().encode(base), input.privateKey);
37
+ const sigB64 = Buffer.from(signature).toString('base64');
38
+ const sigParamsValue = (0, signature_base_1.serializeSignatureParams)(signature_base_1.COVERED_COMPONENTS, params);
39
+ headers['signature-input'] = `${label}=${sigParamsValue}`;
40
+ headers['signature'] = `${label}=:${sigB64}:`;
41
+ return { headers, label, keyid };
42
+ }
43
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/auth/rfc9421/sign.ts"],"names":[],"mappings":";;;AAuEA,4CAEC;AASD,kCAoCC;AApGD,mDAAgD;AAChD,+CAAiD;AACjD,qDAAwD;AACxD,qDAQ0B;AAGb,QAAA,uBAAuB,GAAG,MAAM,CAAC;AAuC9C,SAAgB,gBAAgB,CAAC,SAAqB;IACpD,OAAO,IAAA,kBAAU,EAAC,SAAS,CAAC,CAAC;AAC/B,CAAC;AASD,SAAgB,WAAW,CAAC,KAAuB;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,+BAAuB,CAAC;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,iBAAO,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,aAAa,GAAG,IAAA,qCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvD,MAAM,OAAO,GAA2B;QACtC,gBAAgB,EAAE,aAAa;QAC/B,CAAC,6BAAY,CAAC,EAAE,KAAK,CAAC,KAAK;KAC5B,CAAC;IAEF,MAAM,GAAG,GAAmB;QAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO;KACR,CAAC;IAEF,MAAM,MAAM,GAAoB;QAC9B,OAAO;QACP,KAAK;QACL,GAAG,EAAE,8BAAa;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;IAEF,MAAM,IAAI,GAAG,IAAA,mCAAkB,EAAC,GAAG,EAAE,MAAM,EAAE,mCAAkB,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,iBAAO,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAG,IAAA,yCAAwB,EAAC,mCAAkB,EAAE,MAAM,CAAC,CAAC;IAE5E,OAAO,CAAC,iBAAiB,CAAC,GAAG,GAAG,KAAK,IAAI,cAAc,EAAE,CAAC;IAC1D,OAAO,CAAC,WAAW,CAAC,GAAG,GAAG,KAAK,KAAK,MAAM,GAAG,CAAC;IAE9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare const PRICE_HEADER = "toon-price";
2
+ export declare const PRICE_HEADER_WIRE = "TOON-Price";
3
+ export declare const SIGNATURE_ALG = "ed25519";
4
+ export declare const COVERED_COMPONENTS: readonly string[];
5
+ export interface RequestContext {
6
+ method: string;
7
+ path: string;
8
+ headers: Record<string, string>;
9
+ }
10
+ export interface SignatureParams {
11
+ created: number;
12
+ keyid: string;
13
+ alg?: string;
14
+ expires?: number;
15
+ }
16
+ export declare class SignatureBaseError extends Error {
17
+ constructor(message: string);
18
+ }
19
+ export declare function serializeSignatureParams(components: readonly string[], params: SignatureParams): string;
20
+ export declare function buildSignatureBase(req: RequestContext, params: SignatureParams, components?: readonly string[]): string;
21
+ //# sourceMappingURL=signature-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-base.d.ts","sourceRoot":"","sources":["../../../src/auth/rfc9421/signature-base.ts"],"names":[],"mappings":"AAqCA,eAAO,MAAM,YAAY,eAAe,CAAC;AAGzC,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAG9C,eAAO,MAAM,aAAa,YAAY,CAAC;AAMvC,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAKtC,CAAC;AAGX,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IAEb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAGD,MAAM,WAAW,eAAe;IAE9B,OAAO,EAAE,MAAM,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,CAAC,EAAE,MAAM,CAAC;IAOb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2BD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAWD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,EAAE,eAAe,GACtB,MAAM,CAQR;AAcD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,eAAe,EACvB,UAAU,GAAE,SAAS,MAAM,EAAuB,GACjD,MAAM,CAQR"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SignatureBaseError = exports.COVERED_COMPONENTS = exports.SIGNATURE_ALG = exports.PRICE_HEADER_WIRE = exports.PRICE_HEADER = void 0;
4
+ exports.serializeSignatureParams = serializeSignatureParams;
5
+ exports.buildSignatureBase = buildSignatureBase;
6
+ const content_digest_1 = require("./content-digest");
7
+ exports.PRICE_HEADER = 'toon-price';
8
+ exports.PRICE_HEADER_WIRE = 'TOON-Price';
9
+ exports.SIGNATURE_ALG = 'ed25519';
10
+ exports.COVERED_COMPONENTS = [
11
+ '@method',
12
+ '@path',
13
+ content_digest_1.CONTENT_DIGEST_HEADER,
14
+ exports.PRICE_HEADER,
15
+ ];
16
+ function componentValue(id, req) {
17
+ switch (id) {
18
+ case '@method':
19
+ return req.method.toUpperCase();
20
+ case '@path':
21
+ return req.path;
22
+ default: {
23
+ const v = req.headers[id];
24
+ if (v === undefined) {
25
+ throw new SignatureBaseError(`missing covered component: ${id}`);
26
+ }
27
+ return v.trim();
28
+ }
29
+ }
30
+ }
31
+ class SignatureBaseError extends Error {
32
+ constructor(message) {
33
+ super(message);
34
+ this.name = 'SignatureBaseError';
35
+ }
36
+ }
37
+ exports.SignatureBaseError = SignatureBaseError;
38
+ function serializeSignatureParams(components, params) {
39
+ const inner = components.map((c) => `"${c}"`).join(' ');
40
+ let out = `(${inner})`;
41
+ out += `;created=${params.created}`;
42
+ if (params.expires !== undefined)
43
+ out += `;expires=${params.expires}`;
44
+ out += `;keyid="${params.keyid}"`;
45
+ out += `;alg="${params.alg ?? exports.SIGNATURE_ALG}"`;
46
+ return out;
47
+ }
48
+ function buildSignatureBase(req, params, components = exports.COVERED_COMPONENTS) {
49
+ const lines = [];
50
+ for (const id of components) {
51
+ lines.push(`"${id}": ${componentValue(id, req)}`);
52
+ }
53
+ const paramsValue = serializeSignatureParams(components, params);
54
+ lines.push(`"@signature-params": ${paramsValue}`);
55
+ return lines.join('\n');
56
+ }
57
+ //# sourceMappingURL=signature-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature-base.js","sourceRoot":"","sources":["../../../src/auth/rfc9421/signature-base.ts"],"names":[],"mappings":";;;AA4HA,4DAWC;AAcD,gDAYC;AA/HD,qDAAyD;AAG5C,QAAA,YAAY,GAAG,YAAY,CAAC;AAG5B,QAAA,iBAAiB,GAAG,YAAY,CAAC;AAGjC,QAAA,aAAa,GAAG,SAAS,CAAC;AAM1B,QAAA,kBAAkB,GAAsB;IACnD,SAAS;IACT,OAAO;IACP,sCAAqB;IACrB,oBAAY;CACJ,CAAC;AAmCX,SAAS,cAAc,CAAC,EAAU,EAAE,GAAmB;IACrD,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,GAAG,CAAC,IAAI,CAAC;QAClB,OAAO,CAAC,CAAC,CAAC;YAER,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACpB,MAAM,IAAI,kBAAkB,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAGD,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAWD,SAAgB,wBAAwB,CACtC,UAA6B,EAC7B,MAAuB;IAEvB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,IAAI,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;IACvB,GAAG,IAAI,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;IACpC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,GAAG,IAAI,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC;IACtE,GAAG,IAAI,WAAW,MAAM,CAAC,KAAK,GAAG,CAAC;IAClC,GAAG,IAAI,SAAS,MAAM,CAAC,GAAG,IAAI,qBAAa,GAAG,CAAC;IAC/C,OAAO,GAAG,CAAC;AACb,CAAC;AAcD,SAAgB,kBAAkB,CAChC,GAAmB,EACnB,MAAuB,EACvB,aAAgC,0BAAkB;IAElD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,WAAW,GAAG,wBAAwB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type VerifyFailureCode = 'missing_signature' | 'malformed_signature' | 'unsupported_alg' | 'covered_components_mismatch' | 'missing_component' | 'digest_mismatch' | 'price_mismatch' | 'keyid_mismatch' | 'signature_invalid';
2
+ export type VerifyResult = {
3
+ ok: true;
4
+ keyid: string;
5
+ price: string;
6
+ created: number;
7
+ } | {
8
+ ok: false;
9
+ code: VerifyFailureCode;
10
+ detail?: string;
11
+ };
12
+ export interface VerifyOptions {
13
+ method: string;
14
+ path: string;
15
+ expectedPrice: string;
16
+ label?: string;
17
+ }
18
+ export declare function verify(headers: Record<string, string>, rawBody: Uint8Array, opts: VerifyOptions): VerifyResult;
19
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/auth/rfc9421/verify.ts"],"names":[],"mappings":"AAyCA,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,qBAAqB,GACrB,iBAAiB,GACjB,6BAA6B,GAC7B,mBAAmB,GACnB,iBAAiB,GACjB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,CAAC;AAGxB,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAG5D,MAAM,WAAW,aAAa;IAM5B,MAAM,EAAE,MAAM,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;IAOb,aAAa,EAAE,MAAM,CAAC;IAMtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA6ID,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,aAAa,GAClB,YAAY,CAmGd"}
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verify = verify;
4
+ const ed25519_1 = require("@noble/curves/ed25519");
5
+ const content_digest_1 = require("./content-digest");
6
+ const signature_base_1 = require("./signature-base");
7
+ function parseSignatureInput(value) {
8
+ const out = new Map();
9
+ for (const member of splitTopLevel(value, ',')) {
10
+ const eq = member.indexOf('=');
11
+ if (eq < 0)
12
+ return undefined;
13
+ const label = member.slice(0, eq).trim();
14
+ const rest = member.slice(eq + 1).trim();
15
+ if (!label || rest[0] !== '(')
16
+ return undefined;
17
+ const close = rest.indexOf(')');
18
+ if (close < 0)
19
+ return undefined;
20
+ const inner = rest.slice(1, close).trim();
21
+ const components = [];
22
+ if (inner.length > 0) {
23
+ for (const tok of inner.split(/\s+/)) {
24
+ const m = /^"([^"]*)"$/.exec(tok);
25
+ if (!m || m[1] === undefined)
26
+ return undefined;
27
+ components.push(m[1]);
28
+ }
29
+ }
30
+ const paramStr = rest.slice(close + 1);
31
+ let created;
32
+ let expires;
33
+ let keyid;
34
+ let alg;
35
+ for (const p of paramStr.split(';')) {
36
+ const t = p.trim();
37
+ if (!t)
38
+ continue;
39
+ const pe = t.indexOf('=');
40
+ if (pe < 0)
41
+ return undefined;
42
+ const k = t.slice(0, pe).trim();
43
+ const v = t.slice(pe + 1).trim();
44
+ switch (k) {
45
+ case 'created':
46
+ created = Number(v);
47
+ if (!Number.isInteger(created))
48
+ return undefined;
49
+ break;
50
+ case 'expires':
51
+ expires = Number(v);
52
+ if (!Number.isInteger(expires))
53
+ return undefined;
54
+ break;
55
+ case 'keyid':
56
+ keyid = stripQuotes(v);
57
+ break;
58
+ case 'alg':
59
+ alg = stripQuotes(v);
60
+ break;
61
+ default:
62
+ break;
63
+ }
64
+ }
65
+ if (created === undefined || keyid === undefined)
66
+ return undefined;
67
+ out.set(label, {
68
+ label,
69
+ components,
70
+ params: { created, expires, keyid, alg },
71
+ raw: rest,
72
+ });
73
+ }
74
+ return out.size > 0 ? out : undefined;
75
+ }
76
+ function parseSignature(value) {
77
+ const out = new Map();
78
+ for (const member of splitTopLevel(value, ',')) {
79
+ const eq = member.indexOf('=');
80
+ if (eq < 0)
81
+ return undefined;
82
+ const label = member.slice(0, eq).trim();
83
+ const rest = member.slice(eq + 1).trim();
84
+ const m = /^:([A-Za-z0-9+/]+={0,2}):$/.exec(rest);
85
+ if (!label || !m || m[1] === undefined)
86
+ return undefined;
87
+ out.set(label, new Uint8Array(Buffer.from(m[1], 'base64')));
88
+ }
89
+ return out.size > 0 ? out : undefined;
90
+ }
91
+ function splitTopLevel(s, sep) {
92
+ const parts = [];
93
+ let depth = 0;
94
+ let inQuote = false;
95
+ let start = 0;
96
+ for (let i = 0; i < s.length; i++) {
97
+ const ch = s[i];
98
+ if (ch === '"')
99
+ inQuote = !inQuote;
100
+ else if (!inQuote && ch === '(')
101
+ depth++;
102
+ else if (!inQuote && ch === ')')
103
+ depth--;
104
+ else if (!inQuote && depth === 0 && ch === sep) {
105
+ parts.push(s.slice(start, i));
106
+ start = i + 1;
107
+ }
108
+ }
109
+ parts.push(s.slice(start));
110
+ return parts.map((p) => p.trim()).filter((p) => p.length > 0);
111
+ }
112
+ function stripQuotes(v) {
113
+ const m = /^"([\s\S]*)"$/.exec(v);
114
+ return m && m[1] !== undefined ? m[1] : v;
115
+ }
116
+ function sameComponents(a, b) {
117
+ if (a.length !== b.length)
118
+ return false;
119
+ const sa = [...a].sort();
120
+ const sb = [...b].sort();
121
+ return sa.every((v, i) => v === sb[i]);
122
+ }
123
+ function verify(headers, rawBody, opts) {
124
+ const sigInputHeader = headers['signature-input'];
125
+ const sigHeader = headers['signature'];
126
+ if (!sigInputHeader || !sigHeader) {
127
+ return { ok: false, code: 'missing_signature' };
128
+ }
129
+ const inputs = parseSignatureInput(sigInputHeader);
130
+ const sigs = parseSignature(sigHeader);
131
+ if (!inputs || !sigs) {
132
+ return { ok: false, code: 'malformed_signature' };
133
+ }
134
+ let label = opts.label;
135
+ if (!label) {
136
+ if (inputs.size !== 1) {
137
+ return { ok: false, code: 'malformed_signature', detail: 'ambiguous signature label' };
138
+ }
139
+ [label] = inputs.keys();
140
+ }
141
+ if (label === undefined) {
142
+ return { ok: false, code: 'malformed_signature', detail: 'no signature label' };
143
+ }
144
+ const input = inputs.get(label);
145
+ const sigBytes = sigs.get(label);
146
+ if (!input || !sigBytes) {
147
+ return { ok: false, code: 'malformed_signature', detail: `no signature for label ${label}` };
148
+ }
149
+ const alg = input.params.alg ?? signature_base_1.SIGNATURE_ALG;
150
+ if (alg !== signature_base_1.SIGNATURE_ALG) {
151
+ return { ok: false, code: 'unsupported_alg', detail: alg };
152
+ }
153
+ if (!sameComponents(input.components, signature_base_1.COVERED_COMPONENTS)) {
154
+ return { ok: false, code: 'covered_components_mismatch' };
155
+ }
156
+ const digestResult = (0, content_digest_1.verifyContentDigest)(headers['content-digest'], rawBody);
157
+ if (!digestResult.ok) {
158
+ return { ok: false, code: 'digest_mismatch', detail: digestResult.reason };
159
+ }
160
+ const signedPrice = headers[signature_base_1.PRICE_HEADER];
161
+ if (signedPrice === undefined) {
162
+ return { ok: false, code: 'missing_component', detail: signature_base_1.PRICE_HEADER };
163
+ }
164
+ if (signedPrice !== opts.expectedPrice) {
165
+ return { ok: false, code: 'price_mismatch', detail: `signed=${signedPrice}` };
166
+ }
167
+ const req = {
168
+ method: opts.method,
169
+ path: opts.path,
170
+ headers,
171
+ };
172
+ let base;
173
+ try {
174
+ base = (0, signature_base_1.buildSignatureBase)(req, input.params, input.components);
175
+ }
176
+ catch (err) {
177
+ if (err instanceof signature_base_1.SignatureBaseError) {
178
+ return { ok: false, code: 'missing_component', detail: err.message };
179
+ }
180
+ throw err;
181
+ }
182
+ const keyid = input.params.keyid;
183
+ let publicKey;
184
+ try {
185
+ publicKey = hexToBytesStrict(keyid);
186
+ if (publicKey.length !== 32) {
187
+ return { ok: false, code: 'keyid_mismatch', detail: 'keyid is not a 32-byte ed25519 pubkey' };
188
+ }
189
+ }
190
+ catch {
191
+ return { ok: false, code: 'keyid_mismatch', detail: 'keyid is not valid hex' };
192
+ }
193
+ let valid = false;
194
+ try {
195
+ valid = ed25519_1.ed25519.verify(sigBytes, new TextEncoder().encode(base), publicKey);
196
+ }
197
+ catch {
198
+ valid = false;
199
+ }
200
+ if (!valid) {
201
+ return { ok: false, code: 'signature_invalid' };
202
+ }
203
+ return { ok: true, keyid, price: signedPrice, created: input.params.created };
204
+ }
205
+ function hexToBytesStrict(hex) {
206
+ if (hex.length % 2 !== 0 || !/^[0-9a-fA-F]*$/.test(hex)) {
207
+ throw new Error('invalid hex');
208
+ }
209
+ const out = new Uint8Array(hex.length / 2);
210
+ for (let i = 0; i < out.length; i++) {
211
+ out[i] = parseInt(hex.slice(i * 2, i * 2 + 2), 16);
212
+ }
213
+ return out;
214
+ }
215
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/auth/rfc9421/verify.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@ export declare class BTPClientManager {
22
22
  getPeerStatus(): Map<string, boolean>;
23
23
  getPeerIds(): string[];
24
24
  getClientForPeer(peerId: string): BTPClient | undefined;
25
- getPeerTransport(peerId: string): 'direct' | 'socks5' | undefined;
25
+ getPeerTransport(peerId: string): 'direct' | undefined;
26
26
  isConnected(peerId: string): boolean;
27
27
  getConnectedPeerCount(): number;
28
28
  getTotalPeerCount(): number;
@@ -1 +1 @@
1
- {"version":3,"file":"btp-client-manager.d.ts","sourceRoot":"","sources":["../../src/btp/btp-client-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAsB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAO5D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,aAAa,CAAyD;gBAOlE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAwB1C,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI;IAQ/E,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAa9C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiGlC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAiE9C,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC,UAAU,IAAI,MAAM,EAAE;IAUtB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAWvD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS;IAUjE,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUpC,qBAAqB,IAAI,MAAM;IAU/B,iBAAiB,IAAI,MAAM;IAS3B,mBAAmB,IAAI,MAAM;CAQ9B"}
1
+ {"version":3,"file":"btp-client-manager.d.ts","sourceRoot":"","sources":["../../src/btp/btp-client-manager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAsB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAO5D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,aAAa,CAAyD;gBAOlE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAwB1C,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,GAAG,IAAI;IAQ/E,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAa9C,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiGlC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCzC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC;IAiE9C,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAYrC,UAAU,IAAI,MAAM,EAAE;IAUtB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAWvD,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAUtD,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUpC,qBAAqB,IAAI,MAAM;IAU/B,iBAAiB,IAAI,MAAM;IAS3B,mBAAmB,IAAI,MAAM;CAQ9B"}
@@ -9,7 +9,7 @@ export interface Peer {
9
9
  authToken: string;
10
10
  connected: boolean;
11
11
  lastSeen: Date;
12
- transport?: 'direct' | 'socks5';
12
+ transport?: 'direct';
13
13
  }
14
14
  export declare class BTPConnectionError extends Error {
15
15
  constructor(message: string);
@@ -37,7 +37,7 @@ export declare class BTPClient extends EventEmitter {
37
37
  private readonly _agentFactory?;
38
38
  constructor(peer: Peer, nodeId: string, logger: Logger, maxRetries?: number, agentFactory?: (peer: Peer) => http.Agent | undefined);
39
39
  get isConnected(): boolean;
40
- getTransport(): 'direct' | 'socks5' | undefined;
40
+ getTransport(): 'direct' | undefined;
41
41
  sendRawFrameForTesting(frame: Buffer): boolean;
42
42
  setPacketHandler(packetHandler: PacketHandler): void;
43
43
  connect(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"btp-client.d.ts","sourceRoot":"","sources":["../../src/btp/btp-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAWzC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAK5D,MAAM,WAAW,IAAI;IAEnB,EAAE,EAAE,MAAM,CAAC;IAQX,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,OAAO,CAAC;IAEnB,QAAQ,EAAE,IAAI,CAAC;IAOf,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CACjC;AAUD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAKD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAK5B;AAeD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAG1C;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAyC;gBAuBtE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS;IAevD,IAAI,WAAW,IAAI,OAAO,CAEzB;IASD,YAAY,IAAI,QAAQ,GAAG,QAAQ,GAAG,SAAS;IA0B/C,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAY9C,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAQ9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0GxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,aAAa;IAsFrB,UAAU,CACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC;IA6ExC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDhF,cAAc;IA+K5B,OAAO,CAAC,YAAY;YA6BN,MAAM;IAmCpB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;CAI3B"}
1
+ {"version":3,"file":"btp-client.d.ts","sourceRoot":"","sources":["../../src/btp/btp-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAWzC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAK5D,MAAM,WAAW,IAAI;IAEnB,EAAE,EAAE,MAAM,CAAC;IAQX,GAAG,EAAE,MAAM,CAAC;IAEZ,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,EAAE,OAAO,CAAC;IAEnB,QAAQ,EAAE,IAAI,CAAC;IAIf,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAUD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAK5B;AAKD,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAK5B;AAeD,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAO;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAG1C;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,cAAc,CAA8B;IACpD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAyC;gBAuBtE,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,SAAS;IAevD,IAAI,WAAW,IAAI,OAAO,CAEzB;IASD,YAAY,IAAI,QAAQ,GAAG,SAAS;IA0BpC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAY9C,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAQ9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0GxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,aAAa;IAsFrB,UAAU,CACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GAChF,OAAO,CAAC,gBAAgB,GAAG,eAAe,CAAC;IA6ExC,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAsDhF,cAAc;IA+K5B,OAAO,CAAC,YAAY;YA6BN,MAAM;IAmCpB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;CAI3B"}