@geekmidas/cli 10.0.0-alpha.32 → 10.0.0-alpha.33

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 (57) hide show
  1. package/dist/{config-URVD4bTj.cjs → config-DMpzmsQL.cjs} +2 -2
  2. package/dist/{config-URVD4bTj.cjs.map → config-DMpzmsQL.cjs.map} +1 -1
  3. package/dist/{config-BH3Ki69F.mjs → config-Du8AQJRK.mjs} +2 -2
  4. package/dist/{config-BH3Ki69F.mjs.map → config-Du8AQJRK.mjs.map} +1 -1
  5. package/dist/config.cjs +2 -2
  6. package/dist/config.d.cts +2 -2
  7. package/dist/config.d.mts +2 -2
  8. package/dist/config.mjs +2 -2
  9. package/dist/discover-CMxesskG.mjs.map +1 -1
  10. package/dist/discover-CroTIm0K.cjs.map +1 -1
  11. package/dist/{github-BrDmlm1x.mjs → github-DN-92LWP.mjs} +3 -3
  12. package/dist/{github-BrDmlm1x.mjs.map → github-DN-92LWP.mjs.map} +1 -1
  13. package/dist/{github-B2fis34P.cjs → github-JhvrmjQp.cjs} +3 -3
  14. package/dist/{github-B2fis34P.cjs.map → github-JhvrmjQp.cjs.map} +1 -1
  15. package/dist/{index-p89EzILa.d.mts → index-CAp22ul5.d.cts} +2 -2
  16. package/dist/{index-p89EzILa.d.mts.map → index-CAp22ul5.d.cts.map} +1 -1
  17. package/dist/{index-rU9u761a.d.cts → index-DxXMtQNT.d.mts} +2 -2
  18. package/dist/{index-rU9u761a.d.cts.map → index-DxXMtQNT.d.mts.map} +1 -1
  19. package/dist/index.cjs +110 -81
  20. package/dist/index.cjs.map +1 -1
  21. package/dist/index.mjs +111 -82
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/{migrate-BiasgAIN.cjs → migrate-BkytlJlU.cjs} +4 -4
  24. package/dist/{migrate-BiasgAIN.cjs.map → migrate-BkytlJlU.cjs.map} +1 -1
  25. package/dist/{migrate-CnPtWnkR.mjs → migrate-D2rtGKYi.mjs} +4 -4
  26. package/dist/{migrate-CnPtWnkR.mjs.map → migrate-D2rtGKYi.mjs.map} +1 -1
  27. package/dist/openapi.cjs +1 -1
  28. package/dist/openapi.d.cts +1 -1
  29. package/dist/openapi.d.mts +1 -1
  30. package/dist/openapi.mjs +1 -1
  31. package/dist/{ready-DXtNfk7v.cjs → ready-CXhoutix.cjs} +108 -25
  32. package/dist/ready-CXhoutix.cjs.map +1 -0
  33. package/dist/{ready-CvP3JVEw.mjs → ready-D1BCiaYU.mjs} +106 -29
  34. package/dist/ready-D1BCiaYU.mjs.map +1 -0
  35. package/dist/reconcile/public.d.cts +1 -1
  36. package/dist/reconcile/public.d.mts +1 -1
  37. package/dist/{types-CzK6hsXP.d.mts → types-BTiu5kwo.d.mts} +26 -1
  38. package/dist/{types-CzK6hsXP.d.mts.map → types-BTiu5kwo.d.mts.map} +1 -1
  39. package/dist/{types-DOOAevjG.d.cts → types-Bj_FpeTc.d.cts} +26 -1
  40. package/dist/{types-DOOAevjG.d.cts.map → types-Bj_FpeTc.d.cts.map} +1 -1
  41. package/dist/vitest.cjs +1 -1
  42. package/dist/vitest.mjs +1 -1
  43. package/dist/workspace/index.cjs +1 -1
  44. package/dist/workspace/index.d.cts +2 -2
  45. package/dist/workspace/index.d.mts +2 -2
  46. package/dist/workspace/index.mjs +1 -1
  47. package/dist/{workspace-C97QUCIf.mjs → workspace-BNurJoFx.mjs} +3 -3
  48. package/dist/{workspace-C97QUCIf.mjs.map → workspace-BNurJoFx.mjs.map} +1 -1
  49. package/dist/{workspace-BhiMkRuA.cjs → workspace-C8TbIWxO.cjs} +3 -3
  50. package/dist/{workspace-BhiMkRuA.cjs.map → workspace-C8TbIWxO.cjs.map} +1 -1
  51. package/dist/{workspace-Bav3TVrP.cjs → workspace-CAJk6UmC.cjs} +11 -4
  52. package/dist/{workspace-Bav3TVrP.cjs.map → workspace-CAJk6UmC.cjs.map} +1 -1
  53. package/dist/{workspace-T4IVGSoB.mjs → workspace-CsL76tpc.mjs} +11 -4
  54. package/dist/{workspace-T4IVGSoB.mjs.map → workspace-CsL76tpc.mjs.map} +1 -1
  55. package/package.json +14 -14
  56. package/dist/ready-CvP3JVEw.mjs.map +0 -1
  57. package/dist/ready-DXtNfk7v.cjs.map +0 -1
