@atxp/common 0.2.22 → 0.3.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 (55) hide show
  1. package/dist/commonTestHelpers.d.ts +16 -14
  2. package/dist/commonTestHelpers.js +16 -13
  3. package/dist/commonTestHelpers.js.map +1 -1
  4. package/dist/index.cjs +930 -0
  5. package/dist/index.cjs.map +1 -0
  6. package/dist/index.d.ts +242 -12
  7. package/dist/index.js +887 -12
  8. package/dist/index.js.map +1 -1
  9. package/dist/jwt.js +5 -2
  10. package/dist/jwt.js.map +1 -1
  11. package/dist/logger.js +6 -3
  12. package/dist/logger.js.map +1 -1
  13. package/dist/mcpJson.js +6 -3
  14. package/dist/mcpJson.js.map +1 -1
  15. package/dist/memoryOAuthDb.js +5 -2
  16. package/dist/memoryOAuthDb.js.map +1 -1
  17. package/dist/oAuthResource.js +6 -3
  18. package/dist/oAuthResource.js.map +1 -1
  19. package/dist/paymentRequiredError.js +8 -5
  20. package/dist/paymentRequiredError.js.map +1 -1
  21. package/dist/platform/index.js +10 -8
  22. package/dist/platform/index.js.map +1 -1
  23. package/dist/servers.js +4 -2
  24. package/dist/servers.js.map +1 -1
  25. package/dist/sseParser.js +6 -4
  26. package/dist/sseParser.js.map +1 -1
  27. package/dist/types.js +5 -3
  28. package/dist/types.js.map +1 -1
  29. package/dist/utils.js +5 -3
  30. package/dist/utils.js.map +1 -1
  31. package/package.json +25 -4
  32. package/dist/commonTestHelpers.d.ts.map +0 -1
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/jwt.d.ts +0 -9
  35. package/dist/jwt.d.ts.map +0 -1
  36. package/dist/logger.d.ts +0 -18
  37. package/dist/logger.d.ts.map +0 -1
  38. package/dist/mcpJson.d.ts +0 -9
  39. package/dist/mcpJson.d.ts.map +0 -1
  40. package/dist/memoryOAuthDb.d.ts +0 -25
  41. package/dist/memoryOAuthDb.d.ts.map +0 -1
  42. package/dist/oAuthResource.d.ts +0 -35
  43. package/dist/oAuthResource.d.ts.map +0 -1
  44. package/dist/paymentRequiredError.d.ts +0 -6
  45. package/dist/paymentRequiredError.d.ts.map +0 -1
  46. package/dist/platform/index.d.ts +0 -14
  47. package/dist/platform/index.d.ts.map +0 -1
  48. package/dist/servers.d.ts +0 -14
  49. package/dist/servers.d.ts.map +0 -1
  50. package/dist/sseParser.d.ts +0 -27
  51. package/dist/sseParser.d.ts.map +0 -1
  52. package/dist/types.d.ts +0 -72
  53. package/dist/types.d.ts.map +0 -1
  54. package/dist/utils.d.ts +0 -19
  55. package/dist/utils.d.ts.map +0 -1
@@ -1,25 +1,26 @@
1
1
  import { UrlString } from './types.js';
