@atxp/server 0.3.0 → 0.4.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 (123) 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 +371 -13444
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.ts +70 -14
  7. package/dist/index.js +342 -13441
  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/protectedResourceMetadata.js +6 -15
  18. package/dist/protectedResourceMetadata.js.map +1 -1
  19. package/dist/serverConfig.js +37 -0
  20. package/dist/serverConfig.js.map +1 -0
  21. package/dist/serverTestHelpers.d.ts +104 -0
  22. package/dist/serverTestHelpers.js +119 -0
  23. package/dist/serverTestHelpers.js.map +1 -0
  24. package/dist/webapi/mcp.js.map +1 -1
  25. package/dist/webapi/oauth.js +23 -1
  26. package/dist/webapi/oauth.js.map +1 -1
  27. package/package.json +8 -8
  28. package/dist/_virtual/_commonjsHelpers.js +0 -8
  29. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  30. package/dist/_virtual/bom-handling.js +0 -4
  31. package/dist/_virtual/bom-handling.js.map +0 -1
  32. package/dist/_virtual/dbcs-codec.js +0 -4
  33. package/dist/_virtual/dbcs-codec.js.map +0 -1
  34. package/dist/_virtual/index.js +0 -8
  35. package/dist/_virtual/index.js.map +0 -1
  36. package/dist/_virtual/index2.js +0 -4
  37. package/dist/_virtual/index2.js.map +0 -1
  38. package/dist/_virtual/index3.js +0 -4
  39. package/dist/_virtual/index3.js.map +0 -1
  40. package/dist/_virtual/index4.js +0 -4
  41. package/dist/_virtual/index4.js.map +0 -1
  42. package/dist/_virtual/index5.js +0 -4
  43. package/dist/_virtual/index5.js.map +0 -1
  44. package/dist/_virtual/inherits.js +0 -4
  45. package/dist/_virtual/inherits.js.map +0 -1
  46. package/dist/_virtual/inherits_browser.js +0 -4
  47. package/dist/_virtual/inherits_browser.js.map +0 -1
  48. package/dist/_virtual/sbcs-codec.js +0 -4
  49. package/dist/_virtual/sbcs-codec.js.map +0 -1
  50. package/dist/_virtual/utf16.js +0 -4
  51. package/dist/_virtual/utf16.js.map +0 -1
  52. package/dist/_virtual/utf32.js +0 -4
  53. package/dist/_virtual/utf32.js.map +0 -1
  54. package/dist/_virtual/utf7.js +0 -4
  55. package/dist/_virtual/utf7.js.map +0 -1
  56. package/dist/atxpServer.js +0 -93
  57. package/dist/atxpServer.js.map +0 -1
  58. package/dist/node_modules/bytes/index.js +0 -181
  59. package/dist/node_modules/bytes/index.js.map +0 -1
  60. package/dist/node_modules/depd/index.js +0 -551
  61. package/dist/node_modules/depd/index.js.map +0 -1
  62. package/dist/node_modules/http-errors/index.js +0 -307
  63. package/dist/node_modules/http-errors/index.js.map +0 -1
  64. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -599
  65. package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js.map +0 -1
  66. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -207
  67. package/dist/node_modules/iconv-lite/encodings/dbcs-data.js.map +0 -1
  68. package/dist/node_modules/iconv-lite/encodings/index.js +0 -45
  69. package/dist/node_modules/iconv-lite/encodings/index.js.map +0 -1
  70. package/dist/node_modules/iconv-lite/encodings/internal.js +0 -211
  71. package/dist/node_modules/iconv-lite/encodings/internal.js.map +0 -1
  72. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -84
  73. package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js.map +0 -1
  74. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -461
  75. package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js.map +0 -1
  76. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -188
  77. package/dist/node_modules/iconv-lite/encodings/sbcs-data.js.map +0 -1
  78. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json.js +0 -507
  79. package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json.js.map +0 -1
  80. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json.js +0 -2622
  81. package/dist/node_modules/iconv-lite/encodings/tables/cp936.json.js.map +0 -1
  82. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json.js +0 -2381
  83. package/dist/node_modules/iconv-lite/encodings/tables/cp949.json.js.map +0 -1
  84. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json.js +0 -730
  85. package/dist/node_modules/iconv-lite/encodings/tables/cp950.json.js.map +0 -1
  86. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json.js +0 -823
  87. package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json.js.map +0 -1
  88. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json.js +0 -425
  89. package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json.js.map +0 -1
  90. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json.js +0 -265
  91. package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json.js.map +0 -1
  92. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json.js +0 -549
  93. package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json.js.map +0 -1
  94. package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -207
  95. package/dist/node_modules/iconv-lite/encodings/utf16.js.map +0 -1
  96. package/dist/node_modules/iconv-lite/encodings/utf32.js +0 -330
  97. package/dist/node_modules/iconv-lite/encodings/utf32.js.map +0 -1
  98. package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -298
  99. package/dist/node_modules/iconv-lite/encodings/utf7.js.map +0 -1
  100. package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -62
  101. package/dist/node_modules/iconv-lite/lib/bom-handling.js.map +0 -1
  102. package/dist/node_modules/iconv-lite/lib/index.js +0 -193
  103. package/dist/node_modules/iconv-lite/lib/index.js.map +0 -1
  104. package/dist/node_modules/iconv-lite/lib/streams.js +0 -121
  105. package/dist/node_modules/iconv-lite/lib/streams.js.map +0 -1
  106. package/dist/node_modules/inherits/inherits.js +0 -22
  107. package/dist/node_modules/inherits/inherits.js.map +0 -1
  108. package/dist/node_modules/inherits/inherits_browser.js +0 -39
  109. package/dist/node_modules/inherits/inherits_browser.js.map +0 -1
  110. package/dist/node_modules/raw-body/index.js +0 -352
  111. package/dist/node_modules/raw-body/index.js.map +0 -1
  112. package/dist/node_modules/safer-buffer/safer.js +0 -89
  113. package/dist/node_modules/safer-buffer/safer.js.map +0 -1
  114. package/dist/node_modules/setprototypeof/index.js +0 -27
  115. package/dist/node_modules/setprototypeof/index.js.map +0 -1
  116. package/dist/node_modules/statuses/codes.json.js +0 -68
  117. package/dist/node_modules/statuses/codes.json.js.map +0 -1
  118. package/dist/node_modules/statuses/index.js +0 -158
  119. package/dist/node_modules/statuses/index.js.map +0 -1
  120. package/dist/node_modules/toidentifier/index.js +0 -42
  121. package/dist/node_modules/toidentifier/index.js.map +0 -1
  122. package/dist/node_modules/unpipe/index.js +0 -79
  123. package/dist/node_modules/unpipe/index.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { Currency, Network, AuthorizationServerUrl, UrlString, Logger, OAuthDb, OAuthResourceClient, PaymentRequestData, TokenData, RequirePaymentConfig } from '@atxp/common';
