@dbcube/core 1.0.51 → 1.0.55

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/index.d.mts CHANGED
@@ -12,6 +12,8 @@ declare class Engine {
12
12
  private arguments;
13
13
  private binary;
14
14
  private timeout;
15
+ private isDaemonConnected;
16
+ private isConnecting;
15
17
  constructor(name: string, timeout?: number);
16
18
  initializeBinary(): Promise<void>;
17
19
  setArguments(): any[];
@@ -19,7 +21,10 @@ declare class Engine {
19
21
  [x: string]: any;
20
22
  } | null;
21
23
  getConfig(): any;
22
- run(binary: string, args: []): Promise<ResponseEngine>;
24
+ run(binary: string, args: string[]): Promise<ResponseEngine>;
25
+ ensureDaemonConnected(): Promise<void>;
26
+ disconnect(): Promise<void>;
27
+ private setupProcessExitHandlers;
23
28
  }
24
29
 
25
30
  interface SystemInfo {
package/dist/index.d.ts CHANGED
@@ -12,6 +12,8 @@ declare class Engine {
12
12
  private arguments;
13
13
  private binary;
14
14
  private timeout;
15
+ private isDaemonConnected;
16
+ private isConnecting;
15
17
  constructor(name: string, timeout?: number);
16
18
  initializeBinary(): Promise<void>;
17
19
  setArguments(): any[];
@@ -19,7 +21,10 @@ declare class Engine {
19
21
  [x: string]: any;
20
22
  } | null;
21
23
  getConfig(): any;
22
- run(binary: string, args: []): Promise<ResponseEngine>;
24
+ run(binary: string, args: string[]): Promise<ResponseEngine>;
25
+ ensureDaemonConnected(): Promise<void>;
26
+ disconnect(): Promise<void>;
27
+ private setupProcessExitHandlers;
23
28
  }
24
29
 
25
30
  interface SystemInfo {
package/dist/index.js CHANGED
@@ -555,11 +555,14 @@ var Engine = class {
555
555
  arguments;
556
556
  binary = null;
557
557
  timeout;
558
+ isDaemonConnected = false;
559
+ isConnecting = false;
558
560
  constructor(name, timeout = 3e4) {
559
561
  this.name = name;
560
562
  this.config = this.setConfig(name);
561
563
  this.arguments = this.setArguments();
562
564
  this.timeout = timeout;
565
+ this.setupProcessExitHandlers();
563
566
  }
564
567
  async initializeBinary() {
565
568
  if (!this.binary) {
@@ -631,6 +634,12 @@ var Engine = class {
631
634
  if (!this.binary) {
632
635
  throw new Error("Binary not initialized");
633
636
  }
637
+ const isConnectAction = args.includes("connect");
638
+ const isDisconnectAction = args.includes("disconnect");
639
+ const isExecuteAction = args.includes("execute");
640
+ if (isExecuteAction) {
641
+ await this.ensureDaemonConnected();
642
+ }
634
643
  return new Promise((resolve5, reject) => {
635
644
  const child = spawn(this.binary[binary], [...this.arguments, ...args]);
636
645
  let stdoutBuffer = "";
@@ -648,10 +657,17 @@ var Engine = class {
648
657
  isResolved = true;
649
658
  clearTimeout(timeoutId);
650
659
  resolve5(response);
660
+ if (isConnectAction && response.status === 200) {
661
+ this.isDaemonConnected = true;
662
+ this.isConnecting = false;
663
+ } else if (isDisconnectAction) {
664
+ this.isDaemonConnected = false;
665
+ }
651
666
  }
652
667
  };
653
668
  child.stdout.on("data", (data) => {
654
669
  stdoutBuffer += data.toString();
670
+ console.log(stdoutBuffer);
655
671
  const match = stdoutBuffer.match(/PROCESS_RESPONSE:(\{.*\})/);
656
672
  if (match) {
657
673
  try {
@@ -672,6 +688,7 @@ var Engine = class {
672
688
  });
673
689
  child.stderr.on("data", (data) => {
674
690
  stderrBuffer += data.toString();
691
+ console.log(stderrBuffer);
675
692
  const match = stderrBuffer.match(/PROCESS_RESPONSE:(\{.*\})/);
676
693
  if (match) {
677
694
  try {
@@ -713,6 +730,67 @@ var Engine = class {
713
730
  child.unref();
714
731
  });
715
732
  }
733
+ async ensureDaemonConnected() {
734
+ if (this.isDaemonConnected) {
735
+ return;
736
+ }
737
+ if (this.isConnecting) {
738
+ while (this.isConnecting) {
739
+ await new Promise((resolve5) => setTimeout(resolve5, 50));
740
+ }
741
+ return;
742
+ }
743
+ this.isConnecting = true;
744
+ try {
745
+ const response = await this.run("query_engine", ["--action", "connect"]);
746
+ if (response.status !== 200) {
747
+ throw new Error(`Failed to connect daemon: ${response.message}`);
748
+ }
749
+ } catch (error) {
750
+ this.isConnecting = false;
751
+ throw error;
752
+ }
753
+ }
754
+ async disconnect() {
755
+ if (this.isDaemonConnected) {
756
+ await this.run("query_engine", ["--action", "disconnect"]);
757
+ }
758
+ }
759
+ setupProcessExitHandlers() {
760
+ const gracefulShutdown = async () => {
761
+ if (this.isDaemonConnected) {
762
+ console.log("\u{1F504} Disconnecting daemon before exit...");
763
+ try {
764
+ await this.disconnect();
765
+ console.log("\u2705 Daemon disconnected successfully");
766
+ } catch (error) {
767
+ console.error("\u274C Error disconnecting daemon:", error);
768
+ }
769
+ }
770
+ };
771
+ process.on("exit", () => {
772
+ });
773
+ process.on("SIGINT", async () => {
774
+ console.log("\n\u{1F6D1} Received SIGINT (Ctrl+C)");
775
+ await gracefulShutdown();
776
+ process.exit(0);
777
+ });
778
+ process.on("SIGTERM", async () => {
779
+ console.log("\u{1F6D1} Received SIGTERM");
780
+ await gracefulShutdown();
781
+ process.exit(0);
782
+ });
783
+ process.on("uncaughtException", async (error) => {
784
+ console.error("\u{1F4A5} Uncaught Exception:", error);
785
+ await gracefulShutdown();
786
+ process.exit(1);
787
+ });
788
+ process.on("unhandledRejection", async (reason, promise) => {
789
+ console.error("\u{1F4A5} Unhandled Rejection at:", promise, "reason:", reason);
790
+ await gracefulShutdown();
791
+ process.exit(1);
792
+ });
793
+ }
716
794
  };
717
795
 
718
796
  // src/lib/SqliteExecutor.ts