2
- import { JSONRPCResponse, Result, CallToolResult, ContentBlock, JSONRPCError } from '@modelcontextprotocol/sdk/types.js';
3
- export declare const DESTINATION = "testDestination";
4
- export declare const SOURCE = "testSource";
5
- export declare function mcpResponse({ id, result }?: {
2
+ import { Result, JSONRPCResponse, ContentBlock, CallToolResult, JSONRPCError } from '@modelcontextprotocol/sdk/types.js';
3
+
4
+ declare const DESTINATION = "testDestination";
5
+ declare const SOURCE = "testSource";
6
+ declare function mcpResponse({ id, result }?: {
6
7
  id?: number;
7
8
  result?: Result;
8
9
  }): JSONRPCResponse;
9
- export declare function mcpToolResult({ content, structuredContent, isError }?: {
10
+ declare function mcpToolResult({ content, structuredContent, isError }?: {
10
11
  content?: ContentBlock[];
11
12
  structuredContent?: any;
12
13
  isError?: boolean;
13
14
  }): CallToolResult;
14
- export declare function mcpToolErrorResponse({ content, structuredContent, }?: {
15
+ declare function mcpToolErrorResponse({ content, structuredContent, }?: {
15
16
  content?: ContentBlock[];
16
17
  structuredContent?: any;
17
18
  }): JSONRPCResponse;
18
- export declare function paymentRequiredMessage(paymentUrl: UrlString, id: string): string;
19
+ declare function paymentRequiredMessage(paymentUrl: UrlString, id: string): string;
19
20
  /**
20
21
  * Creates a 401 Unauthorized response with OAuth challenge
21
22
  */
22
- export declare function authRequiredResponse(resourceMetadataUrl?: string): {
23
+ declare function authRequiredResponse(resourceMetadataUrl?: string): {
23
24
  status: number;
24
25
  headers: {
25
26
  'www-authenticate': string;
@@ -28,7 +29,7 @@ export declare function authRequiredResponse(resourceMetadataUrl?: string): {
28
29
  /**
29
30
  * Creates an MCP initialize response with the full JSON-RPC wrapper
30
31
  */
31
- export declare function mcpInitializeResponse(id?: number, protocolVersion?: string): {
32
+ declare function mcpInitializeResponse(id?: number, protocolVersion?: string): {
32
33
  jsonrpc: "2.0";
33
34
  id: string | number;
34
35
  result: {
@@ -41,7 +42,7 @@ export declare function mcpInitializeResponse(id?: number, protocolVersion?: str
41
42
  /**
42
43
  * Creates an MCP tool call response with custom content
43
44
  */
44
- export declare function mcpToolResponse(id?: number, text?: string): {
45
+ declare function mcpToolResponse(id?: number, text?: string): {
45
46
  jsonrpc: "2.0";
46
47
  id: string | number;
47
48
  result: {
@@ -51,7 +52,7 @@ export declare function mcpToolResponse(id?: number, text?: string): {
51
52
  } | undefined;
52
53
  };
53
54
  };
54
- export declare function mcpResponseHandler(toolResponse?: JSONRPCResponse): (url: any, opts: any) => {
55
+ declare function mcpResponseHandler(toolResponse?: JSONRPCResponse): (url: any, opts: any) => {
55
56
  status: number;
56
57
  body: {
57
58
  jsonrpc: "2.0";
@@ -67,17 +68,18 @@ export declare function mcpResponseHandler(toolResponse?: JSONRPCResponse): (url
67
68
  status: number;
68
69
  body: {};
69
70
  };
70
- export declare function mcpErrorResponse({ id, code, message, data }: {
71
+ declare function mcpErrorResponse({ id, code, message, data }: {
71
72
  id?: number;
72
73
  code?: number;
73
74
  message?: string;
74
75
  data?: any;
75
76
  }): JSONRPCError;
76
- export declare function mcpElicitationRequiredErrorResponse({ id, message, elicitationId, url, data }: {
77
+ declare function mcpElicitationRequiredErrorResponse({ id, message, elicitationId, url, data }: {
77
78
  id?: number;
78
79
  message?: string;
79
80
  elicitationId?: string;
80
81
  url?: string;
81
82
  data?: any;
82
83
  }): JSONRPCError;
83
- //# sourceMappingURL=commonTestHelpers.d.ts.map
84
+
85
+ export { DESTINATION, SOURCE, authRequiredResponse, mcpElicitationRequiredErrorResponse, mcpErrorResponse, mcpInitializeResponse, mcpResponse, mcpResponseHandler, mcpToolErrorResponse, mcpToolResponse, mcpToolResult, paymentRequiredMessage };
@@ -1,24 +1,25 @@
1
1
  import { paymentRequiredError } from './paymentRequiredError.js';
2
- export const DESTINATION = 'testDestination';
3
- export const SOURCE = 'testSource';
4
- export function mcpResponse({ id = 1, result = mcpToolResult() } = {}) {
2
+
3
+ const DESTINATION = 'testDestination';
4
+ const SOURCE = 'testSource';
5
+ function mcpResponse({ id = 1, result = mcpToolResult() } = {}) {
5
6
  return { jsonrpc: "2.0", id, result };
6
7
  }
7
- export function mcpToolResult({ content = [{ type: 'text', text: 'tool-result' }], structuredContent = undefined, isError = false } = {}) {
8
+ function mcpToolResult({ content = [{ type: 'text', text: 'tool-result' }], structuredContent = undefined, isError = false } = {}) {
8
9
  return { content, structuredContent, isError };
9
10
  }
10
- export function mcpToolErrorResponse({ content = [{ type: 'text', text: 'tool-error' }], structuredContent = undefined, } = {}) {
11
+ function mcpToolErrorResponse({ content = [{ type: 'text', text: 'tool-error' }], structuredContent = undefined, } = {}) {
11
12
  const result = mcpToolResult({ isError: true, content, structuredContent });
12
13
  return mcpResponse({ result });
13
14
  }
14
- export function paymentRequiredMessage(paymentUrl, id) {
15
+ function paymentRequiredMessage(paymentUrl, id) {
15
16
  const err = paymentRequiredError(paymentUrl, id);
16
17
  return err.message;
17
18
  }
18
19
  /**
19
20
  * Creates a 401 Unauthorized response with OAuth challenge
20
21
  */
21
- export function authRequiredResponse(resourceMetadataUrl = 'https://example.com/.well-known/oauth-protected-resource/mcp') {
22
+ function authRequiredResponse(resourceMetadataUrl = 'https://example.com/.well-known/oauth-protected-resource/mcp') {
22
23
  return {
23
24
  status: 401,
24
25
  headers: {
@@ -29,7 +30,7 @@ export function authRequiredResponse(resourceMetadataUrl = 'https://example.com/
29
30
  /**
30
31
  * Creates an MCP initialize response with the full JSON-RPC wrapper
31
32
  */
32
- export function mcpInitializeResponse(id = 0, protocolVersion = '2025-06-18') {
33
+ function mcpInitializeResponse(id = 0, protocolVersion = '2025-06-18') {
33
34
  return mcpResponse({
34
35
  id,
35
36
  result: {
@@ -45,7 +46,7 @@ export function mcpInitializeResponse(id = 0, protocolVersion = '2025-06-18') {
45
46
  /**
46
47
  * Creates an MCP tool call response with custom content
47
48
  */
48
- export function mcpToolResponse(id = 1, text = 'tool-result') {
49
+ function mcpToolResponse(id = 1, text = 'tool-result') {
49
50
  return mcpResponse({
50
51
  id,
51
52
  result: mcpToolResult({
@@ -53,7 +54,7 @@ export function mcpToolResponse(id = 1, text = 'tool-result') {
53
54
  })
54
55
  });
55
56
  }
56
- export function mcpResponseHandler(toolResponse = mcpToolResponse(1, 'hello world')) {
57
+ function mcpResponseHandler(toolResponse = mcpToolResponse(1, 'hello world')) {
57
58
  return function (url, opts) {
58
59
  // fetch-mock might pass the URL and options differently
59
60
  let body;
@@ -99,17 +100,19 @@ export function mcpResponseHandler(toolResponse = mcpToolResponse(1, 'hello worl
99
100
  }
100
101
  };
101
102
  }
102
- export function mcpErrorResponse({ id = 1, code = -32000, message = 'test error', data = undefined }) {
103
+ function mcpErrorResponse({ id = 1, code = -32e3, message = 'test error', data = undefined }) {
103
104
  return {
104
105
  jsonrpc: '2.0',
105
106
  id,
106
107
  error: { code, message, data }
107
108
  };
108
109
  }
109
- export function mcpElicitationRequiredErrorResponse({ id = 1, message = 'test error', elicitationId = '123', url = 'https://auth.atxp.ai/payment-request/123', data = {} }) {
110
+ function mcpElicitationRequiredErrorResponse({ id = 1, message = 'test error', elicitationId = '123', url = 'https://auth.atxp.ai/payment-request/123', data = {} }) {
110
111
  // Code as per https://github.com/modelcontextprotocol/modelcontextprotocol/pull/887
111
112
  const code = -32604;
112
113
  const elicitationData = { elicitations: [{ mode: 'url', elicitationId, url }] };
113
114
  return mcpErrorResponse({ id, code, message, data: { ...data, ...elicitationData } });
114
115
  }
115
- //# sourceMappingURL=commonTestHelpers.js.map
116
+
117
+ export { DESTINATION, SOURCE, authRequiredResponse, mcpElicitationRequiredErrorResponse, mcpErrorResponse, mcpInitializeResponse, mcpResponse, mcpResponseHandler, mcpToolErrorResponse, mcpToolResponse, mcpToolResult, paymentRequiredMessage };
118
+ //# sourceMappingURL=commonTestHelpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commonTestHelpers.js","sourceRoot":"","sources":["../src/commonTestHelpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commonTestHelpers.js","sources":["../src/commonTestHelpers.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}