interaqt 0.1.0 → 0.2.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 (329) hide show
  1. package/agent/.claude/agents/code-generation-handler.md +598 -0
  2. package/agent/.claude/agents/computation-generation-handler.md +290 -0
  3. package/agent/.claude/agents/implement-design-handler.md +179 -0
  4. package/agent/.claude/agents/permission-generation-handler.md +202 -0
  5. package/agent/.claude/agents/requirements-analysis-handler-bak.md +530 -0
  6. package/agent/.claude/agents/requirements-analysis-handler.md +720 -0
  7. package/agent/.claude/settings.local.json +46 -0
  8. package/agent/CLAUDE.md +72 -0
  9. package/dist/index.js +10508 -4
  10. package/dist/index.js.map +1 -1
  11. package/dist/runtime/ComputationSourceMap.d.ts +117 -0
  12. package/dist/runtime/ComputationSourceMap.d.ts.map +1 -0
  13. package/dist/runtime/Controller.d.ts +37 -26
  14. package/dist/runtime/Controller.d.ts.map +1 -1
  15. package/dist/runtime/ExternalSynchronizer.d.ts +6 -0
  16. package/dist/runtime/ExternalSynchronizer.d.ts.map +1 -0
  17. package/dist/runtime/MonoSystem.d.ts +29 -17
  18. package/dist/runtime/MonoSystem.d.ts.map +1 -1
  19. package/dist/runtime/Mysql.d.ts +2 -2
  20. package/dist/runtime/PGLite.d.ts +35 -0
  21. package/dist/runtime/PGLite.d.ts.map +1 -0
  22. package/dist/runtime/PostgreSQL.d.ts +2 -2
  23. package/dist/runtime/SQLite.d.ts +3 -3
  24. package/dist/runtime/SQLite.d.ts.map +1 -1
  25. package/dist/runtime/Scheduler.d.ts +28 -61
  26. package/dist/runtime/Scheduler.d.ts.map +1 -1
  27. package/dist/runtime/System.d.ts +18 -224
  28. package/dist/runtime/System.d.ts.map +1 -1
  29. package/dist/runtime/{ActivityCall.d.ts → activity/ActivityCall.d.ts} +6 -7
  30. package/dist/runtime/activity/ActivityCall.d.ts.map +1 -0
  31. package/dist/runtime/activity/ActivityManager.d.ts +44 -0
  32. package/dist/runtime/activity/ActivityManager.d.ts.map +1 -0
  33. package/dist/runtime/{InteractionCall.d.ts → activity/InteractionCall.d.ts} +28 -41
  34. package/dist/runtime/activity/InteractionCall.d.ts.map +1 -0
  35. package/dist/runtime/computations/Any.d.ts +71 -0
  36. package/dist/runtime/computations/Any.d.ts.map +1 -0
  37. package/dist/runtime/computations/Average.d.ts +69 -0
  38. package/dist/runtime/computations/Average.d.ts.map +1 -0
  39. package/dist/runtime/computations/Computation.d.ts +138 -0
  40. package/dist/runtime/computations/Computation.d.ts.map +1 -0
  41. package/dist/runtime/computations/Count.d.ts +73 -0
  42. package/dist/runtime/computations/Count.d.ts.map +1 -0
  43. package/dist/runtime/computations/Custom.d.ts +45 -0
  44. package/dist/runtime/computations/Custom.d.ts.map +1 -0
  45. package/dist/runtime/computations/Every.d.ts +74 -0
  46. package/dist/runtime/computations/Every.d.ts.map +1 -0
  47. package/dist/runtime/computations/MathResolver.d.ts +60 -0
  48. package/dist/runtime/computations/MathResolver.d.ts.map +1 -0
  49. package/dist/runtime/computations/RealTime.d.ts +66 -0
  50. package/dist/runtime/computations/RealTime.d.ts.map +1 -0
  51. package/dist/runtime/{computedDataHandles → computations}/StateMachine.d.ts +31 -22
  52. package/dist/runtime/computations/StateMachine.d.ts.map +1 -0
  53. package/dist/runtime/computations/Summation.d.ts +66 -0
  54. package/dist/runtime/computations/Summation.d.ts.map +1 -0
  55. package/dist/runtime/computations/Transform.d.ts +29 -0
  56. package/dist/runtime/computations/Transform.d.ts.map +1 -0
  57. package/dist/runtime/computations/TransitionFinder.d.ts +11 -0
  58. package/dist/runtime/computations/TransitionFinder.d.ts.map +1 -0
  59. package/dist/runtime/computations/WeightedSummation.d.ts +71 -0
  60. package/dist/runtime/computations/WeightedSummation.d.ts.map +1 -0
  61. package/dist/runtime/computations/index.d.ts +22 -0
  62. package/dist/runtime/computations/index.d.ts.map +1 -0
  63. package/dist/runtime/errors/ActivityErrors.d.ts +40 -0
  64. package/dist/runtime/errors/ActivityErrors.d.ts.map +1 -0
  65. package/dist/runtime/errors/ComputationErrors.d.ts +61 -0
  66. package/dist/runtime/errors/ComputationErrors.d.ts.map +1 -0
  67. package/dist/runtime/errors/ConditionErrors.d.ts +33 -0
  68. package/dist/runtime/errors/ConditionErrors.d.ts.map +1 -0
  69. package/dist/runtime/errors/FrameworkError.d.ts +77 -0
  70. package/dist/runtime/errors/FrameworkError.d.ts.map +1 -0
  71. package/dist/runtime/errors/InteractionErrors.d.ts +21 -0
  72. package/dist/runtime/errors/InteractionErrors.d.ts.map +1 -0
  73. package/dist/runtime/errors/SystemErrors.d.ts +16 -0
  74. package/dist/runtime/errors/SystemErrors.d.ts.map +1 -0
  75. package/dist/runtime/errors/index.d.ts +37 -0
  76. package/dist/runtime/errors/index.d.ts.map +1 -0
  77. package/dist/runtime/index.d.ts +9 -7
  78. package/dist/runtime/index.d.ts.map +1 -1
  79. package/dist/shared/Action.d.ts +38 -0
  80. package/dist/shared/Action.d.ts.map +1 -0
  81. package/dist/shared/Activity.d.ts +178 -0
  82. package/dist/shared/Activity.d.ts.map +1 -0
  83. package/dist/shared/Any.d.ts +82 -0
  84. package/dist/shared/Any.d.ts.map +1 -0
  85. package/dist/shared/Attributive.d.ts +92 -0
  86. package/dist/shared/Attributive.d.ts.map +1 -0
  87. package/dist/shared/Average.d.ts +59 -0
  88. package/dist/shared/Average.d.ts.map +1 -0
  89. package/dist/shared/BoolExp.d.ts +139 -63
  90. package/dist/shared/BoolExp.d.ts.map +1 -1
  91. package/dist/shared/Computation.d.ts +23 -0
  92. package/dist/shared/Computation.d.ts.map +1 -0
  93. package/dist/shared/Condition.d.ts +43 -0
  94. package/dist/shared/Condition.d.ts.map +1 -0
  95. package/dist/shared/Conditions.d.ts +38 -0
  96. package/dist/shared/Conditions.d.ts.map +1 -0
  97. package/dist/shared/Count.d.ts +77 -0
  98. package/dist/shared/Count.d.ts.map +1 -0
  99. package/dist/shared/Custom.d.ts +108 -0
  100. package/dist/shared/Custom.d.ts.map +1 -0
  101. package/dist/shared/Data.d.ts +121 -0
  102. package/dist/shared/Data.d.ts.map +1 -0
  103. package/dist/shared/DataAttributives.d.ts +38 -0
  104. package/dist/shared/DataAttributives.d.ts.map +1 -0
  105. package/dist/shared/Entity.d.ts +96 -0
  106. package/dist/shared/Entity.d.ts.map +1 -0
  107. package/dist/shared/Event.d.ts +36 -0
  108. package/dist/shared/Event.d.ts.map +1 -0
  109. package/dist/shared/Every.d.ts +85 -0
  110. package/dist/shared/Every.d.ts.map +1 -0
  111. package/dist/shared/Gateway.d.ts +36 -0
  112. package/dist/shared/Gateway.d.ts.map +1 -0
  113. package/dist/shared/Interaction.d.ts +108 -0
  114. package/dist/shared/Interaction.d.ts.map +1 -0
  115. package/dist/shared/Payload.d.ts +39 -0
  116. package/dist/shared/Payload.d.ts.map +1 -0
  117. package/dist/shared/PayloadItem.d.ts +85 -0
  118. package/dist/shared/PayloadItem.d.ts.map +1 -0
  119. package/dist/shared/Property.d.ts +83 -0
  120. package/dist/shared/Property.d.ts.map +1 -0
  121. package/dist/shared/RealDictionary.d.ts +94 -0
  122. package/dist/shared/RealDictionary.d.ts.map +1 -0
  123. package/dist/shared/RealTime.d.ts +66 -0
  124. package/dist/shared/RealTime.d.ts.map +1 -0
  125. package/dist/shared/RefContainer.d.ts +89 -0
  126. package/dist/shared/RefContainer.d.ts.map +1 -0
  127. package/dist/shared/Relation.d.ts +140 -0
  128. package/dist/shared/Relation.d.ts.map +1 -0
  129. package/dist/shared/SideEffect.d.ts +45 -0
  130. package/dist/shared/SideEffect.d.ts.map +1 -0
  131. package/dist/shared/StateMachine.d.ts +55 -0
  132. package/dist/shared/StateMachine.d.ts.map +1 -0
  133. package/dist/shared/StateNode.d.ts +45 -0
  134. package/dist/shared/StateNode.d.ts.map +1 -0
  135. package/dist/shared/StateTransfer.d.ts +63 -0
  136. package/dist/shared/StateTransfer.d.ts.map +1 -0
  137. package/dist/shared/Summation.d.ts +59 -0
  138. package/dist/shared/Summation.d.ts.map +1 -0
  139. package/dist/shared/Transform.d.ts +54 -0
  140. package/dist/shared/Transform.d.ts.map +1 -0
  141. package/dist/shared/User.d.ts +10 -0
  142. package/dist/shared/User.d.ts.map +1 -0
  143. package/dist/shared/WeightedSummation.d.ts +82 -0
  144. package/dist/shared/WeightedSummation.d.ts.map +1 -0
  145. package/dist/shared/index.d.ts +35 -9
  146. package/dist/shared/index.d.ts.map +1 -1
  147. package/dist/shared/init.d.ts +3 -0
  148. package/dist/shared/init.d.ts.map +1 -0
  149. package/dist/shared/interfaces.d.ts +72 -0
  150. package/dist/shared/interfaces.d.ts.map +1 -0
  151. package/dist/shared/types.d.ts +77 -0
  152. package/dist/shared/types.d.ts.map +1 -0
  153. package/dist/shared/utils.d.ts +16 -10
  154. package/dist/shared/utils.d.ts.map +1 -1
  155. package/dist/storage/erstorage/AttributeInfo.d.ts +8 -3
  156. package/dist/storage/erstorage/AttributeInfo.d.ts.map +1 -1
  157. package/dist/storage/erstorage/AttributeQuery.d.ts +4 -3
  158. package/dist/storage/erstorage/AttributeQuery.d.ts.map +1 -1
  159. package/dist/storage/erstorage/EntityQueryHandle.d.ts +18 -17
  160. package/dist/storage/erstorage/EntityQueryHandle.d.ts.map +1 -1
  161. package/dist/storage/erstorage/EntityToTableMap.d.ts +27 -5
  162. package/dist/storage/erstorage/EntityToTableMap.d.ts.map +1 -1
  163. package/dist/storage/erstorage/FilteredEntityManager.d.ts +70 -0
  164. package/dist/storage/erstorage/FilteredEntityManager.d.ts.map +1 -0
  165. package/dist/storage/erstorage/LinkInfo.d.ts +10 -3
  166. package/dist/storage/erstorage/LinkInfo.d.ts.map +1 -1
  167. package/dist/storage/erstorage/MatchExp.d.ts +19 -9
  168. package/dist/storage/erstorage/MatchExp.d.ts.map +1 -1
  169. package/dist/storage/erstorage/MergedItemProcessor.d.ts +25 -0
  170. package/dist/storage/erstorage/MergedItemProcessor.d.ts.map +1 -0
  171. package/dist/storage/erstorage/Modifier.d.ts +1 -1
  172. package/dist/storage/erstorage/NewRecordData.d.ts +16 -9
  173. package/dist/storage/erstorage/NewRecordData.d.ts.map +1 -1
  174. package/dist/storage/erstorage/RecordInfo.d.ts +11 -2
  175. package/dist/storage/erstorage/RecordInfo.d.ts.map +1 -1
  176. package/dist/storage/erstorage/RecordQuery.d.ts +9 -8
  177. package/dist/storage/erstorage/RecordQuery.d.ts.map +1 -1
  178. package/dist/storage/erstorage/RecordQueryAgent.d.ts +26 -13
  179. package/dist/storage/erstorage/RecordQueryAgent.d.ts.map +1 -1
  180. package/dist/storage/erstorage/Setup.d.ts +49 -11
  181. package/dist/storage/erstorage/Setup.d.ts.map +1 -1
  182. package/dist/storage/erstorage/util.d.ts.map +1 -1
  183. package/package.json +44 -20
  184. package/README.md +0 -53
  185. package/dist/runtime/ActivityCall.d.ts.map +0 -1
  186. package/dist/runtime/ActivityCall.js +0 -379
  187. package/dist/runtime/ActivityCall.js.map +0 -1
  188. package/dist/runtime/Controller.js +0 -225
  189. package/dist/runtime/Controller.js.map +0 -1
  190. package/dist/runtime/InteractionCall.d.ts.map +0 -1
  191. package/dist/runtime/InteractionCall.js +0 -385
  192. package/dist/runtime/InteractionCall.js.map +0 -1
  193. package/dist/runtime/MonoSystem.js +0 -331
  194. package/dist/runtime/MonoSystem.js.map +0 -1
  195. package/dist/runtime/Mysql.js +0 -171
  196. package/dist/runtime/Mysql.js.map +0 -1
  197. package/dist/runtime/PostgreSQL.js +0 -172
  198. package/dist/runtime/PostgreSQL.js.map +0 -1
  199. package/dist/runtime/SQLite.js +0 -146
  200. package/dist/runtime/SQLite.js.map +0 -1
  201. package/dist/runtime/Scheduler.js +0 -457
  202. package/dist/runtime/Scheduler.js.map +0 -1
  203. package/dist/runtime/System.js +0 -90
  204. package/dist/runtime/System.js.map +0 -1
  205. package/dist/runtime/asyncInteractionContext.js +0 -3
  206. package/dist/runtime/asyncInteractionContext.js.map +0 -1
  207. package/dist/runtime/boolExpression.js +0 -43
  208. package/dist/runtime/boolExpression.js.map +0 -1
  209. package/dist/runtime/computedDataHandles/Any.d.ts +0 -52
  210. package/dist/runtime/computedDataHandles/Any.d.ts.map +0 -1
  211. package/dist/runtime/computedDataHandles/Any.js +0 -152
  212. package/dist/runtime/computedDataHandles/Any.js.map +0 -1
  213. package/dist/runtime/computedDataHandles/Computation.d.ts +0 -108
  214. package/dist/runtime/computedDataHandles/Computation.d.ts.map +0 -1
  215. package/dist/runtime/computedDataHandles/Computation.js +0 -49
  216. package/dist/runtime/computedDataHandles/Computation.js.map +0 -1
  217. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts +0 -42
  218. package/dist/runtime/computedDataHandles/ComputedDataHandle.d.ts.map +0 -1
  219. package/dist/runtime/computedDataHandles/ComputedDataHandle.js +0 -4
  220. package/dist/runtime/computedDataHandles/ComputedDataHandle.js.map +0 -1
  221. package/dist/runtime/computedDataHandles/Count.d.ts +0 -45
  222. package/dist/runtime/computedDataHandles/Count.d.ts.map +0 -1
  223. package/dist/runtime/computedDataHandles/Count.js +0 -85
  224. package/dist/runtime/computedDataHandles/Count.js.map +0 -1
  225. package/dist/runtime/computedDataHandles/Every.d.ts +0 -56
  226. package/dist/runtime/computedDataHandles/Every.d.ts.map +0 -1
  227. package/dist/runtime/computedDataHandles/Every.js +0 -178
  228. package/dist/runtime/computedDataHandles/Every.js.map +0 -1
  229. package/dist/runtime/computedDataHandles/StateMachine.d.ts.map +0 -1
  230. package/dist/runtime/computedDataHandles/StateMachine.js +0 -180
  231. package/dist/runtime/computedDataHandles/StateMachine.js.map +0 -1
  232. package/dist/runtime/computedDataHandles/Transform.d.ts +0 -26
  233. package/dist/runtime/computedDataHandles/Transform.d.ts.map +0 -1
  234. package/dist/runtime/computedDataHandles/Transform.js +0 -106
  235. package/dist/runtime/computedDataHandles/Transform.js.map +0 -1
  236. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts +0 -57
  237. package/dist/runtime/computedDataHandles/TransitionFinder.d.ts.map +0 -1
  238. package/dist/runtime/computedDataHandles/TransitionFinder.js +0 -40
  239. package/dist/runtime/computedDataHandles/TransitionFinder.js.map +0 -1
  240. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts +0 -57
  241. package/dist/runtime/computedDataHandles/WeightedSummation.d.ts.map +0 -1
  242. package/dist/runtime/computedDataHandles/WeightedSummation.js +0 -146
  243. package/dist/runtime/computedDataHandles/WeightedSummation.js.map +0 -1
  244. package/dist/runtime/computedDataHandles/index.d.ts +0 -7
  245. package/dist/runtime/computedDataHandles/index.d.ts.map +0 -1
  246. package/dist/runtime/computedDataHandles/index.js +0 -7
  247. package/dist/runtime/computedDataHandles/index.js.map +0 -1
  248. package/dist/runtime/index.js +0 -15
  249. package/dist/runtime/index.js.map +0 -1
  250. package/dist/runtime/server.d.ts +0 -35
  251. package/dist/runtime/server.d.ts.map +0 -1
  252. package/dist/runtime/server.js +0 -171
  253. package/dist/runtime/server.js.map +0 -1
  254. package/dist/runtime/types/boolExpression.js +0 -6
  255. package/dist/runtime/types/boolExpression.js.map +0 -1
  256. package/dist/runtime/util.js +0 -39
  257. package/dist/runtime/util.js.map +0 -1
  258. package/dist/shared/BoolExp.js +0 -252
  259. package/dist/shared/BoolExp.js.map +0 -1
  260. package/dist/shared/activity/Activity.d.ts +0 -465
  261. package/dist/shared/activity/Activity.d.ts.map +0 -1
  262. package/dist/shared/activity/Activity.js +0 -264
  263. package/dist/shared/activity/Activity.js.map +0 -1
  264. package/dist/shared/activity/Condition.d.ts +0 -75
  265. package/dist/shared/activity/Condition.d.ts.map +0 -1
  266. package/dist/shared/activity/Condition.js +0 -51
  267. package/dist/shared/activity/Condition.js.map +0 -1
  268. package/dist/shared/activity/Data.d.ts +0 -115
  269. package/dist/shared/activity/Data.d.ts.map +0 -1
  270. package/dist/shared/activity/Data.js +0 -89
  271. package/dist/shared/activity/Data.js.map +0 -1
  272. package/dist/shared/attributive.d.ts +0 -93
  273. package/dist/shared/attributive.d.ts.map +0 -1
  274. package/dist/shared/attributive.js +0 -59
  275. package/dist/shared/attributive.js.map +0 -1
  276. package/dist/shared/computed.d.ts +0 -607
  277. package/dist/shared/computed.d.ts.map +0 -1
  278. package/dist/shared/computed.js +0 -202
  279. package/dist/shared/computed.js.map +0 -1
  280. package/dist/shared/createClass.d.ts +0 -102
  281. package/dist/shared/createClass.d.ts.map +0 -1
  282. package/dist/shared/createClass.js +0 -276
  283. package/dist/shared/createClass.js.map +0 -1
  284. package/dist/shared/dictionary/Dictionary.d.ts +0 -40
  285. package/dist/shared/dictionary/Dictionary.d.ts.map +0 -1
  286. package/dist/shared/dictionary/Dictionary.js +0 -51
  287. package/dist/shared/dictionary/Dictionary.js.map +0 -1
  288. package/dist/shared/entity/Entity.d.ts +0 -149
  289. package/dist/shared/entity/Entity.d.ts.map +0 -1
  290. package/dist/shared/entity/Entity.js +0 -226
  291. package/dist/shared/entity/Entity.js.map +0 -1
  292. package/dist/shared/index.js +0 -11
  293. package/dist/shared/index.js.map +0 -1
  294. package/dist/shared/user/User.d.ts +0 -21
  295. package/dist/shared/user/User.d.ts.map +0 -1
  296. package/dist/shared/user/User.js +0 -11
  297. package/dist/shared/user/User.js.map +0 -1
  298. package/dist/shared/utils.js +0 -19
  299. package/dist/shared/utils.js.map +0 -1
  300. package/dist/storage/erstorage/AttributeInfo.js +0 -147
  301. package/dist/storage/erstorage/AttributeInfo.js.map +0 -1
  302. package/dist/storage/erstorage/AttributeQuery.js +0 -190
  303. package/dist/storage/erstorage/AttributeQuery.js.map +0 -1
  304. package/dist/storage/erstorage/EntityQueryHandle.js +0 -78
  305. package/dist/storage/erstorage/EntityQueryHandle.js.map +0 -1
  306. package/dist/storage/erstorage/EntityToTableMap.js +0 -262
  307. package/dist/storage/erstorage/EntityToTableMap.js.map +0 -1
  308. package/dist/storage/erstorage/LinkInfo.js +0 -89
  309. package/dist/storage/erstorage/LinkInfo.js.map +0 -1
  310. package/dist/storage/erstorage/MatchExp.js +0 -211
  311. package/dist/storage/erstorage/MatchExp.js.map +0 -1
  312. package/dist/storage/erstorage/Modifier.js +0 -24
  313. package/dist/storage/erstorage/Modifier.js.map +0 -1
  314. package/dist/storage/erstorage/NewRecordData.js +0 -178
  315. package/dist/storage/erstorage/NewRecordData.js.map +0 -1
  316. package/dist/storage/erstorage/RecordInfo.js +0 -111
  317. package/dist/storage/erstorage/RecordInfo.js.map +0 -1
  318. package/dist/storage/erstorage/RecordQuery.js +0 -158
  319. package/dist/storage/erstorage/RecordQuery.js.map +0 -1
  320. package/dist/storage/erstorage/RecordQueryAgent.js +0 -1130
  321. package/dist/storage/erstorage/RecordQueryAgent.js.map +0 -1
  322. package/dist/storage/erstorage/Setup.js +0 -400
  323. package/dist/storage/erstorage/Setup.js.map +0 -1
  324. package/dist/storage/erstorage/util.js +0 -25
  325. package/dist/storage/erstorage/util.js.map +0 -1
  326. package/dist/storage/index.js +0 -13
  327. package/dist/storage/index.js.map +0 -1
  328. package/dist/storage/utils.js +0 -48
  329. package/dist/storage/utils.js.map +0 -1
