shogun-core 6.2.3 → 6.3.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 (233) hide show
  1. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +93 -341
  2. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -1
  3. package/dist/browser/shogun-core.js +138850 -146638
  4. package/dist/browser/shogun-core.js.map +1 -1
  5. package/dist/{core.js → src/core.js} +167 -107
  6. package/dist/src/crypto/asymmetric.js +168 -0
  7. package/dist/src/crypto/double-ratchet.js +908 -0
  8. package/dist/src/crypto/file-encryption.js +352 -0
  9. package/dist/src/crypto/hashing.js +160 -0
  10. package/dist/src/crypto/index.js +18 -0
  11. package/dist/{crypto → src/crypto}/mls-codec.js +24 -34
  12. package/dist/src/crypto/mls.js +734 -0
  13. package/dist/src/crypto/pgp.js +619 -0
  14. package/dist/{crypto → src/crypto}/random-generation.js +125 -103
  15. package/dist/src/crypto/sframe.js +466 -0
  16. package/dist/src/crypto/signal-protocol.js +943 -0
  17. package/dist/src/crypto/symmetric.js +165 -0
  18. package/dist/src/crypto/utils.js +220 -0
  19. package/dist/src/examples/auth-test.js +535 -0
  20. package/dist/src/examples/crypto-identity-example.js +294 -0
  21. package/dist/src/examples/crypto-working-test.js +149 -0
  22. package/dist/src/examples/double-ratchet-test.js +240 -0
  23. package/dist/src/examples/mls-3-member-test.js +183 -0
  24. package/dist/src/examples/mls-multi-member.js +439 -0
  25. package/dist/src/examples/mls-sframe-test.js +491 -0
  26. package/dist/src/examples/mls-simple-test.js +122 -0
  27. package/dist/src/examples/pgp-example.js +354 -0
  28. package/dist/src/examples/random-generation-test.js +191 -0
  29. package/dist/src/examples/shogun-core-example.js +204 -0
  30. package/dist/src/examples/signal-protocol-test.js +82 -0
  31. package/dist/src/examples/zkproof-credentials-example.js +357 -0
  32. package/dist/src/examples/zkproof-example.js +357 -0
  33. package/dist/src/gundb/crypto.js +420 -0
  34. package/dist/src/gundb/db.js +728 -0
  35. package/dist/src/gundb/derive.js +327 -0
  36. package/dist/src/gundb/errors.js +115 -0
  37. package/dist/src/gundb/gun-es.js +8 -0
  38. package/dist/src/gundb/index.js +5 -0
  39. package/dist/{gundb → src/gundb}/rxjs.js +147 -111
  40. package/dist/{gundb → src/gundb}/types.js +1 -2
  41. package/dist/src/index.js +19 -0
  42. package/dist/src/interfaces/events.js +57 -0
  43. package/dist/{interfaces → src/interfaces}/shogun.js +4 -7
  44. package/dist/src/managers/AuthManager.js +301 -0
  45. package/dist/src/managers/CoreInitializer.js +304 -0
  46. package/dist/src/managers/CryptoIdentityManager.js +230 -0
  47. package/dist/{managers → src/managers}/EventManager.js +19 -21
  48. package/dist/{managers → src/managers}/PluginManager.js +123 -89
  49. package/dist/src/plugins/base.js +90 -0
  50. package/dist/src/plugins/index.js +17 -0
  51. package/dist/src/plugins/nostr/index.js +4 -0
  52. package/dist/src/plugins/nostr/nostrConnector.js +539 -0
  53. package/dist/src/plugins/nostr/nostrConnectorPlugin.js +663 -0
  54. package/dist/src/plugins/nostr/nostrSigner.js +414 -0
  55. package/dist/src/plugins/smartwallet/index.js +2 -0
  56. package/dist/src/plugins/smartwallet/smartWalletPlugin.js +824 -0
  57. package/dist/src/plugins/web3/index.js +4 -0
  58. package/dist/src/plugins/web3/types.js +1 -0
  59. package/dist/src/plugins/web3/web3Connector.js +738 -0
  60. package/dist/src/plugins/web3/web3ConnectorPlugin.js +639 -0
  61. package/dist/src/plugins/web3/web3Signer.js +432 -0
  62. package/dist/src/plugins/webauthn/index.js +3 -0
  63. package/dist/{plugins → src/plugins}/webauthn/types.js +2 -5
  64. package/dist/src/plugins/webauthn/webauthn.js +647 -0
  65. package/dist/src/plugins/webauthn/webauthnPlugin.js +689 -0
  66. package/dist/src/plugins/webauthn/webauthnSigner.js +419 -0
  67. package/dist/{plugins → src/plugins}/zkproof/index.js +3 -10
  68. package/dist/src/plugins/zkproof/types.js +1 -0
  69. package/dist/src/plugins/zkproof/zkCredentials.js +287 -0
  70. package/dist/src/plugins/zkproof/zkProofConnector.js +267 -0
  71. package/dist/src/plugins/zkproof/zkProofPlugin.js +405 -0
  72. package/dist/src/storage/storage.js +189 -0
  73. package/dist/src/utils/errorHandler.js +339 -0
  74. package/dist/{utils → src/utils}/eventEmitter.js +26 -26
  75. package/dist/{utils → src/utils}/seedPhrase.js +23 -32
  76. package/dist/{utils → src/utils}/validation.js +14 -21
  77. package/dist/tsconfig.tsbuildinfo +1 -0
  78. package/dist/types/{crypto → src/crypto}/double-ratchet.d.ts +1 -1
  79. package/dist/types/{crypto → src/crypto}/signal-protocol.d.ts +25 -0
  80. package/dist/types/{crypto → src/crypto}/types.d.ts +3 -1
  81. package/dist/types/src/examples/crypto-working-test.d.ts +1 -0
  82. package/dist/types/src/examples/double-ratchet-test.d.ts +1 -0
  83. package/dist/types/src/examples/mls-sframe-test.d.ts +1 -0
  84. package/dist/types/src/examples/random-generation-test.d.ts +1 -0
  85. package/dist/types/src/examples/signal-protocol-test.d.ts +1 -0
  86. package/dist/types/{gundb → src/gundb}/db.d.ts +14 -1
  87. package/dist/types/src/gundb/gun-es.d.ts +8 -0
  88. package/dist/types/src/gundb/min.d.ts +3 -0
  89. package/dist/types/{index.d.ts → src/index.d.ts} +1 -0
  90. package/package.json +14 -11
  91. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +0 -1651
  92. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +0 -1
  93. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +0 -1608
  94. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +0 -1
  95. package/dist/crypto/asymmetric.js +0 -99
  96. package/dist/crypto/double-ratchet.js +0 -370
  97. package/dist/crypto/file-encryption.js +0 -213
  98. package/dist/crypto/hashing.js +0 -87
  99. package/dist/crypto/index.js +0 -34
  100. package/dist/crypto/mls.js +0 -569
  101. package/dist/crypto/pgp.js +0 -390
  102. package/dist/crypto/sframe.js +0 -352
  103. package/dist/crypto/signal-protocol.js +0 -456
  104. package/dist/crypto/symmetric.js +0 -91
  105. package/dist/crypto/types.js +0 -2
  106. package/dist/crypto/utils.js +0 -140
  107. package/dist/examples/auth-test.js +0 -453
  108. package/dist/examples/crypto-identity-example.js +0 -196
  109. package/dist/examples/crypto-working-test.js +0 -83
  110. package/dist/examples/double-ratchet-test.js +0 -155
  111. package/dist/examples/mls-3-member-test.js +0 -97
  112. package/dist/examples/mls-multi-member.js +0 -153
  113. package/dist/examples/mls-sframe-test.js +0 -307
  114. package/dist/examples/mls-simple-test.js +0 -58
  115. package/dist/examples/pgp-example.js +0 -200
  116. package/dist/examples/random-generation-test.js +0 -151
  117. package/dist/examples/shogun-core-example.js +0 -150
  118. package/dist/examples/signal-protocol-test.js +0 -38
  119. package/dist/examples/zkproof-credentials-example.js +0 -217
  120. package/dist/examples/zkproof-example.js +0 -242
  121. package/dist/gundb/crypto.js +0 -306
  122. package/dist/gundb/db.js +0 -485
  123. package/dist/gundb/derive.js +0 -232
  124. package/dist/gundb/errors.js +0 -76
  125. package/dist/gundb/gun-es.js +0 -12
  126. package/dist/gundb/index.js +0 -21
  127. package/dist/gundb/min.js +0 -10
  128. package/dist/index.esm.js +0 -22
  129. package/dist/index.js +0 -47
  130. package/dist/interfaces/common.js +0 -2
  131. package/dist/interfaces/events.js +0 -40
  132. package/dist/interfaces/plugin.js +0 -2
  133. package/dist/managers/AuthManager.js +0 -226
  134. package/dist/managers/CoreInitializer.js +0 -250
  135. package/dist/managers/CryptoIdentityManager.js +0 -138
  136. package/dist/plugins/base.js +0 -50
  137. package/dist/plugins/index.js +0 -32
  138. package/dist/plugins/nostr/index.js +0 -20
  139. package/dist/plugins/nostr/nostrConnector.js +0 -419
  140. package/dist/plugins/nostr/nostrConnectorPlugin.js +0 -453
  141. package/dist/plugins/nostr/nostrSigner.js +0 -319
  142. package/dist/plugins/nostr/types.js +0 -2
  143. package/dist/plugins/smartwallet/index.js +0 -18
  144. package/dist/plugins/smartwallet/smartWalletPlugin.js +0 -511
  145. package/dist/plugins/smartwallet/types.js +0 -2
  146. package/dist/plugins/web3/index.js +0 -20
  147. package/dist/plugins/web3/types.js +0 -2
  148. package/dist/plugins/web3/web3Connector.js +0 -533
  149. package/dist/plugins/web3/web3ConnectorPlugin.js +0 -455
  150. package/dist/plugins/web3/web3Signer.js +0 -314
  151. package/dist/plugins/webauthn/index.js +0 -19
  152. package/dist/plugins/webauthn/webauthn.js +0 -496
  153. package/dist/plugins/webauthn/webauthnPlugin.js +0 -490
  154. package/dist/plugins/webauthn/webauthnSigner.js +0 -310
  155. package/dist/plugins/zkproof/types.js +0 -2
  156. package/dist/plugins/zkproof/zkCredentials.js +0 -216
  157. package/dist/plugins/zkproof/zkProofConnector.js +0 -198
  158. package/dist/plugins/zkproof/zkProofPlugin.js +0 -272
  159. package/dist/storage/storage.js +0 -145
  160. package/dist/types/gundb/gun-es.d.ts +0 -8
  161. package/dist/utils/errorHandler.js +0 -246
  162. /package/dist/{types/examples/crypto-working-test.d.ts → src/crypto/types.js} +0 -0
  163. /package/dist/{types/gundb/min.d.ts → src/gundb/min.js} +0 -0
  164. /package/dist/{types/examples/double-ratchet-test.d.ts → src/interfaces/common.js} +0 -0
  165. /package/dist/{types/examples/mls-sframe-test.d.ts → src/interfaces/plugin.js} +0 -0
  166. /package/dist/{types/examples/random-generation-test.d.ts → src/plugins/nostr/types.js} +0 -0
  167. /package/dist/{types/examples/signal-protocol-test.d.ts → src/plugins/smartwallet/types.js} +0 -0
  168. /package/dist/types/{core.d.ts → src/core.d.ts} +0 -0
  169. /package/dist/types/{crypto → src/crypto}/asymmetric.d.ts +0 -0
  170. /package/dist/types/{crypto → src/crypto}/file-encryption.d.ts +0 -0
  171. /package/dist/types/{crypto → src/crypto}/hashing.d.ts +0 -0
  172. /package/dist/types/{crypto → src/crypto}/index.d.ts +0 -0
  173. /package/dist/types/{crypto → src/crypto}/mls-codec.d.ts +0 -0
  174. /package/dist/types/{crypto → src/crypto}/mls.d.ts +0 -0
  175. /package/dist/types/{crypto → src/crypto}/pgp.d.ts +0 -0
  176. /package/dist/types/{crypto → src/crypto}/random-generation.d.ts +0 -0
  177. /package/dist/types/{crypto → src/crypto}/sframe.d.ts +0 -0
  178. /package/dist/types/{crypto → src/crypto}/symmetric.d.ts +0 -0
  179. /package/dist/types/{crypto → src/crypto}/utils.d.ts +0 -0
  180. /package/dist/types/{examples → src/examples}/auth-test.d.ts +0 -0
  181. /package/dist/types/{examples → src/examples}/crypto-identity-example.d.ts +0 -0
  182. /package/dist/types/{examples → src/examples}/mls-3-member-test.d.ts +0 -0
  183. /package/dist/types/{examples → src/examples}/mls-multi-member.d.ts +0 -0
  184. /package/dist/types/{examples → src/examples}/mls-simple-test.d.ts +0 -0
  185. /package/dist/types/{examples → src/examples}/pgp-example.d.ts +0 -0
  186. /package/dist/types/{examples → src/examples}/shogun-core-example.d.ts +0 -0
  187. /package/dist/types/{examples → src/examples}/zkproof-credentials-example.d.ts +0 -0
  188. /package/dist/types/{examples → src/examples}/zkproof-example.d.ts +0 -0
  189. /package/dist/types/{gundb → src/gundb}/crypto.d.ts +0 -0
  190. /package/dist/types/{gundb → src/gundb}/derive.d.ts +0 -0
  191. /package/dist/types/{gundb → src/gundb}/errors.d.ts +0 -0
  192. /package/dist/types/{gundb → src/gundb}/index.d.ts +0 -0
  193. /package/dist/types/{gundb → src/gundb}/rxjs.d.ts +0 -0
  194. /package/dist/types/{gundb → src/gundb}/types.d.ts +0 -0
  195. /package/dist/types/{interfaces → src/interfaces}/common.d.ts +0 -0
  196. /package/dist/types/{interfaces → src/interfaces}/events.d.ts +0 -0
  197. /package/dist/types/{interfaces → src/interfaces}/plugin.d.ts +0 -0
  198. /package/dist/types/{interfaces → src/interfaces}/shogun.d.ts +0 -0
  199. /package/dist/types/{managers → src/managers}/AuthManager.d.ts +0 -0
  200. /package/dist/types/{managers → src/managers}/CoreInitializer.d.ts +0 -0
  201. /package/dist/types/{managers → src/managers}/CryptoIdentityManager.d.ts +0 -0
  202. /package/dist/types/{managers → src/managers}/EventManager.d.ts +0 -0
  203. /package/dist/types/{managers → src/managers}/PluginManager.d.ts +0 -0
  204. /package/dist/types/{plugins → src/plugins}/base.d.ts +0 -0
  205. /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
  206. /package/dist/types/{plugins → src/plugins}/nostr/index.d.ts +0 -0
  207. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnector.d.ts +0 -0
  208. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnectorPlugin.d.ts +0 -0
  209. /package/dist/types/{plugins → src/plugins}/nostr/nostrSigner.d.ts +0 -0
  210. /package/dist/types/{plugins → src/plugins}/nostr/types.d.ts +0 -0
  211. /package/dist/types/{plugins → src/plugins}/smartwallet/index.d.ts +0 -0
  212. /package/dist/types/{plugins → src/plugins}/smartwallet/smartWalletPlugin.d.ts +0 -0
  213. /package/dist/types/{plugins → src/plugins}/smartwallet/types.d.ts +0 -0
  214. /package/dist/types/{plugins → src/plugins}/web3/index.d.ts +0 -0
  215. /package/dist/types/{plugins → src/plugins}/web3/types.d.ts +0 -0
  216. /package/dist/types/{plugins → src/plugins}/web3/web3Connector.d.ts +0 -0
  217. /package/dist/types/{plugins → src/plugins}/web3/web3ConnectorPlugin.d.ts +0 -0
  218. /package/dist/types/{plugins → src/plugins}/web3/web3Signer.d.ts +0 -0
  219. /package/dist/types/{plugins → src/plugins}/webauthn/index.d.ts +0 -0
  220. /package/dist/types/{plugins → src/plugins}/webauthn/types.d.ts +0 -0
  221. /package/dist/types/{plugins → src/plugins}/webauthn/webauthn.d.ts +0 -0
  222. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnPlugin.d.ts +0 -0
  223. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnSigner.d.ts +0 -0
  224. /package/dist/types/{plugins → src/plugins}/zkproof/index.d.ts +0 -0
  225. /package/dist/types/{plugins → src/plugins}/zkproof/types.d.ts +0 -0
  226. /package/dist/types/{plugins → src/plugins}/zkproof/zkCredentials.d.ts +0 -0
  227. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofConnector.d.ts +0 -0
  228. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofPlugin.d.ts +0 -0
  229. /package/dist/types/{storage → src/storage}/storage.d.ts +0 -0
  230. /package/dist/types/{utils → src/utils}/errorHandler.d.ts +0 -0
  231. /package/dist/types/{utils → src/utils}/eventEmitter.d.ts +0 -0
  232. /package/dist/types/{utils → src/utils}/seedPhrase.d.ts +0 -0
  233. /package/dist/types/{utils → src/utils}/validation.d.ts +0 -0
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Zero-Knowledge Proof Authentication Example
3
+ *
4
+ * This example demonstrates how to use the ZK-Proof plugin with Shogun Core
5
+ * for privacy-preserving authentication using Semaphore protocol.
6
+ */
7
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
8
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9
+ return new (P || (P = Promise))(function (resolve, reject) {
10
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
12
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
13
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
14
+ });
15
+ };
16
+ var __generator = (this && this.__generator) || function (thisArg, body) {
17
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
18
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
19
+ function verb(n) { return function (v) { return step([n, v]); }; }
20
+ function step(op) {
21
+ if (f) throw new TypeError("Generator is already executing.");
22
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
23
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
24
+ if (y = 0, t) op = [op[0] & 2, t.value];
25
+ switch (op[0]) {
26
+ case 0: case 1: t = op; break;
27
+ case 4: _.label++; return { value: op[1], done: false };
28
+ case 5: _.label++; y = op[1]; op = [0]; continue;
29
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
30
+ default:
31
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
32
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
33
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
34
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
35
+ if (t[2]) _.ops.pop();
36
+ _.trys.pop(); continue;
37
+ }
38
+ op = body.call(thisArg, _);
39
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
40
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
41
+ }
42
+ };
43
+ import { Gun } from "../index.js";
44
+ import { ShogunCore } from "../core.js";
45
+ // Example 1: Basic ZK-Proof signup and login
46
+ function basicExample() {
47
+ return __awaiter(this, void 0, void 0, function () {
48
+ var gunInstance, shogun, zkPlugin, signupResult, savedTrapdoor, loginResult;
49
+ var _a, _b;
50
+ return __generator(this, function (_c) {
51
+ switch (_c.label) {
52
+ case 0:
53
+ console.log("=== Basic ZK-Proof Authentication Example ===\n");
54
+ gunInstance = Gun({
55
+ peers: [
56
+ "https://g3ru5bwxmezpuu3ktnoclbpiw4.srv.us/gun",
57
+ "https://5eh4twk2f62autunsje4panime.srv.us/gun",
58
+ ],
59
+ radisk: false,
60
+ localStorage: false, // Enable for testing - allows offline operations
61
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
62
+ log: function () { }, // Disable Gun.js console logging to reduce noise
63
+ });
64
+ shogun = new ShogunCore({
65
+ gunInstance: gunInstance,
66
+ zkproof: {
67
+ enabled: true,
68
+ defaultGroupId: "my-app-users",
69
+ },
70
+ });
71
+ // Wait for plugin initialization
72
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
73
+ case 1:
74
+ // Wait for plugin initialization
75
+ _c.sent();
76
+ zkPlugin = shogun.getPlugin("zkproof");
77
+ if (!zkPlugin) {
78
+ console.error("ZK-Proof plugin not available");
79
+ return [2 /*return*/];
80
+ }
81
+ // SIGN UP - Generate new anonymous identity
82
+ console.log("1. Creating new ZK identity...");
83
+ return [4 /*yield*/, zkPlugin.signUp()];
84
+ case 2:
85
+ signupResult = _c.sent();
86
+ if (!signupResult.success) return [3 /*break*/, 4];
87
+ console.log("✅ Signup successful!");
88
+ console.log(" Username (commitment): ".concat(signupResult.username));
89
+ console.log(" User Public Key: ".concat((_a = signupResult.userPub) === null || _a === void 0 ? void 0 : _a.slice(0, 16), "..."));
90
+ console.log("\n⚠️ CRITICAL: Save this trapdoor for account recovery:");
91
+ console.log(" Trapdoor: ".concat(signupResult.seedPhrase, "\n"));
92
+ savedTrapdoor = signupResult.seedPhrase;
93
+ // Logout
94
+ shogun.logout();
95
+ console.log("2. Logged out\n");
96
+ // LOGIN - Authenticate with trapdoor
97
+ console.log("3. Logging in with trapdoor...");
98
+ return [4 /*yield*/, zkPlugin.login(savedTrapdoor)];
99
+ case 3:
100
+ loginResult = _c.sent();
101
+ if (loginResult.success) {
102
+ console.log("✅ Login successful!");
103
+ console.log(" Username: ".concat(loginResult.username));
104
+ console.log(" User Public Key: ".concat((_b = loginResult.userPub) === null || _b === void 0 ? void 0 : _b.slice(0, 16), "..."));
105
+ console.log(" Auth Method: ".concat(loginResult.authMethod));
106
+ }
107
+ else {
108
+ console.error("❌ Login failed:", loginResult.error);
109
+ }
110
+ return [3 /*break*/, 5];
111
+ case 4:
112
+ console.error("❌ Signup failed:", signupResult.error);
113
+ _c.label = 5;
114
+ case 5: return [2 /*return*/];
115
+ }
116
+ });
117
+ });
118
+ }
119
+ // Example 2: Deterministic identity generation
120
+ function deterministicExample() {
121
+ return __awaiter(this, void 0, void 0, function () {
122
+ var gunInstance, shogun, zkPlugin, seed, signupResult, identity2;
123
+ var _a;
124
+ return __generator(this, function (_b) {
125
+ switch (_b.label) {
126
+ case 0:
127
+ console.log("\n=== Deterministic ZK Identity Example ===\n");
128
+ gunInstance = Gun({
129
+ peers: [
130
+ "https://lindanode.scobrudot.dev/gun",
131
+ "https://shogunnode.scobrudot.dev/gun",
132
+ ],
133
+ radisk: false,
134
+ localStorage: false, // Enable for testing - allows offline operations
135
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
136
+ log: function () { }, // Disable Gun.js console logging to reduce noise
137
+ });
138
+ shogun = new ShogunCore({
139
+ gunInstance: gunInstance,
140
+ zkproof: {
141
+ enabled: true,
142
+ deterministic: true,
143
+ },
144
+ });
145
+ // Wait for plugin initialization
146
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
147
+ case 1:
148
+ // Wait for plugin initialization
149
+ _b.sent();
150
+ zkPlugin = shogun.getPlugin("zkproof");
151
+ if (!zkPlugin) {
152
+ console.error("ZK-Proof plugin not available");
153
+ return [2 /*return*/];
154
+ }
155
+ seed = "my-secret-seed-phrase-12345";
156
+ console.log("1. Creating identity from seed...");
157
+ return [4 /*yield*/, zkPlugin.signUp(seed)];
158
+ case 2:
159
+ signupResult = _b.sent();
160
+ if (!signupResult.success) return [3 /*break*/, 4];
161
+ console.log("✅ Identity created from seed");
162
+ console.log(" Commitment: ".concat(signupResult.username));
163
+ return [4 /*yield*/, zkPlugin.generateIdentity(seed)];
164
+ case 3:
165
+ identity2 = _b.sent();
166
+ console.log("\n2. Regenerating from same seed...");
167
+ console.log(" Same commitment? ".concat(identity2.commitment === ((_a = signupResult.username) === null || _a === void 0 ? void 0 : _a.replace("zk_", ""))));
168
+ _b.label = 4;
169
+ case 4: return [2 /*return*/];
170
+ }
171
+ });
172
+ });
173
+ }
174
+ // Example 3: Generate and verify ZK proofs
175
+ function proofExample() {
176
+ return __awaiter(this, void 0, void 0, function () {
177
+ var gunInstance, shogun, zkPlugin, identity, proof, verificationResult;
178
+ return __generator(this, function (_a) {
179
+ switch (_a.label) {
180
+ case 0:
181
+ console.log("\n=== ZK Proof Generation & Verification Example ===\n");
182
+ gunInstance = Gun({
183
+ peers: [
184
+ "https://lindanode.scobrudot.dev/gun",
185
+ "https://shogunnode.scobrudot.dev/gun",
186
+ ],
187
+ radisk: false,
188
+ localStorage: false, // Enable for testing - allows offline operations
189
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
190
+ log: function () { }, // Disable Gun.js console logging to reduce noise
191
+ });
192
+ shogun = new ShogunCore({
193
+ gunInstance: gunInstance,
194
+ zkproof: {
195
+ enabled: true,
196
+ defaultGroupId: "proof-demo-group",
197
+ },
198
+ });
199
+ // Wait for plugin initialization
200
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
201
+ case 1:
202
+ // Wait for plugin initialization
203
+ _a.sent();
204
+ zkPlugin = shogun.getPlugin("zkproof");
205
+ if (!zkPlugin) {
206
+ console.error("ZK-Proof plugin not available");
207
+ return [2 /*return*/];
208
+ }
209
+ // Create identity
210
+ console.log("1. Generating identity...");
211
+ return [4 /*yield*/, zkPlugin.generateIdentity()];
212
+ case 2:
213
+ identity = _a.sent();
214
+ console.log(" Commitment: ".concat(identity.commitment.slice(0, 16), "..."));
215
+ // Add to group
216
+ console.log("\n2. Adding to group...");
217
+ zkPlugin.addToGroup(identity.commitment, "proof-demo-group");
218
+ // Generate proof of membership
219
+ console.log("\n3. Generating ZK proof...");
220
+ return [4 /*yield*/, zkPlugin.generateProof(identity, {
221
+ groupId: "proof-demo-group",
222
+ message: "I am a member of this group",
223
+ scope: "membership-verification",
224
+ })];
225
+ case 3:
226
+ proof = _a.sent();
227
+ console.log(" Proof generated!");
228
+ console.log(" Merkle root: ".concat(proof.merkleTreeRoot.slice(0, 16), "..."));
229
+ console.log(" Nullifier hash: ".concat(proof.nullifierHash.slice(0, 16), "..."));
230
+ // Verify the proof
231
+ console.log("\n4. Verifying proof...");
232
+ return [4 /*yield*/, zkPlugin.verifyProof(proof)];
233
+ case 4:
234
+ verificationResult = _a.sent();
235
+ if (verificationResult.verified) {
236
+ console.log("✅ Proof verified successfully!");
237
+ console.log(" User proved group membership without revealing identity");
238
+ }
239
+ else {
240
+ console.error("❌ Proof verification failed");
241
+ }
242
+ return [2 /*return*/];
243
+ }
244
+ });
245
+ });
246
+ }
247
+ // Example 4: Multi-device scenario
248
+ function multiDeviceExample() {
249
+ return __awaiter(this, void 0, void 0, function () {
250
+ var gunInstance1, shogun1, zkPlugin1, signupResult, trapdoor, gunInstance2, shogun2, zkPlugin2, loginResult;
251
+ return __generator(this, function (_a) {
252
+ switch (_a.label) {
253
+ case 0:
254
+ console.log("\n=== Multi-Device ZK Authentication Example ===\n");
255
+ // Device 1: Create account
256
+ console.log("📱 DEVICE 1: Creating account...");
257
+ gunInstance1 = Gun({
258
+ peers: [
259
+ "https://lindanode.scobrudot.dev/gun",
260
+ "https://shogunnode.scobrudot.dev/gun",
261
+ ],
262
+ radisk: false,
263
+ localStorage: false, // Enable for testing - allows offline operations
264
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
265
+ log: function () { }, // Disable Gun.js console logging to reduce noise
266
+ });
267
+ shogun1 = new ShogunCore({
268
+ gunInstance: gunInstance1,
269
+ zkproof: { enabled: true },
270
+ });
271
+ // Wait for plugin initialization
272
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
273
+ case 1:
274
+ // Wait for plugin initialization
275
+ _a.sent();
276
+ zkPlugin1 = shogun1.getPlugin("zkproof");
277
+ return [4 /*yield*/, zkPlugin1.signUp()];
278
+ case 2:
279
+ signupResult = _a.sent();
280
+ console.log("✅ Account created on Device 1");
281
+ console.log(" Commitment: ".concat(signupResult.username));
282
+ trapdoor = signupResult.seedPhrase;
283
+ console.log("\n\uD83D\uDCDD User writes down trapdoor: ".concat(trapdoor.slice(0, 20), "..."));
284
+ // Device 2: Import account
285
+ console.log("\n💻 DEVICE 2: Importing account with trapdoor...");
286
+ gunInstance2 = Gun({
287
+ peers: [
288
+ "https://lindanode.scobrudot.dev/gun",
289
+ "https://shogunnode.scobrudot.dev/gun",
290
+ ],
291
+ radisk: false,
292
+ localStorage: false, // Enable for testing - allows offline operations
293
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
294
+ log: function () { }, // Disable Gun.js console logging to reduce noise
295
+ });
296
+ shogun2 = new ShogunCore({
297
+ gunInstance: gunInstance2,
298
+ zkproof: { enabled: true },
299
+ });
300
+ // Wait for plugin initialization
301
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 100); })];
302
+ case 3:
303
+ // Wait for plugin initialization
304
+ _a.sent();
305
+ zkPlugin2 = shogun2.getPlugin("zkproof");
306
+ return [4 /*yield*/, zkPlugin2.login(trapdoor)];
307
+ case 4:
308
+ loginResult = _a.sent();
309
+ if (loginResult.success) {
310
+ console.log("✅ Successfully logged in on Device 2");
311
+ console.log(" Same user: ".concat(loginResult.username === signupResult.username));
312
+ console.log("\n🎉 Multi-device authentication working!");
313
+ }
314
+ return [2 /*return*/];
315
+ }
316
+ });
317
+ });
318
+ }
319
+ // Run examples
320
+ function main() {
321
+ return __awaiter(this, void 0, void 0, function () {
322
+ var error_1;
323
+ return __generator(this, function (_a) {
324
+ switch (_a.label) {
325
+ case 0:
326
+ _a.trys.push([0, 4, , 5]);
327
+ // Run all examples
328
+ return [4 /*yield*/, basicExample()];
329
+ case 1:
330
+ // Run all examples
331
+ _a.sent();
332
+ return [4 /*yield*/, deterministicExample()];
333
+ case 2:
334
+ _a.sent();
335
+ // await proofExample(); // Requires ZK circuit files - see README for setup
336
+ return [4 /*yield*/, multiDeviceExample()];
337
+ case 3:
338
+ // await proofExample(); // Requires ZK circuit files - see README for setup
339
+ _a.sent();
340
+ console.log("\n✨ All examples completed successfully!");
341
+ return [3 /*break*/, 5];
342
+ case 4:
343
+ error_1 = _a.sent();
344
+ console.error("\n❌ Error running examples:", error_1);
345
+ return [3 /*break*/, 5];
346
+ case 5:
347
+ process.exit(0);
348
+ return [2 /*return*/];
349
+ }
350
+ });
351
+ });
352
+ }
353
+ // Run if executed directly
354
+ if (require.main === module) {
355
+ main();
356
+ }
357
+ export { basicExample, deterministicExample, proofExample, multiDeviceExample };