@geekmidas/cli 1.10.28 → 1.10.29

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.mjs CHANGED
@@ -3,7 +3,7 @@ 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 { createStageSecrets, generateConnectionUrls, generateDbPassword, generateDbUrl, generateFullstackCustomSecrets, generateLocalStackCredentials, generatePgBossUrl, generateSecurePassword, generateServiceCredentials, rotateServicePassword, writeDockerEnvFromSecrets } from "./fullstack-secrets-BDE7Sk93.mjs";
6
+ import { createStageSecrets, generateConnectionUrls, generateDbPassword, generateDbUrl, generateFullstackCustomSecrets, generateLocalStackCredentials, generatePgBossUrl, generateSecurePassword, generateServiceCredentials, rotateServicePassword, writeDockerEnvFromSecrets } from "./fullstack-secrets-P84v8zWn.mjs";
7
7
  import { getKeyPath, maskPassword, readStageSecrets, secretsExist, setCustomSecret, toEmbeddableSecrets, writeStageSecrets } from "./storage-dbb9RyBl.mjs";
8
8
  import { ConstructGenerator, EndpointGenerator, OPENAPI_OUTPUT_PATH, generateOpenApi, isPartitionedRoutes, normalizeRoutes, openapiCommand, resolveOpenApiConfig } from "./openapi-CQCoLuzh.mjs";
9
9
  import { DokployApi } from "./dokploy-api-BIT0683o.mjs";
@@ -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.27";
38
+ var version = "1.10.28";
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";
@@ -9107,6 +9107,7 @@ function generatePackageJson(options, template) {
9107
9107
  devDependencies$1["@types/pg"] = "~8.15.0";
9108
9108
  devDependencies$1["@geekmidas/testkit"] = GEEKMIDAS_VERSIONS["@geekmidas/testkit"];
9109
9109
  devDependencies$1["@faker-js/faker"] = "~9.8.0";
9110
+ devDependencies$1["kysely-ctl"] = "~0.10.0";
9110
9111
  devDependencies$1["vite-tsconfig-paths"] = "~5.1.0";
9111
9112
  }
