@stackable-labs/cli-app-extension 1.5.0 → 1.6.0

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.
Files changed (2) hide show
  1. package/dist/index.js +36 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1787,12 +1787,23 @@ var writeDevContext = async (projectRoot, ctx) => {
1787
1787
  };
1788
1788
 
1789
1789
  // src/lib/tunnel.ts
1790
- import { tunnel } from "cloudflared";
1791
- var startTunnel = async (port) => {
1792
- const { url, stop } = tunnel({ "--url": `http://localhost:${port}` });
1793
- const resolvedUrl = await url;
1794
- return { url: resolvedUrl, stop };
1795
- };
1790
+ import { Tunnel } from "cloudflared";
1791
+ var startTunnel = (port) => new Promise((resolve, reject) => {
1792
+ const tunnel = Tunnel.quick(`http://localhost:${port}`);
1793
+ const timeout = setTimeout(() => {
1794
+ tunnel.stop();
1795
+ reject(new Error("Tunnel connection timed out after 30s"));
1796
+ }, 3e4);
1797
+ tunnel.once("url", (url) => {
1798
+ console.log(`>>> > startTunnel > url:`, { url });
1799
+ clearTimeout(timeout);
1800
+ resolve({ url, stop: () => tunnel.stop() });
1801
+ });
1802
+ tunnel.once("error", (err) => {
1803
+ clearTimeout(timeout);
1804
+ reject(err);
1805
+ });
1806
+ });
1796
1807
 
1797
1808
  // src/lib/devServer.ts
1798
1809
  import { spawn } from "child_process";
@@ -1935,38 +1946,49 @@ var DevApp = ({ options = {} }) => {
1935
1946
  const useRestore = options.restore !== false;
1936
1947
  useEffect6(() => {
1937
1948
  const projectRoot = options.dir || process.cwd();
1949
+ console.log(`[dev] Reading context from ${projectRoot}`);
1938
1950
  readDevContext(projectRoot).then((ctx) => {
1951
+ console.log(`[dev] Context loaded: extension="${ctx.extensionName}" appId=${ctx.appId ?? "(missing)"} extensionId=${ctx.extensionId ?? "(missing)"}`);
1939
1952
  setDevContext(ctx);
1940
1953
  });
1941
1954
  }, [options.dir]);
1942
1955
  const handleSetupReady = useCallback2(async (resolved) => {
1943
1956
  if (!devContext) return;
1944
1957
  setResolvedContext(resolved);
1958
+ console.log(`[dev] Saving context: appId=${resolved.appId} extensionId=${resolved.extensionId}`);
1945
1959
  await writeDevContext(devContext.projectRoot, {
1946
1960
  ...devContext,
1947
1961
  appId: resolved.appId,
1948
1962
  extensionId: resolved.extensionId
1949
1963
  });
1950
1964
  const extensionPort = options.extensionPort ? parseInt(options.extensionPort, 10) : devContext.extensionPort;
1965
+ console.log(`[dev] Starting dev server in ${devContext.projectRoot}`);
1951
1966
  const serverHandle = startDevServer(devContext.projectRoot);
1952
1967
  setDevServerHandle(serverHandle);
1953
1968
  if (useTunnel) {
1954
1969
  try {
1970
+ console.log(`[dev] Starting tunnel on port ${extensionPort}...`);
1955
1971
  const tunnelResult = await startTunnel(extensionPort);
1972
+ console.log(`[dev] Tunnel ready: ${tunnelResult.url}`);
1956
1973
  setTunnelHandle(tunnelResult);
1957
1974
  setTunnelUrl(tunnelResult.url);
1958
1975
  if (useUpdate) {
1959
1976
  const originalUrl = `http://localhost:${extensionPort}`;
1960
1977
  setOriginalBundleUrl(originalUrl);
1978
+ console.log(`[dev] Updating bundleUrl to ${tunnelResult.url}`);
1961
1979
  await updateExtension(resolved.appId, resolved.extensionId, {
1962
1980
  bundleUrl: tunnelResult.url
1963
1981
  });
1982
+ console.log("[dev] bundleUrl updated successfully");
1964
1983
  setBundleUrlUpdated(true);
1965
1984
  }
1966
1985
  } catch (err) {
1967
- console.error("Failed to start tunnel:", err);
1986
+ console.error("[dev] Failed to start tunnel:", err);
1968
1987
  }
1988
+ } else {
1989
+ console.log("[dev] Tunnel disabled (--no-tunnel)");
1969
1990
  }
1991
+ console.log("[dev] Ready");
1970
1992
  setState("running");
1971
1993
  }, [devContext, options.extensionPort, useTunnel, useUpdate]);
1972
1994
  useEffect6(() => {
@@ -1980,21 +2002,27 @@ var DevApp = ({ options = {} }) => {
1980
2002
  const handleQuit = async () => {
1981
2003
  if (!devContext || !resolvedContext) return;
1982
2004
  setState("stopping");
2005
+ console.log("[dev] Shutting down...");
1983
2006
  try {
1984
2007
  if (useRestore && originalBundleUrl) {
2008
+ console.log(`[dev] Restoring bundleUrl to ${originalBundleUrl}`);
1985
2009
  await updateExtension(resolvedContext.appId, resolvedContext.extensionId, {
1986
2010
  bundleUrl: originalBundleUrl
1987
2011
  });
2012
+ console.log("[dev] bundleUrl restored");
1988
2013
  }
1989
2014
  if (tunnelHandle) {
2015
+ console.log("[dev] Stopping tunnel");
1990
2016
  tunnelHandle.stop();
1991
2017
  }
1992
2018
  if (devServerHandle) {
2019
+ console.log("[dev] Stopping dev server");
1993
2020
  devServerHandle.stop();
1994
2021
  }
1995
2022
  } catch (err) {
1996
- console.error("Error during cleanup:", err);
2023
+ console.error("[dev] Error during cleanup:", err);
1997
2024
  }
2025
+ console.log("[dev] Done");
1998
2026
  process.exit(0);
1999
2027
  };
2000
2028
  if (state === "setup" && devContext) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackable-labs/cli-app-extension",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "bin": {