@geekmidas/cli 0.26.0 → 0.27.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 (35) hide show
  1. package/dist/{config-CTftATBX.cjs → config-BhryDQEq.cjs} +2 -2
  2. package/dist/{config-CTftATBX.cjs.map → config-BhryDQEq.cjs.map} +1 -1
  3. package/dist/{config-BogU0_oQ.mjs → config-C9bdq0l-.mjs} +2 -2
  4. package/dist/{config-BogU0_oQ.mjs.map → config-C9bdq0l-.mjs.map} +1 -1
  5. package/dist/config.cjs +2 -2
  6. package/dist/config.mjs +2 -2
  7. package/dist/index-CWN-bgrO.d.mts.map +1 -1
  8. package/dist/index-DEWYvYvg.d.cts.map +1 -1
  9. package/dist/index.cjs +118 -25
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/index.mjs +118 -25
  12. package/dist/index.mjs.map +1 -1
  13. package/dist/{openapi-DNbXfhXE.mjs → openapi-BCEFhkLh.mjs} +2 -2
  14. package/dist/{openapi-DNbXfhXE.mjs.map → openapi-BCEFhkLh.mjs.map} +1 -1
  15. package/dist/{openapi-BrhkPKM7.cjs → openapi-D82bBqG7.cjs} +2 -2
  16. package/dist/{openapi-BrhkPKM7.cjs.map → openapi-D82bBqG7.cjs.map} +1 -1
  17. package/dist/openapi.cjs +3 -3
  18. package/dist/openapi.mjs +3 -3
  19. package/dist/workspace/index.cjs +1 -1
  20. package/dist/workspace/index.mjs +1 -1
  21. package/dist/{workspace-iWgBlX6h.cjs → workspace-CiZBOjf9.cjs} +1 -7
  22. package/dist/{workspace-iWgBlX6h.cjs.map → workspace-CiZBOjf9.cjs.map} +1 -1
  23. package/dist/{workspace-CPLEZDZf.mjs → workspace-DQjmv9lk.mjs} +1 -7
  24. package/dist/{workspace-CPLEZDZf.mjs.map → workspace-DQjmv9lk.mjs.map} +1 -1
  25. package/package.json +4 -4
  26. package/src/init/__tests__/generators.spec.ts +12 -6
  27. package/src/init/__tests__/init.spec.ts +18 -6
  28. package/src/init/generators/models.ts +49 -19
  29. package/src/init/templates/api.ts +55 -3
  30. package/src/init/templates/minimal.ts +6 -0
  31. package/src/init/templates/serverless.ts +7 -0
  32. package/src/init/templates/worker.ts +6 -0
  33. package/src/workspace/__tests__/index.spec.ts +5 -6
  34. package/src/workspace/__tests__/schema.spec.ts +5 -5
  35. package/src/workspace/schema.ts +1 -13
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CUT6urMc.cjs');
2
- const require_workspace = require('./workspace-iWgBlX6h.cjs');
2
+ const require_workspace = require('./workspace-CiZBOjf9.cjs');
3
3
  const node_fs = require_chunk.__toESM(require("node:fs"));
4
4
  const node_path = require_chunk.__toESM(require("node:path"));
5
5
 
@@ -222,4 +222,4 @@ Object.defineProperty(exports, 'parseModuleConfig', {
222
222
  return parseModuleConfig;
223
223
  }
224
224
  });
