@kumori/kdsl 0.0.14 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build/deployment_spec.d.ts +21095 -0
- package/dist/build/deployment_spec.js +292 -0
- package/dist/build/deployment_spec.js.map +1 -0
- package/dist/build/helpers/builtin.d.ts +17 -0
- package/dist/build/helpers/builtin.js +82 -0
- package/dist/build/helpers/builtin.js.map +1 -0
- package/dist/build/helpers/component.d.ts +17 -0
- package/dist/build/helpers/component.js +212 -0
- package/dist/build/helpers/component.js.map +1 -0
- package/dist/build/helpers/connector.d.ts +13 -0
- package/dist/build/helpers/connector.js +190 -0
- package/dist/build/helpers/connector.js.map +1 -0
- package/dist/build/helpers/deployment.d.ts +326 -0
- package/dist/build/helpers/deployment.js +86 -0
- package/dist/build/helpers/deployment.js.map +1 -0
- package/dist/build/helpers/resource.d.ts +97 -0
- package/dist/build/helpers/resource.js +54 -0
- package/dist/build/helpers/resource.js.map +1 -0
- package/dist/build/helpers/service.d.ts +27 -0
- package/dist/build/helpers/service.js +199 -0
- package/dist/build/helpers/service.js.map +1 -0
- package/dist/build/helpers/utils.d.ts +22 -0
- package/dist/build/helpers/utils.js +55 -0
- package/dist/build/helpers/utils.js.map +1 -0
- package/dist/build/main.d.ts +17 -0
- package/dist/build/main.js +139 -0
- package/dist/build/main.js.map +1 -0
- package/dist/build/solution.d.ts +20 -0
- package/dist/build/solution.js +72 -0
- package/dist/build/solution.js.map +1 -0
- package/dist/check/main.d.ts +21 -0
- package/dist/check/main.js +99 -0
- package/dist/check/main.js.map +1 -0
- package/dist/clean/main.d.ts +11 -0
- package/dist/clean/main.js +26 -0
- package/dist/clean/main.js.map +1 -0
- package/dist/help/main.d.ts +13 -0
- package/dist/help/main.js +49 -0
- package/dist/help/main.js.map +1 -0
- package/dist/help/topic/build.d.ts +2 -0
- package/dist/help/topic/build.js +7 -0
- package/dist/help/topic/build.js.map +1 -0
- package/dist/help/topic/mod_dep.d.ts +2 -0
- package/dist/help/topic/mod_dep.js +8 -0
- package/dist/help/topic/mod_dep.js.map +1 -0
- package/dist/help/topic/mod_dl.d.ts +2 -0
- package/dist/help/topic/mod_dl.js +25 -0
- package/dist/help/topic/mod_dl.js.map +1 -0
- package/dist/index/create/main.d.ts +14 -0
- package/dist/index/create/main.js +264 -0
- package/dist/index/create/main.js.map +1 -0
- package/dist/index/main.d.ts +8 -0
- package/dist/index/main.js +17 -0
- package/dist/index/main.js.map +1 -0
- package/dist/lib/build.d.ts +42 -0
- package/dist/lib/build.js +28 -0
- package/dist/lib/build.js.map +1 -0
- package/dist/lib/check.d.ts +41 -0
- package/dist/lib/check.js +15 -0
- package/dist/lib/check.js.map +1 -0
- package/dist/lib/clean.d.ts +31 -0
- package/dist/lib/clean.js +1 -0
- package/dist/lib/clean.js.map +1 -0
- package/dist/lib/index-cmd.d.ts +54 -0
- package/dist/lib/index-cmd.js +57 -0
- package/dist/lib/index-cmd.js.map +1 -0
- package/dist/lib/index.d.ts +56 -0
- package/dist/lib/index.js +117 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/io/lib.kumori +5 -0
- package/dist/lib/kumori/builtin/httpinbound.h.kumori +27 -0
- package/dist/lib/kumori/builtin/tcpinbound.h.kumori +25 -0
- package/dist/lib/kumori/builtin.kumori +18 -0
- package/dist/lib/kumori/component.kumori +120 -0
- package/dist/lib/kumori/deployment.kumori +16 -0
- package/dist/lib/kumori/resource.kumori +25 -0
- package/dist/lib/kumori/service.kumori +49 -0
- package/dist/lib/kumori/shared.kumori +11 -0
- package/dist/lib/kumori/sized.kumori +25 -0
- package/dist/lib/logger.d.ts +10 -0
- package/dist/lib/logger.js +23 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/mod.d.ts +156 -0
- package/dist/lib/mod.js +70 -0
- package/dist/lib/mod.js.map +1 -0
- package/dist/lib/registry.d.ts +61 -0
- package/dist/lib/registry.js +1 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/sized.kumori +8 -0
- package/dist/lib/std.kumori +8 -0
- package/dist/lib/strconv/lib.kumori +11 -0
- package/dist/lib/types.d.ts +26 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +35 -0
- package/dist/main.js.map +1 -0
- package/dist/mod/checksum/main.d.ts +11 -0
- package/dist/mod/checksum/main.js +33 -0
- package/dist/mod/checksum/main.js.map +1 -0
- package/dist/mod/dependency/main.d.ts +19 -0
- package/dist/mod/dependency/main.js +156 -0
- package/dist/mod/dependency/main.js.map +1 -0
- package/dist/mod/download/functions.d.ts +53 -0
- package/dist/mod/download/functions.js +235 -0
- package/dist/mod/download/functions.js.map +1 -0
- package/dist/mod/download/main.d.ts +26 -0
- package/dist/mod/download/main.js +89 -0
- package/dist/mod/download/main.js.map +1 -0
- package/dist/mod/init/main.d.ts +13 -0
- package/dist/mod/init/main.js +66 -0
- package/dist/mod/init/main.js.map +1 -0
- package/dist/mod/jsonschema/gen/main.d.ts +11 -0
- package/dist/mod/jsonschema/gen/main.js +281 -0
- package/dist/mod/jsonschema/gen/main.js.map +1 -0
- package/dist/mod/jsonschema/get/kdslschema.d.ts +28 -0
- package/dist/mod/jsonschema/get/kdslschema.js +3 -0
- package/dist/mod/jsonschema/get/kdslschema.js.map +1 -0
- package/dist/mod/jsonschema/get/main.d.ts +76 -0
- package/dist/mod/jsonschema/get/main.js +338 -0
- package/dist/mod/jsonschema/get/main.js.map +1 -0
- package/dist/mod/jsonschema/main.d.ts +8 -0
- package/dist/mod/jsonschema/main.js +20 -0
- package/dist/mod/jsonschema/main.js.map +1 -0
- package/dist/mod/main.d.ts +8 -0
- package/dist/mod/main.js +27 -0
- package/dist/mod/main.js.map +1 -0
- package/dist/mod/update/main.d.ts +17 -0
- package/dist/mod/update/main.js +69 -0
- package/dist/mod/update/main.js.map +1 -0
- package/dist/registry/add.d.ts +15 -0
- package/dist/registry/add.js +53 -0
- package/dist/registry/add.js.map +1 -0
- package/dist/registry/list.d.ts +15 -0
- package/dist/registry/list.js +29 -0
- package/dist/registry/list.js.map +1 -0
- package/dist/registry/main.d.ts +8 -0
- package/dist/registry/main.js +21 -0
- package/dist/registry/main.js.map +1 -0
- package/dist/registry/remove.d.ts +15 -0
- package/dist/registry/remove.js +34 -0
- package/dist/registry/remove.js.map +1 -0
- package/dist/util/err-format.d.ts +2 -0
- package/dist/util/err-format.js +11 -0
- package/dist/util/err-format.js.map +1 -0
- package/dist/util/err-handler.d.ts +3 -0
- package/dist/util/err-handler.js +11 -0
- package/dist/util/err-handler.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.js +2 -0
- package/dist/util.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/out/lib/build.cjs +29 -0
- package/out/lib/check.cjs +16 -0
- package/out/lib/clean.cjs +2 -0
- package/out/lib/index-cmd.cjs +58 -0
- package/out/lib/index.cjs +118 -0
- package/out/lib/mod.cjs +71 -0
- package/out/lib/registry.cjs +2 -0
- package/out/main.cjs +172 -172
- package/package.json +50 -6
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Resource } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/resource.js";
|
|
2
|
+
/**
|
|
3
|
+
* The Kumori Service Model is composed by several resource types.
|
|
4
|
+
* This function converts each resource to its solution JSON representation.
|
|
5
|
+
* @param resource
|
|
6
|
+
*/
|
|
7
|
+
export declare function ResourceToSolutionJSON(resource: Resource): {
|
|
8
|
+
readonly volume: {
|
|
9
|
+
readonly size: number;
|
|
10
|
+
readonly unit: "k" | "m" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
|
|
11
|
+
readonly kind: "storage";
|
|
12
|
+
readonly type?: undefined;
|
|
13
|
+
};
|
|
14
|
+
readonly ca?: undefined;
|
|
15
|
+
readonly certificate?: undefined;
|
|
16
|
+
readonly secret?: undefined;
|
|
17
|
+
readonly domain?: undefined;
|
|
18
|
+
readonly port?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
readonly volume: string;
|
|
21
|
+
readonly ca?: undefined;
|
|
22
|
+
readonly certificate?: undefined;
|
|
23
|
+
readonly secret?: undefined;
|
|
24
|
+
readonly domain?: undefined;
|
|
25
|
+
readonly port?: undefined;
|
|
26
|
+
} | {
|
|
27
|
+
readonly volume: {
|
|
28
|
+
readonly size: number;
|
|
29
|
+
readonly unit: "k" | "m" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
|
|
30
|
+
readonly kind: "storage";
|
|
31
|
+
readonly type: "volatile";
|
|
32
|
+
};
|
|
33
|
+
readonly ca?: undefined;
|
|
34
|
+
readonly certificate?: undefined;
|
|
35
|
+
readonly secret?: undefined;
|
|
36
|
+
readonly domain?: undefined;
|
|
37
|
+
readonly port?: undefined;
|
|
38
|
+
} | {
|
|
39
|
+
readonly volume: {
|
|
40
|
+
readonly size: number;
|
|
41
|
+
readonly unit: "k" | "m" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
|
|
42
|
+
readonly kind: "storage";
|
|
43
|
+
readonly type: "persistent";
|
|
44
|
+
};
|
|
45
|
+
readonly ca?: undefined;
|
|
46
|
+
readonly certificate?: undefined;
|
|
47
|
+
readonly secret?: undefined;
|
|
48
|
+
readonly domain?: undefined;
|
|
49
|
+
readonly port?: undefined;
|
|
50
|
+
} | {
|
|
51
|
+
readonly volume: {
|
|
52
|
+
readonly size: number;
|
|
53
|
+
readonly unit: "k" | "m" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
|
|
54
|
+
readonly kind: "storage";
|
|
55
|
+
readonly type: "nonreplicated";
|
|
56
|
+
};
|
|
57
|
+
readonly ca?: undefined;
|
|
58
|
+
readonly certificate?: undefined;
|
|
59
|
+
readonly secret?: undefined;
|
|
60
|
+
readonly domain?: undefined;
|
|
61
|
+
readonly port?: undefined;
|
|
62
|
+
} | {
|
|
63
|
+
readonly ca: string;
|
|
64
|
+
readonly volume?: undefined;
|
|
65
|
+
readonly certificate?: undefined;
|
|
66
|
+
readonly secret?: undefined;
|
|
67
|
+
readonly domain?: undefined;
|
|
68
|
+
readonly port?: undefined;
|
|
69
|
+
} | {
|
|
70
|
+
readonly certificate: string;
|
|
71
|
+
readonly volume?: undefined;
|
|
72
|
+
readonly ca?: undefined;
|
|
73
|
+
readonly secret?: undefined;
|
|
74
|
+
readonly domain?: undefined;
|
|
75
|
+
readonly port?: undefined;
|
|
76
|
+
} | {
|
|
77
|
+
readonly secret: string;
|
|
78
|
+
readonly volume?: undefined;
|
|
79
|
+
readonly ca?: undefined;
|
|
80
|
+
readonly certificate?: undefined;
|
|
81
|
+
readonly domain?: undefined;
|
|
82
|
+
readonly port?: undefined;
|
|
83
|
+
} | {
|
|
84
|
+
readonly domain: string;
|
|
85
|
+
readonly volume?: undefined;
|
|
86
|
+
readonly ca?: undefined;
|
|
87
|
+
readonly certificate?: undefined;
|
|
88
|
+
readonly secret?: undefined;
|
|
89
|
+
readonly port?: undefined;
|
|
90
|
+
} | {
|
|
91
|
+
readonly port: string;
|
|
92
|
+
readonly volume?: undefined;
|
|
93
|
+
readonly ca?: undefined;
|
|
94
|
+
readonly certificate?: undefined;
|
|
95
|
+
readonly secret?: undefined;
|
|
96
|
+
readonly domain?: undefined;
|
|
97
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { EphemeralName, Ephemeral, PersistentName, Persistent, RegisteredName, Registered, VolatileName, Volatile, PersistedName, Persisted, NonReplicatedName, NonReplicated, CAName, CA, CertificateName, SecretName, Secret, DomainName, PortName, Port, Domain, Certificate } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/resource.js";
|
|
2
|
+
/**
|
|
3
|
+
* The Kumori Service Model is composed by several resource types.
|
|
4
|
+
* This function converts each resource to its solution JSON representation.
|
|
5
|
+
* @param resource
|
|
6
|
+
*/
|
|
7
|
+
export function ResourceToSolutionJSON(resource) {
|
|
8
|
+
if (resource.$type === EphemeralName) {
|
|
9
|
+
const res = Ephemeral.parse(resource);
|
|
10
|
+
return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage" } };
|
|
11
|
+
}
|
|
12
|
+
if (resource.$type === PersistentName) {
|
|
13
|
+
const res = Persistent.parse(resource);
|
|
14
|
+
return { volume: res.value };
|
|
15
|
+
}
|
|
16
|
+
if (resource.$type === RegisteredName) {
|
|
17
|
+
const res = Registered.parse(resource);
|
|
18
|
+
return { volume: res.value };
|
|
19
|
+
}
|
|
20
|
+
if (resource.$type === VolatileName) {
|
|
21
|
+
const res = Volatile.parse(resource);
|
|
22
|
+
return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "volatile" } };
|
|
23
|
+
}
|
|
24
|
+
if (resource.$type === PersistedName) {
|
|
25
|
+
const res = Persisted.parse(resource);
|
|
26
|
+
return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "persistent" } };
|
|
27
|
+
}
|
|
28
|
+
if (resource.$type === NonReplicatedName) {
|
|
29
|
+
const res = NonReplicated.parse(resource);
|
|
30
|
+
return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "nonreplicated" } };
|
|
31
|
+
}
|
|
32
|
+
if (resource.$type === CAName) {
|
|
33
|
+
const res = CA.parse(resource);
|
|
34
|
+
return { ca: res.value };
|
|
35
|
+
}
|
|
36
|
+
if (resource.$type === CertificateName) {
|
|
37
|
+
const res = Certificate.parse(resource);
|
|
38
|
+
return { certificate: res.value };
|
|
39
|
+
}
|
|
40
|
+
if (resource.$type === SecretName) {
|
|
41
|
+
const res = Secret.parse(resource);
|
|
42
|
+
return { secret: res.value };
|
|
43
|
+
}
|
|
44
|
+
if (resource.$type === DomainName) {
|
|
45
|
+
const res = Domain.parse(resource);
|
|
46
|
+
return { domain: res.value };
|
|
47
|
+
}
|
|
48
|
+
if (resource.$type === PortName) {
|
|
49
|
+
const res = Port.parse(resource);
|
|
50
|
+
return { port: res.value };
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`unknown resource type '${resource.$type}'`);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/build/helpers/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Service, Role } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js";
|
|
2
|
+
import { Maybe } from "@kumori/kdsl-lsp/util/maybe.js";
|
|
3
|
+
import { ServiceArtifact, V3DeploymentSpec, Role as RoleJSON } from "../deployment_spec.js";
|
|
4
|
+
import { SolutionJSONContext } from "./deployment.js";
|
|
5
|
+
/**
|
|
6
|
+
* Converts a service definition into the solution JSON format.
|
|
7
|
+
* @param ctx The solution JSON context.
|
|
8
|
+
* @param service The service to convert.
|
|
9
|
+
* @returns The service artifact representation of the service.
|
|
10
|
+
*/
|
|
11
|
+
export declare function ServiceToSolutionJSON(ctx: SolutionJSONContext, service: Service): ServiceArtifact;
|
|
12
|
+
/**
|
|
13
|
+
* Converts a service definition into the V3 deployment spec format.
|
|
14
|
+
* @param ctx The solution JSON context.
|
|
15
|
+
* @param service The service to convert.
|
|
16
|
+
* @returns The V3 deployment spec representation of the service.
|
|
17
|
+
*/
|
|
18
|
+
export declare function ServiceV3DeploymentToSolutionJson(ctx: SolutionJSONContext, service: Service): V3DeploymentSpec;
|
|
19
|
+
/**
|
|
20
|
+
* Converts a service role definition into the solution JSON format.
|
|
21
|
+
* @param ctx The solution JSON context.
|
|
22
|
+
* @param name The name of the role.
|
|
23
|
+
* @param role The role to convert.
|
|
24
|
+
* @param parent The parent service artifact.
|
|
25
|
+
* @returns The role JSON representation of the role.
|
|
26
|
+
*/
|
|
27
|
+
export declare function ServiceRoleToSolutionJSON(ctx: SolutionJSONContext, name: string, role: Role, parent: ServiceArtifact): Maybe<RoleJSON>;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { Maybe, None, Some } from "@kumori/kdsl-lsp/util/maybe.js";
|
|
2
|
+
import { AddDeployment, CtxId, CtxParentId, WithPath, isComponent, isService } from "./deployment.js";
|
|
3
|
+
import { ComponentToSolutionJSON } from "./component.js";
|
|
4
|
+
import { BuiltinV3DeploymentToSolutionJson } from "./builtin.js";
|
|
5
|
+
import { ResourceToSolutionJSON } from "./resource.js";
|
|
6
|
+
import { ReferenceUpdater } from "./utils.js";
|
|
7
|
+
import { ServiceConnectionToSolutionJSON } from "./connector.js";
|
|
8
|
+
/**
|
|
9
|
+
* Converts a service definition into the solution JSON format.
|
|
10
|
+
* @param ctx The solution JSON context.
|
|
11
|
+
* @param service The service to convert.
|
|
12
|
+
* @returns The service artifact representation of the service.
|
|
13
|
+
*/
|
|
14
|
+
export function ServiceToSolutionJSON(ctx, service) {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
16
|
+
const ref = {
|
|
17
|
+
version: [0, 0, 0],
|
|
18
|
+
kind: "service",
|
|
19
|
+
domain: "unknown",
|
|
20
|
+
module: "unknown",
|
|
21
|
+
name: "unknown",
|
|
22
|
+
};
|
|
23
|
+
const mod = ctx.svcs.shared.references.KumoriModules;
|
|
24
|
+
const modifiers = ReferenceUpdater(mod, ctx.nodes.get(service));
|
|
25
|
+
for (const m of modifiers) {
|
|
26
|
+
m(ref);
|
|
27
|
+
}
|
|
28
|
+
const svc = {
|
|
29
|
+
spec: [1, 0],
|
|
30
|
+
ref,
|
|
31
|
+
description: {
|
|
32
|
+
builtin: false,
|
|
33
|
+
config: {
|
|
34
|
+
resilience: 0,
|
|
35
|
+
scale: {
|
|
36
|
+
detail: Object.fromEntries(Object.entries((_a = service.role) !== null && _a !== void 0 ? _a : {})
|
|
37
|
+
.map(([roleName]) => [roleName, { hsize: 1 }]))
|
|
38
|
+
},
|
|
39
|
+
parameter: (_b = service === null || service === void 0 ? void 0 : service.config) !== null && _b !== void 0 ? _b : {},
|
|
40
|
+
resource: Object.fromEntries(Object.entries((_c = service.resource) !== null && _c !== void 0 ? _c : {})
|
|
41
|
+
.map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
|
|
42
|
+
},
|
|
43
|
+
role: {},
|
|
44
|
+
connector: Object.fromEntries(Object.entries((_d = service.connect) !== null && _d !== void 0 ? _d : {})
|
|
45
|
+
.map(([k, v]) => [k, ServiceConnectionToSolutionJSON(ctx, service, v)])),
|
|
46
|
+
srv: {
|
|
47
|
+
client: Object.fromEntries(Object.entries((_f = (_e = service.srv) === null || _e === void 0 ? void 0 : _e.client) !== null && _f !== void 0 ? _f : {})
|
|
48
|
+
.map(([k, v]) => [k, { protocol: v, inherited: false }])),
|
|
49
|
+
server: Object.fromEntries(Object.entries((_h = (_g = service.srv) === null || _g === void 0 ? void 0 : _g.server) !== null && _h !== void 0 ? _h : {}).map(([k, v]) => {
|
|
50
|
+
let value;
|
|
51
|
+
if (typeof v === "string") {
|
|
52
|
+
value = { port: 80, inherited: false, protocol: v, };
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
value = Object.assign(Object.assign({}, v), { inherited: false });
|
|
56
|
+
}
|
|
57
|
+
return [k, value];
|
|
58
|
+
})),
|
|
59
|
+
duplex: Object.fromEntries(Object.entries((_k = (_j = service.srv) === null || _j === void 0 ? void 0 : _j.duplex) !== null && _k !== void 0 ? _k : {}).map(([k, v]) => {
|
|
60
|
+
let value;
|
|
61
|
+
if (typeof v === "string") {
|
|
62
|
+
value = { port: 80, inherited: false, protocol: v, };
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
value = Object.assign(Object.assign({}, v), { inherited: false });
|
|
66
|
+
}
|
|
67
|
+
return [k, value];
|
|
68
|
+
})),
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
// NOTE: we call ServiceRoleToSolutionJSON after initializing the service
|
|
73
|
+
// artifact because the call may modify the parent service (svc)
|
|
74
|
+
svc.description.role = Object.fromEntries(Object.entries((_l = service.role) !== null && _l !== void 0 ? _l : {})
|
|
75
|
+
.map(([k, v]) => [k, ServiceRoleToSolutionJSON(ctx, k, v, svc)])
|
|
76
|
+
.filter(([, v]) => Maybe.isSome(v))
|
|
77
|
+
.map(([k, v]) => [k, v.value]));
|
|
78
|
+
return svc;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Converts a service definition into the V3 deployment spec format.
|
|
82
|
+
* @param ctx The solution JSON context.
|
|
83
|
+
* @param service The service to convert.
|
|
84
|
+
* @returns The V3 deployment spec representation of the service.
|
|
85
|
+
*/
|
|
86
|
+
export function ServiceV3DeploymentToSolutionJson(ctx, service) {
|
|
87
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
88
|
+
return {
|
|
89
|
+
name: CtxId(ctx),
|
|
90
|
+
up: CtxParentId(ctx),
|
|
91
|
+
meta: {},
|
|
92
|
+
config: {
|
|
93
|
+
resilience: 0,
|
|
94
|
+
scale: (_b = (_a = service.config) === null || _a === void 0 ? void 0 : _a.scale) !== null && _b !== void 0 ? _b : { hsize: (_c = service.config) === null || _c === void 0 ? void 0 : _c.scale },
|
|
95
|
+
parameter: (_e = (_d = service.config) === null || _d === void 0 ? void 0 : _d.parameter) !== null && _e !== void 0 ? _e : {},
|
|
96
|
+
resource: Object.fromEntries(Object.entries((_g = (_f = service.config) === null || _f === void 0 ? void 0 : _f.resource) !== null && _g !== void 0 ? _g : {})
|
|
97
|
+
.map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
|
|
98
|
+
},
|
|
99
|
+
artifact: ServiceToSolutionJSON(ctx, service)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Converts a service role definition into the solution JSON format.
|
|
104
|
+
* @param ctx The solution JSON context.
|
|
105
|
+
* @param name The name of the role.
|
|
106
|
+
* @param role The role to convert.
|
|
107
|
+
* @param parent The parent service artifact.
|
|
108
|
+
* @returns The role JSON representation of the role.
|
|
109
|
+
*/
|
|
110
|
+
export function ServiceRoleToSolutionJSON(ctx, name, role, parent) {
|
|
111
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
112
|
+
var _p, _q, _r, _s, _t;
|
|
113
|
+
if (isComponent(role.artifact)) {
|
|
114
|
+
return Some({
|
|
115
|
+
name,
|
|
116
|
+
meta: role.meta,
|
|
117
|
+
config: {
|
|
118
|
+
resilience: 0,
|
|
119
|
+
scale: { hsize: 1 },
|
|
120
|
+
parameter: (_a = role.artifact.config) !== null && _a !== void 0 ? _a : {},
|
|
121
|
+
resource: {},
|
|
122
|
+
},
|
|
123
|
+
artifact: ComponentToSolutionJSON(ctx, role.artifact),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
const artifact = role.artifact;
|
|
127
|
+
ctx = WithPath(ctx, name);
|
|
128
|
+
const DeploymentJSON = () => {
|
|
129
|
+
if (isService(artifact)) {
|
|
130
|
+
return ServiceV3DeploymentToSolutionJson(ctx, artifact);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
return BuiltinV3DeploymentToSolutionJson(ctx, artifact);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
AddDeployment(ctx, DeploymentJSON());
|
|
137
|
+
(_b = (_p = parent.description).srv) !== null && _b !== void 0 ? _b : (_p.srv = {});
|
|
138
|
+
(_c = (_q = parent.description.srv).server) !== null && _c !== void 0 ? _c : (_q.server = {});
|
|
139
|
+
(_d = (_r = parent.description.srv).client) !== null && _d !== void 0 ? _d : (_r.client = {});
|
|
140
|
+
for (const [, cnx] of Object.entries((_e = parent.description.connector) !== null && _e !== void 0 ? _e : {})) {
|
|
141
|
+
// Check for matching client references
|
|
142
|
+
for (const client of cnx.clients) {
|
|
143
|
+
if (client.role !== name) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const Client = Object.assign({}, client);
|
|
147
|
+
// parent inherits referenced connections
|
|
148
|
+
const inherited = `${client.role}.${client.channel}`;
|
|
149
|
+
const original = ((_g = (_f = artifact === null || artifact === void 0 ? void 0 : artifact.srv) === null || _f === void 0 ? void 0 : _f.client) !== null && _g !== void 0 ? _g : {})[client.channel];
|
|
150
|
+
parent.description.srv.server[inherited] = {
|
|
151
|
+
inherited: true,
|
|
152
|
+
protocol: client.channel == "inbound" ? "http" : original,
|
|
153
|
+
};
|
|
154
|
+
// redirect to inherited connections
|
|
155
|
+
client.role = "self";
|
|
156
|
+
client.channel = inherited;
|
|
157
|
+
// register links to new deployment
|
|
158
|
+
(_h = (_s = ctx.root).links) !== null && _h !== void 0 ? _h : (_s.links = []);
|
|
159
|
+
ctx.root.links.push({
|
|
160
|
+
meta: {},
|
|
161
|
+
s_d: CtxId(ctx),
|
|
162
|
+
s_c: Client.channel,
|
|
163
|
+
t_d: CtxParentId(ctx),
|
|
164
|
+
t_c: inherited,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
// Check for matching server references
|
|
168
|
+
for (const server of cnx.servers) {
|
|
169
|
+
for (const link of server.links) {
|
|
170
|
+
if (link.role === name) {
|
|
171
|
+
const inherited = `${link.role}.${link.channel}`;
|
|
172
|
+
let original = ((_k = (_j = artifact === null || artifact === void 0 ? void 0 : artifact.srv) === null || _j === void 0 ? void 0 : _j.server) !== null && _k !== void 0 ? _k : {})[link.channel];
|
|
173
|
+
// Try duplex channel
|
|
174
|
+
if (original === undefined) {
|
|
175
|
+
original = ((_m = (_l = artifact === null || artifact === void 0 ? void 0 : artifact.srv) === null || _l === void 0 ? void 0 : _l.duplex) !== null && _m !== void 0 ? _m : {})[link.channel];
|
|
176
|
+
}
|
|
177
|
+
parent.description.srv.client[inherited] = {
|
|
178
|
+
inherited: true,
|
|
179
|
+
protocol: typeof original === "string" ? original : original.protocol,
|
|
180
|
+
port: typeof original === "object" ? original.port : undefined
|
|
181
|
+
};
|
|
182
|
+
(_o = (_t = ctx.root).links) !== null && _o !== void 0 ? _o : (_t.links = []);
|
|
183
|
+
ctx.root.links.push({
|
|
184
|
+
meta: {},
|
|
185
|
+
s_d: CtxParentId(ctx),
|
|
186
|
+
s_c: inherited,
|
|
187
|
+
t_d: CtxId(ctx),
|
|
188
|
+
t_c: link.channel
|
|
189
|
+
});
|
|
190
|
+
// redirect to inherited connections
|
|
191
|
+
link.role = "self";
|
|
192
|
+
link.channel = inherited;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return None;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/build/helpers/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AstNode } from "langium";
|
|
2
|
+
import { Image, Reference } from "../deployment_spec.js";
|
|
3
|
+
import { KumoriModules } from "@kumori/kdsl-lsp/language/kumori-module.js";
|
|
4
|
+
/**
|
|
5
|
+
* Converts a OCI image string to a structured JSON object.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} image - The OCI image string in the format "docker.io/hashicorp/http-echo:latest".
|
|
8
|
+
* @returns {{tag: string, hub: {name: string}}} An object containing the tag and the hub information.
|
|
9
|
+
* @throws Will throw an error if the input string is not in the expected format.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const v = ComponentImageToSolutionJSON("docker.io/hashicorp/http-echo:latest")
|
|
13
|
+
* console.log(v) // { tag: "hashicorp/http-echo:latest", hub: { name: "docker.io" }}
|
|
14
|
+
*/
|
|
15
|
+
export declare function ComponentImageToSolutionJSON(image: string | Image): Image;
|
|
16
|
+
/**
|
|
17
|
+
* @param KumoriModules - The collection of Kumori modules used to resolve module information.
|
|
18
|
+
* @param node - The AST node for which reference updates are to be generated.
|
|
19
|
+
* @returns An array of updater functions. Each updater takes a {@link Reference} and updates its `domain`, `module`, and/or `name`
|
|
20
|
+
* properties based on the resolved module's URL. Returns an empty array if the node or module cannot be resolved.
|
|
21
|
+
*/
|
|
22
|
+
export declare function ReferenceUpdater(KumoriModules: KumoriModules, node: AstNode | undefined): ((ref: Reference) => void)[];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ParseOCIString } from "@kumori/kdsl-lsp/util/oci.js";
|
|
2
|
+
import { Result } from "@kumori/kdsl-lsp/util/result.js";
|
|
3
|
+
import { AstUtils } from "langium";
|
|
4
|
+
import { basename } from "path";
|
|
5
|
+
/**
|
|
6
|
+
* Converts a OCI image string to a structured JSON object.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} image - The OCI image string in the format "docker.io/hashicorp/http-echo:latest".
|
|
9
|
+
* @returns {{tag: string, hub: {name: string}}} An object containing the tag and the hub information.
|
|
10
|
+
* @throws Will throw an error if the input string is not in the expected format.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const v = ComponentImageToSolutionJSON("docker.io/hashicorp/http-echo:latest")
|
|
14
|
+
* console.log(v) // { tag: "hashicorp/http-echo:latest", hub: { name: "docker.io" }}
|
|
15
|
+
*/
|
|
16
|
+
export function ComponentImageToSolutionJSON(image) {
|
|
17
|
+
if (typeof image === "string") {
|
|
18
|
+
return Result.orElse(Result.map(ParseOCIString(image), (v) => { var _a, _b; return ({ tag: v.tag, hub: { name: v.hub, secret: typeof image === "string" ? "" : (_b = (_a = image.hub) === null || _a === void 0 ? void 0 : _a.secret) !== null && _b !== void 0 ? _b : "" } }); }), err => { throw new Error(err); });
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return image;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @param KumoriModules - The collection of Kumori modules used to resolve module information.
|
|
26
|
+
* @param node - The AST node for which reference updates are to be generated.
|
|
27
|
+
* @returns An array of updater functions. Each updater takes a {@link Reference} and updates its `domain`, `module`, and/or `name`
|
|
28
|
+
* properties based on the resolved module's URL. Returns an empty array if the node or module cannot be resolved.
|
|
29
|
+
*/
|
|
30
|
+
export function ReferenceUpdater(KumoriModules, node) {
|
|
31
|
+
if (!node) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
const uri = AstUtils.getDocument(node).uri;
|
|
35
|
+
const mod = KumoriModules.getModule(uri);
|
|
36
|
+
if (Result.isErr(mod)) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
const url = Result.tryCatch(() => new URL(`file://${mod.value.Manifest.module}`));
|
|
40
|
+
if (Result.isErr(url)) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
const updates = [];
|
|
44
|
+
if (url.value.hostname.length) {
|
|
45
|
+
updates.push(ref => ref.domain = url.value.hostname);
|
|
46
|
+
}
|
|
47
|
+
if (url.value.pathname.length) {
|
|
48
|
+
updates.push(ref => {
|
|
49
|
+
ref.module = url.value.pathname.replace(/^\//, "");
|
|
50
|
+
ref.name = basename(ref.module);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return updates;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/build/helpers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAW,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAI/B;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAqB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAChB,MAAM,CAAC,GAAG,CACN,cAAc,CAAC,KAAK,CAAC,EACrB,CAAC,CAA+B,EAAE,EAAE,eAAC,OAAA,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAA,MAAC,KAAe,CAAC,GAAG,0CAAE,MAAM,mCAAI,EAAE,EAAC,EAAE,CAAC,CAAA,EAAA,CAC1J,EACD,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAClC,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAA4B,EAAE,IAAyB;IACpF,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,OAAO,EAAE,CAAA;IAAC,CAAC;IAExB,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAA;IAC1C,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IACxC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAA;IAAC,CAAC;IAEpC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACjF,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAA;IAAC,CAAC;IAEpC,MAAM,OAAO,GAAiC,EAAE,CAAA;IAChD,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YAClD,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACN,CAAC;IAED,OAAO,OAAO,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { KumoriServices } from "@kumori/kdsl-lsp/language/kumori.js";
|
|
2
|
+
import { Command } from "@commander-js/extra-typings";
|
|
3
|
+
import { Result } from "@kumori/kdsl-lsp/util/result.js";
|
|
4
|
+
import { CommanderActionParams } from "../util.js";
|
|
5
|
+
import { ILogLayer } from "loglayer";
|
|
6
|
+
export declare function Register(cmd: Command, log: ILogLayer): Command<[string, string], {}, {}>;
|
|
7
|
+
type Exec = CommanderActionParams<ReturnType<typeof Register>>;
|
|
8
|
+
export declare function Action(log: ILogLayer): Exec;
|
|
9
|
+
/**
|
|
10
|
+
* Build implementation that returns Result instead of exiting.
|
|
11
|
+
* This can be used by both CLI and library.
|
|
12
|
+
*/
|
|
13
|
+
export declare function BuildImpl(log: ILogLayer, svcs: KumoriServices, pkgStr: string, target: string): Promise<Result<void, string[]>>;
|
|
14
|
+
declare const _default: {
|
|
15
|
+
Register: typeof Register;
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { DeploymentArtifact, isDeploymentArtifact } from "@kumori/kdsl-lsp/language/generated/ast.js";
|
|
2
|
+
import { createKumoriServices } from "@kumori/kdsl-lsp/language/kumori.js";
|
|
3
|
+
import { URI, UriUtils } from "langium";
|
|
4
|
+
import { NodeFileSystem } from "langium/node";
|
|
5
|
+
import { Result, Err, Ok } from "@kumori/kdsl-lsp/util/result.js";
|
|
6
|
+
import { GenerateSolutionResult } from "./solution.js";
|
|
7
|
+
import { ModuleContext } from "@kumori/kdsl-lsp/module/context.js";
|
|
8
|
+
import { ListDependencies } from "@kumori/kdsl-lsp/module/dependency/list.js";
|
|
9
|
+
import assert from "assert";
|
|
10
|
+
import { LocateDependency } from "@kumori/kdsl-lsp/module/dependency/locate.js";
|
|
11
|
+
import { Maybe } from "@kumori/kdsl-lsp/util/maybe.js";
|
|
12
|
+
import { DependencyId } from "@kumori/kdsl-lsp/module/dependency/id.js";
|
|
13
|
+
import path from "node:path";
|
|
14
|
+
import { Check } from "../check/main.js";
|
|
15
|
+
import { promises as nodefs } from "node:fs";
|
|
16
|
+
import { RegistryManager } from "@kumori/kdsl-lsp/module/registry/manager.js";
|
|
17
|
+
export function Register(cmd, log) {
|
|
18
|
+
const c = cmd.command('build')
|
|
19
|
+
.argument('[package]', `package containing the target deployment, defaults to current directory`, '.')
|
|
20
|
+
.argument('[directory]', `directory containing a Kumori module, defaults to current directory`, '.')
|
|
21
|
+
.description(Description)
|
|
22
|
+
.summary(Summary)
|
|
23
|
+
.action(Action(log));
|
|
24
|
+
return c;
|
|
25
|
+
}
|
|
26
|
+
const Summary = `produces deployable artifact specifications`;
|
|
27
|
+
const Description = `
|
|
28
|
+
Generates a solution.json file for a specified Kumori package containing deployment definitions.
|
|
29
|
+
The command requires the path to the package as an argument, and optionally accepts a directory
|
|
30
|
+
path where the Kumori module is located. If the directory is not provided, the current working
|
|
31
|
+
directory is used by default.
|
|
32
|
+
|
|
33
|
+
Some usage examples:
|
|
34
|
+
kdsl build
|
|
35
|
+
kdsl build my-package
|
|
36
|
+
kdsl build my-package path/to/module
|
|
37
|
+
|
|
38
|
+
The generated solution.json file will be created in the package directory, containing all necessary
|
|
39
|
+
information for deploying the resources defined in the package's deployment artifacts.
|
|
40
|
+
`.trim();
|
|
41
|
+
export function Action(log) {
|
|
42
|
+
return async (pkgStr = ".", target = ".") => {
|
|
43
|
+
const manager = new RegistryManager();
|
|
44
|
+
await manager.ensureIndexes();
|
|
45
|
+
const svcs = createKumoriServices(NodeFileSystem).Kumori;
|
|
46
|
+
const result = await BuildImpl(log, svcs, pkgStr, target);
|
|
47
|
+
if (Result.isErr(result)) {
|
|
48
|
+
// Errors already logged by BuildImpl
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build implementation that returns Result instead of exiting.
|
|
55
|
+
* This can be used by both CLI and library.
|
|
56
|
+
*/
|
|
57
|
+
export async function BuildImpl(log, svcs, pkgStr, target) {
|
|
58
|
+
const fs = svcs.shared.workspace.FileSystemProvider;
|
|
59
|
+
const ctx = await ModuleContext(fs, URI.file(path.resolve(target)));
|
|
60
|
+
if (Result.isErr(ctx)) {
|
|
61
|
+
const err = `error: ${ctx.err}`;
|
|
62
|
+
log.error(err);
|
|
63
|
+
return Err([err]);
|
|
64
|
+
}
|
|
65
|
+
const locctx = Object.assign({ FS: fs }, ctx.value);
|
|
66
|
+
const missing = await MissingDependencies(locctx);
|
|
67
|
+
if (missing.size > 0) {
|
|
68
|
+
const errs = [`error: missing modules`];
|
|
69
|
+
log.error(errs[0]);
|
|
70
|
+
for (const mod of missing) {
|
|
71
|
+
const msg = `+ ${mod}`;
|
|
72
|
+
log.error(msg);
|
|
73
|
+
errs.push(msg);
|
|
74
|
+
}
|
|
75
|
+
const finalMsg = `unable to build solution.json`;
|
|
76
|
+
log.error(finalMsg);
|
|
77
|
+
errs.push(finalMsg);
|
|
78
|
+
return Err(errs);
|
|
79
|
+
}
|
|
80
|
+
const checkResult = await Check(log, svcs, ctx.value);
|
|
81
|
+
if (Result.isErr(checkResult)) {
|
|
82
|
+
return checkResult;
|
|
83
|
+
}
|
|
84
|
+
const pkgUri = UriUtils.joinPath(ctx.value.Current.Root, pkgStr);
|
|
85
|
+
const pkg = svcs.references.KumoriPackages.GetPackage(pkgUri);
|
|
86
|
+
if (Result.isErr(pkg)) {
|
|
87
|
+
const err = `error: failed to retrieve package: ${pkgUri.toString()}`;
|
|
88
|
+
log.error(err);
|
|
89
|
+
return Err([err]);
|
|
90
|
+
}
|
|
91
|
+
const pkgUris = new Set(pkg.value.docs.map(p => p.uri.toString()));
|
|
92
|
+
const deployments = svcs.shared.workspace.IndexManager
|
|
93
|
+
.allElements(DeploymentArtifact.$type, pkgUris)
|
|
94
|
+
.toArray();
|
|
95
|
+
if (deployments.length < 1) {
|
|
96
|
+
const err = `error: no deployment defined in ${pkgUri.toString()}`;
|
|
97
|
+
log.error(err);
|
|
98
|
+
return Err([err]);
|
|
99
|
+
}
|
|
100
|
+
if (deployments.length > 1) {
|
|
101
|
+
const err = `error: too many deployments in ${pkgUri.toString()}`;
|
|
102
|
+
log.error(err);
|
|
103
|
+
return Err([err]);
|
|
104
|
+
}
|
|
105
|
+
const description = deployments[0];
|
|
106
|
+
const deployment = description.node;
|
|
107
|
+
if (!isDeploymentArtifact(deployment)) {
|
|
108
|
+
const err = `error: invalid target doc=${description.documentUri} location=${description.path}`;
|
|
109
|
+
log.error(err);
|
|
110
|
+
return Err([err]);
|
|
111
|
+
}
|
|
112
|
+
const solutionResult = GenerateSolutionResult(log, svcs, deployment);
|
|
113
|
+
if (Result.isErr(solutionResult)) {
|
|
114
|
+
return solutionResult;
|
|
115
|
+
}
|
|
116
|
+
const solutionPath = path.join(pkgUri.fsPath, 'solution.json');
|
|
117
|
+
await nodefs.writeFile(solutionPath, solutionResult.value, 'utf-8');
|
|
118
|
+
log.info(`solution.json written to ${solutionPath}`);
|
|
119
|
+
return Ok(undefined);
|
|
120
|
+
}
|
|
121
|
+
async function MissingDependencies(ctx, missing = new Set()) {
|
|
122
|
+
const deps = ListDependencies(ctx.Current);
|
|
123
|
+
for (const [, dep] of deps.entriesGroupedByKey()) {
|
|
124
|
+
assert(dep.length > 0);
|
|
125
|
+
const { target, version } = dep[0];
|
|
126
|
+
const descriptor = await LocateDependency(ctx, target, version);
|
|
127
|
+
if (Maybe.isNone(descriptor)) {
|
|
128
|
+
missing.add(DependencyId(target, version));
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
const mod = await ModuleContext.Move(ctx, ctx.FS, descriptor.value.Root);
|
|
132
|
+
assert(Result.isOk(mod));
|
|
133
|
+
const subctx = Object.assign(Object.assign({}, ctx), mod.value);
|
|
134
|
+
await MissingDependencies(subctx, missing);
|
|
135
|
+
}
|
|
136
|
+
return missing;
|
|
137
|
+
}
|
|
138
|
+
export default { Register };
|
|
139
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/build/main.ts"],"names":[],"mappings":"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"}
|