@kapeta/local-cluster-service 0.54.11 → 0.55.0

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 (42) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/definitions.d.ts +11 -0
  3. package/dist/cjs/src/storm/archetype.d.ts +12 -0
  4. package/dist/cjs/src/storm/archetype.js +98 -0
  5. package/dist/cjs/src/storm/codegen.d.ts +2 -0
  6. package/dist/cjs/src/storm/codegen.js +28 -4
  7. package/dist/cjs/src/storm/event-parser.d.ts +7 -4
  8. package/dist/cjs/src/storm/event-parser.js +190 -160
  9. package/dist/cjs/src/storm/events.d.ts +1 -0
  10. package/dist/cjs/src/storm/predefined.d.ts +27 -0
  11. package/dist/cjs/src/storm/predefined.js +64 -0
  12. package/dist/cjs/src/storm/routes.js +23 -15
  13. package/dist/cjs/test/storm/codegen.test.d.ts +5 -0
  14. package/dist/cjs/test/storm/codegen.test.js +41 -0
  15. package/dist/cjs/test/storm/event-parser.test.d.ts +25 -1
  16. package/dist/cjs/test/storm/event-parser.test.js +34 -15
  17. package/dist/cjs/test/storm/predefined-user-events.json +13 -0
  18. package/dist/esm/src/storm/archetype.d.ts +12 -0
  19. package/dist/esm/src/storm/archetype.js +98 -0
  20. package/dist/esm/src/storm/codegen.d.ts +2 -0
  21. package/dist/esm/src/storm/codegen.js +28 -4
  22. package/dist/esm/src/storm/event-parser.d.ts +7 -4
  23. package/dist/esm/src/storm/event-parser.js +190 -160
  24. package/dist/esm/src/storm/events.d.ts +1 -0
  25. package/dist/esm/src/storm/predefined.d.ts +27 -0
  26. package/dist/esm/src/storm/predefined.js +64 -0
  27. package/dist/esm/src/storm/routes.js +23 -15
  28. package/dist/esm/test/storm/codegen.test.d.ts +5 -0
  29. package/dist/esm/test/storm/codegen.test.js +41 -0
  30. package/dist/esm/test/storm/event-parser.test.d.ts +25 -1
  31. package/dist/esm/test/storm/event-parser.test.js +34 -15
  32. package/dist/esm/test/storm/predefined-user-events.json +13 -0
  33. package/package.json +6 -1
  34. package/src/storm/archetype.ts +85 -0
  35. package/src/storm/codegen.ts +34 -4
  36. package/src/storm/event-parser.ts +200 -159
  37. package/src/storm/events.ts +1 -0
  38. package/src/storm/predefined.ts +52 -0
  39. package/src/storm/routes.ts +25 -18
  40. package/test/storm/codegen.test.ts +46 -0
  41. package/test/storm/event-parser.test.ts +32 -10
  42. package/test/storm/predefined-user-events.json +13 -0
@@ -6,8 +6,9 @@
6
6
  import { StormEventParser } from '../../src/storm/event-parser';
7
7
  import { StormEvent } from '../../src/storm/events';
8
8
  import simpleBlogEvents from './simple-blog-events.json';
9
+ import predefinedUserEvents from './predefined-user-events.json';
9
10
 
10
- const parserOptions = {
11
+ export const parserOptions = {
11
12
  serviceKind: 'kapeta/block-service:local',
12
13
  serviceLanguage: 'kapeta/language-target-nodejs-ts:local',
13
14
 
@@ -138,11 +139,13 @@ const events: StormEvent[] = [
138
139
  ];
139
140
 
140
141
  describe('event-parser', () => {
141
- it('it can parse events into a plan and blocks with proper layout', () => {
142
+ it('it can parse events into a plan and blocks with proper layout', async () => {
142
143
  const parser = new StormEventParser(parserOptions);
143
- events.forEach((event) => parser.processEvent('kapeta', event));
144
+ for (const event of events) {
145
+ await parser.processEvent('kapeta', event);
146
+ }
144
147
 
145
- const result = parser.toResult('kapeta');
148
+ const result = await parser.toResult('kapeta');
146
149
 
147
150
  expect(result.plan.metadata.name).toBe('kapeta/my-plan');
148
151
  expect(result.plan.metadata.description).toBe('my plan description');
@@ -181,21 +184,40 @@ describe('event-parser', () => {
181
184
  expect(result.plan.spec.connections[0].provider.resourceName).toBe(apiResource?.metadata.name);
182
185
  });
183
186
 
184
- it('it will split api into correct provider', () => {
187
+ it('it will split api into correct provider', async () => {
185
188
  const events = simpleBlogEvents as StormEvent[];
186
189
  const parser = new StormEventParser(parserOptions);
187
- events.forEach((event) => parser.processEvent('kapeta', event));
190
+ for (const event of events) {
191
+ await parser.processEvent('kapeta', event);
192
+ }
188
193
 
189
- const result = parser.toResult('kapeta');
194
+ const result = await parser.toResult('kapeta');
190
195
 
191
196
  const blogService = result.blocks.find((block) => block.aiName === 'blog-service');
192
197
  expect(blogService).toBeDefined();
193
198
  expect(blogService?.content).toBeDefined();
194
199
 
195
- const apiProviders = blogService?.content?.spec?.providers?.filter((provider) => provider.kind === 'kapeta/block-type-api:local');
200
+ const apiProviders = blogService?.content?.spec?.providers?.filter(
201
+ (provider) => provider.kind === 'kapeta/block-type-api:local'
202
+ );
196
203
  expect(apiProviders).toBeDefined();
197
204
  expect(apiProviders!.length).toBe(2);
198
- expect(apiProviders!["0"].spec.source.value).not.toBe('');
199
- expect(apiProviders!["1"].spec.source.value).not.toBe('');
205
+ expect(apiProviders!['0'].spec.source.value).not.toBe('');
206
+ expect(apiProviders!['1'].spec.source.value).not.toBe('');
207
+ });
208
+
209
+ it('predefined components', async () => {
210
+ const events = predefinedUserEvents as StormEvent[];
211
+ const parser = new StormEventParser(parserOptions);
212
+ for (const event of events) {
213
+ await parser.processEvent('kapeta', event);
214
+ }
215
+
216
+ const result = await parser.toResult('kapeta');
217
+ expect(result.blocks.length).toBe(1);
218
+ expect(result.blocks[0].content.metadata.title).toBe('user-service');
219
+ expect(result.blocks[0].content.metadata.title).toBe('user-service');
220
+ expect(result.blocks[0].content.metadata.name).toBe('kapeta/user-service');
221
+ expect(result.blocks[0].archetype).toBeDefined();
200
222
  });
201
223
  });
@@ -0,0 +1,13 @@
1
+ [
2
+ {
3
+ "type": "CREATE_BLOCK",
4
+ "reason": "Handles user registration, authentication, and authorization.",
5
+ "payload": {
6
+ "name": "user-service",
7
+ "resources": [],
8
+ "type": "BACKEND",
9
+ "archetype": "USER_SERVICE"
10
+ },
11
+ "created": 1720597268038
12
+ }
13
+ ]