@xrpl-wallet-kit/adapter-crossmark 0.1.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 +64 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +126 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# @xrpl-wallet-kit/adapter-crossmark
|
|
2
|
+
|
|
3
|
+
Crossmark adapter for XRPL Wallet Kit.
|
|
4
|
+
|
|
5
|
+
Crossmark is an XRPL browser extension wallet. This adapter wraps `@crossmarkio/sdk` and maps Crossmark connection, message signing, and transaction methods into the XRPL Wallet Kit adapter contract.
|
|
6
|
+
|
|
7
|
+
## Capabilities
|
|
8
|
+
|
|
9
|
+
- `connect`
|
|
10
|
+
- `signMessage`
|
|
11
|
+
- `signAndSubmit`
|
|
12
|
+
- `payments`
|
|
13
|
+
- `nftOffers`
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @xrpl-wallet-kit/adapter-crossmark
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```ts
|
|
24
|
+
import { createWalletKit } from "@xrpl-wallet-kit/client";
|
|
25
|
+
import { createCrossmarkAdapter } from "@xrpl-wallet-kit/adapter-crossmark";
|
|
26
|
+
|
|
27
|
+
const kit = createWalletKit({
|
|
28
|
+
adapters: [createCrossmarkAdapter()]
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
When using `@xrpl-wallet-kit/client` defaults, Crossmark is already included.
|
|
33
|
+
|
|
34
|
+
## Runtime Notes
|
|
35
|
+
|
|
36
|
+
- Requires the Crossmark browser extension.
|
|
37
|
+
- Availability checks require the SDK install signal and `signInAndWait`.
|
|
38
|
+
- `connect()` uses Crossmark sign-in and returns the selected XRPL account.
|
|
39
|
+
- `restoreSession()` is passive-only. It reads the current SDK address from `sync.getAddress()` or the SDK session snapshot and restores only when it matches the stored session address.
|
|
40
|
+
- `restoreSession()` never calls `signInAndWait()` because sign-in opens an interactive wallet flow.
|
|
41
|
+
- `signAndSubmit()` chooses the Crossmark method by `methodHint` and normalizes transaction results with `normalizeTxResult()`.
|
|
42
|
+
- Provider-specific errors should still surface as rejected/canceled/timeout messages so the UI can recover cleanly.
|
|
43
|
+
|
|
44
|
+
## Auto Reconnect
|
|
45
|
+
|
|
46
|
+
Crossmark restore uses SDK state that is already available after reload. The adapter first checks `sync.getAddress()`, then falls back to the SDK session snapshot address. If neither address exists, or the address differs from the stored session, restore returns `null`.
|
|
47
|
+
|
|
48
|
+
This keeps Crossmark aligned with the core adapter contract: core manages storage and events, while the adapter proves whether the current wallet provider still owns the stored account. Interactive sign-in remains part of `connect()`, not `restoreSession()`.
|
|
49
|
+
|
|
50
|
+
## Testing
|
|
51
|
+
|
|
52
|
+
Pass a mock provider for isolated tests:
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { assertWalletAdapter } from "@xrpl-wallet-kit/core";
|
|
56
|
+
import { createCrossmarkAdapter } from "@xrpl-wallet-kit/adapter-crossmark";
|
|
57
|
+
|
|
58
|
+
assertWalletAdapter(createCrossmarkAdapter({ provider: mockCrossmark }));
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Links
|
|
62
|
+
|
|
63
|
+
- Crossmark: https://crossmark.io
|
|
64
|
+
- XRPL Wallet Kit: https://github.com/XRPDomains/xrpl-wallet-kit
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { BaseWalletAdapter } from "@xrpl-wallet-kit/core";
|
|
2
|
+
import type { ConnectOptions, SignAndSubmitRequest, SignMessageRequest, WalletCapabilities, WalletMetadata, WalletSession } from "@xrpl-wallet-kit/core";
|
|
3
|
+
export declare const CROSSMARK_ICON = "data:image/png;base64,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";
|
|
4
|
+
export interface CrossmarkProvider {
|
|
5
|
+
sync?: {
|
|
6
|
+
isInstalled(): boolean | undefined;
|
|
7
|
+
isConnected?: () => boolean | undefined;
|
|
8
|
+
getAddress?: () => string | undefined;
|
|
9
|
+
getNetwork?: () => unknown;
|
|
10
|
+
};
|
|
11
|
+
session?: {
|
|
12
|
+
address?: string;
|
|
13
|
+
};
|
|
14
|
+
methods?: {
|
|
15
|
+
signInAndWait?: (hex?: string) => Promise<{
|
|
16
|
+
response?: {
|
|
17
|
+
data?: unknown;
|
|
18
|
+
} | null;
|
|
19
|
+
} | null>;
|
|
20
|
+
signAndSubmitAndWait?: (tx: unknown) => Promise<unknown>;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface CrossmarkAdapterOptions {
|
|
24
|
+
provider?: CrossmarkProvider;
|
|
25
|
+
}
|
|
26
|
+
export declare class CrossmarkAdapter extends BaseWalletAdapter {
|
|
27
|
+
private options;
|
|
28
|
+
metadata: WalletMetadata;
|
|
29
|
+
capabilities: WalletCapabilities;
|
|
30
|
+
constructor(options?: CrossmarkAdapterOptions);
|
|
31
|
+
isAvailable(): boolean;
|
|
32
|
+
connect(options: ConnectOptions): Promise<{
|
|
33
|
+
account: {
|
|
34
|
+
address: string;
|
|
35
|
+
publicKey: string | undefined;
|
|
36
|
+
network: import("@xrpl-wallet-kit/core").WalletNetwork | undefined;
|
|
37
|
+
networkType: "MAINNET" | "TESTNET" | "DEVNET" | "CUSTOM" | undefined;
|
|
38
|
+
};
|
|
39
|
+
raw: {
|
|
40
|
+
response?: {
|
|
41
|
+
data?: unknown;
|
|
42
|
+
} | null;
|
|
43
|
+
} | null;
|
|
44
|
+
}>;
|
|
45
|
+
restoreSession(session: WalletSession): Promise<{
|
|
46
|
+
account: {
|
|
47
|
+
address: string;
|
|
48
|
+
publicKey?: string;
|
|
49
|
+
network?: import("@xrpl-wallet-kit/core").WalletNetwork;
|
|
50
|
+
networkType?: string;
|
|
51
|
+
activationStatus?: "active" | "unfunded" | "unknown";
|
|
52
|
+
};
|
|
53
|
+
session: {
|
|
54
|
+
account: {
|
|
55
|
+
address: string;
|
|
56
|
+
publicKey?: string;
|
|
57
|
+
network?: import("@xrpl-wallet-kit/core").WalletNetwork;
|
|
58
|
+
networkType?: string;
|
|
59
|
+
activationStatus?: "active" | "unfunded" | "unknown";
|
|
60
|
+
};
|
|
61
|
+
adapterId: string;
|
|
62
|
+
wallet?: WalletMetadata;
|
|
63
|
+
connectedAt: number;
|
|
64
|
+
expiresAt?: number;
|
|
65
|
+
balance?: import("@xrpl-wallet-kit/core").WalletSessionBalance;
|
|
66
|
+
metadata?: Record<string, unknown>;
|
|
67
|
+
};
|
|
68
|
+
raw: {
|
|
69
|
+
address: string;
|
|
70
|
+
network: unknown;
|
|
71
|
+
};
|
|
72
|
+
} | null>;
|
|
73
|
+
signMessage(request: SignMessageRequest): Promise<{
|
|
74
|
+
signatureKind: "signature";
|
|
75
|
+
proof: string;
|
|
76
|
+
signature: string;
|
|
77
|
+
publicKey: string | undefined;
|
|
78
|
+
raw: {
|
|
79
|
+
response?: {
|
|
80
|
+
data?: unknown;
|
|
81
|
+
} | null;
|
|
82
|
+
} | null;
|
|
83
|
+
}>;
|
|
84
|
+
signAndSubmit(request: SignAndSubmitRequest): Promise<import("@xrpl-wallet-kit/core").TxResult>;
|
|
85
|
+
private getProvider;
|
|
86
|
+
private hasInjectedProvider;
|
|
87
|
+
private requireMethod;
|
|
88
|
+
private resolvePassiveAddress;
|
|
89
|
+
private resolvePassiveNetwork;
|
|
90
|
+
private randomHex;
|
|
91
|
+
private pickString;
|
|
92
|
+
}
|
|
93
|
+
export declare function createCrossmarkAdapter(options?: CrossmarkAdapterOptions): CrossmarkAdapter;
|
|
94
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA6D,MAAM,uBAAuB,CAAC;AACrH,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEzJ,eAAO,MAAM,cAAc,+gWAA+gW,CAAC;AAE3iW,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE;QACL,WAAW,IAAI,OAAO,GAAG,SAAS,CAAC;QACnC,WAAW,CAAC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC;QACxC,UAAU,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;QACtC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;KAC5B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,QAAQ,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,OAAO,CAAA;aAAE,GAAG,IAAI,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;QAC3F,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAC1D,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAKD,qBAAa,gBAAiB,SAAQ,iBAAiB;IAIzC,OAAO,CAAC,OAAO;IAH3B,QAAQ,EAAE,cAAc,CAAwG;IAChI,YAAY,EAAE,kBAAkB,CAA8F;gBAE1G,OAAO,GAAE,uBAA4B;IAEzD,WAAW,IAAI,OAAO;IAKhB,OAAO,CAAC,OAAO,EAAE,cAAc;;;;;;;;uBAvBoB;gBAAE,IAAI,CAAC,EAAE,OAAO,CAAA;aAAE,GAAG,IAAI;;;IAgC5E,cAAc,CAAC,OAAO,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAYrC,WAAW,CAAC,OAAO,EAAE,kBAAkB;;;;;;uBA5CY;gBAAE,IAAI,CAAC,EAAE,OAAO,CAAA;aAAE,GAAG,IAAI;;;IA8E5E,aAAa,CAAC,OAAO,EAAE,oBAAoB;IAKjD,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,UAAU;CAInB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,uBAAuB,oBAA2C"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import CrossmarkSdk from "@crossmarkio/sdk";
|
|
2
|
+
import { BaseWalletAdapter, createWalletError, normalizeTxResult, pickPath, utf8ToHex } from "@xrpl-wallet-kit/core";
|
|
3
|
+
export const CROSSMARK_ICON = "data:image/png;base64,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";
|
|
4
|
+
export class CrossmarkAdapter extends BaseWalletAdapter {
|
|
5
|
+
constructor(options = {}) {
|
|
6
|
+
super();
|
|
7
|
+
this.options = options;
|
|
8
|
+
this.metadata = { id: "crossmark", name: "Crossmark", type: "extension", group: "Extensions", icon: CROSSMARK_ICON };
|
|
9
|
+
this.capabilities = { connect: true, signMessage: true, signAndSubmit: true, nftOffers: true, payments: true };
|
|
10
|
+
}
|
|
11
|
+
isAvailable() {
|
|
12
|
+
const provider = this.getProvider(false);
|
|
13
|
+
return Boolean(provider?.sync?.isInstalled?.() && provider.methods?.signInAndWait);
|
|
14
|
+
}
|
|
15
|
+
async connect(options) {
|
|
16
|
+
const signInAndWait = this.requireMethod("signInAndWait");
|
|
17
|
+
const result = await signInAndWait(this.randomHex());
|
|
18
|
+
const address = this.pickString(result, ["response.data.address", "response.address", "address"]);
|
|
19
|
+
if (!address)
|
|
20
|
+
throw new Error("Crossmark did not return an XRPL address");
|
|
21
|
+
const publicKey = this.pickString(result, ["response.data.publicKey", "response.data.public_key", "response.publicKey", "publicKey"]);
|
|
22
|
+
return { account: { address, publicKey, network: options.network, networkType: options.network?.networkType }, raw: result };
|
|
23
|
+
}
|
|
24
|
+
async restoreSession(session) {
|
|
25
|
+
if (!await this.waitForAvailability(this.hasInjectedProvider() ? 0 : 2500))
|
|
26
|
+
return null;
|
|
27
|
+
const provider = this.getProvider(false);
|
|
28
|
+
const address = this.resolvePassiveAddress(provider);
|
|
29
|
+
if (!address || address !== session.account.address)
|
|
30
|
+
return null;
|
|
31
|
+
return {
|
|
32
|
+
account: { ...session.account, address },
|
|
33
|
+
session: { ...session, account: { ...session.account, address } },
|
|
34
|
+
raw: { address, network: this.resolvePassiveNetwork(provider) }
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async signMessage(request) {
|
|
38
|
+
const signInAndWait = this.requireMethod("signInAndWait");
|
|
39
|
+
const result = await signInAndWait(utf8ToHex(request.message));
|
|
40
|
+
const signature = this.pickString(result, [
|
|
41
|
+
"response.data.signature",
|
|
42
|
+
"response.data.signedMessage",
|
|
43
|
+
"response.data.signed_message",
|
|
44
|
+
"response.data.resp.signature",
|
|
45
|
+
"response.data.resp.signedMessage",
|
|
46
|
+
"response.signature",
|
|
47
|
+
"response.signedMessage",
|
|
48
|
+
"signature",
|
|
49
|
+
"signedMessage"
|
|
50
|
+
]);
|
|
51
|
+
if (typeof signature !== "string" || !signature)
|
|
52
|
+
throw createWalletError.signRejected(result);
|
|
53
|
+
const publicKey = this.pickString(result, [
|
|
54
|
+
"response.data.publicKey",
|
|
55
|
+
"response.data.public_key",
|
|
56
|
+
"response.data.resp.publicKey",
|
|
57
|
+
"response.data.resp.public_key",
|
|
58
|
+
"response.publicKey",
|
|
59
|
+
"response.public_key",
|
|
60
|
+
"publicKey",
|
|
61
|
+
"public_key"
|
|
62
|
+
]);
|
|
63
|
+
return {
|
|
64
|
+
signatureKind: "signature",
|
|
65
|
+
proof: signature,
|
|
66
|
+
signature,
|
|
67
|
+
publicKey: publicKey ?? request.account?.publicKey,
|
|
68
|
+
raw: result
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async signAndSubmit(request) {
|
|
72
|
+
const signAndSubmitAndWait = this.requireMethod("signAndSubmitAndWait");
|
|
73
|
+
return normalizeTxResult(await signAndSubmitAndWait(request.txJson));
|
|
74
|
+
}
|
|
75
|
+
getProvider(required = true) {
|
|
76
|
+
const provider = this.options.provider ?? CrossmarkSdk;
|
|
77
|
+
if (!provider && required)
|
|
78
|
+
throw new Error("Please install Crossmark Extension");
|
|
79
|
+
return provider;
|
|
80
|
+
}
|
|
81
|
+
hasInjectedProvider() {
|
|
82
|
+
return Object.prototype.hasOwnProperty.call(this.options, "provider");
|
|
83
|
+
}
|
|
84
|
+
requireMethod(method) {
|
|
85
|
+
const provider = this.getProvider();
|
|
86
|
+
const handler = provider?.methods?.[method];
|
|
87
|
+
if (typeof handler !== "function")
|
|
88
|
+
throw new Error(`Crossmark provider is missing ${String(method)}()`);
|
|
89
|
+
return handler;
|
|
90
|
+
}
|
|
91
|
+
resolvePassiveAddress(provider) {
|
|
92
|
+
try {
|
|
93
|
+
const address = provider?.sync?.getAddress?.();
|
|
94
|
+
if (address)
|
|
95
|
+
return address;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// Fall back to the SDK session snapshot below.
|
|
99
|
+
}
|
|
100
|
+
return provider?.session?.address;
|
|
101
|
+
}
|
|
102
|
+
resolvePassiveNetwork(provider) {
|
|
103
|
+
try {
|
|
104
|
+
return provider?.sync?.getNetwork?.();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
randomHex() {
|
|
111
|
+
const bytes = new Uint8Array(32);
|
|
112
|
+
if (globalThis.crypto?.getRandomValues) {
|
|
113
|
+
globalThis.crypto.getRandomValues(bytes);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
for (let index = 0; index < bytes.length; index += 1)
|
|
117
|
+
bytes[index] = Math.floor(Math.random() * 256);
|
|
118
|
+
}
|
|
119
|
+
return [...bytes].map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
120
|
+
}
|
|
121
|
+
pickString(source, paths) {
|
|
122
|
+
const value = pickPath(source, paths);
|
|
123
|
+
return typeof value === "string" && value.trim() ? value : undefined;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function createCrossmarkAdapter(options) { return new CrossmarkAdapter(options); }
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xrpl-wallet-kit/adapter-crossmark",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Crossmark adapter for XRPL Wallet Kit.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc -p tsconfig.json"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@crossmarkio/sdk": "^0.4.0",
|
|
24
|
+
"@xrpl-wallet-kit/core": "0.1.0"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/XRPDomains/xrpl-wallet-kit.git"
|
|
32
|
+
},
|
|
33
|
+
"homepage": "https://github.com/XRPDomains/xrpl-wallet-kit#readme",
|
|
34
|
+
"bugs": {
|
|
35
|
+
"url": "https://github.com/XRPDomains/xrpl-wallet-kit/issues"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"xrpl",
|
|
39
|
+
"wallet",
|
|
40
|
+
"wallet-adapter",
|
|
41
|
+
"wallet-kit",
|
|
42
|
+
"xrp-ledger",
|
|
43
|
+
"web3",
|
|
44
|
+
"adapter"
|
|
45
|
+
]
|
|
46
|
+
}
|