@atxp/server 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/dist/core/mcp.js.map +1 -1
  2. package/dist/getResource.js +19 -2
  3. package/dist/getResource.js.map +1 -1
  4. package/dist/index.cjs +450 -13436
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.ts +101 -17
  7. package/dist/index.js +425 -13439
  8. package/dist/index.js.map +1 -1
  9. package/dist/node/getRawBody.js +35 -0
  10. package/dist/node/getRawBody.js.map +1 -0
  11. package/dist/node/http.js +4 -7
  12. package/dist/node/http.js.map +1 -1
  13. package/dist/node/oauth.js +19 -1
  14. package/dist/node/oauth.js.map +1 -1
  15. package/dist/oAuthMetadata.js +1 -10
  16. package/dist/oAuthMetadata.js.map +1 -1
  17. package/dist/paymentDestination.js +85 -0
  18. package/dist/paymentDestination.js.map +1 -0
  19. package/dist/protectedResourceMetadata.js +6 -15
  20. package/dist/protectedResourceMetadata.js.map +1 -1
  21. package/dist/requirePayment.js +7 -2
  22. package/dist/requirePayment.js.map +1 -1
  23. package/dist/serverConfig.js +36 -0
  24. package/dist/serverConfig.js.map +1 -0
  25. package/dist/serverTestHelpers.d.ts +116 -0
  26. package/dist/serverTestHelpers.js +131 -0
  27. package/dist/serverTestHelpers.js.map +1 -0
  28. package/dist/webapi/mcp.js.map +1 -1
  29. package/dist/webapi/oauth.js +23 -1
  30. package/dist/webapi/oauth.js.map +1 -1
  31. package/package.json +8 -8
  32. package/dist/_virtual/_commonjsHelpers.js +0 -8
  33. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  34. package/dist/_virtual/bom-handling.js +0 -4
  35. package/dist/_virtual/bom-handling.js.map +0 -1
  36. package/dist/_virtual/dbcs-codec.js +0 -4
  37. package/dist/_virtual/dbcs-codec.js.map +0 -1
  38. package/dist/_virtual/index.js +0 -8
  39. package/dist/_virtual/index.js.map +0 -1
  40. package/dist/_virtual/index2.js +0 -4
  41. package/dist/_virtual/index2.js.map +0 -1
  42. package/dist/_virtual/index3.js +0 -4
  43. package/dist/_virtual/index3.js.map +0 -1
  44. package/dist/_virtual/index4.js +0 -4
  45. package/dist/_virtual/index4.js.map +0 -1
  46. package/dist/_virtual/index5.js +0 -4
  47. package/dist/_virtual/index5.js.map +0 -1
  48. package/dist/_virtual/inherits.js +0 -4
  49. package/dist/_virtual/inherits.js.map +0 -1
  50. package/dist/_virtual/inherits_browser.js +0 -4
  51. package/dist/_virtual/inherits_browser.js.map +0 -1
  52. package/dist/_virtual/sbcs-codec.js +0 -4
  53. package/dist/_virtual/sbcs-codec.js.map +0 -1
  54. package/dist/_virtual/utf16.js +0 -4
  55. package/dist/_virtual/utf16.js.map +0 -1
  56. package/dist/_virtual/utf32.js +0 -4
  57. package/dist/_virtual/utf32.js.map +0 -1
  58. package/dist/_virtual/utf7.js +0 -4
  59. package/dist/_virtual/utf7.js.map +0 -1
  60. package/dist/atxpServer.js +0 -93
  61. package/dist/atxpServer.js.map +0 -1
  62. package/dist/node_modules/bytes/index.js +0 -181
  63. package/dist/node_modules/bytes/index.js.map +0 -1
  64. package/dist/node_modules/depd/index.js +0 -551
  65. package/dist/node_modules/depd/index.js.map +0 -1
  66. package/dist/node_modules/http-errors/index.js +0 -307
  67. package/dist/node_modules/http-errors/index.js.map +0 -1
  68. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -599
  69. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js.map +0 -1
  70. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -207
  71. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js.map +0 -1
  72. package/dist/node_modules/iconv-lite/encodings/index.js +0 -45
  73. package/dist/node_modules/iconv-lite/encodings/index.js.map +0 -1
  74. package/dist/node_modules/iconv-lite/encodings/internal.js +0 -211
  75. package/dist/node_modules/iconv-lite/encodings/internal.js.map +0 -1
  76. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -84
  77. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js.map +0 -1
  78. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -461
  79. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js.map +0 -1
  80. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -188
  81. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js.map +0 -1
  82. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json.js +0 -507
  83. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json.js.map +0 -1
  84. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json.js +0 -2622
  85. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json.js.map +0 -1
  86. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json.js +0 -2381
  87. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json.js.map +0 -1
  88. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json.js +0 -730
  89. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json.js.map +0 -1
  90. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json.js +0 -823
  91. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json.js.map +0 -1
  92. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json.js +0 -425
  93. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json.js.map +0 -1
  94. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json.js +0 -265
  95. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json.js.map +0 -1
  96. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json.js +0 -549
  97. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json.js.map +0 -1
  98. package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -207
  99. package/dist/node_modules/iconv-lite/encodings/utf16.js.map +0 -1
  100. package/dist/node_modules/iconv-lite/encodings/utf32.js +0 -330
  101. package/dist/node_modules/iconv-lite/encodings/utf32.js.map +0 -1
  102. package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -298
  103. package/dist/node_modules/iconv-lite/encodings/utf7.js.map +0 -1
  104. package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -62
  105. package/dist/node_modules/iconv-lite/lib/bom-handling.js.map +0 -1
  106. package/dist/node_modules/iconv-lite/lib/index.js +0 -193
  107. package/dist/node_modules/iconv-lite/lib/index.js.map +0 -1
  108. package/dist/node_modules/iconv-lite/lib/streams.js +0 -121
  109. package/dist/node_modules/iconv-lite/lib/streams.js.map +0 -1
  110. package/dist/node_modules/inherits/inherits.js +0 -22
  111. package/dist/node_modules/inherits/inherits.js.map +0 -1
  112. package/dist/node_modules/inherits/inherits_browser.js +0 -39
  113. package/dist/node_modules/inherits/inherits_browser.js.map +0 -1
  114. package/dist/node_modules/raw-body/index.js +0 -352
  115. package/dist/node_modules/raw-body/index.js.map +0 -1
  116. package/dist/node_modules/safer-buffer/safer.js +0 -89
  117. package/dist/node_modules/safer-buffer/safer.js.map +0 -1
  118. package/dist/node_modules/setprototypeof/index.js +0 -27
  119. package/dist/node_modules/setprototypeof/index.js.map +0 -1
  120. package/dist/node_modules/statuses/codes.json.js +0 -68
  121. package/dist/node_modules/statuses/codes.json.js.map +0 -1
  122. package/dist/node_modules/statuses/index.js +0 -158
  123. package/dist/node_modules/statuses/index.js.map +0 -1
  124. package/dist/node_modules/toidentifier/index.js +0 -42
  125. package/dist/node_modules/toidentifier/index.js.map +0 -1
  126. package/dist/node_modules/unpipe/index.js +0 -79
  127. package/dist/node_modules/unpipe/index.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,9 +1,39 @@
