@autobe/ui 0.29.2 → 0.30.0-dev.20260315

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 (151) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +261 -0
  3. package/lib/components/AutoBeChatMain.js +5 -5
  4. package/lib/components/AutoBeChatMain.js.map +1 -1
  5. package/lib/components/AutoBeConfigModal.js +9 -9
  6. package/lib/components/AutoBeStatusModal.js +4 -4
  7. package/lib/components/AutoBeStatusModal.js.map +1 -1
  8. package/lib/components/AutoBeUserMessageMovie.d.ts +2 -2
  9. package/lib/components/common/ChatBubble.d.ts +2 -2
  10. package/lib/components/common/openai/OpenAIContent.d.ts +2 -2
  11. package/lib/components/common/openai/OpenAIContent.js.map +1 -1
  12. package/lib/components/common/openai/OpenAIUserAudioContent.js +1 -1
  13. package/lib/components/common/openai/OpenAIUserAudioContent.js.map +1 -1
  14. package/lib/components/common/openai/OpenAIUserFileContent.js +1 -1
  15. package/lib/components/common/openai/OpenAIUserFileContent.js.map +1 -1
  16. package/lib/components/common/openai/OpenAIUserImageContent.d.ts +2 -2
  17. package/lib/components/events/AutoBeCompleteEventMovie.d.ts +2 -2
  18. package/lib/components/events/AutoBeCompleteEventMovie.js +5 -5
  19. package/lib/components/events/AutoBeCompleteEventMovie.js.map +1 -1
  20. package/lib/components/events/AutoBeCorrectEventMovie.d.ts +2 -2
  21. package/lib/components/events/AutoBeCorrectEventMovie.js +4 -4
  22. package/lib/components/events/AutoBeCorrectEventMovie.js.map +1 -1
  23. package/lib/components/events/AutoBeEventMovie.js +38 -17
  24. package/lib/components/events/AutoBeEventMovie.js.map +1 -1
  25. package/lib/components/events/AutoBeProgressEventMovie.js +73 -13
  26. package/lib/components/events/AutoBeProgressEventMovie.js.map +1 -1
  27. package/lib/components/events/AutoBeScenarioEventMovie.d.ts +2 -2
  28. package/lib/components/events/AutoBeScenarioEventMovie.js +18 -5
  29. package/lib/components/events/AutoBeScenarioEventMovie.js.map +1 -1
  30. package/lib/components/events/AutoBeStartEventMovie.d.ts +2 -2
  31. package/lib/components/events/AutoBeStartEventMovie.js +2 -2
  32. package/lib/components/events/AutoBeStartEventMovie.js.map +1 -1
  33. package/lib/components/events/AutoBeValidateEventMovie.d.ts +2 -2
  34. package/lib/components/events/AutoBeValidateEventMovie.js +3 -11
  35. package/lib/components/events/AutoBeValidateEventMovie.js.map +1 -1
  36. package/lib/components/events/groups/CorrectEventGroup.d.ts +2 -2
  37. package/lib/components/events/groups/CorrectEventGroup.js +1 -1
  38. package/lib/components/events/groups/CorrectEventGroup.js.map +1 -1
  39. package/lib/components/events/groups/ValidateEventGroup.d.ts +2 -2
  40. package/lib/components/events/groups/ValidateEventGroup.js +1 -2
  41. package/lib/components/events/groups/ValidateEventGroup.js.map +1 -1
  42. package/lib/components/events/utils/eventGrouper.js +1 -2
  43. package/lib/components/events/utils/eventGrouper.js.map +1 -1
  44. package/lib/components/upload/AutoBeChatUploadBox.d.ts +3 -4
  45. package/lib/components/upload/AutoBeChatUploadBox.js +2 -1
  46. package/lib/components/upload/AutoBeChatUploadBox.js.map +1 -1
  47. package/lib/components/upload/AutoBeChatUploadSendButton.js +1 -1
  48. package/lib/components/upload/AutoBeChatUploadSendButton.js.map +1 -1
  49. package/lib/context/AutoBeAgentContext.d.ts +1 -3
  50. package/lib/context/AutoBeAgentContext.js +0 -4
  51. package/lib/context/AutoBeAgentContext.js.map +1 -1
  52. package/lib/hooks/useSessionStorage.d.ts +4 -0
  53. package/lib/hooks/useSessionStorage.js +16 -0
  54. package/lib/hooks/useSessionStorage.js.map +1 -0
  55. package/lib/index.d.ts +1 -0
  56. package/lib/index.js +1 -0
  57. package/lib/index.js.map +1 -1
  58. package/lib/strategy/AutoBeAgentSessionStorageStrategy.d.ts +10 -0
  59. package/lib/strategy/AutoBeAgentSessionStorageStrategy.js +117 -0
  60. package/lib/strategy/AutoBeAgentSessionStorageStrategy.js.map +1 -0
  61. package/lib/structure/AutoBeListener.js +91 -23
  62. package/lib/structure/AutoBeListener.js.map +1 -1
  63. package/lib/structure/AutoBeListenerState.d.ts +3 -3
  64. package/lib/structure/AutoBeListenerState.js +4 -4
  65. package/lib/structure/AutoBeListenerState.js.map +1 -1
  66. package/lib/structure/IAutoBeAgentSessionStorageStrategy.js +1 -1
  67. package/lib/structure/IAutoBeAgentSessionStorageStrategy.js.map +1 -1
  68. package/lib/utils/AutoBeFileUploader.d.ts +2 -2
  69. package/lib/utils/AutoBeFileUploader.js.map +1 -1
  70. package/package.json +3 -4
  71. package/src/components/AutoBeAssistantMessageMovie.tsx +22 -22
  72. package/src/components/AutoBeChatMain.tsx +376 -376
  73. package/src/components/AutoBeChatSidebar.tsx +414 -414
  74. package/src/components/AutoBeConfigButton.tsx +83 -83
  75. package/src/components/AutoBeConfigModal.tsx +443 -443
  76. package/src/components/AutoBeStatusButton.tsx +75 -75
  77. package/src/components/AutoBeStatusModal.tsx +486 -484
  78. package/src/components/AutoBeUserMessageMovie.tsx +27 -27
  79. package/src/components/common/ActionButton.tsx +205 -205
  80. package/src/components/common/ActionButtonGroup.tsx +80 -80
  81. package/src/components/common/AutoBeConfigInput.tsx +185 -185
  82. package/src/components/common/ChatBubble.tsx +119 -119
  83. package/src/components/common/Collapsible.tsx +95 -95
  84. package/src/components/common/CompactSessionIndicator.tsx +73 -73
  85. package/src/components/common/CompactSessionList.tsx +82 -82
  86. package/src/components/common/index.ts +8 -8
  87. package/src/components/common/openai/OpenAIContent.tsx +53 -53
  88. package/src/components/common/openai/OpenAIUserAudioContent.tsx +70 -70
  89. package/src/components/common/openai/OpenAIUserFileContent.tsx +76 -76
  90. package/src/components/common/openai/OpenAIUserImageContent.tsx +34 -34
  91. package/src/components/common/openai/OpenAIUserTextContent.tsx +15 -15
  92. package/src/components/common/openai/index.ts +5 -5
  93. package/src/components/events/AutoBeCompleteEventMovie.tsx +402 -402
  94. package/src/components/events/AutoBeCorrectEventMovie.tsx +354 -368
  95. package/src/components/events/AutoBeEventGroupMovie.tsx +18 -18
  96. package/src/components/events/AutoBeEventMovie.tsx +158 -139
  97. package/src/components/events/AutoBeProgressEventMovie.tsx +217 -157
  98. package/src/components/events/AutoBeScenarioEventMovie.tsx +135 -95
  99. package/src/components/events/AutoBeStartEventMovie.tsx +82 -82
  100. package/src/components/events/AutoBeValidateEventMovie.tsx +249 -286
  101. package/src/components/events/README.md +300 -300
  102. package/src/components/events/common/CollapsibleEventGroup.tsx +211 -211
  103. package/src/components/events/common/EventCard.tsx +61 -61
  104. package/src/components/events/common/EventContent.tsx +31 -31
  105. package/src/components/events/common/EventHeader.tsx +85 -85
  106. package/src/components/events/common/EventIcon.tsx +82 -82
  107. package/src/components/events/common/ProgressBar.tsx +64 -64
  108. package/src/components/events/common/index.ts +13 -13
  109. package/src/components/events/groups/CorrectEventGroup.tsx +183 -183
  110. package/src/components/events/groups/ValidateEventGroup.tsx +143 -146
  111. package/src/components/events/groups/index.ts +8 -8
  112. package/src/components/events/index.ts +16 -16
  113. package/src/components/events/utils/eventGrouper.tsx +116 -117
  114. package/src/components/events/utils/index.ts +1 -1
  115. package/src/components/index.ts +13 -13
  116. package/src/components/upload/AutoBeChatUploadBox.tsx +425 -424
  117. package/src/components/upload/AutoBeChatUploadSendButton.tsx +66 -66
  118. package/src/components/upload/AutoBeFileUploadBox.tsx +123 -123
  119. package/src/components/upload/AutoBeUploadConfig.ts +5 -5
  120. package/src/components/upload/AutoBeVoiceRecoderButton.tsx +100 -100
  121. package/src/components/upload/index.ts +5 -5
  122. package/src/constant/color.ts +28 -28
  123. package/src/context/AutoBeAgentContext.tsx +245 -258
  124. package/src/context/AutoBeAgentSessionList.tsx +58 -58
  125. package/src/context/SearchParamsContext.tsx +49 -49
  126. package/src/hooks/index.ts +3 -3
  127. package/src/hooks/useEscapeKey.ts +24 -24
  128. package/src/hooks/useIsomorphicLayoutEffect.ts +8 -8
  129. package/src/hooks/useMediaQuery.ts +73 -73
  130. package/src/hooks/useSessionStorage.ts +10 -0
  131. package/src/icons/Receipt.tsx +74 -74
  132. package/src/index.ts +9 -8
  133. package/src/strategy/AutoBeAgentSessionStorageStrategy.ts +127 -0
  134. package/src/structure/AutoBeListener.ts +373 -304
  135. package/src/structure/AutoBeListenerState.ts +53 -53
  136. package/src/structure/IAutoBeAgentSessionStorageStrategy.ts +87 -87
  137. package/src/structure/IAutoBeEventGroup.ts +6 -6
  138. package/src/structure/index.ts +4 -4
  139. package/src/types/config.ts +44 -44
  140. package/src/types/index.ts +1 -1
  141. package/src/utils/AutoBeFileUploader.ts +279 -279
  142. package/src/utils/AutoBeVoiceRecorder.ts +95 -95
  143. package/src/utils/__tests__/crypto.test.ts +286 -286
  144. package/src/utils/__tests__/storage.test.ts +229 -229
  145. package/src/utils/crypto.ts +95 -95
  146. package/src/utils/index.ts +6 -6
  147. package/src/utils/number.ts +17 -17
  148. package/src/utils/storage.ts +96 -96
  149. package/src/utils/time.ts +14 -14
  150. package/tsconfig.json +9 -9
  151. package/vitest.config.ts +15 -15
