gun-eth 1.3.5 → 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.
Files changed (52) hide show
  1. package/README.md +18 -207
  2. package/dist/gun-eth-protocol.cjs.js +11528 -0
  3. package/dist/gun-eth-protocol.esm.js +11503 -0
  4. package/dist/gun-eth-protocol.js +18 -0
  5. package/dist/gun-eth-protocol.react.js +11503 -0
  6. package/dist/gun-eth-protocol.umd.js +18 -0
  7. package/jsdoc.json +7 -0
  8. package/package.json +28 -25
  9. package/rollup.config.js +80 -0
  10. package/src/index.js +160 -512
  11. package/src/lib/authentication/index.js +13 -0
  12. package/src/lib/authentication/isAuthenticated.js +20 -0
  13. package/src/lib/authentication/login.js +25 -0
  14. package/src/lib/authentication/register.js +58 -0
  15. package/src/lib/blockchain/ethereum.js +74 -0
  16. package/src/lib/blockchain/shine.js +204 -0
  17. package/src/lib/certificates/friendsCertificates.js +92 -0
  18. package/src/lib/certificates/index.js +44 -0
  19. package/src/lib/certificates/messagingCertificates.js +94 -0
  20. package/src/lib/friends/acceptFriendRequest.js +69 -0
  21. package/src/lib/friends/addFriendRequest.js +49 -0
  22. package/src/lib/friends/friendRequests.js +51 -0
  23. package/src/lib/friends/friendsList.js +57 -0
  24. package/src/lib/friends/index.js +36 -0
  25. package/src/lib/friends/rejectFriendRequest.js +31 -0
  26. package/src/lib/messaging/chatsList.js +42 -0
  27. package/src/lib/messaging/createChat.js +132 -0
  28. package/src/lib/messaging/index.js +36 -0
  29. package/src/lib/messaging/messageList.js +106 -0
  30. package/src/lib/messaging/sendMessage.js +132 -0
  31. package/src/lib/messaging/sendVoiceMessage.js +119 -0
  32. package/src/lib/notes/createNote.js +41 -0
  33. package/src/lib/notes/deleteNote.js +12 -0
  34. package/src/lib/notes/getNote.js +25 -0
  35. package/src/lib/notes/getUserNote.js +59 -0
  36. package/src/lib/notes/index.js +8 -0
  37. package/src/lib/notes/updateNotes.js +35 -0
  38. package/src/lib/post/createPost.js +17 -0
  39. package/src/lib/post/decryptPost.js +14 -0
  40. package/src/lib/post/deletePost.js +13 -0
  41. package/src/lib/post/encryptPost,js +16 -0
  42. package/src/lib/post/getPost.js +36 -0
  43. package/src/lib/post/index.js +9 -0
  44. package/src/lib/post/updatePost.js +16 -0
  45. package/src/state/gun.js +33 -0
  46. package/types/types.d.ts +244 -0
  47. package/TUTORIAL.md +0 -103
  48. package/src/examples/eth2gun.html +0 -163
  49. package/src/examples/gun2eth.html +0 -164
  50. package/src/examples/shine.html +0 -256
  51. /package/src/{abis → lib/blockchain/abis}/SHINE.json +0 -0
  52. /package/src/{contracts → lib/blockchain/contracts}/SHINE.sol +0 -0
