@geekmidas/cli 2.0.2 → 9.1.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekmidas/cli",
3
- "version": "2.0.2",
3
+ "version": "9.1.0",
4
4
  "description": "CLI tools for building Lambda handlers, server applications, and generating OpenAPI specs",
5
5
  "private": false,
6
6
  "type": "module",
@@ -81,12 +81,12 @@
81
81
  "prompts": "~2.4.2",
82
82
  "tsx": "~4.20.3",
83
83
  "yaml": "~2.8.2",
84
- "@geekmidas/constructs": "~7.0.1",
85
- "@geekmidas/envkit": "~1.1.1",
86
- "@geekmidas/errors": "~1.0.2",
87
- "@geekmidas/logger": "~1.0.3",
88
- "@geekmidas/manifest": "0.1.1",
89
- "@geekmidas/schema": "~1.0.4"
84
+ "@geekmidas/constructs": "~9.1.0",
85
+ "@geekmidas/envkit": "~9.1.0",
86
+ "@geekmidas/errors": "~9.1.0",
87
+ "@geekmidas/logger": "~9.1.0",
88
+ "@geekmidas/manifest": "9.1.0",
89
+ "@geekmidas/schema": "~9.1.0"
90
90
  },
91
91
  "devDependencies": {
92
92
  "@types/lodash.kebabcase": "^4.1.9",
@@ -96,10 +96,10 @@
96
96
  "typescript": "^5.8.2",
97
97
  "vitest": "^3.2.4",
98
98
  "zod": "~4.1.13",
99
- "@geekmidas/testkit": "3.1.1"
99
+ "@geekmidas/testkit": "9.1.0"
100
100
  },
101
101
  "peerDependencies": {
102
- "@geekmidas/telescope": "~1.1.1"
102
+ "@geekmidas/telescope": "^9.1.0"
103
103
  },
104
104
  "peerDependenciesMeta": {
105
105
  "@geekmidas/telescope": {
@@ -119,16 +119,15 @@ export const ${exportName} = new CronBuilder()
119
119
  export function createTestEndpoint(path: string, method: HttpMethod = 'GET') {
120
120
  const m = method.toLowerCase() as Lowercase<HttpMethod>;
121
121
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
122
- const builder = (e as any)[m](path);
123
- builder.output(z.object({ message: z.string() }));
122
+ const builder = (e as any)[m](path).output(z.object({ message: z.string() }));
124
123
  return builder.handle(async () => ({ message: `Hello from ${path}` }));
125
124
  }
126
125
 
127
126
  export function createTestFunction(timeout: number = 30) {
128
- const builder = new FunctionBuilder();
129
- builder.input(z.object({ name: z.string() }));
130
- builder.output(z.object({ greeting: z.string() }));
131
- builder.timeout(timeout);
127
+ const builder = new FunctionBuilder()
128
+ .input(z.object({ name: z.string() }))
129
+ .output(z.object({ greeting: z.string() }))
130
+ .timeout(timeout);
132
131
  return builder.handle(async ({ input }: any) => ({
133
132
  greeting: `Hello, ${input.name}!`,
134
133
  }));
@@ -138,10 +137,10 @@ export function createTestCron(
138
137
  schedule: ScheduleExpression = 'rate(1 hour)',
139
138
  timeout: number = 30,
140
139
  ) {
141
- const builder = new CronBuilder();
142
- builder.schedule(schedule);
143
- builder.output(z.object({ processed: z.number() }));
144
- builder.timeout(timeout);
140
+ const builder = new CronBuilder()
141
+ .schedule(schedule)
142
+ .output(z.object({ processed: z.number() }))
143
+ .timeout(timeout);
145
144
  return builder.handle(async () => {
146
145
  return { processed: 10 };
147
146
  });
@@ -383,7 +383,7 @@ describe('generateDockerCompose', () => {
383
383
  services: { minio: { version: 'RELEASE.2024-01-01' } },
384
384
  });
385
385
 
386
- expect(yaml).toContain('image: minio/minio:RELEASE.2024-01-01');
386
+ expect(yaml).toContain('image: pgsty/minio:RELEASE.2024-01-01');
387
387
  });
388
388
 
389
389
  it('should configure minio credentials', () => {
@@ -1067,7 +1067,7 @@ describe('generateWorkspaceCompose', () => {
1067
1067
  const yaml = generateWorkspaceCompose(workspace);
1068
1068
 
1069
1069
  expect(yaml).toContain('minio:');
1070
- expect(yaml).toContain('image: minio/minio:latest');
1070
+ expect(yaml).toContain('image: pgsty/minio:RELEASE.2026-08-04T00-00-00Z');
1071
1071
  expect(yaml).toContain('container_name: test-workspace-minio');
1072
1072
  });
1073
1073
 
@@ -1108,7 +1108,7 @@ describe('generateWorkspaceCompose', () => {
1108
1108
  });
1109
1109
  const yaml = generateWorkspaceCompose(workspace);
1110
1110
 
1111
- expect(yaml).toContain('image: minio/minio:RELEASE.2024-01-01');
1111
+ expect(yaml).toContain('image: pgsty/minio:RELEASE.2024-01-01');
1112
1112
  });
1113
1113
  });