1
- import { Currency, Network, AuthorizationServerUrl, UrlString, Logger, OAuthDb, OAuthResourceClient, PaymentRequestData, TokenData, RequirePaymentConfig } from '@atxp/common';
2
- import { Router } from 'express';
1
+ import { Currency, Network, FetchLike, Logger, PaymentRequestData, AuthorizationServerUrl, UrlString, OAuthDb, OAuthResourceClient, TokenData, RequirePaymentConfig } from '@atxp/common';
2
+ import BigNumber from 'bignumber.js';
3
3
  import { IncomingMessage, ServerResponse } from 'http';
4
+ import * as oauth from 'oauth4webapi';
4
5
  import { IncomingMessage as IncomingMessage$1 } from 'node:http';
5
6
  import { JSONRPCRequest } from '@modelcontextprotocol/sdk/types.js';
6
7
 
8
+ type FundingAmount = {
9
+ amount: BigNumber;
10
+ currency: Currency;
11
+ };
12
+ type PaymentAddress = {
13
+ destination: string;
14
+ network: Network;
15
+ };
16
+ interface PaymentDestination {
17
+ destination(fundingAmount: FundingAmount, buyerAddress: string): Promise<PaymentAddress>;
18
+ }
19
+ declare class ChainPaymentDestination implements PaymentDestination {
20
+ private readonly address;
21
+ private readonly network;
22
+ constructor(address: string, network: Network);
23
+ destination(_fundingAmount: FundingAmount, _buyerAddress: string): Promise<PaymentAddress>;
24
+ }
25
+ declare class ATXPPaymentDestination implements PaymentDestination {
26
+ private accountServerURL;
27
+ private token;
28
+ private fetchFn;
29
+ private logger;
30
+ constructor(connectionString: string, opts?: {
31
+ fetchFn?: FetchLike;
32
+ logger?: Logger;
33
+ });
34
+ destination(fundingAmount: FundingAmount, buyerAddress: string): Promise<PaymentAddress>;
35
+ }
36
+
7
37
  type McpMethod = 'notifications/cancelled' | 'initialize' | 'ping' | 'notifications/progress' | 'resources/list' | 'resources/templates/list' | 'resources/read' | 'notifications/resources/list_changed' | 'resources/subscribe' | 'resources/unsubscribe' | 'notifications/resources/updated' | 'prompts/list' | 'prompts/get' | 'notifications/prompts/list_changed' | 'tools/list' | 'tools/call' | 'notifications/tools/list_changed' | 'logging/setLevel' | 'notifications/message' | 'sampling/createMessage' | 'elicitation/create' | 'completion/complete' | 'roots/list' | 'notifications/roots/list_changed';
