shogun-core 6.4.2 โ 6.4.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/dist/browser/shogun-core.js +208 -172
- package/dist/browser/shogun-core.js.map +1 -1
- package/dist/src/gundb/db.js +208 -172
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/gundb/db.d.ts +4 -67
- package/package.json +1 -1
|
@@ -123202,11 +123202,6 @@ function crypto_randomUUID() {
|
|
|
123202
123202
|
}
|
|
123203
123203
|
|
|
123204
123204
|
;// ./src/gundb/db.ts
|
|
123205
|
-
/**
|
|
123206
|
-
* GunDB - Simplified database wrapper for Gun.js
|
|
123207
|
-
* Provides only essential signup and login functionality
|
|
123208
|
-
* Based on Gun.js User Authentication: https://deepwiki.com/amark/gun/6.1-user-authentication
|
|
123209
|
-
*/
|
|
123210
123205
|
var db_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
123211
123206
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
123212
123207
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -123247,9 +123242,6 @@ var db_generator = (undefined && undefined.__generator) || function (thisArg, bo
|
|
|
123247
123242
|
|
|
123248
123243
|
|
|
123249
123244
|
|
|
123250
|
-
/**
|
|
123251
|
-
* Configuration constants
|
|
123252
|
-
*/
|
|
123253
123245
|
var CONFIG = {
|
|
123254
123246
|
PASSWORD: {
|
|
123255
123247
|
MIN_LENGTH: 8,
|
|
@@ -123262,10 +123254,7 @@ var DataBase = /** @class */ (function () {
|
|
|
123262
123254
|
this.user = null;
|
|
123263
123255
|
this.onAuthCallbacks = [];
|
|
123264
123256
|
this._isDestroyed = false;
|
|
123265
|
-
console.log("[DB] Initializing DataBase");
|
|
123266
|
-
// Initialize event emitter
|
|
123267
123257
|
this.eventEmitter = new EventEmitter();
|
|
123268
|
-
// Validate Gun instance
|
|
123269
123258
|
if (!gun) {
|
|
123270
123259
|
throw new Error("Gun instance is required but was not provided");
|
|
123271
123260
|
}
|
|
@@ -123273,14 +123262,9 @@ var DataBase = /** @class */ (function () {
|
|
|
123273
123262
|
throw new Error("Gun instance is invalid: gun.user is not a function");
|
|
123274
123263
|
}
|
|
123275
123264
|
this.gun = gun;
|
|
123276
|
-
console.log("[DB] Gun instance validated");
|
|
123277
|
-
// Recall user session if available
|
|
123278
123265
|
this.user = this.gun.user().recall({ sessionStorage: true });
|
|
123279
|
-
console.log("[DB] User recall completed");
|
|
123280
123266
|
this.subscribeToAuthEvents();
|
|
123281
|
-
console.log("[DB] Auth events subscribed");
|
|
123282
123267
|
this.crypto = gundb_crypto_namespaceObject;
|
|
123283
|
-
// Get SEA from gun instance or global
|
|
123284
123268
|
this.sea = sea || null;
|
|
123285
123269
|
if (!this.sea) {
|
|
123286
123270
|
if (this.gun.SEA) {
|
|
@@ -123295,20 +123279,13 @@ var DataBase = /** @class */ (function () {
|
|
|
123295
123279
|
}
|
|
123296
123280
|
this._rxjs = new RxJS(this.gun);
|
|
123297
123281
|
this.node = this.gun.get(appScope);
|
|
123282
|
+
this.usernamesNode = this.gun.get("usernames");
|
|
123298
123283
|
console.log("[DB] DataBase initialization completed");
|
|
123299
123284
|
}
|
|
123300
|
-
/**
|
|
123301
|
-
* Initialize with app scope
|
|
123302
|
-
*/
|
|
123303
123285
|
DataBase.prototype.initialize = function (appScope) {
|
|
123304
123286
|
if (appScope === void 0) { appScope = "shogun"; }
|
|
123305
|
-
console.log("[DB] Initializing with appScope: ".concat(appScope));
|
|
123306
123287
|
this.node = this.gun.get(appScope);
|
|
123307
|
-
console.log("[DB] App scope node initialized");
|
|
123308
123288
|
};
|
|
123309
|
-
/**
|
|
123310
|
-
* Subscribe to Gun auth events
|
|
123311
|
-
*/
|
|
123312
123289
|
DataBase.prototype.subscribeToAuthEvents = function () {
|
|
123313
123290
|
var _this = this;
|
|
123314
123291
|
this.gun.on("auth", function (ack) {
|
|
@@ -123321,16 +123298,10 @@ var DataBase = /** @class */ (function () {
|
|
|
123321
123298
|
}
|
|
123322
123299
|
});
|
|
123323
123300
|
};
|
|
123324
|
-
/**
|
|
123325
|
-
* Notify all auth callbacks
|
|
123326
|
-
*/
|
|
123327
123301
|
DataBase.prototype.notifyAuthListeners = function (pub) {
|
|
123328
123302
|
var user = this.gun.user();
|
|
123329
123303
|
this.onAuthCallbacks.forEach(function (cb) { return cb(user); });
|
|
123330
123304
|
};
|
|
123331
|
-
/**
|
|
123332
|
-
* Register authentication callback
|
|
123333
|
-
*/
|
|
123334
123305
|
DataBase.prototype.onAuth = function (callback) {
|
|
123335
123306
|
var _this = this;
|
|
123336
123307
|
this.onAuthCallbacks.push(callback);
|
|
@@ -123343,9 +123314,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123343
123314
|
_this.onAuthCallbacks.splice(i, 1);
|
|
123344
123315
|
};
|
|
123345
123316
|
};
|
|
123346
|
-
/**
|
|
123347
|
-
* Check if user is logged in
|
|
123348
|
-
*/
|
|
123349
123317
|
DataBase.prototype.isLoggedIn = function () {
|
|
123350
123318
|
try {
|
|
123351
123319
|
var user = this.gun.user();
|
|
@@ -123355,9 +123323,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123355
123323
|
return false;
|
|
123356
123324
|
}
|
|
123357
123325
|
};
|
|
123358
|
-
/**
|
|
123359
|
-
* Restore session from storage
|
|
123360
|
-
*/
|
|
123361
123326
|
DataBase.prototype.restoreSession = function () {
|
|
123362
123327
|
try {
|
|
123363
123328
|
if (typeof sessionStorage === "undefined") {
|
|
@@ -123388,9 +123353,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123388
123353
|
return { success: false, error: String(error) };
|
|
123389
123354
|
}
|
|
123390
123355
|
};
|
|
123391
|
-
/**
|
|
123392
|
-
* Logout user
|
|
123393
|
-
*/
|
|
123394
123356
|
DataBase.prototype.logout = function () {
|
|
123395
123357
|
try {
|
|
123396
123358
|
var currentUser = this.gun.user();
|
|
@@ -123406,9 +123368,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123406
123368
|
console.error("[DB] Error during logout:", error);
|
|
123407
123369
|
}
|
|
123408
123370
|
};
|
|
123409
|
-
/**
|
|
123410
|
-
* Validate password strength
|
|
123411
|
-
*/
|
|
123412
123371
|
DataBase.prototype.validatePasswordStrength = function (password) {
|
|
123413
123372
|
if (password.length < CONFIG.PASSWORD.MIN_LENGTH) {
|
|
123414
123373
|
return {
|
|
@@ -123418,9 +123377,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123418
123377
|
}
|
|
123419
123378
|
return { valid: true };
|
|
123420
123379
|
};
|
|
123421
|
-
/**
|
|
123422
|
-
* Validate signup credentials
|
|
123423
|
-
*/
|
|
123424
123380
|
DataBase.prototype.validateSignupCredentials = function (username, password, pair) {
|
|
123425
123381
|
if (!username || username.length < 1) {
|
|
123426
123382
|
return {
|
|
@@ -123442,19 +123398,114 @@ var DataBase = /** @class */ (function () {
|
|
|
123442
123398
|
}
|
|
123443
123399
|
return this.validatePasswordStrength(password);
|
|
123444
123400
|
};
|
|
123445
|
-
|
|
123446
|
-
|
|
123447
|
-
|
|
123401
|
+
DataBase.prototype.ensureAliasAvailable = function (alias_1) {
|
|
123402
|
+
return db_awaiter(this, arguments, void 0, function (alias, timeout) {
|
|
123403
|
+
var available;
|
|
123404
|
+
if (timeout === void 0) { timeout = 5000; }
|
|
123405
|
+
return db_generator(this, function (_a) {
|
|
123406
|
+
switch (_a.label) {
|
|
123407
|
+
case 0: return [4 /*yield*/, this.isAliasAvailable(alias, timeout)];
|
|
123408
|
+
case 1:
|
|
123409
|
+
available = _a.sent();
|
|
123410
|
+
if (!available) {
|
|
123411
|
+
throw new Error("Alias \"".concat(alias, "\" is already registered in Gun"));
|
|
123412
|
+
}
|
|
123413
|
+
return [2 /*return*/];
|
|
123414
|
+
}
|
|
123415
|
+
});
|
|
123416
|
+
});
|
|
123417
|
+
};
|
|
123418
|
+
DataBase.prototype.isAliasAvailable = function (alias_1) {
|
|
123419
|
+
return db_awaiter(this, arguments, void 0, function (alias, timeout) {
|
|
123420
|
+
var normalizedAlias;
|
|
123421
|
+
var _this = this;
|
|
123422
|
+
if (timeout === void 0) { timeout = 5000; }
|
|
123423
|
+
return db_generator(this, function (_a) {
|
|
123424
|
+
if (typeof alias !== "string" || !alias.trim()) {
|
|
123425
|
+
throw new Error("Alias must be a non-empty string");
|
|
123426
|
+
}
|
|
123427
|
+
normalizedAlias = alias.trim().toLowerCase();
|
|
123428
|
+
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
123429
|
+
var settled = false;
|
|
123430
|
+
var timer = setTimeout(function () {
|
|
123431
|
+
if (settled)
|
|
123432
|
+
return;
|
|
123433
|
+
settled = true;
|
|
123434
|
+
reject(new Error("Timeout while checking alias availability"));
|
|
123435
|
+
}, timeout);
|
|
123436
|
+
_this.usernamesNode.get(normalizedAlias).once(function (existingPub) {
|
|
123437
|
+
if (settled)
|
|
123438
|
+
return;
|
|
123439
|
+
settled = true;
|
|
123440
|
+
clearTimeout(timer);
|
|
123441
|
+
resolve(!existingPub);
|
|
123442
|
+
});
|
|
123443
|
+
})];
|
|
123444
|
+
});
|
|
123445
|
+
});
|
|
123446
|
+
};
|
|
123447
|
+
DataBase.prototype.registerAlias = function (alias_1, userPub_1) {
|
|
123448
|
+
return db_awaiter(this, arguments, void 0, function (alias, userPub, timeout) {
|
|
123449
|
+
var normalizedAlias, available;
|
|
123450
|
+
var _this = this;
|
|
123451
|
+
if (timeout === void 0) { timeout = 5000; }
|
|
123452
|
+
return db_generator(this, function (_a) {
|
|
123453
|
+
switch (_a.label) {
|
|
123454
|
+
case 0:
|
|
123455
|
+
if (!alias || !alias.trim()) {
|
|
123456
|
+
throw new Error("Alias must be provided for registration");
|
|
123457
|
+
}
|
|
123458
|
+
if (!userPub) {
|
|
123459
|
+
throw new Error("userPub must be provided for alias registration");
|
|
123460
|
+
}
|
|
123461
|
+
normalizedAlias = alias.trim().toLowerCase();
|
|
123462
|
+
return [4 /*yield*/, this.isAliasAvailable(normalizedAlias, timeout).catch(function (error) {
|
|
123463
|
+
console.error("[DB] Alias availability check failed:", error);
|
|
123464
|
+
throw error;
|
|
123465
|
+
})];
|
|
123466
|
+
case 1:
|
|
123467
|
+
available = _a.sent();
|
|
123468
|
+
if (!available) {
|
|
123469
|
+
throw new Error("Alias \"".concat(normalizedAlias, "\" is no longer available for registration"));
|
|
123470
|
+
}
|
|
123471
|
+
return [4 /*yield*/, new Promise(function (resolve, reject) {
|
|
123472
|
+
var settled = false;
|
|
123473
|
+
var timer = setTimeout(function () {
|
|
123474
|
+
if (settled)
|
|
123475
|
+
return;
|
|
123476
|
+
settled = true;
|
|
123477
|
+
reject(new Error("Timeout while registering alias"));
|
|
123478
|
+
}, timeout);
|
|
123479
|
+
_this.usernamesNode.get(normalizedAlias).put(userPub, function (ack) {
|
|
123480
|
+
if (settled)
|
|
123481
|
+
return;
|
|
123482
|
+
settled = true;
|
|
123483
|
+
clearTimeout(timer);
|
|
123484
|
+
if (ack && ack.err) {
|
|
123485
|
+
reject(new Error(String(ack.err)));
|
|
123486
|
+
return;
|
|
123487
|
+
}
|
|
123488
|
+
resolve();
|
|
123489
|
+
});
|
|
123490
|
+
}).catch(function (error) {
|
|
123491
|
+
console.error("[DB] Failed to register alias:", error);
|
|
123492
|
+
throw error;
|
|
123493
|
+
})];
|
|
123494
|
+
case 2:
|
|
123495
|
+
_a.sent();
|
|
123496
|
+
return [2 /*return*/];
|
|
123497
|
+
}
|
|
123498
|
+
});
|
|
123499
|
+
});
|
|
123500
|
+
};
|
|
123448
123501
|
DataBase.prototype.resetAuthState = function () {
|
|
123449
123502
|
try {
|
|
123450
123503
|
var user = this.gun.user();
|
|
123451
123504
|
if (user && user._) {
|
|
123452
123505
|
var cat = user._;
|
|
123453
|
-
// Reset Gun's internal auth state
|
|
123454
123506
|
cat.ing = false;
|
|
123455
123507
|
cat.auth = null;
|
|
123456
123508
|
cat.act = null;
|
|
123457
|
-
// Clear any pending auth operations
|
|
123458
123509
|
if (cat.auth) {
|
|
123459
123510
|
cat.auth = null;
|
|
123460
123511
|
}
|
|
@@ -123471,9 +123522,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123471
123522
|
// Ignore
|
|
123472
123523
|
}
|
|
123473
123524
|
};
|
|
123474
|
-
/**
|
|
123475
|
-
* Build login result
|
|
123476
|
-
*/
|
|
123477
123525
|
DataBase.prototype.buildLoginResult = function (username, userPub) {
|
|
123478
123526
|
var _a, _b;
|
|
123479
123527
|
var seaPair = (_b = (_a = this.gun.user()) === null || _a === void 0 ? void 0 : _a._) === null || _b === void 0 ? void 0 : _b.sea;
|
|
@@ -123491,9 +123539,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123491
123539
|
: undefined,
|
|
123492
123540
|
};
|
|
123493
123541
|
};
|
|
123494
|
-
/**
|
|
123495
|
-
* Save credentials to session storage
|
|
123496
|
-
*/
|
|
123497
123542
|
DataBase.prototype.saveCredentials = function (userInfo) {
|
|
123498
123543
|
try {
|
|
123499
123544
|
if (typeof sessionStorage !== "undefined") {
|
|
@@ -123511,13 +123556,9 @@ var DataBase = /** @class */ (function () {
|
|
|
123511
123556
|
console.error("[DB] Error saving credentials:", error);
|
|
123512
123557
|
}
|
|
123513
123558
|
};
|
|
123514
|
-
/**
|
|
123515
|
-
* Sign up a new user
|
|
123516
|
-
* Based on Gun.js user().create() - https://deepwiki.com/amark/gun/6.1-user-authentication
|
|
123517
|
-
*/
|
|
123518
123559
|
DataBase.prototype.signUp = function (username, password, pair) {
|
|
123519
123560
|
return db_awaiter(this, void 0, void 0, function () {
|
|
123520
|
-
var validation, normalizedUsername, user, loginResult, e_1, result;
|
|
123561
|
+
var validation, normalizedUsername, user, loginResult, e_1, aliasError_1, result;
|
|
123521
123562
|
var _this = this;
|
|
123522
123563
|
return db_generator(this, function (_a) {
|
|
123523
123564
|
switch (_a.label) {
|
|
@@ -123526,7 +123567,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123526
123567
|
if (!validation.valid) {
|
|
123527
123568
|
return [2 /*return*/, { success: false, error: validation.error }];
|
|
123528
123569
|
}
|
|
123529
|
-
console.log("[DB] Signup validation:", validation);
|
|
123530
123570
|
this.resetAuthState();
|
|
123531
123571
|
normalizedUsername = username.trim().toLowerCase();
|
|
123532
123572
|
user = this.gun.user();
|
|
@@ -123543,7 +123583,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123543
123583
|
}
|
|
123544
123584
|
callbackInvoked = true;
|
|
123545
123585
|
if (ack.err) {
|
|
123546
|
-
// Could not login with pair, try to create user with username/password
|
|
123547
123586
|
resolve({ success: false, error: ack.err });
|
|
123548
123587
|
return;
|
|
123549
123588
|
}
|
|
@@ -123566,7 +123605,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123566
123605
|
})];
|
|
123567
123606
|
case 2:
|
|
123568
123607
|
loginResult = _a.sent();
|
|
123569
|
-
// If we got a successful result, return it
|
|
123570
123608
|
if (loginResult && loginResult.success) {
|
|
123571
123609
|
return [2 /*return*/, loginResult];
|
|
123572
123610
|
}
|
|
@@ -123575,101 +123613,120 @@ var DataBase = /** @class */ (function () {
|
|
|
123575
123613
|
e_1 = _a.sent();
|
|
123576
123614
|
return [3 /*break*/, 4];
|
|
123577
123615
|
case 4:
|
|
123578
|
-
|
|
123579
|
-
return [4 /*yield*/,
|
|
123580
|
-
|
|
123581
|
-
|
|
123582
|
-
|
|
123583
|
-
|
|
123584
|
-
|
|
123585
|
-
|
|
123586
|
-
|
|
123587
|
-
|
|
123588
|
-
|
|
123589
|
-
|
|
123590
|
-
|
|
123591
|
-
|
|
123592
|
-
|
|
123593
|
-
|
|
123594
|
-
|
|
123595
|
-
|
|
123596
|
-
|
|
123597
|
-
|
|
123598
|
-
|
|
123599
|
-
|
|
123600
|
-
|
|
123601
|
-
|
|
123602
|
-
|
|
123603
|
-
|
|
123604
|
-
|
|
123605
|
-
|
|
123606
|
-
|
|
123607
|
-
|
|
123608
|
-
|
|
123609
|
-
|
|
123610
|
-
|
|
123611
|
-
|
|
123612
|
-
|
|
123613
|
-
|
|
123614
|
-
|
|
123615
|
-
|
|
123616
|
-
|
|
123617
|
-
|
|
123618
|
-
|
|
123619
|
-
|
|
123620
|
-
}
|
|
123621
|
-
// Verify user is authenticated
|
|
123622
|
-
var authenticatedUserPub = (_a = user === null || user === void 0 ? void 0 : user.is) === null || _a === void 0 ? void 0 : _a.pub;
|
|
123623
|
-
if (!authenticatedUserPub) {
|
|
123624
|
-
_this.resetAuthState();
|
|
123625
|
-
resolve({
|
|
123626
|
-
success: false,
|
|
123627
|
-
error: "User not authenticated after signup",
|
|
123628
|
-
});
|
|
123629
|
-
return;
|
|
123630
|
-
}
|
|
123631
|
-
_this.user = user;
|
|
123632
|
-
var alias = (_b = user === null || user === void 0 ? void 0 : user.is) === null || _b === void 0 ? void 0 : _b.alias;
|
|
123633
|
-
var userPair = (_c = user === null || user === void 0 ? void 0 : user._) === null || _c === void 0 ? void 0 : _c.sea;
|
|
123634
|
-
try {
|
|
123635
|
-
_this.saveCredentials({
|
|
123636
|
-
alias: alias || normalizedUsername,
|
|
123637
|
-
pair: pair !== null && pair !== void 0 ? pair : userPair,
|
|
123638
|
-
userPub: authenticatedUserPub,
|
|
123639
|
-
});
|
|
123640
|
-
}
|
|
123641
|
-
catch (saveError) {
|
|
123642
|
-
// Ignore save errors
|
|
123643
|
-
}
|
|
123644
|
-
var sea = (_d = user === null || user === void 0 ? void 0 : user._) === null || _d === void 0 ? void 0 : _d.sea;
|
|
123645
|
-
resolve({
|
|
123646
|
-
success: true,
|
|
123647
|
-
userPub: authenticatedUserPub,
|
|
123648
|
-
username: normalizedUsername,
|
|
123649
|
-
isNewUser: true,
|
|
123650
|
-
sea: sea
|
|
123651
|
-
? {
|
|
123652
|
-
pub: sea.pub,
|
|
123653
|
-
priv: sea.priv,
|
|
123654
|
-
epub: sea.epub,
|
|
123655
|
-
epriv: sea.epriv,
|
|
123616
|
+
_a.trys.push([4, 6, , 7]);
|
|
123617
|
+
return [4 /*yield*/, this.ensureAliasAvailable(normalizedUsername)];
|
|
123618
|
+
case 5:
|
|
123619
|
+
_a.sent();
|
|
123620
|
+
return [3 /*break*/, 7];
|
|
123621
|
+
case 6:
|
|
123622
|
+
aliasError_1 = _a.sent();
|
|
123623
|
+
return [2 /*return*/, {
|
|
123624
|
+
success: false,
|
|
123625
|
+
error: aliasError_1 instanceof Error ? aliasError_1.message : String(aliasError_1),
|
|
123626
|
+
}];
|
|
123627
|
+
case 7: return [4 /*yield*/, new Promise(function (resolve) {
|
|
123628
|
+
var callbackInvoked = false;
|
|
123629
|
+
user.create(normalizedUsername, password, function (createAck) {
|
|
123630
|
+
if (callbackInvoked) {
|
|
123631
|
+
return;
|
|
123632
|
+
}
|
|
123633
|
+
if (createAck.err ||
|
|
123634
|
+
(createAck.ok !== undefined && createAck.ok !== 0)) {
|
|
123635
|
+
callbackInvoked = true;
|
|
123636
|
+
_this.resetAuthState();
|
|
123637
|
+
resolve({ success: false, error: createAck.err || "Signup failed" });
|
|
123638
|
+
return;
|
|
123639
|
+
}
|
|
123640
|
+
var userPub = createAck.pub;
|
|
123641
|
+
if (!userPub) {
|
|
123642
|
+
callbackInvoked = true;
|
|
123643
|
+
_this.resetAuthState();
|
|
123644
|
+
resolve({
|
|
123645
|
+
success: false,
|
|
123646
|
+
error: "No userPub available from signup",
|
|
123647
|
+
});
|
|
123648
|
+
return;
|
|
123649
|
+
}
|
|
123650
|
+
user.auth(normalizedUsername, password, function (authAck) { return db_awaiter(_this, void 0, void 0, function () {
|
|
123651
|
+
var authenticatedUserPub, alias, userPair, registerError_1, sea;
|
|
123652
|
+
var _a, _b, _c, _d;
|
|
123653
|
+
return db_generator(this, function (_e) {
|
|
123654
|
+
switch (_e.label) {
|
|
123655
|
+
case 0:
|
|
123656
|
+
if (callbackInvoked) {
|
|
123657
|
+
return [2 /*return*/];
|
|
123656
123658
|
}
|
|
123657
|
-
|
|
123658
|
-
|
|
123659
|
+
callbackInvoked = true;
|
|
123660
|
+
if (authAck.err) {
|
|
123661
|
+
this.resetAuthState();
|
|
123662
|
+
resolve({
|
|
123663
|
+
success: false,
|
|
123664
|
+
error: authAck.err || "Authentication after signup failed",
|
|
123665
|
+
});
|
|
123666
|
+
return [2 /*return*/];
|
|
123667
|
+
}
|
|
123668
|
+
authenticatedUserPub = (_a = user === null || user === void 0 ? void 0 : user.is) === null || _a === void 0 ? void 0 : _a.pub;
|
|
123669
|
+
if (!authenticatedUserPub) {
|
|
123670
|
+
this.resetAuthState();
|
|
123671
|
+
resolve({
|
|
123672
|
+
success: false,
|
|
123673
|
+
error: "User not authenticated after signup",
|
|
123674
|
+
});
|
|
123675
|
+
return [2 /*return*/];
|
|
123676
|
+
}
|
|
123677
|
+
this.user = user;
|
|
123678
|
+
alias = (_b = user === null || user === void 0 ? void 0 : user.is) === null || _b === void 0 ? void 0 : _b.alias;
|
|
123679
|
+
userPair = (_c = user === null || user === void 0 ? void 0 : user._) === null || _c === void 0 ? void 0 : _c.sea;
|
|
123680
|
+
try {
|
|
123681
|
+
this.saveCredentials({
|
|
123682
|
+
alias: alias || normalizedUsername,
|
|
123683
|
+
pair: pair !== null && pair !== void 0 ? pair : userPair,
|
|
123684
|
+
userPub: authenticatedUserPub,
|
|
123685
|
+
});
|
|
123686
|
+
}
|
|
123687
|
+
catch (saveError) {
|
|
123688
|
+
// Ignore save errors
|
|
123689
|
+
}
|
|
123690
|
+
_e.label = 1;
|
|
123691
|
+
case 1:
|
|
123692
|
+
_e.trys.push([1, 3, , 4]);
|
|
123693
|
+
return [4 /*yield*/, this.registerAlias(alias || normalizedUsername, authenticatedUserPub)];
|
|
123694
|
+
case 2:
|
|
123695
|
+
_e.sent();
|
|
123696
|
+
return [3 /*break*/, 4];
|
|
123697
|
+
case 3:
|
|
123698
|
+
registerError_1 = _e.sent();
|
|
123699
|
+
console.error("[DB] Alias registration failed:", registerError_1);
|
|
123700
|
+
return [3 /*break*/, 4];
|
|
123701
|
+
case 4:
|
|
123702
|
+
sea = (_d = user === null || user === void 0 ? void 0 : user._) === null || _d === void 0 ? void 0 : _d.sea;
|
|
123703
|
+
resolve({
|
|
123704
|
+
success: true,
|
|
123705
|
+
userPub: authenticatedUserPub,
|
|
123706
|
+
username: normalizedUsername,
|
|
123707
|
+
isNewUser: true,
|
|
123708
|
+
sea: sea
|
|
123709
|
+
? {
|
|
123710
|
+
pub: sea.pub,
|
|
123711
|
+
priv: sea.priv,
|
|
123712
|
+
epub: sea.epub,
|
|
123713
|
+
epriv: sea.epriv,
|
|
123714
|
+
}
|
|
123715
|
+
: undefined,
|
|
123716
|
+
});
|
|
123717
|
+
return [2 /*return*/];
|
|
123718
|
+
}
|
|
123659
123719
|
});
|
|
123660
|
-
});
|
|
123661
|
-
})
|
|
123662
|
-
|
|
123720
|
+
}); });
|
|
123721
|
+
});
|
|
123722
|
+
})];
|
|
123723
|
+
case 8:
|
|
123663
123724
|
result = _a.sent();
|
|
123664
123725
|
return [2 /*return*/, result];
|
|
123665
123726
|
}
|
|
123666
123727
|
});
|
|
123667
123728
|
});
|
|
123668
123729
|
};
|
|
123669
|
-
/**
|
|
123670
|
-
* Login with username and password
|
|
123671
|
-
* Based on Gun.js user().auth() - https://deepwiki.com/amark/gun/6.1-user-authentication
|
|
123672
|
-
*/
|
|
123673
123730
|
DataBase.prototype.login = function (username, password, pair) {
|
|
123674
123731
|
return db_awaiter(this, void 0, void 0, function () {
|
|
123675
123732
|
var normalizedUsername, user;
|
|
@@ -123678,7 +123735,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123678
123735
|
this.resetAuthState();
|
|
123679
123736
|
normalizedUsername = username.trim().toLowerCase();
|
|
123680
123737
|
user = this.gun.user();
|
|
123681
|
-
console.log("[DB] Login with username:", normalizedUsername);
|
|
123682
123738
|
return [2 /*return*/, new Promise(function (resolve) {
|
|
123683
123739
|
if (pair) {
|
|
123684
123740
|
user.auth(pair, function (ack) {
|
|
@@ -123744,9 +123800,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123744
123800
|
});
|
|
123745
123801
|
});
|
|
123746
123802
|
};
|
|
123747
|
-
/**
|
|
123748
|
-
* Get current user
|
|
123749
|
-
*/
|
|
123750
123803
|
DataBase.prototype.getCurrentUser = function () {
|
|
123751
123804
|
try {
|
|
123752
123805
|
var user = this.gun.user();
|
|
@@ -123832,10 +123885,6 @@ var DataBase = /** @class */ (function () {
|
|
|
123832
123885
|
});
|
|
123833
123886
|
});
|
|
123834
123887
|
};
|
|
123835
|
-
/**
|
|
123836
|
-
* Login with SEA pair
|
|
123837
|
-
*/
|
|
123838
|
-
// Legacy method - kept for backward compatibility
|
|
123839
123888
|
DataBase.prototype.loginWithPairLegacy = function (username, pair) {
|
|
123840
123889
|
return db_awaiter(this, void 0, void 0, function () {
|
|
123841
123890
|
return db_generator(this, function (_a) {
|
|
@@ -123843,22 +123892,15 @@ var DataBase = /** @class */ (function () {
|
|
|
123843
123892
|
});
|
|
123844
123893
|
});
|
|
123845
123894
|
};
|
|
123846
|
-
/**
|
|
123847
|
-
* Get RxJS module
|
|
123848
|
-
*/
|
|
123849
123895
|
DataBase.prototype.rx = function () {
|
|
123850
123896
|
return this._rxjs;
|
|
123851
123897
|
};
|
|
123852
|
-
/**
|
|
123853
|
-
* Destroy database instance
|
|
123854
|
-
*/
|
|
123855
123898
|
DataBase.prototype.destroy = function () {
|
|
123856
123899
|
if (this._isDestroyed)
|
|
123857
123900
|
return;
|
|
123858
123901
|
console.log("[DB] Destroying DataBase instance...");
|
|
123859
123902
|
this._isDestroyed = true;
|
|
123860
123903
|
this.onAuthCallbacks.length = 0;
|
|
123861
|
-
// Clear event listeners
|
|
123862
123904
|
this.eventEmitter.removeAllListeners();
|
|
123863
123905
|
if (this.user) {
|
|
123864
123906
|
try {
|
|
@@ -123872,18 +123914,12 @@ var DataBase = /** @class */ (function () {
|
|
|
123872
123914
|
this._rxjs = undefined;
|
|
123873
123915
|
console.log("[DB] DataBase instance destroyed");
|
|
123874
123916
|
};
|
|
123875
|
-
/**
|
|
123876
|
-
* Aggressive auth cleanup (kept for compatibility with tests)
|
|
123877
|
-
*/
|
|
123878
123917
|
DataBase.prototype.aggressiveAuthCleanup = function () {
|
|
123879
123918
|
console.log("๐งน Performing aggressive auth cleanup...");
|
|
123880
123919
|
this.resetAuthState();
|
|
123881
123920
|
this.logout();
|
|
123882
123921
|
console.log("โ Aggressive auth cleanup completed");
|
|
123883
123922
|
};
|
|
123884
|
-
/**
|
|
123885
|
-
* Event emitter methods for CoreInitializer compatibility
|
|
123886
|
-
*/
|
|
123887
123923
|
DataBase.prototype.on = function (event, listener) {
|
|
123888
123924
|
this.eventEmitter.on(event, listener);
|
|
123889
123925
|
};
|