@peac/rails-x402 0.10.9 → 0.10.10

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.
@@ -1,120 +0,0 @@
1
- "use strict";
2
- /**
3
- * x402 Payment Header Detection (Headers-Only)
4
- *
5
- * Provides minimal headers-only detection and extraction for x402 payment flow.
6
- * No Response objects, no body parsing.
7
- *
8
- * x402 Header Names (per Coinbase x402 spec):
9
- * - PAYMENT-REQUIRED: Server challenge with payment details
10
- * - PAYMENT-SIGNATURE: Client payment proof
11
- * - PAYMENT-RESPONSE: Server success response
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.detectPaymentRequired = detectPaymentRequired;
15
- exports.extractPaymentReference = extractPaymentReference;
16
- exports.extractPaymentResponse = extractPaymentResponse;
17
- /**
18
- * Check if headers object has a .get() method.
19
- */
20
- function hasGetMethod(headers) {
21
- return typeof headers.get === 'function';
22
- }
23
- /**
24
- * Get header value from plain object, handling case-insensitivity and arrays.
25
- * Node.js lowercases all header names, so we check multiple casings.
26
- */
27
- function getFromPlainObject(headers, name) {
28
- // Common casings to try
29
- const casings = [
30
- name.toLowerCase(),
31
- name.toUpperCase(),
32
- name
33
- .split('-')
34
- .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())
35
- .join('-'),
36
- ];
37
- for (const key of casings) {
38
- const value = headers[key];
39
- if (value !== undefined) {
40
- // Handle array values (take first element)
41
- return Array.isArray(value) ? (value[0] ?? null) : value;
42
- }
43
- }
44
- // Also try exact match and iterate all keys for case-insensitive match
45
- const lowerName = name.toLowerCase();
46
- for (const key of Object.keys(headers)) {
47
- if (key.toLowerCase() === lowerName) {
48
- const value = headers[key];
49
- if (value !== undefined) {
50
- return Array.isArray(value) ? (value[0] ?? null) : value;
51
- }
52
- }
53
- }
54
- return null;
55
- }
56
- /**
57
- * Case-insensitive header getter helper.
58
- * Handles both Headers-like objects (.get() method) and plain objects.
59
- *
60
- * @param headers - Headers object or plain object to query
61
- * @param name - Header name to look up
62
- * @returns Header value or null if not found
63
- */
64
- function getHeaderCaseInsensitive(headers, name) {
65
- if (hasGetMethod(headers)) {
66
- // Use .get() method - most Headers implementations are case-insensitive
67
- // but we try multiple casings for implementations that aren't
68
- const lower = headers.get(name.toLowerCase());
69
- if (lower !== null)
70
- return lower;
71
- const titleCase = name
72
- .split('-')
73
- .map((s) => s.charAt(0).toUpperCase() + s.slice(1).toLowerCase())
74
- .join('-');
75
- const title = headers.get(titleCase);
76
- if (title !== null)
77
- return title;
78
- const upper = headers.get(name.toUpperCase());
79
- if (upper !== null)
80
- return upper;
81
- return null;
82
- }
83
- // Plain object path
84
- return getFromPlainObject(headers, name);
85
- }
86
- /**
87
- * Detect payment-required mode from HTTP headers.
88
- * Uses case-insensitive lookup and trims whitespace.
89
- *
90
- * @param headers - HTTP headers (HeadersLike interface)
91
- * @returns true if PAYMENT-REQUIRED header is present and non-empty
92
- */
93
- function detectPaymentRequired(headers) {
94
- const paymentRequired = getHeaderCaseInsensitive(headers, 'payment-required');
95
- return paymentRequired !== null && paymentRequired.trim().length > 0;
96
- }
97
- /**
98
- * Extract payment reference from HTTP headers.
99
- * Returns the PAYMENT-REQUIRED header value (contains payment details).
100
- * Uses case-insensitive lookup.
101
- *
102
- * @param headers - HTTP headers (HeadersLike interface)
103
- * @returns PAYMENT-REQUIRED header value, or undefined if not present/empty
104
- */
105
- function extractPaymentReference(headers) {
106
- const value = getHeaderCaseInsensitive(headers, 'payment-required');
107
- return value?.trim() || undefined;
108
- }
109
- /**
110
- * Extract payment response from success headers.
111
- * Uses case-insensitive lookup.
112
- *
113
- * @param headers - HTTP headers (HeadersLike interface)
114
- * @returns PAYMENT-RESPONSE header value, or undefined if not present/empty
115
- */
116
- function extractPaymentResponse(headers) {
117
- const value = getHeaderCaseInsensitive(headers, 'payment-response');
118
- return value?.trim() || undefined;
119
- }
120
- //# sourceMappingURL=payment-headers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"payment-headers.js","sourceRoot":"","sources":["../src/payment-headers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA6GH,sDAGC;AAUD,0DAGC;AASD,wDAGC;AA/GD;;GAEG;AACH,SAAS,YAAY,CAAC,OAAoB;IACxC,OAAO,OAAQ,OAA0B,CAAC,GAAG,KAAK,UAAU,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,OAA2B,EAAE,IAAY;IACnE,wBAAwB;IACxB,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI;aACD,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAChE,IAAI,CAAC,GAAG,CAAC;KACb,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,2CAA2C;YAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAAC,OAAoB,EAAE,IAAY;IAClE,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,wEAAwE;QACxE,8DAA8D;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEjC,MAAM,SAAS,GAAG,IAAI;aACnB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAChE,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAEjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;IACpB,OAAO,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,OAAoB;IACxD,MAAM,eAAe,GAAG,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC9E,OAAO,eAAe,KAAK,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,OAAoB;IAC1D,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACpE,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACpC,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,OAAoB;IACzD,MAAM,KAAK,GAAG,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACpE,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;AACpC,CAAC"}
package/dist/types.js DELETED
@@ -1,8 +0,0 @@
1
- "use strict";
2
- /**
3
- * x402 type definitions
4
- *
5
- * Supports both v1 and v2 x402 protocol formats.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}