8
38
  type McpName = string;
9
39
  type McpNamePattern = McpName | '*';
@@ -20,10 +50,9 @@ type PaymentServer = {
20
50
  createPaymentRequest: (args: Charge) => Promise<string>;
21
51
  };
22
52
  type ATXPConfig = {
23
- destination: string;
53
+ paymentDestination: PaymentDestination;
24
54
  mountPath: string;
25
55
  currency: Currency;
26
- network: Network;
27
56
  server: AuthorizationServerUrl;
28
57
  payeeName: string;
29
58
  resource: UrlString | null;
@@ -62,15 +91,6 @@ type ProtectedResourceMetadata = {
62
91
  scopes_supported: string[];
63
92
  };
64
93
 
65
- type RequiredATXPConfigFields = 'destination';
66
- type RequiredATXPConfig = Pick<ATXPConfig, RequiredATXPConfigFields>;
67
- type OptionalATXPConfig = Omit<ATXPConfig, RequiredATXPConfigFields>;
68
- type ATXPArgs = RequiredATXPConfig & Partial<OptionalATXPConfig>;
69
- type BuildableATXPConfigFields = 'oAuthDb' | 'oAuthClient' | 'paymentServer' | 'logger';
70
- declare const DEFAULT_CONFIG: Required<Omit<OptionalATXPConfig, BuildableATXPConfigFields>>;
71
- declare function buildServerConfig(args: ATXPArgs): ATXPConfig;
72
- declare function atxpServer(args: ATXPArgs): Router;
73
-
74
94
  declare function getATXPConfig(): ATXPConfig | null;
75
95
  declare function getATXPResource(): URL | null;
76
96
  declare function atxpAccountId(): string | null;
@@ -96,7 +116,7 @@ declare function createOAuthChallengeResponseCore(tokenCheck: TokenCheck): {
96
116
  * Core platform-agnostic MCP request parsing logic
97
117
  * Takes parsed JSON and request metadata instead of platform-specific request objects
98
118
  */
99
- declare function parseMcpRequestsCore(config: ATXPConfig, requestUrl: URL, method: string, parsedBody: unknown): any[];
119
+ declare function parseMcpRequestsCore(config: ATXPConfig, requestUrl: URL, method: string, parsedBody: unknown): unknown[];
100
120
 
101
121
  /**
102
122
  * Node.js HTTP implementation of token checking
@@ -109,6 +129,8 @@ declare function checkToken(config: ATXPConfig, resourceURL: URL, req: IncomingM
109
129
  * Uses Node.js ServerResponse and delegates to core logic
110
130
  */
111
131
  declare function sendOAuthChallenge(res: ServerResponse, tokenCheck: TokenCheck): boolean;
132
+ declare function sendProtectedResourceMetadata$1(res: ServerResponse, metadata: ProtectedResourceMetadata | null): boolean;
133
+ declare function sendOAuthMetadata$1(res: ServerResponse, metadata: oauth.AuthorizationServer | null): boolean;
112
134
 
113
135
  /**
114
136
  * Node.js HTTP implementation of MCP request parsing
@@ -128,14 +150,76 @@ declare function checkTokenWebApi(config: ATXPConfig, resourceURL: URL, request:
128
150
  * Uses Web API Response and delegates to core logic
129
151
  */
130
152
  declare function sendOAuthChallengeWebApi(tokenCheck: TokenCheck): Response | null;
153
+ declare function sendProtectedResourceMetadata(metadata: ProtectedResourceMetadata | null): Response | null;
154
+ declare function sendOAuthMetadata(metadata: oauth.AuthorizationServer | null): Response | null;
131
155
 
132
156
  /**
133
157
  * Web API implementation of MCP request parsing for Cloudflare Workers, Deno, etc.
134
158
  * Handles Web API Request parsing and delegates to core logic
135
159
  */
136
- declare function parseMcpRequestsWebApi(config: ATXPConfig, request: Request): Promise<any[]>;
160
+ declare function parseMcpRequestsWebApi(config: ATXPConfig, request: Request): Promise<JSONRPCRequest[]>;
137
161
 
138
162
  declare function requirePayment(paymentConfig: RequirePaymentConfig): Promise<void>;
139
163
 
140
- export { DEFAULT_CONFIG, TokenProblem, atxpAccountId, atxpServer, buildServerConfig, checkToken, checkTokenCore, checkTokenWebApi, createOAuthChallengeResponseCore, getATXPConfig, getATXPResource, parseBody, parseMcpRequests, parseMcpRequestsCore, parseMcpRequestsWebApi, requirePayment, sendOAuthChallenge, sendOAuthChallengeWebApi, withATXPContext };
141
- export type { ATXPArgs, ATXPConfig, Charge, ChargeResponse, McpMethod, McpName, McpNamePattern, McpOperation, McpOperationPattern, PaymentServer, ProtectedResourceMetadata, RefundErrors, TokenCheck, TokenCheckFail, TokenCheckPass };
164
+ type RequiredATXPConfigFields = 'paymentDestination';
165
+ type RequiredATXPConfig = Pick<ATXPConfig, RequiredATXPConfigFields>;
166
+ type OptionalATXPConfig = Omit<ATXPConfig, RequiredATXPConfigFields>;
167
+ type ATXPArgs = RequiredATXPConfig & Partial<OptionalATXPConfig>;
168
+ type BuildableATXPConfigFields = 'oAuthDb' | 'oAuthClient' | 'paymentServer' | 'logger';
169
+ declare const DEFAULT_CONFIG: Required<Omit<OptionalATXPConfig, BuildableATXPConfigFields>>;
170
+ declare function buildServerConfig(args: ATXPArgs): ATXPConfig;
171
+
172
+ declare function getResource(config: ATXPConfig, requestUrl: URL, headers?: Record<string, string | string[] | undefined>): URL;
173
+
174
+ /**
175
+ * ATXP Payment Server implementation
176
+ *
177
+ * This class handles payment operations with the ATXP authorization server.
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * const paymentServer = new ATXPPaymentServer(
182
+ * 'https://auth.atxp.ai',
183
+ * logger
184
+ * );
185
+ * ```
186
+ */
187
+ declare class ATXPPaymentServer implements PaymentServer {
188
+ private readonly server;
189
+ private readonly logger;
190
+ private readonly fetchFn;
191
+ constructor(server: AuthorizationServerUrl, logger: Logger, fetchFn?: FetchLike);
192
+ charge: ({ source, destination, network, currency, amount }: {
193
+ source: string;
194
+ destination: string;
195
+ network: Network;
196
+ currency: Currency;
197
+ amount: BigNumber;
198
+ }) => Promise<ChargeResponse>;
199
+ createPaymentRequest: (charge: Charge) => Promise<string>;
200
+ /**
201
+ * Makes authenticated requests to the ATXP authorization server
202
+ *
203
+ * @param method - HTTP method ('GET' or 'POST')
204
+ * @param path - API endpoint path
205
+ * @param body - Request body (for POST requests)
206
+ * @returns Promise<Response> - The HTTP response from the server
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * const response = await paymentServer.makeRequest('POST', '/charge', {
211
+ * source: 'user123',
212
+ * destination: 'merchant456',
213
+ * amount: new BigNumber('0.01')
214
+ * });
215
+ * ```
216
+ */
217
+ protected makeRequest: (method: "GET" | "POST", path: string, body: unknown) => Promise<Response>;
218
+ }
219
+
220
+ declare function getOAuthMetadata(config: ATXPConfig, requestUrl: URL): Promise<oauth.AuthorizationServer | null>;
221
+
222
+ declare function getProtectedResourceMetadata(config: ATXPConfig, requestUrl: URL, headers?: Record<string, string | string[] | undefined>): ProtectedResourceMetadata | null;
223
+
224
+ export { ATXPPaymentDestination, ATXPPaymentServer, ChainPaymentDestination, DEFAULT_CONFIG, TokenProblem, atxpAccountId, buildServerConfig, checkTokenCore, checkToken as checkTokenNode, checkTokenWebApi, createOAuthChallengeResponseCore, getATXPConfig, getATXPResource, getOAuthMetadata, getProtectedResourceMetadata, getResource, parseBody as parseBodyNode, parseMcpRequestsCore, parseMcpRequests as parseMcpRequestsNode, parseMcpRequestsWebApi, requirePayment, sendOAuthChallenge, sendOAuthChallengeWebApi, sendOAuthMetadata$1 as sendOAuthMetadataNode, sendOAuthMetadata as sendOAuthMetadataWebApi, sendProtectedResourceMetadata$1 as sendProtectedResourceMetadataNode, sendProtectedResourceMetadata as sendProtectedResourceMetadataWebApi, withATXPContext };
225
+ export type { ATXPArgs, ATXPConfig, Charge, ChargeResponse, FundingAmount, McpMethod, McpName, McpNamePattern, McpOperation, McpOperationPattern, PaymentAddress, PaymentDestination, PaymentServer, ProtectedResourceMetadata, RefundErrors, TokenCheck, TokenCheckFail, TokenCheckPass };