@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,13 @@
|
|
|
1
|
+
import { Service, Connection } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js";
|
|
2
|
+
import { Connector } from "../deployment_spec.js";
|
|
3
|
+
import { SolutionJSONContext } from "./deployment.js";
|
|
4
|
+
/**
|
|
5
|
+
* Converts a service connection definition into the solution JSON format.
|
|
6
|
+
* This translates the "connector" section of a service into the "connector" section
|
|
7
|
+
* of the solution JSON.
|
|
8
|
+
* @param ctx The solution JSON context.
|
|
9
|
+
* @param service The service to convert.
|
|
10
|
+
* @param cnx The connection to convert.
|
|
11
|
+
* @returns The connector representation of the connection.
|
|
12
|
+
*/
|
|
13
|
+
export declare function ServiceConnectionToSolutionJSON(ctx: SolutionJSONContext, service: Service, cnx: Connection): Connector;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { LoadBalancerName, FullConnectorName } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js";
|
|
2
|
+
import { isService } from "./deployment.js";
|
|
3
|
+
import { ReferenceUpdater } from "./utils.js";
|
|
4
|
+
/**
|
|
5
|
+
* Resolves and updates a Reference object for a given component reference.
|
|
6
|
+
* @param ctx The solution JSON context.
|
|
7
|
+
* @param componentRef The component reference to resolve.
|
|
8
|
+
* @param ref The Reference object to update.
|
|
9
|
+
* @param isServiceKind Whether the reference should be marked as a service.
|
|
10
|
+
*/
|
|
11
|
+
// I don't like to disable eslint rules, but I'll let it be here
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
+
function resolveReference(ctx, componentRef, ref, isServiceKind) {
|
|
14
|
+
const mod = ctx.svcs.shared.references.KumoriModules;
|
|
15
|
+
const modifiers = ReferenceUpdater(mod, ctx.nodes.get(componentRef));
|
|
16
|
+
for (const m of modifiers) {
|
|
17
|
+
m(ref);
|
|
18
|
+
}
|
|
19
|
+
if (isServiceKind) {
|
|
20
|
+
ref.kind = "service";
|
|
21
|
+
}
|
|
22
|
+
return ref;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Checks if a server is already present in the servers array.
|
|
26
|
+
* Deduplication is done by comparing JSON string representations.
|
|
27
|
+
* @param servers Array of existing servers.
|
|
28
|
+
* @param candidate The candidate server to check.
|
|
29
|
+
* @returns True if duplicate, false otherwise.
|
|
30
|
+
*/
|
|
31
|
+
function isServerDuplicate(servers, candidate) {
|
|
32
|
+
return servers.some(s => JSON.stringify(s) === JSON.stringify(candidate));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Builds a connector client object.
|
|
36
|
+
* @param target The role of the client.
|
|
37
|
+
* @param channel The channel of the client.
|
|
38
|
+
* @returns A ConnectorClient object.
|
|
39
|
+
*/
|
|
40
|
+
function buildClient(target, channel) {
|
|
41
|
+
return { role: target, channel };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds a connector server object.
|
|
45
|
+
* @param meta The meta information for the server.
|
|
46
|
+
* @param role The role of the server.
|
|
47
|
+
* @param channel The channel of the server.
|
|
48
|
+
* @returns A ConnectorServer object.
|
|
49
|
+
*/
|
|
50
|
+
// I don't like to disable eslint rules, but I'll let it be here
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
function buildServer(meta, role, channel) {
|
|
53
|
+
return {
|
|
54
|
+
meta,
|
|
55
|
+
links: [{ role, channel }]
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Converts a service connection definition into the solution JSON format.
|
|
60
|
+
* This translates the "connector" section of a service into the "connector" section
|
|
61
|
+
* of the solution JSON.
|
|
62
|
+
* @param ctx The solution JSON context.
|
|
63
|
+
* @param service The service to convert.
|
|
64
|
+
* @param cnx The connection to convert.
|
|
65
|
+
* @returns The connector representation of the connection.
|
|
66
|
+
*/
|
|
67
|
+
export function ServiceConnectionToSolutionJSON(ctx, service, cnx) {
|
|
68
|
+
var _a, _b, _c, _d;
|
|
69
|
+
const ref = {
|
|
70
|
+
version: [0, 0, 0],
|
|
71
|
+
kind: "component",
|
|
72
|
+
domain: "unknown",
|
|
73
|
+
module: "unknown",
|
|
74
|
+
name: "unknown",
|
|
75
|
+
};
|
|
76
|
+
if (cnx.$type === LoadBalancerName) {
|
|
77
|
+
cnx = cnx;
|
|
78
|
+
const servers = [];
|
|
79
|
+
const clients = [];
|
|
80
|
+
// The "from" and "to" arrays define multiple connections.
|
|
81
|
+
// We accumulate all clients and servers and then return a single connector.
|
|
82
|
+
if ("from" in cnx.value && Array.isArray(cnx.value.from) && "to" in cnx.value && Array.isArray(cnx.value.to)) {
|
|
83
|
+
for (const fromCnx of cnx.value.from) {
|
|
84
|
+
// Each "from" defines a client
|
|
85
|
+
clients.push(buildClient(fromCnx.target, fromCnx.channel));
|
|
86
|
+
// Each "to" defines a server for this client
|
|
87
|
+
for (const toCnx of cnx.value.to) {
|
|
88
|
+
const componentRef = service.role[toCnx.target == "self" ? fromCnx.target : toCnx.target];
|
|
89
|
+
const isServiceKind = isService(componentRef.artifact) || toCnx.target == "self";
|
|
90
|
+
resolveReference(ctx, componentRef, ref, isServiceKind);
|
|
91
|
+
const meta = (_a = cnx.value.meta) !== null && _a !== void 0 ? _a : [{
|
|
92
|
+
auto: {
|
|
93
|
+
channel: toCnx.target !== "self" ? toCnx.target + "." + toCnx.channel : toCnx.channel,
|
|
94
|
+
compRef: ref,
|
|
95
|
+
roleName: toCnx.target == "self" ? fromCnx.target : toCnx.target,
|
|
96
|
+
},
|
|
97
|
+
user: {}
|
|
98
|
+
}];
|
|
99
|
+
const server = buildServer(meta, toCnx.target, toCnx.channel);
|
|
100
|
+
// We don't want duplicates
|
|
101
|
+
if (!isServerDuplicate(servers, server)) {
|
|
102
|
+
servers.push(server);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if ("from" in cnx.value && !Array.isArray(cnx.value.from) && !Array.isArray(cnx.value.to)) {
|
|
108
|
+
const fromCnx = cnx.value.from;
|
|
109
|
+
const toCnx = cnx.value.to;
|
|
110
|
+
// Each "from" defines a client
|
|
111
|
+
clients.push(buildClient(fromCnx.target, fromCnx.channel));
|
|
112
|
+
// Each "to" defines a server for this client
|
|
113
|
+
const componentRef = service.role[toCnx.target == "self" ? fromCnx.target : toCnx.target];
|
|
114
|
+
const isServiceKind = isService(componentRef.artifact) || toCnx.target == "self";
|
|
115
|
+
resolveReference(ctx, componentRef, ref, isServiceKind);
|
|
116
|
+
const meta = (_b = cnx.value.meta) !== null && _b !== void 0 ? _b : [{
|
|
117
|
+
auto: {
|
|
118
|
+
channel: toCnx.target !== "self" ? toCnx.target + "." + toCnx.channel : toCnx.channel,
|
|
119
|
+
compRef: ref,
|
|
120
|
+
roleName: toCnx.target == "self" ? fromCnx.target : toCnx.target,
|
|
121
|
+
},
|
|
122
|
+
user: {}
|
|
123
|
+
}];
|
|
124
|
+
const server = buildServer(meta, toCnx.target, toCnx.channel);
|
|
125
|
+
// We don't want duplicates
|
|
126
|
+
if (!isServerDuplicate(servers, server)) {
|
|
127
|
+
servers.push(server);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
kind: "lb",
|
|
132
|
+
clients: clients,
|
|
133
|
+
servers: servers
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
if (cnx.$type === FullConnectorName) {
|
|
137
|
+
cnx = cnx;
|
|
138
|
+
const servers = [];
|
|
139
|
+
const clients = [];
|
|
140
|
+
// The "from" and "to" arrays define multiple connections.
|
|
141
|
+
// We accumulate all clients and servers and then return a single connector.
|
|
142
|
+
// The "FullConnector" connector can have either "from" and "to" arrays or single "target" and "channel" properties.
|
|
143
|
+
if ("from" in cnx.value && Array.isArray(cnx.value.from) && "to" in cnx.value && Array.isArray(cnx.value.to)) {
|
|
144
|
+
// Each "from" defines a client
|
|
145
|
+
for (const fromCnx of cnx.value.from) {
|
|
146
|
+
clients.push(buildClient(fromCnx.target, fromCnx.channel));
|
|
147
|
+
// Each "to" defines a server for this client
|
|
148
|
+
for (const toCnx of cnx.value.to) {
|
|
149
|
+
const componentRef = service.role[toCnx.target == "self" ? fromCnx.target : toCnx.target];
|
|
150
|
+
const isServiceKind = isService(componentRef.artifact);
|
|
151
|
+
resolveReference(ctx, componentRef, ref, isServiceKind);
|
|
152
|
+
const meta = (_c = cnx.value.meta) !== null && _c !== void 0 ? _c : [{
|
|
153
|
+
auto: {
|
|
154
|
+
channel: toCnx.target !== "self" ? toCnx.target + "." + toCnx.channel : toCnx.channel,
|
|
155
|
+
compRef: ref,
|
|
156
|
+
roleName: toCnx.target == "self" ? fromCnx.target : toCnx.target,
|
|
157
|
+
},
|
|
158
|
+
user: {}
|
|
159
|
+
}];
|
|
160
|
+
const server = buildServer(meta, toCnx.target, toCnx.channel);
|
|
161
|
+
// We don't want duplicates
|
|
162
|
+
if (!isServerDuplicate(servers, server)) {
|
|
163
|
+
servers.push(server);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else if ("target" in cnx.value && "channel" in cnx.value) {
|
|
169
|
+
const componentRef = service.role[cnx.value.target];
|
|
170
|
+
const isServiceKind = isService(componentRef.artifact);
|
|
171
|
+
resolveReference(ctx, componentRef, ref, isServiceKind);
|
|
172
|
+
const meta = (_d = cnx.value.meta) !== null && _d !== void 0 ? _d : [{
|
|
173
|
+
auto: {
|
|
174
|
+
channel: cnx.value.channel,
|
|
175
|
+
compRef: ref,
|
|
176
|
+
roleName: cnx.value.target,
|
|
177
|
+
},
|
|
178
|
+
user: {}
|
|
179
|
+
}];
|
|
180
|
+
servers.push(buildServer(meta, cnx.value.target, cnx.value.channel));
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
kind: "full",
|
|
184
|
+
clients: clients,
|
|
185
|
+
servers: servers,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
throw new Error(`unknown connection type '${cnx.$type}'`);
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connector.js","sourceRoot":"","sources":["../../../src/build/helpers/connector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
import { Builtin } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/builtin.js";
|
|
2
|
+
import { Component } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/component.js";
|
|
3
|
+
import { Deployment } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/deployment.js";
|
|
4
|
+
import { Service } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js";
|
|
5
|
+
import { KumoriServices } from "@kumori/kdsl-lsp/language/kumori.js";
|
|
6
|
+
import { AstNode } from "langium";
|
|
7
|
+
import { KukuSolutionSpec, V3DeploymentSpec } from "../deployment_spec.js";
|
|
8
|
+
export interface SolutionJSONContext {
|
|
9
|
+
svcs: KumoriServices;
|
|
10
|
+
root: KukuSolutionSpec;
|
|
11
|
+
nodes: Map<object, AstNode>;
|
|
12
|
+
path: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare const CtxId: (ctx: SolutionJSONContext) => string;
|
|
15
|
+
export declare const CtxParentId: (ctx: SolutionJSONContext) => string;
|
|
16
|
+
export declare const WithPath: (ctx: SolutionJSONContext, name: string) => SolutionJSONContext;
|
|
17
|
+
export declare const AddDeployment: (ctx: SolutionJSONContext, dep: V3DeploymentSpec) => {
|
|
18
|
+
name: string;
|
|
19
|
+
config?: {
|
|
20
|
+
resilience: number;
|
|
21
|
+
parameter?: Record<string, any> | undefined;
|
|
22
|
+
resource?: Record<string, {
|
|
23
|
+
port?: string | undefined;
|
|
24
|
+
domain?: string | undefined;
|
|
25
|
+
secret?: string | undefined;
|
|
26
|
+
certificate?: string | undefined;
|
|
27
|
+
ca?: string | undefined;
|
|
28
|
+
volume?: any;
|
|
29
|
+
}> | undefined;
|
|
30
|
+
scale?: ({
|
|
31
|
+
qos?: any;
|
|
32
|
+
hsize?: number | undefined;
|
|
33
|
+
} & {
|
|
34
|
+
detail?: Record<string, ({
|
|
35
|
+
qos?: any;
|
|
36
|
+
hsize?: number | undefined;
|
|
37
|
+
} & /*elided*/ any) | undefined>;
|
|
38
|
+
}) | undefined;
|
|
39
|
+
} | undefined;
|
|
40
|
+
meta?: any;
|
|
41
|
+
artifact?: {
|
|
42
|
+
spec: number[];
|
|
43
|
+
ref: {
|
|
44
|
+
domain: string;
|
|
45
|
+
name: string;
|
|
46
|
+
kind: "deployment" | "service" | "component";
|
|
47
|
+
version: number[];
|
|
48
|
+
module?: string | undefined;
|
|
49
|
+
prerelease?: string | undefined;
|
|
50
|
+
buildmetadata?: string | undefined;
|
|
51
|
+
};
|
|
52
|
+
description: {
|
|
53
|
+
builtin: boolean;
|
|
54
|
+
config?: {
|
|
55
|
+
resilience: number;
|
|
56
|
+
parameter?: Record<string, any> | undefined;
|
|
57
|
+
resource?: Record<string, {
|
|
58
|
+
port?: string | undefined;
|
|
59
|
+
domain?: string | undefined;
|
|
60
|
+
secret?: string | undefined;
|
|
61
|
+
certificate?: string | undefined;
|
|
62
|
+
ca?: string | undefined;
|
|
63
|
+
volume?: any;
|
|
64
|
+
}> | undefined;
|
|
65
|
+
scale?: ({
|
|
66
|
+
qos?: any;
|
|
67
|
+
hsize?: number | undefined;
|
|
68
|
+
} & {
|
|
69
|
+
detail?: Record<string, ({
|
|
70
|
+
qos?: any;
|
|
71
|
+
hsize?: number | undefined;
|
|
72
|
+
} & /*elided*/ any) | undefined>;
|
|
73
|
+
}) | undefined;
|
|
74
|
+
} | undefined;
|
|
75
|
+
srv?: {
|
|
76
|
+
duplex?: Record<string, {
|
|
77
|
+
inherited: boolean;
|
|
78
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
79
|
+
port?: number | undefined;
|
|
80
|
+
portnum?: number | undefined;
|
|
81
|
+
}> | undefined;
|
|
82
|
+
client?: Record<string, {
|
|
83
|
+
inherited: boolean;
|
|
84
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
85
|
+
port?: number | undefined;
|
|
86
|
+
portnum?: number | undefined;
|
|
87
|
+
}> | undefined;
|
|
88
|
+
server?: Record<string, {
|
|
89
|
+
inherited: boolean;
|
|
90
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
91
|
+
port?: number | undefined;
|
|
92
|
+
portnum?: number | undefined;
|
|
93
|
+
}> | undefined;
|
|
94
|
+
} | undefined;
|
|
95
|
+
role?: Record<string, {
|
|
96
|
+
name: string;
|
|
97
|
+
artifact: {
|
|
98
|
+
spec: number[];
|
|
99
|
+
ref: {
|
|
100
|
+
domain: string;
|
|
101
|
+
name: string;
|
|
102
|
+
kind: "deployment" | "service" | "component";
|
|
103
|
+
version: number[];
|
|
104
|
+
module?: string | undefined;
|
|
105
|
+
prerelease?: string | undefined;
|
|
106
|
+
buildmetadata?: string | undefined;
|
|
107
|
+
};
|
|
108
|
+
description?: {
|
|
109
|
+
builtin: boolean;
|
|
110
|
+
size: {
|
|
111
|
+
bandwidth: {
|
|
112
|
+
kind: "storage" | "cpu" | "ram" | "bandwidth";
|
|
113
|
+
size: number;
|
|
114
|
+
unit: string;
|
|
115
|
+
};
|
|
116
|
+
mincpu: {
|
|
117
|
+
kind: "storage" | "cpu" | "ram" | "bandwidth";
|
|
118
|
+
size: number;
|
|
119
|
+
unit: string;
|
|
120
|
+
};
|
|
121
|
+
minbandwidth: number;
|
|
122
|
+
};
|
|
123
|
+
code?: Record<string, {
|
|
124
|
+
name: string;
|
|
125
|
+
image: {
|
|
126
|
+
tag: string;
|
|
127
|
+
hub?: {
|
|
128
|
+
name: string;
|
|
129
|
+
secret?: string | undefined;
|
|
130
|
+
} | undefined;
|
|
131
|
+
};
|
|
132
|
+
size?: {
|
|
133
|
+
cpu: {
|
|
134
|
+
kind: "storage" | "cpu" | "ram" | "bandwidth";
|
|
135
|
+
size: number;
|
|
136
|
+
unit: string;
|
|
137
|
+
};
|
|
138
|
+
mincpu: number;
|
|
139
|
+
memory: {
|
|
140
|
+
kind: "storage" | "cpu" | "ram" | "bandwidth";
|
|
141
|
+
size: number;
|
|
142
|
+
unit: string;
|
|
143
|
+
};
|
|
144
|
+
} | undefined;
|
|
145
|
+
entrypoint?: string[] | undefined;
|
|
146
|
+
cmd?: string[] | undefined;
|
|
147
|
+
user?: {
|
|
148
|
+
userid: number;
|
|
149
|
+
groupid: number;
|
|
150
|
+
} | undefined;
|
|
151
|
+
mapping?: {
|
|
152
|
+
env?: Record<string, {
|
|
153
|
+
port?: string | undefined;
|
|
154
|
+
domain?: string | undefined;
|
|
155
|
+
secret?: string | undefined;
|
|
156
|
+
certificate?: string | undefined;
|
|
157
|
+
ca?: string | undefined;
|
|
158
|
+
value?: string | number | boolean | undefined;
|
|
159
|
+
enableTemplate?: boolean | undefined;
|
|
160
|
+
}> | undefined;
|
|
161
|
+
filesystem?: Record<string, {
|
|
162
|
+
volume?: string | undefined;
|
|
163
|
+
path?: string | undefined;
|
|
164
|
+
enableTemplate?: boolean | undefined;
|
|
165
|
+
data?: {
|
|
166
|
+
port?: string | undefined;
|
|
167
|
+
domain?: string | undefined;
|
|
168
|
+
secret?: string | undefined;
|
|
169
|
+
certificate?: string | undefined;
|
|
170
|
+
ca?: string | undefined;
|
|
171
|
+
value?: string | undefined;
|
|
172
|
+
} | undefined;
|
|
173
|
+
format?: "text" | "json" | "yaml" | undefined;
|
|
174
|
+
group?: number | undefined;
|
|
175
|
+
mode?: number | undefined;
|
|
176
|
+
user?: number | undefined;
|
|
177
|
+
rebootOnUpdate?: boolean | undefined;
|
|
178
|
+
}> | undefined;
|
|
179
|
+
} | undefined;
|
|
180
|
+
init?: boolean | undefined;
|
|
181
|
+
}> | undefined;
|
|
182
|
+
config?: {
|
|
183
|
+
resilience: number;
|
|
184
|
+
parameter?: Record<string, any> | undefined;
|
|
185
|
+
resource?: Record<string, {
|
|
186
|
+
port?: string | undefined;
|
|
187
|
+
domain?: string | undefined;
|
|
188
|
+
secret?: string | undefined;
|
|
189
|
+
certificate?: string | undefined;
|
|
190
|
+
ca?: string | undefined;
|
|
191
|
+
volume?: any;
|
|
192
|
+
}> | undefined;
|
|
193
|
+
scale?: ({
|
|
194
|
+
qos?: any;
|
|
195
|
+
hsize?: number | undefined;
|
|
196
|
+
} & {
|
|
197
|
+
detail?: Record<string, ({
|
|
198
|
+
qos?: any;
|
|
199
|
+
hsize?: number | undefined;
|
|
200
|
+
} & /*elided*/ any) | undefined>;
|
|
201
|
+
}) | undefined;
|
|
202
|
+
} | undefined;
|
|
203
|
+
srv?: {
|
|
204
|
+
duplex?: Record<string, {
|
|
205
|
+
inherited: boolean;
|
|
206
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
207
|
+
port?: number | undefined;
|
|
208
|
+
portnum?: number | undefined;
|
|
209
|
+
}> | undefined;
|
|
210
|
+
client?: Record<string, {
|
|
211
|
+
inherited: boolean;
|
|
212
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
213
|
+
port?: number | undefined;
|
|
214
|
+
portnum?: number | undefined;
|
|
215
|
+
}> | undefined;
|
|
216
|
+
server?: Record<string, {
|
|
217
|
+
inherited: boolean;
|
|
218
|
+
protocol: "http" | "tcp" | "udp" | "grpc";
|
|
219
|
+
port?: number | undefined;
|
|
220
|
+
portnum?: number | undefined;
|
|
221
|
+
}> | undefined;
|
|
222
|
+
} | undefined;
|
|
223
|
+
profile?: {
|
|
224
|
+
threadability: string;
|
|
225
|
+
iopsintensive: boolean;
|
|
226
|
+
} | undefined;
|
|
227
|
+
probe?: Record<string, {
|
|
228
|
+
liveness?: {
|
|
229
|
+
protocol: {
|
|
230
|
+
http?: {
|
|
231
|
+
port: number;
|
|
232
|
+
path: string;
|
|
233
|
+
} | undefined;
|
|
234
|
+
tcp?: {
|
|
235
|
+
port: number;
|
|
236
|
+
} | undefined;
|
|
237
|
+
exec?: {
|
|
238
|
+
path: string;
|
|
239
|
+
} | undefined;
|
|
240
|
+
};
|
|
241
|
+
startupGraceWindow?: {
|
|
242
|
+
unit: "attempts" | "ms";
|
|
243
|
+
duration: number;
|
|
244
|
+
probe: boolean;
|
|
245
|
+
} | undefined;
|
|
246
|
+
frequency?: any;
|
|
247
|
+
timeout?: number | undefined;
|
|
248
|
+
} | undefined;
|
|
249
|
+
readiness?: {
|
|
250
|
+
protocol: {
|
|
251
|
+
http?: {
|
|
252
|
+
port: number;
|
|
253
|
+
path: string;
|
|
254
|
+
} | undefined;
|
|
255
|
+
tcp?: {
|
|
256
|
+
port: number;
|
|
257
|
+
} | undefined;
|
|
258
|
+
exec?: {
|
|
259
|
+
path: string;
|
|
260
|
+
} | undefined;
|
|
261
|
+
};
|
|
262
|
+
frequency?: any;
|
|
263
|
+
timeout?: number | undefined;
|
|
264
|
+
} | undefined;
|
|
265
|
+
pmetrics?: {
|
|
266
|
+
protocol: {
|
|
267
|
+
http?: {
|
|
268
|
+
port: number;
|
|
269
|
+
path: string;
|
|
270
|
+
} | undefined;
|
|
271
|
+
};
|
|
272
|
+
} | undefined;
|
|
273
|
+
}> | undefined;
|
|
274
|
+
} | undefined;
|
|
275
|
+
};
|
|
276
|
+
config?: {
|
|
277
|
+
resilience: number;
|
|
278
|
+
parameter?: Record<string, any> | undefined;
|
|
279
|
+
resource?: Record<string, {
|
|
280
|
+
port?: string | undefined;
|
|
281
|
+
domain?: string | undefined;
|
|
282
|
+
secret?: string | undefined;
|
|
283
|
+
certificate?: string | undefined;
|
|
284
|
+
ca?: string | undefined;
|
|
285
|
+
volume?: any;
|
|
286
|
+
}> | undefined;
|
|
287
|
+
scale?: ({
|
|
288
|
+
qos?: any;
|
|
289
|
+
hsize?: number | undefined;
|
|
290
|
+
} & {
|
|
291
|
+
detail?: Record<string, ({
|
|
292
|
+
qos?: any;
|
|
293
|
+
hsize?: number | undefined;
|
|
294
|
+
} & /*elided*/ any) | undefined>;
|
|
295
|
+
}) | undefined;
|
|
296
|
+
} | undefined;
|
|
297
|
+
updates?: "free" | undefined;
|
|
298
|
+
meta?: any;
|
|
299
|
+
}> | undefined;
|
|
300
|
+
connector?: Record<string, {
|
|
301
|
+
kind: "lb" | "full";
|
|
302
|
+
clients: {
|
|
303
|
+
role: string;
|
|
304
|
+
channel: string;
|
|
305
|
+
}[];
|
|
306
|
+
servers: {
|
|
307
|
+
links: {
|
|
308
|
+
role: string;
|
|
309
|
+
channel: string;
|
|
310
|
+
}[];
|
|
311
|
+
meta?: any;
|
|
312
|
+
}[];
|
|
313
|
+
}> | undefined;
|
|
314
|
+
};
|
|
315
|
+
} | undefined;
|
|
316
|
+
up?: string | undefined;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Convert a deployment artifact to a solution JSON representation.
|
|
320
|
+
* @param deployment - The deployment artifact to convert.
|
|
321
|
+
* @returns The solution JSON representation.
|
|
322
|
+
*/
|
|
323
|
+
export declare function DeploymentToSolutionJSON(svcs: KumoriServices, nodes: SolutionJSONContext["nodes"], deployment: Deployment): KukuSolutionSpec;
|
|
324
|
+
export declare function isComponent(v: Component | Service | Builtin): v is Component;
|
|
325
|
+
export declare function isService(v: Component | Service | Builtin): v is Service;
|
|
326
|
+
export declare function isBuiltin(v: Component | Service | Builtin): v is Builtin;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ComponentServiceToSolutionJSON } from "./component.js";
|
|
2
|
+
import { ServiceToSolutionJSON } from "./service.js";
|
|
3
|
+
import { ResourceToSolutionJSON } from "./resource.js";
|
|
4
|
+
import { isComponentArtifact } from "@kumori/kdsl-lsp/language/generated/ast.js";
|
|
5
|
+
export const CtxId = (ctx) => ctx.path.join(".");
|
|
6
|
+
export const CtxParentId = (ctx) => ctx.path.slice(0, -1).join(".");
|
|
7
|
+
export const WithPath = (ctx, name) => (Object.assign(Object.assign({}, ctx), { path: [...ctx.path, name] }));
|
|
8
|
+
export const AddDeployment = (ctx, dep) => ctx.root.deployments[CtxId(ctx)] = dep;
|
|
9
|
+
/**
|
|
10
|
+
* Convert a deployment artifact to a solution JSON representation.
|
|
11
|
+
* @param deployment - The deployment artifact to convert.
|
|
12
|
+
* @returns The solution JSON representation.
|
|
13
|
+
*/
|
|
14
|
+
export function DeploymentToSolutionJSON(svcs, nodes, deployment) {
|
|
15
|
+
var _a, _b, _c;
|
|
16
|
+
const root = {
|
|
17
|
+
top: deployment.name,
|
|
18
|
+
deployments: {},
|
|
19
|
+
links: [],
|
|
20
|
+
};
|
|
21
|
+
const ctx = { svcs, path: [deployment.name], root, nodes };
|
|
22
|
+
root.deployments[deployment.name] = {
|
|
23
|
+
name: deployment.name,
|
|
24
|
+
meta: deployment.meta,
|
|
25
|
+
config: {
|
|
26
|
+
parameter: (_a = deployment.config) !== null && _a !== void 0 ? _a : {},
|
|
27
|
+
resource: Object.fromEntries(Object.entries((_b = deployment.resource) !== null && _b !== void 0 ? _b : {})
|
|
28
|
+
.map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
|
|
29
|
+
resilience: (_c = deployment.resilience) !== null && _c !== void 0 ? _c : 0,
|
|
30
|
+
scale: {
|
|
31
|
+
detail: (() => {
|
|
32
|
+
var _a;
|
|
33
|
+
if (isComponent(deployment.artifact)) {
|
|
34
|
+
const componentArtifact = ctx.nodes.get(deployment.artifact);
|
|
35
|
+
let componentName = "";
|
|
36
|
+
if (componentArtifact && isComponentArtifact(componentArtifact)) {
|
|
37
|
+
componentName = componentArtifact.name.value.$refText;
|
|
38
|
+
}
|
|
39
|
+
if (componentName === "") {
|
|
40
|
+
throw new Error("Unable to determine component name for scale detail.");
|
|
41
|
+
}
|
|
42
|
+
return { [componentName]: { hsize: typeof deployment.scale === "number" ? deployment.scale : 1 } };
|
|
43
|
+
}
|
|
44
|
+
if (isService(deployment.artifact)) {
|
|
45
|
+
const roles = Object.entries((_a = deployment.artifact.role) !== null && _a !== void 0 ? _a : {});
|
|
46
|
+
return Object.fromEntries(roles.map(([roleName]) => [
|
|
47
|
+
roleName,
|
|
48
|
+
{
|
|
49
|
+
hsize: (deployment.scale &&
|
|
50
|
+
typeof deployment.scale === "object" &&
|
|
51
|
+
!Array.isArray(deployment.scale) &&
|
|
52
|
+
roleName in deployment.scale)
|
|
53
|
+
? deployment.scale[roleName]
|
|
54
|
+
: 1
|
|
55
|
+
}
|
|
56
|
+
]));
|
|
57
|
+
}
|
|
58
|
+
return {};
|
|
59
|
+
})()
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
artifact: (() => {
|
|
63
|
+
if (isComponent(deployment.artifact)) {
|
|
64
|
+
return ComponentServiceToSolutionJSON(ctx, deployment.artifact);
|
|
65
|
+
}
|
|
66
|
+
if (isService(deployment.artifact)) {
|
|
67
|
+
return ServiceToSolutionJSON(ctx, deployment.artifact);
|
|
68
|
+
}
|
|
69
|
+
if (isBuiltin(deployment.artifact)) {
|
|
70
|
+
throw new Error("not implemented: handle builtin");
|
|
71
|
+
}
|
|
72
|
+
throw new Error("unknown artifact");
|
|
73
|
+
})()
|
|
74
|
+
};
|
|
75
|
+
return root;
|
|
76
|
+
}
|
|
77
|
+
export function isComponent(v) {
|
|
78
|
+
return "size" in v;
|
|
79
|
+
}
|
|
80
|
+
export function isService(v) {
|
|
81
|
+
return !(isComponent(v) || isBuiltin(v));
|
|
82
|
+
}
|
|
83
|
+
export function isBuiltin(v) {
|
|
84
|
+
return "id" in v;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=deployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../src/build/helpers/deployment.ts"],"names":[],"mappings":"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"}
|