@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.
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,292 @@
1
+ import { z } from "zod";
2
+ /*
3
+
4
+ The types here are a typescript translation of the solution.json
5
+ specification as described in the [client-go] library.
6
+
7
+ Source:
8
+ https://gitlab.com/kumori/platform/controllers/libraries/client-go/-/blob/master/pkg/apis/kumori/v1/kuku-solution.go
9
+
10
+ */
11
+ // A raw JSON blob (Go's runtime.RawExtension)
12
+ export const RawExtension = z.any();
13
+ export const UnitKind = z.enum(["storage", "cpu", "ram", "bandwidth"]);
14
+ // We assume ResourceAmount is represented as a string (e.g. "100m")
15
+ export const ResourceAmount = z.object({
16
+ kind: UnitKind,
17
+ size: z.number(),
18
+ unit: z.string(),
19
+ });
20
+ // Basic types / aliases
21
+ export const Version = z.array(z.number()).length(3);
22
+ export const Name = z.string();
23
+ export const Module = z.string();
24
+ export const RefKind = z.enum(["deployment", "service", "component"]);
25
+ export const Domain = z.string();
26
+ export const SrvProtocol = z.enum(["http", "tcp", "udp", "grpc"]);
27
+ export const ConnectorType = z.enum(["lb", "full"]);
28
+ export const UpdatesType = z.literal("free");
29
+ export const StartupGraceWindowUnit = z.enum(["attempts", "ms"]);
30
+ // -----------------------------------------------------------------------------
31
+ // Reference and Artifact
32
+ export const Reference = z.object({
33
+ name: Name,
34
+ module: Module.optional(),
35
+ kind: RefKind,
36
+ domain: Domain,
37
+ version: Version,
38
+ prerelease: z.string().optional(),
39
+ buildmetadata: z.string().optional(),
40
+ });
41
+ export const Artifact = z.object({
42
+ ref: Reference,
43
+ spec: Version,
44
+ });
45
+ // -----------------------------------------------------------------------------
46
+ // ScaleSpec (recursive) & Configuration
47
+ const baseScaleSpec = z.object({
48
+ qos: RawExtension.optional(),
49
+ hsize: z.number().optional(),
50
+ });
51
+ export const ScaleSpec = baseScaleSpec.extend({
52
+ detail: z.lazy(() => z.record(ScaleSpec).optional()),
53
+ });
54
+ export const ConfigurationResource = z.object({
55
+ certificate: z.string().optional(),
56
+ ca: z.string().optional(),
57
+ domain: z.string().optional(),
58
+ port: z.string().optional(),
59
+ secret: z.string().optional(),
60
+ volume: RawExtension.optional(),
61
+ });
62
+ export const Configuration = z.object({
63
+ parameter: z.record(RawExtension).optional(),
64
+ resource: z.record(ConfigurationResource).optional(),
65
+ resilience: z.number(),
66
+ scale: ScaleSpec.optional(),
67
+ });
68
+ // -----------------------------------------------------------------------------
69
+ // InlineVolumeSpec
70
+ export const InlineVolumeSpec = z.object({
71
+ kind: z.string().optional(),
72
+ size: z.number().optional(),
73
+ unit: z.string().optional(),
74
+ type: z.string().optional(),
75
+ });
76
+ // -----------------------------------------------------------------------------
77
+ // Hub and Image
78
+ export const Hub = z.object({
79
+ name: z.string(),
80
+ secret: z.string().optional(),
81
+ });
82
+ export const Image = z.object({
83
+ hub: Hub.optional(),
84
+ tag: z.string(),
85
+ });
86
+ // -----------------------------------------------------------------------------
87
+ // User and ContainerSize
88
+ export const User = z.object({
89
+ userid: z.number(),
90
+ groupid: z.number(),
91
+ });
92
+ export const ContainerSize = z.object({
93
+ cpu: ResourceAmount,
94
+ mincpu: z.number(),
95
+ memory: ResourceAmount,
96
+ });
97
+ // -----------------------------------------------------------------------------
98
+ // Profile and ComponentSize
99
+ export const Profile = z.object({
100
+ threadability: z.string(),
101
+ iopsintensive: z.boolean(),
102
+ });
103
+ export const ComponentSize = z.object({
104
+ mincpu: ResourceAmount,
105
+ bandwidth: ResourceAmount,
106
+ minbandwidth: z.number(),
107
+ });
108
+ // -----------------------------------------------------------------------------
109
+ // Probe Protocols
110
+ export const HTTPProbeProtocol = z.object({
111
+ port: z.number(),
112
+ path: z.string(),
113
+ });
114
+ export const TCPProbeProtocol = z.object({
115
+ port: z.number(),
116
+ });
117
+ export const ExecProbeProtocol = z.object({
118
+ path: z.string(),
119
+ });
120
+ export const ProbeProtocol = z.object({
121
+ http: HTTPProbeProtocol.optional(),
122
+ tcp: TCPProbeProtocol.optional(),
123
+ exec: ExecProbeProtocol.optional(),
124
+ });
125
+ export const HTTPOnlyProbeProtocol = z.object({
126
+ http: HTTPProbeProtocol.optional(),
127
+ });
128
+ // -----------------------------------------------------------------------------
129
+ // StartupGraceWindow and Probes
130
+ export const StartupGraceWindow = z.object({
131
+ unit: StartupGraceWindowUnit,
132
+ duration: z.number(),
133
+ probe: z.boolean(),
134
+ });
135
+ export const LivenessProbeAttributes = z.object({
136
+ protocol: ProbeProtocol,
137
+ startupGraceWindow: StartupGraceWindow.optional(),
138
+ frequency: RawExtension.optional(),
139
+ timeout: z.number().optional(),
140
+ });
141
+ export const ReadinessProbeAttributes = z.object({
142
+ protocol: ProbeProtocol,
143
+ frequency: RawExtension.optional(),
144
+ timeout: z.number().optional(),
145
+ });
146
+ export const PrometheusMetricsProbeAttributes = z.object({
147
+ protocol: HTTPOnlyProbeProtocol,
148
+ });
149
+ export const Probes = z.object({
150
+ liveness: LivenessProbeAttributes.optional(),
151
+ readiness: ReadinessProbeAttributes.optional(),
152
+ pmetrics: PrometheusMetricsProbeAttributes.optional(),
153
+ });
154
+ // -----------------------------------------------------------------------------
155
+ // ResourceRef, Env, and MountPoint
156
+ export const ResourceRef = z.object({
157
+ secret: z.string().optional(),
158
+ port: z.string().optional(),
159
+ domain: z.string().optional(),
160
+ certificate: z.string().optional(),
161
+ ca: z.string().optional(),
162
+ });
163
+ export const Env = ResourceRef.extend({
164
+ value: z.union([z.string(), z.number(), z.boolean()]).optional(),
165
+ enableTemplate: z.boolean().optional(),
166
+ });
167
+ export const MountPointData = ResourceRef.extend({
168
+ value: z.string().optional(),
169
+ });
170
+ export const MountPoint = z.object({
171
+ data: MountPointData.optional(),
172
+ format: z.union([z.literal("text"), z.literal("json"), z.literal("yaml")]).optional(),
173
+ group: z.number().optional(),
174
+ mode: z.number().optional(),
175
+ path: z.string().optional(),
176
+ user: z.number().optional(),
177
+ rebootOnUpdate: z.boolean().optional(),
178
+ volume: z.string().optional(),
179
+ enableTemplate: z.boolean().optional(),
180
+ });
181
+ export const Mapping = z.object({
182
+ env: z.record(Env).optional(),
183
+ filesystem: z.record(MountPoint).optional(),
184
+ });
185
+ // -----------------------------------------------------------------------------
186
+ // Code
187
+ export const Code = z.object({
188
+ name: z.string(),
189
+ image: Image,
190
+ entrypoint: z.array(z.string()).optional(),
191
+ cmd: z.array(z.string()).optional(),
192
+ mapping: Mapping.optional(),
193
+ size: ContainerSize.optional(),
194
+ user: User.optional(),
195
+ init: z.boolean().optional(),
196
+ });
197
+ // -----------------------------------------------------------------------------
198
+ // ArtifactDescription and ComponentDescription
199
+ export const ArtifactDescription = z.object({
200
+ builtin: z.boolean(),
201
+ config: Configuration.optional(),
202
+ srv: z.lazy(() => MicroService).optional(),
203
+ });
204
+ export const ComponentDescription = ArtifactDescription.extend({
205
+ size: ComponentSize,
206
+ profile: Profile.optional(),
207
+ code: z.record(Code).optional(),
208
+ probe: z.record(Probes).optional(),
209
+ });
210
+ // -----------------------------------------------------------------------------
211
+ // ComponentArtifact
212
+ export const ComponentArtifact = Artifact.extend({
213
+ description: ComponentDescription.optional(),
214
+ });
215
+ // -----------------------------------------------------------------------------
216
+ // Role
217
+ export const Role = z.object({
218
+ name: z.string(),
219
+ config: Configuration.optional(),
220
+ updates: UpdatesType.optional(),
221
+ meta: RawExtension.optional(),
222
+ artifact: ComponentArtifact
223
+ });
224
+ // -----------------------------------------------------------------------------
225
+ // Connector types
226
+ export const ConnectorEndpoint = z.object({
227
+ role: z.string(),
228
+ channel: z.string(),
229
+ });
230
+ export const ConnectorTag = z.object({
231
+ meta: RawExtension.optional(),
232
+ links: z.array(ConnectorEndpoint),
233
+ });
234
+ export const Connector = z.object({
235
+ kind: ConnectorType,
236
+ clients: z.array(ConnectorEndpoint),
237
+ servers: z.array(ConnectorTag),
238
+ });
239
+ // -----------------------------------------------------------------------------
240
+ // ServiceDescription and ServiceArtifact
241
+ export const ServiceDescription = ArtifactDescription.extend({
242
+ role: z.record(Role).optional(),
243
+ connector: z.record(Connector).optional(),
244
+ });
245
+ export const ServiceArtifact = Artifact.extend({
246
+ description: ServiceDescription,
247
+ });
248
+ // -----------------------------------------------------------------------------
249
+ // Channel, Client, Server, Duplex, MicroService
250
+ export const Channel = z.object({
251
+ inherited: z.boolean(),
252
+ protocol: SrvProtocol,
253
+ });
254
+ export const Client = Channel.extend({
255
+ port: z.optional(z.number()),
256
+ portnum: z.optional(z.number())
257
+ });
258
+ export const Server = Channel.extend({
259
+ port: z.optional(z.number()),
260
+ portnum: z.optional(z.number()),
261
+ });
262
+ // Duplex is an alias for Server
263
+ export const Duplex = Server;
264
+ export const MicroService = z.object({
265
+ duplex: z.record(Duplex).optional(),
266
+ client: z.record(Client).optional(),
267
+ server: z.record(Server).optional(),
268
+ });
269
+ // -----------------------------------------------------------------------------
270
+ // V3DeploymentSpec
271
+ export const V3DeploymentSpec = z.object({
272
+ name: z.string(),
273
+ meta: RawExtension.optional(),
274
+ up: z.string().optional(),
275
+ artifact: ServiceArtifact.optional(),
276
+ config: Configuration.optional(),
277
+ });
278
+ // Link connects a source deployment with a target deployment using service channels
279
+ export const Link = z.object({
280
+ s_d: z.string(), // Source Deployment
281
+ s_c: z.string(), // Source Channel
282
+ t_d: z.string(), // Target Deployment
283
+ t_c: z.string(), // Target Channel
284
+ meta: RawExtension.optional(),
285
+ });
286
+ // KukuSolutionSpec is the custom spec of Deployment
287
+ export const KukuSolutionSpec = z.object({
288
+ deployments: z.record(V3DeploymentSpec),
289
+ links: z.array(Link).optional(),
290
+ top: z.string(),
291
+ });
292
+ //# sourceMappingURL=deployment_spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment_spec.js","sourceRoot":"","sources":["../../src/build/deployment_spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Builtin } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/builtin.js";
2
+ import { ServiceArtifact, V3DeploymentSpec } from "../deployment_spec.js";
3
+ import { SolutionJSONContext } from "./deployment.js";
4
+ /**
5
+ * Converts a built-in service definition into the solution JSON format.
6
+ * @param _ The solution JSON context.
7
+ * @param builtin The built-in service to convert.
8
+ * @returns The service artifact representation of the built-in service.
9
+ */
10
+ export declare function BuiltinToSolutionJSON(builtin: Builtin): ServiceArtifact;
11
+ /**
12
+ * Converts a built-in deployment into the solution JSON format.
13
+ * @param ctx The solution JSON context.
14
+ * @param builtin The built-in deployment to convert.
15
+ * @returns The V3 deployment spec representation of the built-in deployment.
16
+ */
17
+ export declare function BuiltinV3DeploymentToSolutionJson(ctx: SolutionJSONContext, builtin: Builtin): V3DeploymentSpec;
@@ -0,0 +1,82 @@
1
+ import { SemVer } from "@kumori/kdsl-lsp/util/semver.js";
2
+ import { CtxId, CtxParentId } from "./deployment.js";
3
+ import { ResourceToSolutionJSON } from "./resource.js";
4
+ /**
5
+ * Converts a built-in service definition into the solution JSON format.
6
+ * @param _ The solution JSON context.
7
+ * @param builtin The built-in service to convert.
8
+ * @returns The service artifact representation of the built-in service.
9
+ */
10
+ export function BuiltinToSolutionJSON(builtin) {
11
+ var _a, _b, _c;
12
+ const version = SemVer(builtin.id.version);
13
+ return {
14
+ spec: [1, 0],
15
+ ref: {
16
+ version: [version.major, version.minor, version.patch],
17
+ kind: builtin.id.kind,
18
+ domain: builtin.id.domain,
19
+ module: builtin.id.module,
20
+ name: builtin.id.name,
21
+ },
22
+ description: {
23
+ builtin: true,
24
+ srv: {
25
+ client: Object.fromEntries(Object.entries((_a = builtin.srv.client) !== null && _a !== void 0 ? _a : {})
26
+ .map(([k]) => [k, { protocol: "http", inherited: false }])),
27
+ server: Object.fromEntries(Object.entries((_b = builtin.srv.server) !== null && _b !== void 0 ? _b : {}).map(([k, v]) => {
28
+ let value;
29
+ if (typeof v === "string") {
30
+ value = { port: 80, portnum: 1, inherited: false, protocol: v, };
31
+ }
32
+ else {
33
+ value = Object.assign(Object.assign({}, v), { inherited: false });
34
+ }
35
+ return [k, value];
36
+ })),
37
+ duplex: Object.fromEntries(Object.entries((_c = builtin.srv.duplex) !== null && _c !== void 0 ? _c : {}).map(([k, v]) => {
38
+ let value;
39
+ if (typeof v === "string") {
40
+ value = { port: 80, portnum: 1, inherited: false, protocol: v, };
41
+ }
42
+ else {
43
+ value = Object.assign(Object.assign({}, v), { inherited: false });
44
+ }
45
+ return [k, value];
46
+ })),
47
+ },
48
+ config: {
49
+ resilience: 0,
50
+ scale: {},
51
+ parameter: builtin.config,
52
+ resource: Object.fromEntries(Object.entries(builtin.resource)
53
+ .map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
54
+ },
55
+ connector: {},
56
+ role: {}
57
+ }
58
+ };
59
+ }
60
+ /**
61
+ * Converts a built-in deployment into the solution JSON format.
62
+ * @param ctx The solution JSON context.
63
+ * @param builtin The built-in deployment to convert.
64
+ * @returns The V3 deployment spec representation of the built-in deployment.
65
+ */
66
+ export function BuiltinV3DeploymentToSolutionJson(ctx, builtin) {
67
+ var _a, _b;
68
+ return {
69
+ name: CtxId(ctx),
70
+ up: CtxParentId(ctx),
71
+ meta: {},
72
+ config: {
73
+ resilience: 0,
74
+ scale: {},
75
+ parameter: (_a = builtin.config) !== null && _a !== void 0 ? _a : {},
76
+ resource: Object.fromEntries(Object.entries((_b = builtin.resource) !== null && _b !== void 0 ? _b : {})
77
+ .map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
78
+ },
79
+ artifact: BuiltinToSolutionJSON(builtin)
80
+ };
81
+ }
82
+ //# sourceMappingURL=builtin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../src/build/helpers/builtin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Component } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/component.js";
2
+ import { ComponentArtifact, ServiceArtifact } from "../deployment_spec.js";
3
+ import { SolutionJSONContext } from "./deployment.js";
4
+ /**
5
+ * Converts a component service definition into the solution JSON format.
6
+ * @param ctx The solution JSON context.
7
+ * @param component The component to convert.
8
+ * @returns The service artifact representation of the component.
9
+ */
10
+ export declare function ComponentServiceToSolutionJSON(ctx: SolutionJSONContext, component: Component): ServiceArtifact;
11
+ /**
12
+ * Converts a component definition into the solution JSON format.
13
+ * @param ctx The solution JSON context.
14
+ * @param component The component to convert.
15
+ * @returns The component artifact representation of the component.
16
+ */
17
+ export declare function ComponentToSolutionJSON(ctx: SolutionJSONContext, component: Component): ComponentArtifact;
@@ -0,0 +1,212 @@
1
+ import { ToUnits } from "@kumori/kdsl-lsp/util/sized.js";
2
+ import { ResourceToSolutionJSON } from "./resource.js";
3
+ import { ComponentImageToSolutionJSON, ReferenceUpdater } from "./utils.js";
4
+ import { isComponentArtifact } from "@kumori/kdsl-lsp/language/generated/ast.js";
5
+ /**
6
+ * Converts a component service definition into the solution JSON format.
7
+ * @param ctx The solution JSON context.
8
+ * @param component The component to convert.
9
+ * @returns The service artifact representation of the component.
10
+ */
11
+ export function ComponentServiceToSolutionJSON(ctx, component) {
12
+ const ref = {
13
+ version: [0, 0, 0],
14
+ kind: "service",
15
+ domain: "unknown",
16
+ module: "unknown",
17
+ name: "unknown",
18
+ };
19
+ const mod = ctx.svcs.shared.references.KumoriModules;
20
+ const modifiers = ReferenceUpdater(mod, ctx.nodes.get(component));
21
+ for (const m of modifiers) {
22
+ m(ref);
23
+ }
24
+ const componentArtifact = ctx.nodes.get(component);
25
+ let componentName = "";
26
+ if (componentArtifact && isComponentArtifact(componentArtifact)) {
27
+ componentName = componentArtifact.name.value.$refText;
28
+ }
29
+ if (componentName === "") {
30
+ throw new Error("Unable to determine component name for service artifact conversion.");
31
+ }
32
+ return {
33
+ spec: [1, 0],
34
+ ref,
35
+ description: {
36
+ builtin: false,
37
+ connector: {},
38
+ config: {
39
+ resilience: 0,
40
+ scale: {},
41
+ parameter: {},
42
+ resource: {},
43
+ },
44
+ role: {
45
+ [componentName]: {
46
+ name: componentName,
47
+ meta: {},
48
+ artifact: ComponentToSolutionJSON(ctx, component),
49
+ }
50
+ }
51
+ }
52
+ };
53
+ }
54
+ /**
55
+ * Converts a component definition into the solution JSON format.
56
+ * @param ctx The solution JSON context.
57
+ * @param component The component to convert.
58
+ * @returns The component artifact representation of the component.
59
+ */
60
+ export function ComponentToSolutionJSON(ctx, component) {
61
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
62
+ const ref = {
63
+ version: [0, 0, 0],
64
+ kind: "component",
65
+ domain: "unknown",
66
+ module: "unknown",
67
+ name: "unknown",
68
+ };
69
+ const mod = ctx.svcs.shared.references.KumoriModules;
70
+ const modifiers = ReferenceUpdater(mod, ctx.nodes.get(component));
71
+ for (const m of modifiers) {
72
+ m(ref);
73
+ }
74
+ /**
75
+ * Converts a container code definition object into the Code field for the solution JSON.
76
+ * Accepts both regular and init containers (already as objects).
77
+ */
78
+ function ContainerToCode(code, init = false) {
79
+ return Object.fromEntries(Object.entries(code !== null && code !== void 0 ? code : {}).map(([k, v]) => {
80
+ var _a, _b;
81
+ const name = k;
82
+ return [k, {
83
+ name,
84
+ init,
85
+ entrypoint: v.entrypoint,
86
+ image: ComponentImageToSolutionJSON(v.image),
87
+ cmd: v.cmd,
88
+ size: {
89
+ memory: Object.assign(Object.assign({}, v.size.memory), { kind: "ram" }),
90
+ cpu: Object.assign(Object.assign({}, v.size.cpu), { kind: "cpu" }),
91
+ mincpu: v.size.mincpu ? v.size.mincpu.size : v.size.cpu.size,
92
+ },
93
+ mapping: {
94
+ filesystem: Object.fromEntries(Object.entries((_a = v.fs) !== null && _a !== void 0 ? _a : {}).map(([k, v]) => [k, fileToMountPoint(k, v)])),
95
+ env: Object.fromEntries(Object.entries((_b = v.env) !== null && _b !== void 0 ? _b : {}).map(([k, v]) => {
96
+ const key = k;
97
+ const value = (() => {
98
+ if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") {
99
+ return { value: String(v) };
100
+ }
101
+ return v;
102
+ })();
103
+ return [key, value];
104
+ })),
105
+ }
106
+ }];
107
+ }));
108
+ }
109
+ // Convert component.init from array to object with INIT_X keys, since
110
+ // init containers' definition don't include keys, but the solution JSON
111
+ // does need keys for these containers.
112
+ const normalizedInit = Object.fromEntries(((_a = component.init) !== null && _a !== void 0 ? _a : []).map((v, idx) => [`INIT_${idx}`, v]));
113
+ // Compose code and init containers
114
+ const codeObj = ContainerToCode(component.code);
115
+ const initObj = ContainerToCode(normalizedInit, true);
116
+ return {
117
+ spec: [1, 0],
118
+ ref,
119
+ description: {
120
+ builtin: false,
121
+ config: {
122
+ resilience: 0, // Note that the resilience is 0 for an instance of a component.
123
+ scale: { hsize: 1 },
124
+ parameter: component.config,
125
+ resource: Object.fromEntries(Object.entries((_b = component.resource) !== null && _b !== void 0 ? _b : {})
126
+ .map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
127
+ },
128
+ size: {
129
+ bandwidth: Object.assign(Object.assign({}, component.size.bandwidth), { kind: "bandwidth" }),
130
+ minbandwidth: Math.ceil(ToUnits((_c = component.size.minbandwidth) !== null && _c !== void 0 ? _c : component.size.bandwidth, component.size.bandwidth.unit).size),
131
+ mincpu: Object.assign(Object.assign({}, component.size.mincpu), { kind: "cpu" })
132
+ },
133
+ profile: {
134
+ threadability: "*",
135
+ iopsintensive: false,
136
+ },
137
+ srv: {
138
+ client: Object.fromEntries(Object.entries((_e = (_d = component.srv) === null || _d === void 0 ? void 0 : _d.client) !== null && _e !== void 0 ? _e : {})
139
+ .map(([k, v]) => [k, { protocol: v, inherited: false }])),
140
+ server: Object.fromEntries(Object.entries((_g = (_f = component.srv) === null || _f === void 0 ? void 0 : _f.server) !== null && _g !== void 0 ? _g : {}).map(([k, v]) => {
141
+ let value;
142
+ if (typeof v === "string") {
143
+ value = { port: 80, portnum: 1, inherited: false, protocol: v, };
144
+ }
145
+ else {
146
+ value = Object.assign(Object.assign({}, v), { portnum: 1, inherited: false });
147
+ }
148
+ return [k, value];
149
+ })),
150
+ duplex: Object.fromEntries(Object.entries((_j = (_h = component.srv) === null || _h === void 0 ? void 0 : _h.duplex) !== null && _j !== void 0 ? _j : {}).map(([k, v]) => {
151
+ let value;
152
+ if (typeof v === "string") {
153
+ value = { port: 80, portnum: 1, inherited: false, protocol: v, };
154
+ }
155
+ else {
156
+ value = Object.assign(Object.assign({}, v), { portnum: 1, inherited: false });
157
+ }
158
+ return [k, value];
159
+ })),
160
+ },
161
+ code: Object.assign(Object.assign({}, initObj), codeObj),
162
+ probe: Object.fromEntries(Object.entries((_k = component.probe) !== null && _k !== void 0 ? _k : {}).map(([k, v]) => {
163
+ return [k, v];
164
+ }))
165
+ }
166
+ };
167
+ }
168
+ /**
169
+ * Maps a file system entry to a MountPoint.
170
+ * Throws if the entry is invalid or the kind is unknown.
171
+ */
172
+ function fileToMountPoint(k, v) {
173
+ var _a, _b, _c, _d;
174
+ if (typeof v === "string") {
175
+ return {
176
+ path: k,
177
+ data: { value: v },
178
+ format: "text",
179
+ };
180
+ }
181
+ if (typeof v === "object") {
182
+ if ("volume" in v) {
183
+ return {
184
+ path: k,
185
+ volume: v.volume,
186
+ };
187
+ }
188
+ if ("data" in v) {
189
+ return {
190
+ path: k,
191
+ data: { value: v.data },
192
+ format: (_a = v.format) !== null && _a !== void 0 ? _a : "text",
193
+ mode: (_b = v.mode) !== null && _b !== void 0 ? _b : 0o644,
194
+ };
195
+ }
196
+ const singleKeyKinds = ["secret", "port", "domain", "certificate", "ca"];
197
+ const foundKey = singleKeyKinds.find((key) => key in v);
198
+ if (foundKey) {
199
+ // We assume that if the key is found, then it exists in v.
200
+ // Yes, this is weak, but I sacrifice type safety for code clarity here.
201
+ const key = foundKey;
202
+ return {
203
+ path: k,
204
+ data: { [key]: v[key] },
205
+ format: (_c = v.format) !== null && _c !== void 0 ? _c : "text",
206
+ mode: (_d = v.mode) !== null && _d !== void 0 ? _d : 0o644,
207
+ };
208
+ }
209
+ }
210
+ throw new Error(`Unknown key '${k}': ${JSON.stringify(v)}`);
211
+ }
212
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/build/helpers/component.ts"],"names":[],"mappings":"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"}