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,178 +0,0 @@
1
- import { flatten } from "./util.js";
2
- import { LINK_SYMBOL } from "./RecordQuery.js";
3
- export class NewRecordData {
4
- // recordName 是自己的 recordName, info 是自己作为父亲的 attribute 的 info.
5
- constructor(map, recordName, rawData, info) {
6
- this.map = map;
7
- this.recordName = recordName;
8
- this.rawData = rawData;
9
- this.info = info;
10
- // 关系往自身合并的异表新 record
11
- this.mergedLinkTargetNewRecords = [];
12
- // 关系往自身合并的异表老 record
13
- this.mergedLinkTargetRecordIdRefs = [];
14
- // 关系往自身合并的异表 null 值
15
- this.mergedLinkTargetNullRecords = [];
16
- // 三表合一的 record
17
- this.combinedNewRecords = [];
18
- // 三表合一的老 record
19
- this.combinedRecordIdRefs = [];
20
- // 三表合一的 null 值
21
- this.combinedNullRecords = [];
22
- // 往属性方向合并的异表 record
23
- this.differentTableMergedLinkNewRecords = [];
24
- this.differentTableMergedLinkRecordIdRefs = [];
25
- this.differentTableMergedLinkNullRecords = [];
26
- // 完全关系独立的数据
27
- this.isolatedNewRecords = [];
28
- this.isolatedRecordIdRefs = [];
29
- this.isolatedNullRecords = [];
30
- // 当时 linkRecord 的时候,source/target 就可能出现在下面
31
- this.entityIdAttributes = [];
32
- // 不包括虚拟 link
33
- this.relatedEntitiesData = [];
34
- this.valueAttributes = [];
35
- // 和当前合表并且是 id 的。说明我们的需要的 row 已经有了,只要update 相应 column 就行了
36
- this.sameRowEntityIdRefs = [];
37
- const [valueAttributesInfo, entityAttributesInfo, entityIdAttributes] = this.map.groupAttributes(recordName, rawData ? Object.keys(rawData) : []);
38
- this.relatedEntitiesData = flatten(entityAttributesInfo.map(info => Array.isArray(rawData[info.attributeName]) ?
39
- rawData[info.attributeName].map((i) => new NewRecordData(this.map, info.recordName, i, info)) :
40
- new NewRecordData(this.map, info.recordName, rawData[info.attributeName], info)));
41
- this.valueAttributes = valueAttributesInfo;
42
- this.entityIdAttributes = entityIdAttributes;
43
- // TODO 要把那些独立出去的 field 排除出去。
44
- this.relatedEntitiesData.forEach(newRelatedEntityData => {
45
- // CAUTION 三表合一的情况(需要排除掉关系的 source、target 是同一实体的情况,这种情况下不算合表)
46
- if (newRelatedEntityData.info.isMergedWithParent()) {
47
- // 三表合一的情况。记录合表的数据到底是有 id ,还是新的。如果是有 id ,说明是要 update 某一行。
48
- if (newRelatedEntityData.isNull()) {
49
- this.combinedNullRecords.push(newRelatedEntityData);
50
- }
51
- else if (newRelatedEntityData.isRef()) {
52
- this.combinedRecordIdRefs.push(newRelatedEntityData);
53
- }
54
- else {
55
- // 全新的同表的数据
56
- this.combinedNewRecords.push(newRelatedEntityData);
57
- }
58
- }
59
- else {
60
- // FIXME relatedEntitiesData 是不是要限制下,只允许那些自己能管的。
61
- // 因为 source/target 这样的合并之后就不规自己管了。这里也不应该处理。
62
- if (newRelatedEntityData.info.isLinkMergedWithParent()) {
63
- if (newRelatedEntityData.isNull()) {
64
- this.mergedLinkTargetNullRecords.push(newRelatedEntityData);
65
- }
66
- else if (newRelatedEntityData.isRef()) {
67
- this.mergedLinkTargetRecordIdRefs.push(newRelatedEntityData);
68
- }
69
- else {
70
- this.mergedLinkTargetNewRecords.push(newRelatedEntityData);
71
- }
72
- }
73
- else if (newRelatedEntityData.info.isLinkMergedWithAttribute()) {
74
- // 关系往属性方向合并的
75
- if (newRelatedEntityData.isNull()) {
76
- this.differentTableMergedLinkNullRecords.push(newRelatedEntityData);
77
- }
78
- else if (newRelatedEntityData.isRef()) {
79
- this.differentTableMergedLinkRecordIdRefs.push(newRelatedEntityData);
80
- }
81
- else {
82
- this.differentTableMergedLinkNewRecords.push(newRelatedEntityData);
83
- }
84
- }
85
- else {
86
- // 关系完全独立的
87
- if (newRelatedEntityData.isNull()) {
88
- this.isolatedNullRecords.push(newRelatedEntityData);
89
- }
90
- else if (newRelatedEntityData.isRef()) {
91
- this.isolatedRecordIdRefs.push(newRelatedEntityData);
92
- }
93
- else {
94
- this.isolatedNewRecords.push(newRelatedEntityData);
95
- }
96
- }
97
- }
98
- });
99
- if (this.rawData?.[LINK_SYMBOL]) {
100
- this.linkRecordData = new NewRecordData(this.map, info?.linkName, this.rawData[LINK_SYMBOL]);
101
- }
102
- }
103
- merge(partialNewRawData) {
104
- return new NewRecordData(this.map, this.recordName, { ...this.rawData, ...partialNewRawData }, this.info);
105
- }
106
- // exclude(attributeNames: string[]) {
107
- // const newRawData = {...this.rawData}
108
- // attributeNames.forEach(name => delete newRawData[name])
109
- // return new NewEntityData(this.map, this.recordName, newRawData, this.info)
110
- // }
111
- getRef() {
112
- return { id: this.rawData.id };
113
- }
114
- isRef() {
115
- return this.rawData?.id !== undefined;
116
- }
117
- isNull() {
118
- return this.rawData === null;
119
- }
120
- getData() {
121
- return { ...this.rawData };
122
- }
123
- getSameRowFieldAndValue(oldRecord = {}) {
124
- const newRecord = { ...oldRecord, ...this.rawData };
125
- const result = this.valueAttributes.map((info) => {
126
- const value = info.isComputed ? info.computed({ ...this.rawData, ...oldRecord }) : this.rawData[info.attributeName];
127
- return {
128
- field: info.field,
129
- value
130
- };
131
- });
132
- // CAUTION 因为我们没有标记 computed 依赖于哪些字段,所以任何字段的变化这里都要把 computed attribute 重新计算一遍。
133
- // CAUTION 只有更新自己的字段和递归更新三表合一的字段是需要岛上 oldRecord 的。因为我们只允许递归更新三表合一的 record。
134
- const recordInfo = this.map.getRecordInfo(this.recordName);
135
- recordInfo.valueAttributes.forEach(info => {
136
- if (info.isComputed) {
137
- const newValue = info.computed(newRecord);
138
- if (newValue !== oldRecord[info.attributeName]) {
139
- result.push({
140
- field: info.field,
141
- value: newValue
142
- });
143
- }
144
- }
145
- });
146
- // source/target 里面记录的 id
147
- this.entityIdAttributes.forEach(info => {
148
- result.push({
149
- field: info.linkField,
150
- value: this.rawData[info.attributeName].id
151
- });
152
- });
153
- // 往自己合表的关系上的 id 以及关系数据
154
- this.mergedLinkTargetRecordIdRefs.forEach(recordData => {
155
- result.push({
156
- field: recordData.info?.linkField,
157
- value: recordData.getRef().id
158
- });
159
- if (recordData.linkRecordData) {
160
- result.push(...recordData.linkRecordData.getSameRowFieldAndValue());
161
- }
162
- });
163
- // 有 info 说明自己是派生出来的,上层可能在创建的时候通过 & 字段来指定了要创建的关系的 attribute。
164
- if (this.info && this.linkRecordData && this.info.isLinkMergedWithAttribute()) {
165
- result.push(...this.linkRecordData.getSameRowFieldAndValue());
166
- }
167
- // 三表合一的数据
168
- this.combinedNewRecords.concat(this.combinedRecordIdRefs).forEach(combinedNewRecord => {
169
- result.push(...combinedNewRecord.getSameRowFieldAndValue(oldRecord[combinedNewRecord.info?.attributeName]));
170
- if (combinedNewRecord.linkRecordData) {
171
- // CAUTION 外部 updateRecord 声明了只有三表合一的数据允许递归更新。所以也要带上 oldRecord,因为 related record 能也有 computed attribute。
172
- result.push(...combinedNewRecord.linkRecordData.getSameRowFieldAndValue(oldRecord[combinedNewRecord.info?.attributeName]?.[LINK_SYMBOL]));
173
- }
174
- });
175
- return result;
176
- }
177
- }
178
- //# sourceMappingURL=NewRecordData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NewRecordData.js","sourceRoot":"","sources":["../../../src/storage/erstorage/NewRecordData.ts"],"names":[],"mappings":"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"}
@@ -1,111 +0,0 @@
1
- import { AttributeInfo } from "./AttributeInfo.js";
2
- export class RecordInfo {
3
- constructor(name, map) {
4
- this.name = name;
5
- this.map = map;
6
- this.data = this.map.data.records[name];
7
- }
8
- get isRelation() {
9
- return this.data.isRelation;
10
- }
11
- get combinedRecords() {
12
- return this.strictRecordAttributes.filter(info => {
13
- return info.isMergedWithParent();
14
- });
15
- }
16
- get table() {
17
- return this.map.getRecordTable(this.name);
18
- }
19
- get idField() {
20
- return this.data.attributes.id.field;
21
- }
22
- get JSONFields() {
23
- return Object.entries(this.data.attributes).filter(([, attribute]) => {
24
- return !attribute.isRecord && (attribute.collection || attribute.type === 'object');
25
- }).map(([attributeName]) => attributeName);
26
- }
27
- get sameRowFields() {
28
- // 自身的value 字段
29
- const valueFields = this.valueAttributes.map(info => info.field);
30
- // 和自己合并的关系字段
31
- const linkFields = this.strictRecordAttributes.filter(info => {
32
- return info.isLinkMergedWithParent();
33
- }).map(info => {
34
- return info.getLinkInfo().recordInfo.sameRowFields;
35
- });
36
- // 当自身是一个关系 record 时,它的 source/target 虽然是 record attribute,但字段是由我来管辖的。
37
- const managedRecordAttributeFields = this.managedRecordAttributes.map(info => {
38
- return info.linkField;
39
- });
40
- const relianceFields = this.sameTableReliance.map(info => {
41
- return info.getRecordInfo().sameRowFields;
42
- });
43
- return valueFields.concat(...linkFields, ...managedRecordAttributeFields, ...relianceFields);
44
- }
45
- get mergedRecordAttributes() {
46
- return this.strictRecordAttributes.filter(info => {
47
- return info.isLinkMergedWithParent();
48
- });
49
- }
50
- get allFields() {
51
- return Object.values(this.data.attributes).map(a => a.field).filter(x => x);
52
- }
53
- // 当自身是一个关系 record 时,它的 source/target 虽然是 record attribute,但字段是由我来管辖的。
54
- get managedRecordAttributes() {
55
- return Object.keys(this.data.attributes).filter(attribute => {
56
- const attributeData = this.data.attributes[attribute];
57
- return attributeData.isRecord && attributeData.field;
58
- }).map(attribute => {
59
- return new AttributeInfo(this.name, attribute, this.map);
60
- });
61
- }
62
- get strictRecordAttributes() {
63
- return Object.keys(this.data.attributes).filter(attribute => {
64
- const attributeData = this.data.attributes[attribute];
65
- // CAUTION linkRecord 中有 field 就不能算了。比如 source/target
66
- return attributeData.isRecord && !attributeData.field;
67
- }).map(attribute => {
68
- return new AttributeInfo(this.name, attribute, this.map);
69
- });
70
- }
71
- get differentTableRecordAttributes() {
72
- // CAUTION 特别注意不能用 table 判断,因为可能是同一个实体的关系,这种情况 table 会相等,但含义并不是合表
73
- // return this.strictRecordAttributes.filter(info => info.table !== this.table)
74
- return this.strictRecordAttributes.filter(info => {
75
- return !(info.isMergedWithParent() || info.isLinkMergedWithParent());
76
- });
77
- }
78
- get reliance() {
79
- return Object.keys(this.data.attributes).filter(attribute => {
80
- return this.data.attributes[attribute].isReliance;
81
- }).map(attribute => {
82
- return new AttributeInfo(this.name, attribute, this.map);
83
- });
84
- }
85
- get notRelianceCombined() {
86
- return this.combinedRecords.filter(info => {
87
- return !info.isReliance;
88
- });
89
- }
90
- get differentTableReliance() {
91
- return this.reliance.filter(info => {
92
- return info.table !== this.table;
93
- });
94
- }
95
- get sameTableReliance() {
96
- return this.reliance.filter(info => {
97
- return info.table === this.table;
98
- });
99
- }
100
- get valueAttributes() {
101
- return Object.entries(this.data.attributes).filter(([, attribute]) => {
102
- return !attribute.isRecord;
103
- }).map(([attributeName]) => {
104
- return new AttributeInfo(this.name, attributeName, this.map);
105
- });
106
- }
107
- getAttributeInfo(attribute) {
108
- return new AttributeInfo(this.name, attribute, this.map);
109
- }
110
- }
111
- //# sourceMappingURL=RecordInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordInfo.js","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordInfo.ts"],"names":[],"mappings":"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"}
@@ -1,158 +0,0 @@
1
- import { MatchExp } from "./MatchExp.js";
2
- import { AttributeQuery } from "./AttributeQuery.js";
3
- import { Modifier } from "./Modifier.js";
4
- import { assert } from "../utils.js";
5
- export class RecordQuery {
6
- static create(recordName, map, data, contextRootEntity, parentRecord, attributeName, onlyRelationData, allowNull = false) {
7
- // CAUTION 因为合表后可能用关联数据匹配到行。
8
- const inputMatch = new MatchExp(recordName, map, data.matchExpression, contextRootEntity);
9
- const matchExpression = allowNull ? inputMatch : inputMatch.and({
10
- key: 'id',
11
- value: ['not', null]
12
- });
13
- return new RecordQuery(recordName, map, matchExpression, new AttributeQuery(recordName, map, data.attributeQuery || [], parentRecord, attributeName), new Modifier(recordName, map, data.modifier), contextRootEntity, parentRecord, attributeName, onlyRelationData, allowNull, data.label, data.goto, data.exit);
14
- }
15
- constructor(recordName, map, matchExpression, attributeQuery, modifier, contextRootEntity, parentRecord, attributeName, onlyRelationData, allowNull = false, label, goto, exit) {
16
- this.recordName = recordName;
17
- this.map = map;
18
- this.matchExpression = matchExpression;
19
- this.attributeQuery = attributeQuery;
20
- this.modifier = modifier;
21
- this.contextRootEntity = contextRootEntity;
22
- this.parentRecord = parentRecord;
23
- this.attributeName = attributeName;
24
- this.onlyRelationData = onlyRelationData;
25
- this.allowNull = allowNull;
26
- this.label = label;
27
- this.goto = goto;
28
- this.exit = exit;
29
- }
30
- getData() {
31
- return {
32
- matchExpression: this.matchExpression.data,
33
- attributeQuery: this.attributeQuery.data,
34
- modifier: this.modifier.data
35
- };
36
- }
37
- // CAUTION 特别注意这里的参数,不能让用取用原本的 matchExpression, attributeQuery, modifier 里面的 data 传进来。
38
- // 因为 data 不能代表一切配置,例如 attributeQuery 里面 还有个 shouldQueryParentLinkData 就是保存在 this 上的。
39
- derive({ matchExpression, attributeQuery, modifier }) {
40
- return new RecordQuery(this.recordName, this.map, matchExpression || this.matchExpression, attributeQuery || this.attributeQuery, modifier || this.modifier, this.contextRootEntity, this.parentRecord, this.attributeName, this.onlyRelationData, this.allowNull, this.label, this.goto, this.exit);
41
- }
42
- }
43
- export class RecordQueryTree {
44
- // 父节点和自己这个几点 link 上的 query
45
- constructor(recordName, map, parentRecord, attributeName, data, parent, parentLinkQueryTree) {
46
- this.recordName = recordName;
47
- this.map = map;
48
- this.parentRecord = parentRecord;
49
- this.attributeName = attributeName;
50
- this.data = data;
51
- this.parent = parent;
52
- this.parentLinkQueryTree = parentLinkQueryTree;
53
- this.fields = [];
54
- assert(!!recordName, 'recordName cannot be empty');
55
- this.fields = data?.fields || [];
56
- this.records = data?.records || {};
57
- if (parentRecord) {
58
- this.info = this.map.getInfo(this.parentRecord, this.attributeName);
59
- }
60
- }
61
- addField(namePath) {
62
- const [name, ...rest] = namePath;
63
- if (namePath.length === 1) {
64
- this.fields.push(name);
65
- }
66
- else if (name === LINK_SYMBOL) {
67
- if (!this.parentLinkQueryTree) {
68
- this.parentLinkQueryTree = new RecordQueryTree(this.info.linkName, this.map);
69
- }
70
- this.parentLinkQueryTree.addField(rest);
71
- }
72
- else {
73
- const info = this.map.getInfo(this.recordName, name);
74
- if (!this.records[name])
75
- this.records[name] = new RecordQueryTree(info.recordName, this.map, this.recordName, name, undefined, this);
76
- this.records[name].addField(rest);
77
- }
78
- }
79
- addRecord(namePath, subTree) {
80
- const [name, ...rest] = namePath;
81
- if (namePath.length === 1) {
82
- if (name === LINK_SYMBOL) {
83
- if (!this.parentLinkQueryTree) {
84
- this.parentLinkQueryTree = new RecordQueryTree(this.info.linkName, this.map);
85
- }
86
- if (subTree)
87
- this.parentLinkQueryTree = this.parentLinkQueryTree.merge(subTree);
88
- }
89
- else {
90
- const info = this.map.getInfo(this.recordName, name);
91
- const newTree = subTree || new RecordQueryTree(info.recordName, this.map, this.recordName, name, undefined, this);
92
- this.records[name] = this.records[name] ? this.records[name].merge(newTree) : newTree;
93
- }
94
- }
95
- else if (name === LINK_SYMBOL) {
96
- if (!this.parentLinkQueryTree) {
97
- this.parentLinkQueryTree = new RecordQueryTree(this.info.linkName, this.map);
98
- }
99
- this.parentLinkQueryTree.addRecord(rest, subTree);
100
- }
101
- else {
102
- const info = this.map.getInfo(this.recordName, name);
103
- this.records[name] = new RecordQueryTree(info.recordName, this.map, this.recordName, name, undefined, this);
104
- this.records[name].addRecord(rest, subTree);
105
- }
106
- }
107
- forEachRecords(handle) {
108
- Object.values(this.records).forEach(r => handle(r));
109
- }
110
- onlyIdField() {
111
- return this.fields.length === 1 && this.fields[0] === 'id';
112
- }
113
- merge(otherTree) {
114
- // 合并两个 tree,返回一个新的 tree
115
- const fields = Array.from(new Set([...this.fields, ...otherTree.fields]));
116
- // 合并 records
117
- const keys = Array.from(new Set([...Object.keys(this.records), ...Object.keys(otherTree.records)]));
118
- const records = {};
119
- keys.forEach(key => {
120
- if (this.records[key] && otherTree.records[key]) {
121
- records[key] = this.records[key].merge(otherTree.records[key]);
122
- }
123
- else if (this.records[key]) {
124
- records[key] = this.records[key];
125
- }
126
- else {
127
- records[key] = otherTree.records[key];
128
- }
129
- });
130
- let parentLinkQueryTree;
131
- if (this.parentLinkQueryTree && otherTree.parentLinkQueryTree) {
132
- parentLinkQueryTree = this.parentLinkQueryTree.merge(otherTree.parentLinkQueryTree);
133
- }
134
- else {
135
- parentLinkQueryTree = this.parentLinkQueryTree || otherTree.parentLinkQueryTree;
136
- }
137
- return new RecordQueryTree(this.recordName, this.map, this.parentRecord, this.attributeName, { fields, records }, this.parent, parentLinkQueryTree);
138
- }
139
- getData() {
140
- const result = {
141
- __fields: this.fields
142
- };
143
- this.forEachRecords(record => {
144
- result[record.attributeName] = record.getData();
145
- });
146
- if (this.parentLinkQueryTree) {
147
- result[LINK_SYMBOL] = this.parentLinkQueryTree.getData();
148
- }
149
- return result;
150
- }
151
- }
152
- export const LINK_SYMBOL = '&';
153
- export const ALL_ATTR_SYMBOL = '*';
154
- // export type RecordQueryTree = {
155
- // _fields?: string[],
156
- // [k: string]: RecordQueryTree
157
- // }
158
- //# sourceMappingURL=RecordQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"RecordQuery.js","sourceRoot":"","sources":["../../../src/storage/erstorage/RecordQuery.ts"],"names":[],"mappings":"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"}