@@ -1,304 +1,373 @@
1
- import { AutoBeEvent, IAutoBeRpcListener } from "@autobe/interface";
2
- import { List } from "tstl";
3
-
4
- import { AutoBeListenerState } from "./AutoBeListenerState";
5
- import { IAutoBeEventGroup } from "./IAutoBeEventGroup";
6
-
7
- export class AutoBeListener {
8
- private callback_: Set<(eventGroups: IAutoBeEventGroup[]) => Promise<void>>;
9
- private onEnableCallback_: Set<(value: boolean) => Promise<void>>;
10
-
11
- private listener_: Required<IAutoBeRpcListener>;
12
- private events_: List<IAutoBeEventGroup> = new List();
13
- private dict_: Map<AutoBeEvent.Type, List.Iterator<IAutoBeEventGroup>> =
14
- new Map();
15
- private enable_: boolean = false;
16
- private readonly state_: AutoBeListenerState;
17
-
18
- public constructor() {
19
- this.callback_ = new Set();
20
- this.onEnableCallback_ = new Set();
21
-
22
- this.state_ = new AutoBeListenerState();
23
- this.listener_ = {
24
- enable: async (value) => {
25
- this.enable_ = value;
26
- this.onEnableCallback_.forEach((callback) =>
27
- callback(value).catch(() => {}),
28
- );
29
- },
30
- assistantMessage: async (event) => {
31
- this.insert(event);
32
- },
33
- userMessage: async (event) => {
34
- this.insert(event);
35
- },
36
-
37
- // ANALYZE
38
- analyzeStart: async (event) => {
39
- this.dict_.delete("analyzeWrite");
40
- this.dict_.delete("analyzeReview");
41
- this.insert(event);
42
- },
43
- analyzeScenario: async (event) => {
44
- this.accumulate(event);
45
- },
46
- analyzeWrite: async (event) => {
47
- this.accumulate(event);
48
- },
49
- analyzeReview: async (event) => {
50
- this.accumulate(event);
51
- },
52
- analyzeComplete: async (event) => {
53
- this.dict_.delete("analyzeWrite");
54
- this.dict_.delete("analyzeReview");
55
- this.state_.setAnalyze(event);
56
- this.insert(event);
57
- },
58
-
59
- // PRISMA
60
- prismaStart: async (event) => {
61
- this.dict_.delete("prismaSchema");
62
- this.dict_.delete("prismaReview");
63
- this.insert(event);
64
- },
65
- prismaComponent: async (event) => {
66
- this.insert(event);
67
- },
68
- prismaSchema: async (event) => {
69
- this.accumulate(event);
70
- },
71
- prismaInsufficient: async (event) => {
72
- this.insert(event);
73
- },
74
- prismaReview: async (event) => {
75
- this.accumulate(event);
76
- },
77
- prismaValidate: async (event) => {
78
- this.insert(event);
79
- },
80
- prismaCorrect: async (event) => {
81
- this.insert(event);
82
- },
83
- prismaComplete: async (event) => {
84
- this.dict_.delete("prismaSchema");
85
- this.dict_.delete("prismaReview");
86
- this.state_.setPrisma(event);
87
- this.insert(event);
88
- },
89
-
90
- // INTERFACE
91
- interfaceStart: async (event) => {
92
- this.dict_.delete("interfaceAuthorization");
93
- this.dict_.delete("interfaceEndpoint");
94
- this.dict_.delete("interfaceOperation");
95
- this.dict_.delete("interfaceOperationReview");
96
- this.dict_.delete("interfaceSchema");
97
- this.dict_.delete("interfaceSchemaReview");
98
- this.dict_.delete("interfaceComplement");
99
- this.dict_.delete("interfaceSchemaRename");
100
- this.dict_.delete("interfacePrerequisite");
101
- this.insert(event);
102
- },
103
- interfaceGroup: async (event) => {
104
- this.insert(event);
105
- },
106
- interfaceEndpoint: async (event) => {
107
- this.accumulate(event);
108
- },
109
- interfaceEndpointReview: async (event) => {
110
- this.accumulate(event);
111
- },
112
- interfaceOperation: async (event) => {
113
- this.accumulate(event);
114
- },
115
- interfaceOperationReview: async (event) => {
116
- this.accumulate(event);
117
- },
118
- interfaceAuthorization: async (event) => {
119
- this.accumulate(event);
120
- },
121
- interfaceSchema: async (event) => {
122
- this.accumulate(event);
123
- },
124
- interfaceSchemaReview: async (event) => {
125
- this.accumulate(event);
126
- },
127
- interfaceSchemaRename: async (event) => {
128
- this.accumulate(event);
129
- },
130
- interfaceComplement: async (event) => {
131
- this.accumulate(event);
132
- },
133
- interfacePrerequisite: async (event) => {
134
- this.accumulate(event);
135
- },
136
- interfaceComplete: async (event) => {
137
- this.dict_.delete("interfaceEndpoint");
138
- this.dict_.delete("interfaceOperation");
139
- this.dict_.delete("interfaceOperationReview");
140
- this.dict_.delete("interfaceAuthorization");
141
- this.dict_.delete("interfaceSchema");
142
- this.dict_.delete("interfaceSchemaReview");
143
- this.dict_.delete("interfaceSchemaRename");
144
- this.dict_.delete("interfaceComplement");
145
- this.dict_.delete("interfacePrerequisite");
146
- this.state_.setInterface(event);
147
- this.insert(event);
148
- },
149
-
150
- // TEST
151
- testStart: async (event) => {
152
- this.dict_.delete("testScenario");
153
- this.dict_.delete("testWrite");
154
- this.dict_.delete("testValidate");
155
- this.dict_.delete("testCorrect");
156
- this.insert(event);
157
- },
158
- testScenario: async (event) => {
159
- this.accumulate(event);
160
- },
161
- testScenarioReview: async (event) => {
162
- this.accumulate(event);
163
- },
164
- testWrite: async (event) => {
165
- this.accumulate(event);
166
- },
167
- testValidate: async (event) => {
168
- this.accumulate(event);
169
- },
170
- testCorrect: async (event) => {
171
- this.accumulate(event);
172
- },
173
- testComplete: async (event) => {
174
- this.dict_.delete("testScenario");
175
- this.dict_.delete("testWrite");
176
- this.dict_.delete("testValidate");
177
- this.dict_.delete("testCorrect");
178
- this.state_.setTest(event);
179
- this.insert(event);
180
- },
181
-
182
- //----
183
- // REALIZE
184
- //----
185
- // REALIZE-MAIN
186
- realizeStart: async (event) => {
187
- this.dict_.delete("realizeWrite");
188
- this.dict_.delete("realizeValidate");
189
- this.insert(event);
190
- },
191
- realizeWrite: async (event) => {
192
- this.accumulate(event);
193
- },
194
- realizeCorrect: async (event) => {
195
- this.accumulate(event);
196
- },
197
-
198
- realizeValidate: async (event) => {
199
- this.accumulate(event);
200
- },
201
- realizeComplete: async (event) => {
202
- this.dict_.delete("realizeWrite");
203
- this.dict_.delete("realizeValidate");
204
- this.state_.setRealize(event);
205
- this.insert(event);
206
- },
207
- // REALIZE-AUTHORIZATION
208
- realizeAuthorizationStart: async (event) => {
209
- this.dict_.delete("realizeAuthorizationWrite");
210
- this.dict_.delete("realizeAuthorizationCorrect");
211
- this.dict_.delete("realizeAuthorizationValidate");
212
- this.insert(event);
213
- },
214
- realizeAuthorizationWrite: async (event) => {
215
- this.accumulate(event);
216
- },
217
- realizeAuthorizationValidate: async (event) => {
218
- this.accumulate(event);
219
- },
220
- realizeAuthorizationCorrect: async (event) => {
221
- this.insert(event);
222
- },
223
- realizeAuthorizationComplete: async (event) => {
224
- this.dict_.delete("realizeAuthorizationWrite");
225
- this.dict_.delete("realizeAuthorizationCorrect");
226
- this.dict_.delete("realizeAuthorizationValidate");
227
- this.insert(event);
228
- },
229
- // REALILZE-TEST
230
- realizeTestStart: async (event) => {
231
- this.dict_.delete("realizeTestOperation");
232
- this.insert(event);
233
- },
234
- realizeTestReset: async (event) => {
235
- this.insert(event);
236
- },
237
- realizeTestOperation: async (event) => {
238
- this.accumulate(event);
239
- },
240
- realizeTestComplete: async (event) => {
241
- this.dict_.delete("realizeTestOperation");
242
- this.insert(event);
243
- },
244
- };
245
- }
246
-
247
- public on(callback: (eventGroups: IAutoBeEventGroup[]) => Promise<void>) {
248
- this.callback_.add(callback);
249
- }
250
-
251
- public off(callback: (eventGroups: IAutoBeEventGroup[]) => Promise<void>) {
252
- this.callback_.delete(callback);
253
- }
254
-
255
- public getListener(): Required<IAutoBeRpcListener> {
256
- return this.listener_;
257
- }
258
-
259
- public getState(): AutoBeListenerState {
260
- return this.state_;
261
- }
262
-
263
- public getEnable(): boolean {
264
- return this.enable_;
265
- }
266
-
267
- public onEnable(callback: (value: boolean) => Promise<void>) {
268
- this.onEnableCallback_.add(callback);
269
- }
270
-
271
- public offEnable(callback: (value: boolean) => Promise<void>) {
272
- this.onEnableCallback_.delete(callback);
273
- }
274
-
275
- private accumulate(event: AutoBeEvent) {
276
- const it: List.Iterator<IAutoBeEventGroup> | undefined = this.dict_.get(
277
- event.type,
278
- );
279
- if (it === undefined)
280
- this.dict_.set(
281
- event.type,
282
- this.events_.insert(this.events_.end(), {
283
- type: event.type,
284
- events: [event],
285
- }),
286
- );
287
- else it.value.events.push(event);
288
- this.dispatch();
289
- }
290
-
291
- private insert(event: AutoBeEvent) {
292
- this.events_.push_back({
293
- type: event.type,
294
- events: [event],
295
- });
296
- this.dispatch();
297
- }
298
-
299
- private dispatch() {
300
- this.callback_.forEach((callback) =>
301
- callback(this.events_.toJSON()).catch(() => {}),
302
- );
303
- }
304
- }
1
+ import { AutoBeEvent, IAutoBeRpcListener } from "@autobe/interface";
2
+ import { List } from "tstl";
3
+
4
+ import { AutoBeListenerState } from "./AutoBeListenerState";
5
+ import { IAutoBeEventGroup } from "./IAutoBeEventGroup";
6
+
7
+ export class AutoBeListener {
8
+ private callback_: Set<(eventGroups: IAutoBeEventGroup[]) => Promise<void>>;
9
+ private onEnableCallback_: Set<(value: boolean) => Promise<void>>;
10
+
11
+ private listener_: Required<IAutoBeRpcListener>;
12
+ private events_: List<IAutoBeEventGroup> = new List();
13
+ private dict_: Map<AutoBeEvent.Type, List.Iterator<IAutoBeEventGroup>> =
14
+ new Map();
15
+ private enable_: boolean = false;
16
+ private readonly state_: AutoBeListenerState;
17
+
18
+ public constructor() {
19
+ this.callback_ = new Set();
20
+ this.onEnableCallback_ = new Set();
21
+
22
+ this.state_ = new AutoBeListenerState();
23
+ this.listener_ = {
24
+ enable: async (value) => {
25
+ this.enable_ = value;
26
+ this.onEnableCallback_.forEach((callback) =>
27
+ callback(value).catch(() => {}),
28
+ );
29
+ },
30
+ assistantMessage: async (event) => {
31
+ this.insert(event);
32
+ },
33
+ userMessage: async (event) => {
34
+ this.insert(event);
35
+ },
36
+
37
+ // DESCRIBE
38
+ imageDescribeStart: async (event) => {
39
+ this.dict_.delete("imageDescribeDraft");
40
+ this.insert(event);
41
+ },
42
+ imageDescribeDraft: async (event) => {
43
+ this.insert(event);
44
+ },
45
+ imageDescribeComplete: async (event) => {
46
+ this.dict_.delete("imageDescribeDraft");
47
+ this.insert(event);
48
+ },
49
+
50
+ // ANALYZE
51
+ analyzeStart: async (event) => {
52
+ this.dict_.delete("analyzeWriteModule");
53
+ this.dict_.delete("analyzeModuleReview");
54
+ this.dict_.delete("analyzeWriteUnit");
55
+ this.dict_.delete("analyzeUnitReview");
56
+ this.dict_.delete("analyzeWriteSection");
57
+ this.dict_.delete("analyzeSectionReview");
58
+ this.insert(event);
59
+ },
60
+ analyzeScenario: async (event) => {
61
+ this.accumulate(event);
62
+ },
63
+ analyzeWriteModule: async (event) => {
64
+ this.accumulate(event);
65
+ },
66
+ analyzeModuleReview: async (event) => {
67
+ this.accumulate(event);
68
+ },
69
+ analyzeWriteUnit: async (event) => {
70
+ this.accumulate(event);
71
+ },
72
+ analyzeUnitReview: async (event) => {
73
+ this.accumulate(event);
74
+ },
75
+ analyzeWriteSection: async (event) => {
76
+ this.accumulate(event);
77
+ },
78
+ analyzeSectionReview: async (event) => {
79
+ this.accumulate(event);
80
+ },
81
+ analyzeScenarioReview: async (event) => {
82
+ this.accumulate(event);
83
+ },
84
+ analyzeComplete: async (event) => {
85
+ this.dict_.delete("analyzeWriteModule");
86
+ this.dict_.delete("analyzeModuleReview");
87
+ this.dict_.delete("analyzeWriteUnit");
88
+ this.dict_.delete("analyzeUnitReview");
89
+ this.dict_.delete("analyzeWriteSection");
90
+ this.dict_.delete("analyzeSectionReview");
91
+ this.state_.setAnalyze(event);
92
+ this.insert(event);
93
+ },
94
+
95
+ // PRISMA
96
+ databaseStart: async (event) => {
97
+ this.dict_.delete("databaseAuthorizationReview");
98
+ this.dict_.delete("databaseComponent");
99
+ this.dict_.delete("databaseComponentReview");
100
+ this.dict_.delete("databaseSchema");
101
+ this.dict_.delete("databaseSchemaReview");
102
+ this.insert(event);
103
+ },
104
+ databaseGroup: async (event) => {
105
+ this.insert(event);
106
+ },
107
+ databaseGroupReview: async (event) => {
108
+ this.insert(event);
109
+ },
110
+ databaseAuthorization: async (event) => {
111
+ this.accumulate(event);
112
+ },
113
+ databaseAuthorizationReview: async (event) => {
114
+ this.accumulate(event);
115
+ },
116
+ databaseComponent: async (event) => {
117
+ this.accumulate(event);
118
+ },
119
+ databaseComponentReview: async (event) => {
120
+ this.accumulate(event);
121
+ },
122
+ databaseSchema: async (event) => {
123
+ this.accumulate(event);
124
+ },
125
+ databaseSchemaReview: async (event) => {
126
+ this.accumulate(event);
127
+ },
128
+ databaseValidate: async (event) => {
129
+ this.insert(event);
130
+ },
131
+ databaseCorrect: async (event) => {
132
+ this.insert(event);
133
+ },
134
+ databaseComplete: async (event) => {
135
+ this.dict_.delete("databaseAuthorizationReview");
136
+ this.dict_.delete("databaseComponent");
137
+ this.dict_.delete("databaseComponentReview");
138
+ this.dict_.delete("databaseSchema");
139
+ this.dict_.delete("databaseSchemaReview");
140
+ this.state_.setDatabase(event);
141
+ this.insert(event);
142
+ },
143
+
144
+ // INTERFACE
145
+ interfaceStart: async (event) => {
146
+ this.dict_.delete("interfaceAuthorization");
147
+ this.dict_.delete("interfaceEndpoint");
148
+ this.dict_.delete("interfaceOperation");
149
+ this.dict_.delete("interfaceOperationReview");
150
+ this.dict_.delete("interfaceSchema");
151
+ this.dict_.delete("interfaceSchemaCasting");
152
+ this.dict_.delete("interfaceSchemaRefine");
153
+ this.dict_.delete("interfaceSchemaReview");
154
+ this.dict_.delete("interfaceSchemaComplement");
155
+ this.dict_.delete("interfaceSchemaRename");
156
+ this.dict_.delete("interfacePrerequisite");
157
+ this.insert(event);
158
+ },
159
+ interfaceGroup: async (event) => {
160
+ this.insert(event);
161
+ },
162
+ interfaceEndpoint: async (event) => {
163
+ this.accumulate(event);
164
+ },
165
+ interfaceEndpointReview: async (event) => {
166
+ this.accumulate(event);
167
+ },
168
+ interfaceOperation: async (event) => {
169
+ this.accumulate(event);
170
+ },
171
+ interfaceOperationReview: async (event) => {
172
+ this.accumulate(event);
173
+ },
174
+ interfaceAuthorization: async (event) => {
175
+ this.accumulate(event);
176
+ },
177
+ interfaceSchema: async (event) => {
178
+ this.accumulate(event);
179
+ },
180
+ interfaceSchemaCasting: async (event) => {
181
+ this.accumulate(event);
182
+ },
183
+ interfaceSchemaRefine: async (event) => {
184
+ this.accumulate(event);
185
+ },
186
+ interfaceSchemaReview: async (event) => {
187
+ this.accumulate(event);
188
+ },
189
+ interfaceSchemaRename: async (event) => {
190
+ this.accumulate(event);
191
+ },
192
+ interfaceSchemaComplement: async (event) => {
193
+ this.accumulate(event);
194
+ },
195
+ interfacePrerequisite: async (event) => {
196
+ this.accumulate(event);
197
+ },
198
+ interfaceComplete: async (event) => {
199
+ this.dict_.delete("interfaceEndpoint");
200
+ this.dict_.delete("interfaceOperation");
201
+ this.dict_.delete("interfaceOperationReview");
202
+ this.dict_.delete("interfaceAuthorization");
203
+ this.dict_.delete("interfaceSchema");
204
+ this.dict_.delete("interfaceSchemaCasting");
205
+ this.dict_.delete("interfaceSchemaRefine");
206
+ this.dict_.delete("interfaceSchemaReview");
207
+ this.dict_.delete("interfaceSchemaRename");
208
+ this.dict_.delete("interfaceSchemaComplement");
209
+ this.dict_.delete("interfacePrerequisite");
210
+ this.state_.setInterface(event);
211
+ this.insert(event);
212
+ },
213
+
214
+ // TEST
215
+ testStart: async (event) => {
216
+ this.dict_.delete("testScenario");
217
+ this.dict_.delete("testWrite");
218
+ this.dict_.delete("testValidate");
219
+ this.dict_.delete("testCorrect");
220
+ this.insert(event);
221
+ },
222
+ testScenario: async (event) => {
223
+ this.accumulate(event);
224
+ },
225
+ testScenarioReview: async (event) => {
226
+ this.accumulate(event);
227
+ },
228
+ testWrite: async (event) => {
229
+ this.accumulate(event);
230
+ },
231
+ testValidate: async (event) => {
232
+ this.accumulate(event);
233
+ },
234
+ testCorrect: async (event) => {
235
+ this.accumulate(event);
236
+ },
237
+ testComplete: async (event) => {
238
+ this.dict_.delete("testScenario");
239
+ this.dict_.delete("testWrite");
240
+ this.dict_.delete("testValidate");
241
+ this.dict_.delete("testCorrect");
242
+ this.state_.setTest(event);
243
+ this.insert(event);
244
+ },
245
+
246
+ //----
247
+ // REALIZE
248
+ //----
249
+ // REALIZE-MAIN
250
+ realizeStart: async (event) => {
251
+ this.dict_.delete("realizePlan");
252
+ this.dict_.delete("realizeWrite");
253
+ this.dict_.delete("realizeValidate");
254
+ this.insert(event);
255
+ },
256
+ realizePlan: async (event) => {
257
+ this.accumulate(event);
258
+ },
259
+ realizeWrite: async (event) => {
260
+ this.accumulate(event);
261
+ },
262
+ realizeCorrect: async (event) => {
263
+ this.accumulate(event);
264
+ },
265
+
266
+ realizeValidate: async (event) => {
267
+ this.accumulate(event);
268
+ },
269
+ realizeComplete: async (event) => {
270
+ this.dict_.delete("realizePlan");
271
+ this.dict_.delete("realizeWrite");
272
+ this.dict_.delete("realizeValidate");
273
+ this.state_.setRealize(event);
274
+ this.insert(event);
275
+ },
276
+ // REALIZE-AUTHORIZATION
277
+ realizeAuthorizationStart: async (event) => {
278
+ this.dict_.delete("realizeAuthorizationWrite");
279
+ this.dict_.delete("realizeAuthorizationCorrect");
280
+ this.dict_.delete("realizeAuthorizationValidate");
281
+ this.insert(event);
282
+ },
283
+ realizeAuthorizationWrite: async (event) => {
284
+ this.accumulate(event);
285
+ },
286
+ realizeAuthorizationValidate: async (event) => {
287
+ this.accumulate(event);
288
+ },
289
+ realizeAuthorizationCorrect: async (event) => {
290
+ this.insert(event);
291
+ },
292
+ realizeAuthorizationComplete: async (event) => {
293
+ this.dict_.delete("realizeAuthorizationWrite");
294
+ this.dict_.delete("realizeAuthorizationCorrect");
295
+ this.dict_.delete("realizeAuthorizationValidate");
296
+ this.insert(event);
297
+ },
298
+ // REALILZE-TEST
299
+ realizeTestStart: async (event) => {
300
+ this.dict_.delete("realizeTestOperation");
301
+ this.insert(event);
302
+ },
303
+ realizeTestReset: async (event) => {
304
+ this.insert(event);
305
+ },
306
+ realizeTestOperation: async (event) => {
307
+ this.accumulate(event);
308
+ },
309
+ realizeTestComplete: async (event) => {
310
+ this.dict_.delete("realizeTestOperation");
311
+ this.insert(event);
312
+ },
313
+ };
314
+ }
315
+
316
+ public on(callback: (eventGroups: IAutoBeEventGroup[]) => Promise<void>) {
317
+ this.callback_.add(callback);
318
+ }
319
+
320
+ public off(callback: (eventGroups: IAutoBeEventGroup[]) => Promise<void>) {
321
+ this.callback_.delete(callback);
322
+ }
323
+
324
+ public getListener(): Required<IAutoBeRpcListener> {
325
+ return this.listener_;
326
+ }
327
+
328
+ public getState(): AutoBeListenerState {
329
+ return this.state_;
330
+ }
331
+
332
+ public getEnable(): boolean {
333
+ return this.enable_;
334
+ }
335
+
336
+ public onEnable(callback: (value: boolean) => Promise<void>) {
337
+ this.onEnableCallback_.add(callback);
338
+ }
339
+
340
+ public offEnable(callback: (value: boolean) => Promise<void>) {
341
+ this.onEnableCallback_.delete(callback);
342
+ }
343
+
344
+ private accumulate(event: AutoBeEvent) {
345
+ const it: List.Iterator<IAutoBeEventGroup> | undefined = this.dict_.get(
346
+ event.type,
347
+ );
348
+ if (it === undefined)
349
+ this.dict_.set(
350
+ event.type,
351
+ this.events_.insert(this.events_.end(), {
352
+ type: event.type,
353
+ events: [event],
354
+ }),
355
+ );
356
+ else it.value.events.push(event);
357
+ this.dispatch();
358
+ }
359
+
360
+ private insert(event: AutoBeEvent) {
361
+ this.events_.push_back({
362
+ type: event.type,
363
+ events: [event],
364
+ });
365
+ this.dispatch();
366
+ }
367
+
368
+ private dispatch() {
369
+ this.callback_.forEach((callback) =>
370
+ callback(this.events_.toJSON()).catch(() => {}),
371
+ );
372
+ }
373
+ }