@t402/core 2.0.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.
- package/README.md +293 -0
- package/dist/cjs/client/index.d.ts +103 -0
- package/dist/cjs/client/index.js +510 -0
- package/dist/cjs/client/index.js.map +1 -0
- package/dist/cjs/facilitator/index.d.ts +192 -0
- package/dist/cjs/facilitator/index.js +398 -0
- package/dist/cjs/facilitator/index.js.map +1 -0
- package/dist/cjs/http/index.d.ts +52 -0
- package/dist/cjs/http/index.js +763 -0
- package/dist/cjs/http/index.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/mechanisms-CmrqNl1M.d.ts +238 -0
- package/dist/cjs/mechanisms-DsJn3ZiM.d.ts +238 -0
- package/dist/cjs/server/index.d.ts +2 -0
- package/dist/cjs/server/index.js +1241 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/t402HTTPClient-m6cjzTek.d.ts +243 -0
- package/dist/cjs/t402HTTPResourceServer-B-xmYMwj.d.ts +719 -0
- package/dist/cjs/t402HTTPResourceServer-Bcfxp2UO.d.ts +719 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.js +19 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/v1/index.d.ts +1 -0
- package/dist/cjs/types/v1/index.js +19 -0
- package/dist/cjs/types/v1/index.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +48 -0
- package/dist/cjs/utils/index.js +108 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/esm/chunk-3IUBYRYG.mjs +78 -0
- package/dist/esm/chunk-3IUBYRYG.mjs.map +1 -0
- package/dist/esm/chunk-3VTYR43U.mjs +7 -0
- package/dist/esm/chunk-3VTYR43U.mjs.map +1 -0
- package/dist/esm/chunk-BJTO5JO5.mjs +11 -0
- package/dist/esm/chunk-BJTO5JO5.mjs.map +1 -0
- package/dist/esm/chunk-D5DYKKCZ.mjs +722 -0
- package/dist/esm/chunk-D5DYKKCZ.mjs.map +1 -0
- package/dist/esm/client/index.d.mts +103 -0
- package/dist/esm/client/index.mjs +356 -0
- package/dist/esm/client/index.mjs.map +1 -0
- package/dist/esm/facilitator/index.d.mts +192 -0
- package/dist/esm/facilitator/index.mjs +373 -0
- package/dist/esm/facilitator/index.mjs.map +1 -0
- package/dist/esm/http/index.d.mts +52 -0
- package/dist/esm/http/index.mjs +28 -0
- package/dist/esm/http/index.mjs.map +1 -0
- package/dist/esm/index.d.mts +3 -0
- package/dist/esm/index.mjs +8 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/mechanisms-CmrqNl1M.d.mts +238 -0
- package/dist/esm/server/index.d.mts +2 -0
- package/dist/esm/server/index.mjs +562 -0
- package/dist/esm/server/index.mjs.map +1 -0
- package/dist/esm/t402HTTPClient-C285YGCp.d.mts +243 -0
- package/dist/esm/t402HTTPResourceServer-k_l3d8ua.d.mts +719 -0
- package/dist/esm/types/index.d.mts +1 -0
- package/dist/esm/types/index.mjs +1 -0
- package/dist/esm/types/index.mjs.map +1 -0
- package/dist/esm/types/v1/index.d.mts +1 -0
- package/dist/esm/types/v1/index.mjs +1 -0
- package/dist/esm/types/v1/index.mjs.map +1 -0
- package/dist/esm/utils/index.d.mts +48 -0
- package/dist/esm/utils/index.mjs +20 -0
- package/dist/esm/utils/index.mjs.map +1 -0
- package/package.json +129 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { A as AssetAmount, M as Money, r as MoneyParser, N as Network, a as PaymentPayload, k as PaymentPayloadV1, c as PaymentRequired, j as PaymentRequiredV1, P as PaymentRequirements, i as PaymentRequirementsV1, h as Price, R as ResourceServerExtension, d as SchemeNetworkClient, b as SchemeNetworkFacilitator, f as SchemeNetworkServer, q as SettleRequest, S as SettleResponse, e as SupportedResponse, p as VerifyRequest, V as VerifyResponse } from '../mechanisms-CmrqNl1M.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/types/index.ts
|
|
17
|
+
var types_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(types_exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/types/index.ts"],"sourcesContent":["export type {\n VerifyRequest,\n VerifyResponse,\n SettleRequest,\n SettleResponse,\n SupportedResponse,\n} from \"./facilitator\";\nexport type { PaymentRequirements, PaymentPayload, PaymentRequired } from \"./payments\";\nexport type {\n SchemeNetworkClient,\n SchemeNetworkFacilitator,\n SchemeNetworkServer,\n MoneyParser,\n} from \"./mechanisms\";\nexport type { PaymentRequirementsV1, PaymentRequiredV1, PaymentPayloadV1 } from \"./v1\";\nexport type { ResourceServerExtension } from \"./extensions\";\n\nexport type Network = `${string}:${string}`;\n\nexport type Money = string | number;\nexport type AssetAmount = {\n asset: string;\n amount: string;\n extra?: Record<string, unknown>;\n};\nexport type Price = Money | AssetAmount;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { k as PaymentPayloadV1, j as PaymentRequiredV1, i as PaymentRequirementsV1, m as SettleRequestV1, n as SettleResponseV1, o as SupportedResponseV1, l as VerifyRequestV1 } from '../../mechanisms-CmrqNl1M.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/types/v1/index.ts
|
|
17
|
+
var v1_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(v1_exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/types/v1/index.ts"],"sourcesContent":["import { Network } from \"../\";\n\n// Payments\nexport type PaymentRequirementsV1 = {\n scheme: string;\n network: Network;\n maxAmountRequired: string;\n resource: string;\n description: string;\n mimeType: string;\n outputSchema: Record<string, unknown>;\n payTo: string;\n maxTimeoutSeconds: number;\n asset: string;\n extra: Record<string, unknown>;\n};\n\nexport type PaymentRequiredV1 = {\n t402Version: 1;\n error?: string;\n accepts: PaymentRequirementsV1[];\n};\n\nexport type PaymentPayloadV1 = {\n t402Version: 1;\n scheme: string;\n network: Network;\n payload: Record<string, unknown>;\n};\n\n// Facilitator Requests/Responses\nexport type VerifyRequestV1 = {\n paymentPayload: PaymentPayloadV1;\n paymentRequirements: PaymentRequirementsV1;\n};\n\nexport type SettleRequestV1 = {\n paymentPayload: PaymentPayloadV1;\n paymentRequirements: PaymentRequirementsV1;\n};\n\nexport type SettleResponseV1 = {\n success: boolean;\n errorReason?: string;\n payer?: string;\n transaction: string;\n network: Network;\n};\n\nexport type SupportedResponseV1 = {\n kinds: {\n t402Version: number;\n scheme: string;\n network: Network;\n extra?: Record<string, unknown>;\n }[];\n // NO extensions field - V1 doesn't support extensions\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { N as Network } from '../mechanisms-CmrqNl1M.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Scheme data structure for facilitator storage
|
|
5
|
+
*/
|
|
6
|
+
interface SchemeData<T> {
|
|
7
|
+
facilitator: T;
|
|
8
|
+
networks: Set<Network>;
|
|
9
|
+
pattern: Network;
|
|
10
|
+
}
|
|
11
|
+
declare const findSchemesByNetwork: <T>(map: Map<string, Map<string, T>>, network: Network) => Map<string, T> | undefined;
|
|
12
|
+
declare const findByNetworkAndScheme: <T>(map: Map<string, Map<string, T>>, scheme: string, network: Network) => T | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Finds a facilitator by scheme and network using pattern matching.
|
|
15
|
+
* Works with new SchemeData storage structure.
|
|
16
|
+
*
|
|
17
|
+
* @param schemeMap - Map of scheme names to SchemeData
|
|
18
|
+
* @param scheme - The scheme to find
|
|
19
|
+
* @param network - The network to match against
|
|
20
|
+
* @returns The facilitator if found, undefined otherwise
|
|
21
|
+
*/
|
|
22
|
+
declare const findFacilitatorBySchemeAndNetwork: <T>(schemeMap: Map<string, SchemeData<T>>, scheme: string, network: Network) => T | undefined;
|
|
23
|
+
declare const Base64EncodedRegex: RegExp;
|
|
24
|
+
/**
|
|
25
|
+
* Encodes a string to base64 format
|
|
26
|
+
*
|
|
27
|
+
* @param data - The string to be encoded to base64
|
|
28
|
+
* @returns The base64 encoded string
|
|
29
|
+
*/
|
|
30
|
+
declare function safeBase64Encode(data: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Decodes a base64 string back to its original format
|
|
33
|
+
*
|
|
34
|
+
* @param data - The base64 encoded string to be decoded
|
|
35
|
+
* @returns The decoded string in UTF-8 format
|
|
36
|
+
*/
|
|
37
|
+
declare function safeBase64Decode(data: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Deep equality comparison for payment requirements
|
|
40
|
+
* Uses a normalized JSON.stringify for consistent comparison
|
|
41
|
+
*
|
|
42
|
+
* @param obj1 - First object to compare
|
|
43
|
+
* @param obj2 - Second object to compare
|
|
44
|
+
* @returns True if objects are deeply equal
|
|
45
|
+
*/
|
|
46
|
+
declare function deepEqual(obj1: unknown, obj2: unknown): boolean;
|
|
47
|
+
|
|
48
|
+
export { Base64EncodedRegex, type SchemeData, deepEqual, findByNetworkAndScheme, findFacilitatorBySchemeAndNetwork, findSchemesByNetwork, safeBase64Decode, safeBase64Encode };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/utils/index.ts
|
|
21
|
+
var utils_exports = {};
|
|
22
|
+
__export(utils_exports, {
|
|
23
|
+
Base64EncodedRegex: () => Base64EncodedRegex,
|
|
24
|
+
deepEqual: () => deepEqual,
|
|
25
|
+
findByNetworkAndScheme: () => findByNetworkAndScheme,
|
|
26
|
+
findFacilitatorBySchemeAndNetwork: () => findFacilitatorBySchemeAndNetwork,
|
|
27
|
+
findSchemesByNetwork: () => findSchemesByNetwork,
|
|
28
|
+
safeBase64Decode: () => safeBase64Decode,
|
|
29
|
+
safeBase64Encode: () => safeBase64Encode
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(utils_exports);
|
|
32
|
+
var findSchemesByNetwork = (map, network) => {
|
|
33
|
+
let implementationsByScheme = map.get(network);
|
|
34
|
+
if (!implementationsByScheme) {
|
|
35
|
+
for (const [registeredNetworkPattern, implementations] of map.entries()) {
|
|
36
|
+
const pattern = registeredNetworkPattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
|
|
37
|
+
const regex = new RegExp(`^${pattern}$`);
|
|
38
|
+
if (regex.test(network)) {
|
|
39
|
+
implementationsByScheme = implementations;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return implementationsByScheme;
|
|
45
|
+
};
|
|
46
|
+
var findByNetworkAndScheme = (map, scheme, network) => {
|
|
47
|
+
return findSchemesByNetwork(map, network)?.get(scheme);
|
|
48
|
+
};
|
|
49
|
+
var findFacilitatorBySchemeAndNetwork = (schemeMap, scheme, network) => {
|
|
50
|
+
const schemeData = schemeMap.get(scheme);
|
|
51
|
+
if (!schemeData) return void 0;
|
|
52
|
+
if (schemeData.networks.has(network)) {
|
|
53
|
+
return schemeData.facilitator;
|
|
54
|
+
}
|
|
55
|
+
const patternRegex = new RegExp("^" + schemeData.pattern.replace("*", ".*") + "$");
|
|
56
|
+
if (patternRegex.test(network)) {
|
|
57
|
+
return schemeData.facilitator;
|
|
58
|
+
}
|
|
59
|
+
return void 0;
|
|
60
|
+
};
|
|
61
|
+
var Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
62
|
+
function safeBase64Encode(data) {
|
|
63
|
+
if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") {
|
|
64
|
+
return globalThis.btoa(data);
|
|
65
|
+
}
|
|
66
|
+
return Buffer.from(data).toString("base64");
|
|
67
|
+
}
|
|
68
|
+
function safeBase64Decode(data) {
|
|
69
|
+
if (typeof globalThis !== "undefined" && typeof globalThis.atob === "function") {
|
|
70
|
+
return globalThis.atob(data);
|
|
71
|
+
}
|
|
72
|
+
return Buffer.from(data, "base64").toString("utf-8");
|
|
73
|
+
}
|
|
74
|
+
function deepEqual(obj1, obj2) {
|
|
75
|
+
const normalize = (obj) => {
|
|
76
|
+
if (obj === null || obj === void 0) return JSON.stringify(obj);
|
|
77
|
+
if (typeof obj !== "object") return JSON.stringify(obj);
|
|
78
|
+
if (Array.isArray(obj)) {
|
|
79
|
+
return JSON.stringify(
|
|
80
|
+
obj.map(
|
|
81
|
+
(item) => typeof item === "object" && item !== null ? JSON.parse(normalize(item)) : item
|
|
82
|
+
)
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
const sorted = {};
|
|
86
|
+
Object.keys(obj).sort().forEach((key) => {
|
|
87
|
+
const value = obj[key];
|
|
88
|
+
sorted[key] = typeof value === "object" && value !== null ? JSON.parse(normalize(value)) : value;
|
|
89
|
+
});
|
|
90
|
+
return JSON.stringify(sorted);
|
|
91
|
+
};
|
|
92
|
+
try {
|
|
93
|
+
return normalize(obj1) === normalize(obj2);
|
|
94
|
+
} catch {
|
|
95
|
+
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
99
|
+
0 && (module.exports = {
|
|
100
|
+
Base64EncodedRegex,
|
|
101
|
+
deepEqual,
|
|
102
|
+
findByNetworkAndScheme,
|
|
103
|
+
findFacilitatorBySchemeAndNetwork,
|
|
104
|
+
findSchemesByNetwork,
|
|
105
|
+
safeBase64Decode,
|
|
106
|
+
safeBase64Encode
|
|
107
|
+
});
|
|
108
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/index.ts"],"sourcesContent":["import { Network } from \"../types\";\n\n/**\n * Scheme data structure for facilitator storage\n */\nexport interface SchemeData<T> {\n facilitator: T;\n networks: Set<Network>;\n pattern: Network;\n}\n\nexport const findSchemesByNetwork = <T>(\n map: Map<string, Map<string, T>>,\n network: Network,\n): Map<string, T> | undefined => {\n // Direct match first\n let implementationsByScheme = map.get(network);\n\n if (!implementationsByScheme) {\n // Try pattern matching for registered network patterns\n for (const [registeredNetworkPattern, implementations] of map.entries()) {\n // Convert the registered network pattern to a regex\n // e.g., \"eip155:*\" becomes /^eip155:.*$/\n const pattern = registeredNetworkPattern\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\") // Escape special regex chars except *\n .replace(/\\\\\\*/g, \".*\"); // Replace escaped * with .*\n\n const regex = new RegExp(`^${pattern}$`);\n\n if (regex.test(network)) {\n implementationsByScheme = implementations;\n break;\n }\n }\n }\n\n return implementationsByScheme;\n};\n\nexport const findByNetworkAndScheme = <T>(\n map: Map<string, Map<string, T>>,\n scheme: string,\n network: Network,\n): T | undefined => {\n return findSchemesByNetwork(map, network)?.get(scheme);\n};\n\n/**\n * Finds a facilitator by scheme and network using pattern matching.\n * Works with new SchemeData storage structure.\n *\n * @param schemeMap - Map of scheme names to SchemeData\n * @param scheme - The scheme to find\n * @param network - The network to match against\n * @returns The facilitator if found, undefined otherwise\n */\nexport const findFacilitatorBySchemeAndNetwork = <T>(\n schemeMap: Map<string, SchemeData<T>>,\n scheme: string,\n network: Network,\n): T | undefined => {\n const schemeData = schemeMap.get(scheme);\n if (!schemeData) return undefined;\n\n // Check if network is in the stored networks set\n if (schemeData.networks.has(network)) {\n return schemeData.facilitator;\n }\n\n // Try pattern matching\n const patternRegex = new RegExp(\"^\" + schemeData.pattern.replace(\"*\", \".*\") + \"$\");\n if (patternRegex.test(network)) {\n return schemeData.facilitator;\n }\n\n return undefined;\n};\n\nexport const Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;\n\n/**\n * Encodes a string to base64 format\n *\n * @param data - The string to be encoded to base64\n * @returns The base64 encoded string\n */\nexport function safeBase64Encode(data: string): string {\n if (typeof globalThis !== \"undefined\" && typeof globalThis.btoa === \"function\") {\n return globalThis.btoa(data);\n }\n return Buffer.from(data).toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string back to its original format\n *\n * @param data - The base64 encoded string to be decoded\n * @returns The decoded string in UTF-8 format\n */\nexport function safeBase64Decode(data: string): string {\n if (typeof globalThis !== \"undefined\" && typeof globalThis.atob === \"function\") {\n return globalThis.atob(data);\n }\n return Buffer.from(data, \"base64\").toString(\"utf-8\");\n}\n\n/**\n * Deep equality comparison for payment requirements\n * Uses a normalized JSON.stringify for consistent comparison\n *\n * @param obj1 - First object to compare\n * @param obj2 - Second object to compare\n * @returns True if objects are deeply equal\n */\nexport function deepEqual(obj1: unknown, obj2: unknown): boolean {\n // Normalize and stringify both objects for comparison\n // This handles nested objects, arrays, and different property orders\n const normalize = (obj: unknown): string => {\n // Handle primitives and null/undefined\n if (obj === null || obj === undefined) return JSON.stringify(obj);\n if (typeof obj !== \"object\") return JSON.stringify(obj);\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return JSON.stringify(\n obj.map(item =>\n typeof item === \"object\" && item !== null ? JSON.parse(normalize(item)) : item,\n ),\n );\n }\n\n // Handle objects - sort keys and recursively normalize values\n const sorted: Record<string, unknown> = {};\n Object.keys(obj as Record<string, unknown>)\n .sort()\n .forEach(key => {\n const value = (obj as Record<string, unknown>)[key];\n sorted[key] =\n typeof value === \"object\" && value !== null ? JSON.parse(normalize(value)) : value;\n });\n return JSON.stringify(sorted);\n };\n\n try {\n return normalize(obj1) === normalize(obj2);\n } catch {\n // Fallback to simple comparison if normalization fails\n return JSON.stringify(obj1) === JSON.stringify(obj2);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWO,IAAM,uBAAuB,CAClC,KACA,YAC+B;AAE/B,MAAI,0BAA0B,IAAI,IAAI,OAAO;AAE7C,MAAI,CAAC,yBAAyB;AAE5B,eAAW,CAAC,0BAA0B,eAAe,KAAK,IAAI,QAAQ,GAAG;AAGvE,YAAM,UAAU,yBACb,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,SAAS,IAAI;AAExB,YAAM,QAAQ,IAAI,OAAO,IAAI,OAAO,GAAG;AAEvC,UAAI,MAAM,KAAK,OAAO,GAAG;AACvB,kCAA0B;AAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,yBAAyB,CACpC,KACA,QACA,YACkB;AAClB,SAAO,qBAAqB,KAAK,OAAO,GAAG,IAAI,MAAM;AACvD;AAWO,IAAM,oCAAoC,CAC/C,WACA,QACA,YACkB;AAClB,QAAM,aAAa,UAAU,IAAI,MAAM;AACvC,MAAI,CAAC,WAAY,QAAO;AAGxB,MAAI,WAAW,SAAS,IAAI,OAAO,GAAG;AACpC,WAAO,WAAW;AAAA,EACpB;AAGA,QAAM,eAAe,IAAI,OAAO,MAAM,WAAW,QAAQ,QAAQ,KAAK,IAAI,IAAI,GAAG;AACjF,MAAI,aAAa,KAAK,OAAO,GAAG;AAC9B,WAAO,WAAW;AAAA,EACpB;AAEA,SAAO;AACT;AAEO,IAAM,qBAAqB;AAQ3B,SAAS,iBAAiB,MAAsB;AACrD,MAAI,OAAO,eAAe,eAAe,OAAO,WAAW,SAAS,YAAY;AAC9E,WAAO,WAAW,KAAK,IAAI;AAAA,EAC7B;AACA,SAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAC5C;AAQO,SAAS,iBAAiB,MAAsB;AACrD,MAAI,OAAO,eAAe,eAAe,OAAO,WAAW,SAAS,YAAY;AAC9E,WAAO,WAAW,KAAK,IAAI;AAAA,EAC7B;AACA,SAAO,OAAO,KAAK,MAAM,QAAQ,EAAE,SAAS,OAAO;AACrD;AAUO,SAAS,UAAU,MAAe,MAAwB;AAG/D,QAAM,YAAY,CAAC,QAAyB;AAE1C,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO,KAAK,UAAU,GAAG;AAChE,QAAI,OAAO,QAAQ,SAAU,QAAO,KAAK,UAAU,GAAG;AAGtD,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,aAAO,KAAK;AAAA,QACV,IAAI;AAAA,UAAI,UACN,OAAO,SAAS,YAAY,SAAS,OAAO,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAGA,UAAM,SAAkC,CAAC;AACzC,WAAO,KAAK,GAA8B,EACvC,KAAK,EACL,QAAQ,SAAO;AACd,YAAM,QAAS,IAAgC,GAAG;AAClD,aAAO,GAAG,IACR,OAAO,UAAU,YAAY,UAAU,OAAO,KAAK,MAAM,UAAU,KAAK,CAAC,IAAI;AAAA,IACjF,CAAC;AACH,WAAO,KAAK,UAAU,MAAM;AAAA,EAC9B;AAEA,MAAI;AACF,WAAO,UAAU,IAAI,MAAM,UAAU,IAAI;AAAA,EAC3C,QAAQ;AAEN,WAAO,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI;AAAA,EACrD;AACF;","names":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
// src/utils/index.ts
|
|
2
|
+
var findSchemesByNetwork = (map, network) => {
|
|
3
|
+
let implementationsByScheme = map.get(network);
|
|
4
|
+
if (!implementationsByScheme) {
|
|
5
|
+
for (const [registeredNetworkPattern, implementations] of map.entries()) {
|
|
6
|
+
const pattern = registeredNetworkPattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
|
|
7
|
+
const regex = new RegExp(`^${pattern}$`);
|
|
8
|
+
if (regex.test(network)) {
|
|
9
|
+
implementationsByScheme = implementations;
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return implementationsByScheme;
|
|
15
|
+
};
|
|
16
|
+
var findByNetworkAndScheme = (map, scheme, network) => {
|
|
17
|
+
return findSchemesByNetwork(map, network)?.get(scheme);
|
|
18
|
+
};
|
|
19
|
+
var findFacilitatorBySchemeAndNetwork = (schemeMap, scheme, network) => {
|
|
20
|
+
const schemeData = schemeMap.get(scheme);
|
|
21
|
+
if (!schemeData) return void 0;
|
|
22
|
+
if (schemeData.networks.has(network)) {
|
|
23
|
+
return schemeData.facilitator;
|
|
24
|
+
}
|
|
25
|
+
const patternRegex = new RegExp("^" + schemeData.pattern.replace("*", ".*") + "$");
|
|
26
|
+
if (patternRegex.test(network)) {
|
|
27
|
+
return schemeData.facilitator;
|
|
28
|
+
}
|
|
29
|
+
return void 0;
|
|
30
|
+
};
|
|
31
|
+
var Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
32
|
+
function safeBase64Encode(data) {
|
|
33
|
+
if (typeof globalThis !== "undefined" && typeof globalThis.btoa === "function") {
|
|
34
|
+
return globalThis.btoa(data);
|
|
35
|
+
}
|
|
36
|
+
return Buffer.from(data).toString("base64");
|
|
37
|
+
}
|
|
38
|
+
function safeBase64Decode(data) {
|
|
39
|
+
if (typeof globalThis !== "undefined" && typeof globalThis.atob === "function") {
|
|
40
|
+
return globalThis.atob(data);
|
|
41
|
+
}
|
|
42
|
+
return Buffer.from(data, "base64").toString("utf-8");
|
|
43
|
+
}
|
|
44
|
+
function deepEqual(obj1, obj2) {
|
|
45
|
+
const normalize = (obj) => {
|
|
46
|
+
if (obj === null || obj === void 0) return JSON.stringify(obj);
|
|
47
|
+
if (typeof obj !== "object") return JSON.stringify(obj);
|
|
48
|
+
if (Array.isArray(obj)) {
|
|
49
|
+
return JSON.stringify(
|
|
50
|
+
obj.map(
|
|
51
|
+
(item) => typeof item === "object" && item !== null ? JSON.parse(normalize(item)) : item
|
|
52
|
+
)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
const sorted = {};
|
|
56
|
+
Object.keys(obj).sort().forEach((key) => {
|
|
57
|
+
const value = obj[key];
|
|
58
|
+
sorted[key] = typeof value === "object" && value !== null ? JSON.parse(normalize(value)) : value;
|
|
59
|
+
});
|
|
60
|
+
return JSON.stringify(sorted);
|
|
61
|
+
};
|
|
62
|
+
try {
|
|
63
|
+
return normalize(obj1) === normalize(obj2);
|
|
64
|
+
} catch {
|
|
65
|
+
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export {
|
|
70
|
+
findSchemesByNetwork,
|
|
71
|
+
findByNetworkAndScheme,
|
|
72
|
+
findFacilitatorBySchemeAndNetwork,
|
|
73
|
+
Base64EncodedRegex,
|
|
74
|
+
safeBase64Encode,
|
|
75
|
+
safeBase64Decode,
|
|
76
|
+
deepEqual
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=chunk-3IUBYRYG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["import { Network } from \"../types\";\n\n/**\n * Scheme data structure for facilitator storage\n */\nexport interface SchemeData<T> {\n facilitator: T;\n networks: Set<Network>;\n pattern: Network;\n}\n\nexport const findSchemesByNetwork = <T>(\n map: Map<string, Map<string, T>>,\n network: Network,\n): Map<string, T> | undefined => {\n // Direct match first\n let implementationsByScheme = map.get(network);\n\n if (!implementationsByScheme) {\n // Try pattern matching for registered network patterns\n for (const [registeredNetworkPattern, implementations] of map.entries()) {\n // Convert the registered network pattern to a regex\n // e.g., \"eip155:*\" becomes /^eip155:.*$/\n const pattern = registeredNetworkPattern\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\") // Escape special regex chars except *\n .replace(/\\\\\\*/g, \".*\"); // Replace escaped * with .*\n\n const regex = new RegExp(`^${pattern}$`);\n\n if (regex.test(network)) {\n implementationsByScheme = implementations;\n break;\n }\n }\n }\n\n return implementationsByScheme;\n};\n\nexport const findByNetworkAndScheme = <T>(\n map: Map<string, Map<string, T>>,\n scheme: string,\n network: Network,\n): T | undefined => {\n return findSchemesByNetwork(map, network)?.get(scheme);\n};\n\n/**\n * Finds a facilitator by scheme and network using pattern matching.\n * Works with new SchemeData storage structure.\n *\n * @param schemeMap - Map of scheme names to SchemeData\n * @param scheme - The scheme to find\n * @param network - The network to match against\n * @returns The facilitator if found, undefined otherwise\n */\nexport const findFacilitatorBySchemeAndNetwork = <T>(\n schemeMap: Map<string, SchemeData<T>>,\n scheme: string,\n network: Network,\n): T | undefined => {\n const schemeData = schemeMap.get(scheme);\n if (!schemeData) return undefined;\n\n // Check if network is in the stored networks set\n if (schemeData.networks.has(network)) {\n return schemeData.facilitator;\n }\n\n // Try pattern matching\n const patternRegex = new RegExp(\"^\" + schemeData.pattern.replace(\"*\", \".*\") + \"$\");\n if (patternRegex.test(network)) {\n return schemeData.facilitator;\n }\n\n return undefined;\n};\n\nexport const Base64EncodedRegex = /^[A-Za-z0-9+/]*={0,2}$/;\n\n/**\n * Encodes a string to base64 format\n *\n * @param data - The string to be encoded to base64\n * @returns The base64 encoded string\n */\nexport function safeBase64Encode(data: string): string {\n if (typeof globalThis !== \"undefined\" && typeof globalThis.btoa === \"function\") {\n return globalThis.btoa(data);\n }\n return Buffer.from(data).toString(\"base64\");\n}\n\n/**\n * Decodes a base64 string back to its original format\n *\n * @param data - The base64 encoded string to be decoded\n * @returns The decoded string in UTF-8 format\n */\nexport function safeBase64Decode(data: string): string {\n if (typeof globalThis !== \"undefined\" && typeof globalThis.atob === \"function\") {\n return globalThis.atob(data);\n }\n return Buffer.from(data, \"base64\").toString(\"utf-8\");\n}\n\n/**\n * Deep equality comparison for payment requirements\n * Uses a normalized JSON.stringify for consistent comparison\n *\n * @param obj1 - First object to compare\n * @param obj2 - Second object to compare\n * @returns True if objects are deeply equal\n */\nexport function deepEqual(obj1: unknown, obj2: unknown): boolean {\n // Normalize and stringify both objects for comparison\n // This handles nested objects, arrays, and different property orders\n const normalize = (obj: unknown): string => {\n // Handle primitives and null/undefined\n if (obj === null || obj === undefined) return JSON.stringify(obj);\n if (typeof obj !== \"object\") return JSON.stringify(obj);\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return JSON.stringify(\n obj.map(item =>\n typeof item === \"object\" && item !== null ? JSON.parse(normalize(item)) : item,\n ),\n );\n }\n\n // Handle objects - sort keys and recursively normalize values\n const sorted: Record<string, unknown> = {};\n Object.keys(obj as Record<string, unknown>)\n .sort()\n .forEach(key => {\n const value = (obj as Record<string, unknown>)[key];\n sorted[key] =\n typeof value === \"object\" && value !== null ? JSON.parse(normalize(value)) : value;\n });\n return JSON.stringify(sorted);\n };\n\n try {\n return normalize(obj1) === normalize(obj2);\n } catch {\n // Fallback to simple comparison if normalization fails\n return JSON.stringify(obj1) === JSON.stringify(obj2);\n }\n}\n"],"mappings":";AAWO,IAAM,uBAAuB,CAClC,KACA,YAC+B;AAE/B,MAAI,0BAA0B,IAAI,IAAI,OAAO;AAE7C,MAAI,CAAC,yBAAyB;AAE5B,eAAW,CAAC,0BAA0B,eAAe,KAAK,IAAI,QAAQ,GAAG;AAGvE,YAAM,UAAU,yBACb,QAAQ,uBAAuB,MAAM,EACrC,QAAQ,SAAS,IAAI;AAExB,YAAM,QAAQ,IAAI,OAAO,IAAI,OAAO,GAAG;AAEvC,UAAI,MAAM,KAAK,OAAO,GAAG;AACvB,kCAA0B;AAC1B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,yBAAyB,CACpC,KACA,QACA,YACkB;AAClB,SAAO,qBAAqB,KAAK,OAAO,GAAG,IAAI,MAAM;AACvD;AAWO,IAAM,oCAAoC,CAC/C,WACA,QACA,YACkB;AAClB,QAAM,aAAa,UAAU,IAAI,MAAM;AACvC,MAAI,CAAC,WAAY,QAAO;AAGxB,MAAI,WAAW,SAAS,IAAI,OAAO,GAAG;AACpC,WAAO,WAAW;AAAA,EACpB;AAGA,QAAM,eAAe,IAAI,OAAO,MAAM,WAAW,QAAQ,QAAQ,KAAK,IAAI,IAAI,GAAG;AACjF,MAAI,aAAa,KAAK,OAAO,GAAG;AAC9B,WAAO,WAAW;AAAA,EACpB;AAEA,SAAO;AACT;AAEO,IAAM,qBAAqB;AAQ3B,SAAS,iBAAiB,MAAsB;AACrD,MAAI,OAAO,eAAe,eAAe,OAAO,WAAW,SAAS,YAAY;AAC9E,WAAO,WAAW,KAAK,IAAI;AAAA,EAC7B;AACA,SAAO,OAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;AAC5C;AAQO,SAAS,iBAAiB,MAAsB;AACrD,MAAI,OAAO,eAAe,eAAe,OAAO,WAAW,SAAS,YAAY;AAC9E,WAAO,WAAW,KAAK,IAAI;AAAA,EAC7B;AACA,SAAO,OAAO,KAAK,MAAM,QAAQ,EAAE,SAAS,OAAO;AACrD;AAUO,SAAS,UAAU,MAAe,MAAwB;AAG/D,QAAM,YAAY,CAAC,QAAyB;AAE1C,QAAI,QAAQ,QAAQ,QAAQ,OAAW,QAAO,KAAK,UAAU,GAAG;AAChE,QAAI,OAAO,QAAQ,SAAU,QAAO,KAAK,UAAU,GAAG;AAGtD,QAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,aAAO,KAAK;AAAA,QACV,IAAI;AAAA,UAAI,UACN,OAAO,SAAS,YAAY,SAAS,OAAO,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI;AAAA,QAC5E;AAAA,MACF;AAAA,IACF;AAGA,UAAM,SAAkC,CAAC;AACzC,WAAO,KAAK,GAA8B,EACvC,KAAK,EACL,QAAQ,SAAO;AACd,YAAM,QAAS,IAAgC,GAAG;AAClD,aAAO,GAAG,IACR,OAAO,UAAU,YAAY,UAAU,OAAO,KAAK,MAAM,UAAU,KAAK,CAAC,IAAI;AAAA,IACjF,CAAC;AACH,WAAO,KAAK,UAAU,MAAM;AAAA,EAC9B;AAEA,MAAI;AACF,WAAO,UAAU,IAAI,MAAM,UAAU,IAAI;AAAA,EAC3C,QAAQ;AAEN,WAAO,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU,IAAI;AAAA,EACrD;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"sourcesContent":["export const t402Version = 2;\n"],"mappings":";AAAO,IAAM,cAAc;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
5
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
__require
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=chunk-BJTO5JO5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|