@@ -1,457 +0,0 @@
1
- import { ComputedDataHandle } from "./computedDataHandles/ComputedDataHandle.js";
2
- import { assert } from "./util.js";
3
- import { GlobalBoundState, RecordBoundState } from "./computedDataHandles/Computation.js";
4
- import { InteractionEventEntity } from "./System.js";
5
- import { MatchExp } from "@storage";
6
- export const SKIP_RESULT = Symbol('skip_result');
7
- export class Scheduler {
8
- constructor(controller, entities, relations, dict) {
9
- this.controller = controller;
10
- this.computations = new Set();
11
- this.erMutationEventSources = [];
12
- this.dataSourceMapTree = {};
13
- const computationInputs = [];
14
- entities.forEach(entity => {
15
- if (entity.computedData) {
16
- computationInputs.push({ dataContext: { type: 'entity', id: entity }, args: entity.computedData });
17
- }
18
- // property 的
19
- entity.properties?.forEach(property => {
20
- if (property.computedData) {
21
- computationInputs.push({ dataContext: { type: 'property', host: entity, id: property.name }, args: property.computedData });
22
- }
23
- });
24
- });
25
- // relation 的
26
- relations.forEach(relation => {
27
- const relationAny = relation;
28
- if (relationAny.computedData) {
29
- computationInputs.push({ dataContext: { type: 'relation', id: relation }, args: relationAny.computedData });
30
- }
31
- if (relationAny.properties) {
32
- relationAny.properties.forEach((property) => {
33
- if (property.computedData) {
34
- computationInputs.push({ dataContext: { type: 'property', host: relation, id: property.name }, args: property.computedData });
35
- }
36
- });
37
- }
38
- });
39
- dict.forEach(dictItem => {
40
- if (dictItem.computedData) {
41
- computationInputs.push({ dataContext: { type: 'global', id: dictItem.name }, args: dictItem.computedData });
42
- }
43
- });
44
- for (const computation of computationInputs) {
45
- const dataContext = computation.dataContext;
46
- const args = computation.args;
47
- const handles = ComputedDataHandle.Handles;
48
- const ComputationCtor = handles.get(args.constructor)[dataContext.type];
49
- assert(!!ComputationCtor, `cannot find Computation handle for ${args.constructor.displayName || args.constructor.name}`);
50
- this.computations.add(new ComputationCtor(this.controller, args, dataContext));
51
- }
52
- }
53
- createStates() {
54
- const states = [];
55
- for (const computation of this.computations) {
56
- const computationHandle = computation;
57
- if (computationHandle.createState) {
58
- const state = computationHandle.createState();
59
- states.push({ dataContext: computationHandle.dataContext, state });
60
- computationHandle.state = state;
61
- for (let stateItem of Object.values(state)) {
62
- stateItem.controller = this.controller;
63
- stateItem.controller = this.controller;
64
- if (stateItem instanceof RecordBoundState) {
65
- if (computationHandle.dataContext.type === 'property') {
66
- stateItem.record = computationHandle.dataContext.host.name;
67
- }
68
- else {
69
- stateItem.record = computationHandle.dataContext.id.name;
70
- }
71
- }
72
- }
73
- }
74
- }
75
- return states;
76
- }
77
- async setupDefaultValues() {
78
- for (const computation of this.computations) {
79
- const computationHandle = computation;
80
- // 0. 创建 defaultValue
81
- // property 的默认值在 setup 的时候已经创建了。
82
- if (computationHandle.getDefaultValue) {
83
- if (computationHandle.dataContext.type !== 'property') {
84
- const defaultValue = await computationHandle.getDefaultValue();
85
- await this.controller.applyResult(computationHandle.dataContext, defaultValue);
86
- }
87
- else {
88
- // property computation 也能提供 defaultValue 的能力?
89
- const property = computationHandle.dataContext.host.properties?.find(property => property.name === computationHandle.dataContext.id);
90
- if (!property.defaultValue) {
91
- // FIXME 这里没有支持 getDefaultValue 的 async 模式。会不会有问题???
92
- property.defaultValue = computationHandle.getDefaultValue();
93
- }
94
- }
95
- }
96
- }
97
- }
98
- async setupStateDefaultValues() {
99
- for (const computation of this.computations) {
100
- const computationHandle = computation;
101
- // TODO 这里 createState 要放到 setup 前面,因为可能会修改 entity、relation ???
102
- // 1. 创建计算所需要的 state
103
- if (computationHandle.state) {
104
- for (const [stateName, state] of Object.entries(computationHandle.state)) {
105
- if (state instanceof GlobalBoundState) {
106
- state.controller = this.controller;
107
- state.key = `${computationHandle.dataContext.id}_${stateName}`;
108
- if (typeof state.defaultValue !== undefined) {
109
- await this.controller.system.storage.set('state', state.key, state.defaultValue);
110
- }
111
- }
112
- }
113
- }
114
- }
115
- }
116
- async setupMutationListeners() {
117
- const ERMutationEventSources = [];
118
- for (const computation of this.computations) {
119
- // 1. 根据 data deps 计算出 mutation events
120
- if (this.isDataBasedComputation(computation)) {
121
- const dataBasedComputation = computation;
122
- if (dataBasedComputation.dataDeps) {
123
- ERMutationEventSources.push(...Object.entries(dataBasedComputation.dataDeps).map(([dataDepName, dataDep]) => this.convertDataDepToERMutationEventsSourceMap(dataDepName, dataDep, computation)).flat());
124
- }
125
- }
126
- else {
127
- // 2. EventBasedComputation 等同于监听
128
- // - EventEntity 的 create 事件
129
- // - erMutationEvent 的 create 事件
130
- // - Action 的 create 事件
131
- // - Activity 的 create 事件
132
- // FIXME 增加 ERMutationEvents 的 create 事件
133
- ERMutationEventSources.push({
134
- dataDep: {
135
- type: 'records',
136
- source: InteractionEventEntity,
137
- attributeQuery: ['*']
138
- },
139
- type: 'create',
140
- recordName: InteractionEventEntity.name,
141
- sourceRecordName: InteractionEventEntity.name,
142
- computation
143
- });
144
- }
145
- }
146
- // 根据 sourcemap 来执行真正的监听
147
- this.erMutationEventSources = ERMutationEventSources;
148
- this.dataSourceMapTree = this.buildDataSourceMapTree(this.erMutationEventSources);
149
- this.controller.system.storage.listen(async (mutationEvents) => {
150
- for (let mutationEvent of mutationEvents) {
151
- const sources = this.dataSourceMapTree[mutationEvent.recordName]?.[mutationEvent.type];
152
- if (sources) {
153
- for (const source of sources) {
154
- if (source.type === 'update') {
155
- const propAttrs = source.attributes.filter(attr => attr !== 'id');
156
- if (propAttrs.every(attr => !mutationEvent.record.hasOwnProperty(attr) || (mutationEvent.record[attr] === mutationEvent.oldRecord[attr]))) {
157
- continue;
158
- }
159
- }
160
- await this.runDirtyRecordsComputation(source, mutationEvent);
161
- }
162
- }
163
- }
164
- });
165
- }
166
- async computeDirtyRecords(source, mutationEvent) {
167
- if (!source.targetPath?.length) {
168
- return [mutationEvent.oldRecord ?? mutationEvent.record];
169
- }
170
- let dataDepRecords = [];
171
- if (!source.isRelation) {
172
- assert(source.type === 'update', 'only support update event for entity');
173
- dataDepRecords = await this.controller.system.storage.find(source.sourceRecordName, MatchExp.atom({
174
- key: source.targetPath.concat('id').join('.'),
175
- value: ['=', mutationEvent.oldRecord?.id ?? mutationEvent.record?.id]
176
- }));
177
- }
178
- else {
179
- // 2.3. 关联关系的 create/delete 事件,计算出关联关系的增删改最终影响了哪些当前 dataDep
180
- assert(source.type === 'create' || source.type === 'delete', 'only support create/delete event for relation');
181
- const relation = this.controller.relations.find(relation => relation.name === source.recordName);
182
- // FIXME 没考虑 bidirectional 的情况,双向关系死循环了
183
- const isSource = relation?.sourceProperty === source.targetPath.at(-1);
184
- const dataDep = source.dataDep;
185
- if (source.type === 'create') {
186
- dataDepRecords = await this.controller.system.storage.find(source.sourceRecordName, MatchExp.atom({
187
- key: source.targetPath.concat('id').join('.'),
188
- value: ['=', mutationEvent.record[isSource ? 'target' : 'source'].id]
189
- }), undefined, dataDep.attributeQuery);
190
- }
191
- else {
192
- dataDepRecords = await this.controller.system.storage.find(source.sourceRecordName, MatchExp.atom({
193
- key: source.targetPath.slice(0, -1).concat('id').join('.'),
194
- value: ['=', mutationEvent.record[isSource ? 'source' : 'target'].id]
195
- }), undefined, dataDep.attributeQuery);
196
- }
197
- }
198
- return dataDepRecords;
199
- }
200
- computeOldRecord(newRecord, sourceMap, mutationEvent) {
201
- if (!sourceMap.targetPath?.length) {
202
- return mutationEvent.oldRecord;
203
- }
204
- const result = { ...newRecord };
205
- const path = [...sourceMap.targetPath];
206
- const lastAttr = path.pop();
207
- let pointer = result;
208
- // 一路浅拷贝
209
- for (const attr of path) {
210
- // fIXME Computation 不能跨越 x:n 的集合,所以路径上应该都是对象。
211
- pointer[attr] = { ...pointer[attr] };
212
- pointer = pointer[attr];
213
- }
214
- if (Array.isArray(pointer[lastAttr])) {
215
- // 集合
216
- if (mutationEvent.type === 'delete') {
217
- pointer[lastAttr] = pointer[lastAttr].concat(mutationEvent.record);
218
- }
219
- else if (mutationEvent.type === 'create') {
220
- pointer[lastAttr] = pointer[lastAttr].filter(item => item.id !== mutationEvent.record.id);
221
- }
222
- else if (mutationEvent.type === 'update') {
223
- pointer[lastAttr] = pointer[lastAttr].map(item => item.id === mutationEvent.oldRecord.id ? { ...item, ...mutationEvent.oldRecord } : item);
224
- }
225
- }
226
- else {
227
- if (mutationEvent.type === 'delete') {
228
- pointer[lastAttr] = mutationEvent.record;
229
- }
230
- else if (mutationEvent.type === 'create') {
231
- pointer[lastAttr] = undefined;
232
- }
233
- else if (mutationEvent.type === 'update') {
234
- pointer[lastAttr] = { ...pointer[lastAttr], ...mutationEvent.oldRecord };
235
- }
236
- }
237
- return result;
238
- }
239
- async computeDataBasedDirtyRecordsAndEvents(source, mutationEvent) {
240
- let dirtyRecordsAndEvents = [];
241
- if (!source.targetPath?.length) {
242
- dirtyRecordsAndEvents = [[mutationEvent.record, {
243
- dataDep: source.dataDep,
244
- ...mutationEvent
245
- }]];
246
- }
247
- else {
248
- const dataDepRecords = await this.computeDirtyRecords(source, mutationEvent);
249
- dirtyRecordsAndEvents = dataDepRecords.map(record => [record, {
250
- dataDep: source.dataDep,
251
- type: 'update',
252
- recordName: record.name,
253
- record: record,
254
- oldRecord: this.computeOldRecord(record, source, mutationEvent),
255
- relatedAttribute: source.targetPath,
256
- relatedMutationEvent: mutationEvent
257
- }]);
258
- }
259
- return dirtyRecordsAndEvents;
260
- }
261
- async computeEventBasedDirtyRecordsAndEvents(source, mutationEvent) {
262
- const eventBasedComputation = source.computation;
263
- if (eventBasedComputation.computeDirtyRecords) {
264
- let dirtyRecords = (await eventBasedComputation.computeDirtyRecords(mutationEvent)) || [];
265
- dirtyRecords = Array.isArray(dirtyRecords) ? dirtyRecords : [dirtyRecords];
266
- return dirtyRecords.map(record => [record, {
267
- dataDep: source.dataDep,
268
- ...mutationEvent
269
- }]);
270
- }
271
- else {
272
- return [[null, {
273
- dataDep: source.dataDep,
274
- ...mutationEvent
275
- }]];
276
- }
277
- }
278
- isDataBasedComputation(computation) {
279
- return computation.compute !== undefined;
280
- }
281
- async runDirtyRecordsComputation(source, mutationEvent) {
282
- let dirtyRecordsAndEvents = [];
283
- if (this.isDataBasedComputation(source.computation)) {
284
- dirtyRecordsAndEvents = await this.computeDataBasedDirtyRecordsAndEvents(source, mutationEvent);
285
- }
286
- else {
287
- dirtyRecordsAndEvents = await this.computeEventBasedDirtyRecordsAndEvents(source, mutationEvent);
288
- }
289
- for (const [record, erRecordMutationEvent] of dirtyRecordsAndEvents) {
290
- await this.runComputation(source.computation, erRecordMutationEvent, record);
291
- }
292
- }
293
- async runComputation(computation, erRecordMutationEvent, record) {
294
- if (computation.incrementalCompute) {
295
- let lastValue = undefined;
296
- if (computation.useLastValue) {
297
- lastValue = await this.controller.retrieveLastValue(computation.dataContext, record);
298
- }
299
- const result = await computation.incrementalCompute(lastValue, erRecordMutationEvent, record);
300
- // TODO 应用 result
301
- await this.controller.applyResult(computation.dataContext, result, record);
302
- }
303
- else if (computation.incrementalPatchCompute) {
304
- let lastValue = undefined;
305
- if (computation.useLastValue) {
306
- lastValue = await this.controller.retrieveLastValue(computation.dataContext, record);
307
- }
308
- const patch = await computation.incrementalPatchCompute(lastValue, erRecordMutationEvent, record);
309
- if (patch) {
310
- await this.controller.applyResultPatch(computation.dataContext, patch, record);
311
- }
312
- }
313
- else {
314
- const databasedComputation = computation;
315
- // FIXME 需要注入 dataDeps
316
- const result = await databasedComputation.compute();
317
- // TODO 应用 result
318
- await this.controller.applyResult(databasedComputation.dataContext, result, record);
319
- }
320
- }
321
- buildDataSourceMapTree(sourceMaps) {
322
- // 两层结构,第一层是 recordName,第二层是 type
323
- const sourceMapTree = {};
324
- sourceMaps.forEach(source => {
325
- if (!sourceMapTree[source.recordName]) {
326
- sourceMapTree[source.recordName] = {};
327
- }
328
- if (!sourceMapTree[source.recordName][source.type]) {
329
- sourceMapTree[source.recordName][source.type] = [];
330
- }
331
- sourceMapTree[source.recordName][source.type].push(source);
332
- });
333
- return sourceMapTree;
334
- }
335
- convertDataDepToERMutationEventsSourceMap(dataDepName, dataDep, computation, eventType) {
336
- const ERMutationEventsSource = [];
337
- if (dataDep.type === 'records') {
338
- if (!eventType || eventType === 'create') {
339
- ERMutationEventsSource.push({
340
- dataDep: dataDep,
341
- type: 'create',
342
- recordName: dataDep.source.name,
343
- sourceRecordName: dataDep.source.name,
344
- computation
345
- });
346
- }
347
- if (!eventType || eventType === 'delete') {
348
- ERMutationEventsSource.push({
349
- dataDep: dataDep,
350
- type: 'delete',
351
- recordName: dataDep.source.name,
352
- sourceRecordName: dataDep.source.name,
353
- computation
354
- });
355
- }
356
- if (!eventType || eventType === 'update') {
357
- // 监听 update
358
- if (dataDep.attributeQuery) {
359
- ERMutationEventsSource.push(...this.convertAttrsToERMutationEventsSourceMap(dataDep, dataDep.source.name, dataDep.attributeQuery, [], computation));
360
- }
361
- }
362
- }
363
- else if (dataDep.type === 'property') {
364
- // 只能监听 update eventType。
365
- const dataContext = computation.dataContext;
366
- if (dataDep.attributeQuery) {
367
- // 注意这里的 recordName 应该是当前数据 entity 的 name,因为依赖的是 property 所在的自身 entity
368
- ERMutationEventsSource.push(...this.convertAttrsToERMutationEventsSourceMap(dataDep, dataContext.host.name, dataDep.attributeQuery, [], computation));
369
- }
370
- }
371
- else if (dataDep.type === 'global') {
372
- // TODO global 怎么监听啊
373
- // 只能监听 update eventType
374
- }
375
- return ERMutationEventsSource;
376
- }
377
- convertAttrsToERMutationEventsSourceMap(dataDep, baseRecordName, attributes, context, computation) {
378
- const ERMutationEventsSource = [];
379
- const primitiveAttr = [];
380
- const relationQueryAttr = [];
381
- attributes.forEach(attr => {
382
- if (typeof attr === 'string' && attr !== '*') {
383
- primitiveAttr.push(attr);
384
- }
385
- else if (attr === '*') {
386
- // TODO 要读定义
387
- }
388
- else if (Array.isArray(attr)) {
389
- relationQueryAttr.push(attr);
390
- }
391
- else {
392
- throw new Error(`unknown attribute type: ${attr}`);
393
- }
394
- });
395
- // 自身的 attribute update
396
- if (primitiveAttr.length > 0) {
397
- let recordName = baseRecordName;
398
- if (context.length > 0) {
399
- if (context.at(-1) === '&') {
400
- recordName = this.controller.system.storage.getRelationName(baseRecordName, context.slice(0, -1).join('.'));
401
- }
402
- else {
403
- recordName = this.controller.system.storage.getEntityName(baseRecordName, context.join('.'));
404
- }
405
- }
406
- ERMutationEventsSource.push({
407
- dataDep,
408
- type: 'update',
409
- recordName,
410
- sourceRecordName: baseRecordName,
411
- targetPath: context,
412
- attributes: primitiveAttr,
413
- computation
414
- });
415
- }
416
- // 关联 record 字段的更新
417
- relationQueryAttr.forEach(([attrName, subQuery]) => {
418
- ERMutationEventsSource.push(...this.convertRelationAttrToERMutationEventsSourceMap(dataDep, baseRecordName, subQuery.attributeQuery, context.concat(attrName), computation));
419
- });
420
- return ERMutationEventsSource;
421
- }
422
- convertRelationAttrToERMutationEventsSourceMap(dataDep, baseRecordName, subAttrs, context, computation) {
423
- const ERMutationEventsSource = [];
424
- if (context.at(-1) !== '&') {
425
- // 1. 先监听"关联实体关系"的 create/delete
426
- const realtionRecordName = this.controller.system.storage.getRelationName(baseRecordName, context.join('.'));
427
- ERMutationEventsSource.push({
428
- dataDep,
429
- type: 'create',
430
- recordName: realtionRecordName,
431
- sourceRecordName: baseRecordName,
432
- isRelation: true,
433
- targetPath: context,
434
- computation
435
- }, {
436
- dataDep,
437
- type: 'delete',
438
- recordName: realtionRecordName,
439
- sourceRecordName: baseRecordName,
440
- isRelation: true,
441
- targetPath: context,
442
- computation
443
- });
444
- }
445
- // 2. 监听关联实体的属性 update
446
- if (subAttrs.length > 0) {
447
- ERMutationEventsSource.push(...this.convertAttrsToERMutationEventsSourceMap(dataDep, baseRecordName, subAttrs, context, computation));
448
- }
449
- return ERMutationEventsSource;
450
- }
451
- async setup() {
452
- await this.setupDefaultValues();
453
- await this.setupStateDefaultValues();
454
- await this.setupMutationListeners();
455
- }
456
- }
457
- //# sourceMappingURL=Scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../src/runtime/Scheduler.ts"],"names":[],"mappings":"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"}
@@ -1,90 +0,0 @@
1
- import { Entity, Property } from "@shared";
2
- export const SYSTEM_RECORD = '_System_';
3
- export const EVENT_RECORD = '_Event_';
4
- export const ACTIVITY_RECORD = '_Activity_';
5
- export const ID_ATTR = 'id';
6
- export const ROW_ID_ATTR = '_rowId';
7
- // state 等系统配置数据的实体化
8
- // FIXME 应该独立到外部
9
- export const SystemEntity = Entity.create({
10
- name: SYSTEM_RECORD,
11
- properties: [
12
- Property.create({
13
- name: 'concept',
14
- type: 'string',
15
- collection: false,
16
- }),
17
- Property.create({
18
- name: 'key',
19
- type: 'string',
20
- collection: false,
21
- }),
22
- Property.create({
23
- name: 'value',
24
- type: 'string',
25
- collection: false,
26
- })
27
- ]
28
- });
29
- // event 的实体化
30
- export const InteractionEventEntity = Entity.create({
31
- name: EVENT_RECORD,
32
- properties: [
33
- Property.create({
34
- name: 'interactionId',
35
- type: 'string',
36
- collection: false,
37
- }),
38
- Property.create({
39
- name: 'interactionName',
40
- type: 'string',
41
- collection: false,
42
- }),
43
- Property.create({
44
- name: 'activityId',
45
- type: 'string',
46
- collection: false,
47
- }),
48
- Property.create({
49
- name: 'payload',
50
- type: 'object',
51
- collection: false,
52
- }),
53
- Property.create({
54
- name: 'user',
55
- type: 'object',
56
- collection: false,
57
- }),
58
- Property.create({
59
- name: 'query',
60
- type: 'object',
61
- collection: false,
62
- }),
63
- ]
64
- });
65
- export const ActivityStateEntity = Entity.create({
66
- name: ACTIVITY_RECORD,
67
- properties: [
68
- Property.create({
69
- name: 'name',
70
- type: 'string',
71
- collection: false,
72
- }),
73
- Property.create({
74
- name: 'uuid',
75
- type: 'string',
76
- collection: false,
77
- }),
78
- Property.create({
79
- name: 'state',
80
- type: 'string',
81
- collection: false,
82
- }),
83
- Property.create({
84
- name: 'refs',
85
- type: 'string',
86
- collection: false,
87
- })
88
- ]
89
- });
90
- //# sourceMappingURL=System.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"System.js","sourceRoot":"","sources":["../../src/runtime/System.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAiB,QAAQ,EAAW,MAAM,SAAS,CAAC;AAQ/E,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAA;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAA;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAA;AAiF3C,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAA;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAsBnC,oBAAoB;AACpB,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,aAAa;IACnB,UAAU,EAAE;QACR,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;KACL;CACJ,CAAC,CAAA;AAqBF,aAAa;AACb,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,YAAY;IAClB,UAAU,EAAE;QACR,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;KACL;CACJ,CAAC,CAAA;AAGF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE;QACR,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,KAAK;SACpB,CAAC;KACL;CACJ,CAAC,CAAA"}
@@ -1,3 +0,0 @@
1
- import { AsyncLocalStorage } from 'async_hooks';
2
- export const asyncInteractionContext = new AsyncLocalStorage();
3
- //# sourceMappingURL=asyncInteractionContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"asyncInteractionContext.js","sourceRoot":"","sources":["../../src/runtime/asyncInteractionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,iBAAiB,EAAE,CAAC"}
@@ -1,43 +0,0 @@
1
- import { parse as parseStr } from 'acorn';
2
- import { indexBy } from "./util.js";
3
- export const OperatorNames = {
4
- '||': '||',
5
- '&&': '&&',
6
- '!': '!',
7
- };
8
- // @ts-ignore
9
- function astNodeToAttrNode(astNode, optionsByName) {
10
- if (astNode.type === "LogicalExpression") {
11
- return {
12
- type: "group" /* BoolExpressionNodeTypes.group */,
13
- // @ts-ignore
14
- op: OperatorNames[astNode.operator],
15
- left: astNodeToAttrNode(astNode.left, optionsByName),
16
- right: astNodeToAttrNode(astNode.right, optionsByName)
17
- };
18
- }
19
- else if (astNode.type === "Identifier") {
20
- return {
21
- type: "variable" /* BoolExpressionNodeTypes.variable */,
22
- name: astNode.name,
23
- uuid: optionsByName[astNode.name]?.uuid
24
- };
25
- }
26
- else if (astNode.type === "UnaryExpression") {
27
- return {
28
- type: "group" /* BoolExpressionNodeTypes.group */,
29
- op: OperatorNames['!'],
30
- left: astNodeToAttrNode(astNode.argument, optionsByName)
31
- };
32
- }
33
- else {
34
- throw new Error('unknown ast node type');
35
- }
36
- }
37
- export function parse(exp, options = []) {
38
- const optionsByName = indexBy(options, 'name');
39
- const ast = parseStr(exp, { ecmaVersion: 2020 });
40
- // @ts-ignore
41
- return astNodeToAttrNode(ast.body[0].expression, optionsByName);
42
- }
43
- //# sourceMappingURL=boolExpression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"boolExpression.js","sourceRoot":"","sources":["../../src/runtime/boolExpression.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,IAAI,QAAQ,EAAC,MAAM,OAAO,CAAA;AACvC,OAAO,EAAC,OAAO,EAAC,MAAM,WAAW,CAAC;AAGlC,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;CACX,CAAA;AAuBD,aAAa;AACb,SAAS,iBAAiB,CAAC,OAAO,EAAE,aAAa;IAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO;YACH,IAAI,6CAA+B;YACnC,aAAa;YACb,EAAE,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC;YACpD,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;SACzD,CAAA;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACvC,OAAO;YACH,IAAI,mDAAkC;YACtC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI;SAC1C,CAAA;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,KAAI,iBAAiB,EAAE,CAAC;QAC3C,OAAO;YACH,IAAI,6CAA+B;YACnC,EAAE,EAAE,aAAa,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC;SAC3D,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAA;IAC5C,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW,EAAE,UAAiB,EAAE;IAClD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,CAAC,CAAA;IAC9C,aAAa;IACb,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;AACnE,CAAC"}