@quadnix/octo 0.0.2 → 0.0.3

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 (86) hide show
  1. package/package.json +6 -1
  2. package/.eslintrc.cjs +0 -26
  3. package/dist/tsconfig.build.tsbuildinfo +0 -1
  4. package/src/app.type.ts +0 -56
  5. package/src/decorators/action.decorator.spec.ts +0 -43
  6. package/src/decorators/action.decorator.ts +0 -24
  7. package/src/decorators/anchor.decorator.ts +0 -10
  8. package/src/decorators/container.spec.ts +0 -104
  9. package/src/decorators/container.ts +0 -133
  10. package/src/decorators/factory.decorator.ts +0 -13
  11. package/src/decorators/model.decorator.ts +0 -10
  12. package/src/decorators/module.decorator.ts +0 -13
  13. package/src/decorators/overlay.decorator.ts +0 -10
  14. package/src/decorators/resource.decorator.ts +0 -10
  15. package/src/decorators/test-container.spec.ts +0 -50
  16. package/src/decorators/test-container.ts +0 -56
  17. package/src/functions/dependency/dependency.model.spec.ts +0 -43
  18. package/src/functions/dependency/dependency.model.ts +0 -178
  19. package/src/functions/diff/diff-metadata.model.ts +0 -51
  20. package/src/functions/diff/diff.model.ts +0 -33
  21. package/src/functions/diff/diff.utility.ts +0 -163
  22. package/src/functions/module/module.abstract.ts +0 -59
  23. package/src/functions/module/module.interface.ts +0 -5
  24. package/src/index.ts +0 -62
  25. package/src/models/action.interface.ts +0 -35
  26. package/src/models/app/app.interface.ts +0 -5
  27. package/src/models/app/app.model.ts +0 -111
  28. package/src/models/deployment/deployment.interface.ts +0 -5
  29. package/src/models/deployment/deployment.model.ts +0 -35
  30. package/src/models/environment/environment.interface.ts +0 -6
  31. package/src/models/environment/environment.model.spec.ts +0 -125
  32. package/src/models/environment/environment.model.ts +0 -55
  33. package/src/models/execution/execution.interface.ts +0 -8
  34. package/src/models/execution/execution.model.spec.ts +0 -62
  35. package/src/models/execution/execution.model.ts +0 -89
  36. package/src/models/image/image.interface.ts +0 -8
  37. package/src/models/image/image.model.ts +0 -62
  38. package/src/models/model.abstract.ts +0 -324
  39. package/src/models/model.interface.ts +0 -42
  40. package/src/models/pipeline/pipeline.interface.ts +0 -6
  41. package/src/models/pipeline/pipeline.model.ts +0 -47
  42. package/src/models/region/region.interface.ts +0 -5
  43. package/src/models/region/region.model.spec.ts +0 -162
  44. package/src/models/region/region.model.ts +0 -48
  45. package/src/models/server/server.interface.ts +0 -7
  46. package/src/models/server/server.model.ts +0 -56
  47. package/src/models/service/service.interface.ts +0 -5
  48. package/src/models/service/service.model.ts +0 -25
  49. package/src/models/support/support.interface.ts +0 -6
  50. package/src/models/support/support.model.spec.ts +0 -78
  51. package/src/models/support/support.model.ts +0 -52
  52. package/src/overlays/anchor.abstract.ts +0 -41
  53. package/src/overlays/anchor.interface.ts +0 -7
  54. package/src/overlays/anchor.spec.ts +0 -41
  55. package/src/overlays/overlay-data.repository.ts +0 -76
  56. package/src/overlays/overlay.abstract.ts +0 -64
  57. package/src/overlays/overlay.interface.ts +0 -9
  58. package/src/overlays/overlay.service.ts +0 -38
  59. package/src/overlays/overlay.spec.ts +0 -86
  60. package/src/resources/resource-action.interface.ts +0 -9
  61. package/src/resources/resource-data.repository.spec.ts +0 -133
  62. package/src/resources/resource-data.repository.ts +0 -92
  63. package/src/resources/resource.abstract.ts +0 -108
  64. package/src/resources/resource.interface.ts +0 -7
  65. package/src/resources/resource.spec.ts +0 -60
  66. package/src/resources/shared-resource.abstract.ts +0 -53
  67. package/src/resources/shared-resource.spec.ts +0 -133
  68. package/src/services/serialization/model/__snapshots__/model-serialization.service.spec.ts.snap +0 -656
  69. package/src/services/serialization/model/model-serialization.service.spec.ts +0 -195
  70. package/src/services/serialization/model/model-serialization.service.ts +0 -172
  71. package/src/services/serialization/resource/__snapshots__/resource-serialization.service.spec.ts.snap +0 -284
  72. package/src/services/serialization/resource/resource-serialization.service.spec.ts +0 -311
  73. package/src/services/serialization/resource/resource-serialization.service.ts +0 -166
  74. package/src/services/state-management/local.state-provider.spec.ts +0 -42
  75. package/src/services/state-management/local.state-provider.ts +0 -23
  76. package/src/services/state-management/state-management.service.ts +0 -43
  77. package/src/services/state-management/state-provider.interface.ts +0 -5
  78. package/src/services/transaction/__snapshots__/transaction.service.spec.ts.snap +0 -284
  79. package/src/services/transaction/transaction.service.spec.ts +0 -823
  80. package/src/services/transaction/transaction.service.ts +0 -386
  81. package/test/app.e2e-spec.ts +0 -104
  82. package/test/helpers/test-classes.ts +0 -31
  83. package/test/models/__snapshots__/model.e2e-spec.ts.snap +0 -451
  84. package/test/models/model.e2e-spec.ts +0 -366
  85. package/tsconfig.build.json +0 -4
  86. package/tsconfig.json +0 -9
