@geekmidas/cli 1.10.24 → 1.10.26

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 (63) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{CachedStateProvider-D_uISMmJ.cjs → CachedStateProvider-37pG1HBx.cjs} +1 -1
  3. package/dist/{CachedStateProvider-BDq5WqSy.mjs → CachedStateProvider-C8A-cCm5.mjs} +1 -1
  4. package/dist/{CachedStateProvider-BDq5WqSy.mjs.map → CachedStateProvider-C8A-cCm5.mjs.map} +1 -1
  5. package/dist/CachedStateProvider-CC0DyO09.mjs +3 -0
  6. package/dist/{CachedStateProvider-D73dCqfH.cjs → CachedStateProvider-CxsXOKkg.cjs} +1 -1
  7. package/dist/{CachedStateProvider-D73dCqfH.cjs.map → CachedStateProvider-CxsXOKkg.cjs.map} +1 -1
  8. package/dist/{bundler-i-az1DZ2.cjs → bundler-BG6P249p.cjs} +3 -3
  9. package/dist/{bundler-i-az1DZ2.cjs.map → bundler-BG6P249p.cjs.map} +1 -1
  10. package/dist/{bundler-C5xkxnyr.mjs → bundler-c6QvGUBM.mjs} +3 -3
  11. package/dist/{bundler-C5xkxnyr.mjs.map → bundler-c6QvGUBM.mjs.map} +1 -1
  12. package/dist/{dokploy-api-2ldYoN3i.mjs → dokploy-api-BIT0683o.mjs} +1 -1
  13. package/dist/{dokploy-api-2ldYoN3i.mjs.map → dokploy-api-BIT0683o.mjs.map} +1 -1
  14. package/dist/dokploy-api-BOx71j6F.cjs +3 -0
  15. package/dist/dokploy-api-BZGk-lkD.mjs +3 -0
  16. package/dist/{dokploy-api-DLgvEQlr.cjs → dokploy-api-Dvyq-LsM.cjs} +1 -1
  17. package/dist/{dokploy-api-DLgvEQlr.cjs.map → dokploy-api-Dvyq-LsM.cjs.map} +1 -1
  18. package/dist/{encryption-Cv3zips0.cjs → encryption-CipsS0KW.cjs} +1 -1
  19. package/dist/{encryption-BOH5M-f-.mjs → encryption-DSkIlEZ6.mjs} +1 -1
  20. package/dist/{encryption-BOH5M-f-.mjs.map → encryption-DSkIlEZ6.mjs.map} +1 -1
  21. package/dist/encryption-Db2zvGqM.mjs +3 -0
  22. package/dist/{encryption-BE0UOb8j.cjs → encryption-DgKS-Dv9.cjs} +1 -1
  23. package/dist/{encryption-BE0UOb8j.cjs.map → encryption-DgKS-Dv9.cjs.map} +1 -1
  24. package/dist/{fullstack-secrets-DOHBU4Rp.cjs → fullstack-secrets-BsO5GyPi.cjs} +7 -1
  25. package/dist/{fullstack-secrets-DOHBU4Rp.cjs.map → fullstack-secrets-BsO5GyPi.cjs.map} +1 -1
  26. package/dist/{fullstack-secrets-x2Kffx7-.mjs → fullstack-secrets-C6jD5nlK.mjs} +2 -2
  27. package/dist/{fullstack-secrets-x2Kffx7-.mjs.map → fullstack-secrets-C6jD5nlK.mjs.map} +1 -1
  28. package/dist/index.cjs +38 -28
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.mjs +38 -28
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/{openapi-N_iCUhJU.cjs → openapi-BXuCY14q.cjs} +1 -1
  33. package/dist/{openapi-N_iCUhJU.cjs.map → openapi-BXuCY14q.cjs.map} +1 -1
  34. package/dist/{openapi-DnIYqDH3.mjs → openapi-DeG0ffQ8.mjs} +1 -1
  35. package/dist/{openapi-DnIYqDH3.mjs.map → openapi-DeG0ffQ8.mjs.map} +1 -1
  36. package/dist/openapi.cjs +1 -1
  37. package/dist/openapi.mjs +1 -1
  38. package/dist/{reconcile-Ch7sIcf8.cjs → reconcile-BJ_UqFLI.cjs} +2 -2
  39. package/dist/{reconcile-Ch7sIcf8.cjs.map → reconcile-BJ_UqFLI.cjs.map} +1 -1
  40. package/dist/{reconcile-BLh6rswz.mjs → reconcile-jfx0dsno.mjs} +2 -2
  41. package/dist/{reconcile-BLh6rswz.mjs.map → reconcile-jfx0dsno.mjs.map} +1 -1
  42. package/dist/{storage-DLEb8Dkd.cjs → storage-B1wvztiJ.cjs} +1 -1
  43. package/dist/{storage-DLEb8Dkd.cjs.map → storage-B1wvztiJ.cjs.map} +1 -1
  44. package/dist/{storage-mwbL7PhP.mjs → storage-Cs4WBsc4.mjs} +1 -1
  45. package/dist/{storage-ChVQI_G7.cjs → storage-DOEtT2Hr.cjs} +1 -1
  46. package/dist/{storage-CpMNB77O.mjs → storage-dbb9RyBl.mjs} +1 -1
  47. package/dist/{storage-CpMNB77O.mjs.map → storage-dbb9RyBl.mjs.map} +1 -1
  48. package/dist/{sync-CYBVB64f.mjs → sync-COnAugP-.mjs} +1 -1
  49. package/dist/sync-D1Pa30oV.cjs +4 -0
  50. package/dist/{sync-BWD_I5Ai.cjs → sync-DGXXSk2v.cjs} +2 -2
  51. package/dist/{sync-BWD_I5Ai.cjs.map → sync-DGXXSk2v.cjs.map} +1 -1
  52. package/dist/{sync-lExOTa9t.mjs → sync-D_NowTkZ.mjs} +2 -2
  53. package/dist/{sync-lExOTa9t.mjs.map → sync-D_NowTkZ.mjs.map} +1 -1
  54. package/package.json +3 -3
  55. package/src/credentials/index.ts +19 -0
  56. package/src/exec/index.ts +7 -4
  57. package/src/generators/SubscriberGenerator.ts +5 -6
  58. package/src/init/versions.ts +1 -1
  59. package/dist/CachedStateProvider-CI61keQ1.mjs +0 -3
  60. package/dist/dokploy-api-C93pveuy.mjs +0 -3
  61. package/dist/dokploy-api-CbDh4o93.cjs +0 -3
  62. package/dist/encryption-a9TNMWav.mjs +0 -3
  63. package/dist/sync-ByaRPBxh.cjs +0 -4
