@kumori/kdsl 0.0.14 → 0.0.16

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 (171) hide show
  1. package/dist/build/deployment_spec.d.ts +2586 -0
  2. package/dist/build/deployment_spec.js +293 -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 +80 -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 +189 -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 +85 -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 +196 -0
  21. package/dist/build/helpers/service.js.map +1 -0
  22. package/dist/build/helpers/utils.d.ts +30 -0
  23. package/dist/build/helpers/utils.js +77 -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 +188 -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 +71 -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/deployment/gen/deployment-template.kumori +33 -0
  38. package/dist/deployment/gen/main.d.ts +15 -0
  39. package/dist/deployment/gen/main.js +158 -0
  40. package/dist/deployment/gen/main.js.map +1 -0
  41. package/dist/deployment/gen/types.d.ts +27 -0
  42. package/dist/deployment/gen/types.js +2 -0
  43. package/dist/deployment/gen/types.js.map +1 -0
  44. package/dist/deployment/main.d.ts +8 -0
  45. package/dist/deployment/main.js +17 -0
  46. package/dist/deployment/main.js.map +1 -0
  47. package/dist/help/main.d.ts +13 -0
  48. package/dist/help/main.js +49 -0
  49. package/dist/help/main.js.map +1 -0
  50. package/dist/help/topic/build.d.ts +2 -0
  51. package/dist/help/topic/build.js +7 -0
  52. package/dist/help/topic/build.js.map +1 -0
  53. package/dist/help/topic/mod_dep.d.ts +2 -0
  54. package/dist/help/topic/mod_dep.js +8 -0
  55. package/dist/help/topic/mod_dep.js.map +1 -0
  56. package/dist/help/topic/mod_dl.d.ts +2 -0
  57. package/dist/help/topic/mod_dl.js +25 -0
  58. package/dist/help/topic/mod_dl.js.map +1 -0
  59. package/dist/index/create/main.d.ts +14 -0
  60. package/dist/index/create/main.js +286 -0
  61. package/dist/index/create/main.js.map +1 -0
  62. package/dist/index/main.d.ts +8 -0
  63. package/dist/index/main.js +17 -0
  64. package/dist/index/main.js.map +1 -0
  65. package/dist/lib/build.d.ts +42 -0
  66. package/dist/lib/build.js +42 -0
  67. package/dist/lib/build.js.map +1 -0
  68. package/dist/lib/check.d.ts +41 -0
  69. package/dist/lib/check.js +45 -0
  70. package/dist/lib/check.js.map +1 -0
  71. package/dist/lib/clean.d.ts +31 -0
  72. package/dist/lib/clean.js +39 -0
  73. package/dist/lib/clean.js.map +1 -0
  74. package/dist/lib/deployment.d.ts +35 -0
  75. package/dist/lib/deployment.js +31 -0
  76. package/dist/lib/deployment.js.map +1 -0
  77. package/dist/lib/index-cmd.d.ts +54 -0
  78. package/dist/lib/index-cmd.js +60 -0
  79. package/dist/lib/index-cmd.js.map +1 -0
  80. package/dist/lib/index.d.ts +58 -0
  81. package/dist/lib/index.js +54 -0
  82. package/dist/lib/index.js.map +1 -0
  83. package/dist/lib/io/lib.kumori +5 -0
  84. package/dist/lib/kumori/builtin/httpinbound.h.kumori +27 -0
  85. package/dist/lib/kumori/builtin/tcpinbound.h.kumori +25 -0
  86. package/dist/lib/kumori/builtin.kumori +18 -0
  87. package/dist/lib/kumori/component.kumori +120 -0
  88. package/dist/lib/kumori/deployment.kumori +16 -0
  89. package/dist/lib/kumori/resource.kumori +25 -0
  90. package/dist/lib/kumori/service.kumori +49 -0
  91. package/dist/lib/kumori/shared.kumori +11 -0
  92. package/dist/lib/kumori/sized.kumori +25 -0
  93. package/dist/lib/logger.d.ts +10 -0
  94. package/dist/lib/logger.js +23 -0
  95. package/dist/lib/logger.js.map +1 -0
  96. package/dist/lib/mod.d.ts +156 -0
  97. package/dist/lib/mod.js +144 -0
  98. package/dist/lib/mod.js.map +1 -0
  99. package/dist/lib/registry.d.ts +61 -0
  100. package/dist/lib/registry.js +67 -0
  101. package/dist/lib/registry.js.map +1 -0
  102. package/dist/lib/sized.kumori +8 -0
  103. package/dist/lib/std.kumori +8 -0
  104. package/dist/lib/strconv/lib.kumori +11 -0
  105. package/dist/lib/types.d.ts +26 -0
  106. package/dist/lib/types.js +2 -0
  107. package/dist/lib/types.js.map +1 -0
  108. package/dist/main.d.ts +1 -0
  109. package/dist/main.js +37 -0
  110. package/dist/main.js.map +1 -0
  111. package/dist/mod/checksum/main.d.ts +11 -0
  112. package/dist/mod/checksum/main.js +33 -0
  113. package/dist/mod/checksum/main.js.map +1 -0
  114. package/dist/mod/dependency/main.d.ts +19 -0
  115. package/dist/mod/dependency/main.js +163 -0
  116. package/dist/mod/dependency/main.js.map +1 -0
  117. package/dist/mod/download/functions.d.ts +53 -0
  118. package/dist/mod/download/functions.js +235 -0
  119. package/dist/mod/download/functions.js.map +1 -0
  120. package/dist/mod/download/main.d.ts +26 -0
  121. package/dist/mod/download/main.js +99 -0
  122. package/dist/mod/download/main.js.map +1 -0
  123. package/dist/mod/init/main.d.ts +13 -0
  124. package/dist/mod/init/main.js +66 -0
  125. package/dist/mod/init/main.js.map +1 -0
  126. package/dist/mod/jsonschema/gen/main.d.ts +11 -0
  127. package/dist/mod/jsonschema/gen/main.js +288 -0
  128. package/dist/mod/jsonschema/gen/main.js.map +1 -0
  129. package/dist/mod/jsonschema/get/kdslschema.d.ts +28 -0
  130. package/dist/mod/jsonschema/get/kdslschema.js +3 -0
  131. package/dist/mod/jsonschema/get/kdslschema.js.map +1 -0
  132. package/dist/mod/jsonschema/get/main.d.ts +76 -0
  133. package/dist/mod/jsonschema/get/main.js +346 -0
  134. package/dist/mod/jsonschema/get/main.js.map +1 -0
  135. package/dist/mod/jsonschema/main.d.ts +8 -0
  136. package/dist/mod/jsonschema/main.js +20 -0
  137. package/dist/mod/jsonschema/main.js.map +1 -0
  138. package/dist/mod/main.d.ts +8 -0
  139. package/dist/mod/main.js +27 -0
  140. package/dist/mod/main.js.map +1 -0
  141. package/dist/mod/update/main.d.ts +17 -0
  142. package/dist/mod/update/main.js +68 -0
  143. package/dist/mod/update/main.js.map +1 -0
  144. package/dist/registry/add.d.ts +15 -0
  145. package/dist/registry/add.js +58 -0
  146. package/dist/registry/add.js.map +1 -0
  147. package/dist/registry/list.d.ts +15 -0
  148. package/dist/registry/list.js +29 -0
  149. package/dist/registry/list.js.map +1 -0
  150. package/dist/registry/main.d.ts +8 -0
  151. package/dist/registry/main.js +21 -0
  152. package/dist/registry/main.js.map +1 -0
  153. package/dist/registry/remove.d.ts +15 -0
  154. package/dist/registry/remove.js +34 -0
  155. package/dist/registry/remove.js.map +1 -0
  156. package/dist/util/err-format.d.ts +2 -0
  157. package/dist/util/err-format.js +10 -0
  158. package/dist/util/err-format.js.map +1 -0
  159. package/dist/util/err-handler.d.ts +3 -0
  160. package/dist/util/err-handler.js +11 -0
  161. package/dist/util/err-handler.js.map +1 -0
  162. package/dist/util.d.ts +2 -0
  163. package/dist/util.js +2 -0
  164. package/dist/util.js.map +1 -0
  165. package/dist/version.d.ts +2 -0
  166. package/dist/version.js +5 -0
  167. package/dist/version.js.map +1 -0
  168. package/out/deployment/gen/deployment-template.kumori +33 -0
  169. package/out/deployment-template.kumori +33 -0
  170. package/out/main.cjs +378 -209
  171. package/package.json +67 -17