package/dist/index.cjs CHANGED
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
4
4
  const require_discover = require("./discover-CroTIm0K.cjs");
5
- const require_config = require("./config-URVD4bTj.cjs");
6
- const require_workspace = require("./workspace-Bav3TVrP.cjs");
5
+ const require_config = require("./config-DMpzmsQL.cjs");
6
+ const require_workspace = require("./workspace-CAJk6UmC.cjs");
7
7
  const require_storage = require("./storage-C2JC31V9.cjs");
8
- const require_workspace$1 = require("./workspace-BhiMkRuA.cjs");
8
+ const require_workspace$1 = require("./workspace-C8TbIWxO.cjs");
9
9
  const require_OpenApiTsGenerator = require("./OpenApiTsGenerator-D1nhN98m.cjs");
10
10
  const require_openapi = require("./openapi.cjs");
11
- const require_ready = require("./ready-DXtNfk7v.cjs");
11
+ const require_ready = require("./ready-CXhoutix.cjs");
12
12
  const require_emit = require("./emit-BdoPFjZf.cjs");
13
13
  const require_reconcile = require("./reconcile-BxZTV2vl.cjs");
14
14
  let commander = require("commander");
@@ -42,7 +42,7 @@ let _geekmidas_constructs_subscribers = require("@geekmidas/constructs/subscribe
42
42
  let _geekmidas_constructs_topic = require("@geekmidas/constructs/topic");
43
43
  let node_dns_promises = require("node:dns/promises");
44
44
  //#region package.json
45
- var version = "10.0.0-alpha.32";
45
+ var version = "10.0.0-alpha.33";
46
46
  //#endregion
47
47
  //#region src/auth/credentials.ts
48
48
  /**
@@ -1092,9 +1092,9 @@ async function workspaceDevCommand(workspace, options) {
1092
1092
  ...reconciled.env
1093
1093
  };
1094
1094
  if (options.migrate || options.seed) {
1095
- const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs"));
1095
+ const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs"));
1096
1096
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
1097
- } else await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
1097
+ } else await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
1098
1098
  logger$10.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
1099
1099
  });
1100
1100
  const appUrls = {};
@@ -8646,7 +8646,27 @@ functions it called on the way.
8646
8646
  ${database ? "gkm test # starts services, injects secrets, then runs vitest" : "gkm test"}
8647
8647
  \`\`\`
8648
8648
 
8649
- Run tests through \`gkm test\`, not \`vitest\` directly${database ? " — it is what starts the database and injects the secrets the suite needs" : ""}.`;
8649
+ Run tests through \`gkm test\`, not \`vitest\` directly${database ? " — it is what starts the database and injects the secrets the suite needs" : ""}.${database ? `
8650
+
8651
+ **Factories, one per database.** \`test/factories/<construct>.ts\` at the
8652
+ project root — \`database.ts\` for \`Database\` — exports
8653
+ \`createFactory(db)\`. A feature test gets each by service name, on that
8654
+ test's transaction — the one \`db.get\` returns and its endpoints use — so
8655
+ ask for it rather than importing and building one. Sign in the way a person
8656
+ does, through \`browser.signIn\`:
8657
+
8658
+ \`\`\`typescript
8659
+ it('reads a user', async ({ browser, db, factories }) => {
8660
+ const factory = await factories.get('database');
8661
+ const ada = await factory.insert('users', { email: 'ada@example.com' });
8662
+
8663
+ await browser.signIn(ada.email);
8664
+ // … act through browser.api …
8665
+
8666
+ const app = await db.get('database');
8667
+ // … assert on what was written …
8668
+ });
8669
+ \`\`\`` : ""}`;
8650
8670
  }
8651
8671
  //#endregion
8652
8672
  //#region src/init/dependencies.ts
@@ -8774,26 +8794,26 @@ function loadPackageJson() {
8774
8794
  * Run: pnpm --filter @geekmidas/cli sync-versions
8775
8795
  */
8776
8796
  const GEEKMIDAS_VERSIONS = {
8777
- "@geekmidas/audit": "~10.0.0-alpha.32",
8778
- "@geekmidas/auth": "~10.0.0-alpha.32",
8779
- "@geekmidas/cache": "~10.0.0-alpha.32",
8780
- "@geekmidas/client": "~10.0.0-alpha.32",
8781
- "@geekmidas/cloud": "~10.0.0-alpha.32",
8782
- "@geekmidas/constructs": "~10.0.0-alpha.32",
8783
- "@geekmidas/db": "~10.0.0-alpha.32",
8784
- "@geekmidas/emailkit": "~10.0.0-alpha.32",
8785
- "@geekmidas/envkit": "~10.0.0-alpha.32",
8786
- "@geekmidas/errors": "~10.0.0-alpha.32",
8787
- "@geekmidas/events": "~10.0.0-alpha.32",
8788
- "@geekmidas/logger": "~10.0.0-alpha.32",
8789
- "@geekmidas/manifest": "~10.0.0-alpha.32",
8790
- "@geekmidas/rate-limit": "~10.0.0-alpha.32",
8791
- "@geekmidas/schema": "~10.0.0-alpha.32",
8792
- "@geekmidas/services": "~10.0.0-alpha.32",
8793
- "@geekmidas/storage": "~10.0.0-alpha.32",
8794
- "@geekmidas/studio": "~10.0.0-alpha.32",
8795
- "@geekmidas/telescope": "~10.0.0-alpha.32",
8796
- "@geekmidas/testkit": "~10.0.0-alpha.32",
8797
+ "@geekmidas/audit": "~10.0.0-alpha.33",
8798
+ "@geekmidas/auth": "~10.0.0-alpha.33",
8799
+ "@geekmidas/cache": "~10.0.0-alpha.33",
8800
+ "@geekmidas/client": "~10.0.0-alpha.33",
8801
+ "@geekmidas/cloud": "~10.0.0-alpha.33",
8802
+ "@geekmidas/constructs": "~10.0.0-alpha.33",
8803
+ "@geekmidas/db": "~10.0.0-alpha.33",
8804
+ "@geekmidas/emailkit": "~10.0.0-alpha.33",
8805
+ "@geekmidas/envkit": "~10.0.0-alpha.33",
8806
+ "@geekmidas/errors": "~10.0.0-alpha.33",
8807
+ "@geekmidas/events": "~10.0.0-alpha.33",
8808
+ "@geekmidas/logger": "~10.0.0-alpha.33",
8809
+ "@geekmidas/manifest": "~10.0.0-alpha.33",
8810
+ "@geekmidas/rate-limit": "~10.0.0-alpha.33",
8811
+ "@geekmidas/schema": "~10.0.0-alpha.33",
8812
+ "@geekmidas/services": "~10.0.0-alpha.33",
8813
+ "@geekmidas/storage": "~10.0.0-alpha.33",
8814
+ "@geekmidas/studio": "~10.0.0-alpha.33",
8815
+ "@geekmidas/telescope": "~10.0.0-alpha.33",
8816
+ "@geekmidas/testkit": "~10.0.0-alpha.33",
8797
8817
  "@geekmidas/cli": `~${loadPackageJson().version}`
8798
8818
  };
8799
8819
  //#endregion
@@ -11987,9 +12007,9 @@ function generateSourceFiles(options, template) {
11987
12007
  //#endregion
11988
12008
  //#region src/init/generators/test.ts
11989
12009
  /**
11990
- * Generate test infrastructure files when database is enabled.
11991
- * Includes transaction-isolated test config,
11992
- * factory system with builders/seeds, and an example spec.
12010
+ * Generate test infrastructure files when database is enabled: the
12011
+ * transaction-isolated test config and an example spec, in the app. The
12012
+ * factory is the project's — see {@link generateTestFactoryFiles}.
11993
12013
  */
11994
12014
  function generateTestFiles(options, _template) {
11995
12015
  if (!options.constructs.database) return [];
@@ -11997,10 +12017,9 @@ function generateTestFiles(options, _template) {
11997
12017
  const schema = !options.monorepo ? "../src/constructs/database.ts" : `@${options.name}/constructs/database.ts`;
11998
12018
  db.urlKey;
11999
12019
  db.ownerUrlKey;
12000
- return [
12001
- {
12002
- path: "test/config.ts",
12003
- content: `import { it as itVitest } from 'vitest';
12020
+ return [{
12021
+ path: "test/config.ts",
12022
+ content: `import { it as itVitest } from 'vitest';
12004
12023
  import { wrapVitestKyselyTransaction } from '@geekmidas/testkit/kysely';
12005
12024
  import { type Database, database } from '${schema}';
12006
12025
 
@@ -12010,17 +12029,56 @@ export const it = wrapVitestKyselyTransaction<Database>(itVitest, {
12010
12029
  connection: database,
12011
12030
  });
12012
12031
  `
12013
- },
12014
- {
12015
- path: "test/factory/index.ts",
12016
- content: `import type { Kysely } from 'kysely';
12032
+ }, {
12033
+ path: "test/example.spec.ts",
12034
+ content: `import { describe, expect } from 'vitest';
12035
+ import { it } from './config.ts';
12036
+
12037
+ describe('example', () => {
12038
+ it('should have a working test setup', async ({ trx }) => {
12039
+ // trx is a Kysely transaction; everything in it is rolled back after the
12040
+ // test
12041
+ expect(trx).toBeDefined();
12042
+ });
12043
+ });
12044
+ `
12045
+ }];
12046
+ }
12047
+ /**
12048
+ * The database's test factory, at the project root:
12049
+ * `test/factories/<construct>.ts`.
12050
+ *
12051
+ * A factory belongs to a database, not to an app, so there is one per database
12052
+ * for the whole project. `gkm test` finds it by that name and hands every
12053
+ * feature test \`factories.get('database')\`, built on the test's transaction.
12054
+ */
12055
+ function generateTestFactoryFiles(options) {
12056
+ if (!options.constructs.database) return [];
12057
+ const db = databaseFor();
12058
+ const schema = options.monorepo ? `@${options.name}/constructs/database.ts` : "../../src/constructs/database.ts";
12059
+ return [{
12060
+ path: `test/factories/${(0, _geekmidas_manifest.kebabCase)(db.id)}.ts`,
12061
+ content: `import type { Kysely } from 'kysely';
12017
12062
  import { KyselyFactory } from '@geekmidas/testkit/kysely';
12018
12063
  import type { Database } from '${schema}';
12019
- import { usersBuilder } from './users.ts';
12064
+
12065
+ const usersBuilder = KyselyFactory.createBuilder<Database, 'users'>(
12066
+ 'users',
12067
+ ({ faker }) => ({
12068
+ id: faker.string.uuid(),
12069
+ name: faker.person.fullName(),
12070
+ email: faker.internet.email(),
12071
+ createdAt: new Date(),
12072
+ }),
12073
+ );
12020
12074
 
12021
12075
  const builders = { users: usersBuilder };
12022
12076
  const seeds = {};
12023
12077
 
12078
+ /**
12079
+ * This database's factory. \`gkm test\` builds it on each feature test's
12080
+ * transaction and hands it over as \`factories.get('${(0, _geekmidas_manifest.serviceKey)(db.id)}')\`.
12081
+ */
12024
12082
  export function createFactory(db: Kysely<Database>) {
12025
12083
  return new KyselyFactory<Database, typeof builders, typeof seeds>(
12026
12084
  builders,
@@ -12031,38 +12089,7 @@ export function createFactory(db: Kysely<Database>) {
12031
12089
 
12032
12090
  export type Factory = ReturnType<typeof createFactory>;
12033
12091
  `
12034
- },
12035
- {
12036
- path: "test/factory/users.ts",
12037
- content: `import { KyselyFactory } from '@geekmidas/testkit/kysely';
12038
- import type { Database } from '${schema}';
12039
-
12040
- export const usersBuilder = KyselyFactory.createBuilder<Database, 'users'>(
12041
- 'users',
12042
- ({ faker }) => ({
12043
- id: faker.string.uuid(),
12044
- name: faker.person.fullName(),
12045
- email: faker.internet.email(),
12046
- createdAt: new Date(),
12047
- }),
12048
- );
12049
- `
12050
- },
12051
- {
12052
- path: "test/example.spec.ts",
12053
- content: `import { describe, expect } from 'vitest';
12054
- import { it } from './config.ts';
12055
-
12056
- describe('example', () => {
12057
- it('should have a working test setup', async ({ trx }) => {
12058
- // trx is a Kysely transaction; everything in it is rolled back after the
12059
- // test
12060
- expect(trx).toBeDefined();
12061
- });
12062
- });
12063
- `
12064
- }
12065
- ];
12092
+ }];
12066
12093
  }
12067
12094
  //#endregion
12068
12095
  //#region src/init/generators/ui.ts
@@ -14532,7 +14559,8 @@ async function initCommand(projectName, options = {}) {
14532
14559
  ...generateGithubFiles(templateOptions),
14533
14560
  ...generateMonorepoFiles(templateOptions, baseTemplate),
14534
14561
  ...generateRootConstructs(templateOptions),
14535
- ...generateModelsPackage(templateOptions)
14562
+ ...generateModelsPackage(templateOptions),
14563
+ ...generateTestFactoryFiles(templateOptions)
14536
14564
  ] : [];
14537
14565
  const webAppFiles = isFullstack ? frontendFramework === "tanstack-start" ? generateTanStackWebFiles(templateOptions) : frontendFramework === "expo" ? generateExpoAppFiles(templateOptions) : generateWebAppFiles(templateOptions) : [];
14538
14566
  const authAppFiles = isFullstack ? generateAuthAppFiles(templateOptions) : [];
@@ -14995,7 +15023,7 @@ var NoStoredSecrets = class extends Error {
14995
15023
  }
14996
15024
  };
