@vibesdotdev/infra-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/SPEC.md +169 -0
- package/dist/bootstrap/index.d.ts +5 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +4 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/seed.descriptor.d.ts +31 -0
- package/dist/bootstrap/seed.descriptor.d.ts.map +1 -0
- package/dist/bootstrap/seed.descriptor.js +18 -0
- package/dist/bootstrap/seed.descriptor.js.map +1 -0
- package/dist/bootstrap/seed.impl-shape.d.ts +5 -0
- package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -0
- package/dist/bootstrap/seed.impl-shape.js +2 -0
- package/dist/bootstrap/seed.impl-shape.js.map +1 -0
- package/dist/bootstrap/seed.kind.d.ts +5 -0
- package/dist/bootstrap/seed.kind.d.ts.map +1 -0
- package/dist/bootstrap/seed.kind.js +14 -0
- package/dist/bootstrap/seed.kind.js.map +1 -0
- package/dist/bootstrap/seed.runner.d.ts +18 -0
- package/dist/bootstrap/seed.runner.d.ts.map +1 -0
- package/dist/bootstrap/seed.runner.js +59 -0
- package/dist/bootstrap/seed.runner.js.map +1 -0
- package/dist/credentials/resolve.d.ts +80 -0
- package/dist/credentials/resolve.d.ts.map +1 -0
- package/dist/credentials/resolve.js +128 -0
- package/dist/credentials/resolve.js.map +1 -0
- package/dist/deployment.d.ts +9 -0
- package/dist/deployment.d.ts.map +1 -0
- package/dist/deployment.js +25 -0
- package/dist/deployment.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/infra.plugin.d.ts +18 -0
- package/dist/infra.plugin.d.ts.map +1 -0
- package/dist/infra.plugin.js +52 -0
- package/dist/infra.plugin.js.map +1 -0
- package/dist/kinds/alerts.kind.d.ts +192 -0
- package/dist/kinds/alerts.kind.d.ts.map +1 -0
- package/dist/kinds/alerts.kind.js +116 -0
- package/dist/kinds/alerts.kind.js.map +1 -0
- package/dist/kinds/artifact.kind.d.ts +96 -0
- package/dist/kinds/artifact.kind.d.ts.map +1 -0
- package/dist/kinds/artifact.kind.js +53 -0
- package/dist/kinds/artifact.kind.js.map +1 -0
- package/dist/kinds/cache.kind.d.ts +128 -0
- package/dist/kinds/cache.kind.d.ts.map +1 -0
- package/dist/kinds/cache.kind.js +90 -0
- package/dist/kinds/cache.kind.js.map +1 -0
- package/dist/kinds/database.kind.d.ts +141 -0
- package/dist/kinds/database.kind.d.ts.map +1 -0
- package/dist/kinds/database.kind.js +103 -0
- package/dist/kinds/database.kind.js.map +1 -0
- package/dist/kinds/discovery.d.ts +20 -0
- package/dist/kinds/discovery.d.ts.map +1 -0
- package/dist/kinds/discovery.js +25 -0
- package/dist/kinds/discovery.js.map +1 -0
- package/dist/kinds/git-hosting.kind.d.ts +98 -0
- package/dist/kinds/git-hosting.kind.d.ts.map +1 -0
- package/dist/kinds/git-hosting.kind.js +81 -0
- package/dist/kinds/git-hosting.kind.js.map +1 -0
- package/dist/kinds/index.d.ts +16 -0
- package/dist/kinds/index.d.ts.map +1 -0
- package/dist/kinds/index.js +16 -0
- package/dist/kinds/index.js.map +1 -0
- package/dist/kinds/logs.kind.d.ts +91 -0
- package/dist/kinds/logs.kind.d.ts.map +1 -0
- package/dist/kinds/logs.kind.js +73 -0
- package/dist/kinds/logs.kind.js.map +1 -0
- package/dist/kinds/object-storage.kind.d.ts +85 -0
- package/dist/kinds/object-storage.kind.d.ts.map +1 -0
- package/dist/kinds/object-storage.kind.js +81 -0
- package/dist/kinds/object-storage.kind.js.map +1 -0
- package/dist/kinds/observability.kind.d.ts +176 -0
- package/dist/kinds/observability.kind.d.ts.map +1 -0
- package/dist/kinds/observability.kind.js +120 -0
- package/dist/kinds/observability.kind.js.map +1 -0
- package/dist/kinds/package-registry.kind.d.ts +89 -0
- package/dist/kinds/package-registry.kind.d.ts.map +1 -0
- package/dist/kinds/package-registry.kind.js +78 -0
- package/dist/kinds/package-registry.kind.js.map +1 -0
- package/dist/kinds/queue.kind.d.ts +113 -0
- package/dist/kinds/queue.kind.d.ts.map +1 -0
- package/dist/kinds/queue.kind.js +86 -0
- package/dist/kinds/queue.kind.js.map +1 -0
- package/dist/kinds/rum.kind.d.ts +113 -0
- package/dist/kinds/rum.kind.d.ts.map +1 -0
- package/dist/kinds/rum.kind.js +80 -0
- package/dist/kinds/rum.kind.js.map +1 -0
- package/dist/kinds/sandbox.kind.d.ts +111 -0
- package/dist/kinds/sandbox.kind.d.ts.map +1 -0
- package/dist/kinds/sandbox.kind.js +94 -0
- package/dist/kinds/sandbox.kind.js.map +1 -0
- package/dist/kinds/web-app.kind.d.ts +99 -0
- package/dist/kinds/web-app.kind.d.ts.map +1 -0
- package/dist/kinds/web-app.kind.js +86 -0
- package/dist/kinds/web-app.kind.js.map +1 -0
- package/dist/kinds/worker.kind.d.ts +244 -0
- package/dist/kinds/worker.kind.d.ts.map +1 -0
- package/dist/kinds/worker.kind.js +171 -0
- package/dist/kinds/worker.kind.js.map +1 -0
- package/dist/schemas.d.ts +125 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/schemas.js +102 -0
- package/dist/schemas.js.map +1 -0
- package/package.json +92 -0
- package/src/bootstrap/index.ts +15 -0
- package/src/bootstrap/seed.descriptor.ts +24 -0
- package/src/bootstrap/seed.impl-shape.ts +5 -0
- package/src/bootstrap/seed.kind.ts +26 -0
- package/src/bootstrap/seed.runner.ts +87 -0
- package/src/credentials/resolve.ts +205 -0
- package/src/deployment.ts +57 -0
- package/src/index.ts +149 -0
- package/src/infra.plugin.ts +54 -0
- package/src/kinds/alerts.kind.ts +164 -0
- package/src/kinds/artifact.kind.ts +96 -0
- package/src/kinds/cache.kind.ts +104 -0
- package/src/kinds/database.kind.ts +120 -0
- package/src/kinds/discovery.ts +26 -0
- package/src/kinds/git-hosting.kind.ts +100 -0
- package/src/kinds/index.ts +139 -0
- package/src/kinds/logs.kind.ts +104 -0
- package/src/kinds/object-storage.kind.ts +101 -0
- package/src/kinds/observability.kind.ts +178 -0
- package/src/kinds/package-registry.kind.ts +95 -0
- package/src/kinds/queue.kind.ts +102 -0
- package/src/kinds/rum.kind.ts +135 -0
- package/src/kinds/sandbox.kind.ts +115 -0
- package/src/kinds/web-app.kind.ts +103 -0
- package/src/kinds/worker.kind.ts +203 -0
- package/src/schemas.ts +127 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
/**
|
|
3
|
+
* Deployment providers with active adapter implementations.
|
|
4
|
+
* Only providers backed by adapter packages are enumerated.
|
|
5
|
+
* - cloudflare-workers: via infra-cloudflare
|
|
6
|
+
* - digitalocean-app: via infra-doks
|
|
7
|
+
*/
|
|
8
|
+
export declare const deploymentProviderSchema: z.ZodEnum<{
|
|
9
|
+
"cloudflare-workers": "cloudflare-workers";
|
|
10
|
+
"digitalocean-app": "digitalocean-app";
|
|
11
|
+
}>;
|
|
12
|
+
export type DeploymentProvider = z.infer<typeof deploymentProviderSchema>;
|
|
13
|
+
export declare const appRuntimeSchema: z.ZodEnum<{
|
|
14
|
+
edge: "edge";
|
|
15
|
+
worker: "worker";
|
|
16
|
+
node: "node";
|
|
17
|
+
browser: "browser";
|
|
18
|
+
}>;
|
|
19
|
+
export type AppRuntime = z.infer<typeof appRuntimeSchema>;
|
|
20
|
+
export declare const deploymentOriginSchema: z.ZodObject<{
|
|
21
|
+
hostname: z.ZodString;
|
|
22
|
+
origin: z.ZodString;
|
|
23
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
24
|
+
primary: "primary";
|
|
25
|
+
redirect: "redirect";
|
|
26
|
+
preview: "preview";
|
|
27
|
+
internal: "internal";
|
|
28
|
+
}>>;
|
|
29
|
+
description: z.ZodOptional<z.ZodString>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
export type DeploymentOrigin = z.infer<typeof deploymentOriginSchema>;
|
|
32
|
+
export declare const deploymentBuildSchema: z.ZodObject<{
|
|
33
|
+
workspaceRootDir: z.ZodDefault<z.ZodString>;
|
|
34
|
+
appDir: z.ZodString;
|
|
35
|
+
installCommand: z.ZodOptional<z.ZodString>;
|
|
36
|
+
buildCommand: z.ZodString;
|
|
37
|
+
outputDir: z.ZodString;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
export type DeploymentBuild = z.infer<typeof deploymentBuildSchema>;
|
|
40
|
+
export declare const deploymentEnvRequirementSchema: z.ZodObject<{
|
|
41
|
+
name: z.ZodString;
|
|
42
|
+
public: z.ZodOptional<z.ZodBoolean>;
|
|
43
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
value: z.ZodOptional<z.ZodString>;
|
|
45
|
+
secret: z.ZodOptional<z.ZodBoolean>;
|
|
46
|
+
description: z.ZodOptional<z.ZodString>;
|
|
47
|
+
storeKey: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
export type DeploymentEnvRequirement = z.infer<typeof deploymentEnvRequirementSchema>;
|
|
50
|
+
export declare const deploymentDependencySchema: z.ZodObject<{
|
|
51
|
+
appId: z.ZodString;
|
|
52
|
+
reason: z.ZodString;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
export type DeploymentDependency = z.infer<typeof deploymentDependencySchema>;
|
|
55
|
+
export declare const deploymentUpstreamSchema: z.ZodObject<{
|
|
56
|
+
name: z.ZodString;
|
|
57
|
+
origin: z.ZodString;
|
|
58
|
+
purpose: z.ZodString;
|
|
59
|
+
originEnvVar: z.ZodOptional<z.ZodString>;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export type DeploymentUpstream = z.infer<typeof deploymentUpstreamSchema>;
|
|
62
|
+
export declare const appDeploymentSchema: z.ZodObject<{
|
|
63
|
+
appId: z.ZodString;
|
|
64
|
+
appName: z.ZodString;
|
|
65
|
+
provider: z.ZodEnum<{
|
|
66
|
+
"cloudflare-workers": "cloudflare-workers";
|
|
67
|
+
"digitalocean-app": "digitalocean-app";
|
|
68
|
+
}>;
|
|
69
|
+
runtime: z.ZodEnum<{
|
|
70
|
+
edge: "edge";
|
|
71
|
+
worker: "worker";
|
|
72
|
+
node: "node";
|
|
73
|
+
browser: "browser";
|
|
74
|
+
}>;
|
|
75
|
+
build: z.ZodObject<{
|
|
76
|
+
workspaceRootDir: z.ZodDefault<z.ZodString>;
|
|
77
|
+
appDir: z.ZodString;
|
|
78
|
+
installCommand: z.ZodOptional<z.ZodString>;
|
|
79
|
+
buildCommand: z.ZodString;
|
|
80
|
+
outputDir: z.ZodString;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
origins: z.ZodArray<z.ZodObject<{
|
|
83
|
+
hostname: z.ZodString;
|
|
84
|
+
origin: z.ZodString;
|
|
85
|
+
kind: z.ZodDefault<z.ZodEnum<{
|
|
86
|
+
primary: "primary";
|
|
87
|
+
redirect: "redirect";
|
|
88
|
+
preview: "preview";
|
|
89
|
+
internal: "internal";
|
|
90
|
+
}>>;
|
|
91
|
+
description: z.ZodOptional<z.ZodString>;
|
|
92
|
+
}, z.core.$strip>>;
|
|
93
|
+
env: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
94
|
+
name: z.ZodString;
|
|
95
|
+
public: z.ZodOptional<z.ZodBoolean>;
|
|
96
|
+
required: z.ZodOptional<z.ZodBoolean>;
|
|
97
|
+
value: z.ZodOptional<z.ZodString>;
|
|
98
|
+
secret: z.ZodOptional<z.ZodBoolean>;
|
|
99
|
+
description: z.ZodOptional<z.ZodString>;
|
|
100
|
+
storeKey: z.ZodOptional<z.ZodString>;
|
|
101
|
+
}, z.core.$strip>>>;
|
|
102
|
+
dependsOn: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
103
|
+
appId: z.ZodString;
|
|
104
|
+
reason: z.ZodString;
|
|
105
|
+
}, z.core.$strip>>>;
|
|
106
|
+
upstreams: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
107
|
+
name: z.ZodString;
|
|
108
|
+
origin: z.ZodString;
|
|
109
|
+
purpose: z.ZodString;
|
|
110
|
+
originEnvVar: z.ZodOptional<z.ZodString>;
|
|
111
|
+
}, z.core.$strip>>>;
|
|
112
|
+
tags: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
113
|
+
kvNamespaces: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
114
|
+
binding: z.ZodString;
|
|
115
|
+
id: z.ZodString;
|
|
116
|
+
preview_id: z.ZodOptional<z.ZodString>;
|
|
117
|
+
}, z.core.$strip>>>;
|
|
118
|
+
preDeployCommands: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
119
|
+
command: z.ZodString;
|
|
120
|
+
description: z.ZodOptional<z.ZodString>;
|
|
121
|
+
}, z.core.$strip>>>;
|
|
122
|
+
}, z.core.$strip>;
|
|
123
|
+
export type AppDeploymentInput = z.input<typeof appDeploymentSchema>;
|
|
124
|
+
export type AppDeployment = z.infer<typeof appDeploymentSchema>;
|
|
125
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;;EAGnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAW1E,eAAO,MAAM,gBAAgB;;;;;EAAgD,CAAC;AAC9E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,sBAAsB;;;;;;;;;;iBAKjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB;;;;;;iBAMhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,8BAA8B;;;;;;;;iBAazC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,eAAO,MAAM,0BAA0B;;;iBAGrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,eAAO,MAAM,wBAAwB;;;;;iBAQnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA+C9B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACrE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
package/dist/schemas.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
/**
|
|
3
|
+
* Deployment providers with active adapter implementations.
|
|
4
|
+
* Only providers backed by adapter packages are enumerated.
|
|
5
|
+
* - cloudflare-workers: via infra-cloudflare
|
|
6
|
+
* - digitalocean-app: via infra-doks
|
|
7
|
+
*/
|
|
8
|
+
export const deploymentProviderSchema = z.enum([
|
|
9
|
+
'cloudflare-workers',
|
|
10
|
+
'digitalocean-app'
|
|
11
|
+
]);
|
|
12
|
+
/**
|
|
13
|
+
* Map of valid provider × runtime combinations.
|
|
14
|
+
* Used for cross-validation in appDeploymentSchema refinement.
|
|
15
|
+
*/
|
|
16
|
+
const VALID_PROVIDER_RUNTIME_MATRIX = {
|
|
17
|
+
'cloudflare-workers': ['edge', 'worker'],
|
|
18
|
+
'digitalocean-app': ['node', 'worker']
|
|
19
|
+
};
|
|
20
|
+
export const appRuntimeSchema = z.enum(['edge', 'node', 'worker', 'browser']);
|
|
21
|
+
export const deploymentOriginSchema = z.object({
|
|
22
|
+
hostname: z.string().min(1),
|
|
23
|
+
origin: z.string().url(),
|
|
24
|
+
kind: z.enum(['primary', 'redirect', 'preview', 'internal']).default('primary'),
|
|
25
|
+
description: z.string().optional()
|
|
26
|
+
});
|
|
27
|
+
export const deploymentBuildSchema = z.object({
|
|
28
|
+
workspaceRootDir: z.string().min(1).default('.'),
|
|
29
|
+
appDir: z.string().min(1),
|
|
30
|
+
installCommand: z.string().min(1).optional(),
|
|
31
|
+
buildCommand: z.string().min(1),
|
|
32
|
+
outputDir: z.string().min(1)
|
|
33
|
+
});
|
|
34
|
+
export const deploymentEnvRequirementSchema = z.object({
|
|
35
|
+
name: z.string().regex(/^[_A-Z0-9]+$/),
|
|
36
|
+
public: z.boolean().optional(),
|
|
37
|
+
required: z.boolean().optional(),
|
|
38
|
+
value: z.string().optional(),
|
|
39
|
+
secret: z.boolean().optional(),
|
|
40
|
+
description: z.string().optional(),
|
|
41
|
+
/**
|
|
42
|
+
* Override the secret name in the remote store. Defaults to `name` when omitted.
|
|
43
|
+
* Only meaningful when `secret: true` and the deployment targets a shared
|
|
44
|
+
* Secrets Store binding (e.g. `secrets_store_secrets[].secret_name`).
|
|
45
|
+
*/
|
|
46
|
+
storeKey: z.string().min(1).optional()
|
|
47
|
+
});
|
|
48
|
+
export const deploymentDependencySchema = z.object({
|
|
49
|
+
appId: z.string().min(1),
|
|
50
|
+
reason: z.string().min(1)
|
|
51
|
+
});
|
|
52
|
+
export const deploymentUpstreamSchema = z.object({
|
|
53
|
+
name: z.string().min(1),
|
|
54
|
+
origin: z.string().url(),
|
|
55
|
+
purpose: z.string().min(1),
|
|
56
|
+
originEnvVar: z
|
|
57
|
+
.string()
|
|
58
|
+
.regex(/^[_A-Z0-9]+$/)
|
|
59
|
+
.optional()
|
|
60
|
+
});
|
|
61
|
+
export const appDeploymentSchema = z
|
|
62
|
+
.object({
|
|
63
|
+
appId: z.string().min(1),
|
|
64
|
+
appName: z.string().min(1),
|
|
65
|
+
provider: deploymentProviderSchema,
|
|
66
|
+
runtime: appRuntimeSchema,
|
|
67
|
+
build: deploymentBuildSchema,
|
|
68
|
+
origins: z.array(deploymentOriginSchema).min(1),
|
|
69
|
+
env: z.array(deploymentEnvRequirementSchema).default([]),
|
|
70
|
+
dependsOn: z.array(deploymentDependencySchema).default([]),
|
|
71
|
+
upstreams: z.array(deploymentUpstreamSchema).default([]),
|
|
72
|
+
tags: z.array(z.string()).default([]),
|
|
73
|
+
/** Cloudflare KV namespace bindings (provider-specific extension). */
|
|
74
|
+
kvNamespaces: z
|
|
75
|
+
.array(z.object({
|
|
76
|
+
binding: z.string().min(1),
|
|
77
|
+
id: z.string().min(1),
|
|
78
|
+
preview_id: z.string().optional()
|
|
79
|
+
}))
|
|
80
|
+
.default([]),
|
|
81
|
+
/**
|
|
82
|
+
* One-off commands to run before the Worker deploy (e.g. DB migrations,
|
|
83
|
+
* seed scripts, cache warmers). Executed sequentially in the appDir.
|
|
84
|
+
*/
|
|
85
|
+
preDeployCommands: z
|
|
86
|
+
.array(z.object({
|
|
87
|
+
command: z.string().min(1),
|
|
88
|
+
description: z.string().optional()
|
|
89
|
+
}))
|
|
90
|
+
.default([])
|
|
91
|
+
})
|
|
92
|
+
.refine((data) => {
|
|
93
|
+
const validRuntimes = VALID_PROVIDER_RUNTIME_MATRIX[data.provider];
|
|
94
|
+
return validRuntimes.includes(data.runtime);
|
|
95
|
+
}, {
|
|
96
|
+
error: (issue) => {
|
|
97
|
+
const data = issue.input;
|
|
98
|
+
return `Invalid runtime "${data.runtime}" for provider "${data.provider}". Valid runtimes: ${VALID_PROVIDER_RUNTIME_MATRIX[data.provider].join(', ')}`;
|
|
99
|
+
},
|
|
100
|
+
path: ['runtime']
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibesdotdev/infra-core",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"bun": "./src/index.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./deployment": {
|
|
15
|
+
"types": "./dist/deployment.d.ts",
|
|
16
|
+
"bun": "./src/deployment.ts",
|
|
17
|
+
"import": "./dist/deployment.js",
|
|
18
|
+
"default": "./dist/deployment.js"
|
|
19
|
+
},
|
|
20
|
+
"./schemas": {
|
|
21
|
+
"types": "./dist/schemas.d.ts",
|
|
22
|
+
"bun": "./src/schemas.ts",
|
|
23
|
+
"import": "./dist/schemas.js",
|
|
24
|
+
"default": "./dist/schemas.js"
|
|
25
|
+
},
|
|
26
|
+
"./kinds": {
|
|
27
|
+
"types": "./dist/kinds/index.d.ts",
|
|
28
|
+
"bun": "./src/kinds/index.ts",
|
|
29
|
+
"import": "./dist/kinds/index.js",
|
|
30
|
+
"default": "./dist/kinds/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./plugin": {
|
|
33
|
+
"types": "./dist/infra.plugin.d.ts",
|
|
34
|
+
"bun": "./src/infra.plugin.ts",
|
|
35
|
+
"import": "./dist/infra.plugin.js",
|
|
36
|
+
"default": "./dist/infra.plugin.js"
|
|
37
|
+
},
|
|
38
|
+
"./bootstrap": {
|
|
39
|
+
"types": "./dist/bootstrap/index.d.ts",
|
|
40
|
+
"bun": "./src/bootstrap/index.ts",
|
|
41
|
+
"import": "./dist/bootstrap/index.js",
|
|
42
|
+
"default": "./dist/bootstrap/index.js"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"publishConfig": {
|
|
46
|
+
"registry": "https://registry.npmjs.org",
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/vibesdotdev/monorepo.git",
|
|
52
|
+
"directory": "packages/infra-core"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@vibesdotdev/logging": "0.0.1",
|
|
56
|
+
"@vibesdotdev/runtime": "0.0.1",
|
|
57
|
+
"zod": "^4.3.6"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"test": "bun test",
|
|
61
|
+
"check": "bun --bun tsc -p tsconfig.json --noEmit",
|
|
62
|
+
"build": "tsc -p tsconfig.json"
|
|
63
|
+
},
|
|
64
|
+
"license": "MIT",
|
|
65
|
+
"files": [
|
|
66
|
+
"dist",
|
|
67
|
+
"src",
|
|
68
|
+
"bin",
|
|
69
|
+
"README.md",
|
|
70
|
+
"SPEC.md",
|
|
71
|
+
"LICENSE",
|
|
72
|
+
"!src/**/__tests__/**",
|
|
73
|
+
"!src/**/__stubs__/**",
|
|
74
|
+
"!src/**/*.test.ts",
|
|
75
|
+
"!src/**/*.test.tsx",
|
|
76
|
+
"!src/**/*.spec.ts",
|
|
77
|
+
"!src/**/*.spec.tsx",
|
|
78
|
+
"!dist/**/__tests__/**",
|
|
79
|
+
"!dist/**/__stubs__/**",
|
|
80
|
+
"!dist/**/*.test.js",
|
|
81
|
+
"!dist/**/*.test.js.map",
|
|
82
|
+
"!dist/**/*.test.d.ts",
|
|
83
|
+
"!dist/**/*.test.d.ts.map",
|
|
84
|
+
"!dist/**/*.spec.js",
|
|
85
|
+
"!dist/**/*.spec.js.map",
|
|
86
|
+
"!dist/**/*.spec.d.ts",
|
|
87
|
+
"!dist/**/*.spec.d.ts.map"
|
|
88
|
+
],
|
|
89
|
+
"vibes": {
|
|
90
|
+
"visibility": "public-framework"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { bootstrapSeedKind } from './seed.kind.ts';
|
|
2
|
+
export {
|
|
3
|
+
bootstrapSeedConditionSchema,
|
|
4
|
+
bootstrapSeedDescriptorSchema,
|
|
5
|
+
bootstrapSeedModeSchema,
|
|
6
|
+
type BootstrapSeedCondition,
|
|
7
|
+
type BootstrapSeedDescriptor,
|
|
8
|
+
type BootstrapSeedMode
|
|
9
|
+
} from './seed.descriptor.ts';
|
|
10
|
+
export type { BootstrapSeedImpl } from './seed.impl-shape.ts';
|
|
11
|
+
export {
|
|
12
|
+
runBootstrapSeeds,
|
|
13
|
+
type BootstrapSeedRunOptions,
|
|
14
|
+
type BootstrapSeedRunResult
|
|
15
|
+
} from './seed.runner.ts';
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
export const bootstrapSeedModeSchema = z.enum(['cold-start', 'deploy']);
|
|
4
|
+
export type BootstrapSeedMode = z.infer<typeof bootstrapSeedModeSchema>;
|
|
5
|
+
|
|
6
|
+
export const bootstrapSeedConditionSchema = z.discriminatedUnion('kind', [
|
|
7
|
+
z.object({ kind: z.literal('always') }),
|
|
8
|
+
z.object({
|
|
9
|
+
kind: z.literal('env-keys-present'),
|
|
10
|
+
keys: z.array(z.string().min(1)).min(1)
|
|
11
|
+
})
|
|
12
|
+
]);
|
|
13
|
+
export type BootstrapSeedCondition = z.infer<typeof bootstrapSeedConditionSchema>;
|
|
14
|
+
|
|
15
|
+
export const bootstrapSeedDescriptorSchema = z.object({
|
|
16
|
+
kind: z.literal('bootstrap/seed'),
|
|
17
|
+
id: z.string().min(1),
|
|
18
|
+
description: z.string().optional(),
|
|
19
|
+
executeOn: z.array(bootstrapSeedModeSchema).min(1),
|
|
20
|
+
condition: bootstrapSeedConditionSchema.optional(),
|
|
21
|
+
priority: z.number().int().optional()
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export type BootstrapSeedDescriptor = z.infer<typeof bootstrapSeedDescriptorSchema>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { RuntimeDescriptor, RuntimeKindDescriptor } from '@vibesdotdev/runtime/schemas/kind';
|
|
2
|
+
import {
|
|
3
|
+
bootstrapSeedDescriptorSchema,
|
|
4
|
+
type BootstrapSeedDescriptor
|
|
5
|
+
} from './seed.descriptor.ts';
|
|
6
|
+
import type { BootstrapSeedImpl } from './seed.impl-shape.ts';
|
|
7
|
+
|
|
8
|
+
class UnregisteredBootstrapSeed implements BootstrapSeedImpl {
|
|
9
|
+
constructor(_descriptor: RuntimeDescriptor) {}
|
|
10
|
+
async run(): Promise<void> {
|
|
11
|
+
// No-op when no impl loader is registered for this descriptor id.
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const bootstrapSeedKind: RuntimeKindDescriptor<
|
|
16
|
+
BootstrapSeedDescriptor,
|
|
17
|
+
BootstrapSeedImpl,
|
|
18
|
+
never
|
|
19
|
+
> = {
|
|
20
|
+
id: 'bootstrap/seed',
|
|
21
|
+
descriptorSchema: bootstrapSeedDescriptorSchema,
|
|
22
|
+
defaultImplementation: UnregisteredBootstrapSeed as unknown as new (
|
|
23
|
+
descriptor: RuntimeDescriptor
|
|
24
|
+
) => BootstrapSeedImpl,
|
|
25
|
+
contexts: []
|
|
26
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { VibesRuntime } from '@vibesdotdev/runtime';
|
|
2
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
3
|
+
import type {
|
|
4
|
+
BootstrapSeedCondition,
|
|
5
|
+
BootstrapSeedDescriptor,
|
|
6
|
+
BootstrapSeedMode
|
|
7
|
+
} from './seed.descriptor.ts';
|
|
8
|
+
import type { BootstrapSeedImpl } from './seed.impl-shape.ts';
|
|
9
|
+
|
|
10
|
+
const log = getLogger('infra.bootstrap.seed');
|
|
11
|
+
|
|
12
|
+
export interface BootstrapSeedRunResult {
|
|
13
|
+
ran: string[];
|
|
14
|
+
skipped: Array<{ id: string; reason: string }>;
|
|
15
|
+
failed: Array<{ id: string; error: string }>;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface BootstrapSeedRunOptions {
|
|
19
|
+
env: Record<string, string | undefined>;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export async function runBootstrapSeeds(
|
|
23
|
+
runtime: VibesRuntime,
|
|
24
|
+
mode: BootstrapSeedMode,
|
|
25
|
+
options: BootstrapSeedRunOptions
|
|
26
|
+
): Promise<BootstrapSeedRunResult> {
|
|
27
|
+
const allDescriptors = runtime
|
|
28
|
+
.assets('bootstrap/seed')
|
|
29
|
+
.descriptors() as unknown as readonly BootstrapSeedDescriptor[];
|
|
30
|
+
|
|
31
|
+
const result: BootstrapSeedRunResult = { ran: [], skipped: [], failed: [] };
|
|
32
|
+
const runnable: BootstrapSeedDescriptor[] = [];
|
|
33
|
+
|
|
34
|
+
for (const descriptor of allDescriptors) {
|
|
35
|
+
if (!descriptor.executeOn.includes(mode)) {
|
|
36
|
+
result.skipped.push({
|
|
37
|
+
id: descriptor.id,
|
|
38
|
+
reason: `mode ${mode} not in executeOn`
|
|
39
|
+
});
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (!evaluateCondition(descriptor.condition, options.env)) {
|
|
43
|
+
result.skipped.push({
|
|
44
|
+
id: descriptor.id,
|
|
45
|
+
reason: 'condition not met'
|
|
46
|
+
});
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
runnable.push(descriptor);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
runnable.sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
|
|
53
|
+
|
|
54
|
+
for (const descriptor of runnable) {
|
|
55
|
+
try {
|
|
56
|
+
const impl = (await runtime
|
|
57
|
+
.query('bootstrap/seed')
|
|
58
|
+
.withId(descriptor.id)
|
|
59
|
+
.resolve()) as BootstrapSeedImpl;
|
|
60
|
+
await impl.run(runtime, options.env);
|
|
61
|
+
result.ran.push(descriptor.id);
|
|
62
|
+
log.info('bootstrap seed completed', {
|
|
63
|
+
id: descriptor.id,
|
|
64
|
+
mode,
|
|
65
|
+
priority: descriptor.priority ?? 100
|
|
66
|
+
});
|
|
67
|
+
} catch (err) {
|
|
68
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
69
|
+
result.failed.push({ id: descriptor.id, error });
|
|
70
|
+
log.error('bootstrap seed failed', { id: descriptor.id, mode, error });
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function evaluateCondition(
|
|
78
|
+
condition: BootstrapSeedCondition | undefined,
|
|
79
|
+
env: Record<string, string | undefined>
|
|
80
|
+
): boolean {
|
|
81
|
+
if (!condition) return true;
|
|
82
|
+
if (condition.kind === 'always') return true;
|
|
83
|
+
if (condition.kind === 'env-keys-present') {
|
|
84
|
+
return condition.keys.every((key) => Boolean(env[key]));
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|