package/dist/index.mjs CHANGED
@@ -3,14 +3,14 @@ import { __require } from "./chunk-Duj1WY3L.mjs";
3
3
  import { getAppBuildOrder, getDependencyEnvVars, getDeployTargetError, isDeployTargetSupported } from "./workspace-D4z4A4cq.mjs";
4
4
  import { getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceAppInfo, loadWorkspaceConfig, parseModuleConfig } from "./config-jsRYHOHU.mjs";
5
5
  import { getCredentialsPath, getDokployCredentials, getDokployRegistryId, getDokployToken, removeDokployCredentials, storeDokployCredentials, storeDokployRegistryId } from "./credentials-s1kLcIzK.mjs";
6
- import { getKeyPath, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, writeStageSecrets } from "./storage-CpMNB77O.mjs";
7
- import { ConstructGenerator, EndpointGenerator, OPENAPI_OUTPUT_PATH, copyAllClients, copyClientToFrontends, generateOpenApi, getBackendOpenApiPath, isPartitionedRoutes, normalizeRoutes, openapiCommand, resolveOpenApiConfig } from "./openapi-DnIYqDH3.mjs";
8
- import { DokployApi } from "./dokploy-api-2ldYoN3i.mjs";
9
- import { encryptSecrets } from "./encryption-BOH5M-f-.mjs";
10
- import { CachedStateProvider } from "./CachedStateProvider-BDq5WqSy.mjs";
11
- import { createStageSecrets, generateConnectionUrls, generateDbPassword, generateDbUrl, generateFullstackCustomSecrets, generateLocalStackCredentials, generateSecurePassword, generateServiceCredentials, rotateServicePassword, writeDockerEnvFromSecrets } from "./fullstack-secrets-x2Kffx7-.mjs";
6
+ import { createStageSecrets, generateConnectionUrls, generateDbPassword, generateDbUrl, generateFullstackCustomSecrets, generateLocalStackCredentials, generatePgBossUrl, generateSecurePassword, generateServiceCredentials, rotateServicePassword, writeDockerEnvFromSecrets } from "./fullstack-secrets-C6jD5nlK.mjs";
7
+ import { getKeyPath, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, writeStageSecrets } from "./storage-dbb9RyBl.mjs";
8
+ import { ConstructGenerator, EndpointGenerator, OPENAPI_OUTPUT_PATH, copyAllClients, copyClientToFrontends, generateOpenApi, getBackendOpenApiPath, isPartitionedRoutes, normalizeRoutes, openapiCommand, resolveOpenApiConfig } from "./openapi-DeG0ffQ8.mjs";
9
+ import { DokployApi } from "./dokploy-api-BIT0683o.mjs";
10
+ import { encryptSecrets } from "./encryption-DSkIlEZ6.mjs";
11
+ import { CachedStateProvider } from "./CachedStateProvider-C8A-cCm5.mjs";
12
12
  import { generateReactQueryCommand } from "./openapi-react-query-C4UdILaI.mjs";
