@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 +1 -1
- package/hive-server.cjs +55 -19
- package/hive-server.js +52 -17
- package/package.json +1 -1
package/hive-client.js
CHANGED
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.
|
|
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.
|
|
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
|
|
688
|
-
const
|
|
689
|
-
const
|
|
690
|
-
if (!
|
|
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
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
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.
|
|
705
|
-
response.end(
|
|
728
|
+
response.statusCode = registryResponse.status;
|
|
729
|
+
response.end();
|
|
706
730
|
}
|
|
707
|
-
|
|
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.
|
|
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
|
|
661
|
-
const
|
|
662
|
-
const
|
|
663
|
-
if (!
|
|
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
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
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.
|
|
678
|
-
response.end(
|
|
700
|
+
response.statusCode = registryResponse.status;
|
|
701
|
+
response.end();
|
|
679
702
|
}
|
|
680
|
-
|
|
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.
|
|
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,
|