@hivedev/hivesdk 1.0.42 → 1.0.44

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/hive-client.js CHANGED
@@ -352,4 +352,4 @@ export {
352
352
  getDeviceId,
353
353
  initClient,
354
354
  login
355
- };
355
+ };
package/hive-server.cjs CHANGED
@@ -191,6 +191,7 @@ var require_dist = __commonJS({
191
191
  // Server/server.js
192
192
  var server_exports = {};
193
193
  __export(server_exports, {
194
+ DatabaseConnector: () => DatabaseConnector_default,
194
195
  decryptFileWithPassword: () => decryptFileWithPassword,
195
196
  encryptAndStoreFile: () => encryptAndStoreFile,
196
197
  extractConfigurationForService: () => extractConfigurationForService,
@@ -530,14 +531,14 @@ async function saveConfiguration(configurationObject) {
530
531
  await encryptAndStoreFile(
531
532
  JSON.stringify(configurationObject.firebaseAdminCredentials),
532
533
  import_path4.default.join(getAppDataDirectory(), "firebase_admin_credentials.dat"),
533
- process.env.WORD
534
+ process.env.SERVER_PASSWORD
534
535
  );
535
536
  }
536
537
  if (configurationObject.databaseCredentials) {
537
538
  await encryptAndStoreFile(
538
539
  JSON.stringify(configurationObject.databaseCredentials),
539
540
  import_path4.default.join(getAppDataDirectory(), "database_credentials.dat"),
540
- process.env.WORD
541
+ process.env.SERVER_PASSWORD
541
542
  );
542
543
  }
543
544
  if (configurationObject.permissions) {
@@ -657,6 +658,7 @@ async function initServer({ serviceName, servicePort, remoteUrl, serverPassword
657
658
  throw new Error("Server password is not provided. Please set the SERVER_PASSWORD environment variable.");
658
659
  }
659
660
  }
661
+ process.env.SERVER_PASSWORD = serverPassword;
660
662
  HiveServerGlobals_default.initialize({ serviceName, servicePort, remoteUrl });
661
663
  bInitialized = true;
662
664
  }
@@ -682,32 +684,65 @@ async function parseRequestQuery(request) {
682
684
  }
683
685
 
684
686
  // Server/RequestHandlers/GetServiceUrls.js
687
+ var serviceUpdateTimestamps = {};
685
688
  async function getServiceUrls(request, response) {
686
689
  await parseRequestQuery(request);
687
- const serviceName = request.query.serviceName;
688
- const localOnly = request.query.localOnly === "true";
689
- const remoteOnly = request.query.remoteOnly === "true";
690
- if (!serviceName) {
690
+ const requestedServiceName = request.query.serviceName;
691
+ const isLocalOnly = request.query.localOnly === "true";
692
+ const isRemoteOnly = request.query.remoteOnly === "true";
693
+ if (!requestedServiceName) {
691
694
  response.statusCode = 404;
692
695
  response.end();
693
696
  return;
694
697
  }
695
- const serviceUrls = HiveServerGlobals_default.getServiceUrls(serviceName);
696
- if (serviceUrls) {
697
- if (localOnly) {
698
- response.setHeader("Content-Type", "application/json");
699
- response.end(JSON.stringify(serviceUrls[serviceName]["local"]));
700
- } else if (remoteOnly) {
701
- response.setHeader("Content-Type", "application/json");
702
- response.end(JSON.stringify(serviceUrls[serviceName]["remote"]));
698
+ const FIVE_MINUTES_IN_MILLISECONDS = 5 * 60 * 1e3;
699
+ const cachedAddresses = HiveServerGlobals_default.getServiceUrls(requestedServiceName);
700
+ const lastUpdateAttempt = serviceUpdateTimestamps[requestedServiceName] || 0;
701
+ if (cachedAddresses && Date.now() - lastUpdateAttempt < FIVE_MINUTES_IN_MILLISECONDS) {
702
+ sendFormattedResponse(response, cachedAddresses, isLocalOnly, isRemoteOnly);
703
+ return;
704
+ }
705
+ try {
706
+ const hivePortalLanIp = process.env.HIVE_PORTAL_LAN_IP || "127.0.0.1";
707
+ const registryRequestUrl = `http://${hivePortalLanIp}:49152/ServiceUrls`;
708
+ const registryResponse = await fetch(
709
+ registryRequestUrl,
710
+ {
711
+ method: "POST",
712
+ headers: { "Content-Type": "application/json" },
713
+ body: JSON.stringify({ serviceName: requestedServiceName })
714
+ }
715
+ );
716
+ if (registryResponse.ok) {
717
+ const serviceDiscoveryResult = await registryResponse.json();
718
+ const extractedServiceUrls = serviceDiscoveryResult.urls;
719
+ if (extractedServiceUrls) {
720
+ HiveServerGlobals_default.setServiceUrls(requestedServiceName, extractedServiceUrls);
721
+ serviceUpdateTimestamps[requestedServiceName] = Date.now();
722
+ sendFormattedResponse(response, extractedServiceUrls, isLocalOnly, isRemoteOnly);
723
+ } else {
724
+ response.statusCode = 404;
725
+ response.end(JSON.stringify({ message: "Service found but no URLs provided." }));
726
+ }
703
727
  } else {
704
- response.setHeader("Content-Type", "application/json");
705
- response.end(JSON.stringify(serviceUrls[serviceName]));
728
+ response.statusCode = registryResponse.status;
729
+ response.end();
706
730
  }
707
- return;
731
+ } catch (networkError) {
732
+ console.error(`Error fetching service URLs for ${requestedServiceName}:`, networkError.message);
733
+ response.statusCode = 500;
734
+ response.end();
735
+ }
736
+ }
737
+ function sendFormattedResponse(response, serviceAddresses, isLocalOnly, isRemoteOnly) {
738
+ response.setHeader("Content-Type", "application/json");
739
+ let finalResult = serviceAddresses;
740
+ if (isLocalOnly) {
741
+ finalResult = serviceAddresses.local;
742
+ } else if (isRemoteOnly) {
743
+ finalResult = serviceAddresses.remote;
708
744
  }
709
- response.statusCode = 404;
710
- response.end();
745
+ response.end(JSON.stringify(finalResult));
711
746
  }
712
747
 
713
748
  // Common/Enumerations/ClientConnectionTypeFlags.js
@@ -1225,6 +1260,7 @@ async function registerService() {
1225
1260
  }
1226
1261
  // Annotate the CommonJS export names for ESM import in node:
1227
1262
  0 && (module.exports = {
1263
+ DatabaseConnector,
1228
1264
  decryptFileWithPassword,
1229
1265
  encryptAndStoreFile,
1230
1266
  extractConfigurationForService,
package/hive-server.js CHANGED
@@ -630,6 +630,7 @@ async function initServer({ serviceName, servicePort, remoteUrl, serverPassword
630
630
  throw new Error("Server password is not provided. Please set the SERVER_PASSWORD environment variable.");
631
631
  }
632
632
  }
633
+ process.env.SERVER_PASSWORD = serverPassword;
633
634
  HiveServerGlobals_default.initialize({ serviceName, servicePort, remoteUrl });
634
635
  bInitialized = true;
635
636
  }
@@ -655,32 +656,65 @@ async function parseRequestQuery(request) {
655
656
  }
656
657
 
657
658
  // Server/RequestHandlers/GetServiceUrls.js
659
+ var serviceUpdateTimestamps = {};
658
660
  async function getServiceUrls(request, response) {
659
661
  await parseRequestQuery(request);
660
- const serviceName = request.query.serviceName;
661
- const localOnly = request.query.localOnly === "true";
662
- const remoteOnly = request.query.remoteOnly === "true";
663
- if (!serviceName) {
662
+ const requestedServiceName = request.query.serviceName;
663
+ const isLocalOnly = request.query.localOnly === "true";
664
+ const isRemoteOnly = request.query.remoteOnly === "true";
665
+ if (!requestedServiceName) {
664
666
  response.statusCode = 404;
665
667
  response.end();
666
668
  return;
667
669
  }
668
- const serviceUrls = HiveServerGlobals_default.getServiceUrls(serviceName);
669
- if (serviceUrls) {
670
- if (localOnly) {
671
- response.setHeader("Content-Type", "application/json");
672
- response.end(JSON.stringify(serviceUrls[serviceName]["local"]));
673
- } else if (remoteOnly) {
674
- response.setHeader("Content-Type", "application/json");
675
- response.end(JSON.stringify(serviceUrls[serviceName]["remote"]));
670
+ const FIVE_MINUTES_IN_MILLISECONDS = 5 * 60 * 1e3;
671
+ const cachedAddresses = HiveServerGlobals_default.getServiceUrls(requestedServiceName);
672
+ const lastUpdateAttempt = serviceUpdateTimestamps[requestedServiceName] || 0;
673
+ if (cachedAddresses && Date.now() - lastUpdateAttempt < FIVE_MINUTES_IN_MILLISECONDS) {
674
+ sendFormattedResponse(response, cachedAddresses, isLocalOnly, isRemoteOnly);
675
+ return;
676
+ }
677
+ try {
678
+ const hivePortalLanIp = process.env.HIVE_PORTAL_LAN_IP || "127.0.0.1";
679
+ const registryRequestUrl = `http://${hivePortalLanIp}:49152/ServiceUrls`;
680
+ const registryResponse = await fetch(
681
+ registryRequestUrl,
682
+ {
683
+ method: "POST",
684
+ headers: { "Content-Type": "application/json" },
685
+ body: JSON.stringify({ serviceName: requestedServiceName })
686
+ }
687
+ );
688
+ if (registryResponse.ok) {
689
+ const serviceDiscoveryResult = await registryResponse.json();
690
+ const extractedServiceUrls = serviceDiscoveryResult.urls;
691
+ if (extractedServiceUrls) {
692
+ HiveServerGlobals_default.setServiceUrls(requestedServiceName, extractedServiceUrls);
693
+ serviceUpdateTimestamps[requestedServiceName] = Date.now();
694
+ sendFormattedResponse(response, extractedServiceUrls, isLocalOnly, isRemoteOnly);
695
+ } else {
696
+ response.statusCode = 404;
697
+ response.end(JSON.stringify({ message: "Service found but no URLs provided." }));
698
+ }
676
699
  } else {
677
- response.setHeader("Content-Type", "application/json");
678
- response.end(JSON.stringify(serviceUrls[serviceName]));
700
+ response.statusCode = registryResponse.status;
701
+ response.end();
679
702
  }
680
- return;
703
+ } catch (networkError) {
704
+ console.error(`Error fetching service URLs for ${requestedServiceName}:`, networkError.message);
705
+ response.statusCode = 500;
706
+ response.end();
707
+ }
708
+ }
709
+ function sendFormattedResponse(response, serviceAddresses, isLocalOnly, isRemoteOnly) {
710
+ response.setHeader("Content-Type", "application/json");
711
+ let finalResult = serviceAddresses;
712
+ if (isLocalOnly) {
713
+ finalResult = serviceAddresses.local;
714
+ } else if (isRemoteOnly) {
715
+ finalResult = serviceAddresses.remote;
681
716
  }
682
- response.statusCode = 404;
683
- response.end();
717
+ response.end(JSON.stringify(finalResult));
684
718
  }
685
719
 
686
720
  // Common/Enumerations/ClientConnectionTypeFlags.js
@@ -1197,6 +1231,7 @@ async function registerService() {
1197
1231
  }, 2e3);
1198
1232
  }
1199
1233
  export {
1234
+ DatabaseConnector_default as DatabaseConnector,
1200
1235
  decryptFileWithPassword,
1201
1236
  encryptAndStoreFile,
1202
1237
  extractConfigurationForService,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hivedev/hivesdk",
3
3
  "type": "module",
4
- "version": "1.0.42",
4
+ "version": "1.0.44",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
7
7
  "scripts": {