shogun-core 4.2.1 → 4.2.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.
@@ -134142,7 +134142,16 @@ class DataBase {
134142
134142
  */
134143
134143
  async put(path, data) {
134144
134144
  const node = this.navigateToPath(this.node, path);
134145
- return await node.put(data).then();
134145
+ return new Promise((resolve, reject) => {
134146
+ node.put(data, (ack) => {
134147
+ if (ack && ack.err) {
134148
+ reject(new Error(ack.err));
134149
+ }
134150
+ else {
134151
+ resolve(ack);
134152
+ }
134153
+ });
134154
+ });
134146
134155
  }
134147
134156
  /**
134148
134157
  * Sets data at the specified path
@@ -134152,7 +134161,16 @@ class DataBase {
134152
134161
  */
134153
134162
  async set(path, data) {
134154
134163
  const node = this.navigateToPath(this.node, path);
134155
- return await node.set(data).then();
134164
+ return new Promise((resolve, reject) => {
134165
+ node.set(data, (ack) => {
134166
+ if (ack && ack.err) {
134167
+ reject(new Error(ack.err));
134168
+ }
134169
+ else {
134170
+ resolve(ack);
134171
+ }
134172
+ });
134173
+ });
134156
134174
  }
134157
134175
  /**
134158
134176
  * Removes data at the specified path
@@ -134161,7 +134179,16 @@ class DataBase {
134161
134179
  */
134162
134180
  async remove(path) {
134163
134181
  const node = this.navigateToPath(this.node, path);
134164
- return await node.put(null).then();
134182
+ return new Promise((resolve, reject) => {
134183
+ node.put(null, (ack) => {
134184
+ if (ack && ack.err) {
134185
+ reject(new Error(ack.err));
134186
+ }
134187
+ else {
134188
+ resolve(ack);
134189
+ }
134190
+ });
134191
+ });
134165
134192
  }
134166
134193
  /**
134167
134194
  * Checks if a user is currently logged in
@@ -134692,7 +134719,11 @@ class DataBase {
134692
134719
  if (normalizedUsername.length === 0) {
134693
134720
  throw new Error("Username cannot be empty");
134694
134721
  }
134695
- const existingUser = await this.gun.get(userPub).then();
134722
+ const existingUser = await new Promise((resolve) => {
134723
+ this.gun.get(userPub).once((data) => {
134724
+ resolve(data);
134725
+ });
134726
+ });
134696
134727
  const isNewUser = !existingUser || !existingUser.alias;
134697
134728
  // const isNewUser = true;
134698
134729
  // Get user's encryption public key (epub) for comprehensive tracking
@@ -134785,14 +134816,17 @@ class DataBase {
134785
134816
  const aliasNode = this.gun.get(`~@${username}`);
134786
134817
  // For Gun.js alias validation to pass, the data must be exactly equal to the key
134787
134818
  // The key is `~@${username}`, so we store that as the data
134788
- const ack = await aliasNode.put(`~@${username}`).then();
134789
- if (ack.err) {
134790
- console.error(`Error creating alias index: ${ack.err}`);
134791
- return false;
134792
- }
134793
- else {
134794
- return true;
134795
- }
134819
+ return new Promise((resolve) => {
134820
+ aliasNode.put(`~@${username}`, (ack) => {
134821
+ if (ack && ack.err) {
134822
+ console.error(`Error creating alias index: ${ack.err}`);
134823
+ resolve(false);
134824
+ }
134825
+ else {
134826
+ resolve(true);
134827
+ }
134828
+ });
134829
+ });
134796
134830
  }
134797
134831
  catch (error) {
134798
134832
  console.error(`Error creating alias index: ${error}`);
@@ -134804,18 +134838,20 @@ class DataBase {
134804
134838
  */
134805
134839
  async createUsernameMapping(username, userPub) {
134806
134840
  try {
134807
- const ack = await this.node
134808
- .get("usernames")
134809
- .get(username)
134810
- .put(userPub)
134811
- .then();
134812
- if (ack.err) {
134813
- console.error(`Error creating username mapping: ${ack.err}`);
134814
- return false;
134815
- }
134816
- else {
134817
- return true;
134818
- }
134841
+ return new Promise((resolve) => {
134842
+ this.node
134843
+ .get("usernames")
134844
+ .get(username)
134845
+ .put(userPub, (ack) => {
134846
+ if (ack && ack.err) {
134847
+ console.error(`Error creating username mapping: ${ack.err}`);
134848
+ resolve(false);
134849
+ }
134850
+ else {
134851
+ resolve(true);
134852
+ }
134853
+ });
134854
+ });
134819
134855
  }
134820
134856
  catch (error) {
134821
134857
  console.error(`Error creating username mapping: ${error}`);
@@ -134834,18 +134870,20 @@ class DataBase {
134834
134870
  registeredAt: Date.now().toString(),
134835
134871
  lastSeen: Date.now().toString(),
134836
134872
  };
134837
- const ack = await this.node
134838
- .get("users")
134839
- .get(userPub)
134840
- .put(userData)
134841
- .then();
134842
- if (ack.err) {
134843
- console.error(`Error creating user registry: ${ack.err}`);
134844
- return false;
134845
- }
134846
- else {
134847
- return true;
134848
- }
134873
+ return new Promise((resolve) => {
134874
+ this.node
134875
+ .get("users")
134876
+ .get(userPub)
134877
+ .put(userData, (ack) => {
134878
+ if (ack && ack.err) {
134879
+ console.error(`Error creating user registry: ${ack.err}`);
134880
+ resolve(false);
134881
+ }
134882
+ else {
134883
+ resolve(true);
134884
+ }
134885
+ });
134886
+ });
134849
134887
  }
134850
134888
  catch (error) {
134851
134889
  console.error(`Error creating user registry: ${error}`);
@@ -134857,18 +134895,20 @@ class DataBase {
134857
134895
  */
134858
134896
  async createReverseLookup(username, userPub) {
134859
134897
  try {
134860
- const ack = await this.node
134861
- .get("userAliases")
134862
- .get(userPub)
134863
- .put(username)
134864
- .then();
134865
- if (ack.err) {
134866
- console.error(`Error creating reverse lookup: ${ack.err}`);
134867
- return false;
134868
- }
134869
- else {
134870
- return true;
134871
- }
134898
+ return new Promise((resolve) => {
134899
+ this.node
134900
+ .get("userAliases")
134901
+ .get(userPub)
134902
+ .put(username, (ack) => {
134903
+ if (ack && ack.err) {
134904
+ console.error(`Error creating reverse lookup: ${ack.err}`);
134905
+ resolve(false);
134906
+ }
134907
+ else {
134908
+ resolve(true);
134909
+ }
134910
+ });
134911
+ });
134872
134912
  }
134873
134913
  catch (error) {
134874
134914
  console.error(`Error creating reverse lookup: ${error}`);
@@ -134880,14 +134920,20 @@ class DataBase {
134880
134920
  */
134881
134921
  async createEpubIndex(epub, userPub) {
134882
134922
  try {
134883
- const ack = await this.node.get("epubKeys").get(epub).put(userPub).then();
134884
- if (ack.err) {
134885
- console.error(`Error creating epub index: ${ack.err}`);
134886
- return false;
134887
- }
134888
- else {
134889
- return true;
134890
- }
134923
+ return new Promise((resolve) => {
134924
+ this.node
134925
+ .get("epubKeys")
134926
+ .get(epub)
134927
+ .put(userPub, (ack) => {
134928
+ if (ack && ack.err) {
134929
+ console.error(`Error creating epub index: ${ack.err}`);
134930
+ resolve(false);
134931
+ }
134932
+ else {
134933
+ resolve(true);
134934
+ }
134935
+ });
134936
+ });
134891
134937
  }
134892
134938
  catch (error) {
134893
134939
  console.error(`Error creating epub index: ${error}`);
@@ -134905,14 +134951,17 @@ class DataBase {
134905
134951
  registeredAt: Date.now(),
134906
134952
  lastSeen: Date.now(),
134907
134953
  };
134908
- const ack = await this.gun.get(userPub).put(userMetadata).then();
134909
- if (ack.err) {
134910
- console.error(`Error creating user metadata: ${ack.err}`);
134911
- return false;
134912
- }
134913
- else {
134914
- return true;
134915
- }
134954
+ return new Promise((resolve) => {
134955
+ this.gun.get(userPub).put(userMetadata, (ack) => {
134956
+ if (ack && ack.err) {
134957
+ console.error(`Error creating user metadata: ${ack.err}`);
134958
+ resolve(false);
134959
+ }
134960
+ else {
134961
+ resolve(true);
134962
+ }
134963
+ });
134964
+ });
134916
134965
  }
134917
134966
  catch (error) {
134918
134967
  console.error(`Error creating user metadata: ${error}`);
@@ -134932,9 +134981,14 @@ class DataBase {
134932
134981
  }
134933
134982
  // Method 1: Try GunDB standard alias lookup (~@alias)
134934
134983
  try {
134935
- const aliasData = await this.gun.get(`~@${normalizedAlias}`).then();
134936
- if (aliasData && aliasData["~pubKeyOfUser"]) {
134937
- const userPub = aliasData["~pubKeyOfUser"]["#"] || aliasData["~pubKeyOfUser"];
134984
+ const aliasData = this.gun.get(`~@${normalizedAlias}`);
134985
+ const aliasDataObj = await new Promise((resolve) => {
134986
+ aliasData.once((data) => {
134987
+ resolve(data);
134988
+ });
134989
+ });
134990
+ if (aliasDataObj && aliasDataObj["~pubKeyOfUser"]) {
134991
+ const userPub = aliasDataObj["~pubKeyOfUser"]["#"] || aliasDataObj["~pubKeyOfUser"];
134938
134992
  if (userPub) {
134939
134993
  const userData = await this.getUserDataByPub(userPub);
134940
134994
  if (userData) {
@@ -134948,10 +135002,14 @@ class DataBase {
134948
135002
  }
134949
135003
  // Method 2: Try username mapping (usernames/alias -> userPub)
134950
135004
  try {
134951
- const userPub = await this.node
134952
- .get("usernames")
134953
- .get(normalizedAlias)
134954
- .then();
135005
+ const userPub = await new Promise((resolve) => {
135006
+ this.node
135007
+ .get("usernames")
135008
+ .get(normalizedAlias)
135009
+ .once((data) => {
135010
+ resolve(data);
135011
+ });
135012
+ });
134955
135013
  if (userPub) {
134956
135014
  const userData = await this.getUserDataByPub(userPub);
134957
135015
  if (userData) {
@@ -134981,7 +135039,14 @@ class DataBase {
134981
135039
  }
134982
135040
  // Method 1: Try user registry (users/userPub -> user data)
134983
135041
  try {
134984
- const userData = await this.node.get("users").get(userPub).then();
135042
+ const userData = await new Promise((resolve) => {
135043
+ this.node
135044
+ .get("users")
135045
+ .get(userPub)
135046
+ .once((data) => {
135047
+ resolve(data);
135048
+ });
135049
+ });
134985
135050
  if (userData && userData.username) {
134986
135051
  return {
134987
135052
  userPub: userData.userPub || userPub,
@@ -134997,7 +135062,11 @@ class DataBase {
134997
135062
  }
134998
135063
  // Method 2: Try user's own node
134999
135064
  try {
135000
- const userNodeData = await this.gun.get(userPub).then();
135065
+ const userNodeData = await new Promise((resolve) => {
135066
+ this.gun.get(userPub).once((data) => {
135067
+ resolve(data);
135068
+ });
135069
+ });
135001
135070
  if (userNodeData && userNodeData.username) {
135002
135071
  return {
135003
135072
  userPub: userPub,
@@ -135028,7 +135097,14 @@ class DataBase {
135028
135097
  if (!epub || typeof epub !== "string") {
135029
135098
  return null;
135030
135099
  }
135031
- const userPub = await this.node.get("epubKeys").get(epub).then();
135100
+ const userPub = await new Promise((resolve) => {
135101
+ this.node
135102
+ .get("epubKeys")
135103
+ .get(epub)
135104
+ .once((data) => {
135105
+ resolve(data);
135106
+ });
135107
+ });
135032
135108
  return userPub || null;
135033
135109
  }
135034
135110
  catch (error) {
@@ -135046,7 +135122,14 @@ class DataBase {
135046
135122
  if (!userPub || typeof userPub !== "string") {
135047
135123
  return null;
135048
135124
  }
135049
- const alias = await this.node.get("userAliases").get(userPub).then();
135125
+ const alias = await new Promise((resolve) => {
135126
+ this.node
135127
+ .get("userAliases")
135128
+ .get(userPub)
135129
+ .once((data) => {
135130
+ resolve(data);
135131
+ });
135132
+ });
135050
135133
  return alias || null;
135051
135134
  }
135052
135135
  catch (error) {
@@ -135085,19 +135168,39 @@ class DataBase {
135085
135168
  const timestamp = Date.now();
135086
135169
  // Update in user registry
135087
135170
  try {
135088
- await this.node
135089
- .get("users")
135090
- .get(userPub)
135091
- .get("lastSeen")
135092
- .put(timestamp)
135093
- .then();
135171
+ await new Promise((resolve, reject) => {
135172
+ this.node
135173
+ .get("users")
135174
+ .get(userPub)
135175
+ .get("lastSeen")
135176
+ .put(timestamp, (ack) => {
135177
+ if (ack && ack.err) {
135178
+ reject(new Error(ack.err));
135179
+ }
135180
+ else {
135181
+ resolve();
135182
+ }
135183
+ });
135184
+ });
135094
135185
  }
135095
135186
  catch (error) {
135096
135187
  console.error(`Failed to update lastSeen in user registry:`, error);
135097
135188
  }
135098
135189
  // Update in user's own node
135099
135190
  try {
135100
- await this.gun.get(userPub).get("lastSeen").put(timestamp).then();
135191
+ await new Promise((resolve, reject) => {
135192
+ this.gun
135193
+ .get(userPub)
135194
+ .get("lastSeen")
135195
+ .put(timestamp, (ack) => {
135196
+ if (ack && ack.err) {
135197
+ reject(new Error(ack.err));
135198
+ }
135199
+ else {
135200
+ resolve();
135201
+ }
135202
+ });
135203
+ });
135101
135204
  }
135102
135205
  catch (error) {
135103
135206
  console.error(`Failed to update lastSeen in user node:`, error);
@@ -135348,10 +135451,19 @@ class DataBase {
135348
135451
  questions: JSON.stringify(securityQuestions),
135349
135452
  hint: encryptedHint,
135350
135453
  };
135351
- const ack = await this.node.get(userPub)
135352
- .get("security")
135353
- .put(securityPayload)
135354
- .then();
135454
+ const ack = await new Promise((resolve, reject) => {
135455
+ this.node
135456
+ .get(userPub)
135457
+ .get("security")
135458
+ .put(securityPayload, (ack) => {
135459
+ if (ack && ack.err) {
135460
+ reject(new Error(ack.err));
135461
+ }
135462
+ else {
135463
+ resolve(ack);
135464
+ }
135465
+ });
135466
+ });
135355
135467
  if (ack.err) {
135356
135468
  console.error("Error saving security data to public graph:", ack.err);
135357
135469
  throw new Error(ack.err);
@@ -135374,15 +135486,26 @@ class DataBase {
135374
135486
  try {
135375
135487
  // Find the user's data using direct lookup
135376
135488
  const normalizedUsername = username.trim().toLowerCase();
135377
- const userPub = (await this.node.get("usernames").get(normalizedUsername).then()) ||
135378
- null;
135489
+ const userPub = await new Promise((resolve) => {
135490
+ this.node
135491
+ .get("usernames")
135492
+ .get(normalizedUsername)
135493
+ .once((data) => {
135494
+ resolve(data);
135495
+ });
135496
+ });
135379
135497
  if (!userPub) {
135380
135498
  return { success: false, error: "User not found" };
135381
135499
  }
135382
135500
  // Access the user's security data directly from their public key node
135383
- const securityData = await this.node.get(userPub)
135384
- .get("security")
135385
- .then();
135501
+ const securityData = await new Promise((resolve) => {
135502
+ this.node
135503
+ .get(userPub)
135504
+ .get("security")
135505
+ .once((data) => {
135506
+ resolve(data);
135507
+ });
135508
+ });
135386
135509
  if (!securityData || !securityData.hint) {
135387
135510
  return {
135388
135511
  success: false,