@textrp/briij-js-sdk 43.0.0 → 43.1.1
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/CHANGELOG.md +7 -4
- package/lib/@types/auth.d.ts +7 -5
- package/lib/@types/auth.d.ts.map +1 -1
- package/lib/@types/auth.js.map +1 -1
- package/lib/@types/event.d.ts +3 -32
- package/lib/@types/event.d.ts.map +1 -1
- package/lib/@types/event.js.map +1 -1
- package/lib/@types/synapse.d.ts +64 -0
- package/lib/@types/synapse.d.ts.map +1 -1
- package/lib/@types/synapse.js.map +1 -1
- package/lib/briij.d.ts +1 -0
- package/lib/briij.d.ts.map +1 -1
- package/lib/briij.js +1 -0
- package/lib/briij.js.map +1 -1
- package/lib/client.d.ts +72 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +369 -196
- package/lib/client.js.map +1 -1
- package/lib/wallet-recovery.d.ts +1 -1
- package/lib/wallet-recovery.d.ts.map +1 -1
- package/lib/wallet-recovery.js +32 -8
- package/lib/wallet-recovery.js.map +1 -1
- package/lib/xrpl/identity.d.ts +2 -1
- package/lib/xrpl/identity.d.ts.map +1 -1
- package/lib/xrpl/identity.js +70 -47
- package/lib/xrpl/identity.js.map +1 -1
- package/lib/xrpl/trust.d.ts +4 -2
- package/lib/xrpl/trust.d.ts.map +1 -1
- package/lib/xrpl/trust.js +31 -19
- package/lib/xrpl/trust.js.map +1 -1
- package/lib/xrpl/verification.js +17 -6
- package/lib/xrpl/verification.js.map +1 -1
- package/package.json +127 -129
- package/src/@types/auth.ts +6 -7
- package/src/@types/event.ts +3 -32
- package/src/@types/synapse.ts +77 -0
- package/src/briij.ts +1 -0
- package/src/client.ts +261 -36
- package/src/wallet-recovery.ts +101 -26
- package/src/xrpl/identity.ts +66 -39
- package/src/xrpl/trust.ts +35 -18
- package/src/xrpl/verification.ts +19 -6
package/lib/xrpl/trust.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
2
|
/*
|
|
6
3
|
Copyright 2026 The Matrix.org Foundation C.I.C.
|
|
7
4
|
|
|
@@ -19,34 +16,49 @@ limitations under the License.
|
|
|
19
16
|
*/
|
|
20
17
|
|
|
21
18
|
var DEFAULT_TRUST_PATH = "/_matrix/client/v3/org.textrp.xrpl/trust";
|
|
22
|
-
var
|
|
23
|
-
export function
|
|
24
|
-
xrplTrustConfig = _objectSpread(_objectSpread({}, xrplTrustConfig), config);
|
|
25
|
-
}
|
|
26
|
-
export function getTrustScore(_x, _x2) {
|
|
19
|
+
var DEFAULT_TRUST_TIMEOUT_MS = 10000;
|
|
20
|
+
export function getTrustScore(_x, _x2, _x3, _x4) {
|
|
27
21
|
return _getTrustScore.apply(this, arguments);
|
|
28
22
|
}
|
|
29
23
|
function _getTrustScore() {
|
|
30
|
-
_getTrustScore = _asyncToGenerator(function* (payer, payee) {
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
|
|
24
|
+
_getTrustScore = _asyncToGenerator(function* (payer, payee, config, options) {
|
|
25
|
+
var _config$trustPath, _options$timeoutMs;
|
|
26
|
+
var {
|
|
27
|
+
homeserverBaseUrl,
|
|
28
|
+
accessToken
|
|
29
|
+
} = config;
|
|
34
30
|
if (!homeserverBaseUrl || !accessToken) {
|
|
35
31
|
throw new Error("XRPL trust config is incomplete");
|
|
36
32
|
}
|
|
37
33
|
var trimmedBaseUrl = homeserverBaseUrl.replace(/\/+$/, "");
|
|
38
|
-
var trustPath = (
|
|
34
|
+
var trustPath = (_config$trustPath = config.trustPath) !== null && _config$trustPath !== void 0 ? _config$trustPath : DEFAULT_TRUST_PATH;
|
|
39
35
|
var query = new URLSearchParams({
|
|
40
36
|
payer,
|
|
41
37
|
payee
|
|
42
38
|
});
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
var timeoutMs = (_options$timeoutMs = options === null || options === void 0 ? void 0 : options.timeoutMs) !== null && _options$timeoutMs !== void 0 ? _options$timeoutMs : DEFAULT_TRUST_TIMEOUT_MS;
|
|
40
|
+
var controller = new AbortController();
|
|
41
|
+
var timeoutId = setTimeout(() => {
|
|
42
|
+
controller.abort();
|
|
43
|
+
}, timeoutMs);
|
|
44
|
+
var response;
|
|
45
|
+
try {
|
|
46
|
+
response = yield fetch("".concat(trimmedBaseUrl).concat(trustPath, "?").concat(query.toString()), {
|
|
47
|
+
method: "GET",
|
|
48
|
+
headers: {
|
|
49
|
+
"Authorization": "Bearer ".concat(accessToken),
|
|
50
|
+
"Content-Type": "application/json"
|
|
51
|
+
},
|
|
52
|
+
signal: controller.signal
|
|
53
|
+
});
|
|
54
|
+
} catch (error) {
|
|
55
|
+
if (error instanceof Error && error.name === "AbortError") {
|
|
56
|
+
throw new Error("Timed out fetching trust score after ".concat(timeoutMs, "ms"));
|
|
48
57
|
}
|
|
49
|
-
|
|
58
|
+
throw error;
|
|
59
|
+
} finally {
|
|
60
|
+
clearTimeout(timeoutId);
|
|
61
|
+
}
|
|
50
62
|
if (!response.ok) {
|
|
51
63
|
throw new Error("Failed to fetch trust score: HTTP ".concat(response.status));
|
|
52
64
|
}
|
package/lib/xrpl/trust.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust.js","names":["DEFAULT_TRUST_PATH","
|
|
1
|
+
{"version":3,"file":"trust.js","names":["DEFAULT_TRUST_PATH","DEFAULT_TRUST_TIMEOUT_MS","getTrustScore","_x","_x2","_x3","_x4","_getTrustScore","apply","arguments","_asyncToGenerator","payer","payee","config","options","_config$trustPath","_options$timeoutMs","homeserverBaseUrl","accessToken","Error","trimmedBaseUrl","replace","trustPath","query","URLSearchParams","timeoutMs","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","concat","toString","method","headers","signal","error","name","clearTimeout","ok","status","payload","json","score","trusted"],"sources":["../../src/xrpl/trust.ts"],"sourcesContent":["/*\nCopyright 2026 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nconst DEFAULT_TRUST_PATH = \"/_matrix/client/v3/org.textrp.xrpl/trust\";\nconst DEFAULT_TRUST_TIMEOUT_MS = 10_000;\n\nexport interface XrplTrustConfig {\n homeserverBaseUrl: string;\n accessToken: string;\n trustPath?: string;\n}\n\nexport interface XrplTrustRequestOptions {\n timeoutMs?: number;\n}\n\nexport async function getTrustScore(\n payer: string,\n payee: string,\n config: XrplTrustConfig,\n options?: XrplTrustRequestOptions,\n): Promise<number> {\n const { homeserverBaseUrl, accessToken } = config;\n if (!homeserverBaseUrl || !accessToken) {\n throw new Error(\"XRPL trust config is incomplete\");\n }\n\n const trimmedBaseUrl = homeserverBaseUrl.replace(/\\/+$/, \"\");\n const trustPath = config.trustPath ?? DEFAULT_TRUST_PATH;\n const query = new URLSearchParams({\n payer,\n payee,\n });\n const timeoutMs = options?.timeoutMs ?? DEFAULT_TRUST_TIMEOUT_MS;\n const controller = new AbortController();\n const timeoutId = setTimeout(() => {\n controller.abort();\n }, timeoutMs);\n\n let response: Response;\n try {\n response = await fetch(`${trimmedBaseUrl}${trustPath}?${query.toString()}`, {\n method: \"GET\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n signal: controller.signal,\n });\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n throw new Error(`Timed out fetching trust score after ${timeoutMs}ms`);\n }\n throw error;\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (!response.ok) {\n throw new Error(`Failed to fetch trust score: HTTP ${response.status}`);\n }\n\n const payload = (await response.json()) as { score?: number; trusted?: boolean };\n if (typeof payload.score === \"number\") {\n return payload.score;\n }\n return payload.trusted ? 1 : 0;\n}\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMA,kBAAkB,GAAG,0CAA0C;AACrE,IAAMC,wBAAwB,GAAG,KAAM;AAYvC,gBAAsBC,aAAaA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAmDlC,SAAAF,eAAA;EAAAA,cAAA,GAAAG,iBAAA,CAnDM,WACHC,KAAa,EACbC,KAAa,EACbC,MAAuB,EACvBC,OAAiC,EAClB;IAAA,IAAAC,iBAAA,EAAAC,kBAAA;IACf,IAAM;MAAEC,iBAAiB;MAAEC;IAAY,CAAC,GAAGL,MAAM;IACjD,IAAI,CAACI,iBAAiB,IAAI,CAACC,WAAW,EAAE;MACpC,MAAM,IAAIC,KAAK,CAAC,iCAAiC,CAAC;IACtD;IAEA,IAAMC,cAAc,GAAGH,iBAAiB,CAACI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5D,IAAMC,SAAS,IAAAP,iBAAA,GAAGF,MAAM,CAACS,SAAS,cAAAP,iBAAA,cAAAA,iBAAA,GAAIf,kBAAkB;IACxD,IAAMuB,KAAK,GAAG,IAAIC,eAAe,CAAC;MAC9Bb,KAAK;MACLC;IACJ,CAAC,CAAC;IACF,IAAMa,SAAS,IAAAT,kBAAA,GAAGF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEW,SAAS,cAAAT,kBAAA,cAAAA,kBAAA,GAAIf,wBAAwB;IAChE,IAAMyB,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;IACxC,IAAMC,SAAS,GAAGC,UAAU,CAAC,MAAM;MAC/BH,UAAU,CAACI,KAAK,CAAC,CAAC;IACtB,CAAC,EAAEL,SAAS,CAAC;IAEb,IAAIM,QAAkB;IACtB,IAAI;MACAA,QAAQ,SAASC,KAAK,IAAAC,MAAA,CAAIb,cAAc,EAAAa,MAAA,CAAGX,SAAS,OAAAW,MAAA,CAAIV,KAAK,CAACW,QAAQ,CAAC,CAAC,GAAI;QACxEC,MAAM,EAAE,KAAK;QACbC,OAAO,EAAE;UACL,eAAe,YAAAH,MAAA,CAAYf,WAAW,CAAE;UACxC,cAAc,EAAE;QACpB,CAAC;QACDmB,MAAM,EAAEX,UAAU,CAACW;MACvB,CAAC,CAAC;IACN,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZ,IAAIA,KAAK,YAAYnB,KAAK,IAAImB,KAAK,CAACC,IAAI,KAAK,YAAY,EAAE;QACvD,MAAM,IAAIpB,KAAK,yCAAAc,MAAA,CAAyCR,SAAS,OAAI,CAAC;MAC1E;MACA,MAAMa,KAAK;IACf,CAAC,SAAS;MACNE,YAAY,CAACZ,SAAS,CAAC;IAC3B;IAEA,IAAI,CAACG,QAAQ,CAACU,EAAE,EAAE;MACd,MAAM,IAAItB,KAAK,sCAAAc,MAAA,CAAsCF,QAAQ,CAACW,MAAM,CAAE,CAAC;IAC3E;IAEA,IAAMC,OAAO,SAAUZ,QAAQ,CAACa,IAAI,CAAC,CAA2C;IAChF,IAAI,OAAOD,OAAO,CAACE,KAAK,KAAK,QAAQ,EAAE;MACnC,OAAOF,OAAO,CAACE,KAAK;IACxB;IACA,OAAOF,OAAO,CAACG,OAAO,GAAG,CAAC,GAAG,CAAC;EAClC,CAAC;EAAA,OAAAvC,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA","ignoreList":[]}
|
package/lib/xrpl/verification.js
CHANGED
|
@@ -95,8 +95,8 @@ function _acceptVerification() {
|
|
|
95
95
|
}());
|
|
96
96
|
yield matrixClient.sendEvent(roomId, XRPL_VERIFY_ACCEPT_EVENT, {
|
|
97
97
|
tx_hash: txHash,
|
|
98
|
-
issuer_xrpl_address:
|
|
99
|
-
accepter_xrpl_address:
|
|
98
|
+
issuer_xrpl_address: issuerXrplAddress,
|
|
99
|
+
accepter_xrpl_address: signerAddress,
|
|
100
100
|
nft_token_id: identity.nftTokenId,
|
|
101
101
|
ipfs_uri: updatedUri,
|
|
102
102
|
trust_model: NFT_TRUST_TAG
|
|
@@ -144,10 +144,21 @@ function _waitForValidation() {
|
|
|
144
144
|
_waitForValidation = _asyncToGenerator(function* (xrplClient, txHash) {
|
|
145
145
|
for (var attempt = 0; attempt < 15; attempt += 1) {
|
|
146
146
|
var _response$result;
|
|
147
|
-
var response =
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
147
|
+
var response = void 0;
|
|
148
|
+
try {
|
|
149
|
+
response = yield xrplClient.request({
|
|
150
|
+
command: "tx",
|
|
151
|
+
transaction: txHash
|
|
152
|
+
});
|
|
153
|
+
} catch (error) {
|
|
154
|
+
var _data$error, _data;
|
|
155
|
+
var errorCode = error instanceof Error && "data" in error ? (_data$error = (_data = error.data) === null || _data === void 0 ? void 0 : _data.error) !== null && _data$error !== void 0 ? _data$error : error.error : undefined;
|
|
156
|
+
if (errorCode === "txnNotFound") {
|
|
157
|
+
yield sleep(1000);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
151
162
|
if (((_response$result = response.result) === null || _response$result === void 0 ? void 0 : _response$result.validated) === true) return;
|
|
152
163
|
yield sleep(1000);
|
|
153
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verification.js","names":["Client","XrplClient","EventType","XRPL_VERIFY_REQUEST_EVENT","UserVerifyRequest","XRPL_VERIFY_ACCEPT_EVENT","UserVerifyAccept","XRPL_VERIFIED_EVENT","UserVerified","NFT_TRUST_TAG","XRPL_IDENTITY_ACCOUNT_DATA_TYPE","DEFAULT_XRPL_NETWORK","DEFAULT_XRPL_TESTNET_WS","DEFAULT_XRPL_MAINNET_WS","verificationConfig","configureXrplVerification","config","_objectSpread","requestVerification","_x","_requestVerification","apply","arguments","_asyncToGenerator","targetXrplAddress","matrixClient","xamanWallet","Error","issuerXrplAddress","getAddress","roomId","getVerificationRoomId","sendEvent","tx_hash","issuer_xrpl_address","target_xrpl_address","trust_model","txHash","credentialTypeHex","acceptVerification","_x2","_acceptVerification","signerAddress","identity","getIdentityAccountData","metadata","loadTrustMetadata","ipfsUri","currentVerifiers","Set","Array","isArray","verifiers","filter","value","Boolean","trim","map","add","updatedUri","pinTrustMetadata","from","signAndValidateOnXrpl","TransactionType","Account","NFTokenID","nftTokenId","URI","toHex","_ref","xrplClient","assertAccountOwnsToken","_x13","accepter_xrpl_address","nft_token_id","ipfs_uri","_x3","_x4","_signAndValidateOnXrpl","transaction","preflight","resolveXrplWebSocketUrl","connect","autofilled","autofill","hash","signAndSubmit","waitForValidation","disconnect","catch","undefined","_x5","_x6","_waitForValidation","attempt","_response$result","response","request","command","result","validated","sleep","concat","_x7","_getVerificationRoomId","counterpartyXrplAddress","verificationRoomId","resolveVerificationRoomId","_verificationConfig$n","websocketUrl","network","input","bytes","TextEncoder","encode","toString","padStart","join","toUpperCase","_x8","_getIdentityAccountData","userId","getUserId","accessToken","getAccessToken","accountDataUrl","baseUrl","replace","encodeURIComponent","fetch","method","headers","ok","status","json","_x9","_x0","_x1","_assertAccountOwnsToken","account","tokenId","_response$result2","found","account_nfts","some","entry","_x10","_loadTrustMetadata","uri","startsWith","JSON","parse","_uri$split$","payload","decodeURIComponent","split","cidPath","_x11","_pinTrustMetadata","pinJsonToIpfs","jwt","pinataJwt","body","stringify","pinataContent","IpfsHash","_x12","_sleep","ms","Promise","resolve","setTimeout"],"sources":["../../src/xrpl/verification.ts"],"sourcesContent":["/*\nCopyright 2026 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { Client as XrplClient, type SubmittableTransaction } from \"xrpl\";\n\nimport { EventType } from \"../@types/event.ts\";\nimport type { BriijClient } from \"../client.ts\";\nimport { type XamanWalletAdapter, type XrplIdentityAccountData } from \"./identity.ts\";\n\nexport const XRPL_VERIFY_REQUEST_EVENT: EventType.UserVerifyRequest = EventType.UserVerifyRequest;\nexport const XRPL_VERIFY_ACCEPT_EVENT: EventType.UserVerifyAccept = EventType.UserVerifyAccept;\nexport const XRPL_VERIFIED_EVENT: EventType.UserVerified = EventType.UserVerified;\n\nconst NFT_TRUST_TAG = \"nft_metadata\";\nconst XRPL_IDENTITY_ACCOUNT_DATA_TYPE = \"io.textrp.xrpl.identity_nft\";\n\nconst DEFAULT_XRPL_NETWORK = \"testnet\";\nconst DEFAULT_XRPL_TESTNET_WS = \"wss://s.altnet.rippletest.net:51233\";\nconst DEFAULT_XRPL_MAINNET_WS = \"wss://s1.ripple.com\";\n\nexport interface XrplVerificationConfig {\n matrixClient: Pick<BriijClient, \"sendEvent\" | \"getUserId\" | \"getAccessToken\"> & { baseUrl: string };\n xamanWallet: XamanWalletAdapter;\n verificationRoomId?: string;\n resolveVerificationRoomId?: (counterpartyXrplAddress: string) => Promise<string> | string;\n pinJsonToIpfs?: (payload: Record<string, unknown>) => Promise<string>;\n pinataJwt?: string;\n websocketUrl?: string;\n network?: \"mainnet\" | \"testnet\";\n}\n\nexport interface XrplVerificationTxResult {\n txHash: string;\n credentialTypeHex: string;\n}\n\nlet verificationConfig: Partial<XrplVerificationConfig> = {};\n\nexport function configureXrplVerification(config: Partial<XrplVerificationConfig>): void {\n verificationConfig = {\n ...verificationConfig,\n ...config,\n };\n}\n\nexport async function requestVerification(targetXrplAddress: string): Promise<XrplVerificationTxResult> {\n const { matrixClient, xamanWallet } = verificationConfig;\n if (!matrixClient || !xamanWallet) {\n throw new Error(\"XRPL verification is not configured with matrixClient and xamanWallet\");\n }\n\n const issuerXrplAddress = await xamanWallet.getAddress();\n const roomId = await getVerificationRoomId(targetXrplAddress);\n await matrixClient.sendEvent(roomId, XRPL_VERIFY_REQUEST_EVENT, {\n tx_hash: \"\",\n issuer_xrpl_address: issuerXrplAddress,\n target_xrpl_address: targetXrplAddress,\n trust_model: NFT_TRUST_TAG,\n });\n\n return {\n txHash: \"\",\n credentialTypeHex: NFT_TRUST_TAG,\n };\n}\n\nexport async function acceptVerification(issuerXrplAddress: string): Promise<XrplVerificationTxResult> {\n const { matrixClient, xamanWallet } = verificationConfig;\n if (!matrixClient || !xamanWallet) {\n throw new Error(\"XRPL verification is not configured with matrixClient and xamanWallet\");\n }\n\n const signerAddress = await xamanWallet.getAddress();\n const identity = await getIdentityAccountData(matrixClient);\n const metadata = await loadTrustMetadata(identity.ipfsUri);\n const currentVerifiers = new Set(\n Array.isArray(metadata.verifiers)\n ? metadata.verifiers\n .filter((value): value is string => typeof value === \"string\" && Boolean(value.trim()))\n .map((value) => value.trim())\n : [],\n );\n currentVerifiers.add(issuerXrplAddress);\n const updatedUri = await pinTrustMetadata({\n ...metadata,\n verifiers: Array.from(currentVerifiers),\n });\n\n const roomId = await getVerificationRoomId(issuerXrplAddress);\n const txHash = await signAndValidateOnXrpl(\n {\n TransactionType: \"NFTokenModify\",\n Account: signerAddress,\n NFTokenID: identity.nftTokenId,\n URI: toHex(updatedUri),\n },\n async (xrplClient) => {\n await assertAccountOwnsToken(xrplClient, signerAddress, identity.nftTokenId);\n },\n );\n\n await matrixClient.sendEvent(roomId, XRPL_VERIFY_ACCEPT_EVENT, {\n tx_hash: txHash,\n issuer_xrpl_address: signerAddress,\n accepter_xrpl_address: issuerXrplAddress,\n nft_token_id: identity.nftTokenId,\n ipfs_uri: updatedUri,\n trust_model: NFT_TRUST_TAG,\n });\n\n return {\n txHash,\n credentialTypeHex: NFT_TRUST_TAG,\n };\n}\n\nasync function signAndValidateOnXrpl(\n transaction: Record<string, unknown>,\n preflight?: (xrplClient: XrplClient) => Promise<void>,\n): Promise<string> {\n const { xamanWallet } = verificationConfig;\n if (!xamanWallet) {\n throw new Error(\"Missing Xaman wallet adapter\");\n }\n\n const xrplClient = new XrplClient(resolveXrplWebSocketUrl());\n await xrplClient.connect();\n\n try {\n if (preflight) {\n await preflight(xrplClient);\n }\n const autofilled = await xrplClient.autofill(transaction as unknown as SubmittableTransaction);\n const { hash: txHash } = await xamanWallet.signAndSubmit(autofilled as Record<string, unknown>);\n await waitForValidation(xrplClient, txHash);\n return txHash;\n } finally {\n await xrplClient.disconnect().catch(() => undefined);\n }\n}\n\nasync function waitForValidation(xrplClient: XrplClient, txHash: string): Promise<void> {\n for (let attempt = 0; attempt < 15; attempt += 1) {\n const response = await xrplClient.request({\n command: \"tx\",\n transaction: txHash,\n });\n\n if (response.result?.validated === true) return;\n await sleep(1000);\n }\n\n throw new Error(`Timed out waiting for XRPL tx validation: ${txHash}`);\n}\n\nasync function getVerificationRoomId(counterpartyXrplAddress: string): Promise<string> {\n if (verificationConfig.verificationRoomId) {\n return verificationConfig.verificationRoomId;\n }\n if (verificationConfig.resolveVerificationRoomId) {\n return await verificationConfig.resolveVerificationRoomId(counterpartyXrplAddress);\n }\n throw new Error(\"No verification room configured\");\n}\n\nfunction resolveXrplWebSocketUrl(): string {\n if (verificationConfig.websocketUrl) return verificationConfig.websocketUrl;\n const network = verificationConfig.network ?? DEFAULT_XRPL_NETWORK;\n return network === \"mainnet\" ? DEFAULT_XRPL_MAINNET_WS : DEFAULT_XRPL_TESTNET_WS;\n}\n\nfunction toHex(input: string | Uint8Array): string {\n const bytes = typeof input === \"string\" ? new TextEncoder().encode(input) : input;\n return Array.from(bytes)\n .map((value) => value.toString(16).padStart(2, \"0\"))\n .join(\"\")\n .toUpperCase();\n}\n\nasync function getIdentityAccountData(\n matrixClient: Pick<BriijClient, \"getUserId\" | \"getAccessToken\"> & { baseUrl: string },\n): Promise<XrplIdentityAccountData> {\n const userId = matrixClient.getUserId();\n const accessToken = matrixClient.getAccessToken();\n if (!userId || !accessToken) {\n throw new Error(\"Missing Matrix session for XRPL verification\");\n }\n\n const accountDataUrl =\n `${matrixClient.baseUrl.replace(/\\/+$/, \"\")}` +\n `/_matrix/client/v3/user/${encodeURIComponent(userId)}/account_data/${encodeURIComponent(XRPL_IDENTITY_ACCOUNT_DATA_TYPE)}`;\n const response = await fetch(accountDataUrl, {\n method: \"GET\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n if (!response.ok) {\n throw new Error(`Unable to fetch identity NFT account_data: HTTP ${response.status}`);\n }\n return (await response.json()) as XrplIdentityAccountData;\n}\n\nasync function assertAccountOwnsToken(xrplClient: XrplClient, account: string, tokenId: string): Promise<void> {\n const response = await xrplClient.request({\n command: \"account_nfts\",\n account,\n });\n const found = response.result?.account_nfts?.some((entry: { NFTokenID?: string }) => entry.NFTokenID === tokenId);\n if (!found) {\n throw new Error(`Identity NFT ${tokenId} not found on account ${account}`);\n }\n}\n\nasync function loadTrustMetadata(uri: string): Promise<Record<string, unknown>> {\n if (!uri) return {};\n if (uri.startsWith(\"{\")) {\n return JSON.parse(uri) as Record<string, unknown>;\n }\n\n if (uri.startsWith(\"data:application/json,\")) {\n const payload = decodeURIComponent(uri.split(\",\", 2)[1] ?? \"{}\");\n return JSON.parse(payload) as Record<string, unknown>;\n }\n\n if (uri.startsWith(\"ipfs://\")) {\n const cidPath = uri.replace(\"ipfs://\", \"\");\n const response = await fetch(`https://ipfs.io/ipfs/${cidPath}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch IPFS metadata: HTTP ${response.status}`);\n }\n return (await response.json()) as Record<string, unknown>;\n }\n\n return {};\n}\n\nasync function pinTrustMetadata(payload: Record<string, unknown>): Promise<string> {\n if (verificationConfig.pinJsonToIpfs) {\n return await verificationConfig.pinJsonToIpfs(payload);\n }\n\n const jwt = verificationConfig.pinataJwt;\n if (!jwt) {\n throw new Error(\"Set pinJsonToIpfs or pinataJwt before acceptVerification()\");\n }\n\n const response = await fetch(\"https://api.pinata.cloud/pinning/pinJSONToIPFS\", {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${jwt}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ pinataContent: payload }),\n });\n if (!response.ok) {\n throw new Error(`Pinata pin failed: HTTP ${response.status}`);\n }\n const body = (await response.json()) as { IpfsHash?: string };\n if (!body.IpfsHash) {\n throw new Error(\"Pinata response missing IpfsHash\");\n }\n return `ipfs://${body.IpfsHash}`;\n}\n\nasync function sleep(ms: number): Promise<void> {\n await new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"verification.js","names":["Client","XrplClient","EventType","XRPL_VERIFY_REQUEST_EVENT","UserVerifyRequest","XRPL_VERIFY_ACCEPT_EVENT","UserVerifyAccept","XRPL_VERIFIED_EVENT","UserVerified","NFT_TRUST_TAG","XRPL_IDENTITY_ACCOUNT_DATA_TYPE","DEFAULT_XRPL_NETWORK","DEFAULT_XRPL_TESTNET_WS","DEFAULT_XRPL_MAINNET_WS","verificationConfig","configureXrplVerification","config","_objectSpread","requestVerification","_x","_requestVerification","apply","arguments","_asyncToGenerator","targetXrplAddress","matrixClient","xamanWallet","Error","issuerXrplAddress","getAddress","roomId","getVerificationRoomId","sendEvent","tx_hash","issuer_xrpl_address","target_xrpl_address","trust_model","txHash","credentialTypeHex","acceptVerification","_x2","_acceptVerification","signerAddress","identity","getIdentityAccountData","metadata","loadTrustMetadata","ipfsUri","currentVerifiers","Set","Array","isArray","verifiers","filter","value","Boolean","trim","map","add","updatedUri","pinTrustMetadata","from","signAndValidateOnXrpl","TransactionType","Account","NFTokenID","nftTokenId","URI","toHex","_ref","xrplClient","assertAccountOwnsToken","_x13","accepter_xrpl_address","nft_token_id","ipfs_uri","_x3","_x4","_signAndValidateOnXrpl","transaction","preflight","resolveXrplWebSocketUrl","connect","autofilled","autofill","hash","signAndSubmit","waitForValidation","disconnect","catch","undefined","_x5","_x6","_waitForValidation","attempt","_response$result","response","request","command","error","_data$error","_data","errorCode","data","sleep","result","validated","concat","_x7","_getVerificationRoomId","counterpartyXrplAddress","verificationRoomId","resolveVerificationRoomId","_verificationConfig$n","websocketUrl","network","input","bytes","TextEncoder","encode","toString","padStart","join","toUpperCase","_x8","_getIdentityAccountData","userId","getUserId","accessToken","getAccessToken","accountDataUrl","baseUrl","replace","encodeURIComponent","fetch","method","headers","ok","status","json","_x9","_x0","_x1","_assertAccountOwnsToken","account","tokenId","_response$result2","found","account_nfts","some","entry","_x10","_loadTrustMetadata","uri","startsWith","JSON","parse","_uri$split$","payload","decodeURIComponent","split","cidPath","_x11","_pinTrustMetadata","pinJsonToIpfs","jwt","pinataJwt","body","stringify","pinataContent","IpfsHash","_x12","_sleep","ms","Promise","resolve","setTimeout"],"sources":["../../src/xrpl/verification.ts"],"sourcesContent":["/*\nCopyright 2026 The Matrix.org Foundation C.I.C.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { Client as XrplClient, type SubmittableTransaction } from \"xrpl\";\n\nimport { EventType } from \"../@types/event.ts\";\nimport type { BriijClient } from \"../client.ts\";\nimport { type XamanWalletAdapter, type XrplIdentityAccountData } from \"./identity.ts\";\n\nexport const XRPL_VERIFY_REQUEST_EVENT: EventType.UserVerifyRequest = EventType.UserVerifyRequest;\nexport const XRPL_VERIFY_ACCEPT_EVENT: EventType.UserVerifyAccept = EventType.UserVerifyAccept;\nexport const XRPL_VERIFIED_EVENT: EventType.UserVerified = EventType.UserVerified;\n\nconst NFT_TRUST_TAG = \"nft_metadata\";\nconst XRPL_IDENTITY_ACCOUNT_DATA_TYPE = \"io.textrp.xrpl.identity_nft\";\n\nconst DEFAULT_XRPL_NETWORK = \"testnet\";\nconst DEFAULT_XRPL_TESTNET_WS = \"wss://s.altnet.rippletest.net:51233\";\nconst DEFAULT_XRPL_MAINNET_WS = \"wss://s1.ripple.com\";\n\nexport interface XrplVerificationConfig {\n matrixClient: Pick<BriijClient, \"sendEvent\" | \"getUserId\" | \"getAccessToken\"> & { baseUrl: string };\n xamanWallet: XamanWalletAdapter;\n verificationRoomId?: string;\n resolveVerificationRoomId?: (counterpartyXrplAddress: string) => Promise<string> | string;\n pinJsonToIpfs?: (payload: Record<string, unknown>) => Promise<string>;\n pinataJwt?: string;\n websocketUrl?: string;\n network?: \"mainnet\" | \"testnet\";\n}\n\nexport interface XrplVerificationTxResult {\n txHash: string;\n credentialTypeHex: string;\n}\n\nlet verificationConfig: Partial<XrplVerificationConfig> = {};\n\nexport function configureXrplVerification(config: Partial<XrplVerificationConfig>): void {\n verificationConfig = {\n ...verificationConfig,\n ...config,\n };\n}\n\nexport async function requestVerification(targetXrplAddress: string): Promise<XrplVerificationTxResult> {\n const { matrixClient, xamanWallet } = verificationConfig;\n if (!matrixClient || !xamanWallet) {\n throw new Error(\"XRPL verification is not configured with matrixClient and xamanWallet\");\n }\n\n const issuerXrplAddress = await xamanWallet.getAddress();\n const roomId = await getVerificationRoomId(targetXrplAddress);\n await matrixClient.sendEvent(roomId, XRPL_VERIFY_REQUEST_EVENT, {\n tx_hash: \"\",\n issuer_xrpl_address: issuerXrplAddress,\n target_xrpl_address: targetXrplAddress,\n trust_model: NFT_TRUST_TAG,\n });\n\n return {\n txHash: \"\",\n credentialTypeHex: NFT_TRUST_TAG,\n };\n}\n\nexport async function acceptVerification(issuerXrplAddress: string): Promise<XrplVerificationTxResult> {\n const { matrixClient, xamanWallet } = verificationConfig;\n if (!matrixClient || !xamanWallet) {\n throw new Error(\"XRPL verification is not configured with matrixClient and xamanWallet\");\n }\n\n const signerAddress = await xamanWallet.getAddress();\n const identity = await getIdentityAccountData(matrixClient);\n const metadata = await loadTrustMetadata(identity.ipfsUri);\n const currentVerifiers = new Set(\n Array.isArray(metadata.verifiers)\n ? metadata.verifiers\n .filter((value): value is string => typeof value === \"string\" && Boolean(value.trim()))\n .map((value) => value.trim())\n : [],\n );\n currentVerifiers.add(issuerXrplAddress);\n const updatedUri = await pinTrustMetadata({\n ...metadata,\n verifiers: Array.from(currentVerifiers),\n });\n\n const roomId = await getVerificationRoomId(issuerXrplAddress);\n const txHash = await signAndValidateOnXrpl(\n {\n TransactionType: \"NFTokenModify\",\n Account: signerAddress,\n NFTokenID: identity.nftTokenId,\n URI: toHex(updatedUri),\n },\n async (xrplClient) => {\n await assertAccountOwnsToken(xrplClient, signerAddress, identity.nftTokenId);\n },\n );\n\n await matrixClient.sendEvent(roomId, XRPL_VERIFY_ACCEPT_EVENT, {\n tx_hash: txHash,\n issuer_xrpl_address: issuerXrplAddress,\n accepter_xrpl_address: signerAddress,\n nft_token_id: identity.nftTokenId,\n ipfs_uri: updatedUri,\n trust_model: NFT_TRUST_TAG,\n });\n\n return {\n txHash,\n credentialTypeHex: NFT_TRUST_TAG,\n };\n}\n\nasync function signAndValidateOnXrpl(\n transaction: Record<string, unknown>,\n preflight?: (xrplClient: XrplClient) => Promise<void>,\n): Promise<string> {\n const { xamanWallet } = verificationConfig;\n if (!xamanWallet) {\n throw new Error(\"Missing Xaman wallet adapter\");\n }\n\n const xrplClient = new XrplClient(resolveXrplWebSocketUrl());\n await xrplClient.connect();\n\n try {\n if (preflight) {\n await preflight(xrplClient);\n }\n const autofilled = await xrplClient.autofill(transaction as unknown as SubmittableTransaction);\n const { hash: txHash } = await xamanWallet.signAndSubmit(autofilled as Record<string, unknown>);\n await waitForValidation(xrplClient, txHash);\n return txHash;\n } finally {\n await xrplClient.disconnect().catch(() => undefined);\n }\n}\n\nasync function waitForValidation(xrplClient: XrplClient, txHash: string): Promise<void> {\n for (let attempt = 0; attempt < 15; attempt += 1) {\n let response: { result?: { validated?: boolean } };\n try {\n response = (await xrplClient.request({\n command: \"tx\",\n transaction: txHash,\n })) as { result?: { validated?: boolean } };\n } catch (error) {\n const errorCode =\n error instanceof Error && \"data\" in error\n ? ((error as { data?: { error?: string } }).data?.error ?? (error as { error?: string }).error)\n : undefined;\n if (errorCode === \"txnNotFound\") {\n await sleep(1000);\n continue;\n }\n throw error;\n }\n\n if (response.result?.validated === true) return;\n await sleep(1000);\n }\n\n throw new Error(`Timed out waiting for XRPL tx validation: ${txHash}`);\n}\n\nasync function getVerificationRoomId(counterpartyXrplAddress: string): Promise<string> {\n if (verificationConfig.verificationRoomId) {\n return verificationConfig.verificationRoomId;\n }\n if (verificationConfig.resolveVerificationRoomId) {\n return await verificationConfig.resolveVerificationRoomId(counterpartyXrplAddress);\n }\n throw new Error(\"No verification room configured\");\n}\n\nfunction resolveXrplWebSocketUrl(): string {\n if (verificationConfig.websocketUrl) return verificationConfig.websocketUrl;\n const network = verificationConfig.network ?? DEFAULT_XRPL_NETWORK;\n return network === \"mainnet\" ? DEFAULT_XRPL_MAINNET_WS : DEFAULT_XRPL_TESTNET_WS;\n}\n\nfunction toHex(input: string | Uint8Array): string {\n const bytes = typeof input === \"string\" ? new TextEncoder().encode(input) : input;\n return Array.from(bytes)\n .map((value) => value.toString(16).padStart(2, \"0\"))\n .join(\"\")\n .toUpperCase();\n}\n\nasync function getIdentityAccountData(\n matrixClient: Pick<BriijClient, \"getUserId\" | \"getAccessToken\"> & { baseUrl: string },\n): Promise<XrplIdentityAccountData> {\n const userId = matrixClient.getUserId();\n const accessToken = matrixClient.getAccessToken();\n if (!userId || !accessToken) {\n throw new Error(\"Missing Matrix session for XRPL verification\");\n }\n\n const accountDataUrl =\n `${matrixClient.baseUrl.replace(/\\/+$/, \"\")}` +\n `/_matrix/client/v3/user/${encodeURIComponent(userId)}/account_data/${encodeURIComponent(XRPL_IDENTITY_ACCOUNT_DATA_TYPE)}`;\n const response = await fetch(accountDataUrl, {\n method: \"GET\",\n headers: {\n \"Authorization\": `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n });\n if (!response.ok) {\n throw new Error(`Unable to fetch identity NFT account_data: HTTP ${response.status}`);\n }\n return (await response.json()) as XrplIdentityAccountData;\n}\n\nasync function assertAccountOwnsToken(xrplClient: XrplClient, account: string, tokenId: string): Promise<void> {\n const response = await xrplClient.request({\n command: \"account_nfts\",\n account,\n });\n const found = response.result?.account_nfts?.some((entry: { NFTokenID?: string }) => entry.NFTokenID === tokenId);\n if (!found) {\n throw new Error(`Identity NFT ${tokenId} not found on account ${account}`);\n }\n}\n\nasync function loadTrustMetadata(uri: string): Promise<Record<string, unknown>> {\n if (!uri) return {};\n if (uri.startsWith(\"{\")) {\n return JSON.parse(uri) as Record<string, unknown>;\n }\n\n if (uri.startsWith(\"data:application/json,\")) {\n const payload = decodeURIComponent(uri.split(\",\", 2)[1] ?? \"{}\");\n return JSON.parse(payload) as Record<string, unknown>;\n }\n\n if (uri.startsWith(\"ipfs://\")) {\n const cidPath = uri.replace(\"ipfs://\", \"\");\n const response = await fetch(`https://ipfs.io/ipfs/${cidPath}`);\n if (!response.ok) {\n throw new Error(`Failed to fetch IPFS metadata: HTTP ${response.status}`);\n }\n return (await response.json()) as Record<string, unknown>;\n }\n\n return {};\n}\n\nasync function pinTrustMetadata(payload: Record<string, unknown>): Promise<string> {\n if (verificationConfig.pinJsonToIpfs) {\n return await verificationConfig.pinJsonToIpfs(payload);\n }\n\n const jwt = verificationConfig.pinataJwt;\n if (!jwt) {\n throw new Error(\"Set pinJsonToIpfs or pinataJwt before acceptVerification()\");\n }\n\n const response = await fetch(\"https://api.pinata.cloud/pinning/pinJSONToIPFS\", {\n method: \"POST\",\n headers: {\n \"Authorization\": `Bearer ${jwt}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ pinataContent: payload }),\n });\n if (!response.ok) {\n throw new Error(`Pinata pin failed: HTTP ${response.status}`);\n }\n const body = (await response.json()) as { IpfsHash?: string };\n if (!body.IpfsHash) {\n throw new Error(\"Pinata response missing IpfsHash\");\n }\n return `ipfs://${body.IpfsHash}`;\n}\n\nasync function sleep(ms: number): Promise<void> {\n await new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,130 +1,128 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
"
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
"packageManager": "pnpm@10.30.3+sha512.c961d1e0a2d8e354ecaa5166b822516668b7f44cb5bd95122d590dd81922f606f5473b6d23ec4a5be05e7fcd18e8488d47d978bbe981872f1145d06e9a740017"
|
|
130
|
-
}
|
|
2
|
+
"name": "@textrp/briij-js-sdk",
|
|
3
|
+
"version": "43.1.1",
|
|
4
|
+
"description": "Briij Client-Server SDK for JavaScript and TypeScript",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": ">=22.0.0"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/xurgedigitallab/briij-js-sdk.git"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"briij"
|
|
14
|
+
],
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "./lib/index.js",
|
|
17
|
+
"browser": "./lib/browser-index.js",
|
|
18
|
+
"typings": "./lib/index.d.ts",
|
|
19
|
+
"author": "textrp",
|
|
20
|
+
"license": "Apache-2.0",
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"registry": "https://registry.npmjs.org",
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"lib",
|
|
27
|
+
"src",
|
|
28
|
+
"git-revision.txt",
|
|
29
|
+
"CHANGELOG.md",
|
|
30
|
+
"CONTRIBUTING.rst",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"README.md",
|
|
33
|
+
"package.json",
|
|
34
|
+
"release.sh"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@babel/runtime": "^7.12.5",
|
|
38
|
+
"@matrix-org/matrix-sdk-crypto-wasm": "^17.1.0",
|
|
39
|
+
"another-json": "^0.2.0",
|
|
40
|
+
"bs58": "^6.0.0",
|
|
41
|
+
"content-type": "^1.0.4",
|
|
42
|
+
"jwt-decode": "^4.0.0",
|
|
43
|
+
"loglevel": "^1.9.2",
|
|
44
|
+
"matrix-events-sdk": "0.0.1",
|
|
45
|
+
"matrix-widget-api": "^1.16.1",
|
|
46
|
+
"oidc-client-ts": "^3.0.1",
|
|
47
|
+
"p-retry": "7",
|
|
48
|
+
"sdp-transform": "^3.0.0",
|
|
49
|
+
"unhomoglyph": "^1.0.6",
|
|
50
|
+
"uuid": "13",
|
|
51
|
+
"xrpl": "^4.6.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@action-validator/cli": "^0.6.0",
|
|
55
|
+
"@action-validator/core": "^0.6.0",
|
|
56
|
+
"@babel/cli": "^7.12.10",
|
|
57
|
+
"@babel/core": "^7.12.10",
|
|
58
|
+
"@babel/eslint-parser": "^7.12.10",
|
|
59
|
+
"@babel/eslint-plugin": "^7.12.10",
|
|
60
|
+
"@babel/plugin-proposal-decorators": "^7.25.9",
|
|
61
|
+
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
|
62
|
+
"@babel/plugin-transform-class-properties": "^7.12.1",
|
|
63
|
+
"@babel/plugin-transform-numeric-separator": "^7.12.7",
|
|
64
|
+
"@babel/plugin-transform-object-rest-spread": "^7.12.1",
|
|
65
|
+
"@babel/plugin-transform-runtime": "^7.12.10",
|
|
66
|
+
"@babel/preset-env": "^7.12.11",
|
|
67
|
+
"@babel/preset-typescript": "^7.12.7",
|
|
68
|
+
"@fetch-mock/vitest": "^0.2.18",
|
|
69
|
+
"@matrix-org/olm": "3.2.15",
|
|
70
|
+
"@peculiar/webcrypto": "^1.4.5",
|
|
71
|
+
"@stylistic/eslint-plugin": "^5.0.0",
|
|
72
|
+
"@types/content-type": "^1.1.5",
|
|
73
|
+
"@types/debug": "^4.1.7",
|
|
74
|
+
"@types/node": "22",
|
|
75
|
+
"@types/sdp-transform": "^2.4.5",
|
|
76
|
+
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
77
|
+
"@typescript-eslint/parser": "^8.0.0",
|
|
78
|
+
"@vitest/coverage-v8": "^4.0.17",
|
|
79
|
+
"@vitest/eslint-plugin": "^1.6.6",
|
|
80
|
+
"@vitest/ui": "^4.0.17",
|
|
81
|
+
"babel-plugin-search-and-replace": "^1.1.1",
|
|
82
|
+
"debug": "^4.3.4",
|
|
83
|
+
"eslint": "^9.0.0",
|
|
84
|
+
"eslint-config-google": "^0.14.0",
|
|
85
|
+
"eslint-config-prettier": "^10.0.0",
|
|
86
|
+
"eslint-import-resolver-typescript": "^4.0.0",
|
|
87
|
+
"eslint-plugin-import": "^2.26.0",
|
|
88
|
+
"eslint-plugin-jsdoc": "^62.0.0",
|
|
89
|
+
"eslint-plugin-matrix-org": "^3.0.0",
|
|
90
|
+
"eslint-plugin-n": "^14.0.0",
|
|
91
|
+
"eslint-plugin-tsdoc": "^0.5.0",
|
|
92
|
+
"eslint-plugin-unicorn": "^56.0.0",
|
|
93
|
+
"fake-indexeddb": "^5.0.2",
|
|
94
|
+
"fetch-mock": "^12.6.0",
|
|
95
|
+
"happy-dom": "^20.1.0",
|
|
96
|
+
"husky": "^9.0.0",
|
|
97
|
+
"knip": "^5.0.0",
|
|
98
|
+
"lint-staged": "^16.0.0",
|
|
99
|
+
"matrix-mock-request": "^2.5.0",
|
|
100
|
+
"prettier": "3.8.1",
|
|
101
|
+
"typedoc": "^0.28.1",
|
|
102
|
+
"typedoc-plugin-coverage": "^4.0.0",
|
|
103
|
+
"typedoc-plugin-mdn-links": "^5.0.0",
|
|
104
|
+
"typedoc-plugin-missing-exports": "^4.0.0",
|
|
105
|
+
"typescript": "^5.4.2",
|
|
106
|
+
"vitest": "^4.0.17",
|
|
107
|
+
"vitest-sonar-reporter": "^3.0.0"
|
|
108
|
+
},
|
|
109
|
+
"resolutions": {
|
|
110
|
+
"expect": "30.2.0"
|
|
111
|
+
},
|
|
112
|
+
"scripts": {
|
|
113
|
+
"start": "echo THIS IS FOR LEGACY PURPOSES ONLY. && babel --delete-dir-on-start src -w -s -d lib --verbose --extensions \".ts,.js\"",
|
|
114
|
+
"build": "pnpm build:compile && pnpm build:types",
|
|
115
|
+
"build:types": "tsc -p tsconfig-build.json --emitDeclarationOnly",
|
|
116
|
+
"build:compile": "babel --delete-dir-on-start -d lib --verbose --extensions \".ts,.js\" src",
|
|
117
|
+
"gendoc": "typedoc",
|
|
118
|
+
"lint": "pnpm lint:types && pnpm lint:js && pnpm lint:workflows",
|
|
119
|
+
"lint:js": "eslint --max-warnings 0 src spec && prettier --check .",
|
|
120
|
+
"lint:js-fix": "prettier --log-level=warn --write . && eslint --fix src spec",
|
|
121
|
+
"lint:types": "tsc --noEmit",
|
|
122
|
+
"lint:workflows": "find .github/workflows -type f \\( -iname '*.yaml' -o -iname '*.yml' \\) | xargs -I {} sh -c 'echo \"Linting {}\"; action-validator \"{}\"'",
|
|
123
|
+
"lint:knip": "knip",
|
|
124
|
+
"test": "vitest",
|
|
125
|
+
"test:watch": "vitest --watch",
|
|
126
|
+
"coverage": "pnpm test --coverage"
|
|
127
|
+
}
|
|
128
|
+
}
|
package/src/@types/auth.ts
CHANGED
|
@@ -41,6 +41,8 @@ export interface ILoginFlowsResponse {
|
|
|
41
41
|
export const XRPL_WALLET_LOGIN_TYPE = "io.briij.login.xrpl";
|
|
42
42
|
export const WALLET_E2EE_RECOVERY_ACCOUNT_DATA_TYPE = "org.textrp.wallet.e2ee_recovery.v1";
|
|
43
43
|
export const WALLET_IDENTITY_ACCOUNT_DATA_TYPE = "org.textrp.wallet.identity";
|
|
44
|
+
export type KnownXrplAlgorithm = "secp256k1" | "ed25519";
|
|
45
|
+
export type XrplAlgorithm = KnownXrplAlgorithm | (string & { __brand?: "XrplAlgorithm" });
|
|
44
46
|
|
|
45
47
|
export type LoginFlow = ISSOFlow | IPasswordFlow | IXrplWalletLoginFlow | ILoginFlow;
|
|
46
48
|
|
|
@@ -213,7 +215,7 @@ export interface XrplWalletChallengePayload {
|
|
|
213
215
|
timestamp: number | string;
|
|
214
216
|
message: string;
|
|
215
217
|
public_key: string;
|
|
216
|
-
algorithm?:
|
|
218
|
+
algorithm?: XrplAlgorithm;
|
|
217
219
|
}
|
|
218
220
|
|
|
219
221
|
export interface XrplAuthChallengeRequest extends Omit<LoginRequest, "type"> {
|
|
@@ -250,10 +252,7 @@ export interface WalletRecoveryWrap {
|
|
|
250
252
|
params?: Record<string, unknown>;
|
|
251
253
|
}
|
|
252
254
|
|
|
253
|
-
export interface WalletRecoveryPasswordWrap extends WalletRecoveryWrap {
|
|
254
|
-
kdf: string;
|
|
255
|
-
params?: Record<string, unknown>;
|
|
256
|
-
}
|
|
255
|
+
export interface WalletRecoveryPasswordWrap extends WalletRecoveryWrap {}
|
|
257
256
|
|
|
258
257
|
export interface WalletE2eeRecoveryEnvelope {
|
|
259
258
|
envelope_version: number;
|
|
@@ -268,14 +267,14 @@ export interface WalletE2eeRecoveryEnvelope {
|
|
|
268
267
|
export interface WalletIdentityAccountData {
|
|
269
268
|
chain_id: string;
|
|
270
269
|
account_id: string;
|
|
271
|
-
public_key
|
|
270
|
+
public_key?: string | null;
|
|
272
271
|
network?: string | null;
|
|
273
272
|
key_type?: string | null;
|
|
274
273
|
}
|
|
275
274
|
|
|
276
275
|
export interface XrplWalletLoginRequest extends Omit<LoginRequest, "type"> {
|
|
277
276
|
type: typeof XRPL_WALLET_LOGIN_TYPE;
|
|
278
|
-
|
|
277
|
+
address: string;
|
|
279
278
|
signature: string;
|
|
280
279
|
challenge: string | XrplWalletChallengePayload;
|
|
281
280
|
network?: string;
|