@nebulit/embuilder 0.1.39

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 (212) hide show
  1. package/README.md +254 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +138 -0
  4. package/package.json +49 -0
  5. package/templates/.claude/hooks/QUICKSTART.md +256 -0
  6. package/templates/.claude/hooks/README.md +533 -0
  7. package/templates/.claude/hooks/analyze-commit.sh +22 -0
  8. package/templates/.claude/hooks/analyze-commit.ts +518 -0
  9. package/templates/.claude/hooks/analyzers/README.md +198 -0
  10. package/templates/.claude/hooks/analyzers/code-quality-checker.ts +154 -0
  11. package/templates/.claude/hooks/analyzers/code-quality.md +54 -0
  12. package/templates/.claude/hooks/analyzers/commit-blocker-example.ts.disabled +110 -0
  13. package/templates/.claude/hooks/analyzers/commit-policy.md +49 -0
  14. package/templates/.claude/hooks/analyzers/event-model-validator.md +49 -0
  15. package/templates/.claude/hooks/analyzers/event-model-validator.ts +169 -0
  16. package/templates/.claude/hooks/analyzers/example-logger.ts +70 -0
  17. package/templates/.claude/hooks/analyzers/slice-scope-validator.md +81 -0
  18. package/templates/.claude/hooks/check-review-result.sh +47 -0
  19. package/templates/.claude/hooks/prepare-review.sh +34 -0
  20. package/templates/.claude/hooks/review-agent-prompt.md +42 -0
  21. package/templates/.claude/hooks/run-review-agent.sh +124 -0
  22. package/templates/.claude/settings.local.json +37 -0
  23. package/templates/.claude/skills/help/README.md +84 -0
  24. package/templates/.claude/skills/help/SKILL.md +393 -0
  25. package/templates/.claude/skills/help/templates/demo-config.json +6753 -0
  26. package/templates/.claude/skills/sample-slices/SKILL.md +8 -0
  27. package/templates/.claude/skills/sample-slices/templates/.slices/Library/addbook/code-slice.json +124 -0
  28. package/templates/.claude/skills/sample-slices/templates/.slices/Library/addbook/slice.json +255 -0
  29. package/templates/.claude/skills/sample-slices/templates/.slices/Library/availablebooks/slice.json +107 -0
  30. package/templates/.claude/skills/sample-slices/templates/.slices/index.json +20 -0
  31. package/templates/.claude/skills/sample-slices/templates/Cart/additem/slice.json +979 -0
  32. package/templates/.claude/skills/sample-slices/templates/Cart/archiveitem/slice.json +529 -0
  33. package/templates/.claude/skills/sample-slices/templates/Cart/cartitems/slice.json +1072 -0
  34. package/templates/.claude/skills/sample-slices/templates/Cart/cartwithproducts/slice.json +394 -0
  35. package/templates/.claude/skills/sample-slices/templates/Cart/changedprices/slice.json +88 -0
  36. package/templates/.claude/skills/sample-slices/templates/Cart/changeinventory/slice.json +264 -0
  37. package/templates/.claude/skills/sample-slices/templates/Cart/changeprice/slice.json +308 -0
  38. package/templates/.claude/skills/sample-slices/templates/Cart/clearcart/slice.json +358 -0
  39. package/templates/.claude/skills/sample-slices/templates/Cart/inventories/slice.json +203 -0
  40. package/templates/.claude/skills/sample-slices/templates/Cart/publishcart/slice.json +876 -0
  41. package/templates/.claude/skills/sample-slices/templates/Cart/removeitem/slice.json +560 -0
  42. package/templates/.claude/skills/sample-slices/templates/Cart/submitcart/slice.json +708 -0
  43. package/templates/.claude/skills/sample-slices/templates/Cart/submittedcartdata/slice.json +399 -0
  44. package/templates/.claude/skills/sample-slices/templates/index.json +108 -0
  45. package/templates/.claude/skills/slice-automation/SKILL.md +49 -0
  46. package/templates/.claude/skills/slice-state-change/SKILL.md +369 -0
  47. package/templates/.claude/skills/slice-state-change/templates/AddLocation/AddLocation.test.ts.sample +76 -0
  48. package/templates/.claude/skills/slice-state-change/templates/AddLocation/AddLocationCommand.ts.sample +84 -0
  49. package/templates/.claude/skills/slice-state-change/templates/AddLocation/routes.ts.sample +73 -0
  50. package/templates/.claude/skills/slice-state-change/templates/README.md +46 -0
  51. package/templates/.claude/skills/slice-state-view/SKILL.md +336 -0
  52. package/templates/.claude/skills/slice-state-view/templates/Locations/Locations.test.ts.sample +84 -0
  53. package/templates/.claude/skills/slice-state-view/templates/Locations/LocationsProjection.ts.sample +50 -0
  54. package/templates/.claude/skills/slice-state-view/templates/Locations/routes.ts.sample +46 -0
  55. package/templates/.claude/skills/slice-state-view/templates/README.md +109 -0
  56. package/templates/.claude/skills/slice-state-view/templates/Tables/Tables.test.ts.sample +104 -0
  57. package/templates/.claude/skills/slice-state-view/templates/Tables/TablesProjection.ts.sample +59 -0
  58. package/templates/.claude/skills/slice-state-view/templates/Tables/routes.ts.sample +46 -0
  59. package/templates/.claude/skills/slice-state-view/templates/V2__tables.sql +7 -0
  60. package/templates/.claude/skills/slice-state-view/templates/V8__locations.sql +7 -0
  61. package/templates/.claude/skills/test-analyzer/SKILL.md +373 -0
  62. package/templates/.claude/skills/test-analyzer/examples/specification-format.md +143 -0
  63. package/templates/.claude/skills/test-analyzer/examples/state-change-example.md +111 -0
  64. package/templates/.claude/skills/test-analyzer/examples/state-view-example.md +122 -0
  65. package/templates/AGENTS.md +110 -0
  66. package/templates/Claude.md +58 -0
  67. package/templates/README.md +178 -0
  68. package/templates/backend/.env +9 -0
  69. package/templates/backend/BACKEND_AUTH_SETUP.md +183 -0
  70. package/templates/backend/SWAGGER.md +213 -0
  71. package/templates/backend/eslint.config.mjs +31 -0
  72. package/templates/backend/flyway.conf +17 -0
  73. package/templates/backend/package.json +44 -0
  74. package/templates/backend/prd.json.example +64 -0
  75. package/templates/backend/public/assets/images/banner.png +0 -0
  76. package/templates/backend/public/assets/logo.png +0 -0
  77. package/templates/backend/public/file.svg +4 -0
  78. package/templates/backend/public/globe.svg +12 -0
  79. package/templates/backend/public/next.svg +6 -0
  80. package/templates/backend/public/vercel.svg +3 -0
  81. package/templates/backend/public/window.svg +5 -0
  82. package/templates/backend/server.ts +129 -0
  83. package/templates/backend/setup-env.sh +50 -0
  84. package/templates/backend/src/common/assertions.ts +6 -0
  85. package/templates/backend/src/common/db.ts +1 -0
  86. package/templates/backend/src/common/loadPostgresEventstore.ts +16 -0
  87. package/templates/backend/src/common/parseEndpoint.ts +51 -0
  88. package/templates/backend/src/common/replay.ts +9 -0
  89. package/templates/backend/src/common/routes.ts +19 -0
  90. package/templates/backend/src/common/testHelpers.ts +53 -0
  91. package/templates/backend/src/core/readmodel.ts +28 -0
  92. package/templates/backend/src/core/types.ts +26 -0
  93. package/templates/backend/src/process/process.ts +53 -0
  94. package/templates/backend/src/supabase/LoginHandler.ts +36 -0
  95. package/templates/backend/src/supabase/ProtectedPageProps.ts +21 -0
  96. package/templates/backend/src/supabase/README.md +171 -0
  97. package/templates/backend/src/supabase/api.ts +63 -0
  98. package/templates/backend/src/supabase/authMiddleware.ts +53 -0
  99. package/templates/backend/src/supabase/component.ts +12 -0
  100. package/templates/backend/src/supabase/requireUser.ts +72 -0
  101. package/templates/backend/src/supabase/serverProps.ts +25 -0
  102. package/templates/backend/src/supabase/staticProps.ts +10 -0
  103. package/templates/backend/src/swagger.ts +34 -0
  104. package/templates/backend/src/util/assertions.ts +6 -0
  105. package/templates/backend/supabase/config.toml +295 -0
  106. package/templates/backend/supabase/migrations/20260121155918593_catalogentries.sql.sample +23 -0
  107. package/templates/backend/supabase/seed.sql +1 -0
  108. package/templates/backend/tsconfig.json +31 -0
  109. package/templates/frontend/.env.development +3 -0
  110. package/templates/frontend/AGENTS.md +7 -0
  111. package/templates/frontend/README.md +73 -0
  112. package/templates/frontend/components.json +20 -0
  113. package/templates/frontend/eslint.config.js +26 -0
  114. package/templates/frontend/index.html +18 -0
  115. package/templates/frontend/package-lock.json +8347 -0
  116. package/templates/frontend/package.json +94 -0
  117. package/templates/frontend/postcss.config.js +6 -0
  118. package/templates/frontend/public/favicon.ico +0 -0
  119. package/templates/frontend/public/logo.png +0 -0
  120. package/templates/frontend/public/placeholder.svg +1 -0
  121. package/templates/frontend/public/robots.txt +14 -0
  122. package/templates/frontend/src/App.css +42 -0
  123. package/templates/frontend/src/App.tsx +47 -0
  124. package/templates/frontend/src/components/NavLink.tsx +28 -0
  125. package/templates/frontend/src/components/ProtectedRoute.tsx +24 -0
  126. package/templates/frontend/src/components/calendar/Calendar.tsx +302 -0
  127. package/templates/frontend/src/components/layout/DashboardLayout.tsx +21 -0
  128. package/templates/frontend/src/components/layout/Header.tsx +45 -0
  129. package/templates/frontend/src/components/layout/Sidebar.tsx +82 -0
  130. package/templates/frontend/src/components/tables/ReservationTemplates.tsx +189 -0
  131. package/templates/frontend/src/components/ui/accordion.tsx +52 -0
  132. package/templates/frontend/src/components/ui/alert-dialog.tsx +104 -0
  133. package/templates/frontend/src/components/ui/alert.tsx +43 -0
  134. package/templates/frontend/src/components/ui/aspect-ratio.tsx +5 -0
  135. package/templates/frontend/src/components/ui/avatar.tsx +38 -0
  136. package/templates/frontend/src/components/ui/badge.tsx +29 -0
  137. package/templates/frontend/src/components/ui/breadcrumb.tsx +90 -0
  138. package/templates/frontend/src/components/ui/button.tsx +47 -0
  139. package/templates/frontend/src/components/ui/calendar.tsx +54 -0
  140. package/templates/frontend/src/components/ui/card.tsx +43 -0
  141. package/templates/frontend/src/components/ui/carousel.tsx +224 -0
  142. package/templates/frontend/src/components/ui/chart.tsx +303 -0
  143. package/templates/frontend/src/components/ui/checkbox.tsx +26 -0
  144. package/templates/frontend/src/components/ui/collapsible.tsx +9 -0
  145. package/templates/frontend/src/components/ui/command.tsx +132 -0
  146. package/templates/frontend/src/components/ui/context-menu.tsx +178 -0
  147. package/templates/frontend/src/components/ui/dialog.tsx +95 -0
  148. package/templates/frontend/src/components/ui/drawer.tsx +87 -0
  149. package/templates/frontend/src/components/ui/dropdown-menu.tsx +179 -0
  150. package/templates/frontend/src/components/ui/form.tsx +129 -0
  151. package/templates/frontend/src/components/ui/hover-card.tsx +27 -0
  152. package/templates/frontend/src/components/ui/input-otp.tsx +61 -0
  153. package/templates/frontend/src/components/ui/input.tsx +22 -0
  154. package/templates/frontend/src/components/ui/label.tsx +17 -0
  155. package/templates/frontend/src/components/ui/menubar.tsx +207 -0
  156. package/templates/frontend/src/components/ui/navigation-menu.tsx +120 -0
  157. package/templates/frontend/src/components/ui/pagination.tsx +81 -0
  158. package/templates/frontend/src/components/ui/popover.tsx +29 -0
  159. package/templates/frontend/src/components/ui/progress.tsx +23 -0
  160. package/templates/frontend/src/components/ui/radio-group.tsx +36 -0
  161. package/templates/frontend/src/components/ui/resizable.tsx +37 -0
  162. package/templates/frontend/src/components/ui/scroll-area.tsx +38 -0
  163. package/templates/frontend/src/components/ui/select.tsx +143 -0
  164. package/templates/frontend/src/components/ui/separator.tsx +20 -0
  165. package/templates/frontend/src/components/ui/sheet.tsx +107 -0
  166. package/templates/frontend/src/components/ui/sidebar.tsx +637 -0
  167. package/templates/frontend/src/components/ui/skeleton.tsx +7 -0
  168. package/templates/frontend/src/components/ui/slider.tsx +23 -0
  169. package/templates/frontend/src/components/ui/sonner.tsx +27 -0
  170. package/templates/frontend/src/components/ui/stat-card.tsx +44 -0
  171. package/templates/frontend/src/components/ui/switch.tsx +27 -0
  172. package/templates/frontend/src/components/ui/table.tsx +72 -0
  173. package/templates/frontend/src/components/ui/tabs.tsx +53 -0
  174. package/templates/frontend/src/components/ui/textarea.tsx +21 -0
  175. package/templates/frontend/src/components/ui/toast.tsx +111 -0
  176. package/templates/frontend/src/components/ui/toaster.tsx +24 -0
  177. package/templates/frontend/src/components/ui/toggle-group.tsx +49 -0
  178. package/templates/frontend/src/components/ui/toggle.tsx +37 -0
  179. package/templates/frontend/src/components/ui/tooltip.tsx +28 -0
  180. package/templates/frontend/src/components/ui/use-toast.ts +3 -0
  181. package/templates/frontend/src/contexts/AuthContext.tsx +94 -0
  182. package/templates/frontend/src/contexts/RefreshContext.tsx +236 -0
  183. package/templates/frontend/src/hooks/api/index.ts +2 -0
  184. package/templates/frontend/src/hooks/api/useLocations.ts +15 -0
  185. package/templates/frontend/src/hooks/use-mobile.tsx +19 -0
  186. package/templates/frontend/src/hooks/use-toast.ts +186 -0
  187. package/templates/frontend/src/hooks/useApiContext.ts +11 -0
  188. package/templates/frontend/src/index.css +118 -0
  189. package/templates/frontend/src/integrations/supabase/client.ts +9 -0
  190. package/templates/frontend/src/lib/api-client.ts +136 -0
  191. package/templates/frontend/src/lib/api.ts +1028 -0
  192. package/templates/frontend/src/lib/utils.ts +6 -0
  193. package/templates/frontend/src/main.tsx +5 -0
  194. package/templates/frontend/src/pages/Auth.tsx +408 -0
  195. package/templates/frontend/src/pages/Dashboard.tsx +168 -0
  196. package/templates/frontend/src/pages/Menus.tsx +224 -0
  197. package/templates/frontend/src/pages/NotFound.tsx +24 -0
  198. package/templates/frontend/src/pages/Register.tsx +285 -0
  199. package/templates/frontend/src/test/example.test.ts +0 -0
  200. package/templates/frontend/src/test/setup.ts +15 -0
  201. package/templates/frontend/src/types/index.ts +8 -0
  202. package/templates/frontend/src/vite-env.d.ts +1 -0
  203. package/templates/frontend/tailwind.config.ts +101 -0
  204. package/templates/frontend/tsconfig.app.json +31 -0
  205. package/templates/frontend/tsconfig.json +16 -0
  206. package/templates/frontend/tsconfig.node.json +22 -0
  207. package/templates/frontend/vite.config.ts +21 -0
  208. package/templates/frontend/vitest.config.ts +16 -0
  209. package/templates/init.sh +1 -0
  210. package/templates/prompt.md +139 -0
  211. package/templates/ralph.sh +120 -0
  212. package/templates/server.mjs +505 -0