2
- import { Router } from 'express';
1
+ import { PaymentRequestData, Currency, Network, AuthorizationServerUrl, UrlString, Logger, OAuthDb, OAuthResourceClient, TokenData, RequirePaymentConfig, FetchLike } from '@atxp/common';
3
2
  import { IncomingMessage, ServerResponse } from 'http';
3
+ import * as oauth from 'oauth4webapi';
4
4
  import { IncomingMessage as IncomingMessage$1 } from 'node:http';
5
5
  import { JSONRPCRequest } from '@modelcontextprotocol/sdk/types.js';
6
+ import BigNumber from 'bignumber.js';
6
7
 
7
8
  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
9
  type McpName = string;
@@ -62,15 +63,6 @@ type ProtectedResourceMetadata = {
62
63
  scopes_supported: string[];
63
64
  };
64
65
 
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
66
  declare function getATXPConfig(): ATXPConfig | null;
75
67
  declare function getATXPResource(): URL | null;
76
68
  declare function atxpAccountId(): string | null;
@@ -96,7 +88,7 @@ declare function createOAuthChallengeResponseCore(tokenCheck: TokenCheck): {
96
88
  * Core platform-agnostic MCP request parsing logic
97
89
  * Takes parsed JSON and request metadata instead of platform-specific request objects
98
90
  */
99
- declare function parseMcpRequestsCore(config: ATXPConfig, requestUrl: URL, method: string, parsedBody: unknown): any[];
91
+ declare function parseMcpRequestsCore(config: ATXPConfig, requestUrl: URL, method: string, parsedBody: unknown): unknown[];
100
92
 
101
93
  /**
102
94
  * Node.js HTTP implementation of token checking
@@ -109,6 +101,8 @@ declare function checkToken(config: ATXPConfig, resourceURL: URL, req: IncomingM
109
101
  * Uses Node.js ServerResponse and delegates to core logic
110
102
  */
111
103
  declare function sendOAuthChallenge(res: ServerResponse, tokenCheck: TokenCheck): boolean;
104
+ declare function sendProtectedResourceMetadata$1(res: ServerResponse, metadata: ProtectedResourceMetadata | null): boolean;
105
+ declare function sendOAuthMetadata$1(res: ServerResponse, metadata: oauth.AuthorizationServer | null): boolean;
112
106
 
113
107
  /**
114
108
  * Node.js HTTP implementation of MCP request parsing
@@ -128,14 +122,76 @@ declare function checkTokenWebApi(config: ATXPConfig, resourceURL: URL, request:
128
122
  * Uses Web API Response and delegates to core logic
129
123
  */
130
124
  declare function sendOAuthChallengeWebApi(tokenCheck: TokenCheck): Response | null;
125
+ declare function sendProtectedResourceMetadata(metadata: ProtectedResourceMetadata | null): Response | null;
126
+ declare function sendOAuthMetadata(metadata: oauth.AuthorizationServer | null): Response | null;
131
127
 
132
128
  /**
133
129
  * Web API implementation of MCP request parsing for Cloudflare Workers, Deno, etc.
134
130
  * Handles Web API Request parsing and delegates to core logic
135
131
  */
136
- declare function parseMcpRequestsWebApi(config: ATXPConfig, request: Request): Promise<any[]>;
132
+ declare function parseMcpRequestsWebApi(config: ATXPConfig, request: Request): Promise<JSONRPCRequest[]>;
137
133
 
138
134
  declare function requirePayment(paymentConfig: RequirePaymentConfig): Promise<void>;
139
135
 
140
- export { DEFAULT_CONFIG, TokenProblem, atxpAccountId, atxpServer, buildServerConfig, checkToken, checkTokenCore, checkTokenWebApi, createOAuthChallengeResponseCore, getATXPConfig, getATXPResource, parseBody, parseMcpRequests, parseMcpRequestsCore, parseMcpRequestsWebApi, requirePayment, sendOAuthChallenge, sendOAuthChallengeWebApi, withATXPContext };
136
+ type RequiredATXPConfigFields = 'destination';
137
+ type RequiredATXPConfig = Pick<ATXPConfig, RequiredATXPConfigFields>;
138
+ type OptionalATXPConfig = Omit<ATXPConfig, RequiredATXPConfigFields>;
139
+ type ATXPArgs = RequiredATXPConfig & Partial<OptionalATXPConfig>;
140
+ type BuildableATXPConfigFields = 'oAuthDb' | 'oAuthClient' | 'paymentServer' | 'logger';
141
+ declare const DEFAULT_CONFIG: Required<Omit<OptionalATXPConfig, BuildableATXPConfigFields>>;
142
+ declare function buildServerConfig(args: ATXPArgs): ATXPConfig;
143
+
144
+ declare function getResource(config: ATXPConfig, requestUrl: URL, headers?: Record<string, string | string[] | undefined>): URL;
145
+
146
+ /**
147
+ * ATXP Payment Server implementation
148
+ *
149
+ * This class handles payment operations with the ATXP authorization server.
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const paymentServer = new ATXPPaymentServer(
154
+ * 'https://auth.atxp.ai',
155
+ * logger
156
+ * );
157
+ * ```
158
+ */
159
+ declare class ATXPPaymentServer implements PaymentServer {
160
+ private readonly server;
161
+ private readonly logger;
162
+ private readonly fetchFn;
163
+ constructor(server: AuthorizationServerUrl, logger: Logger, fetchFn?: FetchLike);
164
+ charge: ({ source, destination, network, currency, amount }: {
165
+ source: string;
166
+ destination: string;
167
+ network: Network;
168
+ currency: Currency;
169
+ amount: BigNumber;
170
+ }) => Promise<ChargeResponse>;
171
+ createPaymentRequest: (charge: Charge) => Promise<string>;
172
+ /**
173
+ * Makes authenticated requests to the ATXP authorization server
174
+ *
175
+ * @param method - HTTP method ('GET' or 'POST')
176
+ * @param path - API endpoint path
177
+ * @param body - Request body (for POST requests)
178
+ * @returns Promise<Response> - The HTTP response from the server
179
+ *
180
+ * @example
181
+ * ```typescript
182
+ * const response = await paymentServer.makeRequest('POST', '/charge', {
183
+ * source: 'user123',
184
+ * destination: 'merchant456',
185
+ * amount: new BigNumber('0.01')
186
+ * });
187
+ * ```
188
+ */
189
+ protected makeRequest: (method: "GET" | "POST", path: string, body: unknown) => Promise<Response>;
190
+ }
191
+
192
+ declare function getOAuthMetadata(config: ATXPConfig, requestUrl: URL): Promise<oauth.AuthorizationServer | null>;
193
+
194
+ declare function getProtectedResourceMetadata(config: ATXPConfig, requestUrl: URL, headers?: Record<string, string | string[] | undefined>): ProtectedResourceMetadata | null;
195
+
196
+ export { ATXPPaymentServer, 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 };
141
197
  export type { ATXPArgs, ATXPConfig, Charge, ChargeResponse, McpMethod, McpName, McpNamePattern, McpOperation, McpOperationPattern, PaymentServer, ProtectedResourceMetadata, RefundErrors, TokenCheck, TokenCheckFail, TokenCheckPass };