13
- import { isSSMConfigured, pullSecrets, pushSecrets } from "./sync-lExOTa9t.mjs";
13
+ import { isSSMConfigured, pullSecrets, pushSecrets } from "./sync-D_NowTkZ.mjs";
14
14
  import { createRequire } from "node:module";
15
15
  import { copyFileSync, existsSync, readFileSync, unlinkSync } from "node:fs";
16
16
  import { basename, dirname, join, parse, relative, resolve } from "node:path";
@@ -35,7 +35,7 @@ import prompts from "prompts";
35
35
 
36
36
  //#region package.json
37
37
  var name = "@geekmidas/cli";
38
- var version = "1.10.23";
38
+ var version = "1.10.25";
39
39
  var description = "CLI tools for building Lambda handlers, server applications, and generating OpenAPI specs";
40
40
  var private$1 = false;
41
41
  var type = "module";
@@ -138,7 +138,7 @@ const logger$14 = console;
138
138
  * Validate Dokploy token by making a test API call
139
139
  */
140
140
  async function validateDokployToken(endpoint, token) {
141
- const { DokployApi: DokployApi$1 } = await import("./dokploy-api-C93pveuy.mjs");
141
+ const { DokployApi: DokployApi$1 } = await import("./dokploy-api-BZGk-lkD.mjs");
142
142
  const api = new DokployApi$1({
143
143
  baseUrl: endpoint,
144
144
  token
@@ -781,6 +781,17 @@ async function prepareEntryCredentials(options) {
781
781
  const depEnv = getDependencyEnvVars(appInfo.workspace, appInfo.appName);
782
782
  Object.assign(credentials, depEnv);
783
783
  }
784
+ if (!credentials.EVENT_PUBLISHER_CONNECTION_STRING && !credentials.EVENT_SUBSCRIBER_CONNECTION_STRING && credentials.POSTGRES_USER) {
785
+ const pgbossUrl = generatePgBossUrl({
786
+ username: credentials.POSTGRES_USER,
787
+ password: credentials.POSTGRES_PASSWORD ?? "",
788
+ host: credentials.POSTGRES_HOST ?? "localhost",
789
+ port: Number(credentials.POSTGRES_PORT ?? "5432"),
790
+ database: credentials.POSTGRES_DB ?? "app"
791
+ });
792
+ credentials.EVENT_PUBLISHER_CONNECTION_STRING = pgbossUrl;
793
+ credentials.EVENT_SUBSCRIBER_CONNECTION_STRING = pgbossUrl;
794
+ }
784
795
  const secretsDir = join(secretsRoot, ".gkm");
785
796
  await mkdir(secretsDir, { recursive: true });
786
797
  const secretsFileName = options.secretsFileName ?? (appName ? `dev-secrets-${appName}.json` : "dev-secrets.json");
@@ -995,17 +1006,16 @@ export async function setupSubscribers(
995
1006
  envParser: EnvironmentParser<any>,
996
1007
  logger: Logger,
997
1008
  ): Promise<void> {
1009
+ if (subscribers.length === 0) {
1010
+ return;
1011
+ }
1012
+
998
1013
  logger.info('Setting up subscribers in polling mode (local development)');
999
1014
 
1000
1015
  const config = envParser.create((get) => ({
1001
- connectionString: get('EVENT_SUBSCRIBER_CONNECTION_STRING').string().optional(),
1016
+ connectionString: get('EVENT_SUBSCRIBER_CONNECTION_STRING').string(),
1002
1017
  })).parse();
1003
1018
 
1004
- if (!config.connectionString) {
1005
- logger.warn('EVENT_SUBSCRIBER_CONNECTION_STRING not configured, skipping subscriber setup');
1006
- return;
1007
- }
1008
-
1009
1019
  const serviceDiscovery = ServiceDiscovery.getInstance(envParser);
1010
1020
 
1011
1021
  // Create connection once, outside the loop (more efficient)
@@ -1118,7 +1128,7 @@ async function execCommand(commandArgs, options = {}) {
1118
1128
  const [cmd, ...args] = commandArgs;
1119
1129
  if (!cmd) throw new Error("No command specified");
1120
1130
  logger$12.log(`🚀 Running: ${[cmd, ...args].join(" ")}`);
1121
- const existingNodeOptions = process.env.NODE_OPTIONS ?? "";
1131
+ const existingNodeOptions = (process.env.NODE_OPTIONS ?? "").replace(/--import[= ]\S+/g, "").trim();
1122
1132
  const preloadImport = `--import=${preloadPath}`;
1123
1133
  const nodeOptions = [existingNodeOptions, preloadImport].filter(Boolean).join(" ");
1124
1134
  const child = spawn(cmd, args, {
@@ -2278,7 +2288,7 @@ async function buildForProvider(provider, context, rootOutputDir, endpointGenera
2278
2288
  let masterKey;
2279
2289
  if (context.production?.bundle && !skipBundle) {
2280
2290
  logger$9.log(`\n📦 Bundling production server...`);
2281
- const { bundleServer } = await import("./bundler-C5xkxnyr.mjs");
2291
+ const { bundleServer } = await import("./bundler-c6QvGUBM.mjs");
2282
2292
  const allConstructs = [
2283
2293
  ...endpoints.map((e) => e.construct),
2284
2294
  ...functions.map((f) => f.construct),
@@ -5090,7 +5100,7 @@ async function createStateProvider(options) {
5090
5100
  if (!workspaceName) throw new Error("Workspace name is required for SSM state provider. Set \"name\" in gkm.config.ts.");
5091
5101
  const { LocalStateProvider } = await import("./LocalStateProvider-Dp0KkRcw.mjs");
5092
5102
  const { SSMStateProvider } = await import("./SSMStateProvider-CksOTB8M.mjs");
5093
- const { CachedStateProvider: CachedStateProvider$1 } = await import("./CachedStateProvider-CI61keQ1.mjs");
5103
+ const { CachedStateProvider: CachedStateProvider$1 } = await import("./CachedStateProvider-CC0DyO09.mjs");
5094
5104
  const ssmConfig = config$1;
5095
5105
  const local = new LocalStateProvider(workspaceRoot);
5096
5106
  const ssm = SSMStateProvider.create({
@@ -6557,7 +6567,7 @@ async function deployCommand(options) {
6557
6567
  dokployConfig = setupResult.config;
6558
6568
  finalRegistry = dokployConfig.registry ?? dockerConfig.registry;
6559
6569
  if (setupResult.serviceUrls) {
6560
- const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1, initStageSecrets } = await import("./storage-mwbL7PhP.mjs");
6570
+ const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1, initStageSecrets } = await import("./storage-Cs4WBsc4.mjs");
6561
6571
  let secrets = await readStageSecrets$1(stage);
6562
6572
  if (!secrets) {
6563
6573
  logger$3.log(` Creating secrets file for stage "${stage}"...`);
@@ -6851,7 +6861,7 @@ const GEEKMIDAS_VERSIONS = {
6851
6861
  "@geekmidas/rate-limit": "~2.0.0",
6852
6862
  "@geekmidas/schema": "~1.0.0",
6853
6863
  "@geekmidas/services": "~1.0.1",
6854
- "@geekmidas/storage": "~2.0.1",
6864
+ "@geekmidas/storage": "~2.0.2",
6855
6865
  "@geekmidas/studio": "~1.0.0",
6856
6866
  "@geekmidas/telescope": "~1.0.0",
6857
6867
  "@geekmidas/testkit": "~1.0.5",
@@ -12416,9 +12426,9 @@ program.command("secrets:push").description("Push secrets to remote provider (SS
12416
12426
  const globalOptions = program.opts();
12417
12427
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12418
12428
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12419
- const { pushSecrets: pushSecrets$1 } = await import("./sync-CYBVB64f.mjs");
12420
- const { reconcileMissingSecrets } = await import("./reconcile-BLh6rswz.mjs");
12421
- const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-mwbL7PhP.mjs");
12429
+ const { pushSecrets: pushSecrets$1 } = await import("./sync-COnAugP-.mjs");
12430
+ const { reconcileMissingSecrets } = await import("./reconcile-jfx0dsno.mjs");
12431
+ const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12422
12432
  const { workspace } = await loadWorkspaceConfig$1();
12423
12433
  const secrets = await readStageSecrets$1(options.stage, workspace.root);
12424
12434
  if (secrets) {
@@ -12441,9 +12451,9 @@ program.command("secrets:pull").description("Pull secrets from remote provider (
12441
12451
  const globalOptions = program.opts();
12442
12452
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12443
12453
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12444
- const { pullSecrets: pullSecrets$1 } = await import("./sync-CYBVB64f.mjs");
12445
- const { writeStageSecrets: writeStageSecrets$1 } = await import("./storage-mwbL7PhP.mjs");
12446
- const { reconcileMissingSecrets } = await import("./reconcile-BLh6rswz.mjs");
12454
+ const { pullSecrets: pullSecrets$1 } = await import("./sync-COnAugP-.mjs");
12455
+ const { writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12456
+ const { reconcileMissingSecrets } = await import("./reconcile-jfx0dsno.mjs");
12447
12457
  const { workspace } = await loadWorkspaceConfig$1();
12448
12458
  let secrets = await pullSecrets$1(options.stage, workspace);
12449
12459
  if (!secrets) {
@@ -12468,8 +12478,8 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
12468
12478
  const globalOptions = program.opts();
12469
12479
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12470
12480
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12471
- const { reconcileMissingSecrets } = await import("./reconcile-BLh6rswz.mjs");
12472
- const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-mwbL7PhP.mjs");
12481
+ const { reconcileMissingSecrets } = await import("./reconcile-jfx0dsno.mjs");
12482
+ const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12473
12483
  const { workspace } = await loadWorkspaceConfig$1();
12474
12484
  const secrets = await readStageSecrets$1(options.stage, workspace.root);
12475
12485
  if (!secrets) {