@@ -1,256 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <title>Demo Gun-Eth Plugin</title>
6
- <!-- Include Gun -->
7
- <script src="https://cdn.jsdelivr.net/npm/gun/gun.js"></script>
8
- <!-- Include SEA (part of Gun) -->
9
- <script src="https://cdn.jsdelivr.net/npm/gun/sea.js"></script>
10
- <!-- Include Ethers.js -->
11
- <script src="https://cdnjs.cloudflare.com/ajax/libs/ethers/6.7.0/ethers.umd.min.js"></script>
12
- <!-- Include the Gun-Eth plugin -->
13
- <script src="https://cdn.jsdelivr.net/npm/gun-eth/src/gun-eth.js""></script>
14
- <style>
15
- body {
16
- font-family: Arial, sans-serif;
17
- margin: 0;
18
- padding: 20px;
19
- background-color: #f0f0f0;
20
- }
21
- .container {
22
- max-width: 400px;
23
- background-color: white;
24
- border: 1px solid #000;
25
- padding: 10px;
26
- }
27
- h1,
28
- h2 {
29
- margin: 0 0 10px 0;
30
- font-size: 16px;
31
- }
32
- form {
33
- margin-bottom: 15px;
34
- }
35
- input,
36
- button {
37
- display: inline-block;
38
- margin: 2px 0;
39
- padding: 2px;
40
- font-size: 12px;
41
- }
42
- input {
43
- width: 150px;
44
- }
45
- button {
46
- width: 70px;
47
- }
48
- label {
49
- display: inline-block;
50
- width: 70px;
51
- font-size: 12px;
52
- }
53
- #configStatus,
54
- .result {
55
- font-weight: bold;
56
- margin-bottom: 10px;
57
- }
58
- .result {
59
- color: blue;
60
- }
61
- .disclaimer {
62
- background-color: #ffffd0;
63
- border: 1px solid #e6e600;
64
- padding: 10px;
65
- margin-bottom: 15px;
66
- font-size: 14px;
67
- }
68
- </style>
69
- </head>
70
- <body>
71
- <div class="container">
72
- <div class="disclaimer">
73
- <strong>⚠️</strong> This example is available only on the
74
- <strong>Optimism Sepolia</strong> chain.
75
- </div>
76
- <h1>💎 SHINE (Secure Hash Integriry Network Ethereum)</h1>
77
- <hr />
78
- <h2>🔧 Configuration</h2>
79
- <form id="configForm">
80
- <label for="rpcUrl">RPC URL:</label>
81
- <input type="text" id="rpcUrl" name="rpcUrl" required />
82
- <br />
83
- <label for="privateKey">Private Key:</label>
84
- <input type="password" id="privateKey" name="privateKey" required />
85
- <br />
86
- <button type="submit">Configure</button>
87
- </form>
88
- <div id="configStatus">Status: Not Configured</div>
89
- <hr />
90
-
91
- <h2>🔴 Write Data to Blockchain</h2>
92
- <form id="writeForm">
93
- <label for="data">Data</label>
94
- <br />
95
- <input type="text" id="data" name="data" required />
96
- <br />
97
- <button type="submit">Write</button>
98
- </form>
99
- <div id="writeResult" class="result"></div>
100
- <hr />
101
-
102
- <h2>🔍 Verify Data on Blockchain</h2>
103
- <form id="verifyForm">
104
- <label for="nodeId">Node ID</label>
105
- <br />
106
- <input type="text" id="nodeId" name="nodeId" required />
107
- <br />
108
- <button type="submit">Verify</button>
109
- </form>
110
- <div id="verifyResult" class="result"></div>
111
- <hr />
112
-
113
- <h2>🔄 Update Node Data in Gun</h2>
114
- <form id="updateForm">
115
- <label for="updateNodeId">Node ID</label>
116
- <br />
117
- <input type="text" id="updateNodeId" name="updateNodeId" required />
118
- <br />
119
- <label for="editMessage">New Data</label>
120
- <br />
121
- <input type="text" id="editMessage" name="editMessage" required />
122
- <br />
123
- <button type="submit">Update</button>
124
- </form>
125
- <div id="updateResult" class="result"></div>
126
- </div>
127
-
128
- <script>
129
- let gun;
130
- let isConfigured = false;
131
-
132
- function updateConfigStatus() {
133
- const statusElement = document.getElementById("configStatus");
134
- statusElement.textContent = isConfigured
135
- ? "Status: Configured"
136
- : "Status: Not Configured";
137
- statusElement.style.color = isConfigured ? "green" : "red";
138
- }
139
-
140
- document
141
- .getElementById("configForm")
142
- .addEventListener("submit", function (event) {
143
- event.preventDefault();
144
- const rpcUrl = document.getElementById("rpcUrl").value;
145
- const privateKey = document.getElementById("privateKey").value;
146
-
147
- // Configure Gun with the provided details
148
- gun = Gun();
149
- gun.setStandaloneConfig(rpcUrl, privateKey);
150
-
151
- console.log("Standalone configuration set");
152
- isConfigured = true;
153
- updateConfigStatus();
154
- });
155
-
156
- document
157
- .getElementById("writeForm")
158
- .addEventListener("submit", function (event) {
159
- event.preventDefault();
160
- if (!isConfigured) {
161
- document.getElementById("writeResult").textContent =
162
- "Please configure Gun first.";
163
- return;
164
- }
165
- const data = document.getElementById("data").value;
166
- const resultElement = document.getElementById("writeResult");
167
- resultElement.textContent = "Writing data...";
168
-
169
- // Assicurati che `data` sia un oggetto JSON valido
170
-
171
- gun.shine("optimismSepolia", null, data, function (result) {
172
- console.log("Shine result:", result);
173
- if (result.ok) {
174
- resultElement.textContent =
175
- "Data successfully written: " + result.nodeId;
176
- } else {
177
- resultElement.textContent = "Error writing data: " + result.err;
178
- }
179
- });
180
- });
181
-
182
- document
183
- .getElementById("verifyForm")
184
- .addEventListener("submit", function (event) {
185
- event.preventDefault();
186
- if (!isConfigured) {
187
- document.getElementById("verifyResult").textContent =
188
- "Please configure Gun first.";
189
- return;
190
- }
191
- const nodeId = document.getElementById("nodeId").value;
192
- const resultElement = document.getElementById("verifyResult");
193
- resultElement.textContent = "Verifying data...";
194
-
195
- gun.shine("optimismSepolia", nodeId, null, function (result) {
196
- console.log("Verification result:", result);
197
- if (result.ok) {
198
- resultElement.textContent =
199
- "Data successfully verified: " + result.message;
200
- } else {
201
- resultElement.textContent =
202
- "Error verifying data: " + result.message;
203
- }
204
- });
205
- });
206
-
207
- document
208
- .getElementById("updateForm")
209
- .addEventListener("submit", function (event) {
210
- event.preventDefault();
211
- if (!isConfigured) {
212
- document.getElementById("updateResult").textContent =
213
- "Please configure Gun first.";
214
- return;
215
- }
216
- const nodeId = document.getElementById("updateNodeId").value;
217
- const editMessage = document.getElementById("editMessage").value;
218
- const resultElement = document.getElementById("updateResult");
219
- resultElement.textContent = "Updating data...";
220
-
221
- gun.get(nodeId).once(function (existingData) {
222
- // Prepara i nuovi dati
223
- const newData = {
224
- message: editMessage,
225
- _contentHash: existingData._contentHash, // Manteniamo il contentHash precedente per il calcolo
226
- };
227
-
228
- // Calcola il nuovo contentHash
229
- const dataString = JSON.stringify(editMessage);
230
- const newContentHash = ethers.keccak256(
231
- ethers.toUtf8Bytes(dataString)
232
- );
233
-
234
- // Aggiorna i dati con il nuovo contentHash
235
- newData._contentHash = newContentHash;
236
-
237
- // Update data in Gun
238
- gun.get(nodeId).put(newData, function (ack) {
239
- if (ack.err) {
240
- console.error("Error updating data in Gun:", ack.err);
241
- resultElement.textContent =
242
- "Error updating data in Gun: " + ack.err;
243
- } else {
244
- console.log("Data successfully updated in Gun:", nodeId);
245
- resultElement.textContent =
246
- "Data successfully updated in Gun: " + nodeId;
247
- }
248
- });
249
- });
250
- });
251
-
252
- // Inizializza lo stato di configurazione
253
- updateConfigStatus();
254
- </script>
255
- </body>
256
- </html>
File without changes