225
- //# sourceMappingURL=config-CTftATBX.cjs.map
225
+ //# sourceMappingURL=config-BhryDQEq.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-CTftATBX.cjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, parse } from 'node:path';\nimport type { GkmConfig } from './types.js';\nimport {\n\tgetAppGkmConfig,\n\tisWorkspaceConfig,\n\ttype LoadedConfig,\n\ttype NormalizedAppConfig,\n\ttype NormalizedWorkspace,\n\tprocessConfig,\n\ttype WorkspaceConfig,\n} from './workspace/index.js';\n\nexport type { GkmConfig } from './types.js';\nexport type { LoadedConfig, WorkspaceConfig } from './workspace/index.js';\nexport { defineWorkspace } from './workspace/index.js';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n\treturn config;\n}\n\nexport interface ParsedModuleConfig {\n\tpath: string;\n\timportPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n\tconfigString: string,\n\tdefaultAlias: string,\n): ParsedModuleConfig {\n\tconst parts = configString.split('#');\n\tconst path = parts[0] ?? configString;\n\tconst exportName = parts[1];\n\tconst importPattern = !exportName\n\t\t? defaultAlias\n\t\t: exportName === defaultAlias\n\t\t\t? `{ ${defaultAlias} }`\n\t\t\t: `{ ${exportName} as ${defaultAlias} }`;\n\n\treturn { path, importPattern };\n}\n\nexport interface ConfigDiscoveryResult {\n\tconfigPath: string;\n\tworkspaceRoot: string;\n}\n\n/**\n * Find and return the path to the config file.\n *\n * Resolution order:\n * 1. GKM_CONFIG_PATH env var (set by workspace dev command)\n * 2. Walk up directory tree from cwd\n */\nfunction findConfigPath(cwd: string): ConfigDiscoveryResult {\n\tconst files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n\n\t// Check GKM_CONFIG_PATH env var first (set by workspace dev command)\n\tconst envConfigPath = process.env.GKM_CONFIG_PATH;\n\tif (envConfigPath && existsSync(envConfigPath)) {\n\t\treturn {\n\t\t\tconfigPath: envConfigPath,\n\t\t\tworkspaceRoot: dirname(envConfigPath),\n\t\t};\n\t}\n\n\t// Walk up directory tree to find config\n\tlet currentDir = cwd;\n\tconst { root } = parse(currentDir);\n\n\twhile (currentDir !== root) {\n\t\tfor (const file of files) {\n\t\t\tconst configPath = join(currentDir, file);\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\treturn {\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tworkspaceRoot: currentDir,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tcurrentDir = dirname(currentDir);\n\t}\n\n\tthrow new Error(\n\t\t'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n\t);\n}\n\n/**\n * Get app name from package.json in the given directory.\n * Handles scoped packages by extracting the name after the scope.\n *\n * @example\n * getAppNameFromCwd('/path/to/apps/api')\n * // package.json: { \"name\": \"@myorg/api\" }\n * // Returns: 'api'\n */\nexport function getAppNameFromCwd(cwd: string = process.cwd()): string | null {\n\tconst packageJsonPath = join(cwd, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n\t\tconst name = packageJson.name as string | undefined;\n\n\t\tif (!name) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle scoped packages: @scope/name -> name\n\t\tif (name.startsWith('@') && name.includes('/')) {\n\t\t\treturn name.split('/')[1] ?? null;\n\t\t}\n\n\t\treturn name;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\ninterface RawConfigResult {\n\tconfig: GkmConfig | WorkspaceConfig;\n\tworkspaceRoot: string;\n}\n\n/**\n * Load raw configuration from file.\n */\nasync function loadRawConfig(cwd: string): Promise<RawConfigResult> {\n\tconst { configPath, workspaceRoot } = findConfigPath(cwd);\n\n\ttry {\n\t\tconst config = await import(configPath);\n\t\treturn {\n\t\t\tconfig: config.default,\n\t\t\tworkspaceRoot,\n\t\t};\n\t} catch (error) {\n\t\tthrow new Error(`Failed to load config: ${(error as Error).message}`);\n\t}\n}\n\n/**\n * Load configuration file (single-app format).\n * For backwards compatibility with existing code.\n *\n * @deprecated Use loadWorkspaceConfig for new code\n */\nexport async function loadConfig(\n\tcwd: string = process.cwd(),\n): Promise<GkmConfig> {\n\tconst { config } = await loadRawConfig(cwd);\n\n\t// If it's a workspace config, throw an error\n\tif (isWorkspaceConfig(config)) {\n\t\tthrow new Error(\n\t\t\t'Workspace configuration detected. Use loadWorkspaceConfig() instead.',\n\t\t);\n\t}\n\n\treturn config;\n}\n\n/**\n * Load configuration file and process it as a workspace.\n * Works with both single-app and workspace configurations.\n *\n * Single-app configs are automatically wrapped as a workspace with one app.\n *\n * @example\n * ```ts\n * const { type, workspace } = await loadWorkspaceConfig();\n *\n * if (type === 'workspace') {\n * console.log('Multi-app workspace:', workspace.apps);\n * } else {\n * console.log('Single app wrapped as workspace');\n * }\n * ```\n */\nexport async function loadWorkspaceConfig(\n\tcwd: string = process.cwd(),\n): Promise<LoadedConfig> {\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\treturn processConfig(config, workspaceRoot);\n}\n\nexport interface AppConfigResult {\n\tappName: string;\n\tapp: NormalizedAppConfig;\n\tgkmConfig: GkmConfig;\n\tworkspace: NormalizedWorkspace;\n\tworkspaceRoot: string;\n\tappRoot: string;\n}\n\n/**\n * Load app-specific configuration from workspace.\n * Uses the app name from package.json to find the correct app config.\n *\n * @example\n * ```ts\n * // From apps/api directory with package.json: { \"name\": \"@myorg/api\" }\n * const { app, workspace, workspaceRoot } = await loadAppConfig();\n * console.log(app.routes); // './src/endpoints/**\\/*.ts'\n * ```\n */\nexport async function loadAppConfig(\n\tcwd: string = process.cwd(),\n): Promise<AppConfigResult> {\n\tconst appName = getAppNameFromCwd(cwd);\n\n\tif (!appName) {\n\t\tthrow new Error(\n\t\t\t'Could not determine app name. Ensure package.json exists with a \"name\" field.',\n\t\t);\n\t}\n\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\tconst loadedConfig = processConfig(config, workspaceRoot);\n\n\t// Find the app in workspace (apps is a Record<string, NormalizedAppConfig>)\n\tconst app = loadedConfig.workspace.apps[appName];\n\n\tif (!app) {\n\t\tconst availableApps = Object.keys(loadedConfig.workspace.apps).join(', ');\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" not found in workspace config. Available apps: ${availableApps}. ` +\n\t\t\t\t`Ensure the package.json name matches the app key in gkm.config.ts.`,\n\t\t);\n\t}\n\n\t// Get the app's GKM config using the helper\n\tconst gkmConfig = getAppGkmConfig(loadedConfig.workspace, appName);\n\n\tif (!gkmConfig) {\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" is not a backend app and cannot be run with gkm dev.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tappName,\n\t\tapp,\n\t\tgkmConfig,\n\t\tworkspace: loadedConfig.workspace,\n\t\tworkspaceRoot,\n\t\tappRoot: join(workspaceRoot, app.path),\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"config-BhryDQEq.cjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, parse } from 'node:path';\nimport type { GkmConfig } from './types.js';\nimport {\n\tgetAppGkmConfig,\n\tisWorkspaceConfig,\n\ttype LoadedConfig,\n\ttype NormalizedAppConfig,\n\ttype NormalizedWorkspace,\n\tprocessConfig,\n\ttype WorkspaceConfig,\n} from './workspace/index.js';\n\nexport type { GkmConfig } from './types.js';\nexport type { LoadedConfig, WorkspaceConfig } from './workspace/index.js';\nexport { defineWorkspace } from './workspace/index.js';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n\treturn config;\n}\n\nexport interface ParsedModuleConfig {\n\tpath: string;\n\timportPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n\tconfigString: string,\n\tdefaultAlias: string,\n): ParsedModuleConfig {\n\tconst parts = configString.split('#');\n\tconst path = parts[0] ?? configString;\n\tconst exportName = parts[1];\n\tconst importPattern = !exportName\n\t\t? defaultAlias\n\t\t: exportName === defaultAlias\n\t\t\t? `{ ${defaultAlias} }`\n\t\t\t: `{ ${exportName} as ${defaultAlias} }`;\n\n\treturn { path, importPattern };\n}\n\nexport interface ConfigDiscoveryResult {\n\tconfigPath: string;\n\tworkspaceRoot: string;\n}\n\n/**\n * Find and return the path to the config file.\n *\n * Resolution order:\n * 1. GKM_CONFIG_PATH env var (set by workspace dev command)\n * 2. Walk up directory tree from cwd\n */\nfunction findConfigPath(cwd: string): ConfigDiscoveryResult {\n\tconst files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n\n\t// Check GKM_CONFIG_PATH env var first (set by workspace dev command)\n\tconst envConfigPath = process.env.GKM_CONFIG_PATH;\n\tif (envConfigPath && existsSync(envConfigPath)) {\n\t\treturn {\n\t\t\tconfigPath: envConfigPath,\n\t\t\tworkspaceRoot: dirname(envConfigPath),\n\t\t};\n\t}\n\n\t// Walk up directory tree to find config\n\tlet currentDir = cwd;\n\tconst { root } = parse(currentDir);\n\n\twhile (currentDir !== root) {\n\t\tfor (const file of files) {\n\t\t\tconst configPath = join(currentDir, file);\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\treturn {\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tworkspaceRoot: currentDir,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tcurrentDir = dirname(currentDir);\n\t}\n\n\tthrow new Error(\n\t\t'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n\t);\n}\n\n/**\n * Get app name from package.json in the given directory.\n * Handles scoped packages by extracting the name after the scope.\n *\n * @example\n * getAppNameFromCwd('/path/to/apps/api')\n * // package.json: { \"name\": \"@myorg/api\" }\n * // Returns: 'api'\n */\nexport function getAppNameFromCwd(cwd: string = process.cwd()): string | null {\n\tconst packageJsonPath = join(cwd, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n\t\tconst name = packageJson.name as string | undefined;\n\n\t\tif (!name) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle scoped packages: @scope/name -> name\n\t\tif (name.startsWith('@') && name.includes('/')) {\n\t\t\treturn name.split('/')[1] ?? null;\n\t\t}\n\n\t\treturn name;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\ninterface RawConfigResult {\n\tconfig: GkmConfig | WorkspaceConfig;\n\tworkspaceRoot: string;\n}\n\n/**\n * Load raw configuration from file.\n */\nasync function loadRawConfig(cwd: string): Promise<RawConfigResult> {\n\tconst { configPath, workspaceRoot } = findConfigPath(cwd);\n\n\ttry {\n\t\tconst config = await import(configPath);\n\t\treturn {\n\t\t\tconfig: config.default,\n\t\t\tworkspaceRoot,\n\t\t};\n\t} catch (error) {\n\t\tthrow new Error(`Failed to load config: ${(error as Error).message}`);\n\t}\n}\n\n/**\n * Load configuration file (single-app format).\n * For backwards compatibility with existing code.\n *\n * @deprecated Use loadWorkspaceConfig for new code\n */\nexport async function loadConfig(\n\tcwd: string = process.cwd(),\n): Promise<GkmConfig> {\n\tconst { config } = await loadRawConfig(cwd);\n\n\t// If it's a workspace config, throw an error\n\tif (isWorkspaceConfig(config)) {\n\t\tthrow new Error(\n\t\t\t'Workspace configuration detected. Use loadWorkspaceConfig() instead.',\n\t\t);\n\t}\n\n\treturn config;\n}\n\n/**\n * Load configuration file and process it as a workspace.\n * Works with both single-app and workspace configurations.\n *\n * Single-app configs are automatically wrapped as a workspace with one app.\n *\n * @example\n * ```ts\n * const { type, workspace } = await loadWorkspaceConfig();\n *\n * if (type === 'workspace') {\n * console.log('Multi-app workspace:', workspace.apps);\n * } else {\n * console.log('Single app wrapped as workspace');\n * }\n * ```\n */\nexport async function loadWorkspaceConfig(\n\tcwd: string = process.cwd(),\n): Promise<LoadedConfig> {\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\treturn processConfig(config, workspaceRoot);\n}\n\nexport interface AppConfigResult {\n\tappName: string;\n\tapp: NormalizedAppConfig;\n\tgkmConfig: GkmConfig;\n\tworkspace: NormalizedWorkspace;\n\tworkspaceRoot: string;\n\tappRoot: string;\n}\n\n/**\n * Load app-specific configuration from workspace.\n * Uses the app name from package.json to find the correct app config.\n *\n * @example\n * ```ts\n * // From apps/api directory with package.json: { \"name\": \"@myorg/api\" }\n * const { app, workspace, workspaceRoot } = await loadAppConfig();\n * console.log(app.routes); // './src/endpoints/**\\/*.ts'\n * ```\n */\nexport async function loadAppConfig(\n\tcwd: string = process.cwd(),\n): Promise<AppConfigResult> {\n\tconst appName = getAppNameFromCwd(cwd);\n\n\tif (!appName) {\n\t\tthrow new Error(\n\t\t\t'Could not determine app name. Ensure package.json exists with a \"name\" field.',\n\t\t);\n\t}\n\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\tconst loadedConfig = processConfig(config, workspaceRoot);\n\n\t// Find the app in workspace (apps is a Record<string, NormalizedAppConfig>)\n\tconst app = loadedConfig.workspace.apps[appName];\n\n\tif (!app) {\n\t\tconst availableApps = Object.keys(loadedConfig.workspace.apps).join(', ');\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" not found in workspace config. Available apps: ${availableApps}. ` +\n\t\t\t\t`Ensure the package.json name matches the app key in gkm.config.ts.`,\n\t\t);\n\t}\n\n\t// Get the app's GKM config using the helper\n\tconst gkmConfig = getAppGkmConfig(loadedConfig.workspace, appName);\n\n\tif (!gkmConfig) {\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" is not a backend app and cannot be run with gkm dev.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tappName,\n\t\tapp,\n\t\tgkmConfig,\n\t\tworkspace: loadedConfig.workspace,\n\t\tworkspaceRoot,\n\t\tappRoot: join(workspaceRoot, app.path),\n\t};\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { getAppGkmConfig, isWorkspaceConfig, processConfig } from "./workspace-CPLEZDZf.mjs";
1
+ import { getAppGkmConfig, isWorkspaceConfig, processConfig } from "./workspace-DQjmv9lk.mjs";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { dirname, join, parse } from "node:path";
4
4
 