9112
9113
  if (monorepo) {
@@ -9161,6 +9162,29 @@ function generateSourceFiles(options, template) {
9161
9162
  function generateTestFiles(options, _template) {
9162
9163
  if (!options.database) return [];
9163
9164
  return [
9165
+ {
9166
+ path: "kysely.config.ts",
9167
+ content: `import { Credentials } from '@geekmidas/envkit/credentials';
9168
+ import { PostgresDialect } from 'kysely';
9169
+ import { defineConfig } from 'kysely-ctl';
9170
+ import pg from 'pg';
9171
+
9172
+ export default defineConfig({
9173
+ dialect: new PostgresDialect({
9174
+ pool: new pg.Pool({
9175
+ password: Credentials.POSTGRES_PASSWORD,
9176
+ user: Credentials.POSTGRES_USER,
9177
+ database: Credentials.POSTGRES_DB,
9178
+ port: Number(Credentials.POSTGRES_PORT),
9179
+ host: Credentials.POSTGRES_HOST,
9180
+ }),
9181
+ }),
9182
+ migrations: {
9183
+ migrationFolder: './src/db/migrations',
9184
+ },
9185
+ });
9186
+ `
9187
+ },
9164
9188
  {
9165
9189
  path: "test/config.ts",
9166
9190
  content: `import { it as itVitest } from 'vitest';
@@ -9182,30 +9206,52 @@ export const it = wrapVitestKyselyTransaction<Database>(itVitest, {
9182
9206
  },
9183
9207
  {
9184
9208
  path: "test/globalSetup.ts",
9185
- content: `import { Kysely, PostgresDialect } from 'kysely';
9186
- import pg from 'pg';
9209
+ content: `import fs from 'node:fs/promises';
9210
+ import path from 'node:path';
9211
+ import { Credentials } from '@geekmidas/envkit/credentials';
9187
9212
  import { PostgresKyselyMigrator } from '@geekmidas/testkit/kysely';
9188
- import type { Database } from '~/services/database.ts';
9213
+ import { runInitScript } from '@geekmidas/testkit/postgres';
9214
+ import { FileMigrationProvider, Kysely, PostgresDialect } from 'kysely';
9215
+ import pg from 'pg';
9189
9216
 
9190
- export async function setup() {
9191
- const testUrl = process.env.DATABASE_URL;
9192
- if (!testUrl) throw new Error('DATABASE_URL is required for tests');
9217
+ export default async function globalSetup() {
9218
+ const databaseUrl = Credentials.DATABASE_URL!;
9219
+ const migrationFolder = path.resolve(import.meta.dirname, '../db/migrations');
9193
9220
 
9194
- // Run migrations on the test database
9195
- // (gkm test already rewrites DATABASE_URL to point to the _test database)
9196
- const db = new Kysely<Database>({
9221
+ const db = new Kysely({
9197
9222
  dialect: new PostgresDialect({
9198
- pool: new pg.Pool({ connectionString: testUrl }),
9223
+ pool: new pg.Pool({ connectionString: databaseUrl }),
9199
9224
  }),
9200
9225
  });
9201
9226
 
9202
9227
  const migrator = new PostgresKyselyMigrator({
9228
+ uri: databaseUrl,
9203
9229
  db,
9204
- migrationsPath: './src/migrations',
9230
+ afterCreate: async (uri) => {
9231
+ const initScriptPath = path.resolve(process.cwd(), 'docker/postgres/init.sh');
9232
+ const dbUrl = new URL(Credentials.DATABASE_URL!);
9233
+ const apiUrl = new URL(Credentials.API_DATABASE_URL!);
9234
+ const authUrl = new URL(Credentials.AUTH_DATABASE_URL!);
9235
+
9236
+ const env = {
9237
+ POSTGRES_USER: dbUrl.username,
9238
+ POSTGRES_DB: dbUrl.pathname.slice(1),
9239
+ API_DB_PASSWORD: decodeURIComponent(apiUrl.password),
9240
+ AUTH_DB_PASSWORD: decodeURIComponent(authUrl.password),
9241
+ PGBOSS_DB_PASSWORD: Credentials.PGBOSS_DB_PASSWORD ?? 'pgboss-dev-password',
9242
+ };
9243
+
9244
+ await runInitScript(initScriptPath, uri, env);
9245
+ },
9246
+ provider: new FileMigrationProvider({
9247
+ fs,
9248
+ path,
9249
+ migrationFolder,
9250
+ }),
9205
9251
  });
9206
9252
 
9207
- await migrator.migrateToLatest();
9208
- await db.destroy();
9253
+ const teardown = await migrator.start();
9254
+ return teardown;
9209
9255
  }
9210
9256
  `
9211
9257
  },
@@ -12384,7 +12430,7 @@ program.command("secrets:push").description("Push secrets to remote provider (SS
12384
12430
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12385
12431
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12386
12432
  const { pushSecrets: pushSecrets$1 } = await import("./sync-COnAugP-.mjs");
12387
- const { reconcileMissingSecrets } = await import("./reconcile-BjWhjfSp.mjs");
12433
+ const { reconcileMissingSecrets } = await import("./reconcile-DAAKa0YR.mjs");
12388
12434
  const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12389
12435
  const { workspace } = await loadWorkspaceConfig$1();
12390
12436
  const secrets = await readStageSecrets$1(options.stage, workspace.root);
@@ -12410,7 +12456,7 @@ program.command("secrets:pull").description("Pull secrets from remote provider (
12410
12456
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12411
12457
  const { pullSecrets: pullSecrets$1 } = await import("./sync-COnAugP-.mjs");
12412
12458
  const { writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12413
- const { reconcileMissingSecrets } = await import("./reconcile-BjWhjfSp.mjs");
12459
+ const { reconcileMissingSecrets } = await import("./reconcile-DAAKa0YR.mjs");
12414
12460
  const { workspace } = await loadWorkspaceConfig$1();
12415
12461
  let secrets = await pullSecrets$1(options.stage, workspace);
12416
12462
  if (!secrets) {
@@ -12435,7 +12481,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
12435
12481
  const globalOptions = program.opts();
12436
12482
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
12437
12483
  const { loadWorkspaceConfig: loadWorkspaceConfig$1 } = await import("./config.mjs");
12438
- const { reconcileMissingSecrets } = await import("./reconcile-BjWhjfSp.mjs");
12484
+ const { reconcileMissingSecrets } = await import("./reconcile-DAAKa0YR.mjs");
12439
12485
  const { readStageSecrets: readStageSecrets$1, writeStageSecrets: writeStageSecrets$1 } = await import("./storage-Cs4WBsc4.mjs");
12440
12486
  const { workspace } = await loadWorkspaceConfig$1();
12441
12487
  const secrets = await readStageSecrets$1(options.stage, workspace.root);