@kumori/kdsl 0.0.13 → 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.
Files changed (163) hide show
  1. package/dist/build/deployment_spec.d.ts +21095 -0
  2. package/dist/build/deployment_spec.js +292 -0
  3. package/dist/build/deployment_spec.js.map +1 -0
  4. package/dist/build/helpers/builtin.d.ts +17 -0
  5. package/dist/build/helpers/builtin.js +82 -0
  6. package/dist/build/helpers/builtin.js.map +1 -0
  7. package/dist/build/helpers/component.d.ts +17 -0
  8. package/dist/build/helpers/component.js +212 -0
  9. package/dist/build/helpers/component.js.map +1 -0
  10. package/dist/build/helpers/connector.d.ts +13 -0
  11. package/dist/build/helpers/connector.js +190 -0
  12. package/dist/build/helpers/connector.js.map +1 -0
  13. package/dist/build/helpers/deployment.d.ts +326 -0
  14. package/dist/build/helpers/deployment.js +86 -0
  15. package/dist/build/helpers/deployment.js.map +1 -0
  16. package/dist/build/helpers/resource.d.ts +97 -0
  17. package/dist/build/helpers/resource.js +54 -0
  18. package/dist/build/helpers/resource.js.map +1 -0
  19. package/dist/build/helpers/service.d.ts +27 -0
  20. package/dist/build/helpers/service.js +199 -0
  21. package/dist/build/helpers/service.js.map +1 -0
  22. package/dist/build/helpers/utils.d.ts +22 -0
  23. package/dist/build/helpers/utils.js +55 -0
  24. package/dist/build/helpers/utils.js.map +1 -0
  25. package/dist/build/main.d.ts +17 -0
  26. package/dist/build/main.js +139 -0
  27. package/dist/build/main.js.map +1 -0
  28. package/dist/build/solution.d.ts +20 -0
  29. package/dist/build/solution.js +72 -0
  30. package/dist/build/solution.js.map +1 -0
  31. package/dist/check/main.d.ts +21 -0
  32. package/dist/check/main.js +99 -0
  33. package/dist/check/main.js.map +1 -0
  34. package/dist/clean/main.d.ts +11 -0
  35. package/dist/clean/main.js +26 -0
  36. package/dist/clean/main.js.map +1 -0
  37. package/dist/help/main.d.ts +13 -0
  38. package/dist/help/main.js +49 -0
  39. package/dist/help/main.js.map +1 -0
  40. package/dist/help/topic/build.d.ts +2 -0
  41. package/dist/help/topic/build.js +7 -0
  42. package/dist/help/topic/build.js.map +1 -0
  43. package/dist/help/topic/mod_dep.d.ts +2 -0
  44. package/dist/help/topic/mod_dep.js +8 -0
  45. package/dist/help/topic/mod_dep.js.map +1 -0
  46. package/dist/help/topic/mod_dl.d.ts +2 -0
  47. package/dist/help/topic/mod_dl.js +25 -0
  48. package/dist/help/topic/mod_dl.js.map +1 -0
  49. package/dist/index/create/main.d.ts +14 -0
  50. package/dist/index/create/main.js +264 -0
  51. package/dist/index/create/main.js.map +1 -0
  52. package/dist/index/main.d.ts +8 -0
  53. package/dist/index/main.js +17 -0
  54. package/dist/index/main.js.map +1 -0
  55. package/dist/lib/build.d.ts +42 -0
  56. package/dist/lib/build.js +28 -0
  57. package/dist/lib/build.js.map +1 -0
  58. package/dist/lib/check.d.ts +41 -0
  59. package/dist/lib/check.js +15 -0
  60. package/dist/lib/check.js.map +1 -0
  61. package/dist/lib/clean.d.ts +31 -0
  62. package/dist/lib/clean.js +1 -0
  63. package/dist/lib/clean.js.map +1 -0
  64. package/dist/lib/index-cmd.d.ts +54 -0
  65. package/dist/lib/index-cmd.js +57 -0
  66. package/dist/lib/index-cmd.js.map +1 -0
  67. package/dist/lib/index.d.ts +56 -0
  68. package/dist/lib/index.js +117 -0
  69. package/dist/lib/index.js.map +1 -0
  70. package/dist/lib/io/lib.kumori +5 -0
  71. package/dist/lib/kumori/builtin/httpinbound.h.kumori +27 -0
  72. package/dist/lib/kumori/builtin/tcpinbound.h.kumori +25 -0
  73. package/dist/lib/kumori/builtin.kumori +18 -0
  74. package/dist/lib/kumori/component.kumori +120 -0
  75. package/dist/lib/kumori/deployment.kumori +16 -0
  76. package/dist/lib/kumori/resource.kumori +25 -0
  77. package/dist/lib/kumori/service.kumori +49 -0
  78. package/dist/lib/kumori/shared.kumori +11 -0
  79. package/dist/lib/kumori/sized.kumori +25 -0
  80. package/dist/lib/logger.d.ts +10 -0
  81. package/dist/lib/logger.js +23 -0
  82. package/dist/lib/logger.js.map +1 -0
  83. package/dist/lib/mod.d.ts +156 -0
  84. package/dist/lib/mod.js +70 -0
  85. package/dist/lib/mod.js.map +1 -0
  86. package/dist/lib/registry.d.ts +61 -0
  87. package/dist/lib/registry.js +1 -0
  88. package/dist/lib/registry.js.map +1 -0
  89. package/dist/lib/sized.kumori +8 -0
  90. package/dist/lib/std.kumori +8 -0
  91. package/dist/lib/strconv/lib.kumori +11 -0
  92. package/dist/lib/types.d.ts +26 -0
  93. package/dist/lib/types.js +2 -0
  94. package/dist/lib/types.js.map +1 -0
  95. package/dist/main.d.ts +1 -0
  96. package/dist/main.js +35 -0
  97. package/dist/main.js.map +1 -0
  98. package/dist/mod/checksum/main.d.ts +11 -0
  99. package/dist/mod/checksum/main.js +33 -0
  100. package/dist/mod/checksum/main.js.map +1 -0
  101. package/dist/mod/dependency/main.d.ts +19 -0
  102. package/dist/mod/dependency/main.js +156 -0
  103. package/dist/mod/dependency/main.js.map +1 -0
  104. package/dist/mod/download/functions.d.ts +53 -0
  105. package/dist/mod/download/functions.js +235 -0
  106. package/dist/mod/download/functions.js.map +1 -0
  107. package/dist/mod/download/main.d.ts +26 -0
  108. package/dist/mod/download/main.js +89 -0
  109. package/dist/mod/download/main.js.map +1 -0
  110. package/dist/mod/init/main.d.ts +13 -0
  111. package/dist/mod/init/main.js +66 -0
  112. package/dist/mod/init/main.js.map +1 -0
  113. package/dist/mod/jsonschema/gen/main.d.ts +11 -0
  114. package/dist/mod/jsonschema/gen/main.js +281 -0
  115. package/dist/mod/jsonschema/gen/main.js.map +1 -0
  116. package/dist/mod/jsonschema/get/kdslschema.d.ts +28 -0
  117. package/dist/mod/jsonschema/get/kdslschema.js +3 -0
  118. package/dist/mod/jsonschema/get/kdslschema.js.map +1 -0
  119. package/dist/mod/jsonschema/get/main.d.ts +76 -0
  120. package/dist/mod/jsonschema/get/main.js +338 -0
  121. package/dist/mod/jsonschema/get/main.js.map +1 -0
  122. package/dist/mod/jsonschema/main.d.ts +8 -0
  123. package/dist/mod/jsonschema/main.js +20 -0
  124. package/dist/mod/jsonschema/main.js.map +1 -0
  125. package/dist/mod/main.d.ts +8 -0
  126. package/dist/mod/main.js +27 -0
  127. package/dist/mod/main.js.map +1 -0
  128. package/dist/mod/update/main.d.ts +17 -0
  129. package/dist/mod/update/main.js +69 -0
  130. package/dist/mod/update/main.js.map +1 -0
  131. package/dist/registry/add.d.ts +15 -0
  132. package/dist/registry/add.js +53 -0
  133. package/dist/registry/add.js.map +1 -0
  134. package/dist/registry/list.d.ts +15 -0
  135. package/dist/registry/list.js +29 -0
  136. package/dist/registry/list.js.map +1 -0
  137. package/dist/registry/main.d.ts +8 -0
  138. package/dist/registry/main.js +21 -0
  139. package/dist/registry/main.js.map +1 -0
  140. package/dist/registry/remove.d.ts +15 -0
  141. package/dist/registry/remove.js +34 -0
  142. package/dist/registry/remove.js.map +1 -0
  143. package/dist/util/err-format.d.ts +2 -0
  144. package/dist/util/err-format.js +11 -0
  145. package/dist/util/err-format.js.map +1 -0
  146. package/dist/util/err-handler.d.ts +3 -0
  147. package/dist/util/err-handler.js +11 -0
  148. package/dist/util/err-handler.js.map +1 -0
  149. package/dist/util.d.ts +2 -0
  150. package/dist/util.js +2 -0
  151. package/dist/util.js.map +1 -0
  152. package/dist/version.d.ts +2 -0
  153. package/dist/version.js +6 -0
  154. package/dist/version.js.map +1 -0
  155. package/out/lib/build.cjs +29 -0
  156. package/out/lib/check.cjs +16 -0
  157. package/out/lib/clean.cjs +2 -0
  158. package/out/lib/index-cmd.cjs +58 -0
  159. package/out/lib/index.cjs +118 -0
  160. package/out/lib/mod.cjs +71 -0
  161. package/out/lib/registry.cjs +2 -0
  162. package/out/main.cjs +172 -172
  163. 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":"AAQA,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAA;AAShF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAwB,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC7E,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAwB,EAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAChG,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAwB,EAAE,IAAY,EAAuB,EAAE,CAAC,iCAAM,GAAG,KAAE,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAG,CAAA;AAChI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAwB,EAAE,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;AAExH;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAoB,EAAE,KAAmC,EAAE,UAAsB;;IACtH,MAAM,IAAI,GAAqB;QAC3B,GAAG,EAAE,UAAU,CAAC,IAAI;QACpB,WAAW,EAAE,EAAE;QACf,KAAK,EAAE,EAAE;KACZ,CAAA;IAED,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAE/E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;QAChC,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM,EAAE;YACJ,SAAS,EAAE,MAAA,UAAU,CAAC,MAAM,mCAAI,EAAE;YAClC,QAAQ,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAA,UAAU,CAAC,QAAQ,mCAAI,EAAE,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAa,CAAC,CAAU,CAAC,CAC5E;YACD,UAAU,EAAE,MAAA,UAAU,CAAC,UAAU,mCAAI,CAAC;YACtC,KAAK,EAAE;gBACH,MAAM,EAAE,CAAC,GAAG,EAAE;;oBACV,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACnC,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;wBAC5D,IAAI,aAAa,GAAG,EAAE,CAAA;wBACtB,IAAI,iBAAiB,IAAI,mBAAmB,CAAC,iBAAiB,CAAC,EAAE,CAAC;4BAC9D,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;wBACzD,CAAC;wBAED,IAAI,aAAa,KAAK,EAAE,EAAE,CAAC;4BACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;wBAC3E,CAAC;wBAED,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBACvG,CAAC;oBAED,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACjC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAA,UAAU,CAAC,QAAQ,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;wBAC7D,OAAO,MAAM,CAAC,WAAW,CACrB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;4BACtB,QAAQ;4BACR;gCACI,KAAK,EAAE,CACH,UAAU,CAAC,KAAK;oCAChB,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ;oCACpC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;oCAChC,QAAQ,IAAI,UAAU,CAAC,KAAK,CAC/B;oCACG,CAAC,CAAE,UAAU,CAAC,KAAgC,CAAC,QAAQ,CAAC;oCACxD,CAAC,CAAC,CAAC;6BACV;yBACJ,CAAC,CACL,CAAC;oBACN,CAAC;oBACD,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,EAAE;aACP;SACJ;QACD,QAAQ,EAAE,CAAC,GAAG,EAAE;YACZ,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,OAAO,8BAA8B,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YAAC,CAAC;YACzG,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,OAAO,qBAAqB,CAAC,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAA;YAAC,CAAC;YAC9F,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;YAAC,CAAC;YAC1F,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACvC,CAAC,CAAC,EAAE;KACP,CAAA;IAED,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAgC;IACxD,OAAO,MAAM,IAAI,CAAC,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAgC;IACtD,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAgC;IACtD,OAAO,IAAI,IAAI,CAAC,CAAA;AACpB,CAAC"}