@@ -186,4 +186,4 @@ async function loadAppConfig(cwd = process.cwd()) {
186
186
 
187
187
  //#endregion
188
188
  export { defineConfig, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig };
189
- //# sourceMappingURL=config-BogU0_oQ.mjs.map
189
+ //# sourceMappingURL=config-C9bdq0l-.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-BogU0_oQ.mjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, parse } from 'node:path';\nimport type { GkmConfig } from './types.js';\nimport {\n\tgetAppGkmConfig,\n\tisWorkspaceConfig,\n\ttype LoadedConfig,\n\ttype NormalizedAppConfig,\n\ttype NormalizedWorkspace,\n\tprocessConfig,\n\ttype WorkspaceConfig,\n} from './workspace/index.js';\n\nexport type { GkmConfig } from './types.js';\nexport type { LoadedConfig, WorkspaceConfig } from './workspace/index.js';\nexport { defineWorkspace } from './workspace/index.js';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n\treturn config;\n}\n\nexport interface ParsedModuleConfig {\n\tpath: string;\n\timportPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n\tconfigString: string,\n\tdefaultAlias: string,\n): ParsedModuleConfig {\n\tconst parts = configString.split('#');\n\tconst path = parts[0] ?? configString;\n\tconst exportName = parts[1];\n\tconst importPattern = !exportName\n\t\t? defaultAlias\n\t\t: exportName === defaultAlias\n\t\t\t? `{ ${defaultAlias} }`\n\t\t\t: `{ ${exportName} as ${defaultAlias} }`;\n\n\treturn { path, importPattern };\n}\n\nexport interface ConfigDiscoveryResult {\n\tconfigPath: string;\n\tworkspaceRoot: string;\n}\n\n/**\n * Find and return the path to the config file.\n *\n * Resolution order:\n * 1. GKM_CONFIG_PATH env var (set by workspace dev command)\n * 2. Walk up directory tree from cwd\n */\nfunction findConfigPath(cwd: string): ConfigDiscoveryResult {\n\tconst files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n\n\t// Check GKM_CONFIG_PATH env var first (set by workspace dev command)\n\tconst envConfigPath = process.env.GKM_CONFIG_PATH;\n\tif (envConfigPath && existsSync(envConfigPath)) {\n\t\treturn {\n\t\t\tconfigPath: envConfigPath,\n\t\t\tworkspaceRoot: dirname(envConfigPath),\n\t\t};\n\t}\n\n\t// Walk up directory tree to find config\n\tlet currentDir = cwd;\n\tconst { root } = parse(currentDir);\n\n\twhile (currentDir !== root) {\n\t\tfor (const file of files) {\n\t\t\tconst configPath = join(currentDir, file);\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\treturn {\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tworkspaceRoot: currentDir,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tcurrentDir = dirname(currentDir);\n\t}\n\n\tthrow new Error(\n\t\t'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n\t);\n}\n\n/**\n * Get app name from package.json in the given directory.\n * Handles scoped packages by extracting the name after the scope.\n *\n * @example\n * getAppNameFromCwd('/path/to/apps/api')\n * // package.json: { \"name\": \"@myorg/api\" }\n * // Returns: 'api'\n */\nexport function getAppNameFromCwd(cwd: string = process.cwd()): string | null {\n\tconst packageJsonPath = join(cwd, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n\t\tconst name = packageJson.name as string | undefined;\n\n\t\tif (!name) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle scoped packages: @scope/name -> name\n\t\tif (name.startsWith('@') && name.includes('/')) {\n\t\t\treturn name.split('/')[1] ?? null;\n\t\t}\n\n\t\treturn name;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\ninterface RawConfigResult {\n\tconfig: GkmConfig | WorkspaceConfig;\n\tworkspaceRoot: string;\n}\n\n/**\n * Load raw configuration from file.\n */\nasync function loadRawConfig(cwd: string): Promise<RawConfigResult> {\n\tconst { configPath, workspaceRoot } = findConfigPath(cwd);\n\n\ttry {\n\t\tconst config = await import(configPath);\n\t\treturn {\n\t\t\tconfig: config.default,\n\t\t\tworkspaceRoot,\n\t\t};\n\t} catch (error) {\n\t\tthrow new Error(`Failed to load config: ${(error as Error).message}`);\n\t}\n}\n\n/**\n * Load configuration file (single-app format).\n * For backwards compatibility with existing code.\n *\n * @deprecated Use loadWorkspaceConfig for new code\n */\nexport async function loadConfig(\n\tcwd: string = process.cwd(),\n): Promise<GkmConfig> {\n\tconst { config } = await loadRawConfig(cwd);\n\n\t// If it's a workspace config, throw an error\n\tif (isWorkspaceConfig(config)) {\n\t\tthrow new Error(\n\t\t\t'Workspace configuration detected. Use loadWorkspaceConfig() instead.',\n\t\t);\n\t}\n\n\treturn config;\n}\n\n/**\n * Load configuration file and process it as a workspace.\n * Works with both single-app and workspace configurations.\n *\n * Single-app configs are automatically wrapped as a workspace with one app.\n *\n * @example\n * ```ts\n * const { type, workspace } = await loadWorkspaceConfig();\n *\n * if (type === 'workspace') {\n * console.log('Multi-app workspace:', workspace.apps);\n * } else {\n * console.log('Single app wrapped as workspace');\n * }\n * ```\n */\nexport async function loadWorkspaceConfig(\n\tcwd: string = process.cwd(),\n): Promise<LoadedConfig> {\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\treturn processConfig(config, workspaceRoot);\n}\n\nexport interface AppConfigResult {\n\tappName: string;\n\tapp: NormalizedAppConfig;\n\tgkmConfig: GkmConfig;\n\tworkspace: NormalizedWorkspace;\n\tworkspaceRoot: string;\n\tappRoot: string;\n}\n\n/**\n * Load app-specific configuration from workspace.\n * Uses the app name from package.json to find the correct app config.\n *\n * @example\n * ```ts\n * // From apps/api directory with package.json: { \"name\": \"@myorg/api\" }\n * const { app, workspace, workspaceRoot } = await loadAppConfig();\n * console.log(app.routes); // './src/endpoints/**\\/*.ts'\n * ```\n */\nexport async function loadAppConfig(\n\tcwd: string = process.cwd(),\n): Promise<AppConfigResult> {\n\tconst appName = getAppNameFromCwd(cwd);\n\n\tif (!appName) {\n\t\tthrow new Error(\n\t\t\t'Could not determine app name. Ensure package.json exists with a \"name\" field.',\n\t\t);\n\t}\n\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\tconst loadedConfig = processConfig(config, workspaceRoot);\n\n\t// Find the app in workspace (apps is a Record<string, NormalizedAppConfig>)\n\tconst app = loadedConfig.workspace.apps[appName];\n\n\tif (!app) {\n\t\tconst availableApps = Object.keys(loadedConfig.workspace.apps).join(', ');\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" not found in workspace config. Available apps: ${availableApps}. ` +\n\t\t\t\t`Ensure the package.json name matches the app key in gkm.config.ts.`,\n\t\t);\n\t}\n\n\t// Get the app's GKM config using the helper\n\tconst gkmConfig = getAppGkmConfig(loadedConfig.workspace, appName);\n\n\tif (!gkmConfig) {\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" is not a backend app and cannot be run with gkm dev.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tappName,\n\t\tapp,\n\t\tgkmConfig,\n\t\tworkspace: loadedConfig.workspace,\n\t\tworkspaceRoot,\n\t\tappRoot: join(workspaceRoot, app.path),\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"config-C9bdq0l-.mjs","names":["config: GkmConfig","configString: string","defaultAlias: string","cwd: string"],"sources":["../src/config.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { dirname, join, parse } from 'node:path';\nimport type { GkmConfig } from './types.js';\nimport {\n\tgetAppGkmConfig,\n\tisWorkspaceConfig,\n\ttype LoadedConfig,\n\ttype NormalizedAppConfig,\n\ttype NormalizedWorkspace,\n\tprocessConfig,\n\ttype WorkspaceConfig,\n} from './workspace/index.js';\n\nexport type { GkmConfig } from './types.js';\nexport type { LoadedConfig, WorkspaceConfig } from './workspace/index.js';\nexport { defineWorkspace } from './workspace/index.js';\n/**\n * Define GKM configuration with full TypeScript support.\n * This is an identity function that provides type safety and autocomplete.\n *\n * @example\n * ```ts\n * // gkm.config.ts\n * import { defineConfig } from '@geekmidas/cli/config';\n *\n * export default defineConfig({\n * routes: './src/endpoints/**\\/*.ts',\n * envParser: './src/config/env',\n * logger: './src/config/logger',\n * telescope: true,\n * });\n * ```\n */\nexport function defineConfig(config: GkmConfig): GkmConfig {\n\treturn config;\n}\n\nexport interface ParsedModuleConfig {\n\tpath: string;\n\timportPattern: string;\n}\n\n/**\n * Parse a module config string into path and import pattern.\n *\n * @param configString - Config string in format \"./path/to/module\" or \"./path/to/module#exportName\"\n * @param defaultAlias - The default alias name to use if no export name specified\n * @returns Object with path and import pattern\n *\n * @example\n * parseModuleConfig('./src/config/env', 'envParser')\n * // { path: './src/config/env', importPattern: 'envParser' }\n *\n * parseModuleConfig('./src/config/env#envParser', 'envParser')\n * // { path: './src/config/env', importPattern: '{ envParser }' }\n *\n * parseModuleConfig('./src/config/env#myEnv', 'envParser')\n * // { path: './src/config/env', importPattern: '{ myEnv as envParser }' }\n */\nexport function parseModuleConfig(\n\tconfigString: string,\n\tdefaultAlias: string,\n): ParsedModuleConfig {\n\tconst parts = configString.split('#');\n\tconst path = parts[0] ?? configString;\n\tconst exportName = parts[1];\n\tconst importPattern = !exportName\n\t\t? defaultAlias\n\t\t: exportName === defaultAlias\n\t\t\t? `{ ${defaultAlias} }`\n\t\t\t: `{ ${exportName} as ${defaultAlias} }`;\n\n\treturn { path, importPattern };\n}\n\nexport interface ConfigDiscoveryResult {\n\tconfigPath: string;\n\tworkspaceRoot: string;\n}\n\n/**\n * Find and return the path to the config file.\n *\n * Resolution order:\n * 1. GKM_CONFIG_PATH env var (set by workspace dev command)\n * 2. Walk up directory tree from cwd\n */\nfunction findConfigPath(cwd: string): ConfigDiscoveryResult {\n\tconst files = ['gkm.config.json', 'gkm.config.ts', 'gkm.config.js'];\n\n\t// Check GKM_CONFIG_PATH env var first (set by workspace dev command)\n\tconst envConfigPath = process.env.GKM_CONFIG_PATH;\n\tif (envConfigPath && existsSync(envConfigPath)) {\n\t\treturn {\n\t\t\tconfigPath: envConfigPath,\n\t\t\tworkspaceRoot: dirname(envConfigPath),\n\t\t};\n\t}\n\n\t// Walk up directory tree to find config\n\tlet currentDir = cwd;\n\tconst { root } = parse(currentDir);\n\n\twhile (currentDir !== root) {\n\t\tfor (const file of files) {\n\t\t\tconst configPath = join(currentDir, file);\n\t\t\tif (existsSync(configPath)) {\n\t\t\t\treturn {\n\t\t\t\t\tconfigPath,\n\t\t\t\t\tworkspaceRoot: currentDir,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\tcurrentDir = dirname(currentDir);\n\t}\n\n\tthrow new Error(\n\t\t'Configuration file not found. Please create gkm.config.json, gkm.config.ts, or gkm.config.js in the project root.',\n\t);\n}\n\n/**\n * Get app name from package.json in the given directory.\n * Handles scoped packages by extracting the name after the scope.\n *\n * @example\n * getAppNameFromCwd('/path/to/apps/api')\n * // package.json: { \"name\": \"@myorg/api\" }\n * // Returns: 'api'\n */\nexport function getAppNameFromCwd(cwd: string = process.cwd()): string | null {\n\tconst packageJsonPath = join(cwd, 'package.json');\n\n\tif (!existsSync(packageJsonPath)) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n\t\tconst name = packageJson.name as string | undefined;\n\n\t\tif (!name) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Handle scoped packages: @scope/name -> name\n\t\tif (name.startsWith('@') && name.includes('/')) {\n\t\t\treturn name.split('/')[1] ?? null;\n\t\t}\n\n\t\treturn name;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\ninterface RawConfigResult {\n\tconfig: GkmConfig | WorkspaceConfig;\n\tworkspaceRoot: string;\n}\n\n/**\n * Load raw configuration from file.\n */\nasync function loadRawConfig(cwd: string): Promise<RawConfigResult> {\n\tconst { configPath, workspaceRoot } = findConfigPath(cwd);\n\n\ttry {\n\t\tconst config = await import(configPath);\n\t\treturn {\n\t\t\tconfig: config.default,\n\t\t\tworkspaceRoot,\n\t\t};\n\t} catch (error) {\n\t\tthrow new Error(`Failed to load config: ${(error as Error).message}`);\n\t}\n}\n\n/**\n * Load configuration file (single-app format).\n * For backwards compatibility with existing code.\n *\n * @deprecated Use loadWorkspaceConfig for new code\n */\nexport async function loadConfig(\n\tcwd: string = process.cwd(),\n): Promise<GkmConfig> {\n\tconst { config } = await loadRawConfig(cwd);\n\n\t// If it's a workspace config, throw an error\n\tif (isWorkspaceConfig(config)) {\n\t\tthrow new Error(\n\t\t\t'Workspace configuration detected. Use loadWorkspaceConfig() instead.',\n\t\t);\n\t}\n\n\treturn config;\n}\n\n/**\n * Load configuration file and process it as a workspace.\n * Works with both single-app and workspace configurations.\n *\n * Single-app configs are automatically wrapped as a workspace with one app.\n *\n * @example\n * ```ts\n * const { type, workspace } = await loadWorkspaceConfig();\n *\n * if (type === 'workspace') {\n * console.log('Multi-app workspace:', workspace.apps);\n * } else {\n * console.log('Single app wrapped as workspace');\n * }\n * ```\n */\nexport async function loadWorkspaceConfig(\n\tcwd: string = process.cwd(),\n): Promise<LoadedConfig> {\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\treturn processConfig(config, workspaceRoot);\n}\n\nexport interface AppConfigResult {\n\tappName: string;\n\tapp: NormalizedAppConfig;\n\tgkmConfig: GkmConfig;\n\tworkspace: NormalizedWorkspace;\n\tworkspaceRoot: string;\n\tappRoot: string;\n}\n\n/**\n * Load app-specific configuration from workspace.\n * Uses the app name from package.json to find the correct app config.\n *\n * @example\n * ```ts\n * // From apps/api directory with package.json: { \"name\": \"@myorg/api\" }\n * const { app, workspace, workspaceRoot } = await loadAppConfig();\n * console.log(app.routes); // './src/endpoints/**\\/*.ts'\n * ```\n */\nexport async function loadAppConfig(\n\tcwd: string = process.cwd(),\n): Promise<AppConfigResult> {\n\tconst appName = getAppNameFromCwd(cwd);\n\n\tif (!appName) {\n\t\tthrow new Error(\n\t\t\t'Could not determine app name. Ensure package.json exists with a \"name\" field.',\n\t\t);\n\t}\n\n\tconst { config, workspaceRoot } = await loadRawConfig(cwd);\n\tconst loadedConfig = processConfig(config, workspaceRoot);\n\n\t// Find the app in workspace (apps is a Record<string, NormalizedAppConfig>)\n\tconst app = loadedConfig.workspace.apps[appName];\n\n\tif (!app) {\n\t\tconst availableApps = Object.keys(loadedConfig.workspace.apps).join(', ');\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" not found in workspace config. Available apps: ${availableApps}. ` +\n\t\t\t\t`Ensure the package.json name matches the app key in gkm.config.ts.`,\n\t\t);\n\t}\n\n\t// Get the app's GKM config using the helper\n\tconst gkmConfig = getAppGkmConfig(loadedConfig.workspace, appName);\n\n\tif (!gkmConfig) {\n\t\tthrow new Error(\n\t\t\t`App \"${appName}\" is not a backend app and cannot be run with gkm dev.`,\n\t\t);\n\t}\n\n\treturn {\n\t\tappName,\n\t\tapp,\n\t\tgkmConfig,\n\t\tworkspace: loadedConfig.workspace,\n\t\tworkspaceRoot,\n\t\tappRoot: join(workspaceRoot, app.path),\n\t};\n}\n"],"mappings":"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"}
package/dist/config.cjs CHANGED
@@ -1,5 +1,5 @@
1
- const require_workspace = require('./workspace-iWgBlX6h.cjs');
2
- const require_config = require('./config-CTftATBX.cjs');
1
+ const require_workspace = require('./workspace-CiZBOjf9.cjs');
2
+ const require_config = require('./config-BhryDQEq.cjs');
3
3
 
4
4
  exports.defineConfig = require_config.defineConfig;
5
5
  exports.defineWorkspace = require_workspace.defineWorkspace;
package/dist/config.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { defineWorkspace } from "./workspace-CPLEZDZf.mjs";
2
- import { defineConfig, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig } from "./config-BogU0_oQ.mjs";
1
+ import { defineWorkspace } from "./workspace-DQjmv9lk.mjs";
2
+ import { defineConfig, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig } from "./config-C9bdq0l-.mjs";
3
3
 
4
4
  export { defineConfig, defineWorkspace, getAppNameFromCwd, loadAppConfig, loadConfig, loadWorkspaceConfig, parseModuleConfig };
@@ -1 +1 @@
1
- {"version":3,"file":"index-CWN-bgrO.d.mts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index-CWN-bgrO.d.mts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAgBA;AAKA;AAUiB,KAfL,YAAA,GAeuB,SAAQ,GAAA,QAAA,GAAA,YAAkB;AAa7D;;;AAImB,UA3BF,kBAAA,CA2BE;EAAkB;EAEF,OAAA,CAAA,EAAA,MAAA;EAMlB;EAcA,KAAA,CAAA,EAAA,MAAA;;;;AAIgB;AAMhB,UAjDA,iBAAA,SAA0B,kBAiDd,CAAA;EAcZ;EAUA,IAAA,CAAA,EAAA;IAYA,IAAA,EAAA,MAAY;IAQnB,IAAA,EAAA,MAAa;IAAA,IAAA,CAAA,EAAA,MAAA;IAWb,IAAA,CAAA,EAAA,MAAA;EAAY,CAAA;;;;;AAkBb,UA7GQ,cAAA,CA6GR;EAAW;EAE2B,EAAA,CAElB,EAAA,OAAA,GA/Gb,kBA+Ga;EAAY;EAEP,KAEvB,CAAA,EAAA,OAAA,GAjHQ,kBAiHR;EAAO;EAQI,IAAA,CAAA,EAAA,OAAA,GAvHJ,iBAuHI;AAOtB;;;;AACsB,UAzHL,sBAAA,CAyHK;EASL;EAQL,QAAA,EAAA,MAAQ;EAOR;EAAU,SAAA,EAAA,MAAA;EAAA;EAA0B,QAAvB,CAAA,EAAA,MAAA;EAAM;EAMnB,UAAA,CAAA,EAAA,MAAe;;;;;AACK,UA1If,YAAA,CA0Ie;EAAC;EAAR,OACQ,CAAA,EAzItB,YAyIsB;EAAK;EAO1B,OAAA,CAAA,EA9ID,sBA8Ie;;;;;AAGhB,UA3IO,YAAA,CA2IP;EAAY;EACA,IACV,CAAA,EAAA,MAAA;EAAc;AACF;AAMxB;;;EAAkD,MAAU,CAAA,EAAA,KAAA;AAAK;AAKjE;;;AAGc,UA9IG,YAAA,CA8IH;EAAK;EAAa,QAAC,CAAA,EAAA,MAAA,EAAA;EAAC;EAAR,MACM,CAAA,EA3ItB,YA2IsB;;;;;AAMrB,UA3IM,aAAA,CA2IN;EAAa;EAuBP,OAAA,CAAA,EAAA,OAAA;EAAe;EAAA,SAKV,CAAA,EAAA,MAAA;EAAS;EAAlB,GAGH,CAAA,EAAA,QAAA,GAAA,QAAA;;;;AASc;AAMP,UA7KA,YAAA,CA6KoB;EAAA;EAAA,MAAa,CAAA,EAAA,MAAA;;;AAAD;AAYjD;UAjLU,aAAA,CAiL0B;EAAA;EAGK,IAAlC,CAAA,EAAA,SAAA,GAAA,UAAA;EAAM;EACY,IAChB,EAAA,MAAA;EAAY;EACA,IACX,EAAA,MAAA;EAAa;EAMN,MAAA,CAAA,EAnLP,YAmLmB;EAAA;EAAA,MAIvB,CAAA,EAnLI,MAmLJ;EAAS;EAAkB,SAErB,CAAA,EAnLC,MAmLD;EAAmB;EAMf,KAAA,CAAA,EAvLP,MAuLO;EAAiB;EAAA,WACxB,CAAA,EAtLM,MAsLN;EAAS;EAAkB,SACvB,CAAA,EAAA,MAAA;EAAe;;;cAjLf;ECxFP;EAKA,KAAA,CAAA,EDqFG,WCrFH;EAKU;EASA,SAAA,CAAA,EAAA,MAAA,GAAA,OAAoB,GDyEJ,eCzEI;EASpB;EAoIH,MAAA,CAAA,EAAA,MAAA,GAAA,OA2FV,GD7J0B,YC6J1B;EAAA;EAAA,OAAA,CAAA,EAAA,OAAA,GD3JkB,aC2JlB;;YDzJQ;;;;;;WAQD;;;;;;UAOO,0DACR;;iBAEO;;;;;;UAOC,SAAA,SAAkB;;;;;;;KAQvB,QAAA,GAAW;;;;;;KAOX,UAAA,GAAa,eAAe;;;;;KAM5B,8BAA8B,4BAC7B,QAAQ,KAAK,MAAM;iCACC;;;;;KAOrB,6BAA6B;;QAElC,gBAAgB;WACb;WACA;aACE;YACD;;;;;KAMC,4BAA4B,oBAAoB;;;;KAKhD,sCAAsC;;sBAGpC,QAAQ,KAAK,MAAM;mBACf,cAAc;;WAGtB;WACA;aACE;YACD;;;;;;;;UAuBM,eAAA;;;;QAKV,eAAe;;WAGZ;;WAGA;;aAGE;;YAGD;;;;;UAMM,mBAAA,SAA4B,KAAK;;;;;;wBAM3B;;;;;UAMN,mBAAA;;;QAGV,eAAe;YACX;UACF;UACA;WACC;;;;;UAMO,YAAA;;;;OAIX,YAAY;;aAEN;;;;;iBAMI,iBAAA,SACP,YAAY,4BACR;;;;;;AAxTb,cC+CM,wBD/CkB,EAAA,SAAA,CAAA,SAAA,CAAA;AAKxB;AAUA;AAaA;cCwBM,sBDxByB,EAAA,SAAA,CAAA,QAAA,EAAA,YAAA,CAAA;;;;AAMI,iBCuBnB,uBAAA,CDvBmB,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAMnC;AAcA;;AAEW,iBCUK,oBAAA,CDVL,MAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;AAEsB;AAMjC;AAciB,iBCHD,oBAAA,CDOM,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAMtB;AAYA;AAGC;AAKsB,cCmGV,qBDnGU,ECmGW,CAAA,CAAA,SDnGX,CAAA;EAAA,IAWb,eAAA,CCmLP,CAAA,CAAA,SDnLO,CAAA;EAAY,IAIZ,aAAA,YAAA,aAAA,CAAA;IAEG,IAAA,cAAA,cAAA,UAAA,CAAA;MAEJ,OAAA,EAAA,SAAA;MAEM,QAAA,EAAA,UAAA;IAMF,CAAA,CAAA,CAAA,CAAA;IAEJ,IAAA,aAAA;IAEuB,IAAA,aAAA;IAEH,YAAA,eAAA,WAAA,YAAA,CAAA,CAAA;IAER,MAAA,eAAA,UAAA,CAAA;MAEV,OAAA,EAAA,SAAA;MAQD,MAAA,EAAA,QAAA;MAAY,UAAA,EAAA,YAAA;IAOL,CAAA,CAAA,CAAA;IAAc,MAAA,eAAA,WAAA,CAAA,SAAA,YAAA,YAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAGf,SAAA,eAAA,WAAA,CAAA,SAAA,YAAA,YAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAFP,KAAA,eAAA,WAAA,CAAA,SAAA,YAAA,YAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAAa,WAAA,eAAA,WAAA,CAAA,SAAA,YAAA,YAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IASL,SAAU,eAAQ,YAAa,CAAA;IAQpC,MAAA,eAAW,YAAa,CAAA;IAOxB,KAAA,eAAU,YAAA,CAAA;MAAA,MAAA,eAAA,YAAA,CAAA;IAAkB,CAAA,eAAA,CAAA,CAAA;IAAf,SAAA,eAAA,WAAA,CAAA,SAAA,YAAA,cAAA,aAAA,CAAA;MAAM,OAAA,eAAA,aAAA,CAAA;MAMnB,IAAA,eAAe,YAAA,CAAA;MAAA,IAAA,eAAA,YAAA,CAAA;MAAe,MAAA,eAAA,WAAA,YAAA,CAAA,CAAA;MAC7B,UAAA,eAAA,aAAA,CAAA;MAAa,UAAA,eAAA,YAAA,CAAA;MAAM,SAAA,eAAA,aAAA,CAAA;IAAX,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IACY,MAAA,eAAA,WAAA,CAAA,SAAA,YAAA,cAAA,aAAA,CAAA;MAAK,OAAA,eAAA,aAAA,CAAA;MAO1B,IAAA,eAAc,YAAA,CAAA;MAAA,MAAA,eAAA,YAAA,CAAA;IAAe,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IAElB,OAAA,eAAA,WAAA,CAAA,SAAA,aAAA,aAAA,CAAA;MAAhB,OAAA,eAAA,aAAA,CAAA;MACG,KAAA,eAAA,YAAA,CAAA;MACA,OAAA,eAAA,YAAA,CAAA;MACE,WAAA,eAAA,YAAA,CAAA;IACD,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IAAa,OAAA,eAAA,UAAA,CAAA;MAMZ,IAAA,EAAA,MAAa;MAAA,GAAA,EAAA,KAAA;IAAe,CAAA,CAAA,CAAA;IAAoB,GAAA,eAAA,WAAA,CAAA,SAAA,YAAA,YAAA,YAAA,CAAA,CAAA,CAAA,CAAA;IAAK,SAAA,eAAA,UAAA,CAAA;MAKrD,MAAA,EAAA,QAAA;IAAuB,CAAA,CAAA,CAAA;IAAe,MAAA,eAAA,YAAA,CAAA;MAGpC,MAAA,eAAA,YAAA,CAAA;IAAa,CAAA,eAAA,CAAA,CAAA;EAAK,CAAA,eAAC,CAAA,CAAA;EAAC,MAAZ,eAAA,YAAA,CAAA;IACU,QAAA,eAAA,WAAA,YAAA,CAAA,CAAA;IAAd,MAAA,eAAA,YAAA,CAAA;MAGR,IAAA,eAAA,YAAA,CAAA;MACA,MAAA,eAAA,UAAA,CAAA;QACE,GAAA,EAAA,KAAA;MACD,CAAA,CAAA,CAAA;IAAa,CAAA,eAAA,CAAA,CAAA;EAuBP,CAAA,eAAA,CAAA,CAAe;EAAA,MAAA,eAAA,YAAA,CAAA;IAKV,OAAA,eAAA,UAAA,CAAA;MAAf,OAAA,EAAA,SAAA;MAGG,MAAA,EAAA,QAAA;MAGA,UAAA,EAAA,YAAA;IAGE,CAAA,CAAA,CAAA;IAGD,OAAA,eAAA,YAAA,CAAA;MAAa,QAAA,UAAA;MAMP,SAAA,aAAoB;MAAA,QAAA,eAAA,YAAA,CAAA;MAAa,UAAA,eAAA,YAAA,CAAA;IAM3B,CAAA,eAAA,CAAA,CAAA;EAAY,CAAA,eANU,CAAA,CAAA;EAAI,QAAA,eAAA,YAAA,CAAA;IAYhC,EAAA,eAAA,WAAmB,CAAA,SAAA,aAAA,aAAA,CAAA;MAAA,OAAA,eAAA,YAAA,CAAA;MAGd,KAAA,eAAA,YAAA,CAAA;IAAf,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IACI,KAAA,eAAA,WAAA,CAAA,SAAA,aAAA,aAAA,CAAA;MACF,OAAA,eAAA,YAAA,CAAA;MACA,KAAA,eAAA,YAAA,CAAA;IACC,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;IAAa,IAAA,eAAA,WAAA,CAAA,SAAA,aAAA,aAAA,CAAA;MAMN,OAAY,eAAA,YAAA,CAAA;MAAA,KAAA,eAAA,YAAA,CAAA;MAIvB,IAAA,eAAA,YAAA,CAAA;QAAY,IAAA,aAAA;QAEN,IAAA,aAAA;QAAmB,IAAA,eAAA,YAAA,CAAA;QAMf,IAAA,eAAiB,YAAA,CAAA;MAAA,CAAA,eAAA,CAAA,CAAA;IACxB,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA;EAAS,CAAA,eAAG,CAAA,CAAA;EAAe,OACvB,eAAA,YAAA,CAAA;IAAe,OAAA,eAAA,aAAA,CAAA;;;;MCzQtB,MAAA,EAAA,QAAA;IAKA,CAAA,CAAA,CAAA;EAKU,CAAA,eAAA,CAAA,CAAA;AAShB,CAAA,eAAgB,CAAA;AAShB;AAoIA;;;iBAiGgB,uBAAA,mBAEb,CAAA,CAAE,aAAa;;;;iBAOF,2BAAA;;SAER,CAAA,CAAE,aAAa;UACd,CAAA,CAAE;;;;;iBAYK,sBAAA,QAA8B,CAAA,CAAE;;;ADnUhD;AAUA;AAaA;;;;;AAMmC;AAMnC;AAcA;;;;AAIiC;AAMjC;AAcA;AAUA;AAYA;AAGC;;;;;;;;;;;;;;AAkDqB;AAOtB;;;;AACsB;AAStB;AAQA;AAOA;;AAAwC,iBE9ExB,eF8EwB,CAAA,oBE9EY,UF8EZ,CAAA,CAAA,MAAA,EE7E/B,cF6E+B,CE7EhB,KF6EgB,CAAA,CAAA,EE5ErC,uBF4EqC,CE5Eb,KF4Ea,CAAA;;AAAT;AAM/B;AAA2B,iBEpDX,kBAAA,CFoDW,MAAA,EEnDlB,eFmDkB,EAAA,GAAA,EAAA,MAAA,CAAA,EEjDxB,mBFiDwB;;;;;AACN,iBENL,wBAAA,CFMK,MAAA,EELZ,SFKY,EAAA,GAAA,EAAA,MAAA,CAAA,EEHlB,mBFGkB;;AACiB;AAOtC;;AAAyC,iBE8CzB,aAAA,CF9CyB,MAAA,EE+ChC,SF/CgC,GE+CpB,eF/CoB,EAAA,GAAA,EAAA,MAAA,CAAA,EEiDtC,YFjDsC;;;;;AAK7B,iBEuEI,eAAA,CFvEJ,SAAA,EEwEA,mBFxEA,EAAA,OAAA,EAAA,MAAA,CAAA,EE0ET,SF1ES,GAAA,SAAA;;AACY;AAMxB;;AAAwC,iBE8FxB,gBAAA,CF9FwB,SAAA,EE8FI,mBF9FJ,CAAA,EAAA,MAAA,EAAA;;AAAyB;AAKjE;;AAAkD,iBEuHlC,oBAAA,CFvHkC,SAAA,EEwHtC,mBFxHsC,EAAA,OAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EE2H/C,MF3H+C,CAAA,MAAA,EAAA,MAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index-DEWYvYvg.d.cts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index-DEWYvYvg.d.cts","names":[],"sources":["../src/workspace/types.ts","../src/workspace/schema.ts","../src/workspace/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env -S npx tsx
2
2
  const require_chunk = require('./chunk-CUT6urMc.cjs');
3
- const require_workspace = require('./workspace-iWgBlX6h.cjs');
4
- const require_config = require('./config-CTftATBX.cjs');
5
- const require_openapi = require('./openapi-BrhkPKM7.cjs');
3
+ const require_workspace = require('./workspace-CiZBOjf9.cjs');
4
+ const require_config = require('./config-BhryDQEq.cjs');
5
+ const require_openapi = require('./openapi-D82bBqG7.cjs');
6
6
  const require_storage = require('./storage-BPRgh3DU.cjs');
7
7
  const require_dokploy_api = require('./dokploy-api-C5czOZoc.cjs');
8
8
  const require_openapi_react_query = require('./openapi-react-query-DvNpdDpM.cjs');
@@ -27,7 +27,7 @@ const node_module = require_chunk.__toESM(require("node:module"));
27
27
 
28
28
  //#region package.json
29
29
  var name = "@geekmidas/cli";
30
- var version = "0.25.0";
30
+ var version = "0.27.0";
31
31
  var description = "CLI tools for building Lambda handlers, server applications, and generating OpenAPI specs";
32
32
  var private$1 = false;
33
33
  var type = "module";
@@ -4975,25 +4975,25 @@ function generateModelsPackage(options) {
4975
4975
  include: ["src/**/*.ts"],
4976
4976
  exclude: ["node_modules", "dist"]
4977
4977
  };
4978
- const indexTs = `import { z } from 'zod';
4978
+ const commonTs = `import { z } from 'zod';
4979
4979
 
4980
4980
  // ============================================
4981
4981
  // Common Schemas
4982
4982
  // ============================================
4983
4983
 
4984
- export const idSchema = z.string().uuid();
4984
+ export const IdSchema = z.string().uuid();
4985
4985
 
4986
- export const timestampsSchema = z.object({
4986
+ export const TimestampsSchema = z.object({
4987
4987
  createdAt: z.coerce.date(),
4988
4988
  updatedAt: z.coerce.date(),
4989
4989
  });
4990
4990
 
4991
- export const paginationSchema = z.object({
4991
+ export const PaginationSchema = z.object({
4992
4992
  page: z.coerce.number().int().positive().default(1),
4993
4993
  limit: z.coerce.number().int().positive().max(100).default(20),
4994
4994
  });
4995
4995
 
4996
- export const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
4996
+ export const PaginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =>
4997
4997
  z.object({
4998
4998
  items: z.array(itemSchema),
4999
4999
  total: z.number(),
@@ -5002,35 +5002,59 @@ export const paginatedResponseSchema = <T extends z.ZodTypeAny>(itemSchema: T) =
5002
5002
  totalPages: z.number(),
5003
5003
  });
5004
5004
 
5005
+ // ============================================
5006
+ // Type Exports
5007
+ // ============================================
5008
+
5009
+ export type Id = z.infer<typeof IdSchema>;
5010
+ export type Timestamps = z.infer<typeof TimestampsSchema>;
5011
+ export type Pagination = z.infer<typeof PaginationSchema>;
5012
+ `;
5013
+ const userTs = `import { z } from 'zod';
5014
+ import { IdSchema, TimestampsSchema } from './common.js';
5015
+
5005
5016
  // ============================================
5006
5017
  // User Schemas
5007
5018
  // ============================================
5008
5019
 
5009
- export const userSchema = z.object({
5010
- id: idSchema,
5020
+ export const UserSchema = z.object({
5021
+ id: IdSchema,
5011
5022
  email: z.string().email(),
5012
5023
  name: z.string().min(1).max(100),
5013
- ...timestampsSchema.shape,
5024
+ ...TimestampsSchema.shape,
5014
5025
  });
5015
5026
 
5016
- export const createUserSchema = userSchema.omit({
5027
+ export const CreateUserSchema = UserSchema.omit({
5017
5028
  id: true,
5018
5029
  createdAt: true,
5019
5030
  updatedAt: true,
5020
5031
  });
5021
5032
 
5022
- export const updateUserSchema = createUserSchema.partial();
5033
+ export const UpdateUserSchema = CreateUserSchema.partial();
5034
+
5035
+ // ============================================
5036
+ // Response Schemas
5037
+ // ============================================
5038
+
5039
+ export const UserResponseSchema = UserSchema.pick({
5040
+ id: true,
5041
+ name: true,
5042
+ email: true,
5043
+ });
5044
+
5045
+ export const ListUsersResponseSchema = z.object({
5046
+ users: z.array(UserSchema.pick({ id: true, name: true })),
5047
+ });
5023
5048
 
5024
5049
  // ============================================
5025
5050
  // Type Exports
5026
5051
  // ============================================
5027
5052
 
5028
- export type Id = z.infer<typeof idSchema>;
5029
- export type Timestamps = z.infer<typeof timestampsSchema>;
5030
- export type Pagination = z.infer<typeof paginationSchema>;
5031
- export type User = z.infer<typeof userSchema>;
5032
- export type CreateUser = z.infer<typeof createUserSchema>;
5033
- export type UpdateUser = z.infer<typeof updateUserSchema>;
5053
+ export type User = z.infer<typeof UserSchema>;
5054
+ export type CreateUser = z.infer<typeof CreateUserSchema>;
5055
+ export type UpdateUser = z.infer<typeof UpdateUserSchema>;
5056
+ export type UserResponse = z.infer<typeof UserResponseSchema>;
5057
+ export type ListUsersResponse = z.infer<typeof ListUsersResponseSchema>;
5034
5058
  `;
5035
5059
  return [
5036
5060
  {
@@ -5042,8 +5066,12 @@ export type UpdateUser = z.infer<typeof updateUserSchema>;
5042
5066
  content: `${JSON.stringify(tsConfig, null, 2)}\n`
5043
5067
  },
5044
5068
  {
5045
- path: "packages/models/src/index.ts",
5046
- content: indexTs
5069
+ path: "packages/models/src/common.ts",
5070
+ content: commonTs
5071
+ },
5072
+ {
5073
+ path: "packages/models/src/user.ts",
5074
+ content: userTs
5047
5075
  }
5048
5076
  ];
5049
5077
  }
@@ -5348,6 +5376,7 @@ const apiTemplate = {
5348
5376
  "@geekmidas/envkit": GEEKMIDAS_VERSIONS["@geekmidas/envkit"],
5349
5377
  "@geekmidas/events": GEEKMIDAS_VERSIONS["@geekmidas/events"],
5350
5378
  "@geekmidas/logger": GEEKMIDAS_VERSIONS["@geekmidas/logger"],
5379
+ "@geekmidas/rate-limit": GEEKMIDAS_VERSIONS["@geekmidas/rate-limit"],
5351
5380
  "@geekmidas/schema": GEEKMIDAS_VERSIONS["@geekmidas/schema"],
5352
5381
  "@geekmidas/services": GEEKMIDAS_VERSIONS["@geekmidas/services"],
5353
5382
  "@geekmidas/errors": GEEKMIDAS_VERSIONS["@geekmidas/errors"],
@@ -5376,11 +5405,12 @@ const apiTemplate = {
5376
5405
  "fmt:check": "biome format ."
5377
5406
  },
5378
5407
  files: (options) => {
5379
- const { loggerType, routesStructure } = options;
5408
+ const { loggerType, routesStructure, monorepo, name: name$1 } = options;
5380
5409
  const loggerContent = `import { createLogger } from '@geekmidas/logger/${loggerType}';
5381
5410
 
5382
5411
  export const logger = createLogger();
5383
5412
  `;
5413
+ const modelsImport = monorepo ? `@${name$1}/models` : null;
5384
5414
  const getRoutePath = (file) => {
5385
5415
  switch (routesStructure) {
5386
5416
  case "centralized-endpoints": return `src/endpoints/${file}`;
@@ -5417,9 +5447,14 @@ export const config = envParser
5417
5447
  {
5418
5448
  path: getRoutePath("health.ts"),
5419
5449
  content: `import { e } from '@geekmidas/constructs/endpoints';
5450
+ import { z } from 'zod';
5420
5451
 
5421
5452
  export const healthEndpoint = e
5422
5453
  .get('/health')
5454
+ .output(z.object({
5455
+ status: z.string(),
5456
+ timestamp: z.string(),
5457
+ }))
5423
5458
  .handle(async () => ({
5424
5459
  status: 'ok',
5425
5460
  timestamp: new Date().toISOString(),
@@ -5428,10 +5463,31 @@ export const healthEndpoint = e
5428
5463
  },
5429
5464
  {
5430
5465
  path: getRoutePath("users/list.ts"),
5431
- content: `import { e } from '@geekmidas/constructs/endpoints';
5466
+ content: modelsImport ? `import { e } from '@geekmidas/constructs/endpoints';
5467
+ import { ListUsersResponseSchema } from '${modelsImport}/user';
5468
+
5469
+ export const listUsersEndpoint = e
5470
+ .get('/users')
5471
+ .output(ListUsersResponseSchema)
5472
+ .handle(async () => ({
5473
+ users: [
5474
+ { id: '1', name: 'Alice' },
5475
+ { id: '2', name: 'Bob' },
5476
+ ],
5477
+ }));
5478
+ ` : `import { e } from '@geekmidas/constructs/endpoints';
5479
+ import { z } from 'zod';
5480
+
5481
+ const UserSchema = z.object({
5482
+ id: z.string(),
5483
+ name: z.string(),
5484
+ });
5432
5485
 
5433
5486
  export const listUsersEndpoint = e
5434
5487
  .get('/users')
5488
+ .output(z.object({
5489
+ users: z.array(UserSchema),
5490
+ }))
5435
5491
  .handle(async () => ({
5436
5492
  users: [
5437
5493
  { id: '1', name: 'Alice' },
@@ -5442,12 +5498,30 @@ export const listUsersEndpoint = e
5442
5498
  },
5443
5499
  {
5444
5500
  path: getRoutePath("users/get.ts"),
5445
- content: `import { e } from '@geekmidas/constructs/endpoints';
5501
+ content: modelsImport ? `import { e } from '@geekmidas/constructs/endpoints';
5502
+ import { z } from 'zod';
5503
+ import { UserResponseSchema } from '${modelsImport}/user';
5504
+
5505
+ export const getUserEndpoint = e
5506
+ .get('/users/:id')
5507
+ .params(z.object({ id: z.string() }))
5508
+ .output(UserResponseSchema)
5509
+ .handle(async ({ params }) => ({
5510
+ id: params.id,
5511
+ name: 'Alice',
5512
+ email: 'alice@example.com',
5513
+ }));
5514
+ ` : `import { e } from '@geekmidas/constructs/endpoints';
5446
5515
  import { z } from 'zod';
5447
5516
 
5448
5517
  export const getUserEndpoint = e
5449
5518
  .get('/users/:id')
5450
5519
  .params(z.object({ id: z.string() }))
5520
+ .output(z.object({
5521
+ id: z.string(),
5522
+ name: z.string(),
5523
+ email: z.string().email(),
5524
+ }))
5451
5525
  .handle(async ({ params }) => ({
5452
5526
  id: params.id,
5453
5527
  name: 'Alice',
@@ -5555,6 +5629,7 @@ const minimalTemplate = {
5555
5629
  "@geekmidas/constructs": GEEKMIDAS_VERSIONS["@geekmidas/constructs"],
5556
5630
  "@geekmidas/envkit": GEEKMIDAS_VERSIONS["@geekmidas/envkit"],
5557
5631
  "@geekmidas/logger": GEEKMIDAS_VERSIONS["@geekmidas/logger"],
5632
+ "@geekmidas/rate-limit": GEEKMIDAS_VERSIONS["@geekmidas/rate-limit"],
5558
5633
  "@geekmidas/schema": GEEKMIDAS_VERSIONS["@geekmidas/schema"],
5559
5634
  "@hono/node-server": "~1.14.1",
5560
5635
  hono: "~4.8.2",
@@ -5617,9 +5692,14 @@ export const config = envParser
5617
5692
  {
5618
5693
  path: getRoutePath("health.ts"),
5619
5694
  content: `import { e } from '@geekmidas/constructs/endpoints';
5695
+ import { z } from 'zod';
5620
5696
 
5621
5697
  export const healthEndpoint = e
5622
5698
  .get('/health')
5699
+ .output(z.object({
5700
+ status: z.string(),
5701
+ timestamp: z.string(),
5702
+ }))
5623
5703
  .handle(async () => ({
5624
5704
  status: 'ok',
5625
5705
  timestamp: new Date().toISOString(),
@@ -5722,6 +5802,7 @@ const serverlessTemplate = {
5722
5802
  "@geekmidas/envkit": GEEKMIDAS_VERSIONS["@geekmidas/envkit"],
5723
5803
  "@geekmidas/logger": GEEKMIDAS_VERSIONS["@geekmidas/logger"],
5724
5804
  "@geekmidas/cloud": GEEKMIDAS_VERSIONS["@geekmidas/cloud"],
5805
+ "@geekmidas/rate-limit": GEEKMIDAS_VERSIONS["@geekmidas/rate-limit"],
5725
5806
  "@geekmidas/schema": GEEKMIDAS_VERSIONS["@geekmidas/schema"],
5726
5807
  "@hono/node-server": "~1.14.1",
5727
5808
  hono: "~4.8.2",
@@ -5785,9 +5866,15 @@ export const config = envParser
5785
5866
  {
5786
5867
  path: getRoutePath("health.ts"),
5787
5868
  content: `import { e } from '@geekmidas/constructs/endpoints';
5869
+ import { z } from 'zod';
5788
5870
 
5789
5871
  export const healthEndpoint = e
5790
5872
  .get('/health')
5873
+ .output(z.object({
5874
+ status: z.string(),
5875
+ timestamp: z.string(),
5876
+ region: z.string(),
5877
+ }))
5791
5878
  .handle(async () => ({
5792
5879
  status: 'ok',
5793
5880
  timestamp: new Date().toISOString(),
@@ -5836,6 +5923,7 @@ const workerTemplate = {
5836
5923
  "@geekmidas/envkit": GEEKMIDAS_VERSIONS["@geekmidas/envkit"],
5837
5924
  "@geekmidas/events": GEEKMIDAS_VERSIONS["@geekmidas/events"],
5838
5925
  "@geekmidas/logger": GEEKMIDAS_VERSIONS["@geekmidas/logger"],
5926
+ "@geekmidas/rate-limit": GEEKMIDAS_VERSIONS["@geekmidas/rate-limit"],
5839
5927
  "@geekmidas/schema": GEEKMIDAS_VERSIONS["@geekmidas/schema"],
5840
5928
  "@hono/node-server": "~1.14.1",
5841
5929
  hono: "~4.8.2",
@@ -5898,9 +5986,14 @@ export const config = envParser
5898
5986
  {
5899
5987
  path: getRoutePath("health.ts"),
5900
5988
  content: `import { e } from '@geekmidas/constructs/endpoints';
5989
+ import { z } from 'zod';
5901
5990
 
5902
5991
  export const healthEndpoint = e
5903
5992
  .get('/health')
5993
+ .output(z.object({
5994
+ status: z.string(),
5995
+ timestamp: z.string(),
5996
+ }))
5904
5997
  .handle(async () => ({
5905
5998
  status: 'ok',
5906
5999
  timestamp: new Date().toISOString(),