1114
1114
 
@@ -13,7 +13,7 @@ export const DEFAULT_SERVICE_IMAGES: Record<ComposeServiceName, string> = {
13
13
  postgres: 'postgres',
14
14
  redis: 'redis',
15
15
  rabbitmq: 'rabbitmq',
16
- minio: 'minio/minio',
16
+ minio: 'pgsty/minio',
17
17
  mailpit: 'axllent/mailpit',
18
18
  localstack: 'localstack/localstack',
19
19
  };
@@ -23,7 +23,11 @@ export const DEFAULT_SERVICE_VERSIONS: Record<ComposeServiceName, string> = {
23
23
  postgres: '18-alpine',
24
24
  redis: '7-alpine',
25
25
  rabbitmq: '3-management-alpine',
26
- minio: 'latest',
26
+ // Pinned, unlike its neighbours, and deliberately: MinIO took their images
27
+ // off Docker Hub and then put Quay behind a login. The image is pgsty's
28
+ // community build of the same binary, and a pin means a move like that
29
+ // breaks one version bump rather than every project that pulls.
30
+ minio: 'RELEASE.2026-08-04T00-00-00Z',
27
31
  mailpit: 'latest',
28
32
  localstack: 'latest',
29
33
  };
@@ -647,7 +651,7 @@ function getInfraServiceImage(
647
651
  const defaults: Record<'postgres' | 'redis' | 'minio', string> = {
648
652
  postgres: 'postgres:18-alpine',
649
653
  redis: 'redis:7-alpine',
650
- minio: 'minio/minio:latest',
654
+ minio: 'pgsty/minio:RELEASE.2026-08-04T00-00-00Z',
651
655
  };
652
656
 
653
657
  if (!config || config === true) {
@@ -662,7 +666,7 @@ function getInfraServiceImage(
662
666
  const baseImages: Record<'postgres' | 'redis' | 'minio', string> = {
663
667
  postgres: 'postgres',
664
668
  redis: 'redis',
665
- minio: 'minio/minio',
669
+ minio: 'pgsty/minio',
666
670
  };
667
671
  return `${baseImages[serviceName]}:${config.version}`;
668
672
  }
@@ -263,7 +263,9 @@ describe('generateDockerFiles', () => {
263
263
  };
264
264
  const files = generateDockerFiles(options, minimalTemplate);
265
265
  expect(files[0].content).toContain('minio');
266
- expect(files[0].content).toContain('minio/minio:latest');
266
+ expect(files[0].content).toContain(
267
+ 'pgsty/minio:RELEASE.2026-08-04T00-00-00Z',
268
+ );
267
269
  expect(files[0].content).toContain("'${MINIO_API_HOST_PORT:-9000}:9000'");
268
270
  expect(files[0].content).toContain(
269
271
  "'${MINIO_CONSOLE_HOST_PORT:-9001}:9001'",
@@ -163,7 +163,7 @@ export function generateDockerFiles(
163
163
  // MinIO for S3-compatible object storage
164
164
  if (options.services?.storage) {
165
165
  services.push(` minio:
166
- image: minio/minio:latest
166
+ image: pgsty/minio:RELEASE.2026-08-04T00-00-00Z
167
167
  container_name: ${options.name}-minio
168
168
  restart: unless-stopped
169
169
  entrypoint: sh
@@ -27,25 +27,25 @@ export const CLI_VERSION = `~${pkg.version}`;
27
27
  * Run: pnpm --filter @geekmidas/cli sync-versions
28
28
  */
29
29
  export const GEEKMIDAS_VERSIONS = {
30
- '@geekmidas/audit': '~2.2.0',
31
- '@geekmidas/auth': '~2.0.1',
32
- '@geekmidas/cache': '~1.1.1',
33
- '@geekmidas/client': '~9.0.0',
34
- '@geekmidas/cloud': '~1.1.0',
35
- '@geekmidas/constructs': '~7.0.0',
36
- '@geekmidas/db': '~1.1.0',
37
- '@geekmidas/emailkit': '~1.0.1',
38
- '@geekmidas/envkit': '~1.1.0',
39
- '@geekmidas/errors': '~1.0.1',
40
- '@geekmidas/events': '~1.1.5',
41
- '@geekmidas/logger': '~1.0.2',
42
- '@geekmidas/rate-limit': '~4.0.0',
43
- '@geekmidas/schema': '~1.0.3',
44
- '@geekmidas/services': '~2.0.0',
45
- '@geekmidas/storage': '~2.0.3',
46
- '@geekmidas/studio': '~2.0.0',
47
- '@geekmidas/telescope': '~1.1.0',
48
- '@geekmidas/testkit': '~3.1.0',
30
+ '@geekmidas/audit': '~9.0.2',
31
+ '@geekmidas/auth': '~9.0.2',
32
+ '@geekmidas/cache': '~9.0.2',
33
+ '@geekmidas/client': '~9.0.2',
34
+ '@geekmidas/cloud': '~9.0.2',
35
+ '@geekmidas/constructs': '~9.0.2',
36
+ '@geekmidas/db': '~9.0.2',
37
+ '@geekmidas/emailkit': '~9.0.2',
38
+ '@geekmidas/envkit': '~9.0.2',
39
+ '@geekmidas/errors': '~9.0.2',
40
+ '@geekmidas/events': '~9.0.2',
41
+ '@geekmidas/logger': '~9.0.2',
42
+ '@geekmidas/rate-limit': '~9.0.2',
43
+ '@geekmidas/schema': '~9.0.2',
44
+ '@geekmidas/services': '~9.0.2',
45
+ '@geekmidas/storage': '~9.0.2',
46
+ '@geekmidas/studio': '~9.0.2',
47
+ '@geekmidas/telescope': '~9.0.2',
48
+ '@geekmidas/testkit': '~9.0.2',
49
49
  '@geekmidas/cli': CLI_VERSION,
50
50
  } as const;
51
51
 
@@ -147,7 +147,7 @@ export interface ServicesConfig {
147
147
  cache?: boolean | ServiceImageConfig;
148
148
  /** Mail service (mailpit for dev) */
149
149
  mail?: boolean | MailServiceConfig;
150
- /** MinIO S3-compatible object storage (default: minio/minio:latest) */
150
+ /** MinIO S3-compatible object storage (default: pgsty/minio:RELEASE.2026-08-04T00-00-00Z) */
151
151
  storage?: boolean | ServiceImageConfig;
152
152
  /** Event backend: pgboss (reuses postgres), sns (LocalStack), or rabbitmq */
153
153
  events?: import('../types.js').EventsBackend;