vyft 0.4.0-alpha → 0.4.2-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 +387 -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 +65 -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 -9
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -7
- 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 -15
- 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 -48
- 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 -12
- package/dist/build.js +0 -44
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -842
- package/dist/context.d.ts +0 -39
- package/dist/context.js +0 -101
- package/dist/docker.d.ts +0 -69
- package/dist/docker.js +0 -958
- 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/local/dev.d.ts +0 -31
- package/dist/local/dev.js +0 -109
- package/dist/local/index.d.ts +0 -2
- package/dist/local/index.js +0 -2
- package/dist/local/runtime.d.ts +0 -61
- package/dist/local/runtime.js +0 -391
- 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 -181
- package/dist/resource.js +0 -45
- package/dist/services/index.d.ts +0 -26
- package/dist/services/index.js +0 -35
- 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 -15
- package/dist/symbols.js +0 -4
- 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/dockerignore +0 -7
- package/templates/fullstack/gitignore +0 -3
- package/templates/fullstack/package.json +0 -14
- 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,58 @@
|
|
|
1
|
+
import { spinner } from "@clack/prompts";
|
|
2
|
+
import { apply, reconcile, toState, urn } from "@vyft/core";
|
|
3
|
+
import docker from "@vyft/docker";
|
|
4
|
+
import { RUNTIME_PROVIDER_NAME } from "@vyft/runtime";
|
|
5
|
+
import { Command } from "commander";
|
|
6
|
+
import { loadConfig, resolveName } from "../../config.js";
|
|
7
|
+
import { buildContext, buildCurrentState, createCipher, loadSalt, openStore, resolveLocalStateDir, resolvePassphrase, } from "../../runtime.js";
|
|
8
|
+
export default new Command("up")
|
|
9
|
+
.description("Start local environment")
|
|
10
|
+
.option("--name <name>", "Project name")
|
|
11
|
+
.action(async (opts) => {
|
|
12
|
+
const cwd = process.cwd();
|
|
13
|
+
const project = await resolveName(cwd, opts.name);
|
|
14
|
+
const { entries } = await loadConfig(cwd, project);
|
|
15
|
+
const imageEntries = entries.filter((entry) => {
|
|
16
|
+
const parsed = urn.parse(entry.urn);
|
|
17
|
+
const value = entry.value;
|
|
18
|
+
return (parsed.provider === RUNTIME_PROVIDER_NAME && value["image"] != null);
|
|
19
|
+
});
|
|
20
|
+
if (imageEntries.length === 0) {
|
|
21
|
+
console.log("No image-based services found in config.");
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const stateDir = resolveLocalStateDir(cwd, project);
|
|
25
|
+
const providers = {
|
|
26
|
+
[RUNTIME_PROVIDER_NAME]: docker({ project, stage: "local" }),
|
|
27
|
+
};
|
|
28
|
+
const store = await openStore(stateDir);
|
|
29
|
+
const salt = await loadSalt(stateDir);
|
|
30
|
+
const passphrase = await resolvePassphrase(project, "local");
|
|
31
|
+
const cipher = createCipher(passphrase, salt);
|
|
32
|
+
const ctx = buildContext(store, cipher, providers, stateDir);
|
|
33
|
+
await reconcile(ctx);
|
|
34
|
+
const current = buildCurrentState(store);
|
|
35
|
+
const desired = toState(imageEntries);
|
|
36
|
+
const s = spinner();
|
|
37
|
+
try {
|
|
38
|
+
await apply(desired, current, ctx, {
|
|
39
|
+
onEvent(event) {
|
|
40
|
+
if (event.status === "pending") {
|
|
41
|
+
s.start(`${event.action} ${event.urn}`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
s.stop(`${event.action} ${event.urn}`);
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
51
|
+
s.stop(`failed: ${message}`);
|
|
52
|
+
throw err;
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await store.dispose();
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=up.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"up.js","sourceRoot":"","sources":["../../../src/commands/local/up.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/commands/refresh.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;;AAepC,wBAwCK"}
|
|
@@ -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, resolveName } 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("--name <name>", "Project name")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
const project = await resolveName(cwd, opts.name);
|
|
15
|
+
const { providers } = await loadConfig(cwd, 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,WAAW,EAAE,MAAM,cAAc,CAAC;AACvD,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,eAAe,EAAE,cAAc,CAAC;KACvC,MAAM,CAAC,KAAK,EAAE,IAAsC,EAAE,EAAE;IACvD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACrD,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, name?: string): Promise<LoadedConfig>;
|
|
7
|
+
export declare function resolveName(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,EAAiB,MAAM,YAAY,CAAC;AAW9E,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,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { registry, urn } from "@vyft/core";
|
|
4
|
+
import { service } from "@vyft/runtime";
|
|
5
|
+
import { createJiti } from "jiti";
|
|
6
|
+
const CONFIG_FILES = [
|
|
7
|
+
"vyft.config.ts",
|
|
8
|
+
"vyft.config.js",
|
|
9
|
+
"vyft.config.mjs",
|
|
10
|
+
"vyft.config.mts",
|
|
11
|
+
];
|
|
12
|
+
function collectProviders(entries) {
|
|
13
|
+
const providers = {};
|
|
14
|
+
for (const entry of entries) {
|
|
15
|
+
const { provider: name } = urn.parse(entry.urn);
|
|
16
|
+
if (!providers[name]) {
|
|
17
|
+
providers[name] = entry.provider;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return providers;
|
|
21
|
+
}
|
|
22
|
+
async function fileExists(filePath) {
|
|
23
|
+
try {
|
|
24
|
+
await fs.access(filePath);
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export async function loadConfig(cwd, name) {
|
|
32
|
+
const jiti = createJiti(cwd);
|
|
33
|
+
for (const file of CONFIG_FILES) {
|
|
34
|
+
const filePath = path.join(cwd, file);
|
|
35
|
+
if (!(await fileExists(filePath)))
|
|
36
|
+
continue;
|
|
37
|
+
registry.begin();
|
|
38
|
+
await jiti.import(filePath);
|
|
39
|
+
const entries = registry.collect();
|
|
40
|
+
return { entries, providers: collectProviders(entries) };
|
|
41
|
+
}
|
|
42
|
+
if (name) {
|
|
43
|
+
registry.begin();
|
|
44
|
+
service(name, {});
|
|
45
|
+
const entries = registry.collect();
|
|
46
|
+
return { entries, providers: collectProviders(entries) };
|
|
47
|
+
}
|
|
48
|
+
throw new Error(`No config file found. Create one of: ${CONFIG_FILES.join(", ")}, or pass --name <name>.`);
|
|
49
|
+
}
|
|
50
|
+
export async function resolveName(cwd, override) {
|
|
51
|
+
if (override)
|
|
52
|
+
return override;
|
|
53
|
+
try {
|
|
54
|
+
const raw = await fs.readFile(path.join(cwd, "package.json"), "utf8");
|
|
55
|
+
const pkg = JSON.parse(raw);
|
|
56
|
+
if (pkg.name) {
|
|
57
|
+
const stripped = pkg.name.replace(/^@[^/]+\//, "");
|
|
58
|
+
if (stripped)
|
|
59
|
+
return stripped;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch { }
|
|
63
|
+
throw new Error('Could not determine project name. Add a "name" field to package.json or use --name <name>.');
|
|
64
|
+
}
|
|
65
|
+
//# 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":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAkB7B,MAAM,QAAQ,GAAG,OAAO,CAAC;AACzB,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAkB;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAAY,EACZ,KAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IACD,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IAC3D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;IACH,CAAC;IACD,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,IAAY;IACxD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACpB,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,eAAe,GAAiB;IACpC,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW;IAEX,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +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 { isManaged } from "./services/index.js";
|
|
7
|
-
export type { RuntimeMeta, RuntimeRef } from "./symbols.js";
|
|
8
|
-
export { VYFT_MANAGED, VYFT_RUNTIME } from "./symbols.js";
|
|
9
|
-
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,7 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
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, ResourceHandle, 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, ServiceHandle, VolumeConfig, VolumeHandle, } 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,cAAc,EACd,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,aAAa,EACb,YAAY,EACZ,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;AAShD,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,16 +1,19 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
/** Backend that can deploy, query, and tear down resources. */
|
|
9
|
-
export interface Runtime {
|
|
10
|
-
/** Deploy or update a resource. */
|
|
11
|
-
create(resource: Resource): Promise<CreateResult>;
|
|
12
|
-
/** Check whether a resource currently exists. */
|
|
13
|
-
exists(resource: Resource): Promise<boolean>;
|
|
14
|
-
/** Tear down a resource. */
|
|
15
|
-
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;
|
|
16
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"}
|