@geekmidas/cli 0.10.0 → 0.13.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/README.md +525 -0
- package/dist/bundler-B1qy9b-j.cjs +112 -0
- package/dist/bundler-B1qy9b-j.cjs.map +1 -0
- package/dist/bundler-DskIqW2t.mjs +111 -0
- package/dist/bundler-DskIqW2t.mjs.map +1 -0
- package/dist/{config-C9aXOHBe.cjs → config-AmInkU7k.cjs} +8 -8
- package/dist/config-AmInkU7k.cjs.map +1 -0
- package/dist/{config-BrkUalUh.mjs → config-DYULeEv8.mjs} +3 -3
- package/dist/config-DYULeEv8.mjs.map +1 -0
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +1 -1
- package/dist/config.d.mts +1 -1
- package/dist/config.mjs +1 -1
- package/dist/encryption-C8H-38Yy.mjs +42 -0
- package/dist/encryption-C8H-38Yy.mjs.map +1 -0
- package/dist/encryption-Dyf_r1h-.cjs +44 -0
- package/dist/encryption-Dyf_r1h-.cjs.map +1 -0
- package/dist/index.cjs +2123 -179
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +2141 -192
- package/dist/index.mjs.map +1 -1
- package/dist/{openapi-CZLI4QTr.mjs → openapi-BfFlOBCG.mjs} +801 -38
- package/dist/openapi-BfFlOBCG.mjs.map +1 -0
- package/dist/{openapi-BeHLKcwP.cjs → openapi-Bt_1FDpT.cjs} +794 -31
- package/dist/openapi-Bt_1FDpT.cjs.map +1 -0
- package/dist/{openapi-react-query-o5iMi8tz.cjs → openapi-react-query-B-sNWHFU.cjs} +5 -5
- package/dist/openapi-react-query-B-sNWHFU.cjs.map +1 -0
- package/dist/{openapi-react-query-CcciaVu5.mjs → openapi-react-query-B6XTeGqS.mjs} +5 -5
- package/dist/openapi-react-query-B6XTeGqS.mjs.map +1 -0
- package/dist/openapi-react-query.cjs +1 -1
- package/dist/openapi-react-query.d.cts.map +1 -1
- package/dist/openapi-react-query.d.mts.map +1 -1
- package/dist/openapi-react-query.mjs +1 -1
- package/dist/openapi.cjs +2 -2
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.cts.map +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.d.mts.map +1 -1
- package/dist/openapi.mjs +2 -2
- package/dist/storage-BOOpAF8N.cjs +5 -0
- package/dist/storage-Bj1E26lU.cjs +187 -0
- package/dist/storage-Bj1E26lU.cjs.map +1 -0
- package/dist/storage-kSxTjkNb.mjs +133 -0
- package/dist/storage-kSxTjkNb.mjs.map +1 -0
- package/dist/storage-tgZSUnKl.mjs +3 -0
- package/dist/{types-b-vwGpqc.d.cts → types-BR0M2v_c.d.mts} +100 -1
- package/dist/types-BR0M2v_c.d.mts.map +1 -0
- package/dist/{types-DXgiA1sF.d.mts → types-BhkZc-vm.d.cts} +100 -1
- package/dist/types-BhkZc-vm.d.cts.map +1 -0
- package/examples/cron-example.ts +27 -27
- package/examples/env.ts +27 -27
- package/examples/function-example.ts +31 -31
- package/examples/gkm.config.json +20 -20
- package/examples/gkm.config.ts +8 -8
- package/examples/gkm.minimal.config.json +5 -5
- package/examples/gkm.production.config.json +25 -25
- package/examples/logger.ts +2 -2
- package/package.json +6 -6
- package/src/__tests__/EndpointGenerator.hooks.spec.ts +191 -191
- package/src/__tests__/config.spec.ts +55 -55
- package/src/__tests__/loadEnvFiles.spec.ts +93 -93
- package/src/__tests__/normalizeHooksConfig.spec.ts +58 -58
- package/src/__tests__/openapi-react-query.spec.ts +497 -497
- package/src/__tests__/openapi.spec.ts +428 -428
- package/src/__tests__/test-helpers.ts +76 -76
- package/src/auth/__tests__/credentials.spec.ts +204 -0
- package/src/auth/__tests__/index.spec.ts +168 -0
- package/src/auth/credentials.ts +187 -0
- package/src/auth/index.ts +226 -0
- package/src/build/__tests__/bundler.spec.ts +444 -0
- package/src/build/__tests__/index-new.spec.ts +474 -474
- package/src/build/__tests__/manifests.spec.ts +333 -333
- package/src/build/bundler.ts +210 -0
- package/src/build/endpoint-analyzer.ts +236 -0
- package/src/build/handler-templates.ts +1253 -0
- package/src/build/index.ts +260 -179
- package/src/build/manifests.ts +52 -52
- package/src/build/providerResolver.ts +145 -145
- package/src/build/types.ts +64 -43
- package/src/config.ts +39 -39
- package/src/deploy/__tests__/docker.spec.ts +111 -0
- package/src/deploy/__tests__/dokploy.spec.ts +245 -0
- package/src/deploy/__tests__/init.spec.ts +662 -0
- package/src/deploy/docker.ts +128 -0
- package/src/deploy/dokploy.ts +204 -0
- package/src/deploy/index.ts +136 -0
- package/src/deploy/init.ts +484 -0
- package/src/deploy/types.ts +48 -0
- package/src/dev/__tests__/index.spec.ts +266 -266
- package/src/dev/index.ts +647 -601
- package/src/docker/__tests__/compose.spec.ts +531 -0
- package/src/docker/__tests__/templates.spec.ts +280 -0
- package/src/docker/compose.ts +273 -0
- package/src/docker/index.ts +230 -0
- package/src/docker/templates.ts +446 -0
- package/src/generators/CronGenerator.ts +72 -72
- package/src/generators/EndpointGenerator.ts +699 -398
- package/src/generators/FunctionGenerator.ts +84 -84
- package/src/generators/Generator.ts +72 -72
- package/src/generators/OpenApiTsGenerator.ts +577 -577
- package/src/generators/SubscriberGenerator.ts +124 -124
- package/src/generators/__tests__/CronGenerator.spec.ts +433 -433
- package/src/generators/__tests__/EndpointGenerator.spec.ts +532 -382
- package/src/generators/__tests__/FunctionGenerator.spec.ts +244 -244
- package/src/generators/__tests__/SubscriberGenerator.spec.ts +397 -382
- package/src/generators/index.ts +4 -4
- package/src/index.ts +623 -201
- package/src/init/__tests__/generators.spec.ts +334 -334
- package/src/init/__tests__/init.spec.ts +332 -332
- package/src/init/__tests__/utils.spec.ts +89 -89
- package/src/init/generators/config.ts +175 -175
- package/src/init/generators/docker.ts +41 -41
- package/src/init/generators/env.ts +72 -72
- package/src/init/generators/index.ts +1 -1
- package/src/init/generators/models.ts +64 -64
- package/src/init/generators/monorepo.ts +161 -161
- package/src/init/generators/package.ts +71 -71
- package/src/init/generators/source.ts +6 -6
- package/src/init/index.ts +203 -208
- package/src/init/templates/api.ts +115 -115
- package/src/init/templates/index.ts +75 -75
- package/src/init/templates/minimal.ts +98 -98
- package/src/init/templates/serverless.ts +89 -89
- package/src/init/templates/worker.ts +98 -98
- package/src/init/utils.ts +54 -56
- package/src/openapi-react-query.ts +194 -194
- package/src/openapi.ts +63 -63
- package/src/secrets/__tests__/encryption.spec.ts +226 -0
- package/src/secrets/__tests__/generator.spec.ts +319 -0
- package/src/secrets/__tests__/index.spec.ts +91 -0
- package/src/secrets/__tests__/storage.spec.ts +611 -0
- package/src/secrets/encryption.ts +91 -0
- package/src/secrets/generator.ts +164 -0
- package/src/secrets/index.ts +383 -0
- package/src/secrets/storage.ts +192 -0
- package/src/secrets/types.ts +53 -0
- package/src/types.ts +295 -176
- package/tsdown.config.ts +11 -8
- package/dist/config-BrkUalUh.mjs.map +0 -1
- package/dist/config-C9aXOHBe.cjs.map +0 -1
- package/dist/openapi-BeHLKcwP.cjs.map +0 -1
- package/dist/openapi-CZLI4QTr.mjs.map +0 -1
- package/dist/openapi-react-query-CcciaVu5.mjs.map +0 -1
- package/dist/openapi-react-query-o5iMi8tz.cjs.map +0 -1
- package/dist/types-DXgiA1sF.d.mts.map +0 -1
- package/dist/types-b-vwGpqc.d.cts.map +0 -1
package/examples/cron-example.ts
CHANGED
|
@@ -4,42 +4,42 @@ import { cron } from '@geekmidas/constructs/crons';
|
|
|
4
4
|
* Example cron that generates a daily report at 9 AM UTC
|
|
5
5
|
*/
|
|
6
6
|
export const dailyReport = cron
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
.schedule('cron(0 9 * * ? *)')
|
|
8
|
+
.timeout(600000) // 10 minutes
|
|
9
|
+
.handle(async ({ services, logger }) => {
|
|
10
|
+
logger.info('Generating daily report');
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const reportDate = new Date().toISOString().split('T')[0];
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
14
|
+
// Generate report logic here
|
|
15
|
+
const reportData = {
|
|
16
|
+
date: reportDate,
|
|
17
|
+
totalOrders: 150,
|
|
18
|
+
totalRevenue: 12500.0,
|
|
19
|
+
topProducts: [
|
|
20
|
+
{ id: 'prod-1', name: 'Widget A', sales: 45 },
|
|
21
|
+
{ id: 'prod-2', name: 'Widget B', sales: 32 },
|
|
22
|
+
],
|
|
23
|
+
};
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
logger.info('Daily report generated', reportData);
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
return reportData;
|
|
28
|
+
});
|
|
29
29
|
|
|
30
30
|
/**
|
|
31
31
|
* Example cron that runs every hour
|
|
32
32
|
*/
|
|
33
33
|
export const hourlyCleanup = cron
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
.schedule('rate(1 hour)')
|
|
35
|
+
.timeout(300000) // 5 minutes
|
|
36
|
+
.handle(async ({ services, logger }) => {
|
|
37
|
+
logger.info('Running hourly cleanup');
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
// Cleanup logic here
|
|
40
|
+
const itemsCleaned = 42;
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
logger.info(`Cleaned ${itemsCleaned} items`);
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
return { itemsCleaned };
|
|
45
|
+
});
|
package/examples/env.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import { EnvironmentParser } from '@geekmidas/envkit';
|
|
2
2
|
|
|
3
3
|
export const envParser = new EnvironmentParser(process.env)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
.create((get) => ({
|
|
5
|
+
// Database configuration
|
|
6
|
+
database: {
|
|
7
|
+
url: get('DATABASE_URL').string().url(),
|
|
8
|
+
maxConnections: get('DB_MAX_CONNECTIONS')
|
|
9
|
+
.string()
|
|
10
|
+
.transform(Number)
|
|
11
|
+
.default('10'),
|
|
12
|
+
},
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
// API configuration
|
|
15
|
+
api: {
|
|
16
|
+
port: get('PORT').string().transform(Number).default('3000'),
|
|
17
|
+
cors: {
|
|
18
|
+
origin: get('CORS_ORIGIN').string().default('*'),
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
// AWS configuration (for Lambda deployments)
|
|
23
|
+
aws: {
|
|
24
|
+
region: get('AWS_REGION').string().default('us-east-1'),
|
|
25
|
+
},
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
// Application settings
|
|
28
|
+
app: {
|
|
29
|
+
environment: get('NODE_ENV').string().default('development'),
|
|
30
|
+
logLevel: get('LOG_LEVEL').string().default('info'),
|
|
31
|
+
},
|
|
32
|
+
}))
|
|
33
|
+
.parse();
|
|
@@ -5,36 +5,36 @@ import { z } from 'zod';
|
|
|
5
5
|
* Example function that processes an order
|
|
6
6
|
*/
|
|
7
7
|
export const processOrder = f
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
.input(
|
|
9
|
+
z.object({
|
|
10
|
+
orderId: z.string(),
|
|
11
|
+
items: z.array(
|
|
12
|
+
z.object({
|
|
13
|
+
id: z.string(),
|
|
14
|
+
quantity: z.number().int().positive(),
|
|
15
|
+
}),
|
|
16
|
+
),
|
|
17
|
+
}),
|
|
18
|
+
)
|
|
19
|
+
.output(
|
|
20
|
+
z.object({
|
|
21
|
+
orderId: z.string(),
|
|
22
|
+
status: z.enum(['processing', 'completed', 'failed']),
|
|
23
|
+
processedAt: z.string().datetime(),
|
|
24
|
+
}),
|
|
25
|
+
)
|
|
26
|
+
.timeout(300000) // 5 minutes
|
|
27
|
+
.handle(async ({ input, services, logger }) => {
|
|
28
|
+
logger.info(`Processing order ${input.orderId}`);
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
// Process order logic here
|
|
31
|
+
for (const item of input.items) {
|
|
32
|
+
logger.info(`Processing item ${item.id}, quantity: ${item.quantity}`);
|
|
33
|
+
}
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
return {
|
|
36
|
+
orderId: input.orderId,
|
|
37
|
+
status: 'completed' as const,
|
|
38
|
+
processedAt: new Date().toISOString(),
|
|
39
|
+
};
|
|
40
|
+
});
|
package/examples/gkm.config.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
"routes": "./src/endpoints/**/*.ts",
|
|
3
|
+
"functions": "./src/functions/**/*.ts",
|
|
4
|
+
"crons": "./src/crons/**/*.ts",
|
|
5
|
+
"envParser": "./src/env.ts#envParser",
|
|
6
|
+
"logger": "./src/logger.ts#logger",
|
|
7
|
+
"providers": {
|
|
8
|
+
"aws": {
|
|
9
|
+
"apiGateway": {
|
|
10
|
+
"v1": false,
|
|
11
|
+
"v2": true
|
|
12
|
+
},
|
|
13
|
+
"lambda": {
|
|
14
|
+
"functions": true,
|
|
15
|
+
"crons": true
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"server": {
|
|
19
|
+
"enableOpenApi": true
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
22
|
}
|
package/examples/gkm.config.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { defineConfig } from '@geekmidas/cli/config';
|
|
2
2
|
|
|
3
3
|
export default defineConfig({
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
// Glob pattern to find endpoint files
|
|
5
|
+
routes: 'src/routes/**/*.ts',
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
// Environment parser configuration
|
|
8
|
+
// Format: path#exportName (if no #exportName, treats as default import)
|
|
9
|
+
envParser: './src/env.ts#envParser',
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
// Logger configuration
|
|
12
|
+
// Format: path#exportName (if no #exportName, treats as default import)
|
|
13
|
+
logger: './src/logger.ts#logger',
|
|
14
14
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
"routes": "./src/endpoints/**/*.ts",
|
|
3
|
+
"functions": "./src/functions/**/*.ts",
|
|
4
|
+
"crons": "./src/crons/**/*.ts",
|
|
5
|
+
"envParser": "./src/env.ts#envParser",
|
|
6
|
+
"logger": "./src/logger.ts#logger"
|
|
7
7
|
}
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
2
|
+
"routes": "./src/endpoints/**/*.ts",
|
|
3
|
+
"functions": "./src/functions/**/*.ts",
|
|
4
|
+
"crons": "./src/crons/**/*.ts",
|
|
5
|
+
"envParser": "./src/env.ts#envParser",
|
|
6
|
+
"logger": "./src/logger.ts#logger",
|
|
7
|
+
"providers": {
|
|
8
|
+
"aws": {
|
|
9
|
+
"apiGateway": {
|
|
10
|
+
"v2": {
|
|
11
|
+
"enabled": true,
|
|
12
|
+
"outputDir": "dist/api-gateway"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"lambda": {
|
|
16
|
+
"functions": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"outputDir": "dist/functions"
|
|
19
|
+
},
|
|
20
|
+
"crons": {
|
|
21
|
+
"enabled": true,
|
|
22
|
+
"outputDir": "dist/crons"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
27
|
}
|
package/examples/logger.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { ConsoleLogger } from '@geekmidas/logger/console';
|
|
|
2
2
|
|
|
3
3
|
// Create a console logger instance
|
|
4
4
|
export const logger = new ConsoleLogger({
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
6
|
+
pretty: process.env.NODE_ENV !== 'production',
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// You can also export a default logger
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekmidas/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "CLI tools for building Lambda handlers, server applications, and generating OpenAPI specs",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -50,14 +50,14 @@
|
|
|
50
50
|
"typescript": "^5.8.2",
|
|
51
51
|
"vitest": "^3.2.4",
|
|
52
52
|
"zod": "~4.1.13",
|
|
53
|
-
"@geekmidas/testkit": "0.
|
|
53
|
+
"@geekmidas/testkit": "0.6.0"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@geekmidas/constructs": "~0.
|
|
57
|
-
"@geekmidas/
|
|
58
|
-
"@geekmidas/
|
|
56
|
+
"@geekmidas/constructs": "~0.5.0",
|
|
57
|
+
"@geekmidas/envkit": "~0.3.0",
|
|
58
|
+
"@geekmidas/logger": "~0.4.0",
|
|
59
59
|
"@geekmidas/schema": "~0.1.0",
|
|
60
|
-
"@geekmidas/telescope": "~0.
|
|
60
|
+
"@geekmidas/telescope": "~0.4.0"
|
|
61
61
|
},
|
|
62
62
|
"peerDependenciesMeta": {
|
|
63
63
|
"@geekmidas/telescope": {
|