@cwygoda/service-catalog-core 0.17.1

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 (201) hide show
  1. package/dist/adapters/index.d.ts +8 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/index.js +8 -0
  4. package/dist/adapters/index.js.map +1 -0
  5. package/dist/adapters/loaders/filesystem.loader.d.ts +27 -0
  6. package/dist/adapters/loaders/filesystem.loader.d.ts.map +1 -0
  7. package/dist/adapters/loaders/filesystem.loader.js +183 -0
  8. package/dist/adapters/loaders/filesystem.loader.js.map +1 -0
  9. package/dist/adapters/loaders/filesystem.loader.test.d.ts +2 -0
  10. package/dist/adapters/loaders/filesystem.loader.test.d.ts.map +1 -0
  11. package/dist/adapters/loaders/filesystem.loader.test.js +576 -0
  12. package/dist/adapters/loaders/filesystem.loader.test.js.map +1 -0
  13. package/dist/adapters/parsers/bpmn-steps.d.ts +5 -0
  14. package/dist/adapters/parsers/bpmn-steps.d.ts.map +1 -0
  15. package/dist/adapters/parsers/bpmn-steps.js +124 -0
  16. package/dist/adapters/parsers/bpmn-steps.js.map +1 -0
  17. package/dist/adapters/parsers/bpmn-steps.test.d.ts +2 -0
  18. package/dist/adapters/parsers/bpmn-steps.test.d.ts.map +1 -0
  19. package/dist/adapters/parsers/bpmn-steps.test.js +112 -0
  20. package/dist/adapters/parsers/bpmn-steps.test.js.map +1 -0
  21. package/dist/adapters/parsers/bpmn-txt.parser.d.ts +21 -0
  22. package/dist/adapters/parsers/bpmn-txt.parser.d.ts.map +1 -0
  23. package/dist/adapters/parsers/bpmn-txt.parser.js +56 -0
  24. package/dist/adapters/parsers/bpmn-txt.parser.js.map +1 -0
  25. package/dist/adapters/parsers/bpmn-txt.parser.test.d.ts +2 -0
  26. package/dist/adapters/parsers/bpmn-txt.parser.test.d.ts.map +1 -0
  27. package/dist/adapters/parsers/bpmn-txt.parser.test.js +71 -0
  28. package/dist/adapters/parsers/bpmn-txt.parser.test.js.map +1 -0
  29. package/dist/adapters/parsers/markdown.parser.d.ts +22 -0
  30. package/dist/adapters/parsers/markdown.parser.d.ts.map +1 -0
  31. package/dist/adapters/parsers/markdown.parser.js +85 -0
  32. package/dist/adapters/parsers/markdown.parser.js.map +1 -0
  33. package/dist/adapters/parsers/markdown.parser.test.d.ts +2 -0
  34. package/dist/adapters/parsers/markdown.parser.test.d.ts.map +1 -0
  35. package/dist/adapters/parsers/markdown.parser.test.js +149 -0
  36. package/dist/adapters/parsers/markdown.parser.test.js.map +1 -0
  37. package/dist/adapters/parsers/sidecar.transforms.d.ts +104 -0
  38. package/dist/adapters/parsers/sidecar.transforms.d.ts.map +1 -0
  39. package/dist/adapters/parsers/sidecar.transforms.js +133 -0
  40. package/dist/adapters/parsers/sidecar.transforms.js.map +1 -0
  41. package/dist/adapters/parsers/toml.parser.d.ts +17 -0
  42. package/dist/adapters/parsers/toml.parser.d.ts.map +1 -0
  43. package/dist/adapters/parsers/toml.parser.js +91 -0
  44. package/dist/adapters/parsers/toml.parser.js.map +1 -0
  45. package/dist/adapters/parsers/toml.parser.test.d.ts +2 -0
  46. package/dist/adapters/parsers/toml.parser.test.d.ts.map +1 -0
  47. package/dist/adapters/parsers/toml.parser.test.js +345 -0
  48. package/dist/adapters/parsers/toml.parser.test.js.map +1 -0
  49. package/dist/adapters/parsers/yaml.parser.d.ts +17 -0
  50. package/dist/adapters/parsers/yaml.parser.d.ts.map +1 -0
  51. package/dist/adapters/parsers/yaml.parser.js +67 -0
  52. package/dist/adapters/parsers/yaml.parser.js.map +1 -0
  53. package/dist/adapters/parsers/yaml.parser.test.d.ts +2 -0
  54. package/dist/adapters/parsers/yaml.parser.test.d.ts.map +1 -0
  55. package/dist/adapters/parsers/yaml.parser.test.js +171 -0
  56. package/dist/adapters/parsers/yaml.parser.test.js.map +1 -0
  57. package/dist/adapters/persistence/json.writer.d.ts +7 -0
  58. package/dist/adapters/persistence/json.writer.d.ts.map +1 -0
  59. package/dist/adapters/persistence/json.writer.js +14 -0
  60. package/dist/adapters/persistence/json.writer.js.map +1 -0
  61. package/dist/adapters/persistence/json.writer.test.d.ts +2 -0
  62. package/dist/adapters/persistence/json.writer.test.d.ts.map +1 -0
  63. package/dist/adapters/persistence/json.writer.test.js +111 -0
  64. package/dist/adapters/persistence/json.writer.test.js.map +1 -0
  65. package/dist/domain/catalog.d.ts +28 -0
  66. package/dist/domain/catalog.d.ts.map +1 -0
  67. package/dist/domain/catalog.js +46 -0
  68. package/dist/domain/catalog.js.map +1 -0
  69. package/dist/domain/catalog.test.d.ts +2 -0
  70. package/dist/domain/catalog.test.d.ts.map +1 -0
  71. package/dist/domain/catalog.test.js +346 -0
  72. package/dist/domain/catalog.test.js.map +1 -0
  73. package/dist/domain/connection.d.ts +28 -0
  74. package/dist/domain/connection.d.ts.map +1 -0
  75. package/dist/domain/connection.js +53 -0
  76. package/dist/domain/connection.js.map +1 -0
  77. package/dist/domain/connection.test.d.ts +2 -0
  78. package/dist/domain/connection.test.d.ts.map +1 -0
  79. package/dist/domain/connection.test.js +150 -0
  80. package/dist/domain/connection.test.js.map +1 -0
  81. package/dist/domain/data-store.d.ts +23 -0
  82. package/dist/domain/data-store.d.ts.map +1 -0
  83. package/dist/domain/data-store.js +42 -0
  84. package/dist/domain/data-store.js.map +1 -0
  85. package/dist/domain/data-store.test.d.ts +2 -0
  86. package/dist/domain/data-store.test.d.ts.map +1 -0
  87. package/dist/domain/data-store.test.js +93 -0
  88. package/dist/domain/data-store.test.js.map +1 -0
  89. package/dist/domain/domain.d.ts +9 -0
  90. package/dist/domain/domain.d.ts.map +1 -0
  91. package/dist/domain/domain.js +26 -0
  92. package/dist/domain/domain.js.map +1 -0
  93. package/dist/domain/domain.test.d.ts +2 -0
  94. package/dist/domain/domain.test.d.ts.map +1 -0
  95. package/dist/domain/domain.test.js +92 -0
  96. package/dist/domain/domain.test.js.map +1 -0
  97. package/dist/domain/graph.d.ts +23 -0
  98. package/dist/domain/graph.d.ts.map +1 -0
  99. package/dist/domain/graph.js +2 -0
  100. package/dist/domain/graph.js.map +1 -0
  101. package/dist/domain/index.d.ts +8 -0
  102. package/dist/domain/index.d.ts.map +1 -0
  103. package/dist/domain/index.js +8 -0
  104. package/dist/domain/index.js.map +1 -0
  105. package/dist/domain/service.d.ts +66 -0
  106. package/dist/domain/service.d.ts.map +1 -0
  107. package/dist/domain/service.js +61 -0
  108. package/dist/domain/service.js.map +1 -0
  109. package/dist/domain/service.test.d.ts +2 -0
  110. package/dist/domain/service.test.d.ts.map +1 -0
  111. package/dist/domain/service.test.js +181 -0
  112. package/dist/domain/service.test.js.map +1 -0
  113. package/dist/domain/use-case.d.ts +47 -0
  114. package/dist/domain/use-case.d.ts.map +1 -0
  115. package/dist/domain/use-case.js +70 -0
  116. package/dist/domain/use-case.js.map +1 -0
  117. package/dist/domain/use-case.test.d.ts +2 -0
  118. package/dist/domain/use-case.test.d.ts.map +1 -0
  119. package/dist/domain/use-case.test.js +249 -0
  120. package/dist/domain/use-case.test.js.map +1 -0
  121. package/dist/index.d.ts +6 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +11 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/ports/catalog-loader.port.d.ts +5 -0
  126. package/dist/ports/catalog-loader.port.d.ts.map +1 -0
  127. package/dist/ports/catalog-loader.port.js +2 -0
  128. package/dist/ports/catalog-loader.port.js.map +1 -0
  129. package/dist/ports/catalog-writer.port.d.ts +5 -0
  130. package/dist/ports/catalog-writer.port.d.ts.map +1 -0
  131. package/dist/ports/catalog-writer.port.js +2 -0
  132. package/dist/ports/catalog-writer.port.js.map +1 -0
  133. package/dist/ports/index.d.ts +3 -0
  134. package/dist/ports/index.d.ts.map +1 -0
  135. package/dist/ports/index.js +3 -0
  136. package/dist/ports/index.js.map +1 -0
  137. package/dist/schemas/catalog-config.schema.d.ts +23 -0
  138. package/dist/schemas/catalog-config.schema.d.ts.map +1 -0
  139. package/dist/schemas/catalog-config.schema.js +20 -0
  140. package/dist/schemas/catalog-config.schema.js.map +1 -0
  141. package/dist/schemas/catalog.schema.d.ts +248 -0
  142. package/dist/schemas/catalog.schema.d.ts.map +1 -0
  143. package/dist/schemas/catalog.schema.js +94 -0
  144. package/dist/schemas/catalog.schema.js.map +1 -0
  145. package/dist/schemas/connection.schema.d.ts +19 -0
  146. package/dist/schemas/connection.schema.d.ts.map +1 -0
  147. package/dist/schemas/connection.schema.js +25 -0
  148. package/dist/schemas/connection.schema.js.map +1 -0
  149. package/dist/schemas/connection.schema.test.d.ts +2 -0
  150. package/dist/schemas/connection.schema.test.d.ts.map +1 -0
  151. package/dist/schemas/connection.schema.test.js +114 -0
  152. package/dist/schemas/connection.schema.test.js.map +1 -0
  153. package/dist/schemas/data-store.schema.d.ts +20 -0
  154. package/dist/schemas/data-store.schema.d.ts.map +1 -0
  155. package/dist/schemas/data-store.schema.js +22 -0
  156. package/dist/schemas/data-store.schema.js.map +1 -0
  157. package/dist/schemas/data-store.schema.test.d.ts +2 -0
  158. package/dist/schemas/data-store.schema.test.d.ts.map +1 -0
  159. package/dist/schemas/data-store.schema.test.js +68 -0
  160. package/dist/schemas/data-store.schema.test.js.map +1 -0
  161. package/dist/schemas/domain.schema.d.ts +11 -0
  162. package/dist/schemas/domain.schema.d.ts.map +1 -0
  163. package/dist/schemas/domain.schema.js +10 -0
  164. package/dist/schemas/domain.schema.js.map +1 -0
  165. package/dist/schemas/domain.schema.test.d.ts +2 -0
  166. package/dist/schemas/domain.schema.test.d.ts.map +1 -0
  167. package/dist/schemas/domain.schema.test.js +95 -0
  168. package/dist/schemas/domain.schema.test.js.map +1 -0
  169. package/dist/schemas/index.d.ts +8 -0
  170. package/dist/schemas/index.d.ts.map +1 -0
  171. package/dist/schemas/index.js +8 -0
  172. package/dist/schemas/index.js.map +1 -0
  173. package/dist/schemas/service.schema.d.ts +61 -0
  174. package/dist/schemas/service.schema.d.ts.map +1 -0
  175. package/dist/schemas/service.schema.js +59 -0
  176. package/dist/schemas/service.schema.js.map +1 -0
  177. package/dist/schemas/service.schema.test.d.ts +2 -0
  178. package/dist/schemas/service.schema.test.d.ts.map +1 -0
  179. package/dist/schemas/service.schema.test.js +137 -0
  180. package/dist/schemas/service.schema.test.js.map +1 -0
  181. package/dist/schemas/use-case.schema.d.ts +54 -0
  182. package/dist/schemas/use-case.schema.d.ts.map +1 -0
  183. package/dist/schemas/use-case.schema.js +38 -0
  184. package/dist/schemas/use-case.schema.js.map +1 -0
  185. package/dist/schemas/use-case.schema.test.d.ts +2 -0
  186. package/dist/schemas/use-case.schema.test.d.ts.map +1 -0
  187. package/dist/schemas/use-case.schema.test.js +152 -0
  188. package/dist/schemas/use-case.schema.test.js.map +1 -0
  189. package/dist/services/graph-builder.d.ts +21 -0
  190. package/dist/services/graph-builder.d.ts.map +1 -0
  191. package/dist/services/graph-builder.js +138 -0
  192. package/dist/services/graph-builder.js.map +1 -0
  193. package/dist/services/graph-builder.test.d.ts +2 -0
  194. package/dist/services/graph-builder.test.d.ts.map +1 -0
  195. package/dist/services/graph-builder.test.js +393 -0
  196. package/dist/services/graph-builder.test.js.map +1 -0
  197. package/dist/services/index.d.ts +2 -0
  198. package/dist/services/index.d.ts.map +1 -0
  199. package/dist/services/index.js +2 -0
  200. package/dist/services/index.js.map +1 -0
  201. package/package.json +50 -0