@@ -0,0 +1,97 @@
1
+ import { Resource } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/resource.js";
2
+ /**
3
+ * The Kumori Service Model is composed by several resource types.
4
+ * This function converts each resource to its solution JSON representation.
5
+ * @param resource
6
+ */
7
+ export declare function ResourceToSolutionJSON(resource: Resource): {
8
+ readonly volume: {
9
+ readonly size: number;
10
+ readonly unit: "m" | "k" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
11
+ readonly kind: "storage";
12
+ readonly type?: undefined;
13
+ };
14
+ readonly ca?: undefined;
15
+ readonly certificate?: undefined;
16
+ readonly secret?: undefined;
17
+ readonly domain?: undefined;
18
+ readonly port?: undefined;
19
+ } | {
20
+ readonly volume: string;
21
+ readonly ca?: undefined;
22
+ readonly certificate?: undefined;
23
+ readonly secret?: undefined;
24
+ readonly domain?: undefined;
25
+ readonly port?: undefined;
26
+ } | {
27
+ readonly volume: {
28
+ readonly size: number;
29
+ readonly unit: "m" | "k" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
30
+ readonly kind: "storage";
31
+ readonly type: "volatile";
32
+ };
33
+ readonly ca?: undefined;
34
+ readonly certificate?: undefined;
35
+ readonly secret?: undefined;
36
+ readonly domain?: undefined;
37
+ readonly port?: undefined;
38
+ } | {
39
+ readonly volume: {
40
+ readonly size: number;
41
+ readonly unit: "m" | "k" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
42
+ readonly kind: "storage";
43
+ readonly type: "persistent";
44
+ };
45
+ readonly ca?: undefined;
46
+ readonly certificate?: undefined;
47
+ readonly secret?: undefined;
48
+ readonly domain?: undefined;
49
+ readonly port?: undefined;
50
+ } | {
51
+ readonly volume: {
52
+ readonly size: number;
53
+ readonly unit: "m" | "k" | "M" | "G" | "T" | "P" | "E" | "Ki" | "Mi" | "Gi" | "Ti" | "Pi" | "Ei";
54
+ readonly kind: "storage";
55
+ readonly type: "nonreplicated";
56
+ };
57
+ readonly ca?: undefined;
58
+ readonly certificate?: undefined;
59
+ readonly secret?: undefined;
60
+ readonly domain?: undefined;
61
+ readonly port?: undefined;
62
+ } | {
63
+ readonly ca: string;
64
+ readonly volume?: undefined;
65
+ readonly certificate?: undefined;
66
+ readonly secret?: undefined;
67
+ readonly domain?: undefined;
68
+ readonly port?: undefined;
69
+ } | {
70
+ readonly certificate: string;
71
+ readonly volume?: undefined;
72
+ readonly ca?: undefined;
73
+ readonly secret?: undefined;
74
+ readonly domain?: undefined;
75
+ readonly port?: undefined;
76
+ } | {
77
+ readonly secret: string;
78
+ readonly volume?: undefined;
79
+ readonly ca?: undefined;
80
+ readonly certificate?: undefined;
81
+ readonly domain?: undefined;
82
+ readonly port?: undefined;
83
+ } | {
84
+ readonly domain: string;
85
+ readonly volume?: undefined;
86
+ readonly ca?: undefined;
87
+ readonly certificate?: undefined;
88
+ readonly secret?: undefined;
89
+ readonly port?: undefined;
90
+ } | {
91
+ readonly port: string;
92
+ readonly volume?: undefined;
93
+ readonly ca?: undefined;
94
+ readonly certificate?: undefined;
95
+ readonly secret?: undefined;
96
+ readonly domain?: undefined;
97
+ };
@@ -0,0 +1,54 @@
1
+ import { EphemeralName, Ephemeral, PersistentName, Persistent, RegisteredName, Registered, VolatileName, Volatile, PersistedName, Persisted, NonReplicatedName, NonReplicated, CAName, CA, CertificateName, SecretName, Secret, DomainName, PortName, Port, Domain, Certificate } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/resource.js";
2
+ /**
3
+ * The Kumori Service Model is composed by several resource types.
4
+ * This function converts each resource to its solution JSON representation.
5
+ * @param resource
6
+ */
7
+ export function ResourceToSolutionJSON(resource) {
8
+ if (resource.$type === EphemeralName) {
9
+ const res = Ephemeral.parse(resource);
10
+ return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage" } };
11
+ }
12
+ if (resource.$type === PersistentName) {
13
+ const res = Persistent.parse(resource);
14
+ return { volume: res.value };
15
+ }
16
+ if (resource.$type === RegisteredName) {
17
+ const res = Registered.parse(resource);
18
+ return { volume: res.value };
19
+ }
20
+ if (resource.$type === VolatileName) {
21
+ const res = Volatile.parse(resource);
22
+ return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "volatile" } };
23
+ }
24
+ if (resource.$type === PersistedName) {
25
+ const res = Persisted.parse(resource);
26
+ return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "persistent" } };
27
+ }
28
+ if (resource.$type === NonReplicatedName) {
29
+ const res = NonReplicated.parse(resource);
30
+ return { volume: { size: res.value.size, unit: res.value.unit, kind: "storage", type: "nonreplicated" } };
31
+ }
32
+ if (resource.$type === CAName) {
33
+ const res = CA.parse(resource);
34
+ return { ca: res.value };
35
+ }
36
+ if (resource.$type === CertificateName) {
37
+ const res = Certificate.parse(resource);
38
+ return { certificate: res.value };
39
+ }
40
+ if (resource.$type === SecretName) {
41
+ const res = Secret.parse(resource);
42
+ return { secret: res.value };
43
+ }
44
+ if (resource.$type === DomainName) {
45
+ const res = Domain.parse(resource);
46
+ return { domain: res.value };
47
+ }
48
+ if (resource.$type === PortName) {
49
+ const res = Port.parse(resource);
50
+ return { port: res.value };
51
+ }
52
+ throw new Error(`unknown resource type '${resource.$type}'`);
53
+ }
54
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/build/helpers/resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { Service, Role } from "@kumori/kdsl-lsp/language/builtin/lib/kumori/service.js";
2
+ import { Maybe } from "@kumori/kdsl-lsp/util/maybe.js";
3
+ import { ServiceArtifact, V3DeploymentSpec, Role as RoleJSON } from "../deployment_spec.js";
4
+ import { SolutionJSONContext } from "./deployment.js";
5
+ /**
6
+ * Converts a service definition into the solution JSON format.
7
+ * @param ctx The solution JSON context.
8
+ * @param service The service to convert.
9
+ * @returns The service artifact representation of the service.
10
+ */
11
+ export declare function ServiceToSolutionJSON(ctx: SolutionJSONContext, service: Service, scale?: Record<string, number>): ServiceArtifact;
12
+ /**
13
+ * Converts a service definition into the V3 deployment spec format.
14
+ * @param ctx The solution JSON context.
15
+ * @param service The service to convert.
16
+ * @returns The V3 deployment spec representation of the service.
17
+ */
18
+ export declare function ServiceV3DeploymentToSolutionJson(ctx: SolutionJSONContext, service: Service): V3DeploymentSpec;
19
+ /**
20
+ * Converts a service role definition into the solution JSON format.
21
+ * @param ctx The solution JSON context.
22
+ * @param name The name of the role.
23
+ * @param role The role to convert.
24
+ * @param parent The parent service artifact.
25
+ * @returns The role JSON representation of the role.
26
+ */
27
+ export declare function ServiceRoleToSolutionJSON(ctx: SolutionJSONContext, name: string, role: Role, parent: ServiceArtifact): Maybe<RoleJSON>;
@@ -0,0 +1,196 @@
1
+ import { Maybe, None, Some } from "@kumori/kdsl-lsp/util/maybe.js";
2
+ import { AddDeployment, CtxId, CtxParentId, WithPath, isComponent, isService } from "./deployment.js";
3
+ import { ComponentToSolutionJSON } from "./component.js";
4
+ import { BuiltinV3DeploymentToSolutionJson } from "./builtin.js";
5
+ import { ResourceToSolutionJSON } from "./resource.js";
6
+ import { ReferenceUpdater } from "./utils.js";
7
+ import { ServiceConnectionToSolutionJSON } from "./connector.js";
8
+ /**
9
+ * Converts a service definition into the solution JSON format.
10
+ * @param ctx The solution JSON context.
11
+ * @param service The service to convert.
12
+ * @returns The service artifact representation of the service.
13
+ */
14
+ export function ServiceToSolutionJSON(ctx, service, scale) {
15
+ const ref = {
16
+ version: [0, 0, 0],
17
+ kind: "service",
18
+ domain: "unknown",
19
+ module: "unknown",
20
+ name: "unknown",
21
+ };
22
+ const mod = ctx.svcs.shared.references.KumoriModules;
23
+ const modifiers = ReferenceUpdater(mod, ctx.nodes.get(service));
24
+ for (const m of modifiers) {
25
+ m(ref);
26
+ }
27
+ const svc = {
28
+ spec: [1, 0],
29
+ ref,
30
+ description: {
31
+ builtin: false,
32
+ config: {
33
+ resilience: 0,
34
+ scale: {
35
+ detail: Object.fromEntries(Object.entries(service.role ?? {})
36
+ .map(([roleName]) => [roleName, { hsize: scale && typeof scale === "object" && roleName in scale ? scale[roleName] : 1 }]))
37
+ },
38
+ parameter: service?.config ?? {},
39
+ resource: Object.fromEntries(Object.entries(service.resource ?? {})
40
+ .map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
41
+ },
42
+ role: {},
43
+ connector: Object.fromEntries(Object.entries(service.connect ?? {})
44
+ .map(([k, v]) => [k, ServiceConnectionToSolutionJSON(ctx, service, v)])),
45
+ srv: {
46
+ client: Object.fromEntries(Object.entries(service.srv?.client ?? {})
47
+ .map(([k, v]) => [k, { protocol: v, inherited: false }])),
48
+ server: Object.fromEntries(Object.entries(service.srv?.server ?? {}).map(([k, v]) => {
49
+ let value;
50
+ if (typeof v === "string") {
51
+ value = { port: 80, inherited: false, protocol: v, };
52
+ }
53
+ else {
54
+ value = { ...v, inherited: false, };
55
+ }
56
+ return [k, value];
57
+ })),
58
+ duplex: Object.fromEntries(Object.entries(service.srv?.duplex ?? {}).map(([k, v]) => {
59
+ let value;
60
+ if (typeof v === "string") {
61
+ value = { port: 80, inherited: false, protocol: v, };
62
+ }
63
+ else {
64
+ value = { ...v, inherited: false, };
65
+ }
66
+ return [k, value];
67
+ })),
68
+ }
69
+ }
70
+ };
71
+ // NOTE: we call ServiceRoleToSolutionJSON after initializing the service
72
+ // artifact because the call may modify the parent service (svc)
73
+ svc.description.role = Object.fromEntries(Object.entries(service.role ?? {})
74
+ .map(([k, v]) => [k, ServiceRoleToSolutionJSON(ctx, k, v, svc)])
75
+ .filter(([, v]) => Maybe.isSome(v))
76
+ .map(([k, v]) => [k, v.value]));
77
+ return svc;
78
+ }
79
+ /**
80
+ * Converts a service definition into the V3 deployment spec format.
81
+ * @param ctx The solution JSON context.
82
+ * @param service The service to convert.
83
+ * @returns The V3 deployment spec representation of the service.
84
+ */
85
+ export function ServiceV3DeploymentToSolutionJson(ctx, service) {
86
+ return {
87
+ name: CtxId(ctx),
88
+ up: CtxParentId(ctx),
89
+ meta: {},
90
+ config: {
91
+ resilience: 0,
92
+ scale: service.config?.scale ?? { hsize: service.config?.scale },
93
+ parameter: service.config?.parameter ?? {},
94
+ resource: Object.fromEntries(Object.entries(service.config?.resource ?? {})
95
+ .map(([k, v]) => [k, ResourceToSolutionJSON(v)])),
96
+ },
97
+ artifact: ServiceToSolutionJSON(ctx, service, service.config?.scale),
98
+ };
99
+ }
100
+ /**
101
+ * Converts a service role definition into the solution JSON format.
102
+ * @param ctx The solution JSON context.
103
+ * @param name The name of the role.
104
+ * @param role The role to convert.
105
+ * @param parent The parent service artifact.
106
+ * @returns The role JSON representation of the role.
107
+ */
108
+ export function ServiceRoleToSolutionJSON(ctx, name, role, parent) {
109
+ var _a, _b, _c, _d, _e;
110
+ if (isComponent(role.artifact)) {
111
+ return Some({
112
+ name,
113
+ meta: role.meta,
114
+ config: {
115
+ resilience: 0,
116
+ scale: { hsize: parent.description.config?.scale?.detail?.[name]?.hsize ?? 1 },
117
+ parameter: role.artifact.config ?? {},
118
+ resource: {},
119
+ },
120
+ artifact: ComponentToSolutionJSON(ctx, role.artifact),
121
+ });
122
+ }
123
+ const artifact = role.artifact;
124
+ ctx = WithPath(ctx, name);
125
+ const DeploymentJSON = () => {
126
+ if (isService(artifact)) {
127
+ return ServiceV3DeploymentToSolutionJson(ctx, artifact);
128
+ }
129
+ else {
130
+ return BuiltinV3DeploymentToSolutionJson(ctx, artifact);
131
+ }
132
+ };
133
+ AddDeployment(ctx, DeploymentJSON());
134
+ (_a = parent.description).srv ?? (_a.srv = {});
135
+ (_b = parent.description.srv).server ?? (_b.server = {});
136
+ (_c = parent.description.srv).client ?? (_c.client = {});
137
+ for (const [, cnx] of Object.entries(parent.description.connector ?? {})) {
138
+ // Check for matching client references
139
+ for (const client of cnx.clients) {
140
+ if (client.role !== name) {
141
+ continue;
142
+ }
143
+ const Client = { ...client };
144
+ // parent inherits referenced connections
145
+ const inherited = `${client.role}.${client.channel}`;
146
+ const original = (artifact?.srv?.client ?? {})[client.channel];
147
+ parent.description.srv.server[inherited] = {
148
+ inherited: true,
149
+ protocol: client.channel == "inbound" ? "http" : original,
150
+ };
151
+ // redirect to inherited connections
152
+ client.role = "self";
153
+ client.channel = inherited;
154
+ // register links to new deployment
155
+ (_d = ctx.root).links ?? (_d.links = []);
156
+ ctx.root.links.push({
157
+ meta: {},
158
+ s_d: CtxId(ctx),
159
+ s_c: Client.channel,
160
+ t_d: CtxParentId(ctx),
161
+ t_c: inherited,
162
+ });
163
+ }
164
+ // Check for matching server references
165
+ for (const server of cnx.servers) {
166
+ for (const link of server.links) {
167
+ if (link.role === name) {
168
+ const inherited = `${link.role}.${link.channel}`;
169
+ let original = (artifact?.srv?.server ?? {})[link.channel];
170
+ // Try duplex channel
171
+ if (original === undefined) {
172
+ original = (artifact?.srv?.duplex ?? {})[link.channel];
173
+ }
174
+ parent.description.srv.client[inherited] = {
175
+ inherited: true,
176
+ protocol: typeof original === "string" ? original : original.protocol,
177
+ port: typeof original === "object" ? original.port : undefined
178
+ };
179
+ (_e = ctx.root).links ?? (_e.links = []);
180
+ ctx.root.links.push({
181
+ meta: {},
182
+ s_d: CtxParentId(ctx),
183
+ s_c: inherited,
184
+ t_d: CtxId(ctx),
185
+ t_c: link.channel
186
+ });
187
+ // redirect to inherited connections
188
+ link.role = "self";
189
+ link.channel = inherited;
190
+ }
191
+ }
192
+ }
193
+ }
194
+ return None;
195
+ }
196
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/build/helpers/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { AstNode } from "langium";
2
+ import { Image, Reference } from "../deployment_spec.js";
3
+ import { KumoriModules } from "@kumori/kdsl-lsp/language/kumori-module.js";
4
+ /**
5
+ * Converts a OCI image string to a structured JSON object.
6
+ *
7
+ * @param {string} image - The OCI image string in the format "docker.io/hashicorp/http-echo:latest".
8
+ * @returns {{tag: string, hub: {name: string}}} An object containing the tag and the hub information.
9
+ * @throws Will throw an error if the input string is not in the expected format.
10
+ *
11
+ * @example
12
+ * const v = ComponentImageToSolutionJSON("docker.io/hashicorp/http-echo:latest")
13
+ * console.log(v) // { tag: "hashicorp/http-echo:latest", hub: { name: "docker.io" }}
14
+ */
15
+ export declare function ComponentImageToSolutionJSON(image: string | Image): Image;
16
+ /**
17
+ * @param KumoriModules - The collection of Kumori modules used to resolve module information.
18
+ * @param node - The AST node for which reference updates are to be generated.
19
+ * @returns An array of updater functions. Each updater takes a {@link Reference} and updates its `domain`, `module`, and/or `name`
20
+ * properties based on the resolved module's URL. Returns an empty array if the node or module cannot be resolved.
21
+ */
22
+ export declare function ReferenceUpdater(KumoriModules: KumoriModules, node: AstNode | undefined): ((ref: Reference) => void)[];
23
+ /**
24
+ * Constructs a reference path string from a given Reference object.
25
+ * The path is formed by concatenating the domain and module properties.
26
+ *
27
+ * @param ref - The Reference object containing domain and module information.
28
+ * @returns A string representing the reference path in the format "domain/module".
29
+ */
30
+ export declare function GetReferencePath(ref: Reference): string;
@@ -0,0 +1,77 @@
1
+ import { ParseOCIString } from "@kumori/kdsl-lsp/util/oci.js";
2
+ import { Result } from "@kumori/kdsl-lsp/util/result.js";
3
+ import { AstUtils } from "langium";
4
+ import { basename } from "path";
5
+ /**
6
+ * Converts a OCI image string to a structured JSON object.
7
+ *
8
+ * @param {string} image - The OCI image string in the format "docker.io/hashicorp/http-echo:latest".
9
+ * @returns {{tag: string, hub: {name: string}}} An object containing the tag and the hub information.
10
+ * @throws Will throw an error if the input string is not in the expected format.
11
+ *
12
+ * @example
13
+ * const v = ComponentImageToSolutionJSON("docker.io/hashicorp/http-echo:latest")
14
+ * console.log(v) // { tag: "hashicorp/http-echo:latest", hub: { name: "docker.io" }}
15
+ */
16
+ export function ComponentImageToSolutionJSON(image) {
17
+ if (typeof image === "string") {
18
+ return Result.orElse(Result.map(ParseOCIString(image), (v) => ({ tag: v.tag, hub: { name: v.hub, secret: typeof image === "string" ? "" : image.hub?.secret ?? "" } })), err => { throw new Error(err); });
19
+ }
20
+ else {
21
+ return image;
22
+ }
23
+ }
24
+ /**
25
+ * @param KumoriModules - The collection of Kumori modules used to resolve module information.
26
+ * @param node - The AST node for which reference updates are to be generated.
27
+ * @returns An array of updater functions. Each updater takes a {@link Reference} and updates its `domain`, `module`, and/or `name`
28
+ * properties based on the resolved module's URL. Returns an empty array if the node or module cannot be resolved.
29
+ */
30
+ export function ReferenceUpdater(KumoriModules, node) {
31
+ if (!node) {
32
+ return [];
33
+ }
34
+ const uri = AstUtils.getDocument(node).uri;
35
+ const mod = KumoriModules.getModule(uri);
36
+ if (Result.isErr(mod)) {
37
+ return [];
38
+ }
39
+ const url = Result.tryCatch(() => new URL(`file://${mod.value.Manifest.module}`));
40
+ if (Result.isErr(url)) {
41
+ return [];
42
+ }
43
+ const updates = [];
44
+ if (url.value.hostname.length) {
45
+ updates.push(ref => ref.domain = url.value.hostname);
46
+ }
47
+ if (url.value.pathname.length) {
48
+ updates.push(ref => {
49
+ ref.module = url.value.pathname.replace(/^\//, "");
50
+ ref.name = basename(ref.module);
51
+ });
52
+ }
53
+ return updates;
54
+ }
55
+ /**
56
+ * Constructs a reference path string from a given Reference object.
57
+ * The path is formed by concatenating the domain and module properties.
58
+ *
59
+ * @param ref - The Reference object containing domain and module information.
60
+ * @returns A string representing the reference path in the format "domain/module".
61
+ */
62
+ export function GetReferencePath(ref) {
63
+ let path = "";
64
+ if (ref.domain !== "") {
65
+ path += `${ref.domain}`;
66
+ if (ref.module !== "") {
67
+ path += `/${ref.module}`;
68
+ }
69
+ }
70
+ else {
71
+ if (ref.module !== "") {
72
+ path += ref.module;
73
+ }
74
+ }
75
+ return path;
76
+ }
77
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/build/helpers/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { KumoriServices } from "@kumori/kdsl-lsp/language/kumori.js";
2
+ import { Command } from "@commander-js/extra-typings";
3
+ import { Result } from "@kumori/kdsl-lsp/util/result.js";
4
+ import { CommanderActionParams } from "../util.js";
5
+ import { ILogLayer } from "loglayer";
6
+ export declare function Register(cmd: Command, log: ILogLayer): Command<[string, string], {}, {}>;
7
+ type Exec = CommanderActionParams<ReturnType<typeof Register>>;
8
+ export declare function Action(log: ILogLayer): Exec;
9
+ /**
10
+ * Build implementation that returns Result instead of exiting.
11
+ * This can be used by both CLI and library.
12
+ */
13
+ export declare function BuildImpl(log: ILogLayer, svcs: KumoriServices, pkgStr: string, target: string): Promise<Result<void, string[]>>;
14
+ declare const _default: {
15
+ Register: typeof Register;
16
+ };
17
+ export default _default;