vyft 0.3.0-alpha → 0.4.1-alpha
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/LICENSE +191 -21
- package/README.md +3 -49
- package/dist/commands/context/add.d.ts +4 -0
- package/dist/commands/context/add.d.ts.map +1 -0
- package/dist/commands/context/add.js +98 -0
- package/dist/commands/context/add.js.map +1 -0
- package/dist/commands/context/index.d.ts +4 -0
- package/dist/commands/context/index.d.ts.map +1 -0
- package/dist/commands/context/index.js +12 -0
- package/dist/commands/context/index.js.map +1 -0
- package/dist/commands/context/list.d.ts +4 -0
- package/dist/commands/context/list.d.ts.map +1 -0
- package/dist/commands/context/list.js +25 -0
- package/dist/commands/context/list.js.map +1 -0
- package/dist/commands/context/remove.d.ts +4 -0
- package/dist/commands/context/remove.d.ts.map +1 -0
- package/dist/commands/context/remove.js +36 -0
- package/dist/commands/context/remove.js.map +1 -0
- package/dist/commands/context/use.d.ts +4 -0
- package/dist/commands/context/use.d.ts.map +1 -0
- package/dist/commands/context/use.js +32 -0
- package/dist/commands/context/use.js.map +1 -0
- package/dist/commands/deploy.d.ts +4 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +55 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/destroy.d.ts +4 -0
- package/dist/commands/destroy.d.ts.map +1 -0
- package/dist/commands/destroy.js +70 -0
- package/dist/commands/destroy.js.map +1 -0
- package/dist/commands/diff.d.ts +4 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +52 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +92 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/local/detect.d.ts +7 -0
- package/dist/commands/local/detect.d.ts.map +1 -0
- package/dist/commands/local/detect.js +146 -0
- package/dist/commands/local/detect.js.map +1 -0
- package/dist/commands/local/dev.d.ts +4 -0
- package/dist/commands/local/dev.d.ts.map +1 -0
- package/dist/commands/local/dev.js +339 -0
- package/dist/commands/local/dev.js.map +1 -0
- package/dist/commands/local/down.d.ts +4 -0
- package/dist/commands/local/down.d.ts.map +1 -0
- package/dist/commands/local/down.js +61 -0
- package/dist/commands/local/down.js.map +1 -0
- package/dist/commands/local/index.d.ts +4 -0
- package/dist/commands/local/index.d.ts.map +1 -0
- package/dist/commands/local/index.js +12 -0
- package/dist/commands/local/index.js.map +1 -0
- package/dist/commands/local/reset.d.ts +4 -0
- package/dist/commands/local/reset.d.ts.map +1 -0
- package/dist/commands/local/reset.js +67 -0
- package/dist/commands/local/reset.js.map +1 -0
- package/dist/commands/local/up.d.ts +4 -0
- package/dist/commands/local/up.d.ts.map +1 -0
- package/dist/commands/local/up.js +58 -0
- package/dist/commands/local/up.js.map +1 -0
- package/dist/commands/refresh.d.ts +4 -0
- package/dist/commands/refresh.d.ts.map +1 -0
- package/dist/commands/refresh.js +39 -0
- package/dist/commands/refresh.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +69 -0
- package/dist/config.js.map +1 -0
- package/dist/contexts.d.ts +21 -0
- package/dist/contexts.d.ts.map +1 -0
- package/dist/contexts.js +72 -0
- package/dist/contexts.js.map +1 -0
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -6
- package/dist/index.js.map +1 -0
- package/dist/lib.d.ts +7 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js +6 -0
- package/dist/lib.js.map +1 -0
- package/dist/providers.d.ts +9 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +41 -0
- package/dist/providers.js.map +1 -0
- package/dist/runtime.d.ts +18 -9
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +154 -0
- package/dist/runtime.js.map +1 -0
- package/dist/runtime.test.d.ts +2 -0
- package/dist/runtime.test.d.ts.map +1 -0
- package/dist/runtime.test.js +119 -0
- package/dist/runtime.test.js.map +1 -0
- package/dist/utils/fs.d.ts +4 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +33 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/pm.d.ts +3 -0
- package/dist/utils/pm.d.ts.map +1 -0
- package/dist/utils/pm.js +17 -0
- package/dist/utils/pm.js.map +1 -0
- package/dist/utils/prompts.d.ts +2 -0
- package/dist/utils/prompts.d.ts.map +1 -0
- package/dist/utils/prompts.js +6 -0
- package/dist/utils/prompts.js.map +1 -0
- package/dist/utils/templates.d.ts +3 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +48 -0
- package/dist/utils/templates.js.map +1 -0
- package/package.json +31 -46
- package/templates/bun/index.ts +8 -0
- package/templates/bun/package.json +15 -0
- package/templates/bun/tsconfig.json +15 -0
- package/templates/bun/vyft.config.ts +3 -0
- package/dist/build.d.ts +0 -11
- package/dist/build.js +0 -39
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -398
- package/dist/context.d.ts +0 -39
- package/dist/context.js +0 -101
- package/dist/docker.d.ts +0 -62
- package/dist/docker.js +0 -876
- package/dist/exec.d.ts +0 -2
- package/dist/exec.js +0 -28
- package/dist/init.d.ts +0 -1
- package/dist/init.js +0 -117
- package/dist/interpolate.d.ts +0 -13
- package/dist/interpolate.js +0 -19
- package/dist/logger.d.ts +0 -2
- package/dist/logger.js +0 -10
- package/dist/proxy.d.ts +0 -16
- package/dist/proxy.js +0 -0
- package/dist/resource.d.ts +0 -174
- package/dist/resource.js +0 -45
- package/dist/services/index.d.ts +0 -24
- package/dist/services/index.js +0 -20
- package/dist/services/minio.d.ts +0 -36
- package/dist/services/minio.js +0 -53
- package/dist/services/mongo.d.ts +0 -28
- package/dist/services/mongo.js +0 -45
- package/dist/services/mysql.d.ts +0 -28
- package/dist/services/mysql.js +0 -44
- package/dist/services/nats.d.ts +0 -26
- package/dist/services/nats.js +0 -38
- package/dist/services/postgres.d.ts +0 -28
- package/dist/services/postgres.js +0 -45
- package/dist/services/rabbitmq.d.ts +0 -28
- package/dist/services/rabbitmq.js +0 -44
- package/dist/services/redis.d.ts +0 -28
- package/dist/services/redis.js +0 -49
- package/dist/services/storage.d.ts +0 -39
- package/dist/services/storage.js +0 -94
- package/dist/swarm/factories.d.ts +0 -16
- package/dist/swarm/factories.js +0 -63
- package/dist/swarm/index.d.ts +0 -20
- package/dist/swarm/index.js +0 -5
- package/dist/swarm/proxy.d.ts +0 -24
- package/dist/swarm/proxy.js +0 -339
- package/dist/swarm/types.d.ts +0 -26
- package/dist/swarm/types.js +0 -0
- package/dist/symbols.d.ts +0 -13
- package/dist/symbols.js +0 -2
- package/templates/fullstack/apps/api/Dockerfile +0 -22
- package/templates/fullstack/apps/api/package.json +0 -26
- package/templates/fullstack/apps/api/src/auth.ts +0 -21
- package/templates/fullstack/apps/api/src/db.ts +0 -16
- package/templates/fullstack/apps/api/src/index.ts +0 -17
- package/templates/fullstack/apps/api/src/router.ts +0 -11
- package/templates/fullstack/apps/api/src/schema.ts +0 -11
- package/templates/fullstack/apps/api/tsconfig.json +0 -8
- package/templates/fullstack/apps/web/index.html +0 -12
- package/templates/fullstack/apps/web/package.json +0 -21
- package/templates/fullstack/apps/web/src/app.tsx +0 -8
- package/templates/fullstack/apps/web/src/main.tsx +0 -9
- package/templates/fullstack/apps/web/tsconfig.json +0 -7
- package/templates/fullstack/apps/web/vite.config.ts +0 -14
- package/templates/fullstack/compose.yaml +0 -14
- package/templates/fullstack/dockerignore +0 -7
- package/templates/fullstack/gitignore +0 -3
- package/templates/fullstack/package.json +0 -18
- package/templates/fullstack/pnpm-workspace.yaml +0 -2
- package/templates/fullstack/tsconfig.json +0 -11
- package/templates/fullstack/vyft.config.ts +0 -22
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { reconcile, refresh } from "@vyft/core";
|
|
2
|
+
import { PLATFORM_PROVIDER_NAME } from "@vyft/platform";
|
|
3
|
+
import { RUNTIME_PROVIDER_NAME } from "@vyft/runtime";
|
|
4
|
+
import { Command } from "commander";
|
|
5
|
+
import { loadConfig, resolveProjectName } from "../config.js";
|
|
6
|
+
import { getCurrentContext } from "../contexts.js";
|
|
7
|
+
import { buildContext, buildCurrentState, createCipher, loadSalt, openStore, resolvePassphrase, resolvePlatformProvider, resolveRuntimeProvider, resolveStateDir, } from "../runtime.js";
|
|
8
|
+
export default new Command("refresh")
|
|
9
|
+
.description("Refresh infrastructure state")
|
|
10
|
+
.option("--stage <name>", "Deployment stage", "production")
|
|
11
|
+
.option("--project <name>", "Project name")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
const { providers } = await loadConfig(cwd);
|
|
15
|
+
const project = await resolveProjectName(cwd, opts.project);
|
|
16
|
+
const context = await getCurrentContext(cwd);
|
|
17
|
+
const stateDir = resolveStateDir(cwd, context.name, project, opts.stage);
|
|
18
|
+
if (providers[RUNTIME_PROVIDER_NAME]) {
|
|
19
|
+
providers[RUNTIME_PROVIDER_NAME] = resolveRuntimeProvider(context.entry.runtime, project, opts.stage);
|
|
20
|
+
}
|
|
21
|
+
if (providers[PLATFORM_PROVIDER_NAME]) {
|
|
22
|
+
providers[PLATFORM_PROVIDER_NAME] = resolvePlatformProvider(context.entry.platform, project, opts.stage);
|
|
23
|
+
}
|
|
24
|
+
const store = await openStore(stateDir);
|
|
25
|
+
const salt = await loadSalt(stateDir);
|
|
26
|
+
const passphrase = await resolvePassphrase(project, "read");
|
|
27
|
+
const cipher = createCipher(passphrase, salt);
|
|
28
|
+
const ctx = buildContext(store, cipher, providers, stateDir);
|
|
29
|
+
await reconcile(ctx);
|
|
30
|
+
const current = buildCurrentState(store);
|
|
31
|
+
try {
|
|
32
|
+
await refresh(current, ctx);
|
|
33
|
+
console.log("State refreshed.");
|
|
34
|
+
}
|
|
35
|
+
finally {
|
|
36
|
+
await store.dispose();
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=refresh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.js","sourceRoot":"","sources":["../../src/commands/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC;KAClC,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,CAAC;KAC1D,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAyC,EAAE,EAAE;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzE,IAAI,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACrC,SAAS,CAAC,qBAAqB,CAAC,GAAG,sBAAsB,CACvD,OAAO,CAAC,KAAK,CAAC,OAAO,EACrB,OAAO,EACP,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACtC,SAAS,CAAC,sBAAsB,CAAC,GAAG,uBAAuB,CACzD,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Provider, type ResourceEntry } from "@vyft/core";
|
|
2
|
+
export interface LoadedConfig {
|
|
3
|
+
entries: ResourceEntry[];
|
|
4
|
+
providers: Record<string, Provider<unknown>>;
|
|
5
|
+
}
|
|
6
|
+
export declare function loadConfig(cwd: string): Promise<LoadedConfig>;
|
|
7
|
+
export declare function resolveProjectName(cwd: string, override?: string): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAO,MAAM,YAAY,CAAC;AAoBpE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CAC9C;AAwBD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBnE;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { urn } from "@vyft/core";
|
|
4
|
+
import { createJiti } from "jiti";
|
|
5
|
+
const CONFIG_FILES = [
|
|
6
|
+
"vyft.config.ts",
|
|
7
|
+
"vyft.config.js",
|
|
8
|
+
"vyft.config.mjs",
|
|
9
|
+
"vyft.config.mts",
|
|
10
|
+
];
|
|
11
|
+
function isResourceEntry(value) {
|
|
12
|
+
return (typeof value === "object" &&
|
|
13
|
+
value !== null &&
|
|
14
|
+
"urn" in value &&
|
|
15
|
+
typeof value["urn"] === "string" &&
|
|
16
|
+
"value" in value);
|
|
17
|
+
}
|
|
18
|
+
function collectProviders(entries) {
|
|
19
|
+
const providers = {};
|
|
20
|
+
for (const entry of entries) {
|
|
21
|
+
const { provider: name } = urn.parse(entry.urn);
|
|
22
|
+
if (!providers[name]) {
|
|
23
|
+
providers[name] = entry.provider;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return providers;
|
|
27
|
+
}
|
|
28
|
+
async function fileExists(filePath) {
|
|
29
|
+
try {
|
|
30
|
+
await fs.access(filePath);
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export async function loadConfig(cwd) {
|
|
38
|
+
const jiti = createJiti(cwd);
|
|
39
|
+
for (const file of CONFIG_FILES) {
|
|
40
|
+
const filePath = path.join(cwd, file);
|
|
41
|
+
if (!(await fileExists(filePath)))
|
|
42
|
+
continue;
|
|
43
|
+
const mod = (await jiti.import(filePath));
|
|
44
|
+
const entries = [];
|
|
45
|
+
for (const value of Object.values(mod)) {
|
|
46
|
+
if (isResourceEntry(value)) {
|
|
47
|
+
entries.push(value);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return { entries, providers: collectProviders(entries) };
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`No config file found. Create one of: ${CONFIG_FILES.join(", ")}`);
|
|
53
|
+
}
|
|
54
|
+
export async function resolveProjectName(cwd, override) {
|
|
55
|
+
if (override)
|
|
56
|
+
return override;
|
|
57
|
+
try {
|
|
58
|
+
const raw = await fs.readFile(path.join(cwd, "package.json"), "utf8");
|
|
59
|
+
const pkg = JSON.parse(raw);
|
|
60
|
+
if (pkg.name) {
|
|
61
|
+
const stripped = pkg.name.replace(/^@[^/]+\//, "");
|
|
62
|
+
if (stripped)
|
|
63
|
+
return stripped;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch { }
|
|
67
|
+
throw new Error('Could not determine project name. Add a "name" field to package.json or use --project <name>.');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ContextEntry {
|
|
2
|
+
platform: string;
|
|
3
|
+
runtime: string;
|
|
4
|
+
connection?: {
|
|
5
|
+
host?: string | undefined;
|
|
6
|
+
endpoint?: string | undefined;
|
|
7
|
+
} | undefined;
|
|
8
|
+
}
|
|
9
|
+
export interface ContextsFile {
|
|
10
|
+
current?: string;
|
|
11
|
+
contexts: Record<string, ContextEntry>;
|
|
12
|
+
}
|
|
13
|
+
export declare function readContexts(cwd: string): Promise<ContextsFile>;
|
|
14
|
+
export declare function addContext(cwd: string, name: string, entry: ContextEntry): Promise<void>;
|
|
15
|
+
export declare function removeContext(cwd: string, name: string): Promise<void>;
|
|
16
|
+
export declare function useContext(cwd: string, name: string): Promise<void>;
|
|
17
|
+
export declare function getCurrentContext(cwd: string): Promise<{
|
|
18
|
+
name: string;
|
|
19
|
+
entry: ContextEntry;
|
|
20
|
+
}>;
|
|
21
|
+
//# sourceMappingURL=contexts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../src/contexts.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EACP;QACE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC/B,GACD,SAAS,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC;AASD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOrE;AAQD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5E;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOzE;AAOD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC,CAUhD"}
|
package/dist/contexts.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const VYFT_DIR = ".vyft";
|
|
4
|
+
const CONTEXTS_FILE = "vyft.json";
|
|
5
|
+
function contextsPath(cwd) {
|
|
6
|
+
return path.join(cwd, VYFT_DIR, CONTEXTS_FILE);
|
|
7
|
+
}
|
|
8
|
+
export async function readContexts(cwd) {
|
|
9
|
+
try {
|
|
10
|
+
const raw = await fs.readFile(contextsPath(cwd), "utf8");
|
|
11
|
+
return JSON.parse(raw);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return { contexts: {} };
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
async function writeContexts(cwd, data) {
|
|
18
|
+
const dir = path.join(cwd, VYFT_DIR);
|
|
19
|
+
await fs.mkdir(dir, { recursive: true });
|
|
20
|
+
await fs.writeFile(contextsPath(cwd), JSON.stringify(data, null, 2));
|
|
21
|
+
}
|
|
22
|
+
export async function addContext(cwd, name, entry) {
|
|
23
|
+
const data = await readContexts(cwd);
|
|
24
|
+
if (data.contexts[name]) {
|
|
25
|
+
throw new Error(`Context "${name}" already exists`);
|
|
26
|
+
}
|
|
27
|
+
data.contexts[name] = entry;
|
|
28
|
+
if (!data.current) {
|
|
29
|
+
data.current = name;
|
|
30
|
+
}
|
|
31
|
+
await writeContexts(cwd, data);
|
|
32
|
+
}
|
|
33
|
+
export async function removeContext(cwd, name) {
|
|
34
|
+
const data = await readContexts(cwd);
|
|
35
|
+
if (!data.contexts[name]) {
|
|
36
|
+
throw new Error(`Context "${name}" does not exist`);
|
|
37
|
+
}
|
|
38
|
+
delete data.contexts[name];
|
|
39
|
+
if (data.current === name) {
|
|
40
|
+
const remaining = Object.keys(data.contexts);
|
|
41
|
+
const next = remaining[0];
|
|
42
|
+
if (next) {
|
|
43
|
+
data.current = next;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
delete data.current;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
await writeContexts(cwd, data);
|
|
50
|
+
}
|
|
51
|
+
export async function useContext(cwd, name) {
|
|
52
|
+
const data = await readContexts(cwd);
|
|
53
|
+
if (!data.contexts[name]) {
|
|
54
|
+
throw new Error(`Context "${name}" does not exist`);
|
|
55
|
+
}
|
|
56
|
+
data.current = name;
|
|
57
|
+
await writeContexts(cwd, data);
|
|
58
|
+
}
|
|
59
|
+
const DEFAULT_CONTEXT = {
|
|
60
|
+
platform: "remote",
|
|
61
|
+
runtime: "docker",
|
|
62
|
+
};
|
|
63
|
+
export async function getCurrentContext(cwd) {
|
|
64
|
+
const data = await readContexts(cwd);
|
|
65
|
+
const name = data.current;
|
|
66
|
+
const entry = name ? data.contexts[name] : undefined;
|
|
67
|
+
if (!name || !entry) {
|
|
68
|
+
return { name: "default", entry: DEFAULT_CONTEXT };
|
|
69
|
+
}
|
|
70
|
+
return { name, entry };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=contexts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../src/contexts.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
3
|
-
export { isInterpolation, isReference, isSecret, validateId, validateRoute, } from "./resource.js";
|
|
4
|
-
export type { Runtime } from "./runtime.js";
|
|
5
|
-
export type { BackupConfig, Bucket, Minio, MinioConfig, Mongo, MongoConfig, Mysql, MysqlConfig, Nats, NatsConfig, Postgres, PostgresConfig, Rabbitmq, RabbitmqConfig, Redis, RedisConfig, Storage, StorageConfig, } from "./services/index.js";
|
|
6
|
-
export type { RuntimeMeta, RuntimeRef } from "./symbols.js";
|
|
7
|
-
export { VYFT_RUNTIME } from "./symbols.js";
|
|
8
|
-
export declare const service: (id: string, config: import("./swarm/types.js").SwarmServiceConfig) => import("./resource.js").Service, secret: (id: string, config?: import("./resource.js").SecretConfig) => import("./resource.js").Secret, volume: (id: string, config?: import("./resource.js").VolumeConfig) => import("./resource.js").Volume, site: (id: string, config: import("./resource.js").SiteConfig) => import("./resource.js").Site, postgres: (id: string, config?: import("./index.js").PostgresConfig) => import("./index.js").Postgres, mysql: (id: string, config?: import("./index.js").MysqlConfig) => import("./index.js").Mysql, redis: (id: string, config?: import("./index.js").RedisConfig) => import("./index.js").Redis, rabbitmq: (id: string, config?: import("./index.js").RabbitmqConfig) => import("./index.js").Rabbitmq, nats: (id: string, config?: import("./index.js").NatsConfig) => import("./index.js").Nats, mongo: (id: string, config?: import("./index.js").MongoConfig) => import("./index.js").Mongo, minio: (id: string, config?: import("./index.js").MinioConfig) => import("./index.js").Minio, storage: (id: string, config?: import("./index.js").StorageConfig) => import("./index.js").Storage;
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { Command } from "commander";
|
|
4
|
+
import context from "./commands/context/index.js";
|
|
5
|
+
import deploy from "./commands/deploy.js";
|
|
6
|
+
import destroy from "./commands/destroy.js";
|
|
7
|
+
import diff from "./commands/diff.js";
|
|
8
|
+
import init from "./commands/init.js";
|
|
9
|
+
import local from "./commands/local/index.js";
|
|
10
|
+
import refresh from "./commands/refresh.js";
|
|
11
|
+
const pkg = JSON.parse(fs.readFileSync(path.resolve(import.meta.dirname, "..", "package.json"), "utf8"));
|
|
12
|
+
const program = new Command("vyft")
|
|
13
|
+
.description("Vyft CLI")
|
|
14
|
+
.version(pkg.version);
|
|
15
|
+
program.addCommand(init);
|
|
16
|
+
program.addCommand(deploy);
|
|
17
|
+
program.addCommand(destroy);
|
|
18
|
+
program.addCommand(refresh);
|
|
19
|
+
program.addCommand(diff);
|
|
20
|
+
program.addCommand(local);
|
|
21
|
+
program.addCommand(context);
|
|
22
|
+
program.parse();
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAC1C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,KAAK,MAAM,2BAA2B,CAAC;AAC9C,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAE5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,EAAE,CAAC,YAAY,CACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,EACvD,MAAM,CACP,CACqB,CAAC;AAEzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAChC,WAAW,CAAC,UAAU,CAAC;KACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzB,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/lib.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { Output, ResourceEntry, ResourceOptions, SecretOutput, } from "@vyft/core";
|
|
2
|
+
export { createOutput, createSecretOutput, resource, secret } from "@vyft/core";
|
|
3
|
+
export { defineResource } from "@vyft/provider";
|
|
4
|
+
export type { CronJobConfig, JobConfig, ServiceConfig, VolumeConfig, } from "@vyft/runtime";
|
|
5
|
+
export { cronjob, job, service, volume } from "@vyft/runtime";
|
|
6
|
+
export { default as std } from "@vyft/std";
|
|
7
|
+
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,MAAM,EACN,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/lib.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// User-facing API re-exports
|
|
2
|
+
export { createOutput, createSecretOutput, resource, secret } from "@vyft/core";
|
|
3
|
+
export { defineResource } from "@vyft/provider";
|
|
4
|
+
export { cronjob, job, service, volume } from "@vyft/runtime";
|
|
5
|
+
export { default as std } from "@vyft/std";
|
|
6
|
+
//# sourceMappingURL=lib.js.map
|
package/dist/lib.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAQ7B,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAOhD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Provider } from "@vyft/core";
|
|
2
|
+
type ProviderFactory = (opts: {
|
|
3
|
+
project: string;
|
|
4
|
+
stage: string;
|
|
5
|
+
}) => Provider<unknown>;
|
|
6
|
+
export declare const runtimes: Map<string, ProviderFactory>;
|
|
7
|
+
export declare const platforms: Map<string, ProviderFactory>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAU3C,KAAK,eAAe,GAAG,CAAC,IAAI,EAAE;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;AAqCxB,eAAO,MAAM,QAAQ,8BAEnB,CAAC;AAEH,eAAO,MAAM,SAAS,8BAKpB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { RESOURCE } from "@vyft/core";
|
|
2
|
+
import docker, { createDockerContext, postgresHandlers, redisHandlers, siteHandlers, } from "@vyft/docker";
|
|
3
|
+
import local from "@vyft/local";
|
|
4
|
+
const FALLBACK_RESOURCES = {
|
|
5
|
+
postgres: { [RESOURCE]: true, name: "postgres", handlers: postgresHandlers },
|
|
6
|
+
redis: { [RESOURCE]: true, name: "redis", handlers: redisHandlers },
|
|
7
|
+
site: { [RESOURCE]: true, name: "site", handlers: siteHandlers },
|
|
8
|
+
};
|
|
9
|
+
function withFallbackResources(provider, project, stage) {
|
|
10
|
+
const resources = provider.config.resources ?? {};
|
|
11
|
+
const missing = {};
|
|
12
|
+
for (const [name, def] of Object.entries(FALLBACK_RESOURCES)) {
|
|
13
|
+
if (!resources[name]) {
|
|
14
|
+
missing[name] = def;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (Object.keys(missing).length === 0)
|
|
18
|
+
return provider;
|
|
19
|
+
const originalContext = provider.config.context;
|
|
20
|
+
return {
|
|
21
|
+
config: {
|
|
22
|
+
...provider.config,
|
|
23
|
+
context: async () => {
|
|
24
|
+
const platformCtx = await originalContext();
|
|
25
|
+
const dockerCtx = createDockerContext({ project, stage });
|
|
26
|
+
return Object.assign({}, platformCtx, dockerCtx);
|
|
27
|
+
},
|
|
28
|
+
resources: { ...resources, ...missing },
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export const runtimes = new Map([
|
|
33
|
+
["docker", ({ project, stage }) => docker({ project, stage })],
|
|
34
|
+
]);
|
|
35
|
+
export const platforms = new Map([
|
|
36
|
+
[
|
|
37
|
+
"remote",
|
|
38
|
+
({ project, stage }) => withFallbackResources(local({}), project, stage),
|
|
39
|
+
],
|
|
40
|
+
]);
|
|
41
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAA2B,MAAM,YAAY,CAAC;AAC/D,OAAO,MAAM,EAAE,EACb,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,aAAa,CAAC;AAOhC,MAAM,kBAAkB,GAAuC;IAC7D,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IAC5E,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE;IACnE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE;CACjE,CAAC;AAEF,SAAS,qBAAqB,CAC5B,QAA2B,EAC3B,OAAe,EACf,KAAa;IAEb,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAClD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEvD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IAChD,OAAO;QACL,MAAM,EAAE;YACN,GAAG,QAAQ,CAAC,MAAM;YAClB,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;gBAC5C,MAAM,SAAS,GAAG,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YACnD,CAAC;YACD,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAE;SACxC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAA0B;IACvD,CAAC,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,GAAG,CAA0B;IACxD;QACE,QAAQ;QACR,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC;KACzE;CACF,CAAC,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exists(resource: Resource): Promise<boolean>;
|
|
8
|
-
/** Tear down a resource. */
|
|
9
|
-
remove(resource: Resource): Promise<void>;
|
|
1
|
+
import { Cipher, type Context, type Provider } from "@vyft/core";
|
|
2
|
+
import type { State } from "@vyft/engine";
|
|
3
|
+
import { Store } from "@vyft/store";
|
|
4
|
+
export interface CommandOpts {
|
|
5
|
+
stage?: string;
|
|
6
|
+
project?: string;
|
|
10
7
|
}
|
|
8
|
+
export declare function resolveStateDir(cwd: string, context: string, project: string, stage?: string): string;
|
|
9
|
+
export declare function resolveLocalStateDir(cwd: string, project: string): string;
|
|
10
|
+
export declare function resolvePassphrase(project: string, mode: "local" | "deploy" | "read"): Promise<string>;
|
|
11
|
+
export declare function loadSalt(stateDir: string): Promise<Buffer>;
|
|
12
|
+
export declare function openStore(stateDir: string): Promise<Store>;
|
|
13
|
+
export declare function buildCurrentState(store: Store): State;
|
|
14
|
+
export declare function createArtifacts(stateDir: string): Context["createArtifacts"];
|
|
15
|
+
export declare function createCipher(passphrase: string, salt: Buffer): Cipher;
|
|
16
|
+
export declare function buildContext(store: Store, cipher: Cipher, providers: Record<string, Provider<unknown>>, stateDir: string): Context;
|
|
17
|
+
export declare function resolveRuntimeProvider(runtime: string, project: string, stage: string): Provider<unknown>;
|
|
18
|
+
export declare function resolvePlatformProvider(platform: string, project: string, stage: string): Provider<unknown>;
|
|
19
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAKlD,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,SAAe,GACnB,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEzE;AA2BD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,GAChC,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUhE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAGhE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAqBrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyB5E;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAErE;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC5C,QAAQ,EAAE,MAAM,GACf,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC,OAAO,CAAC,CAOnB;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,QAAQ,CAAC,OAAO,CAAC,CAOnB"}
|
package/dist/runtime.js
CHANGED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { confirm, isCancel, log, password } from "@clack/prompts";
|
|
6
|
+
import { Cipher, generateSalt } from "@vyft/core";
|
|
7
|
+
import { LocalBackend, Store } from "@vyft/store";
|
|
8
|
+
import { platforms, runtimes } from "./providers.js";
|
|
9
|
+
const VYFT_DIR = ".vyft";
|
|
10
|
+
export function resolveStateDir(cwd, context, project, stage = "production") {
|
|
11
|
+
return path.join(cwd, VYFT_DIR, "context", context, project, stage);
|
|
12
|
+
}
|
|
13
|
+
export function resolveLocalStateDir(cwd, project) {
|
|
14
|
+
return path.join(cwd, VYFT_DIR, "local", project);
|
|
15
|
+
}
|
|
16
|
+
function passphraseConfigPath(project) {
|
|
17
|
+
return path.join(os.homedir(), ".config", "vyft", project, "passphrase");
|
|
18
|
+
}
|
|
19
|
+
async function readPersistedPassphrase(project) {
|
|
20
|
+
try {
|
|
21
|
+
const data = await fs.readFile(passphraseConfigPath(project), "utf8");
|
|
22
|
+
// trim() strips trailing newlines from manually-edited files; whitespace-only content is treated as absent
|
|
23
|
+
return data.trim() || null;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async function persistPassphrase(project, passphrase) {
|
|
30
|
+
const filePath = passphraseConfigPath(project);
|
|
31
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
32
|
+
await fs.writeFile(filePath, passphrase, { mode: 0o600 });
|
|
33
|
+
}
|
|
34
|
+
export async function resolvePassphrase(project, mode) {
|
|
35
|
+
const env = process.env["VYFT_PASSPHRASE"];
|
|
36
|
+
if (env)
|
|
37
|
+
return env;
|
|
38
|
+
const persisted = await readPersistedPassphrase(project);
|
|
39
|
+
if (persisted)
|
|
40
|
+
return persisted;
|
|
41
|
+
if (mode === "local") {
|
|
42
|
+
const generated = crypto.randomBytes(32).toString("hex");
|
|
43
|
+
await persistPassphrase(project, generated);
|
|
44
|
+
log.info(`Generated passphrase saved to ${passphraseConfigPath(project)}`);
|
|
45
|
+
return generated;
|
|
46
|
+
}
|
|
47
|
+
const value = await password({ message: "Enter passphrase:" });
|
|
48
|
+
if (isCancel(value))
|
|
49
|
+
process.exit(1);
|
|
50
|
+
if (mode === "deploy") {
|
|
51
|
+
const save = await confirm({
|
|
52
|
+
message: "Save passphrase locally for future use?",
|
|
53
|
+
});
|
|
54
|
+
// Cancelling the save prompt is treated as "no" — passphrase is returned without saving
|
|
55
|
+
if (!isCancel(save) && save) {
|
|
56
|
+
await persistPassphrase(project, value);
|
|
57
|
+
log.info(`Passphrase saved to ${passphraseConfigPath(project)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
export async function loadSalt(stateDir) {
|
|
63
|
+
const saltPath = path.join(stateDir, "salt");
|
|
64
|
+
try {
|
|
65
|
+
return await fs.readFile(saltPath);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
const salt = generateSalt();
|
|
69
|
+
await fs.mkdir(stateDir, { recursive: true });
|
|
70
|
+
await fs.writeFile(saltPath, salt);
|
|
71
|
+
return salt;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export async function openStore(stateDir) {
|
|
75
|
+
await fs.mkdir(stateDir, { recursive: true });
|
|
76
|
+
return Store.open(new LocalBackend(stateDir));
|
|
77
|
+
}
|
|
78
|
+
export function buildCurrentState(store) {
|
|
79
|
+
const entries = {};
|
|
80
|
+
for (const [key, value] of store.entries()) {
|
|
81
|
+
const data = value;
|
|
82
|
+
if (data["status"] === "committed") {
|
|
83
|
+
const entry = {
|
|
84
|
+
urn: key,
|
|
85
|
+
input: data["input"] ?? {},
|
|
86
|
+
};
|
|
87
|
+
const output = data["output"];
|
|
88
|
+
if (output) {
|
|
89
|
+
entry.output = output;
|
|
90
|
+
}
|
|
91
|
+
const externalId = data["externalId"];
|
|
92
|
+
if (externalId) {
|
|
93
|
+
entry.externalId = externalId;
|
|
94
|
+
}
|
|
95
|
+
entries[key] = entry;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return { entries };
|
|
99
|
+
}
|
|
100
|
+
export function createArtifacts(stateDir) {
|
|
101
|
+
return (urn) => {
|
|
102
|
+
const dir = path.join(stateDir, "artifacts", urn);
|
|
103
|
+
return {
|
|
104
|
+
async write(name, data) {
|
|
105
|
+
await fs.mkdir(dir, { recursive: true });
|
|
106
|
+
await fs.writeFile(path.join(dir, name), data);
|
|
107
|
+
return { key: name };
|
|
108
|
+
},
|
|
109
|
+
async read(ref) {
|
|
110
|
+
return fs.readFile(path.join(dir, ref.key));
|
|
111
|
+
},
|
|
112
|
+
async exists(ref) {
|
|
113
|
+
try {
|
|
114
|
+
await fs.access(path.join(dir, ref.key));
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
async delete(ref) {
|
|
122
|
+
await fs.rm(path.join(dir, ref.key), { force: true });
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function createCipher(passphrase, salt) {
|
|
128
|
+
return new Cipher(passphrase, salt);
|
|
129
|
+
}
|
|
130
|
+
export function buildContext(store, cipher, providers, stateDir) {
|
|
131
|
+
return {
|
|
132
|
+
store,
|
|
133
|
+
cipher,
|
|
134
|
+
providers,
|
|
135
|
+
createArtifacts: createArtifacts(stateDir),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
export function resolveRuntimeProvider(runtime, project, stage) {
|
|
139
|
+
const factory = runtimes.get(runtime);
|
|
140
|
+
if (!factory) {
|
|
141
|
+
const supported = [...runtimes.keys()].join(", ");
|
|
142
|
+
throw new Error(`Unknown runtime: "${runtime}". Supported: ${supported}`);
|
|
143
|
+
}
|
|
144
|
+
return factory({ project, stage });
|
|
145
|
+
}
|
|
146
|
+
export function resolvePlatformProvider(platform, project, stage) {
|
|
147
|
+
const factory = platforms.get(platform);
|
|
148
|
+
if (!factory) {
|
|
149
|
+
const supported = [...platforms.keys()].join(", ");
|
|
150
|
+
throw new Error(`Unknown platform: "${platform}". Supported: ${supported}`);
|
|
151
|
+
}
|
|
152
|
+
return factory({ project, stage });
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.test.d.ts","sourceRoot":"","sources":["../src/runtime.test.ts"],"names":[],"mappings":""}
|