14997
15025
  async function reconcile(secrets, workspace, stage) {
14998
- const { derivedContainers } = await Promise.resolve().then(() => require("./workspace-BhiMkRuA.cjs")).then((n) => n.workspace_exports);
15026
+ const { derivedContainers } = await Promise.resolve().then(() => require("./workspace-C8TbIWxO.cjs")).then((n) => n.workspace_exports);
14999
15027
  const result = require_reconcile.reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
15000
15028
  return result ? {
15001
15029
  secrets: result.secrets,
@@ -15339,7 +15367,8 @@ async function testCommand(options = {}) {
15339
15367
  patterns: require_workspace$1.constructGlobs(workspace),
15340
15368
  cacheBackend: require_workspace$1.backendsOf(workspace).cache,
15341
15369
  stage: require_workspace.TEST_STAGE,
15342
- env: finalCredentials
15370
+ env: finalCredentials,
15371
+ factories: (0, node_path.join)(workspace.root, workspace.test.factories ?? "test/factories")
15343
15372
  }) : void 0;
15344
15373
  if (options.prepare) {
15345
15374
  console.log(manifestPath ? ` 🧪 Test harness written beside ${manifestPath}` : " 🧪 Nothing to prepare: this project declares no constructs");
@@ -15393,7 +15422,7 @@ async function testCommand(options = {}) {
15393
15422
  * starts without the reference data the app needs.
15394
15423
  */
15395
15424
  async function migrateTestStage(workspace, env) {
15396
- const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs"));
15425
+ const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs"));
15397
15426
  const { discover } = await Promise.resolve().then(() => require("./discover-CroTIm0K.cjs")).then((n) => n.discover_exports);
15398
15427
  const sources = {};
15399
15428
  const manifest = await discover({
@@ -15838,7 +15867,7 @@ program.command("migrate").description("Apply each database construct's migratio
15838
15867
  try {
15839
15868
  const globalOptions = program.opts();
15840
15869
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15841
- const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs"));
15870
+ const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs"));
15842
15871
  await migrateCommand({
15843
15872
  ...options,
15844
15873
  ...construct ? { construct } : {}
@@ -15852,7 +15881,7 @@ program.command("seed").description("Migrate, then run each database construct's
15852
15881
  try {
15853
15882
  const globalOptions = program.opts();
15854
15883
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15855
- const { seedCommand } = await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs"));
15884
+ const { seedCommand } = await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs"));
15856
15885
  await seedCommand({
15857
15886
  ...options,
15858
15887
  ...construct ? { construct } : {}
@@ -15866,7 +15895,7 @@ program.command("migration").description("Write a construct's next migration: an
15866
15895
  try {
15867
15896
  const globalOptions = program.opts();
15868
15897
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
15869
- const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-BiasgAIN.cjs"));
15898
+ const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-BkytlJlU.cjs"));
15870
15899
  await migrationCommand({
15871
15900
  construct,
15872
15901
  ...name ? { name } : {}
@@ -16034,7 +16063,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16034
16063
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
16035
16064
  process.exit(1);
16036
16065
  }
16037
- const { derivedContainers } = await Promise.resolve().then(() => require("./workspace-BhiMkRuA.cjs")).then((n) => n.workspace_exports);
16066
+ const { derivedContainers } = await Promise.resolve().then(() => require("./workspace-C8TbIWxO.cjs")).then((n) => n.workspace_exports);
16038
16067
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
16039
16068
  if (!result) {
16040
16069
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -16093,7 +16122,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
16093
16122
  try {
16094
16123
  const globalOptions = program.opts();
16095
16124
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16096
- const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-B2fis34P.cjs"));
16125
+ const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-JhvrmjQp.cjs"));
16097
16126
  await deployGithubCommand(options);
16098
16127
  } catch (error) {
16099
16128
  console.error(formatError(error));