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,535 @@
1
+ /**
2
+ * Authentication Test Script
3
+ *
4
+ * Tests signup and login functionality with username and password
5
+ * Includes timeout handling and error recovery testing
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, SEA } from "../index.js";
44
+ import { ShogunCore } from "../core.js";
45
+ function authTest() {
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ var globalTimeout, logMemoryUsage, cleanup, gunInstance, shogunCore, db, user, currentUserInfo, testUsername, testPassword, signupStartTime, preSignupCheck, signupResult, signupDuration, error_1, loginStartTime, loginResult, loginDuration, userInstance, currentUser, isLoggedIn, error_2, gunInstance_1, appNode_1, testData, retrievedData, profileData, userInstance, currentUser_1, profile, error_3, gunInstance_2, isStillLoggedIn, userAfterLogout, currentUserAfterLogout, error_4, gunInstance_3, user_1, isAuthenticated, currentUserInstance, currentUserInfo_1, error_5, invalidLoginResult, error_6, nonexistentLoginResult, error_7;
48
+ var _a, _b, _c;
49
+ return __generator(this, function (_d) {
50
+ switch (_d.label) {
51
+ case 0:
52
+ console.log("🔐 ShogunCore Authentication Test\n");
53
+ globalTimeout = setTimeout(function () {
54
+ console.log("⏰ Global timeout reached - test taking too long");
55
+ console.log("✅ Test completed (with timeout)");
56
+ process.exit(0);
57
+ }, 120000);
58
+ logMemoryUsage = function (label) {
59
+ if (typeof process !== "undefined" && process.memoryUsage) {
60
+ var usage = process.memoryUsage();
61
+ console.log("\uD83D\uDCCA [".concat(label, "] Memory Usage:"), {
62
+ rss: "".concat(Math.round(usage.rss / 1024 / 1024), "MB"),
63
+ heapUsed: "".concat(Math.round(usage.heapUsed / 1024 / 1024), "MB"),
64
+ heapTotal: "".concat(Math.round(usage.heapTotal / 1024 / 1024), "MB"),
65
+ external: "".concat(Math.round(usage.external / 1024 / 1024), "MB"),
66
+ });
67
+ }
68
+ };
69
+ cleanup = function () {
70
+ if (globalTimeout) {
71
+ clearTimeout(globalTimeout);
72
+ }
73
+ // Clear any other timeouts that might be running
74
+ // Note: process.emit('cleanup') is not a standard Node.js event
75
+ };
76
+ // Handle process cleanup
77
+ process.on("SIGINT", cleanup);
78
+ process.on("SIGTERM", cleanup);
79
+ process.on("exit", cleanup);
80
+ // === INITIALIZATION ===
81
+ console.log("📦 === INITIALIZATION ===\n");
82
+ // Set SEA on Gun globally BEFORE creating instance
83
+ Gun.SEA = SEA;
84
+ // Debug: Check if SEA is available
85
+ console.log("[DEBUG] SEA available:", !!SEA);
86
+ console.log("[DEBUG] Gun.SEA available:", !!Gun.SEA);
87
+ gunInstance = Gun({
88
+ peers: [
89
+ "https://g3ru5bwxmezpuu3ktnoclbpiw4.srv.us/gun",
90
+ "https://5eh4twk2f62autunsje4panime.srv.us/gun",
91
+ ],
92
+ radisk: false,
93
+ localStorage: false, // Enable for testing - allows offline operations
94
+ // Reduce log noise from SEA verification errors (these are expected when checking invalid credentials)
95
+ log: function () { }, // Disable Gun.js console logging to reduce noise
96
+ });
97
+ // Attach SEA to Gun instance for Node.js environment
98
+ gunInstance.SEA = SEA;
99
+ // Also set SEA on global Gun for CryptoIdentityManager fallback
100
+ if (Gun && !Gun.SEA) {
101
+ Gun.SEA = SEA;
102
+ }
103
+ // Set on globalThis as well
104
+ if (globalThis.Gun) {
105
+ globalThis.Gun.SEA = SEA;
106
+ }
107
+ globalThis.SEA = SEA;
108
+ console.log("[DEBUG] gunInstance.SEA available:", !!gunInstance.SEA);
109
+ console.log("[DEBUG] Gun.SEA available:", !!Gun.SEA);
110
+ console.log("[DEBUG] globalThis.SEA available:", !!globalThis.SEA);
111
+ shogunCore = new ShogunCore({
112
+ gunInstance: gunInstance,
113
+ });
114
+ try {
115
+ console.log("✓ ShogunCore initialized successfully");
116
+ logMemoryUsage("After Init");
117
+ }
118
+ catch (error) {
119
+ console.error("❌ Failed to initialize ShogunCore:", error);
120
+ return [2 /*return*/];
121
+ }
122
+ db = shogunCore.db;
123
+ console.log("peers:", db.gun._.opt.peers);
124
+ console.log("- Database instance:", db ? "Available" : "Not available");
125
+ user = db.gun.user();
126
+ currentUserInfo = (user === null || user === void 0 ? void 0 : user.is)
127
+ ? { alias: user.is.alias, pub: user.is.pub }
128
+ : null;
129
+ console.log("- Current user:", (currentUserInfo === null || currentUserInfo === void 0 ? void 0 : currentUserInfo.alias) || "None");
130
+ console.log("- Is logged in:", db.isLoggedIn());
131
+ console.log("");
132
+ logMemoryUsage("Before Tests");
133
+ // === TEST 1: BASIC SIGNUP AND LOGIN ===
134
+ console.log("🧪 === TEST 1: BASIC SIGNUP AND LOGIN ===\n");
135
+ testUsername = "scobru";
136
+ testPassword = "francos88";
137
+ // Clean up any existing session
138
+ console.log("🧹 Cleaning up any existing session...");
139
+ db.logout();
140
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
141
+ case 1:
142
+ _d.sent(); // Wait 1 second
143
+ if (!(testUsername === "scobru")) return [3 /*break*/, 3];
144
+ console.log("🔧 Performing aggressive cleanup for problematic user...");
145
+ db.aggressiveAuthCleanup();
146
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 3000); })];
147
+ case 2:
148
+ _d.sent(); // Wait 3 seconds
149
+ console.log("✓ Aggressive cleanup completed");
150
+ _d.label = 3;
151
+ case 3:
152
+ console.log("✓ Session cleanup completed\n");
153
+ console.log("Testing with username: ".concat(testUsername));
154
+ console.log("Password: ".concat(testPassword, "\n"));
155
+ // Test signup
156
+ console.log("🔄 Attempting signup...");
157
+ signupStartTime = Date.now();
158
+ // Check if user already exists before signup
159
+ console.log("\uD83D\uDD0D Pre-signup check for user: ".concat(testUsername));
160
+ return [4 /*yield*/, new Promise(function (resolve) {
161
+ var timeout = setTimeout(function () {
162
+ console.log("⏰ Pre-signup check timeout");
163
+ resolve(false);
164
+ }, 3000);
165
+ db.gun.get("~@".concat(testUsername)).once(function (data) {
166
+ clearTimeout(timeout);
167
+ console.log("📊 Pre-signup data:", data ? "User exists" : "User not found");
168
+ if (data) {
169
+ console.log("🔑 User pub:", data.pub ? "".concat(data.pub.substring(0, 20), "...") : "None");
170
+ console.log("📝 User keys:", Object.keys(data));
171
+ }
172
+ resolve(!!data && !!data.pub);
173
+ });
174
+ })];
175
+ case 4:
176
+ preSignupCheck = _d.sent();
177
+ if (!preSignupCheck) return [3 /*break*/, 5];
178
+ console.log("⚠️ User already exists, skipping signup and going directly to login");
179
+ return [3 /*break*/, 8];
180
+ case 5:
181
+ _d.trys.push([5, 7, , 8]);
182
+ return [4 /*yield*/, db.signUp(testUsername, testPassword)];
183
+ case 6:
184
+ signupResult = _d.sent();
185
+ signupDuration = Date.now() - signupStartTime;
186
+ console.log("\u2713 Signup completed in ".concat(signupDuration, "ms"));
187
+ console.log("Signup result:", {
188
+ success: signupResult.success,
189
+ userPub: signupResult.userPub
190
+ ? "".concat(signupResult.userPub.substring(0, 20), "...")
191
+ : "None",
192
+ username: signupResult.username,
193
+ isNewUser: signupResult.isNewUser,
194
+ error: signupResult.error || "None",
195
+ });
196
+ if (!signupResult.success) {
197
+ console.log("ℹ️ Signup failed, user might already exist. Will try login...");
198
+ }
199
+ return [3 /*break*/, 8];
200
+ case 7:
201
+ error_1 = _d.sent();
202
+ console.log("ℹ️ Signup threw exception, user might already exist. Will try login...");
203
+ console.log("Exception details:", error_1);
204
+ return [3 /*break*/, 8];
205
+ case 8:
206
+ // Wait a moment before attempting login
207
+ console.log("⏳ Waiting 2 seconds before login attempt...");
208
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 2000); })];
209
+ case 9:
210
+ _d.sent();
211
+ console.log("");
212
+ // Test login
213
+ console.log("🔄 Attempting login...");
214
+ loginStartTime = Date.now();
215
+ _d.label = 10;
216
+ case 10:
217
+ _d.trys.push([10, 12, , 13]);
218
+ // Skip user existence check and try direct login
219
+ console.log("🔄 Attempting direct login (bypassing user existence check)...");
220
+ return [4 /*yield*/, db.login(testUsername, testPassword)];
221
+ case 11:
222
+ loginResult = _d.sent();
223
+ loginDuration = Date.now() - loginStartTime;
224
+ console.log("\u2713 Login completed in ".concat(loginDuration, "ms"));
225
+ console.log("Login result:", {
226
+ success: loginResult.success,
227
+ userPub: loginResult.userPub
228
+ ? "".concat(loginResult.userPub.substring(0, 20), "...")
229
+ : "None",
230
+ username: loginResult.username,
231
+ error: loginResult.error || "None",
232
+ });
233
+ if (!loginResult.success) {
234
+ console.error("❌ Login failed:", loginResult.error);
235
+ console.log("ℹ️ If this is a new user, try running the test again after a few seconds");
236
+ return [2 /*return*/];
237
+ }
238
+ // Verify user state
239
+ console.log("\n🔍 Verifying user state...");
240
+ userInstance = db.gun.user();
241
+ currentUser = (userInstance === null || userInstance === void 0 ? void 0 : userInstance.is)
242
+ ? {
243
+ alias: userInstance.is.alias,
244
+ pub: userInstance.is.pub,
245
+ epub: (_b = (_a = userInstance === null || userInstance === void 0 ? void 0 : userInstance._) === null || _a === void 0 ? void 0 : _a.sea) === null || _b === void 0 ? void 0 : _b.epub,
246
+ }
247
+ : null;
248
+ isLoggedIn = db.isLoggedIn();
249
+ console.log("Current user:", {
250
+ alias: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.alias) || "None",
251
+ pub: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.pub) ? "".concat(currentUser.pub.substring(0, 20), "...") : "None",
252
+ epub: (currentUser === null || currentUser === void 0 ? void 0 : currentUser.epub)
253
+ ? "".concat(currentUser.epub.substring(0, 20), "...")
254
+ : "None",
255
+ });
256
+ console.log("Is logged in:", isLoggedIn);
257
+ if (!isLoggedIn || !currentUser) {
258
+ console.error("❌ User state verification failed");
259
+ return [2 /*return*/];
260
+ }
261
+ console.log("✅ Login verification completed successfully!");
262
+ return [3 /*break*/, 13];
263
+ case 12:
264
+ error_2 = _d.sent();
265
+ console.error("❌ Login threw exception:", error_2);
266
+ return [2 /*return*/];
267
+ case 13:
268
+ console.log("🔄 Proceeding to next test...");
269
+ console.log("");
270
+ // === TEST 2: DATA OPERATIONS WHILE LOGGED IN ===
271
+ console.log("💾 === TEST 2: DATA OPERATIONS WHILE LOGGED IN ===\n");
272
+ _d.label = 14;
273
+ case 14:
274
+ _d.trys.push([14, 21, , 22]);
275
+ gunInstance_1 = db.gun;
276
+ appNode_1 = db.node;
277
+ testData = {
278
+ message: "Hello from auth test!",
279
+ timestamp: Date.now(),
280
+ secret: "This is encrypted data",
281
+ };
282
+ console.log("🔄 Storing data using GUN directly...");
283
+ // Store data using GUN directly without waiting for acknowledgment
284
+ appNode_1.get("test/encrypted-data").put(testData);
285
+ console.log("✓ Data stored successfully (no ack wait)");
286
+ // Wait a moment for data to be stored
287
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
288
+ case 15:
289
+ // Wait a moment for data to be stored
290
+ _d.sent();
291
+ console.log("🔄 Retrieving data using GUN directly...");
292
+ return [4 /*yield*/, new Promise(function (resolve) {
293
+ var timeout = setTimeout(function () {
294
+ console.log("⏰ Data retrieval timeout");
295
+ resolve(null);
296
+ }, 3000);
297
+ appNode_1.get("test/encrypted-data").once(function (data) {
298
+ clearTimeout(timeout);
299
+ resolve(data);
300
+ });
301
+ })];
302
+ case 16:
303
+ retrievedData = _d.sent();
304
+ if (retrievedData) {
305
+ console.log("✓ Data retrieved:", retrievedData);
306
+ }
307
+ else {
308
+ console.log("⚠️ Data retrieval timeout (but this is expected)");
309
+ }
310
+ // Test simple GUN operations
311
+ console.log("\n🔄 Testing simple GUN operations...");
312
+ profileData = {
313
+ name: "Auth Test User",
314
+ email: "authtest@example.com",
315
+ bio: "Testing authentication flow",
316
+ lastUpdated: Date.now(),
317
+ };
318
+ userInstance = db.gun.user();
319
+ currentUser_1 = (userInstance === null || userInstance === void 0 ? void 0 : userInstance.is) ? { pub: userInstance.is.pub } : null;
320
+ if (!(currentUser_1 === null || currentUser_1 === void 0 ? void 0 : currentUser_1.pub)) return [3 /*break*/, 19];
321
+ appNode_1.get("users").get(currentUser_1.pub).get("profile").put(profileData);
322
+ console.log("✓ Profile data stored");
323
+ // Wait a moment
324
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
325
+ case 17:
326
+ // Wait a moment
327
+ _d.sent();
328
+ return [4 /*yield*/, new Promise(function (resolve) {
329
+ var timeout = setTimeout(function () {
330
+ console.log("⏰ Profile retrieval timeout");
331
+ resolve(null);
332
+ }, 3000);
333
+ appNode_1
334
+ .get("users")
335
+ .get(currentUser_1.pub)
336
+ .get("profile")
337
+ .once(function (data) {
338
+ clearTimeout(timeout);
339
+ resolve(data);
340
+ });
341
+ })];
342
+ case 18:
343
+ profile = _d.sent();
344
+ if (profile) {
345
+ console.log("✓ Profile retrieved:", profile);
346
+ }
347
+ else {
348
+ console.log("⚠️ Profile retrieval timeout (but this is expected)");
349
+ }
350
+ return [3 /*break*/, 20];
351
+ case 19:
352
+ console.log("⚠️ No current user pub available for profile test");
353
+ _d.label = 20;
354
+ case 20: return [3 /*break*/, 22];
355
+ case 21:
356
+ error_3 = _d.sent();
357
+ console.error("❌ Data operations failed:", error_3);
358
+ return [3 /*break*/, 22];
359
+ case 22:
360
+ console.log("");
361
+ // === TEST 3: LOGOUT ===
362
+ console.log("🚪 === TEST 3: LOGOUT ===\n");
363
+ _d.label = 23;
364
+ case 23:
365
+ _d.trys.push([23, 25, , 26]);
366
+ console.log("🔄 Attempting logout...");
367
+ gunInstance_2 = db.gun;
368
+ gunInstance_2.user().leave();
369
+ console.log("✓ GUN logout completed");
370
+ // Wait a moment for logout to complete
371
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
372
+ case 24:
373
+ // Wait a moment for logout to complete
374
+ _d.sent();
375
+ isStillLoggedIn = db.isLoggedIn();
376
+ userAfterLogout = db.gun.user();
377
+ currentUserAfterLogout = (userAfterLogout === null || userAfterLogout === void 0 ? void 0 : userAfterLogout.is)
378
+ ? { alias: userAfterLogout.is.alias }
379
+ : null;
380
+ console.log("✓ Logout completed");
381
+ console.log("Is logged in after logout:", isStillLoggedIn);
382
+ console.log("Current user after logout:", (currentUserAfterLogout === null || currentUserAfterLogout === void 0 ? void 0 : currentUserAfterLogout.alias) || "None");
383
+ if (isStillLoggedIn) {
384
+ console.warn("⚠️ User still appears to be logged in after logout");
385
+ }
386
+ else {
387
+ console.log("✓ Logout successful - user is no longer logged in");
388
+ }
389
+ return [3 /*break*/, 26];
390
+ case 25:
391
+ error_4 = _d.sent();
392
+ console.error("❌ Logout failed:", error_4);
393
+ return [3 /*break*/, 26];
394
+ case 26:
395
+ console.log("");
396
+ // === TEST 4: RE-LOGIN ===
397
+ console.log("🔄 === TEST 4: RE-LOGIN ===\n");
398
+ _d.label = 27;
399
+ case 27:
400
+ _d.trys.push([27, 29, , 30]);
401
+ console.log("🔄 Attempting re-login with same credentials...");
402
+ gunInstance_3 = db.gun;
403
+ gunInstance_3.user().auth(testUsername, testPassword);
404
+ // Wait for authentication to complete
405
+ return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 3000); })];
406
+ case 28:
407
+ // Wait for authentication to complete
408
+ _d.sent();
409
+ user_1 = gunInstance_3.user();
410
+ isAuthenticated = !!user_1.is;
411
+ if (isAuthenticated && user_1.is) {
412
+ console.log("✓ Re-login successful");
413
+ console.log("User pub:", ((_c = user_1.is.pub) === null || _c === void 0 ? void 0 : _c.substring(0, 20)) + "...");
414
+ console.log("User alias:", user_1.is.alias || testUsername);
415
+ currentUserInstance = db.gun.user();
416
+ currentUserInfo_1 = (currentUserInstance === null || currentUserInstance === void 0 ? void 0 : currentUserInstance.is)
417
+ ? { alias: currentUserInstance.is.alias }
418
+ : null;
419
+ console.log("Current user:", (currentUserInfo_1 === null || currentUserInfo_1 === void 0 ? void 0 : currentUserInfo_1.alias) || "None");
420
+ }
421
+ else {
422
+ console.error("❌ Re-login failed - authentication not successful");
423
+ }
424
+ return [3 /*break*/, 30];
425
+ case 29:
426
+ error_5 = _d.sent();
427
+ console.error("❌ Re-login threw exception:", error_5);
428
+ return [3 /*break*/, 30];
429
+ case 30:
430
+ console.log("");
431
+ // === TEST 5: ERROR HANDLING ===
432
+ console.log("⚠️ === TEST 5: ERROR HANDLING ===\n");
433
+ // Test invalid credentials
434
+ console.log("🔄 Testing invalid password...");
435
+ _d.label = 31;
436
+ case 31:
437
+ _d.trys.push([31, 33, , 34]);
438
+ return [4 /*yield*/, db.login(testUsername, "wrongpassword")];
439
+ case 32:
440
+ invalidLoginResult = _d.sent();
441
+ console.log("Invalid login result:", {
442
+ success: invalidLoginResult.success,
443
+ error: invalidLoginResult.error || "None",
444
+ });
445
+ if (!invalidLoginResult.success) {
446
+ console.log("✓ Invalid password correctly rejected");
447
+ }
448
+ else {
449
+ console.warn("⚠️ Invalid password was accepted (unexpected)");
450
+ }
451
+ return [3 /*break*/, 34];
452
+ case 33:
453
+ error_6 = _d.sent();
454
+ console.log("✓ Invalid password threw exception (expected):", error_6 instanceof Error ? error_6.message : String(error_6));
455
+ return [3 /*break*/, 34];
456
+ case 34:
457
+ // Test non-existent user
458
+ console.log("\n🔄 Testing non-existent user...");
459
+ _d.label = 35;
460
+ case 35:
461
+ _d.trys.push([35, 37, , 38]);
462
+ return [4 /*yield*/, db.login("nonexistentuser123", "password")];
463
+ case 36:
464
+ nonexistentLoginResult = _d.sent();
465
+ console.log("Non-existent user login result:", {
466
+ success: nonexistentLoginResult.success,
467
+ error: nonexistentLoginResult.error || "None",
468
+ });
469
+ if (!nonexistentLoginResult.success) {
470
+ console.log("✓ Non-existent user correctly rejected");
471
+ }
472
+ else {
473
+ console.warn("⚠️ Non-existent user was accepted (unexpected)");
474
+ }
475
+ return [3 /*break*/, 38];
476
+ case 37:
477
+ error_7 = _d.sent();
478
+ console.log("✓ Non-existent user threw exception (expected):", error_7 instanceof Error ? error_7.message : String(error_7));
479
+ return [3 /*break*/, 38];
480
+ case 38:
481
+ console.log("");
482
+ // === TEST 6: PASSWORD RECOVERY ===
483
+ // NOTE: Password recovery functions removed in simplified database
484
+ // Skipping password recovery test
485
+ console.log("🔐 === TEST 6: PASSWORD RECOVERY ===\n");
486
+ console.log("ℹ️ Password recovery test skipped (functions removed in simplified database)\n");
487
+ // === FINAL LOGOUT ===
488
+ console.log("🚪 === FINAL CLEANUP ===\n");
489
+ try {
490
+ db.logout();
491
+ console.log("✓ Final logout completed");
492
+ }
493
+ catch (error) {
494
+ console.error("❌ Final logout failed:", error);
495
+ }
496
+ // Clear global timeout
497
+ clearTimeout(globalTimeout);
498
+ // Log memory usage before cleanup
499
+ logMemoryUsage("Before Cleanup");
500
+ // Destroy database instance to prevent memory leaks
501
+ try {
502
+ db.destroy();
503
+ console.log("✓ Database instance destroyed");
504
+ }
505
+ catch (error) {
506
+ console.error("❌ Database destruction failed:", error);
507
+ }
508
+ // Force garbage collection if available
509
+ if (typeof global !== "undefined" && global.gc) {
510
+ global.gc();
511
+ logMemoryUsage("After GC");
512
+ }
513
+ // Additional cleanup
514
+ cleanup();
515
+ // Final memory check
516
+ logMemoryUsage("Final");
517
+ console.log("\n✅ Authentication test completed!");
518
+ console.log("\n📊 Test Summary:");
519
+ console.log("- ✓ Signup with username/password");
520
+ console.log("- ✓ Login with username/password");
521
+ console.log("- ✓ Data operations while logged in");
522
+ console.log("- ✓ Logout functionality");
523
+ console.log("- ✓ Re-login capability");
524
+ console.log("- ✓ Error handling for invalid credentials");
525
+ console.log("- ✓ Error handling for non-existent users");
526
+ return [2 /*return*/];
527
+ }
528
+ });
529
+ });
530
+ }
531
+ // Esegui il test
532
+ if (require.main === module) {
533
+ authTest().catch(console.error);
534
+ }
535
+ export { authTest };