@hivedev/hivesdk 1.0.30 → 1.0.31

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-server.cjs CHANGED
@@ -194,6 +194,7 @@ __export(server_exports, {
194
194
  decryptFileWithPassword: () => decryptFileWithPassword,
195
195
  encryptAndStoreFile: () => encryptAndStoreFile,
196
196
  extractConfigurationForService: () => extractConfigurationForService,
197
+ findService: () => findService,
197
198
  getAppDataDirectory: () => getAppDataDirectory,
198
199
  getHostIp: () => getHostIp,
199
200
  handleHiveRequests: () => handleHiveRequests,
@@ -949,11 +950,72 @@ async function handleHiveRequests(request, response, next) {
949
950
  next();
950
951
  }
951
952
  }
953
+
954
+ // Server/Utility/FindService.js
955
+ var import_dgram = __toESM(require("dgram"), 1);
956
+ var TARGET_PORT = 49153;
957
+ var RESPONSE_TIMEOUT = 3e3;
958
+ async function findService(serviceName) {
959
+ const targetIp = process.env.HIVE_PORTAL_LAN_IP;
960
+ if (!targetIp) return { name: serviceName, urls: { local: "http://127.0.0.1:49152", remote: "" } };
961
+ const request = { serviceName };
962
+ const message = Buffer.from(JSON.stringify(request));
963
+ const socket = import_dgram.default.createSocket("udp4");
964
+ return await new Promise((resolve, reject) => {
965
+ let resolved = false;
966
+ socket.on("message", (msg, rinfo) => {
967
+ if (resolved) return;
968
+ try {
969
+ const parsed = JSON.parse(msg.toString());
970
+ if (parsed.name === serviceName && parsed.urls) {
971
+ resolved = true;
972
+ clearTimeout(timer);
973
+ socket.close();
974
+ resolve(parsed);
975
+ }
976
+ } catch {
977
+ }
978
+ });
979
+ socket.once("error", (err) => {
980
+ if (resolved) return;
981
+ resolved = true;
982
+ clearTimeout(timer);
983
+ socket.close();
984
+ resolve(null);
985
+ });
986
+ socket.bind(() => {
987
+ try {
988
+ socket.send(message, TARGET_PORT, targetIp, (err) => {
989
+ if (err && !resolved) {
990
+ resolved = true;
991
+ clearTimeout(timer);
992
+ socket.close();
993
+ resolve(null);
994
+ }
995
+ });
996
+ } catch {
997
+ if (!resolved) {
998
+ resolved = true;
999
+ clearTimeout(timer);
1000
+ socket.close();
1001
+ resolve(null);
1002
+ }
1003
+ }
1004
+ });
1005
+ const timer = setTimeout(() => {
1006
+ if (resolved) return;
1007
+ resolved = true;
1008
+ socket.close();
1009
+ resolve(null);
1010
+ }, RESPONSE_TIMEOUT);
1011
+ });
1012
+ }
952
1013
  // Annotate the CommonJS export names for ESM import in node:
953
1014
  0 && (module.exports = {
954
1015
  decryptFileWithPassword,
955
1016
  encryptAndStoreFile,
956
1017
  extractConfigurationForService,
1018
+ findService,
957
1019
  getAppDataDirectory,
958
1020
  getHostIp,
959
1021
  handleHiveRequests,
package/hive-server.js CHANGED
@@ -925,10 +925,71 @@ async function handleHiveRequests(request, response, next) {
925
925
  next();
926
926
  }
927
927
  }
928
+
929
+ // Server/Utility/FindService.js
930
+ import dgram from "dgram";
931
+ var TARGET_PORT = 49153;
932
+ var RESPONSE_TIMEOUT = 3e3;
933
+ async function findService(serviceName) {
934
+ const targetIp = process.env.HIVE_PORTAL_LAN_IP;
935
+ if (!targetIp) return { name: serviceName, urls: { local: "http://127.0.0.1:49152", remote: "" } };
936
+ const request = { serviceName };
937
+ const message = Buffer.from(JSON.stringify(request));
938
+ const socket = dgram.createSocket("udp4");
939
+ return await new Promise((resolve, reject) => {
940
+ let resolved = false;
941
+ socket.on("message", (msg, rinfo) => {
942
+ if (resolved) return;
943
+ try {
944
+ const parsed = JSON.parse(msg.toString());
945
+ if (parsed.name === serviceName && parsed.urls) {
946
+ resolved = true;
947
+ clearTimeout(timer);
948
+ socket.close();
949
+ resolve(parsed);
950
+ }
951
+ } catch {
952
+ }
953
+ });
954
+ socket.once("error", (err) => {
955
+ if (resolved) return;
956
+ resolved = true;
957
+ clearTimeout(timer);
958
+ socket.close();
959
+ resolve(null);
960
+ });
961
+ socket.bind(() => {
962
+ try {
963
+ socket.send(message, TARGET_PORT, targetIp, (err) => {
964
+ if (err && !resolved) {
965
+ resolved = true;
966
+ clearTimeout(timer);
967
+ socket.close();
968
+ resolve(null);
969
+ }
970
+ });
971
+ } catch {
972
+ if (!resolved) {
973
+ resolved = true;
974
+ clearTimeout(timer);
975
+ socket.close();
976
+ resolve(null);
977
+ }
978
+ }
979
+ });
980
+ const timer = setTimeout(() => {
981
+ if (resolved) return;
982
+ resolved = true;
983
+ socket.close();
984
+ resolve(null);
985
+ }, RESPONSE_TIMEOUT);
986
+ });
987
+ }
928
988
  export {
929
989
  decryptFileWithPassword,
930
990
  encryptAndStoreFile,
931
991
  extractConfigurationForService,
992
+ findService,
932
993
  getAppDataDirectory,
933
994
  getHostIp,
934
995
  handleHiveRequests,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hivedev/hivesdk",
3
3
  "type": "module",
4
- "version": "1.0.30",
4
+ "version": "1.0.31",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
7
7
  "scripts": {