@@ -1,366 +0,0 @@
1
- import {
2
- App,
3
- Deployment,
4
- Environment,
5
- Execution,
6
- Image,
7
- Pipeline,
8
- Region,
9
- Server,
10
- Service,
11
- Support,
12
- UnknownModel,
13
- } from '../../src/index.js';
14
- import { TestAnchor, TestOverlay } from '../helpers/test-classes.js';
15
-
16
- describe('Model E2E Test', () => {
17
- describe('common functions', () => {
18
- const app = new App('test');
19
- const image = new Image('image', '0.0.1', {
20
- dockerfilePath: '/Dockerfile',
21
- });
22
- const pipeline = new Pipeline('testPipeline');
23
- const region = new Region('region-1');
24
- const server = new Server('backend', image);
25
- const service = new Service('testService');
26
- const support = new Support('nginx', 'nginx');
27
- const deployment = new Deployment('nginx@v1');
28
- const environment = new Environment('qa');
29
- const execution = new Execution(deployment, environment, image);
30
-
31
- app.addImage(image);
32
- app.addPipeline(pipeline);
33
- app.addRegion(region);
34
- app.addServer(server);
35
- app.addService(service);
36
- app.addSupport(support);
37
- support.addDeployment(deployment);
38
- region.addEnvironment(environment);
39
-
40
- const testCases: {
41
- model: UnknownModel;
42
- synth?: any;
43
- }[] = [
44
- {
45
- model: app,
46
- },
47
- {
48
- model: deployment,
49
- },
50
- {
51
- model: environment,
52
- },
53
- {
54
- model: execution,
55
- },
56
- {
57
- model: image,
58
- },
59
- {
60
- model: pipeline,
61
- },
62
- {
63
- model: region,
64
- },
65
- {
66
- model: server,
67
- },
68
- {
69
- model: service,
70
- },
71
- {
72
- model: support,
73
- },
74
- ];
75
-
76
- describe.each(testCases)('Test $model.MODEL_NAME', (data) => {
77
- it('getAncestors()', () => {
78
- expect(data.model.getAncestors().map((m) => m.getContext())).toMatchSnapshot();
79
- });
80
-
81
- it('getBoundaryMembers()', () => {
82
- expect(data.model.getBoundaryMembers().map((m) => m.getContext())).toMatchSnapshot();
83
- });
84
-
85
- it('getChildren()', () => {
86
- expect(Object.keys(data.model.getChildren())).toMatchSnapshot();
87
- });
88
-
89
- it('getContext()', () => {
90
- expect(data.model.getContext()).toMatchSnapshot();
91
- });
92
-
93
- it('getParents()', () => {
94
- expect(Object.keys(data.model.getParents())).toMatchSnapshot();
95
- });
96
-
97
- it('synth()', () => {
98
- if (data.model.MODEL_NAME === 'service') {
99
- expect(() => {
100
- data.model.synth();
101
- }).toThrowErrorMatchingSnapshot();
102
- } else {
103
- expect(data.model.synth()).toMatchSnapshot();
104
- }
105
- });
106
- });
107
- });
108
-
109
- describe('getAncestors()', () => {
110
- it('should include region as ancestor of service when a dependency exists between them', () => {
111
- const app = new App('app');
112
- const region = new Region('region');
113
- app.addRegion(region);
114
- const service = new Service('service');
115
- app.addService(service);
116
-
117
- service.addRelationship('serviceId', region, 'regionId');
118
-
119
- expect(service.getAncestors().map((m) => m.getContext())).toMatchSnapshot();
120
- });
121
-
122
- it('should not include service as ancestor of region when a dependency exists between them', () => {
123
- const app = new App('app');
124
- const region = new Region('region');
125
- app.addRegion(region);
126
- const service = new Service('service');
127
- app.addService(service);
128
-
129
- service.addRelationship('serviceId', region, 'regionId');
130
-
131
- expect(region.getAncestors().map((m) => m.getContext())).toMatchSnapshot();
132
- });
133
-
134
- it('should include parent of parent as ancestors', () => {
135
- const app = new App('app');
136
- const region = new Region('region-0');
137
- app.addRegion(region);
138
- const environment = new Environment('env-0');
139
- region.addEnvironment(environment);
140
-
141
- expect(environment.getAncestors().map((m) => m.getContext())).toMatchSnapshot();
142
- });
143
- });
144
-
145
- describe('getBoundaryMembers()', () => {
146
- it('should include the common model to the boundary in literal sense', () => {
147
- const app0 = new App('test-app');
148
- const region0 = new Region('region-0');
149
- const region1 = new Region('region-1');
150
- const environment0 = new Environment('qa');
151
-
152
- app0.addRegion(region0);
153
- app0.addRegion(region1);
154
- region0.addEnvironment(environment0);
155
- region1.addEnvironment(environment0);
156
-
157
- expect(region0.getBoundaryMembers().map((m) => m.getContext())).toMatchSnapshot();
158
- });
159
-
160
- it('should not include server in region boundary', () => {
161
- const app0 = new App('test-app');
162
- const image0 = new Image('image', '0.0.1', {
163
- dockerfilePath: '/Dockerfile',
164
- });
165
- const region0 = new Region('region-0');
166
- app0.addImage(image0);
167
- app0.addRegion(region0);
168
-
169
- // Just adding a server won't correlate to region. Create an execution in order to correlate.
170
- const server0 = new Server('server-0', image0);
171
- app0.addServer(server0);
172
-
173
- expect(region0.getBoundaryMembers().map((m) => m.getContext())).toMatchSnapshot();
174
- });
175
-
176
- it('should include server in region boundary after an execution is added', () => {
177
- const app0 = new App('test-app');
178
- const image0 = new Image('test', 'test', { dockerfilePath: 'Dockerfile' });
179
- app0.addImage(image0);
180
- const region0 = new Region('region-0');
181
- app0.addRegion(region0);
182
- const environment0 = new Environment('env-0');
183
- region0.addEnvironment(environment0);
184
- const server0 = new Server('server-0', image0);
185
- app0.addServer(server0);
186
- const deployment0 = new Deployment('deployment-0');
187
- server0.addDeployment(deployment0);
188
- new Execution(deployment0, environment0, image0);
189
-
190
- expect(region0.getBoundaryMembers().map((m) => m.getContext())).toMatchSnapshot();
191
- });
192
-
193
- it('should include region in server boundary after an execution is added', () => {
194
- const app0 = new App('test-app');
195
- const image0 = new Image('test', 'test', { dockerfilePath: 'Dockerfile' });
196
- app0.addImage(image0);
197
- const region0 = new Region('region-0');
198
- app0.addRegion(region0);
199
- const environment0 = new Environment('env-0');
200
- region0.addEnvironment(environment0);
201
- const server0 = new Server('server-0', image0);
202
- app0.addServer(server0);
203
- const deployment0 = new Deployment('deployment-0');
204
- server0.addDeployment(deployment0);
205
- new Execution(deployment0, environment0, image0);
206
-
207
- expect(server0.getBoundaryMembers().map((m) => m.getContext())).toMatchSnapshot();
208
- });
209
-
210
- it('should include service in region boundary when a dependency exists between them', () => {
211
- const app = new App('app');
212
- const region = new Region('region');
213
- app.addRegion(region);
214
- const service = new Service('service');
215
- app.addService(service);
216
-
217
- service.addRelationship('serviceId', region, 'regionId');
218
-
219
- expect(region.getBoundaryMembers().map((m) => m.getContext())).toMatchInlineSnapshot(`
220
- [
221
- "region=region,app=app",
222
- "app=app",
223
- "service=service,app=app",
224
- ]
225
- `);
226
- });
227
-
228
- it('should not include shared image with multiple boundaries', () => {
229
- const app = new App('app');
230
- const image = new Image('imageName', 'imageTag', {
231
- dockerfilePath: 'path/to/Dockerfile',
232
- });
233
- app.addImage(image);
234
- const region1 = new Region('region-1');
235
- app.addRegion(region1);
236
- const region2 = new Region('region-2');
237
- app.addRegion(region2);
238
-
239
- region1.addRelationship('regionId', image, 'imageId');
240
- region2.addRelationship('regionId', image, 'imageId');
241
-
242
- expect(region1.getBoundaryMembers().map((m) => m.getContext())).toMatchInlineSnapshot(`
243
- [
244
- "region=region-1,app=app",
245
- "image=imageName:imageTag,app=app",
246
- "app=app",
247
- ]
248
- `);
249
- });
250
-
251
- it('should not include overlays in boundary', () => {
252
- const app = new App('app');
253
- const anchor = new TestAnchor('test-anchor', app);
254
- const overlay = new TestOverlay('test-overlay', {}, [anchor]);
255
-
256
- expect(overlay.getBoundaryMembers().map((m) => m.getContext())).toMatchInlineSnapshot(`[]`);
257
- expect(app.getBoundaryMembers().map((m) => m.getContext())).toMatchInlineSnapshot(`
258
- [
259
- "app=app",
260
- ]
261
- `);
262
- });
263
-
264
- describe('Circular Dependencies', () => {
265
- it('should throw error on one level of circular dependency', () => {
266
- const app0 = new App('test-app');
267
- const region0 = new Region('region-0');
268
-
269
- expect(() => {
270
- app0.addRegion(region0);
271
- region0.addChild('regionId', app0, 'name');
272
- app0.getBoundaryMembers();
273
- }).toThrowErrorMatchingInlineSnapshot(`"Found circular dependencies!"`);
274
- });
275
-
276
- it('should throw error on two levels of circular dependency', () => {
277
- const app0 = new App('test-app');
278
- const region0 = new Region('region-0');
279
- const environment0 = new Environment('qa');
280
-
281
- expect(() => {
282
- app0.addRegion(region0);
283
- region0.addEnvironment(environment0);
284
- environment0.addChild('environmentName', app0, 'name');
285
- app0.getBoundaryMembers();
286
- }).toThrowErrorMatchingInlineSnapshot(`"Found circular dependencies!"`);
287
- });
288
- });
289
- });
290
-
291
- describe('remove()', () => {
292
- it('should throw error when model being a parent cannot be removed', () => {
293
- const app = new App('app');
294
- const region = new Region('region');
295
- app.addRegion(region);
296
-
297
- expect(() => {
298
- app.remove(true);
299
- }).toThrowErrorMatchingInlineSnapshot(`"Cannot remove model until dependent models exist!"`);
300
- });
301
-
302
- it('should throw error when model having a direct relationship cannot be removed', () => {
303
- const app = new App('app');
304
- const image = new Image('image', 'tag', { dockerfilePath: '/Dockerfile' });
305
- app.addImage(image);
306
- const server = new Server('server', image);
307
- app.addServer(server);
308
-
309
- expect(() => {
310
- server.remove();
311
- }).toThrowErrorMatchingInlineSnapshot(`"Cannot remove model until dependent models exist!"`);
312
- });
313
-
314
- it('should be able to remove leaf model', () => {
315
- const app = new App('app');
316
- const region = new Region('region');
317
- app.addRegion(region);
318
-
319
- expect(app.getChild('region', [{ key: 'regionId', value: 'region' }])).not.toBe(undefined);
320
- region.remove();
321
- expect(app.getChild('region', [{ key: 'regionId', value: 'region' }])).toBe(undefined);
322
- });
323
-
324
- it('should be able to remove leaf model with a direct relationship', () => {
325
- const app = new App('app');
326
- const image = new Image('image', 'tag', { dockerfilePath: '/Dockerfile' });
327
- app.addImage(image);
328
- const server = new Server('server', image);
329
- app.addServer(server);
330
-
331
- // Image cannot be removed until server is removed.
332
- expect(() => {
333
- image.remove();
334
- }).toThrowErrorMatchingInlineSnapshot(`"Cannot remove model until dependent models exist!"`);
335
-
336
- // Remove server.
337
- server.remove(true);
338
-
339
- // Remove image.
340
- image.remove();
341
- expect(app.getChild('image', [{ key: 'imageTag', value: 'tag' }])).toBe(undefined);
342
- });
343
- });
344
-
345
- describe('removeRelationship()', () => {
346
- it('should be able to remove relationship', () => {
347
- const app = new App('app');
348
- const region = new Region('region');
349
- app.addRegion(region);
350
- const image = new Image('image', 'tag', { dockerfilePath: '/Dockerfile' });
351
- app.addImage(image);
352
- image.addRelationship('imageId', region, 'regionId');
353
-
354
- // Image cannot be removed since it has a relationship with region.
355
- expect(() => {
356
- image.remove();
357
- }).toThrowErrorMatchingInlineSnapshot(`"Cannot remove model until dependent models exist!"`);
358
-
359
- image.removeRelationship(region);
360
-
361
- // Remove image.
362
- image.remove();
363
- expect(app.getChild('image', [{ key: 'imageTag', value: 'tag' }])).toBe(undefined);
364
- });
365
- });
366
- });
@@ -1,4 +0,0 @@
1
- {
2
- "exclude": ["**/*spec.ts", ".eslintrc.cjs", "coverage", "dist", "node_modules", "test"],
3
- "extends": "./tsconfig.json"
4
- }
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "baseUrl": "./",
4
- "outDir": "./dist"
5
- },
6
- "exclude": ["coverage", "dist", "node_modules"],
7
- "extends": "../../tsconfig.json",
8
- "include": [".eslintrc.cjs", "**/*.json", "**/*.ts"]
9
- }