@vela-ventures/aosync-sdk-react 1.0.0 → 1.0.3

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 ADDED
@@ -0,0 +1,37 @@
1
+ # aosync-react-sdk
2
+
3
+ A simple react implementation of the ao-sync protocol.
4
+
5
+ ## Usage
6
+
7
+ ```js
8
+ import { AOSyncProvider, useWallet } from "@vela-ventures/aosync-react-sdk";
9
+
10
+ function WalletView() {
11
+ const wallet = useWallet();
12
+ const [address, setAddress] = useAddress<string>()
13
+
14
+ useEffect(() => {
15
+ setAddress(wallet.getAddress())
16
+ }, [wallet.isConnected])
17
+
18
+ if (wallet.isConnected) {
19
+ return(
20
+ <>
21
+ <h1>Connected to: {address}</h1>
22
+ <Button onClick={wallet.disconnect}>Disconnect Wallet</Button>
23
+ </>
24
+ )
25
+ }
26
+
27
+ return <Button onClick={wallet.connect}>Connect Wallet</Button>
28
+ }
29
+
30
+ function App() {
31
+ return (
32
+ <AOSyncProvider arweaveHost='arweave.net' muUrl='https://mu.ao-testnet.xyz'>
33
+ <WalletView />
34
+ </AOSyncProvider>
35
+ );
36
+ }
37
+ ```
package/dist/index.d.ts CHANGED
@@ -1 +1 @@
1
- export { useWallet } from "./useWallet";
1
+ export { WalletProvider, useWallet } from "./walletProvider";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { useWallet } from "./useWallet";
1
+ export { WalletProvider, useWallet } from "./walletProvider";
@@ -1,13 +0,0 @@
1
- import Transaction from "arweave/web/lib/transaction";
2
- interface UseAOWalletReturn {
3
- isConnected: boolean;
4
- connect: () => Promise<void>;
5
- disconnect: () => Promise<void>;
6
- getAllAddresses: () => Promise<string[]>;
7
- getAddress: () => Promise<string | undefined>;
8
- sendAR: (recipient: string, quantity: string) => Promise<any>;
9
- signAOMessage: (target: string, recipient: string, quantity: string) => Promise<any>;
10
- sign: (transaction: Transaction) => Promise<Transaction>;
11
- }
12
- export declare const useWallet: () => UseAOWalletReturn;
13
- export {};
package/dist/useWallet.js CHANGED
@@ -1,136 +1 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { useEffect, useRef, useState } from "react";
11
- import WalletClient from "@vela-ventures/ao-sync-sdk";
12
- import Arweave from "arweave";
13
- export const useWallet = () => {
14
- const [isConnected, setIsConnected] = useState(false);
15
- const walletRef = useRef(new WalletClient());
16
- useEffect(() => {
17
- const wallet = walletRef.current;
18
- wallet.reconnect();
19
- const handleDisconnect = () => setIsConnected(false);
20
- const handleConnect = () => setIsConnected(true);
21
- wallet.on("disconnected", handleDisconnect);
22
- wallet.on("connected", handleConnect);
23
- return () => {
24
- wallet.off("disconnected", handleDisconnect);
25
- wallet.off("connected", handleConnect);
26
- };
27
- }, []);
28
- const connect = () => __awaiter(void 0, void 0, void 0, function* () {
29
- try {
30
- yield walletRef.current.connect({});
31
- }
32
- catch (error) {
33
- console.error("Error connecting wallet:", error);
34
- throw error;
35
- }
36
- });
37
- const disconnect = () => __awaiter(void 0, void 0, void 0, function* () {
38
- try {
39
- yield walletRef.current.disconnect();
40
- setIsConnected(false);
41
- }
42
- catch (error) {
43
- console.error("Error disconnecting wallet:", error);
44
- throw error;
45
- }
46
- });
47
- const getAddress = () => __awaiter(void 0, void 0, void 0, function* () {
48
- try {
49
- return yield walletRef.current.getActiveAddress();
50
- }
51
- catch (error) {
52
- console.error("Error getting address:", error);
53
- throw error;
54
- }
55
- });
56
- const getAllAddresses = () => __awaiter(void 0, void 0, void 0, function* () {
57
- try {
58
- return yield walletRef.current.getAllAddresses();
59
- }
60
- catch (error) {
61
- console.error("Error getting address:", error);
62
- throw error;
63
- }
64
- });
65
- const sendAR = (recipient, quantity) => __awaiter(void 0, void 0, void 0, function* () {
66
- try {
67
- const arweave = Arweave.init({
68
- host: "arweave.net",
69
- port: 443,
70
- protocol: "https",
71
- });
72
- const tx = yield arweave.createTransaction({
73
- target: recipient,
74
- quantity: quantity,
75
- });
76
- const signedTx = yield walletRef.current.sign(tx);
77
- return yield arweave.transactions.post(signedTx);
78
- }
79
- catch (error) {
80
- console.error("Error sending AR:", error);
81
- throw error;
82
- }
83
- });
84
- const signAOMessage = (target, recipient, quantity) => __awaiter(void 0, void 0, void 0, function* () {
85
- try {
86
- const dataItem = {
87
- data: "",
88
- target,
89
- tags: [
90
- { name: "Action", value: "Transfer" },
91
- { name: "Recipient", value: recipient },
92
- { name: "Quantity", value: quantity },
93
- { name: "SDK", value: "Beacon Wallet" },
94
- { name: "Data-Protocol", value: "ao" },
95
- { name: "Variant", value: "ao.TN.1" },
96
- { name: "Type", value: "Message" },
97
- ],
98
- };
99
- const signedDataItem = yield walletRef.current.signDataItem(dataItem);
100
- const response = yield fetch("https://mu.ao-testnet.xyz", {
101
- method: "POST",
102
- headers: {
103
- "Content-Type": "application/octet-stream",
104
- },
105
- body: signedDataItem,
106
- });
107
- if (!response.ok) {
108
- throw new Error("Network response was not ok");
109
- }
110
- return signedDataItem;
111
- }
112
- catch (error) {
113
- console.error("Error signing AO message:", error);
114
- throw error;
115
- }
116
- });
117
- const sign = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
118
- try {
119
- return yield walletRef.current.sign(transaction);
120
- }
121
- catch (error) {
122
- console.error("Error signing wallet:", error);
123
- throw error;
124
- }
125
- });
126
- return {
127
- isConnected,
128
- connect,
129
- disconnect,
130
- getAddress,
131
- getAllAddresses,
132
- sendAR,
133
- signAOMessage,
134
- sign,
135
- };
136
- };
1
+ "use strict";
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import Transaction from "arweave/web/lib/transaction";
3
+ interface WalletContextValue {
4
+ isConnected: boolean;
5
+ connect: () => Promise<void>;
6
+ disconnect: () => Promise<void>;
7
+ getAllAddresses: () => Promise<string[]>;
8
+ getAddress: () => Promise<string | undefined>;
9
+ sendAR: (recipient: string, quantity: string) => Promise<any>;
10
+ signAOMessage: (target: string, recipient: string, quantity: string) => Promise<any>;
11
+ sign: (transaction: Transaction) => Promise<Transaction>;
12
+ }
13
+ export declare const WalletProvider: ({ children, }: {
14
+ children: any;
15
+ }) => React.JSX.Element;
16
+ export declare const useWallet: () => WalletContextValue;
17
+ export {};
@@ -0,0 +1,144 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import React, { createContext, useContext, useEffect, useRef, useState } from "react";
11
+ import WalletClient from "@vela-ventures/ao-sync-sdk";
12
+ import Arweave from "arweave";
13
+ const WalletContext = createContext(null);
14
+ export const WalletProvider = ({ children, }) => {
15
+ const [isConnected, setIsConnected] = useState(false);
16
+ const walletRef = useRef(new WalletClient());
17
+ useEffect(() => {
18
+ const wallet = walletRef.current;
19
+ wallet.reconnect();
20
+ const handleDisconnect = () => setIsConnected(false);
21
+ const handleConnect = () => setIsConnected(true);
22
+ wallet.on("disconnected", handleDisconnect);
23
+ wallet.on("connected", handleConnect);
24
+ return () => {
25
+ wallet.off("disconnected", handleDisconnect);
26
+ wallet.off("connected", handleConnect);
27
+ };
28
+ }, []);
29
+ const connect = () => __awaiter(void 0, void 0, void 0, function* () {
30
+ try {
31
+ yield walletRef.current.connect({});
32
+ }
33
+ catch (error) {
34
+ console.error("Error connecting wallet:", error);
35
+ throw error;
36
+ }
37
+ });
38
+ const disconnect = () => __awaiter(void 0, void 0, void 0, function* () {
39
+ try {
40
+ yield walletRef.current.disconnect();
41
+ setIsConnected(false);
42
+ }
43
+ catch (error) {
44
+ console.error("Error disconnecting wallet:", error);
45
+ throw error;
46
+ }
47
+ });
48
+ const getAddress = () => __awaiter(void 0, void 0, void 0, function* () {
49
+ try {
50
+ return yield walletRef.current.getActiveAddress();
51
+ }
52
+ catch (error) {
53
+ console.error("Error getting address:", error);
54
+ throw error;
55
+ }
56
+ });
57
+ const getAllAddresses = () => __awaiter(void 0, void 0, void 0, function* () {
58
+ try {
59
+ return yield walletRef.current.getAllAddresses();
60
+ }
61
+ catch (error) {
62
+ console.error("Error getting addresses:", error);
63
+ throw error;
64
+ }
65
+ });
66
+ const sendAR = (recipient, quantity) => __awaiter(void 0, void 0, void 0, function* () {
67
+ try {
68
+ const arweave = Arweave.init({
69
+ host: "arweave.net",
70
+ port: 443,
71
+ protocol: "https",
72
+ });
73
+ const tx = yield arweave.createTransaction({
74
+ target: recipient,
75
+ quantity: quantity,
76
+ });
77
+ const signedTx = yield walletRef.current.sign(tx);
78
+ return yield arweave.transactions.post(signedTx);
79
+ }
80
+ catch (error) {
81
+ console.error("Error sending AR:", error);
82
+ throw error;
83
+ }
84
+ });
85
+ const signAOMessage = (target, recipient, quantity) => __awaiter(void 0, void 0, void 0, function* () {
86
+ try {
87
+ const dataItem = {
88
+ data: "",
89
+ target,
90
+ tags: [
91
+ { name: "Action", value: "Transfer" },
92
+ { name: "Recipient", value: recipient },
93
+ { name: "Quantity", value: quantity },
94
+ { name: "SDK", value: "Beacon Wallet" },
95
+ { name: "Data-Protocol", value: "ao" },
96
+ { name: "Variant", value: "ao.TN.1" },
97
+ { name: "Type", value: "Message" },
98
+ ],
99
+ };
100
+ const signedDataItem = yield walletRef.current.signDataItem(dataItem);
101
+ const response = yield fetch("https://mu.ao-testnet.xyz", {
102
+ method: "POST",
103
+ headers: {
104
+ "Content-Type": "application/octet-stream",
105
+ },
106
+ body: signedDataItem,
107
+ });
108
+ if (!response.ok) {
109
+ throw new Error("Network response was not ok");
110
+ }
111
+ return signedDataItem;
112
+ }
113
+ catch (error) {
114
+ console.error("Error signing AO message:", error);
115
+ throw error;
116
+ }
117
+ });
118
+ const sign = (transaction) => __awaiter(void 0, void 0, void 0, function* () {
119
+ try {
120
+ return yield walletRef.current.sign(transaction);
121
+ }
122
+ catch (error) {
123
+ console.error("Error signing wallet:", error);
124
+ throw error;
125
+ }
126
+ });
127
+ return (React.createElement(WalletContext.Provider, { value: {
128
+ isConnected,
129
+ connect,
130
+ disconnect,
131
+ getAllAddresses,
132
+ getAddress,
133
+ sendAR,
134
+ signAOMessage,
135
+ sign,
136
+ } }, children));
137
+ };
138
+ export const useWallet = () => {
139
+ const context = useContext(WalletContext);
140
+ if (!context) {
141
+ throw new Error("useWallet must be used within a WalletProvider");
142
+ }
143
+ return context;
144
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vela-ventures/aosync-sdk-react",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"
@@ -27,7 +27,6 @@
27
27
  "@babel/preset-react": "^7.26.3",
28
28
  "@types/react": "^19.0.7",
29
29
  "@types/react-dom": "^19.0.3",
30
- "@vela-ventures/ao-sync-sdk": "^1.1.9",
31
30
  "arconnect": "^1.0.4",
32
31
  "arweave": "^1.15.5",
33
32
  "react": "^19.0.0",
@@ -40,5 +39,8 @@
40
39
  ],
41
40
  "peerDependencies": {
42
41
  "react": "^18.2.0"
42
+ },
43
+ "dependencies": {
44
+ "@vela-ventures/ao-sync-sdk": "^1.1.9"
43
45
  }
44
46
  }