@@ -0,0 +1,393 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { buildServiceGraph, deriveConnectionsFromUseCases } from './graph-builder.js';
3
+ describe('graph-builder', () => {
4
+ describe('deriveConnectionsFromUseCases', () => {
5
+ it('derives connections from sequential steps', () => {
6
+ const catalog = {
7
+ services: [],
8
+ useCases: [
9
+ {
10
+ id: 'checkout',
11
+ name: 'Checkout',
12
+ description: 'Checkout flow',
13
+ participants: [],
14
+ steps: [
15
+ { sequence: 1, service: 'orders', action: 'Create order' },
16
+ { sequence: 2, service: 'billing', action: 'Charge', endpoint: 'POST /charge' },
17
+ { sequence: 3, service: 'inventory', action: 'Reserve' },
18
+ ],
19
+ },
20
+ ],
21
+ domains: [],
22
+ dataStores: [],
23
+ };
24
+ const connections = deriveConnectionsFromUseCases(catalog);
25
+ expect(connections.get('orders')).toEqual([
26
+ { target: 'billing', type: 'http', endpoints: ['POST /charge'] },
27
+ ]);
28
+ expect(connections.get('billing')).toEqual([{ target: 'inventory', type: 'event' }]);
29
+ });
30
+ it('skips steps without service', () => {
31
+ const catalog = {
32
+ services: [],
33
+ useCases: [
34
+ {
35
+ id: 'uc1',
36
+ name: 'UC1',
37
+ description: 'desc',
38
+ participants: [],
39
+ steps: [
40
+ { sequence: 1, actor: 'User', action: 'Click button' },
41
+ { sequence: 2, service: 'api', action: 'Process' },
42
+ ],
43
+ },
44
+ ],
45
+ domains: [],
46
+ dataStores: [],
47
+ };
48
+ const connections = deriveConnectionsFromUseCases(catalog);
49
+ expect(connections.size).toBe(0);
50
+ });
51
+ it('skips same-service transitions', () => {
52
+ const catalog = {
53
+ services: [],
54
+ useCases: [
55
+ {
56
+ id: 'uc1',
57
+ name: 'UC1',
58
+ description: 'desc',
59
+ participants: [],
60
+ steps: [
61
+ { sequence: 1, service: 'api', action: 'Step 1' },
62
+ { sequence: 2, service: 'api', action: 'Step 2' },
63
+ ],
64
+ },
65
+ ],
66
+ domains: [],
67
+ dataStores: [],
68
+ };
69
+ const connections = deriveConnectionsFromUseCases(catalog);
70
+ expect(connections.size).toBe(0);
71
+ });
72
+ it('merges endpoints for same connection', () => {
73
+ const catalog = {
74
+ services: [],
75
+ useCases: [
76
+ {
77
+ id: 'uc1',
78
+ name: 'UC1',
79
+ description: 'desc',
80
+ participants: [],
81
+ steps: [
82
+ { sequence: 1, service: 'a', action: 'Step 1' },
83
+ { sequence: 2, service: 'b', action: 'Step 2', endpoint: '/foo' },
84
+ ],
85
+ },
86
+ {
87
+ id: 'uc2',
88
+ name: 'UC2',
89
+ description: 'desc',
90
+ participants: [],
91
+ steps: [
92
+ { sequence: 1, service: 'a', action: 'Step 1' },
93
+ { sequence: 2, service: 'b', action: 'Step 2', endpoint: '/bar' },
94
+ ],
95
+ },
96
+ ],
97
+ domains: [],
98
+ dataStores: [],
99
+ };
100
+ const connections = deriveConnectionsFromUseCases(catalog);
101
+ expect(connections.get('a')).toEqual([
102
+ { target: 'b', type: 'http', endpoints: ['/foo', '/bar'] },
103
+ ]);
104
+ });
105
+ });
106
+ describe('buildServiceGraph', () => {
107
+ it('builds nodes from services with type and lifecycle', () => {
108
+ const catalog = {
109
+ services: [
110
+ {
111
+ id: 'svc1',
112
+ name: 'Service 1',
113
+ description: 'desc',
114
+ type: 'web-service',
115
+ lifecycle: 'active',
116
+ domain: 'domain1',
117
+ },
118
+ {
119
+ id: 'svc2',
120
+ name: 'Service 2',
121
+ description: 'desc',
122
+ type: 'event-producer',
123
+ lifecycle: 'deprecated',
124
+ },
125
+ ],
126
+ useCases: [],
127
+ domains: [],
128
+ dataStores: [],
129
+ };
130
+ const graph = buildServiceGraph(catalog);
131
+ expect(graph.nodes).toEqual([
132
+ {
133
+ id: 'svc1',
134
+ name: 'Service 1',
135
+ domain: 'domain1',
136
+ type: 'web-service',
137
+ lifecycle: 'active',
138
+ },
139
+ { id: 'svc2', name: 'Service 2', type: 'event-producer', lifecycle: 'deprecated' },
140
+ ]);
141
+ });
142
+ it('builds edges from explicit connections', () => {
143
+ const catalog = {
144
+ services: [
145
+ {
146
+ id: 'svc1',
147
+ name: 'Service 1',
148
+ description: 'desc',
149
+ type: 'web-service',
150
+ lifecycle: 'active',
151
+ connections: [{ target: 'svc2', type: 'http', endpoints: ['/api'] }],
152
+ },
153
+ {
154
+ id: 'svc2',
155
+ name: 'Service 2',
156
+ description: 'desc',
157
+ type: 'web-service',
158
+ lifecycle: 'active',
159
+ },
160
+ ],
161
+ useCases: [],
162
+ domains: [],
163
+ dataStores: [],
164
+ };
165
+ const graph = buildServiceGraph(catalog);
166
+ expect(graph.edges).toEqual([
167
+ { source: 'svc1', target: 'svc2', type: 'http', endpoints: ['/api'] },
168
+ ]);
169
+ });
170
+ it('builds edges from derived connections', () => {
171
+ const catalog = {
172
+ services: [
173
+ {
174
+ id: 'orders',
175
+ name: 'Orders',
176
+ description: 'desc',
177
+ type: 'web-service',
178
+ lifecycle: 'active',
179
+ },
180
+ {
181
+ id: 'billing',
182
+ name: 'Billing',
183
+ description: 'desc',
184
+ type: 'web-service',
185
+ lifecycle: 'active',
186
+ },
187
+ ],
188
+ useCases: [
189
+ {
190
+ id: 'checkout',
191
+ name: 'Checkout',
192
+ description: 'desc',
193
+ participants: [],
194
+ steps: [
195
+ { sequence: 1, service: 'orders', action: 'Create' },
196
+ { sequence: 2, service: 'billing', action: 'Charge', endpoint: 'POST /charge' },
197
+ ],
198
+ },
199
+ ],
200
+ domains: [],
201
+ dataStores: [],
202
+ };
203
+ const graph = buildServiceGraph(catalog);
204
+ expect(graph.edges).toEqual([
205
+ { source: 'orders', target: 'billing', type: 'http', endpoints: ['POST /charge'] },
206
+ ]);
207
+ });
208
+ it('merges explicit and derived connections', () => {
209
+ const catalog = {
210
+ services: [
211
+ {
212
+ id: 'orders',
213
+ name: 'Orders',
214
+ description: 'desc',
215
+ type: 'web-service',
216
+ lifecycle: 'active',
217
+ connections: [{ target: 'billing', type: 'http', endpoints: ['/refund'] }],
218
+ },
219
+ {
220
+ id: 'billing',
221
+ name: 'Billing',
222
+ description: 'desc',
223
+ type: 'web-service',
224
+ lifecycle: 'active',
225
+ },
226
+ ],
227
+ useCases: [
228
+ {
229
+ id: 'checkout',
230
+ name: 'Checkout',
231
+ description: 'desc',
232
+ participants: [],
233
+ steps: [
234
+ { sequence: 1, service: 'orders', action: 'Create' },
235
+ { sequence: 2, service: 'billing', action: 'Charge', endpoint: 'POST /charge' },
236
+ ],
237
+ },
238
+ ],
239
+ domains: [],
240
+ dataStores: [],
241
+ };
242
+ const graph = buildServiceGraph(catalog);
243
+ // Explicit takes precedence, derived endpoints merged in
244
+ expect(graph.edges).toEqual([
245
+ {
246
+ source: 'orders',
247
+ target: 'billing',
248
+ type: 'http',
249
+ endpoints: ['/refund', 'POST /charge'],
250
+ },
251
+ ]);
252
+ });
253
+ it('excludes edges to non-existent services', () => {
254
+ const catalog = {
255
+ services: [
256
+ {
257
+ id: 'svc1',
258
+ name: 'Service 1',
259
+ description: 'desc',
260
+ type: 'web-service',
261
+ lifecycle: 'active',
262
+ connections: [{ target: 'nonexistent', type: 'http' }],
263
+ },
264
+ ],
265
+ useCases: [],
266
+ domains: [],
267
+ dataStores: [],
268
+ };
269
+ const graph = buildServiceGraph(catalog);
270
+ expect(graph.edges).toEqual([]);
271
+ });
272
+ it('builds edges for event connections with events field', () => {
273
+ const catalog = {
274
+ services: [
275
+ {
276
+ id: 'svc1',
277
+ name: 'Service 1',
278
+ description: 'desc',
279
+ type: 'web-service',
280
+ lifecycle: 'active',
281
+ connections: [
282
+ { target: 'svc2', type: 'event', events: ['order.created', 'order.updated'] },
283
+ ],
284
+ },
285
+ {
286
+ id: 'svc2',
287
+ name: 'Service 2',
288
+ description: 'desc',
289
+ type: 'event-consumer',
290
+ lifecycle: 'active',
291
+ },
292
+ ],
293
+ useCases: [],
294
+ domains: [],
295
+ dataStores: [],
296
+ };
297
+ const graph = buildServiceGraph(catalog);
298
+ expect(graph.edges).toEqual([
299
+ {
300
+ source: 'svc1',
301
+ target: 'svc2',
302
+ type: 'event',
303
+ events: ['order.created', 'order.updated'],
304
+ },
305
+ ]);
306
+ });
307
+ it('passes role and description through to edges', () => {
308
+ const catalog = {
309
+ services: [
310
+ {
311
+ id: 'otm',
312
+ name: 'OTM',
313
+ description: 'desc',
314
+ type: 'web-service',
315
+ lifecycle: 'active',
316
+ connections: [
317
+ {
318
+ target: 'notifications',
319
+ type: 'event',
320
+ role: 'producer',
321
+ events: ['order.expired'],
322
+ description: 'Sends expiration notifications via SQS',
323
+ },
324
+ ],
325
+ },
326
+ {
327
+ id: 'notifications',
328
+ name: 'Notifications',
329
+ description: 'desc',
330
+ type: 'event-consumer',
331
+ lifecycle: 'active',
332
+ connections: [
333
+ {
334
+ target: 'otm',
335
+ type: 'event',
336
+ role: 'consumer',
337
+ },
338
+ ],
339
+ },
340
+ ],
341
+ useCases: [],
342
+ domains: [],
343
+ dataStores: [],
344
+ };
345
+ const graph = buildServiceGraph(catalog);
346
+ expect(graph.edges).toEqual([
347
+ {
348
+ source: 'otm',
349
+ target: 'notifications',
350
+ type: 'event',
351
+ role: 'producer',
352
+ events: ['order.expired'],
353
+ description: 'Sends expiration notifications via SQS',
354
+ },
355
+ {
356
+ source: 'notifications',
357
+ target: 'otm',
358
+ type: 'event',
359
+ role: 'consumer',
360
+ },
361
+ ]);
362
+ });
363
+ it('builds edges for grpc connections', () => {
364
+ const catalog = {
365
+ services: [
366
+ {
367
+ id: 'svc1',
368
+ name: 'Service 1',
369
+ description: 'desc',
370
+ type: 'web-service',
371
+ lifecycle: 'active',
372
+ connections: [{ target: 'svc2', type: 'grpc', endpoints: ['Billing/Charge'] }],
373
+ },
374
+ {
375
+ id: 'svc2',
376
+ name: 'Service 2',
377
+ description: 'desc',
378
+ type: 'web-service',
379
+ lifecycle: 'active',
380
+ },
381
+ ],
382
+ useCases: [],
383
+ domains: [],
384
+ dataStores: [],
385
+ };
386
+ const graph = buildServiceGraph(catalog);
387
+ expect(graph.edges).toEqual([
388
+ { source: 'svc1', target: 'svc2', type: 'grpc', endpoints: ['Billing/Charge'] },
389
+ ]);
390
+ });
391
+ });
392
+ });
393
+ //# sourceMappingURL=graph-builder.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-builder.test.js","sourceRoot":"","sources":["../../src/services/graph-builder.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAGtF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,UAAU;wBACd,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE,eAAe;wBAC5B,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE;4BAC1D,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE;4BAC/E,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE;yBACzD;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;gBACxC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE;aACjE,CAAC,CAAC;YACH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE;4BACtD,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;yBACnD;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;4BACjD,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;yBAClD;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;4BAC/C,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;yBAClE;qBACF;oBACD;wBACE,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE;4BAC/C,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;yBAClE;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,WAAW,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;gBACnC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;aAC3D,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,MAAM,EAAE,SAAS;qBAClB;oBACD;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,YAAY;qBACxB;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B;oBACE,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,WAAW;oBACjB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,aAAa;oBACnB,SAAS,EAAE,QAAQ;iBACpB;gBACD,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE;aACnF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;qBACrE;oBACD;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;qBACpB;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE;aACtE,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;qBACpB;oBACD;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;qBACpB;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,UAAU;wBACd,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;4BACpD,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE;yBAChF;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE;aACnF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,QAAQ;wBACZ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;qBAC3E;oBACD;wBACE,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,SAAS;wBACf,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;qBACpB;iBACF;gBACD,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,UAAU;wBACd,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE,MAAM;wBACnB,YAAY,EAAE,EAAE;wBAChB,KAAK,EAAE;4BACL,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;4BACpD,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE;yBAChF;qBACF;iBACF;gBACD,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,yDAAyD;YACzD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B;oBACE,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,SAAS;oBACjB,IAAI,EAAE,MAAM;oBACZ,SAAS,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;iBACvC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qBACvD;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE;4BACX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE;yBAC9E;qBACF;oBACD;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,QAAQ;qBACpB;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B;oBACE,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;iBAC3C;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,KAAK;wBACX,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE;4BACX;gCACE,MAAM,EAAE,eAAe;gCACvB,IAAI,EAAE,OAAO;gCACb,IAAI,EAAE,UAAU;gCAChB,MAAM,EAAE,CAAC,eAAe,CAAC;gCACzB,WAAW,EAAE,wCAAwC;6BACtD;yBACF;qBACF;oBACD;wBACE,EAAE,EAAE,eAAe;wBACnB,IAAI,EAAE,eAAe;wBACrB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE;4BACX;gCACE,MAAM,EAAE,KAAK;gCACb,IAAI,EAAE,OAAO;gCACb,IAAI,EAAE,UAAU;6BACjB;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B;oBACE,MAAM,EAAE,KAAK;oBACb,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,CAAC,eAAe,CAAC;oBACzB,WAAW,EAAE,wCAAwC;iBACtD;gBACD;oBACE,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU;iBACjB;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,OAAO,GAAY;gBACvB,QAAQ,EAAE;oBACR;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC;qBAC/E;oBACD;wBACE,EAAE,EAAE,MAAM;wBACV,IAAI,EAAE,WAAW;wBACjB,WAAW,EAAE,MAAM;wBACnB,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,QAAQ;qBACpB;iBACF;gBACD,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE,EAAE;gBACX,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEzC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC1B,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,gBAAgB,CAAC,EAAE;aAChF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './graph-builder.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './graph-builder.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "@cwygoda/service-catalog-core",
3
+ "version": "0.17.1",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js"
9
+ },
10
+ "./domain": {
11
+ "types": "./dist/domain/index.d.ts",
12
+ "import": "./dist/domain/index.js"
13
+ },
14
+ "./ports": {
15
+ "types": "./dist/ports/index.d.ts",
16
+ "import": "./dist/ports/index.js"
17
+ },
18
+ "./adapters": {
19
+ "types": "./dist/adapters/index.d.ts",
20
+ "import": "./dist/adapters/index.js"
21
+ },
22
+ "./schemas": {
23
+ "types": "./dist/schemas/index.d.ts",
24
+ "import": "./dist/schemas/index.js"
25
+ }
26
+ },
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "dependencies": {
31
+ "@cwygoda/bpmn-txt": "^0.14.0",
32
+ "@sinclair/typebox": "^0.34.48",
33
+ "graphology": "^0.26.0",
34
+ "gray-matter": "^4.0.3",
35
+ "smol-toml": "^1.6.0",
36
+ "yaml": "^2.8.2"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^24.12.0",
40
+ "graphology-types": "^0.24.8",
41
+ "typescript": "^5.9.3",
42
+ "vitest": "^4.0.18"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc",
46
+ "test": "vitest run",
47
+ "test:watch": "vitest",
48
+ "typecheck": "tsc --noEmit"
49
+ }
50
+ }