@@ -0,0 +1,264 @@
1
+ {
2
+ "id": "3458764596700878567",
3
+ "status": "Done",
4
+ "title": "slice: change inventory",
5
+ "context": "Cart",
6
+ "sliceType": "STATE_CHANGE",
7
+ "commands": [
8
+ {
9
+ "id": "3458764596395279433",
10
+ "tags": [],
11
+ "domain": "Cart",
12
+ "elementContext": "INTERNAL",
13
+ "modelContext": "Cart",
14
+ "context": "INTERNAL",
15
+ "slice": "slice: change inventory",
16
+ "title": "Change Inventory",
17
+ "fields": [
18
+ {
19
+ "name": "inventory",
20
+ "type": "Int",
21
+ "example": "",
22
+ "mapping": "",
23
+ "optional": false,
24
+ "cardinality": "Single",
25
+ "idAttribute": false
26
+ },
27
+ {
28
+ "name": "productId",
29
+ "type": "UUID",
30
+ "example": "",
31
+ "mapping": "",
32
+ "optional": false,
33
+ "cardinality": "Single",
34
+ "idAttribute": false
35
+ }
36
+ ],
37
+ "type": "COMMAND",
38
+ "description": "",
39
+ "aggregate": "Inventory",
40
+ "aggregateDependencies": [
41
+ "Inventory"
42
+ ],
43
+ "dependencies": [
44
+ {
45
+ "id": "3458764596395403355",
46
+ "type": "OUTBOUND",
47
+ "title": "Inventory Changed",
48
+ "elementType": "EVENT"
49
+ },
50
+ {
51
+ "id": "3458764596395278973",
52
+ "type": "INBOUND",
53
+ "title": "automation",
54
+ "elementType": "AUTOMATION"
55
+ }
56
+ ],
57
+ "apiEndpoint": "",
58
+ "createsAggregate": false,
59
+ "triggers": [],
60
+ "sketched": false,
61
+ "prototype": {
62
+ "activeByDefault": false
63
+ }
64
+ }
65
+ ],
66
+ "events": [
67
+ {
68
+ "id": "3458764596395403355",
69
+ "tags": [],
70
+ "domain": "Cart",
71
+ "elementContext": "INTERNAL",
72
+ "modelContext": "Cart",
73
+ "context": "INTERNAL",
74
+ "slice": "slice: change inventory",
75
+ "title": "Inventory Changed",
76
+ "fields": [
77
+ {
78
+ "name": "inventory",
79
+ "type": "Int",
80
+ "example": "",
81
+ "mapping": "",
82
+ "optional": false,
83
+ "cardinality": "Single",
84
+ "idAttribute": false
85
+ },
86
+ {
87
+ "name": "productId",
88
+ "type": "UUID",
89
+ "example": "",
90
+ "mapping": "",
91
+ "optional": false,
92
+ "cardinality": "Single",
93
+ "idAttribute": true
94
+ }
95
+ ],
96
+ "type": "EVENT",
97
+ "description": "",
98
+ "aggregate": "Inventory",
99
+ "aggregateDependencies": [
100
+ "Inventory"
101
+ ],
102
+ "dependencies": [
103
+ {
104
+ "id": "3458764596395903488",
105
+ "type": "OUTBOUND",
106
+ "title": "Inventories",
107
+ "elementType": "READMODEL"
108
+ },
109
+ {
110
+ "id": "3458764596395279433",
111
+ "type": "INBOUND",
112
+ "title": "Change Inventory",
113
+ "elementType": "COMMAND"
114
+ }
115
+ ],
116
+ "apiEndpoint": "",
117
+ "service": null,
118
+ "createsAggregate": false,
119
+ "triggers": [],
120
+ "sketched": false,
121
+ "prototype": {
122
+ "activeByDefault": false
123
+ }
124
+ }
125
+ ],
126
+ "readmodels": [],
127
+ "screens": [],
128
+ "screenImages": [],
129
+ "screenLayouts": [],
130
+ "processors": [
131
+ {
132
+ "id": "3458764596395278973",
133
+ "tags": [],
134
+ "domain": "Cart",
135
+ "elementContext": "INTERNAL",
136
+ "modelContext": "Cart",
137
+ "context": "INTERNAL",
138
+ "slice": "slice: change inventory",
139
+ "title": "automation",
140
+ "fields": [
141
+ {
142
+ "name": "inventory",
143
+ "type": "Int",
144
+ "example": "",
145
+ "mapping": "",
146
+ "optional": false,
147
+ "cardinality": "Single",
148
+ "idAttribute": false
149
+ },
150
+ {
151
+ "name": "productId",
152
+ "type": "String",
153
+ "example": "",
154
+ "mapping": "",
155
+ "optional": false,
156
+ "cardinality": "Single",
157
+ "idAttribute": false
158
+ }
159
+ ],
160
+ "type": "AUTOMATION",
161
+ "description": "",
162
+ "aggregate": "Inventory",
163
+ "aggregateDependencies": [
164
+ "Inventory"
165
+ ],
166
+ "dependencies": [
167
+ {
168
+ "id": "3458764596395279433",
169
+ "type": "OUTBOUND",
170
+ "title": "Change Inventory",
171
+ "elementType": "COMMAND"
172
+ }
173
+ ],
174
+ "apiEndpoint": "",
175
+ "createsAggregate": false,
176
+ "triggers": [],
177
+ "sketched": false,
178
+ "prototype": {
179
+ "activeByDefault": false
180
+ }
181
+ }
182
+ ],
183
+ "tables": [],
184
+ "specifications": [
185
+ {
186
+ "vertical": false,
187
+ "id": "3458764596955969400",
188
+ "sliceName": "slice: change inventory",
189
+ "title": "spec: change inventory",
190
+ "given": [],
191
+ "when": [
192
+ {
193
+ "title": "Change Inventory",
194
+ "tags": [],
195
+ "id": "3458764596955969401",
196
+ "index": 0,
197
+ "type": "SPEC_COMMAND",
198
+ "fields": [
199
+ {
200
+ "name": "inventory",
201
+ "type": "Int",
202
+ "example": "",
203
+ "mapping": "",
204
+ "optional": false,
205
+ "cardinality": "Single",
206
+ "subfields": []
207
+ },
208
+ {
209
+ "name": "productId",
210
+ "type": "UUID",
211
+ "example": "",
212
+ "mapping": "",
213
+ "optional": false,
214
+ "cardinality": "Single",
215
+ "subfields": []
216
+ }
217
+ ],
218
+ "linkedId": "3458764596395279433"
219
+ }
220
+ ],
221
+ "then": [
222
+ {
223
+ "title": "Inventory Changed",
224
+ "tags": [],
225
+ "id": "3458764596955969402",
226
+ "index": 0,
227
+ "type": "SPEC_EVENT",
228
+ "fields": [
229
+ {
230
+ "name": "inventory",
231
+ "type": "Int",
232
+ "example": "",
233
+ "mapping": "",
234
+ "optional": false,
235
+ "cardinality": "Single",
236
+ "subfields": []
237
+ },
238
+ {
239
+ "name": "productId",
240
+ "type": "UUID",
241
+ "example": "",
242
+ "mapping": "",
243
+ "optional": false,
244
+ "cardinality": "Single",
245
+ "idAttribute": true,
246
+ "subfields": []
247
+ }
248
+ ],
249
+ "linkedId": "3458764596395403355"
250
+ }
251
+ ],
252
+ "comments": [],
253
+ "linkedId": "3458764596700878567"
254
+ }
255
+ ],
256
+ "actors": [
257
+ {
258
+ "name": "bots"
259
+ }
260
+ ],
261
+ "aggregates": [
262
+ "Inventory"
263
+ ]
264
+ }
@@ -0,0 +1,308 @@
1
+ {
2
+ "id": "3458764596700962283",
3
+ "status": "Done",
4
+ "title": "slice: change price",
5
+ "context": "Cart",
6
+ "sliceType": "STATE_CHANGE",
7
+ "commands": [
8
+ {
9
+ "id": "3458764596402011072",
10
+ "tags": [],
11
+ "domain": "Cart",
12
+ "elementContext": "INTERNAL",
13
+ "modelContext": "Cart",
14
+ "context": "INTERNAL",
15
+ "slice": "slice: change price",
16
+ "title": "Change Price",
17
+ "fields": [
18
+ {
19
+ "name": "newPrice",
20
+ "type": "Double",
21
+ "example": "",
22
+ "mapping": "",
23
+ "optional": false,
24
+ "cardinality": "Single",
25
+ "idAttribute": false
26
+ },
27
+ {
28
+ "name": "oldPrice",
29
+ "type": "Double",
30
+ "example": "",
31
+ "mapping": "",
32
+ "optional": false,
33
+ "cardinality": "Single",
34
+ "idAttribute": false
35
+ },
36
+ {
37
+ "name": "productId",
38
+ "type": "String",
39
+ "example": "",
40
+ "mapping": "",
41
+ "optional": false,
42
+ "cardinality": "Single",
43
+ "idAttribute": false
44
+ }
45
+ ],
46
+ "type": "COMMAND",
47
+ "description": "",
48
+ "aggregate": "Pricing",
49
+ "aggregateDependencies": [
50
+ "Pricing"
51
+ ],
52
+ "dependencies": [
53
+ {
54
+ "id": "3458764595641022550",
55
+ "type": "OUTBOUND",
56
+ "title": "Price Changed",
57
+ "elementType": "EVENT"
58
+ },
59
+ {
60
+ "id": "3458764596401905894",
61
+ "type": "INBOUND",
62
+ "title": "automation",
63
+ "elementType": "AUTOMATION"
64
+ }
65
+ ],
66
+ "apiEndpoint": "",
67
+ "createsAggregate": false,
68
+ "triggers": [],
69
+ "sketched": false,
70
+ "prototype": {
71
+ "activeByDefault": false
72
+ }
73
+ }
74
+ ],
75
+ "events": [
76
+ {
77
+ "id": "3458764595641022550",
78
+ "tags": [],
79
+ "domain": "Cart",
80
+ "elementContext": "INTERNAL",
81
+ "modelContext": "Cart",
82
+ "context": "INTERNAL",
83
+ "slice": "slice: change price",
84
+ "title": "Price Changed",
85
+ "fields": [
86
+ {
87
+ "name": "newPrice",
88
+ "type": "Double",
89
+ "example": "",
90
+ "mapping": "",
91
+ "optional": false,
92
+ "cardinality": "Single",
93
+ "idAttribute": false
94
+ },
95
+ {
96
+ "name": "oldPrice",
97
+ "type": "Double",
98
+ "example": "",
99
+ "mapping": "",
100
+ "optional": false,
101
+ "cardinality": "Single",
102
+ "idAttribute": false
103
+ },
104
+ {
105
+ "name": "productId",
106
+ "type": "UUID",
107
+ "example": "",
108
+ "mapping": "",
109
+ "optional": false,
110
+ "cardinality": "Single",
111
+ "idAttribute": false
112
+ }
113
+ ],
114
+ "type": "EVENT",
115
+ "description": "",
116
+ "aggregate": "Pricing",
117
+ "aggregateDependencies": [
118
+ "Pricing"
119
+ ],
120
+ "dependencies": [
121
+ {
122
+ "id": "3458764596409128019",
123
+ "type": "OUTBOUND",
124
+ "title": "Changed Prices",
125
+ "elementType": "READMODEL"
126
+ },
127
+ {
128
+ "id": "3458764596402011072",
129
+ "type": "INBOUND",
130
+ "title": "Change Price",
131
+ "elementType": "COMMAND"
132
+ }
133
+ ],
134
+ "apiEndpoint": "",
135
+ "service": null,
136
+ "createsAggregate": false,
137
+ "triggers": [],
138
+ "sketched": false,
139
+ "prototype": {
140
+ "activeByDefault": false
141
+ }
142
+ }
143
+ ],
144
+ "readmodels": [],
145
+ "screens": [],
146
+ "screenImages": [],
147
+ "screenLayouts": [],
148
+ "processors": [
149
+ {
150
+ "id": "3458764596401905894",
151
+ "tags": [],
152
+ "domain": "Cart",
153
+ "elementContext": "INTERNAL",
154
+ "modelContext": "Cart",
155
+ "context": "INTERNAL",
156
+ "slice": "slice: change price",
157
+ "title": "automation",
158
+ "fields": [
159
+ {
160
+ "name": "newPrice",
161
+ "type": "Double",
162
+ "example": "",
163
+ "mapping": "",
164
+ "optional": false,
165
+ "cardinality": "Single",
166
+ "idAttribute": false
167
+ },
168
+ {
169
+ "name": "oldPrice",
170
+ "type": "Double",
171
+ "example": "",
172
+ "mapping": "",
173
+ "optional": false,
174
+ "cardinality": "Single",
175
+ "idAttribute": false
176
+ },
177
+ {
178
+ "name": "productId",
179
+ "type": "String",
180
+ "example": "",
181
+ "mapping": "",
182
+ "optional": false,
183
+ "cardinality": "Single",
184
+ "idAttribute": false
185
+ }
186
+ ],
187
+ "type": "AUTOMATION",
188
+ "description": "",
189
+ "aggregate": "Pricing",
190
+ "aggregateDependencies": [
191
+ "Pricing"
192
+ ],
193
+ "dependencies": [
194
+ {
195
+ "id": "3458764596402011072",
196
+ "type": "OUTBOUND",
197
+ "title": "Change Price",
198
+ "elementType": "COMMAND"
199
+ }
200
+ ],
201
+ "apiEndpoint": "",
202
+ "createsAggregate": false,
203
+ "triggers": [],
204
+ "sketched": false,
205
+ "prototype": {
206
+ "activeByDefault": false
207
+ }
208
+ }
209
+ ],
210
+ "tables": [],
211
+ "specifications": [
212
+ {
213
+ "vertical": false,
214
+ "id": "3458764597370328087",
215
+ "sliceName": "slice: change price",
216
+ "title": "spec: change price",
217
+ "given": [],
218
+ "when": [
219
+ {
220
+ "title": "Change Price",
221
+ "tags": [],
222
+ "id": "3458764597370328089",
223
+ "index": 0,
224
+ "type": "SPEC_COMMAND",
225
+ "fields": [
226
+ {
227
+ "name": "newPrice",
228
+ "type": "Double",
229
+ "example": "",
230
+ "mapping": "",
231
+ "optional": false,
232
+ "cardinality": "Single",
233
+ "subfields": []
234
+ },
235
+ {
236
+ "name": "oldPrice",
237
+ "type": "Double",
238
+ "example": "",
239
+ "mapping": "",
240
+ "optional": false,
241
+ "cardinality": "Single",
242
+ "subfields": []
243
+ },
244
+ {
245
+ "name": "productId",
246
+ "type": "String",
247
+ "example": "",
248
+ "mapping": "",
249
+ "optional": false,
250
+ "cardinality": "Single",
251
+ "subfields": []
252
+ }
253
+ ],
254
+ "linkedId": "3458764596402011072"
255
+ }
256
+ ],
257
+ "then": [
258
+ {
259
+ "title": "Price Changed",
260
+ "tags": [],
261
+ "id": "3458764597370328090",
262
+ "index": 0,
263
+ "type": "SPEC_EVENT",
264
+ "fields": [
265
+ {
266
+ "name": "newPrice",
267
+ "type": "Double",
268
+ "example": "",
269
+ "mapping": "",
270
+ "optional": false,
271
+ "cardinality": "Single",
272
+ "subfields": []
273
+ },
274
+ {
275
+ "name": "oldPrice",
276
+ "type": "Double",
277
+ "example": "",
278
+ "mapping": "",
279
+ "optional": false,
280
+ "cardinality": "Single",
281
+ "subfields": []
282
+ },
283
+ {
284
+ "name": "productId",
285
+ "type": "UUID",
286
+ "example": "",
287
+ "mapping": "",
288
+ "optional": false,
289
+ "cardinality": "Single",
290
+ "subfields": []
291
+ }
292
+ ],
293
+ "linkedId": "3458764595641022550"
294
+ }
295
+ ],
296
+ "comments": [],
297
+ "linkedId": "3458764596700962283"
298
+ }
299
+ ],
300
+ "actors": [
301
+ {
302
+ "name": "bots"
303
+ }
304
+ ],
305
+ "aggregates": [
306
+ "Pricing"
307
+ ]
308
+ }