@mesh-tech/mesh-cli 0.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/dist/bin/mesh.d.ts +16 -0
- package/dist/bin/mesh.d.ts.map +1 -0
- package/dist/bin/mesh.js +40 -0
- package/dist/bin/mesh.js.map +1 -0
- package/dist/src/commands/create-app.d.ts +10 -0
- package/dist/src/commands/create-app.d.ts.map +1 -0
- package/dist/src/commands/create-app.js +176 -0
- package/dist/src/commands/create-app.js.map +1 -0
- package/dist/src/commands/db/connect.d.ts +13 -0
- package/dist/src/commands/db/connect.d.ts.map +1 -0
- package/dist/src/commands/db/connect.js +68 -0
- package/dist/src/commands/db/connect.js.map +1 -0
- package/dist/src/commands/db/credentials.d.ts +16 -0
- package/dist/src/commands/db/credentials.d.ts.map +1 -0
- package/dist/src/commands/db/credentials.js +56 -0
- package/dist/src/commands/db/credentials.js.map +1 -0
- package/dist/src/commands/db/env.d.ts +15 -0
- package/dist/src/commands/db/env.d.ts.map +1 -0
- package/dist/src/commands/db/env.js +50 -0
- package/dist/src/commands/db/env.js.map +1 -0
- package/dist/src/commands/db/exec.d.ts +54 -0
- package/dist/src/commands/db/exec.d.ts.map +1 -0
- package/dist/src/commands/db/exec.js +331 -0
- package/dist/src/commands/db/exec.js.map +1 -0
- package/dist/src/commands/db/index.d.ts +12 -0
- package/dist/src/commands/db/index.d.ts.map +1 -0
- package/dist/src/commands/db/index.js +62 -0
- package/dist/src/commands/db/index.js.map +1 -0
- package/dist/src/commands/db/psql.d.ts +16 -0
- package/dist/src/commands/db/psql.d.ts.map +1 -0
- package/dist/src/commands/db/psql.js +133 -0
- package/dist/src/commands/db/psql.js.map +1 -0
- package/dist/src/commands/deploy.d.ts +24 -0
- package/dist/src/commands/deploy.d.ts.map +1 -0
- package/dist/src/commands/deploy.js +228 -0
- package/dist/src/commands/deploy.js.map +1 -0
- package/dist/src/commands/dev.d.ts +17 -0
- package/dist/src/commands/dev.d.ts.map +1 -0
- package/dist/src/commands/dev.js +1248 -0
- package/dist/src/commands/dev.js.map +1 -0
- package/dist/src/commands/devbox.d.ts +22 -0
- package/dist/src/commands/devbox.d.ts.map +1 -0
- package/dist/src/commands/devbox.js +463 -0
- package/dist/src/commands/devbox.js.map +1 -0
- package/dist/src/commands/login.d.ts +47 -0
- package/dist/src/commands/login.d.ts.map +1 -0
- package/dist/src/commands/login.js +344 -0
- package/dist/src/commands/login.js.map +1 -0
- package/dist/src/commands/registry.d.ts +20 -0
- package/dist/src/commands/registry.d.ts.map +1 -0
- package/dist/src/commands/registry.js +336 -0
- package/dist/src/commands/registry.js.map +1 -0
- package/dist/src/commands/secrets/exec.d.ts +17 -0
- package/dist/src/commands/secrets/exec.d.ts.map +1 -0
- package/dist/src/commands/secrets/exec.js +132 -0
- package/dist/src/commands/secrets/exec.js.map +1 -0
- package/dist/src/commands/secrets/index.d.ts +10 -0
- package/dist/src/commands/secrets/index.d.ts.map +1 -0
- package/dist/src/commands/secrets/index.js +35 -0
- package/dist/src/commands/secrets/index.js.map +1 -0
- package/dist/src/commands/secrets/set.d.ts +22 -0
- package/dist/src/commands/secrets/set.d.ts.map +1 -0
- package/dist/src/commands/secrets/set.js +234 -0
- package/dist/src/commands/secrets/set.js.map +1 -0
- package/dist/src/commands/stack.d.ts +17 -0
- package/dist/src/commands/stack.d.ts.map +1 -0
- package/dist/src/commands/stack.js +175 -0
- package/dist/src/commands/stack.js.map +1 -0
- package/dist/src/commands/tunnel/index.d.ts +14 -0
- package/dist/src/commands/tunnel/index.d.ts.map +1 -0
- package/dist/src/commands/tunnel/index.js +217 -0
- package/dist/src/commands/tunnel/index.js.map +1 -0
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/utils/bastion.d.ts +43 -0
- package/dist/src/utils/bastion.d.ts.map +1 -0
- package/dist/src/utils/bastion.js +77 -0
- package/dist/src/utils/bastion.js.map +1 -0
- package/dist/src/utils/context.d.ts +29 -0
- package/dist/src/utils/context.d.ts.map +1 -0
- package/dist/src/utils/context.js +132 -0
- package/dist/src/utils/context.js.map +1 -0
- package/dist/src/utils/credentials.d.ts +61 -0
- package/dist/src/utils/credentials.d.ts.map +1 -0
- package/dist/src/utils/credentials.js +145 -0
- package/dist/src/utils/credentials.js.map +1 -0
- package/dist/src/utils/index.d.ts +9 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +9 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/log.d.ts +8 -0
- package/dist/src/utils/log.d.ts.map +1 -0
- package/dist/src/utils/log.js +17 -0
- package/dist/src/utils/log.js.map +1 -0
- package/dist/src/utils/pulumi.d.ts +24 -0
- package/dist/src/utils/pulumi.d.ts.map +1 -0
- package/dist/src/utils/pulumi.js +63 -0
- package/dist/src/utils/pulumi.js.map +1 -0
- package/package.json +50 -0
- package/templates/api-web-db/api/.dockerignore +2 -0
- package/templates/api-web-db/api/Dockerfile +16 -0
- package/templates/api-web-db/api/package.json.hbs +21 -0
- package/templates/api-web-db/api/src/index.ts.hbs +123 -0
- package/templates/api-web-db/api/tsconfig.json +13 -0
- package/templates/api-web-db/package.json.hbs +27 -0
- package/templates/api-web-db/sst.config.ts.hbs +151 -0
- package/templates/api-web-db/tsconfig.json +11 -0
- package/templates/api-web-db/web/.dockerignore +3 -0
- package/templates/api-web-db/web/Dockerfile +17 -0
- package/templates/api-web-db/web/app/lib/db.server.ts +36 -0
- package/templates/api-web-db/web/app/root.tsx +29 -0
- package/templates/api-web-db/web/app/routes/home.tsx.hbs +114 -0
- package/templates/api-web-db/web/app/routes.ts +3 -0
- package/templates/api-web-db/web/package.json.hbs +30 -0
- package/templates/api-web-db/web/prisma/schema.prisma +25 -0
- package/templates/api-web-db/web/prisma.config.ts +18 -0
- package/templates/api-web-db/web/react-router.config.ts +5 -0
- package/templates/api-web-db/web/tsconfig.json +19 -0
- package/templates/api-web-db/web/vite.config.ts +9 -0
- package/templates/temporal-api-worker/README.md.hbs +133 -0
- package/templates/temporal-api-worker/api/.dockerignore +4 -0
- package/templates/temporal-api-worker/api/Dockerfile +13 -0
- package/templates/temporal-api-worker/api/package.json.hbs +23 -0
- package/templates/temporal-api-worker/api/src/encryption-codec.ts +133 -0
- package/templates/temporal-api-worker/api/src/index.ts.hbs +145 -0
- package/templates/temporal-api-worker/api/tsconfig.json +14 -0
- package/templates/temporal-api-worker/package.json.hbs +29 -0
- package/templates/temporal-api-worker/sst.config.ts.hbs +161 -0
- package/templates/temporal-api-worker/tsconfig.json +10 -0
- package/templates/temporal-api-worker/worker/.dockerignore +4 -0
- package/templates/temporal-api-worker/worker/Dockerfile +11 -0
- package/templates/temporal-api-worker/worker/package.json.hbs +25 -0
- package/templates/temporal-api-worker/worker/src/activities.ts.hbs +49 -0
- package/templates/temporal-api-worker/worker/src/bundle-workflows.ts +38 -0
- package/templates/temporal-api-worker/worker/src/encryption-codec.ts +156 -0
- package/templates/temporal-api-worker/worker/src/worker.ts.hbs +93 -0
- package/templates/temporal-api-worker/worker/src/workflows.ts.hbs +60 -0
- package/templates/temporal-api-worker/worker/tsconfig.json +14 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mesh - CLI for Mesh Lab development utilities
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* mesh create-app Scaffold a new tenant application
|
|
7
|
+
* mesh dev Start DB tunnel and run sst dev
|
|
8
|
+
* mesh tunnel Start SSM tunnel to platform services
|
|
9
|
+
* mesh db connect Start DB tunnel for manual access
|
|
10
|
+
* mesh db credentials Print database credentials
|
|
11
|
+
* mesh db env Export DATABASE_URL for shell
|
|
12
|
+
* mesh db psql Connect to database with psql
|
|
13
|
+
* mesh secrets exec Run command with secrets as env vars
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=mesh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../bin/mesh.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG"}
|
package/dist/bin/mesh.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mesh - CLI for Mesh Lab development utilities
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* mesh create-app Scaffold a new tenant application
|
|
7
|
+
* mesh dev Start DB tunnel and run sst dev
|
|
8
|
+
* mesh tunnel Start SSM tunnel to platform services
|
|
9
|
+
* mesh db connect Start DB tunnel for manual access
|
|
10
|
+
* mesh db credentials Print database credentials
|
|
11
|
+
* mesh db env Export DATABASE_URL for shell
|
|
12
|
+
* mesh db psql Connect to database with psql
|
|
13
|
+
* mesh secrets exec Run command with secrets as env vars
|
|
14
|
+
*/
|
|
15
|
+
import { program } from "commander";
|
|
16
|
+
import { registerDbCommands } from "../src/commands/db/index.js";
|
|
17
|
+
import { registerDeployCommand } from "../src/commands/deploy.js";
|
|
18
|
+
import { registerDevCommand } from "../src/commands/dev.js";
|
|
19
|
+
import { registerCreateAppCommand } from "../src/commands/create-app.js";
|
|
20
|
+
import { registerLoginCommand } from "../src/commands/login.js";
|
|
21
|
+
import { registerRegistryCommands } from "../src/commands/registry.js";
|
|
22
|
+
import { registerStackCommand } from "../src/commands/stack.js";
|
|
23
|
+
import { registerTunnelCommands } from "../src/commands/tunnel/index.js";
|
|
24
|
+
import { registerSecretsCommands } from "../src/commands/secrets/index.js";
|
|
25
|
+
program
|
|
26
|
+
.name("mesh")
|
|
27
|
+
.description("CLI for Mesh Lab development utilities")
|
|
28
|
+
.version("0.0.1");
|
|
29
|
+
// Register command groups
|
|
30
|
+
registerLoginCommand(program);
|
|
31
|
+
registerRegistryCommands(program);
|
|
32
|
+
registerDbCommands(program);
|
|
33
|
+
registerDeployCommand(program);
|
|
34
|
+
registerDevCommand(program);
|
|
35
|
+
registerCreateAppCommand(program);
|
|
36
|
+
registerStackCommand(program);
|
|
37
|
+
registerTunnelCommands(program);
|
|
38
|
+
registerSecretsCommands(program);
|
|
39
|
+
program.parse();
|
|
40
|
+
//# sourceMappingURL=mesh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh.js","sourceRoot":"","sources":["../../bin/mesh.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,wCAAwC,CAAC;KACrD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,0BAA0B;AAC1B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh create-app - Scaffold a new tenant application
|
|
3
|
+
*
|
|
4
|
+
* Creates a new application using one of the available templates:
|
|
5
|
+
* - api-web-db: API + Web + Database (default)
|
|
6
|
+
* - temporal-api-worker: Temporal Worker + API for workflows
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from "commander";
|
|
9
|
+
export declare function registerCreateAppCommand(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=create-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app.d.ts","sourceRoot":"","sources":["../../../src/commands/create-app.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuI/D"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh create-app - Scaffold a new tenant application
|
|
3
|
+
*
|
|
4
|
+
* Creates a new application using one of the available templates:
|
|
5
|
+
* - api-web-db: API + Web + Database (default)
|
|
6
|
+
* - temporal-api-worker: Temporal Worker + API for workflows
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from "fs";
|
|
9
|
+
import * as path from "path";
|
|
10
|
+
import { fileURLToPath } from "url";
|
|
11
|
+
import Handlebars from "handlebars";
|
|
12
|
+
import { logInfo, logSuccess, logError, logWarn } from "../utils/index.js";
|
|
13
|
+
// Get package root (works from both src/ and dist/)
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
// Navigate from dist/src/commands/ or src/commands/ to package root
|
|
17
|
+
const packageRoot = path.resolve(__dirname, "..", "..", "..");
|
|
18
|
+
// Available templates
|
|
19
|
+
const TEMPLATES = {
|
|
20
|
+
"api-web-db": "API + Web + Database application",
|
|
21
|
+
"temporal-api-worker": "Temporal Worker + API for workflow orchestration",
|
|
22
|
+
};
|
|
23
|
+
// Register Handlebars helpers
|
|
24
|
+
Handlebars.registerHelper("titleCase", (str) => {
|
|
25
|
+
return str
|
|
26
|
+
.split("-")
|
|
27
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
28
|
+
.join(" ");
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Recursively copy a directory, processing .hbs templates
|
|
32
|
+
*/
|
|
33
|
+
function copyTemplate(srcDir, destDir, context) {
|
|
34
|
+
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
35
|
+
for (const entry of entries) {
|
|
36
|
+
const srcPath = path.join(srcDir, entry.name);
|
|
37
|
+
let destName = entry.name;
|
|
38
|
+
// Remove .hbs extension for template files
|
|
39
|
+
if (destName.endsWith(".hbs")) {
|
|
40
|
+
destName = destName.slice(0, -4);
|
|
41
|
+
}
|
|
42
|
+
const destPath = path.join(destDir, destName);
|
|
43
|
+
if (entry.isDirectory()) {
|
|
44
|
+
fs.mkdirSync(destPath, { recursive: true });
|
|
45
|
+
copyTemplate(srcPath, destPath, context);
|
|
46
|
+
}
|
|
47
|
+
else if (entry.name.endsWith(".hbs")) {
|
|
48
|
+
// Process Handlebars template
|
|
49
|
+
const templateContent = fs.readFileSync(srcPath, "utf-8");
|
|
50
|
+
const template = Handlebars.compile(templateContent);
|
|
51
|
+
const output = template(context);
|
|
52
|
+
fs.writeFileSync(destPath, output);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Copy file as-is
|
|
56
|
+
fs.copyFileSync(srcPath, destPath);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function registerCreateAppCommand(program) {
|
|
61
|
+
program
|
|
62
|
+
.command("create-app")
|
|
63
|
+
.description("Scaffold a new tenant application")
|
|
64
|
+
.requiredOption("--tenant <tenant>", "Tenant name (e.g., acme)")
|
|
65
|
+
.requiredOption("--name <name>", "Application name (e.g., billing)")
|
|
66
|
+
.option("--template <template>", `Template to use: ${Object.keys(TEMPLATES).join(", ")}`, "api-web-db")
|
|
67
|
+
.option("--test", "Create in tests/tenants/ directory", false)
|
|
68
|
+
.action(async (options) => {
|
|
69
|
+
const { tenant, name, template, test } = options;
|
|
70
|
+
// Validate template
|
|
71
|
+
if (!Object.keys(TEMPLATES).includes(template)) {
|
|
72
|
+
logError(`Unknown template: ${template}`);
|
|
73
|
+
logInfo(`Available templates:`);
|
|
74
|
+
for (const [name, desc] of Object.entries(TEMPLATES)) {
|
|
75
|
+
console.log(` ${name.padEnd(20)} - ${desc}`);
|
|
76
|
+
}
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
logInfo(`Creating app '${name}' for tenant '${tenant}'...`);
|
|
80
|
+
logInfo(`Template: ${template} (${TEMPLATES[template]})`);
|
|
81
|
+
if (test) {
|
|
82
|
+
logInfo("Creating in tests/ directory");
|
|
83
|
+
}
|
|
84
|
+
// Determine output directory
|
|
85
|
+
const cwd = process.cwd();
|
|
86
|
+
let appsDir;
|
|
87
|
+
// Base directory depends on --test flag
|
|
88
|
+
const baseDir = test ? "tests/tenants" : "tenants";
|
|
89
|
+
// Check common locations
|
|
90
|
+
const possiblePaths = [
|
|
91
|
+
path.join(cwd, baseDir, tenant, "apps"),
|
|
92
|
+
path.join(cwd, "..", tenant, "apps"),
|
|
93
|
+
path.join(cwd, "apps"),
|
|
94
|
+
];
|
|
95
|
+
const foundPath = possiblePaths.find((p) => fs.existsSync(p));
|
|
96
|
+
if (foundPath) {
|
|
97
|
+
appsDir = foundPath;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Default to {baseDir}/{tenant}/apps relative to cwd
|
|
101
|
+
appsDir = path.join(cwd, baseDir, tenant, "apps");
|
|
102
|
+
if (!fs.existsSync(path.join(cwd, baseDir, tenant))) {
|
|
103
|
+
logError(`Tenant directory not found: ${baseDir}/${tenant}/`);
|
|
104
|
+
logInfo("Create the tenant directory first, or run from within it.");
|
|
105
|
+
process.exit(1);
|
|
106
|
+
}
|
|
107
|
+
if (!fs.existsSync(appsDir)) {
|
|
108
|
+
logInfo(`Creating apps directory: ${appsDir}`);
|
|
109
|
+
fs.mkdirSync(appsDir, { recursive: true });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const appDir = path.join(appsDir, name);
|
|
113
|
+
// Check if app already exists
|
|
114
|
+
if (fs.existsSync(appDir)) {
|
|
115
|
+
logError(`App directory already exists: ${appDir}`);
|
|
116
|
+
logInfo("Choose a different name or remove the existing directory.");
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
// Find template directory (at package root, not in dist)
|
|
120
|
+
const templateDir = path.join(packageRoot, "templates", template);
|
|
121
|
+
if (!fs.existsSync(templateDir)) {
|
|
122
|
+
logError(`Template not found: ${templateDir}`);
|
|
123
|
+
logInfo("Make sure the mesh-cli package is installed correctly.");
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
// Create context for templates
|
|
127
|
+
const context = {
|
|
128
|
+
name,
|
|
129
|
+
tenant,
|
|
130
|
+
};
|
|
131
|
+
// Create app directory
|
|
132
|
+
logInfo(`Creating app at ${appDir}...`);
|
|
133
|
+
fs.mkdirSync(appDir, { recursive: true });
|
|
134
|
+
// Copy and process templates
|
|
135
|
+
try {
|
|
136
|
+
copyTemplate(templateDir, appDir, context);
|
|
137
|
+
logSuccess(`Created app structure at ${appDir}`);
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
logError(`Failed to create app: ${error}`);
|
|
141
|
+
// Clean up on failure
|
|
142
|
+
fs.rmSync(appDir, { recursive: true, force: true });
|
|
143
|
+
process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
// Check if config.ts exists in parent apps directory
|
|
146
|
+
const configPath = path.join(appsDir, "config.ts");
|
|
147
|
+
if (!fs.existsSync(configPath)) {
|
|
148
|
+
logWarn(`No config.ts found at ${configPath}`);
|
|
149
|
+
logInfo("You may need to create a shared config.ts for tenant apps.");
|
|
150
|
+
logInfo("See existing apps for an example.");
|
|
151
|
+
}
|
|
152
|
+
// Print next steps
|
|
153
|
+
console.log("");
|
|
154
|
+
logSuccess("App created successfully!");
|
|
155
|
+
console.log("");
|
|
156
|
+
console.log("Next steps:");
|
|
157
|
+
console.log(` cd ${appDir}`);
|
|
158
|
+
console.log(" pnpm install");
|
|
159
|
+
if (template === "temporal-api-worker") {
|
|
160
|
+
console.log("");
|
|
161
|
+
console.log("For development:");
|
|
162
|
+
console.log(" 1. Start dev server: pnpm mesh dev");
|
|
163
|
+
console.log(" (auto-starts tunnel to Temporal + DB)");
|
|
164
|
+
console.log(" 2. Start worker manually in SST dev UI");
|
|
165
|
+
console.log(" 3. Open Temporal Web UI: http://localhost:8080");
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
console.log(" pnpm mesh dev");
|
|
169
|
+
}
|
|
170
|
+
console.log("");
|
|
171
|
+
console.log("To deploy:");
|
|
172
|
+
console.log(" pnpm deploy --stage dev");
|
|
173
|
+
console.log("");
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=create-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-app.js","sourceRoot":"","sources":["../../../src/commands/create-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db connect - Start DB tunnel for manual psql access
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* mesh db connect --tenant mesh --env dev-temporal
|
|
6
|
+
*/
|
|
7
|
+
interface ConnectOptions {
|
|
8
|
+
tenant?: string;
|
|
9
|
+
env?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function connectCommand(options: ConnectOptions): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/connect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE3E"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db connect - Start DB tunnel for manual psql access
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* mesh db connect --tenant mesh --env dev-temporal
|
|
6
|
+
*/
|
|
7
|
+
import { spawn } from "child_process";
|
|
8
|
+
import { detectContext, getPlatformBastionInfo, logInfo, logError, } from "../../utils/index.js";
|
|
9
|
+
export async function connectCommand(options) {
|
|
10
|
+
// Resolve tenant/env - explicit or auto-detect
|
|
11
|
+
let tenant;
|
|
12
|
+
let platformEnv;
|
|
13
|
+
if (options.tenant && options.env) {
|
|
14
|
+
tenant = options.tenant;
|
|
15
|
+
platformEnv = options.env;
|
|
16
|
+
logInfo(`Explicit mode: Tenant=${tenant}, Env=${platformEnv}`);
|
|
17
|
+
}
|
|
18
|
+
else if (options.tenant || options.env) {
|
|
19
|
+
logError("Both --tenant and --env are required");
|
|
20
|
+
logInfo("Usage: mesh db connect --tenant mesh --env dev-temporal");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const ctx = detectContext();
|
|
25
|
+
tenant = ctx.tenant;
|
|
26
|
+
platformEnv = ctx.platformEnv;
|
|
27
|
+
logInfo(`Auto-detected: Tenant=${tenant}, Env=${platformEnv}`);
|
|
28
|
+
}
|
|
29
|
+
const bastion = await getPlatformBastionInfo(tenant, platformEnv);
|
|
30
|
+
const rdsService = bastion.services.rds;
|
|
31
|
+
if (!rdsService) {
|
|
32
|
+
logError("RDS service not available in platform bastion");
|
|
33
|
+
process.exit(1);
|
|
34
|
+
}
|
|
35
|
+
console.log("");
|
|
36
|
+
logInfo(`Tunnel will forward localhost:5432 → ${rdsService.host}:${rdsService.port}`);
|
|
37
|
+
console.log("");
|
|
38
|
+
logInfo("In another terminal, connect with:");
|
|
39
|
+
console.log(" psql -h localhost -p 5432 -U <username> -d <database>");
|
|
40
|
+
console.log("");
|
|
41
|
+
logInfo("Or use: mesh db credentials --tenant ... --env ... --app ...");
|
|
42
|
+
console.log("");
|
|
43
|
+
logInfo("Press Ctrl+C to stop the tunnel");
|
|
44
|
+
console.log("");
|
|
45
|
+
// Start SSM tunnel
|
|
46
|
+
const tunnel = spawn("aws", [
|
|
47
|
+
"ssm",
|
|
48
|
+
"start-session",
|
|
49
|
+
"--target",
|
|
50
|
+
bastion.instanceId,
|
|
51
|
+
"--document-name",
|
|
52
|
+
"AWS-StartPortForwardingSessionToRemoteHost",
|
|
53
|
+
"--parameters",
|
|
54
|
+
JSON.stringify({
|
|
55
|
+
host: [rdsService.host],
|
|
56
|
+
portNumber: [String(rdsService.port)],
|
|
57
|
+
localPortNumber: ["5432"],
|
|
58
|
+
}),
|
|
59
|
+
], { stdio: "inherit" });
|
|
60
|
+
tunnel.on("error", (err) => {
|
|
61
|
+
console.error("Failed to start tunnel:", err.message);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
tunnel.on("exit", (code) => {
|
|
65
|
+
process.exit(code ?? 0);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=connect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../src/commands/db/connect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db credentials - Print database credentials
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* mesh db credentials --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev
|
|
6
|
+
*/
|
|
7
|
+
interface CredentialsOptions {
|
|
8
|
+
tenant?: string;
|
|
9
|
+
env?: string;
|
|
10
|
+
app?: string;
|
|
11
|
+
appTenant?: string;
|
|
12
|
+
appStage?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function credentialsCommand(options: CredentialsOptions): Promise<void>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/credentials.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db credentials - Print database credentials
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* mesh db credentials --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev
|
|
6
|
+
*/
|
|
7
|
+
import { detectContext, getDatabaseUrl, logInfo, logError, } from "../../utils/index.js";
|
|
8
|
+
export async function credentialsCommand(options) {
|
|
9
|
+
// Resolve platform tenant/env
|
|
10
|
+
let platformTenant;
|
|
11
|
+
let platformEnv;
|
|
12
|
+
if (options.tenant && options.env) {
|
|
13
|
+
platformTenant = options.tenant;
|
|
14
|
+
platformEnv = options.env;
|
|
15
|
+
logInfo(`Platform: Tenant=${platformTenant}, Env=${platformEnv}`);
|
|
16
|
+
}
|
|
17
|
+
else if (options.tenant || options.env) {
|
|
18
|
+
logError("Both --tenant and --env are required");
|
|
19
|
+
logInfo("Usage: mesh db credentials --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const ctx = detectContext();
|
|
24
|
+
platformTenant = ctx.tenant;
|
|
25
|
+
platformEnv = ctx.platformEnv;
|
|
26
|
+
logInfo(`Auto-detected: Tenant=${platformTenant}, Env=${platformEnv}`);
|
|
27
|
+
}
|
|
28
|
+
// Resolve app credentials
|
|
29
|
+
const appTenant = options.appTenant ?? platformTenant;
|
|
30
|
+
const appStage = options.appStage ?? platformEnv;
|
|
31
|
+
const appName = options.app;
|
|
32
|
+
if (appName) {
|
|
33
|
+
logInfo(`App credentials: tenant=${appTenant}, stage=${appStage}, app=${appName}`);
|
|
34
|
+
}
|
|
35
|
+
// Get DATABASE_URL
|
|
36
|
+
const databaseUrl = await getDatabaseUrl(appTenant, appStage, { app: appName });
|
|
37
|
+
const parsed = new URL(databaseUrl);
|
|
38
|
+
console.log("");
|
|
39
|
+
console.log("Database Credentials:");
|
|
40
|
+
console.log(` Host: ${parsed.hostname}`);
|
|
41
|
+
console.log(` Port: ${parsed.port || 5432}`);
|
|
42
|
+
console.log(` Database: ${parsed.pathname.slice(1)}`);
|
|
43
|
+
console.log(` Username: ${parsed.username}`);
|
|
44
|
+
console.log(` Password: ${decodeURIComponent(parsed.password)}`);
|
|
45
|
+
console.log("");
|
|
46
|
+
console.log("DATABASE_URL:");
|
|
47
|
+
console.log(` ${databaseUrl}`);
|
|
48
|
+
console.log("");
|
|
49
|
+
console.log("For tunnel usage (localhost:5432):");
|
|
50
|
+
const tunnelUrl = new URL(databaseUrl);
|
|
51
|
+
tunnelUrl.hostname = "localhost";
|
|
52
|
+
tunnelUrl.port = "5432";
|
|
53
|
+
console.log(` ${tunnelUrl.toString()}`);
|
|
54
|
+
console.log("");
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../../src/commands/db/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db env - Export DATABASE_URL for shell
|
|
3
|
+
*
|
|
4
|
+
* Usage: eval $(mesh db env --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev)
|
|
5
|
+
*/
|
|
6
|
+
interface EnvOptions {
|
|
7
|
+
tenant?: string;
|
|
8
|
+
env?: string;
|
|
9
|
+
app?: string;
|
|
10
|
+
appTenant?: string;
|
|
11
|
+
appStage?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function envCommand(options: EnvOptions): Promise<void>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,UAAU,UAAU;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CnE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db env - Export DATABASE_URL for shell
|
|
3
|
+
*
|
|
4
|
+
* Usage: eval $(mesh db env --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev)
|
|
5
|
+
*/
|
|
6
|
+
import { detectContext, getDatabaseUrl, rewriteDatabaseUrl, logInfo, logError, } from "../../utils/index.js";
|
|
7
|
+
export async function envCommand(options) {
|
|
8
|
+
// Resolve platform tenant/env
|
|
9
|
+
let platformTenant;
|
|
10
|
+
let platformEnv;
|
|
11
|
+
if (options.tenant && options.env) {
|
|
12
|
+
platformTenant = options.tenant;
|
|
13
|
+
platformEnv = options.env;
|
|
14
|
+
// Use stderr for info so stdout is clean for eval
|
|
15
|
+
console.error(`ℹ Platform: Tenant=${platformTenant}, Env=${platformEnv}`);
|
|
16
|
+
}
|
|
17
|
+
else if (options.tenant || options.env) {
|
|
18
|
+
logError("Both --tenant and --env are required");
|
|
19
|
+
logInfo("Usage: eval $(mesh db env --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev)");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const ctx = detectContext();
|
|
24
|
+
platformTenant = ctx.tenant;
|
|
25
|
+
platformEnv = ctx.platformEnv;
|
|
26
|
+
console.error(`ℹ Auto-detected: Tenant=${platformTenant}, Env=${platformEnv}`);
|
|
27
|
+
}
|
|
28
|
+
// Resolve app credentials
|
|
29
|
+
const appTenant = options.appTenant ?? platformTenant;
|
|
30
|
+
const appStage = options.appStage ?? platformEnv;
|
|
31
|
+
const appName = options.app;
|
|
32
|
+
if (appName) {
|
|
33
|
+
console.error(`ℹ App credentials: tenant=${appTenant}, stage=${appStage}, app=${appName}`);
|
|
34
|
+
}
|
|
35
|
+
// Get DATABASE_URL and rewrite for tunnel
|
|
36
|
+
const rawUrl = await getDatabaseUrl(appTenant, appStage, { app: appName });
|
|
37
|
+
const tunnelUrl = rewriteDatabaseUrl(rawUrl, { endpoint: "localhost:5432" });
|
|
38
|
+
const parsed = new URL(tunnelUrl);
|
|
39
|
+
// Output export statements (to stdout for eval).
|
|
40
|
+
// WARNING: Contains plaintext credentials. Use only with:
|
|
41
|
+
// eval "$(mesh db env ...)"
|
|
42
|
+
// Do NOT run bare — credentials will appear in terminal and shell history.
|
|
43
|
+
console.log(`export DATABASE_URL="${tunnelUrl}"`);
|
|
44
|
+
console.log('export DB_HOST="localhost"');
|
|
45
|
+
console.log('export DB_PORT="5432"');
|
|
46
|
+
console.log(`export DB_NAME="${parsed.pathname.slice(1)}"`);
|
|
47
|
+
console.log(`export DB_USERNAME="${parsed.username}"`);
|
|
48
|
+
console.log(`export DB_PASSWORD="${decodeURIComponent(parsed.password)}"`);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/commands/db/env.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,QAAQ,GACT,MAAM,sBAAsB,CAAC;AAU9B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAmB;IAClD,8BAA8B;IAC9B,IAAI,cAAsB,CAAC;IAC3B,IAAI,WAAmB,CAAC;IAExB,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;QAChC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAC1B,kDAAkD;QAClD,OAAO,CAAC,KAAK,CAAC,sBAAsB,cAAc,SAAS,WAAW,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACzC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;QACjD,OAAO,CAAC,2GAA2G,CAAC,CAAC;QACrH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC;QAC5B,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,2BAA2B,cAAc,SAAS,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,cAAc,CAAC;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAE5B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,SAAS,WAAW,QAAQ,SAAS,OAAO,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,0CAA0C;IAC1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAElC,iDAAiD;IACjD,0DAA0D;IAC1D,8BAA8B;IAC9B,2EAA2E;IAC3E,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mesh db exec - Run any command with database connection
|
|
3
|
+
*
|
|
4
|
+
* Three modes of operation:
|
|
5
|
+
*
|
|
6
|
+
* 1. Explicit mode (recommended for ad-hoc use):
|
|
7
|
+
* mesh db exec --tenant=<tenant> --env=<env> [--ssl=require] -- <command>
|
|
8
|
+
* - Uses explicit tenant/env to find platform bastion
|
|
9
|
+
* - Starts tunnel if needed
|
|
10
|
+
* - Similar to: mesh tunnel --tenant mesh --env dev
|
|
11
|
+
*
|
|
12
|
+
* 2. Direct mode (for sst dev integration):
|
|
13
|
+
* mesh db exec --secret=<arn> [--ssl=require] -- <command>
|
|
14
|
+
* - Uses secret ARN directly, expects tunnel already running
|
|
15
|
+
* - Ideal for sst.config.ts devCommand
|
|
16
|
+
*
|
|
17
|
+
* 3. Discovery mode (legacy, auto-detection):
|
|
18
|
+
* mesh db exec [--stage=<stage>] -- <command>
|
|
19
|
+
* - Auto-discovers tenant/env from filesystem and config files
|
|
20
|
+
* - Can be fragile if project structure doesn't match expected patterns
|
|
21
|
+
* - Starts tunnel if needed
|
|
22
|
+
*
|
|
23
|
+
* Examples:
|
|
24
|
+
* # Explicit mode (recommended)
|
|
25
|
+
* mesh db exec --tenant mesh --env dev --ssl=require -- npx prisma db push
|
|
26
|
+
* mesh db exec -t mesh -e dev -- npx prisma migrate dev
|
|
27
|
+
*
|
|
28
|
+
* # Direct mode (in sst.config.ts)
|
|
29
|
+
* mesh db exec --secret=arn:aws:secretsmanager:... --ssl=require -- pnpm dev
|
|
30
|
+
*
|
|
31
|
+
* # Discovery mode (legacy)
|
|
32
|
+
* mesh db exec -- npx prisma db push
|
|
33
|
+
* mesh db exec --stage=dev -- npx prisma migrate dev
|
|
34
|
+
*/
|
|
35
|
+
export interface ExecOptions {
|
|
36
|
+
/** Platform tenant for bastion lookup */
|
|
37
|
+
tenant?: string;
|
|
38
|
+
/** Platform environment for bastion lookup */
|
|
39
|
+
env?: string;
|
|
40
|
+
/** App name for credentials path */
|
|
41
|
+
app?: string;
|
|
42
|
+
/** Tenant for app credentials (if different from platform tenant) */
|
|
43
|
+
appTenant?: string;
|
|
44
|
+
/** Stage for app credentials */
|
|
45
|
+
appStage?: string;
|
|
46
|
+
/** Secret ARN for direct mode */
|
|
47
|
+
secret?: string;
|
|
48
|
+
/** SSL mode */
|
|
49
|
+
ssl?: string;
|
|
50
|
+
/** Local tunnel port */
|
|
51
|
+
port?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare function execCommand(commandArgs: string[], options: ExecOptions): Promise<void>;
|
|
54
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAmEH,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAgGD,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA+Mf"}
|