hikoutei 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (535) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +135 -0
  3. package/README.ko.md +138 -0
  4. package/README.md +143 -0
  5. package/apps-script/gateway/Code.gs +412 -0
  6. package/dist/adapter/persistence/contracts/index.d.ts +3 -0
  7. package/dist/adapter/persistence/contracts/index.d.ts.map +1 -0
  8. package/dist/adapter/persistence/contracts/index.js +3 -0
  9. package/dist/adapter/persistence/contracts/index.js.map +1 -0
  10. package/dist/adapter/persistence/contracts/sql.d.ts +50 -0
  11. package/dist/adapter/persistence/contracts/sql.d.ts.map +1 -0
  12. package/dist/adapter/persistence/contracts/sql.js +9 -0
  13. package/dist/adapter/persistence/contracts/sql.js.map +1 -0
  14. package/dist/adapter/persistence/index.d.ts +2 -0
  15. package/dist/adapter/persistence/index.d.ts.map +1 -0
  16. package/dist/adapter/persistence/index.js +2 -0
  17. package/dist/adapter/persistence/index.js.map +1 -0
  18. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +53 -0
  19. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +1 -0
  20. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +105 -0
  21. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +1 -0
  22. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +39 -0
  23. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -0
  24. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +54 -0
  25. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +1 -0
  26. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts +38 -0
  27. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +1 -0
  28. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +55 -0
  29. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +1 -0
  30. package/dist/adapter/persistence/providers/mikro-orm/index.d.ts +16 -0
  31. package/dist/adapter/persistence/providers/mikro-orm/index.d.ts.map +1 -0
  32. package/dist/adapter/persistence/providers/mikro-orm/index.js +9 -0
  33. package/dist/adapter/persistence/providers/mikro-orm/index.js.map +1 -0
  34. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +27 -0
  35. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -0
  36. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +67 -0
  37. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -0
  38. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts +19 -0
  39. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.d.ts.map +1 -0
  40. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js +67 -0
  41. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmFlushChanges.js.map +1 -0
  42. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +78 -0
  43. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -0
  44. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +121 -0
  45. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -0
  46. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts +20 -0
  47. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.d.ts.map +1 -0
  48. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js +125 -0
  49. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteSchema.js.map +1 -0
  50. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +42 -0
  51. package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -0
  52. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +51 -0
  53. package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -0
  54. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +22 -0
  55. package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -0
  56. package/dist/adapter/sheets/providers/apps-script-gateway/index.js +12 -0
  57. package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -0
  58. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +42 -0
  59. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -0
  60. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +161 -0
  61. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -0
  62. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts +3 -0
  63. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -0
  64. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +692 -0
  65. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -0
  66. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +29 -0
  67. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -0
  68. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +538 -0
  69. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -0
  70. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts +12 -0
  71. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +1 -0
  72. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +190 -0
  73. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +1 -0
  74. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +23 -0
  75. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -0
  76. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +166 -0
  77. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -0
  78. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +50 -0
  79. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +1 -0
  80. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js +60 -0
  81. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +1 -0
  82. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts +44 -0
  83. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts.map +1 -0
  84. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js +40 -0
  85. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js.map +1 -0
  86. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +7 -0
  87. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -0
  88. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +47 -0
  89. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -0
  90. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts +5 -0
  91. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts.map +1 -0
  92. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +54 -0
  93. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +1 -0
  94. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +5 -0
  95. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +1 -0
  96. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js +2 -0
  97. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js.map +1 -0
  98. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +10 -0
  99. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +1 -0
  100. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +35 -0
  101. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +1 -0
  102. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +67 -0
  103. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -0
  104. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +204 -0
  105. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -0
  106. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +78 -0
  107. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -0
  108. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +343 -0
  109. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -0
  110. package/dist/application/index.d.ts +4 -0
  111. package/dist/application/index.d.ts.map +1 -0
  112. package/dist/application/index.js +4 -0
  113. package/dist/application/index.js.map +1 -0
  114. package/dist/application/orm/api/TypedSheetsOrm.d.ts +71 -0
  115. package/dist/application/orm/api/TypedSheetsOrm.d.ts.map +1 -0
  116. package/dist/application/orm/api/TypedSheetsOrm.js +116 -0
  117. package/dist/application/orm/api/TypedSheetsOrm.js.map +1 -0
  118. package/dist/application/orm/api/contracts.d.ts +118 -0
  119. package/dist/application/orm/api/contracts.d.ts.map +1 -0
  120. package/dist/application/orm/api/contracts.js +21 -0
  121. package/dist/application/orm/api/contracts.js.map +1 -0
  122. package/dist/application/orm/errors.d.ts +35 -0
  123. package/dist/application/orm/errors.d.ts.map +1 -0
  124. package/dist/application/orm/errors.js +35 -0
  125. package/dist/application/orm/errors.js.map +1 -0
  126. package/dist/application/orm/index.d.ts +13 -0
  127. package/dist/application/orm/index.d.ts.map +1 -0
  128. package/dist/application/orm/index.js +7 -0
  129. package/dist/application/orm/index.js.map +1 -0
  130. package/dist/application/orm/mapping/contracts.d.ts +113 -0
  131. package/dist/application/orm/mapping/contracts.d.ts.map +1 -0
  132. package/dist/application/orm/mapping/contracts.js +8 -0
  133. package/dist/application/orm/mapping/contracts.js.map +1 -0
  134. package/dist/application/orm/mapping/definition.d.ts +16 -0
  135. package/dist/application/orm/mapping/definition.d.ts.map +1 -0
  136. package/dist/application/orm/mapping/definition.js +145 -0
  137. package/dist/application/orm/mapping/definition.js.map +1 -0
  138. package/dist/application/orm/mapping/entityMapping.d.ts +13 -0
  139. package/dist/application/orm/mapping/entityMapping.d.ts.map +1 -0
  140. package/dist/application/orm/mapping/entityMapping.js +13 -0
  141. package/dist/application/orm/mapping/entityMapping.js.map +1 -0
  142. package/dist/application/orm/mapping/identity.d.ts +14 -0
  143. package/dist/application/orm/mapping/identity.d.ts.map +1 -0
  144. package/dist/application/orm/mapping/identity.js +37 -0
  145. package/dist/application/orm/mapping/identity.js.map +1 -0
  146. package/dist/application/orm/mapping/observationMapping.d.ts +42 -0
  147. package/dist/application/orm/mapping/observationMapping.d.ts.map +1 -0
  148. package/dist/application/orm/mapping/observationMapping.js +65 -0
  149. package/dist/application/orm/mapping/observationMapping.js.map +1 -0
  150. package/dist/application/orm/mapping/projection.d.ts +22 -0
  151. package/dist/application/orm/mapping/projection.d.ts.map +1 -0
  152. package/dist/application/orm/mapping/projection.js +74 -0
  153. package/dist/application/orm/mapping/projection.js.map +1 -0
  154. package/dist/application/orm/mapping/registry.d.ts +15 -0
  155. package/dist/application/orm/mapping/registry.d.ts.map +1 -0
  156. package/dist/application/orm/mapping/registry.js +38 -0
  157. package/dist/application/orm/mapping/registry.js.map +1 -0
  158. package/dist/application/orm/mapping/values.d.ts +17 -0
  159. package/dist/application/orm/mapping/values.d.ts.map +1 -0
  160. package/dist/application/orm/mapping/values.js +141 -0
  161. package/dist/application/orm/mapping/values.js.map +1 -0
  162. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +28 -0
  163. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -0
  164. package/dist/application/orm/persistence/flush/flushCoordinator.js +170 -0
  165. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -0
  166. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts +9 -0
  167. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.d.ts.map +1 -0
  168. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js +8 -0
  169. package/dist/application/orm/persistence/flush/mappedFlushCoordinator.js.map +1 -0
  170. package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts +12 -0
  171. package/dist/application/orm/persistence/lifecycle/entityLifecycle.d.ts.map +1 -0
  172. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +134 -0
  173. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -0
  174. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +21 -0
  175. package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -0
  176. package/dist/application/orm/persistence/projection/projectionEffects.js +203 -0
  177. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -0
  178. package/dist/application/orm/persistence/support/businessKeys.d.ts +17 -0
  179. package/dist/application/orm/persistence/support/businessKeys.d.ts.map +1 -0
  180. package/dist/application/orm/persistence/support/businessKeys.js +72 -0
  181. package/dist/application/orm/persistence/support/businessKeys.js.map +1 -0
  182. package/dist/application/orm/persistence/support/canonicalState.d.ts +22 -0
  183. package/dist/application/orm/persistence/support/canonicalState.d.ts.map +1 -0
  184. package/dist/application/orm/persistence/support/canonicalState.js +88 -0
  185. package/dist/application/orm/persistence/support/canonicalState.js.map +1 -0
  186. package/dist/application/orm/persistence/support/contracts.d.ts +139 -0
  187. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -0
  188. package/dist/application/orm/persistence/support/contracts.js +93 -0
  189. package/dist/application/orm/persistence/support/contracts.js.map +1 -0
  190. package/dist/application/orm/persistence/support/helpers.d.ts +32 -0
  191. package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -0
  192. package/dist/application/orm/persistence/support/helpers.js +66 -0
  193. package/dist/application/orm/persistence/support/helpers.js.map +1 -0
  194. package/dist/application/orm/persistence/support/timing.d.ts +20 -0
  195. package/dist/application/orm/persistence/support/timing.d.ts.map +1 -0
  196. package/dist/application/orm/persistence/support/timing.js +55 -0
  197. package/dist/application/orm/persistence/support/timing.js.map +1 -0
  198. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +46 -0
  199. package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -0
  200. package/dist/application/sync/gateway/SyncGatewayBootstrap.js +93 -0
  201. package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -0
  202. package/dist/application/sync/gateway/constants.d.ts +65 -0
  203. package/dist/application/sync/gateway/constants.d.ts.map +1 -0
  204. package/dist/application/sync/gateway/constants.js +57 -0
  205. package/dist/application/sync/gateway/constants.js.map +1 -0
  206. package/dist/application/sync/gateway/errors.d.ts +15 -0
  207. package/dist/application/sync/gateway/errors.d.ts.map +1 -0
  208. package/dist/application/sync/gateway/errors.js +16 -0
  209. package/dist/application/sync/gateway/errors.js.map +1 -0
  210. package/dist/application/sync/gateway/syncGateway.d.ts +313 -0
  211. package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -0
  212. package/dist/application/sync/gateway/syncGateway.js +202 -0
  213. package/dist/application/sync/gateway/syncGateway.js.map +1 -0
  214. package/dist/application/sync/gateway/validation.d.ts +17 -0
  215. package/dist/application/sync/gateway/validation.d.ts.map +1 -0
  216. package/dist/application/sync/gateway/validation.js +60 -0
  217. package/dist/application/sync/gateway/validation.js.map +1 -0
  218. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +72 -0
  219. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -0
  220. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +272 -0
  221. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -0
  222. package/dist/application/sync/index.d.ts +16 -0
  223. package/dist/application/sync/index.d.ts.map +1 -0
  224. package/dist/application/sync/index.js +9 -0
  225. package/dist/application/sync/index.js.map +1 -0
  226. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +106 -0
  227. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -0
  228. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +297 -0
  229. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -0
  230. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +100 -0
  231. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -0
  232. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +345 -0
  233. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -0
  234. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +46 -0
  235. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -0
  236. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +63 -0
  237. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -0
  238. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +20 -0
  239. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -0
  240. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +102 -0
  241. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -0
  242. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +19 -0
  243. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +1 -0
  244. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +32 -0
  245. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -0
  246. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -0
  247. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -0
  248. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +202 -0
  249. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -0
  250. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +17 -0
  251. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +1 -0
  252. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +80 -0
  253. package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +1 -0
  254. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +13 -0
  255. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -0
  256. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +205 -0
  257. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -0
  258. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +81 -0
  259. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -0
  260. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +245 -0
  261. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -0
  262. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +77 -0
  263. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -0
  264. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +518 -0
  265. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -0
  266. package/dist/application/sync/telemetry/syncTiming.d.ts +50 -0
  267. package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -0
  268. package/dist/application/sync/telemetry/syncTiming.js +22 -0
  269. package/dist/application/sync/telemetry/syncTiming.js.map +1 -0
  270. package/dist/domain/conflict/errors.d.ts +42 -0
  271. package/dist/domain/conflict/errors.d.ts.map +1 -0
  272. package/dist/domain/conflict/errors.js +36 -0
  273. package/dist/domain/conflict/errors.js.map +1 -0
  274. package/dist/domain/conflict/index.d.ts +5 -0
  275. package/dist/domain/conflict/index.d.ts.map +1 -0
  276. package/dist/domain/conflict/index.js +3 -0
  277. package/dist/domain/conflict/index.js.map +1 -0
  278. package/dist/domain/conflict/transitions.d.ts +52 -0
  279. package/dist/domain/conflict/transitions.d.ts.map +1 -0
  280. package/dist/domain/conflict/transitions.js +115 -0
  281. package/dist/domain/conflict/transitions.js.map +1 -0
  282. package/dist/domain/errors/evaluation.d.ts +13 -0
  283. package/dist/domain/errors/evaluation.d.ts.map +1 -0
  284. package/dist/domain/errors/evaluation.js +14 -0
  285. package/dist/domain/errors/evaluation.js.map +1 -0
  286. package/dist/domain/errors/identity.d.ts +12 -0
  287. package/dist/domain/errors/identity.d.ts.map +1 -0
  288. package/dist/domain/errors/identity.js +15 -0
  289. package/dist/domain/errors/identity.js.map +1 -0
  290. package/dist/domain/errors/index.d.ts +7 -0
  291. package/dist/domain/errors/index.d.ts.map +1 -0
  292. package/dist/domain/errors/index.js +5 -0
  293. package/dist/domain/errors/index.js.map +1 -0
  294. package/dist/domain/errors/stableEncoding.d.ts +7 -0
  295. package/dist/domain/errors/stableEncoding.d.ts.map +1 -0
  296. package/dist/domain/errors/stableEncoding.js +8 -0
  297. package/dist/domain/errors/stableEncoding.js.map +1 -0
  298. package/dist/domain/errors/types.d.ts +20 -0
  299. package/dist/domain/errors/types.d.ts.map +1 -0
  300. package/dist/domain/errors/types.js +18 -0
  301. package/dist/domain/errors/types.js.map +1 -0
  302. package/dist/domain/evaluate/constants.d.ts +55 -0
  303. package/dist/domain/evaluate/constants.d.ts.map +1 -0
  304. package/dist/domain/evaluate/constants.js +41 -0
  305. package/dist/domain/evaluate/constants.js.map +1 -0
  306. package/dist/domain/evaluate/contracts.d.ts +125 -0
  307. package/dist/domain/evaluate/contracts.d.ts.map +1 -0
  308. package/dist/domain/evaluate/contracts.js +8 -0
  309. package/dist/domain/evaluate/contracts.js.map +1 -0
  310. package/dist/domain/evaluate/evaluateBatch.d.ts +11 -0
  311. package/dist/domain/evaluate/evaluateBatch.d.ts.map +1 -0
  312. package/dist/domain/evaluate/evaluateBatch.js +91 -0
  313. package/dist/domain/evaluate/evaluateBatch.js.map +1 -0
  314. package/dist/domain/evaluate/fieldEvaluation.d.ts +14 -0
  315. package/dist/domain/evaluate/fieldEvaluation.d.ts.map +1 -0
  316. package/dist/domain/evaluate/fieldEvaluation.js +133 -0
  317. package/dist/domain/evaluate/fieldEvaluation.js.map +1 -0
  318. package/dist/domain/evaluate/identity.d.ts +21 -0
  319. package/dist/domain/evaluate/identity.d.ts.map +1 -0
  320. package/dist/domain/evaluate/identity.js +72 -0
  321. package/dist/domain/evaluate/identity.js.map +1 -0
  322. package/dist/domain/evaluate/index.d.ts +4 -0
  323. package/dist/domain/evaluate/index.d.ts.map +1 -0
  324. package/dist/domain/evaluate/index.js +3 -0
  325. package/dist/domain/evaluate/index.js.map +1 -0
  326. package/dist/domain/evaluate/preconditions.d.ts +30 -0
  327. package/dist/domain/evaluate/preconditions.d.ts.map +1 -0
  328. package/dist/domain/evaluate/preconditions.js +389 -0
  329. package/dist/domain/evaluate/preconditions.js.map +1 -0
  330. package/dist/domain/evaluate/quarantine.d.ts +15 -0
  331. package/dist/domain/evaluate/quarantine.d.ts.map +1 -0
  332. package/dist/domain/evaluate/quarantine.js +185 -0
  333. package/dist/domain/evaluate/quarantine.js.map +1 -0
  334. package/dist/domain/index.d.ts +7 -0
  335. package/dist/domain/index.d.ts.map +1 -0
  336. package/dist/domain/index.js +7 -0
  337. package/dist/domain/index.js.map +1 -0
  338. package/dist/domain/model/constants.d.ts +73 -0
  339. package/dist/domain/model/constants.d.ts.map +1 -0
  340. package/dist/domain/model/constants.js +59 -0
  341. package/dist/domain/model/constants.js.map +1 -0
  342. package/dist/domain/model/index.d.ts +3 -0
  343. package/dist/domain/model/index.d.ts.map +1 -0
  344. package/dist/domain/model/index.js +2 -0
  345. package/dist/domain/model/index.js.map +1 -0
  346. package/dist/domain/model/types.d.ts +330 -0
  347. package/dist/domain/model/types.d.ts.map +1 -0
  348. package/dist/domain/model/types.js +8 -0
  349. package/dist/domain/model/types.js.map +1 -0
  350. package/dist/index.d.ts +17 -0
  351. package/dist/index.d.ts.map +1 -0
  352. package/dist/index.js +11 -0
  353. package/dist/index.js.map +1 -0
  354. package/dist/infrastructure/index.d.ts +3 -0
  355. package/dist/infrastructure/index.d.ts.map +1 -0
  356. package/dist/infrastructure/index.js +3 -0
  357. package/dist/infrastructure/index.js.map +1 -0
  358. package/dist/infrastructure/storage/constants.d.ts +4 -0
  359. package/dist/infrastructure/storage/constants.d.ts.map +1 -0
  360. package/dist/infrastructure/storage/constants.js +4 -0
  361. package/dist/infrastructure/storage/constants.js.map +1 -0
  362. package/dist/infrastructure/storage/errors.d.ts +55 -0
  363. package/dist/infrastructure/storage/errors.d.ts.map +1 -0
  364. package/dist/infrastructure/storage/errors.js +58 -0
  365. package/dist/infrastructure/storage/errors.js.map +1 -0
  366. package/dist/infrastructure/storage/index.d.ts +23 -0
  367. package/dist/infrastructure/storage/index.d.ts.map +1 -0
  368. package/dist/infrastructure/storage/index.js +13 -0
  369. package/dist/infrastructure/storage/index.js.map +1 -0
  370. package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts +64 -0
  371. package/dist/infrastructure/storage/recovery/restoreRecovery.d.ts.map +1 -0
  372. package/dist/infrastructure/storage/recovery/restoreRecovery.js +148 -0
  373. package/dist/infrastructure/storage/recovery/restoreRecovery.js.map +1 -0
  374. package/dist/infrastructure/storage/sqlite/schema.d.ts +49 -0
  375. package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -0
  376. package/dist/infrastructure/storage/sqlite/schema.js +529 -0
  377. package/dist/infrastructure/storage/sqlite/schema.js.map +1 -0
  378. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +5 -0
  379. package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -0
  380. package/dist/infrastructure/storage/sqlite/schemaTypes.js +2 -0
  381. package/dist/infrastructure/storage/sqlite/schemaTypes.js.map +1 -0
  382. package/dist/infrastructure/storage/sqlite/sqlScript.d.ts +9 -0
  383. package/dist/infrastructure/storage/sqlite/sqlScript.d.ts.map +1 -0
  384. package/dist/infrastructure/storage/sqlite/sqlScript.js +122 -0
  385. package/dist/infrastructure/storage/sqlite/sqlScript.js.map +1 -0
  386. package/dist/infrastructure/storage/sqlite/sqlState.d.ts +6 -0
  387. package/dist/infrastructure/storage/sqlite/sqlState.d.ts.map +1 -0
  388. package/dist/infrastructure/storage/sqlite/sqlState.js +14 -0
  389. package/dist/infrastructure/storage/sqlite/sqlState.js.map +1 -0
  390. package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts +6 -0
  391. package/dist/infrastructure/storage/sqlite/sqlTransaction.d.ts.map +1 -0
  392. package/dist/infrastructure/storage/sqlite/sqlTransaction.js +24 -0
  393. package/dist/infrastructure/storage/sqlite/sqlTransaction.js.map +1 -0
  394. package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts +44 -0
  395. package/dist/infrastructure/storage/sqlite/sqliteBridge.d.ts.map +1 -0
  396. package/dist/infrastructure/storage/sqlite/sqliteBridge.js +66 -0
  397. package/dist/infrastructure/storage/sqlite/sqliteBridge.js.map +1 -0
  398. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +101 -0
  399. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -0
  400. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +417 -0
  401. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -0
  402. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts +16 -0
  403. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts.map +1 -0
  404. package/dist/infrastructure/storage/state/observation/observationAudit.js +85 -0
  405. package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -0
  406. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +31 -0
  407. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -0
  408. package/dist/infrastructure/storage/state/observation/observationCanonical.js +439 -0
  409. package/dist/infrastructure/storage/state/observation/observationCanonical.js.map +1 -0
  410. package/dist/infrastructure/storage/state/observation/observationConstants.d.ts +53 -0
  411. package/dist/infrastructure/storage/state/observation/observationConstants.d.ts.map +1 -0
  412. package/dist/infrastructure/storage/state/observation/observationConstants.js +41 -0
  413. package/dist/infrastructure/storage/state/observation/observationConstants.js.map +1 -0
  414. package/dist/infrastructure/storage/state/observation/observationLedger.d.ts +49 -0
  415. package/dist/infrastructure/storage/state/observation/observationLedger.d.ts.map +1 -0
  416. package/dist/infrastructure/storage/state/observation/observationLedger.js +537 -0
  417. package/dist/infrastructure/storage/state/observation/observationLedger.js.map +1 -0
  418. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +15 -0
  419. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -0
  420. package/dist/infrastructure/storage/state/observation/observationQuarantine.js +100 -0
  421. package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -0
  422. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +124 -0
  423. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -0
  424. package/dist/infrastructure/storage/state/observation/observationTypes.js +13 -0
  425. package/dist/infrastructure/storage/state/observation/observationTypes.js.map +1 -0
  426. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +28 -0
  427. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -0
  428. package/dist/infrastructure/storage/state/observation/observationValidation.js +223 -0
  429. package/dist/infrastructure/storage/state/observation/observationValidation.js.map +1 -0
  430. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +28 -0
  431. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -0
  432. package/dist/infrastructure/storage/state/observation/observationWriter.js +293 -0
  433. package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -0
  434. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts +58 -0
  435. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.d.ts.map +1 -0
  436. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js +195 -0
  437. package/dist/infrastructure/storage/state/readonly/readOnlyObservation.js.map +1 -0
  438. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +31 -0
  439. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -0
  440. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +563 -0
  441. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -0
  442. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +118 -0
  443. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -0
  444. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +18 -0
  445. package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -0
  446. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +23 -0
  447. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -0
  448. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +84 -0
  449. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -0
  450. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +16 -0
  451. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -0
  452. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +97 -0
  453. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -0
  454. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +137 -0
  455. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -0
  456. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +396 -0
  457. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -0
  458. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +101 -0
  459. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -0
  460. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +9 -0
  461. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -0
  462. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +21 -0
  463. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -0
  464. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +184 -0
  465. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -0
  466. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +25 -0
  467. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -0
  468. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +158 -0
  469. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -0
  470. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +69 -0
  471. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -0
  472. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +272 -0
  473. package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -0
  474. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +90 -0
  475. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +1 -0
  476. package/dist/infrastructure/storage/sync/shared/writerLease.js +282 -0
  477. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -0
  478. package/dist/shared/constants.d.ts +8 -0
  479. package/dist/shared/constants.d.ts.map +1 -0
  480. package/dist/shared/constants.js +8 -0
  481. package/dist/shared/constants.js.map +1 -0
  482. package/dist/shared/encoding/constants.d.ts +45 -0
  483. package/dist/shared/encoding/constants.d.ts.map +1 -0
  484. package/dist/shared/encoding/constants.js +37 -0
  485. package/dist/shared/encoding/constants.js.map +1 -0
  486. package/dist/shared/encoding/index.d.ts +6 -0
  487. package/dist/shared/encoding/index.d.ts.map +1 -0
  488. package/dist/shared/encoding/index.js +4 -0
  489. package/dist/shared/encoding/index.js.map +1 -0
  490. package/dist/shared/encoding/stableEncode.d.ts +34 -0
  491. package/dist/shared/encoding/stableEncode.d.ts.map +1 -0
  492. package/dist/shared/encoding/stableEncode.js +210 -0
  493. package/dist/shared/encoding/stableEncode.js.map +1 -0
  494. package/dist/shared/encoding/typeGuards.d.ts +15 -0
  495. package/dist/shared/encoding/typeGuards.d.ts.map +1 -0
  496. package/dist/shared/encoding/typeGuards.js +11 -0
  497. package/dist/shared/encoding/typeGuards.js.map +1 -0
  498. package/dist/shared/encoding/types.d.ts +52 -0
  499. package/dist/shared/encoding/types.d.ts.map +1 -0
  500. package/dist/shared/encoding/types.js +8 -0
  501. package/dist/shared/encoding/types.js.map +1 -0
  502. package/dist/shared/index.d.ts +6 -0
  503. package/dist/shared/index.d.ts.map +1 -0
  504. package/dist/shared/index.js +6 -0
  505. package/dist/shared/index.js.map +1 -0
  506. package/dist/shared/state/constants.d.ts +16 -0
  507. package/dist/shared/state/constants.d.ts.map +1 -0
  508. package/dist/shared/state/constants.js +16 -0
  509. package/dist/shared/state/constants.js.map +1 -0
  510. package/dist/shared/state/index.d.ts +3 -0
  511. package/dist/shared/state/index.d.ts.map +1 -0
  512. package/dist/shared/state/index.js +2 -0
  513. package/dist/shared/state/index.js.map +1 -0
  514. package/dist/shared/state/types.d.ts +23 -0
  515. package/dist/shared/state/types.d.ts.map +1 -0
  516. package/dist/shared/state/types.js +2 -0
  517. package/dist/shared/state/types.js.map +1 -0
  518. package/dist/shared/validation.d.ts +9 -0
  519. package/dist/shared/validation.d.ts.map +1 -0
  520. package/dist/shared/validation.js +25 -0
  521. package/dist/shared/validation.js.map +1 -0
  522. package/docs/architecture.md +72 -0
  523. package/docs/code-guidelines.md +256 -0
  524. package/docs/development.md +48 -0
  525. package/docs/git-workflow.md +224 -0
  526. package/docs/mikro-orm-adapter-spike.md +248 -0
  527. package/docs/quick-start.md +102 -0
  528. package/docs/sql-layer-plan.md +59 -0
  529. package/docs/sync-bulk-write-benchmark.md +1036 -0
  530. package/docs/sync-observability.md +71 -0
  531. package/docs/task-queue-write-model.md +640 -0
  532. package/docs/typed-sheets-mvp-scope-2026-06-29.md +490 -0
  533. package/docs/typed-sheets-plan.md +417 -0
  534. package/docs/write-and-synchronization-flow.md +71 -0
  535. package/package.json +68 -0
@@ -0,0 +1,439 @@
1
+ /**
2
+ * Canonical-state and conflict-ledger mutations for one observed row.
3
+ *
4
+ * Every exported operation assumes its caller already holds the writer fence
5
+ * and is inside the observation writer's immediate transaction.
6
+ */
7
+ import { LOOKUP_RESULT_KINDS, PRESENCE_KINDS, stableHash, } from "../../../../domain/index.js";
8
+ import { ROW_OUTCOMES } from "../../../../domain/evaluate/constants.js";
9
+ import { CONFLICT_STATUSES, ROW_BINDING_STATES, ROW_OPERATIONS, } from "../../../../domain/model/constants.js";
10
+ import { STORAGE_ERROR_CODES, StorageError } from "../../errors.js";
11
+ import { EMPTY_ARRAY_LENGTH_ZERO, EXPECTED_SINGLE_ROW_CHANGE_COUNT, } from "../../constants.js";
12
+ import { fromSqlNullable, toSqlNullable } from "../../sqlite/sqlState.js";
13
+ import { CANONICAL_COMMIT_RESULT_KINDS, commitCanonicalChanges, commitCanonicalChangesWithSql, } from "../canonical/canonicalCommit.js";
14
+ import { auditJson } from "./observationAudit.js";
15
+ import { candidateHash, readActiveCandidate, readActiveCandidateWithSql, } from "./observationLedger.js";
16
+ import { CanonicalStaleError, FenceLostError } from "./observationTypes.js";
17
+ const INITIAL_CANDIDATE_EPOCH = 0;
18
+ const CONFLICT_ID_PREFIX = "conflict:";
19
+ const INSERT_SYNC_CONFLICT_SQL = `
20
+ INSERT INTO sync_conflict (
21
+ conflict_id, conflict_group_id, event_id, logical_sheet_id, entity_id, row_binding_id,
22
+ field_name, user_value, user_base_revision, canonical_value_at_detection,
23
+ canonical_revision_at_detection, current_canonical_value, current_canonical_revision,
24
+ candidate_epoch, status, created_at, updated_at
25
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, '${CONFLICT_STATUSES.OPEN}', ?, ?)
26
+ `;
27
+ const UPSERT_VISIBLE_FIELD_STATE_SQL = `
28
+ INSERT INTO sheet_visible_field_state (
29
+ physical_sheet_id, projection, row_binding_id, field_name,
30
+ confirmed_field_hash, confirmed_visible_revision,
31
+ active_candidate_conflict_id, active_candidate_hash, candidate_epoch,
32
+ last_observed_field_hash
33
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
34
+ ON CONFLICT(physical_sheet_id, projection, row_binding_id, field_name)
35
+ DO UPDATE SET
36
+ active_candidate_conflict_id = excluded.active_candidate_conflict_id,
37
+ active_candidate_hash = excluded.active_candidate_hash,
38
+ candidate_epoch = excluded.candidate_epoch,
39
+ last_observed_field_hash = excluded.last_observed_field_hash
40
+ `;
41
+ const ADVANCE_ROW_BINDING_CANDIDATE_EPOCH_SQL = `
42
+ UPDATE row_binding
43
+ SET candidate_epoch = CASE
44
+ WHEN candidate_epoch < ? THEN ?
45
+ ELSE candidate_epoch
46
+ END
47
+ WHERE row_binding_id = ? AND logical_sheet_id = ?
48
+ `;
49
+ const ACTIVATE_INSERTED_ROW_BINDING_SQL = `
50
+ UPDATE row_binding
51
+ SET entity_id = ?, state = '${ROW_BINDING_STATES.ACTIVE}'
52
+ WHERE row_binding_id = ? AND logical_sheet_id = ?
53
+ AND state = '${ROW_BINDING_STATES.CANDIDATE}' AND entity_id IS NULL
54
+ `;
55
+ const TOMBSTONE_DELETED_ROW_BINDING_SQL = `
56
+ UPDATE row_binding
57
+ SET state = '${ROW_BINDING_STATES.TOMBSTONED}'
58
+ WHERE row_binding_id = ? AND logical_sheet_id = ?
59
+ AND state = '${ROW_BINDING_STATES.ACTIVE}' AND entity_id = ?
60
+ `;
61
+ const DEACTIVATE_ENTITY_BUSINESS_KEYS_SQL = `
62
+ UPDATE business_key_index
63
+ SET state = 'inactive'
64
+ WHERE logical_sheet_id = ? AND entity_id = ? AND state = 'active'
65
+ `;
66
+ const RETIRE_BUSINESS_KEY_SQL = `
67
+ UPDATE business_key_index
68
+ SET state = 'inactive'
69
+ WHERE logical_sheet_id = ? AND field_name = ? AND normalized_key = ?
70
+ AND entity_id = ? AND state = 'active'
71
+ `;
72
+ const READ_ACTIVE_BUSINESS_KEY_SQL = `
73
+ SELECT entity_id
74
+ FROM business_key_index
75
+ WHERE logical_sheet_id = ? AND field_name = ? AND normalized_key = ? AND state = 'active'
76
+ `;
77
+ const INSERT_ACTIVE_BUSINESS_KEY_SQL = `
78
+ INSERT INTO business_key_index (
79
+ logical_sheet_id, field_name, normalized_key, entity_id, state
80
+ ) VALUES (?, ?, ?, ?, 'active')
81
+ `;
82
+ const REBASE_ACTIVE_CONFLICT_SQL = `
83
+ UPDATE sync_conflict
84
+ SET current_canonical_value = ?, current_canonical_revision = ?,
85
+ status = '${CONFLICT_STATUSES.NEEDS_REBASE}', last_rebased_commit_id = ?, updated_at = ?
86
+ WHERE conflict_id = ?
87
+ AND status IN ('${CONFLICT_STATUSES.OPEN}', '${CONFLICT_STATUSES.NEEDS_REBASE}')
88
+ `;
89
+ const READ_MAX_CANDIDATE_EPOCH_SQL = `
90
+ SELECT MAX(candidate_epoch) AS max_epoch
91
+ FROM sync_conflict
92
+ WHERE row_binding_id = ? AND field_name = ?
93
+ `;
94
+ /** Creates a deterministic conflict ID from its event, field, and candidate epoch. */
95
+ function makeConflictId(eventId, rowBindingId, fieldName, candidateEpoch) {
96
+ return `${CONFLICT_ID_PREFIX}${stableHash({
97
+ eventId,
98
+ rowBindingId,
99
+ fieldName,
100
+ candidateEpoch,
101
+ })}`;
102
+ }
103
+ /**
104
+ * Applies a validated canonical change, then updates bindings, key ownership,
105
+ * and any unresolved conflicts rebased by that change.
106
+ */
107
+ export function applyCanonicalMutation(db, fence, input, row, binding) {
108
+ const needsCanonical = input.evaluation.acceptedFields.length > 0 ||
109
+ (row.operation === ROW_OPERATIONS.DELETE &&
110
+ input.evaluation.outcome === ROW_OUTCOMES.ACCEPTED);
111
+ if (!needsCanonical)
112
+ return { kind: PRESENCE_KINDS.ABSENT };
113
+ if (input.canonical.kind === PRESENCE_KINDS.ABSENT) {
114
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_OBSERVATION_INPUT, "canonical mutation disappeared after validation");
115
+ }
116
+ const mutation = input.canonical.value;
117
+ assertCanonicalBinding(binding, mutation.commit);
118
+ const result = commitCanonicalChanges(db, fence, mutation.commit);
119
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.FENCED_OUT)
120
+ throw new FenceLostError();
121
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.STALE)
122
+ throw new CanonicalStaleError();
123
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.INVALID) {
124
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_OBSERVATION_INPUT, `canonical mutation was invalid: ${result.reason}`);
125
+ }
126
+ transitionBindingAfterCanonicalCommit(db, input.batch.sheetId, row.rowBindingId, mutation.commit);
127
+ applyBusinessKeyChanges(db, input.batch.sheetId, mutation);
128
+ rebaseActiveConflicts(db, input, row, mutation, result);
129
+ return { kind: PRESENCE_KINDS.PRESENT, value: result };
130
+ }
131
+ /**
132
+ * Applies canonical state and related binding/key/conflict changes through
133
+ * the active async SQL transaction.
134
+ */
135
+ export async function applyCanonicalMutationWithSql(sql, fence, input, row, binding) {
136
+ const needsCanonical = input.evaluation.acceptedFields.length > 0 ||
137
+ (row.operation === ROW_OPERATIONS.DELETE &&
138
+ input.evaluation.outcome === ROW_OUTCOMES.ACCEPTED);
139
+ if (!needsCanonical)
140
+ return { kind: PRESENCE_KINDS.ABSENT };
141
+ if (input.canonical.kind === PRESENCE_KINDS.ABSENT) {
142
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_OBSERVATION_INPUT, "canonical mutation disappeared after validation");
143
+ }
144
+ const mutation = input.canonical.value;
145
+ assertCanonicalBinding(binding, mutation.commit);
146
+ const result = await commitCanonicalChangesWithSql(sql, fence, mutation.commit);
147
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.FENCED_OUT)
148
+ throw new FenceLostError();
149
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.STALE)
150
+ throw new CanonicalStaleError();
151
+ if (result.kind === CANONICAL_COMMIT_RESULT_KINDS.INVALID) {
152
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_OBSERVATION_INPUT, `canonical mutation was invalid: ${result.reason}`);
153
+ }
154
+ await transitionBindingAfterCanonicalCommitWithSql(sql, input.batch.sheetId, row.rowBindingId, mutation.commit);
155
+ await applyBusinessKeyChangesWithSql(sql, input.batch.sheetId, mutation);
156
+ await rebaseActiveConflictsWithSql(sql, input, row, mutation, result);
157
+ return { kind: PRESENCE_KINDS.PRESENT, value: result };
158
+ }
159
+ /** Writes new field candidates unless an equivalent unresolved candidate is active. */
160
+ export function persistConflictAttempts(db, input, row, binding, eventId) {
161
+ if (input.evaluation.conflicts.length === EMPTY_ARRAY_LENGTH_ZERO)
162
+ return [];
163
+ if (binding.state !== ROW_BINDING_STATES.ACTIVE ||
164
+ binding.entity_id.kind !== PRESENCE_KINDS.PRESENT) {
165
+ throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "a conflict requires an active entity binding");
166
+ }
167
+ const conflictIds = [];
168
+ const conflictGroupId = input.evaluation.conflicts.length > 1
169
+ ? { kind: PRESENCE_KINDS.PRESENT, value: `conflict-group:${eventId}` }
170
+ : { kind: PRESENCE_KINDS.ABSENT };
171
+ for (const conflict of input.evaluation.conflicts) {
172
+ const active = readActiveCandidate(db, input.physicalSheetId, input.batch.projection, row.rowBindingId, conflict.fieldName);
173
+ const hash = candidateHash(conflict);
174
+ if (active.kind === LOOKUP_RESULT_KINDS.FOUND &&
175
+ (active.value.status === CONFLICT_STATUSES.OPEN ||
176
+ active.value.status === CONFLICT_STATUSES.NEEDS_REBASE) &&
177
+ active.value.active_candidate_hash === hash) {
178
+ continue;
179
+ }
180
+ const previousEpoch = Math.max(active.kind === LOOKUP_RESULT_KINDS.FOUND
181
+ ? active.value.candidate_epoch
182
+ : INITIAL_CANDIDATE_EPOCH, maxCandidateEpoch(db, row.rowBindingId, conflict.fieldName));
183
+ const candidateEpoch = previousEpoch + 1;
184
+ const conflictId = makeConflictId(eventId, row.rowBindingId, conflict.fieldName, candidateEpoch);
185
+ db.prepare(INSERT_SYNC_CONFLICT_SQL).run(conflictId, toSqlNullable(conflictGroupId), eventId, input.batch.sheetId, binding.entity_id.value, row.rowBindingId, conflict.fieldName, auditJson(conflict.userValue), conflict.userBaseRevision, auditJson(conflict.canonicalValue), conflict.canonicalRevision, auditJson(conflict.canonicalValue), conflict.canonicalRevision, candidateEpoch, input.observation.receivedAt, input.observation.receivedAt);
186
+ db.prepare(UPSERT_VISIBLE_FIELD_STATE_SQL).run(input.physicalSheetId, input.batch.projection, row.rowBindingId, conflict.fieldName, stableHash(conflict.canonicalValue), row.baseVisibleRevision, conflictId, hash, candidateEpoch, stableHash(conflict.userValue));
187
+ db.prepare(ADVANCE_ROW_BINDING_CANDIDATE_EPOCH_SQL)
188
+ .run(candidateEpoch, candidateEpoch, row.rowBindingId, input.batch.sheetId);
189
+ conflictIds.push(conflictId);
190
+ }
191
+ return conflictIds;
192
+ }
193
+ /** Writes new field candidates through the active async SQL transaction. */
194
+ export async function persistConflictAttemptsWithSql(sql, input, row, binding, eventId) {
195
+ if (input.evaluation.conflicts.length === EMPTY_ARRAY_LENGTH_ZERO)
196
+ return [];
197
+ if (binding.state !== ROW_BINDING_STATES.ACTIVE ||
198
+ binding.entity_id.kind !== PRESENCE_KINDS.PRESENT) {
199
+ throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "a conflict requires an active entity binding");
200
+ }
201
+ const conflictIds = [];
202
+ const conflictGroupId = input.evaluation.conflicts.length > 1
203
+ ? { kind: PRESENCE_KINDS.PRESENT, value: `conflict-group:${eventId}` }
204
+ : { kind: PRESENCE_KINDS.ABSENT };
205
+ for (const conflict of input.evaluation.conflicts) {
206
+ const active = await readActiveCandidateWithSql(sql, input.physicalSheetId, input.batch.projection, row.rowBindingId, conflict.fieldName);
207
+ const hash = candidateHash(conflict);
208
+ if (active.kind === LOOKUP_RESULT_KINDS.FOUND &&
209
+ (active.value.status === CONFLICT_STATUSES.OPEN ||
210
+ active.value.status === CONFLICT_STATUSES.NEEDS_REBASE) &&
211
+ active.value.active_candidate_hash === hash) {
212
+ continue;
213
+ }
214
+ const previousEpoch = Math.max(active.kind === LOOKUP_RESULT_KINDS.FOUND
215
+ ? active.value.candidate_epoch
216
+ : INITIAL_CANDIDATE_EPOCH, await maxCandidateEpochWithSql(sql, row.rowBindingId, conflict.fieldName));
217
+ const candidateEpoch = previousEpoch + 1;
218
+ const conflictId = makeConflictId(eventId, row.rowBindingId, conflict.fieldName, candidateEpoch);
219
+ await sql.run(INSERT_SYNC_CONFLICT_SQL, [
220
+ conflictId,
221
+ toSqlNullable(conflictGroupId),
222
+ eventId,
223
+ input.batch.sheetId,
224
+ binding.entity_id.value,
225
+ row.rowBindingId,
226
+ conflict.fieldName,
227
+ auditJson(conflict.userValue),
228
+ conflict.userBaseRevision,
229
+ auditJson(conflict.canonicalValue),
230
+ conflict.canonicalRevision,
231
+ auditJson(conflict.canonicalValue),
232
+ conflict.canonicalRevision,
233
+ candidateEpoch,
234
+ input.observation.receivedAt,
235
+ input.observation.receivedAt,
236
+ ]);
237
+ await sql.run(UPSERT_VISIBLE_FIELD_STATE_SQL, [
238
+ input.physicalSheetId,
239
+ input.batch.projection,
240
+ row.rowBindingId,
241
+ conflict.fieldName,
242
+ stableHash(conflict.canonicalValue),
243
+ row.baseVisibleRevision,
244
+ conflictId,
245
+ hash,
246
+ candidateEpoch,
247
+ stableHash(conflict.userValue),
248
+ ]);
249
+ await sql.run(ADVANCE_ROW_BINDING_CANDIDATE_EPOCH_SQL, [
250
+ candidateEpoch,
251
+ candidateEpoch,
252
+ row.rowBindingId,
253
+ input.batch.sheetId,
254
+ ]);
255
+ conflictIds.push(conflictId);
256
+ }
257
+ return conflictIds;
258
+ }
259
+ /** Rejects an impossible persistence result before it becomes public output. */
260
+ export function requirePersistedOutcome(evaluation) {
261
+ if (evaluation.outcome === ROW_OUTCOMES.QUARANTINE) {
262
+ throw new StorageError(STORAGE_ERROR_CODES.INVALID_OBSERVATION_INPUT, "a quarantined row cannot be reported as a persisted event outcome");
263
+ }
264
+ return evaluation.outcome;
265
+ }
266
+ function assertCanonicalBinding(binding, commit) {
267
+ if (commit.kind === ROW_OPERATIONS.INSERT) {
268
+ if (binding.state !== ROW_BINDING_STATES.CANDIDATE ||
269
+ binding.entity_id.kind !== PRESENCE_KINDS.ABSENT) {
270
+ throw new CanonicalStaleError();
271
+ }
272
+ return;
273
+ }
274
+ if (binding.state !== ROW_BINDING_STATES.ACTIVE ||
275
+ binding.entity_id.kind !== PRESENCE_KINDS.PRESENT ||
276
+ binding.entity_id.value !== commit.entityId) {
277
+ throw new CanonicalStaleError();
278
+ }
279
+ }
280
+ function transitionBindingAfterCanonicalCommit(db, logicalSheetId, rowBindingId, commit) {
281
+ if (commit.kind === ROW_OPERATIONS.UPDATE)
282
+ return;
283
+ const result = commit.kind === ROW_OPERATIONS.INSERT
284
+ ? db.prepare(ACTIVATE_INSERTED_ROW_BINDING_SQL)
285
+ .run(commit.entityId, rowBindingId, logicalSheetId)
286
+ : db.prepare(TOMBSTONE_DELETED_ROW_BINDING_SQL)
287
+ .run(rowBindingId, logicalSheetId, commit.entityId);
288
+ if (result.changes !== EXPECTED_SINGLE_ROW_CHANGE_COUNT) {
289
+ throw new CanonicalStaleError();
290
+ }
291
+ }
292
+ /** Transitions an inserted or deleted binding through the active async SQL transaction. */
293
+ async function transitionBindingAfterCanonicalCommitWithSql(sql, logicalSheetId, rowBindingId, commit) {
294
+ if (commit.kind === ROW_OPERATIONS.UPDATE)
295
+ return;
296
+ const result = commit.kind === ROW_OPERATIONS.INSERT
297
+ ? await sql.run(ACTIVATE_INSERTED_ROW_BINDING_SQL, [commit.entityId, rowBindingId, logicalSheetId])
298
+ : await sql.run(TOMBSTONE_DELETED_ROW_BINDING_SQL, [rowBindingId, logicalSheetId, commit.entityId]);
299
+ if (result.changes !== EXPECTED_SINGLE_ROW_CHANGE_COUNT) {
300
+ throw new CanonicalStaleError();
301
+ }
302
+ }
303
+ function applyBusinessKeyChanges(db, logicalSheetId, mutation) {
304
+ const commit = mutation.commit;
305
+ if (commit.kind === ROW_OPERATIONS.DELETE) {
306
+ db.prepare(DEACTIVATE_ENTITY_BUSINESS_KEYS_SQL).run(logicalSheetId, commit.entityId);
307
+ return;
308
+ }
309
+ for (const change of mutation.businessKeyChanges) {
310
+ if (change.previousNormalizedKey.kind === PRESENCE_KINDS.PRESENT &&
311
+ (change.nextNormalizedKey.kind === PRESENCE_KINDS.ABSENT ||
312
+ change.previousNormalizedKey.value !== change.nextNormalizedKey.value)) {
313
+ const retired = db.prepare(RETIRE_BUSINESS_KEY_SQL).run(logicalSheetId, change.fieldName, change.previousNormalizedKey.value, commit.entityId);
314
+ if (retired.changes !== EXPECTED_SINGLE_ROW_CHANGE_COUNT) {
315
+ throw new CanonicalStaleError();
316
+ }
317
+ }
318
+ if (change.nextNormalizedKey.kind === PRESENCE_KINDS.PRESENT) {
319
+ ensureActiveBusinessKey(db, logicalSheetId, change.fieldName, change.nextNormalizedKey.value, commit.entityId);
320
+ }
321
+ }
322
+ }
323
+ /** Applies business-key ownership transitions through the active async SQL transaction. */
324
+ async function applyBusinessKeyChangesWithSql(sql, logicalSheetId, mutation) {
325
+ const commit = mutation.commit;
326
+ if (commit.kind === ROW_OPERATIONS.DELETE) {
327
+ await sql.run(DEACTIVATE_ENTITY_BUSINESS_KEYS_SQL, [logicalSheetId, commit.entityId]);
328
+ return;
329
+ }
330
+ for (const change of mutation.businessKeyChanges) {
331
+ if (change.previousNormalizedKey.kind === PRESENCE_KINDS.PRESENT &&
332
+ (change.nextNormalizedKey.kind === PRESENCE_KINDS.ABSENT ||
333
+ change.previousNormalizedKey.value !== change.nextNormalizedKey.value)) {
334
+ const retired = await sql.run(RETIRE_BUSINESS_KEY_SQL, [
335
+ logicalSheetId,
336
+ change.fieldName,
337
+ change.previousNormalizedKey.value,
338
+ commit.entityId,
339
+ ]);
340
+ if (retired.changes !== EXPECTED_SINGLE_ROW_CHANGE_COUNT) {
341
+ throw new CanonicalStaleError();
342
+ }
343
+ }
344
+ if (change.nextNormalizedKey.kind === PRESENCE_KINDS.PRESENT) {
345
+ await ensureActiveBusinessKeyWithSql(sql, logicalSheetId, change.fieldName, change.nextNormalizedKey.value, commit.entityId);
346
+ }
347
+ }
348
+ }
349
+ function ensureActiveBusinessKey(db, logicalSheetId, fieldName, normalizedKey, entityId) {
350
+ const existing = db.prepare(READ_ACTIVE_BUSINESS_KEY_SQL)
351
+ .get(logicalSheetId, fieldName, normalizedKey);
352
+ if (existing !== undefined) {
353
+ if (existing.entity_id !== entityId)
354
+ throw new CanonicalStaleError();
355
+ return;
356
+ }
357
+ db.prepare(INSERT_ACTIVE_BUSINESS_KEY_SQL)
358
+ .run(logicalSheetId, fieldName, normalizedKey, entityId);
359
+ }
360
+ /** Ensures one business key is owned by the expected entity through active async SQL. */
361
+ async function ensureActiveBusinessKeyWithSql(sql, logicalSheetId, fieldName, normalizedKey, entityId) {
362
+ const existing = await sql.get(READ_ACTIVE_BUSINESS_KEY_SQL, [
363
+ logicalSheetId,
364
+ fieldName,
365
+ normalizedKey,
366
+ ]);
367
+ if (existing !== undefined) {
368
+ if (existing.entity_id !== entityId)
369
+ throw new CanonicalStaleError();
370
+ return;
371
+ }
372
+ await sql.run(INSERT_ACTIVE_BUSINESS_KEY_SQL, [
373
+ logicalSheetId,
374
+ fieldName,
375
+ normalizedKey,
376
+ entityId,
377
+ ]);
378
+ }
379
+ function rebaseActiveConflicts(db, input, row, mutation, result) {
380
+ if (mutation.commit.kind === ROW_OPERATIONS.DELETE)
381
+ return;
382
+ for (const field of mutation.commit.fields) {
383
+ const nextRevision = result.fieldRevisions.get(field.fieldName);
384
+ if (nextRevision === undefined)
385
+ continue;
386
+ const active = readActiveCandidate(db, input.physicalSheetId, input.batch.projection, row.rowBindingId, field.fieldName);
387
+ if (active.kind === LOOKUP_RESULT_KINDS.NOT_FOUND ||
388
+ active.value.status === CONFLICT_STATUSES.RESOLVED)
389
+ continue;
390
+ db.prepare(REBASE_ACTIVE_CONFLICT_SQL).run(auditJson(field.value), nextRevision, mutation.commitId, input.observation.receivedAt, active.value.active_candidate_conflict_id);
391
+ }
392
+ }
393
+ /** Rebases unresolved candidates affected by a canonical commit through active async SQL. */
394
+ async function rebaseActiveConflictsWithSql(sql, input, row, mutation, result) {
395
+ if (mutation.commit.kind === ROW_OPERATIONS.DELETE)
396
+ return;
397
+ for (const field of mutation.commit.fields) {
398
+ const nextRevision = result.fieldRevisions.get(field.fieldName);
399
+ if (nextRevision === undefined)
400
+ continue;
401
+ const active = await readActiveCandidateWithSql(sql, input.physicalSheetId, input.batch.projection, row.rowBindingId, field.fieldName);
402
+ if (active.kind === LOOKUP_RESULT_KINDS.NOT_FOUND ||
403
+ active.value.status === CONFLICT_STATUSES.RESOLVED)
404
+ continue;
405
+ await sql.run(REBASE_ACTIVE_CONFLICT_SQL, [
406
+ auditJson(field.value),
407
+ nextRevision,
408
+ mutation.commitId,
409
+ input.observation.receivedAt,
410
+ active.value.active_candidate_conflict_id,
411
+ ]);
412
+ }
413
+ }
414
+ function maxCandidateEpoch(db, rowBindingId, fieldName) {
415
+ const row = db.prepare(READ_MAX_CANDIDATE_EPOCH_SQL)
416
+ .get(rowBindingId, fieldName);
417
+ if (row === undefined) {
418
+ throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "candidate epoch aggregate query returned no row");
419
+ }
420
+ const maxEpoch = fromSqlNullable(row.max_epoch);
421
+ return maxEpoch.kind === PRESENCE_KINDS.PRESENT
422
+ ? maxEpoch.value
423
+ : INITIAL_CANDIDATE_EPOCH;
424
+ }
425
+ /** Reads the maximum conflict candidate epoch through the active async SQL transaction. */
426
+ async function maxCandidateEpochWithSql(sql, rowBindingId, fieldName) {
427
+ const row = await sql.get(READ_MAX_CANDIDATE_EPOCH_SQL, [
428
+ rowBindingId,
429
+ fieldName,
430
+ ]);
431
+ if (row === undefined) {
432
+ throw new StorageError(STORAGE_ERROR_CODES.OBSERVATION_STORAGE_INCONSISTENT, "candidate epoch aggregate query returned no row");
433
+ }
434
+ const maxEpoch = fromSqlNullable(row.max_epoch);
435
+ return maxEpoch.kind === PRESENCE_KINDS.PRESENT
436
+ ? maxEpoch.value
437
+ : INITIAL_CANDIDATE_EPOCH;
438
+ }
439
+ //# sourceMappingURL=observationCanonical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observationCanonical.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/observation/observationCanonical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /** Runtime values shared by the observation receipt and append contracts. */
2
+ /** Runtime kinds returned when an observation occurrence is appended. */
3
+ export declare const OBSERVATION_APPEND_RESULT_KINDS: {
4
+ readonly NEW: "new";
5
+ readonly PENDING_REPLAY: "pending_replay";
6
+ readonly DUPLICATE: "duplicate";
7
+ readonly INTEGRITY_COLLISION: "integrity_collision";
8
+ };
9
+ /** Closed set of observation append result kinds. */
10
+ export type ObservationAppendResultKind = (typeof OBSERVATION_APPEND_RESULT_KINDS)[keyof typeof OBSERVATION_APPEND_RESULT_KINDS];
11
+ /** Runtime states persisted for an observation receipt. */
12
+ export declare const OBSERVATION_RECEIPT_STATES: {
13
+ readonly PENDING: "pending";
14
+ readonly EVALUATED: "evaluated";
15
+ readonly DUPLICATE: "duplicate";
16
+ readonly QUARANTINED: "quarantined";
17
+ };
18
+ /** Closed set of observation receipt states. */
19
+ export type ObservationReceiptState = (typeof OBSERVATION_RECEIPT_STATES)[keyof typeof OBSERVATION_RECEIPT_STATES];
20
+ /** Receipt states allowed when an observation is completed. */
21
+ export declare const OBSERVATION_COMPLETION_STATES: {
22
+ readonly EVALUATED: "evaluated";
23
+ readonly DUPLICATE: "duplicate";
24
+ readonly QUARANTINED: "quarantined";
25
+ };
26
+ /** Closed set of terminal observation completion states. */
27
+ export type ObservationCompletionState = (typeof OBSERVATION_COMPLETION_STATES)[keyof typeof OBSERVATION_COMPLETION_STATES];
28
+ /** Runtime kinds returned after one observed row is persisted. */
29
+ export declare const OBSERVATION_WRITE_RESULT_KINDS: {
30
+ readonly FENCED_OUT: "fenced_out";
31
+ readonly STALE: "stale";
32
+ readonly DUPLICATE: "duplicate";
33
+ readonly QUARANTINED: "quarantined";
34
+ readonly PERSISTED: "persisted";
35
+ };
36
+ /** Closed set of one-row observation write result kinds. */
37
+ export type ObservationWriteResultKind = (typeof OBSERVATION_WRITE_RESULT_KINDS)[keyof typeof OBSERVATION_WRITE_RESULT_KINDS];
38
+ /** Runtime reasons why one observation was identified as a duplicate. */
39
+ export declare const OBSERVATION_DUPLICATE_REASONS: {
40
+ readonly OBSERVATION: "observation";
41
+ readonly EVENT: "event";
42
+ readonly CANDIDATE: "candidate";
43
+ };
44
+ /** Closed set of observation duplicate reasons. */
45
+ export type ObservationDuplicateReason = (typeof OBSERVATION_DUPLICATE_REASONS)[keyof typeof OBSERVATION_DUPLICATE_REASONS];
46
+ /** Runtime discriminators for receipt/event identity quarantine records. */
47
+ export declare const OBSERVATION_INTEGRITY_DISCRIMINATORS: {
48
+ readonly OBSERVATION_KEY_PAYLOAD_MISMATCH: "observation_key_payload_mismatch";
49
+ readonly EVENT_KEY_PAYLOAD_MISMATCH: "event_key_payload_mismatch";
50
+ };
51
+ /** Closed set of identity mismatch quarantine discriminators. */
52
+ export type ObservationIntegrityDiscriminator = (typeof OBSERVATION_INTEGRITY_DISCRIMINATORS)[keyof typeof OBSERVATION_INTEGRITY_DISCRIMINATORS];
53
+ //# sourceMappingURL=observationConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observationConstants.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/observation/observationConstants.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,yEAAyE;AACzE,eAAO,MAAM,+BAA+B;;;;;CAKlC,CAAC;AAEX,qDAAqD;AACrD,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,+BAA+B,CAAC,CAAC,MAAM,OAAO,+BAA+B,CAAC,CAAC;AAEzF,2DAA2D;AAC3D,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAEX,gDAAgD;AAChD,MAAM,MAAM,uBAAuB,GACjC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAC;AAE/E,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX,4DAA4D;AAC5D,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,OAAO,6BAA6B,CAAC,CAAC;AAErF,kEAAkE;AAClE,eAAO,MAAM,8BAA8B;;;;;;CAMjC,CAAC;AAEX,4DAA4D;AAC5D,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,OAAO,8BAA8B,CAAC,CAAC;AAEvF,yEAAyE;AACzE,eAAO,MAAM,6BAA6B;;;;CAIhC,CAAC;AAEX,mDAAmD;AACnD,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,OAAO,6BAA6B,CAAC,CAAC;AAErF,4EAA4E;AAC5E,eAAO,MAAM,oCAAoC;;;CAGvC,CAAC;AAEX,iEAAiE;AACjE,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,oCAAoC,CAAC,CAAC,MAAM,OAAO,oCAAoC,CAAC,CAAC"}
@@ -0,0 +1,41 @@
1
+ /** Runtime values shared by the observation receipt and append contracts. */
2
+ /** Runtime kinds returned when an observation occurrence is appended. */
3
+ export const OBSERVATION_APPEND_RESULT_KINDS = {
4
+ NEW: "new",
5
+ PENDING_REPLAY: "pending_replay",
6
+ DUPLICATE: "duplicate",
7
+ INTEGRITY_COLLISION: "integrity_collision",
8
+ };
9
+ /** Runtime states persisted for an observation receipt. */
10
+ export const OBSERVATION_RECEIPT_STATES = {
11
+ PENDING: "pending",
12
+ EVALUATED: "evaluated",
13
+ DUPLICATE: "duplicate",
14
+ QUARANTINED: "quarantined",
15
+ };
16
+ /** Receipt states allowed when an observation is completed. */
17
+ export const OBSERVATION_COMPLETION_STATES = {
18
+ EVALUATED: OBSERVATION_RECEIPT_STATES.EVALUATED,
19
+ DUPLICATE: OBSERVATION_RECEIPT_STATES.DUPLICATE,
20
+ QUARANTINED: OBSERVATION_RECEIPT_STATES.QUARANTINED,
21
+ };
22
+ /** Runtime kinds returned after one observed row is persisted. */
23
+ export const OBSERVATION_WRITE_RESULT_KINDS = {
24
+ FENCED_OUT: "fenced_out",
25
+ STALE: "stale",
26
+ DUPLICATE: "duplicate",
27
+ QUARANTINED: "quarantined",
28
+ PERSISTED: "persisted",
29
+ };
30
+ /** Runtime reasons why one observation was identified as a duplicate. */
31
+ export const OBSERVATION_DUPLICATE_REASONS = {
32
+ OBSERVATION: "observation",
33
+ EVENT: "event",
34
+ CANDIDATE: "candidate",
35
+ };
36
+ /** Runtime discriminators for receipt/event identity quarantine records. */
37
+ export const OBSERVATION_INTEGRITY_DISCRIMINATORS = {
38
+ OBSERVATION_KEY_PAYLOAD_MISMATCH: "observation_key_payload_mismatch",
39
+ EVENT_KEY_PAYLOAD_MISMATCH: "event_key_payload_mismatch",
40
+ };
41
+ //# sourceMappingURL=observationConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observationConstants.js","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/observation/observationConstants.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,yEAAyE;AACzE,MAAM,CAAC,MAAM,+BAA+B,GAAG;IAC7C,GAAG,EAAE,KAAK;IACV,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IACtB,mBAAmB,EAAE,qBAAqB;CAClC,CAAC;AAMX,2DAA2D;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;CAClB,CAAC;AAMX,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,SAAS,EAAE,0BAA0B,CAAC,SAAS;IAC/C,SAAS,EAAE,0BAA0B,CAAC,SAAS;IAC/C,WAAW,EAAE,0BAA0B,CAAC,WAAW;CAC3C,CAAC;AAMX,kEAAkE;AAClE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;CACd,CAAC;AAMX,yEAAyE;AACzE,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,WAAW,EAAE,aAAa;IAC1B,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;CACd,CAAC;AAMX,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oCAAoC,GAAG;IAClD,gCAAgC,EAAE,kCAAkC;IACpE,0BAA0B,EAAE,4BAA4B;CAChD,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Append-only observation and event ledger operations.
3
+ *
4
+ * These helpers run within the observation writer's already-fenced immediate
5
+ * transaction. They do not perform canonical or conflict mutation themselves.
6
+ */
7
+ import { type FieldConflict, type ObservedEditBatch, type ObservedRowChange, type Presence, type LookupResult } from "../../../../domain/index.js";
8
+ import type { DatabaseSyncLike } from "../../sqlite/sqliteBridge.js";
9
+ import type { SqlExecutor } from "../../../../adapter/persistence/contracts/sql.js";
10
+ import { type ObservationCompletionState } from "./observationConstants.js";
11
+ import type { ActiveCandidateRow, CreatedEvent, EventRow, ObservationAppendResult, ObservationAttemptInput, PersistObservedRowInput, RowBindingRow } from "./observationTypes.js";
12
+ /** Appends an observation occurrence and classifies receipt replay semantics. */
13
+ export declare function appendObservation(db: DatabaseSyncLike, batch: ObservedEditBatch, physicalSheetId: string, observation: ObservationAttemptInput): ObservationAppendResult;
14
+ /**
15
+ * Appends an observation occurrence through the active async SQL transaction
16
+ * and classifies receipt replay semantics without leaking SQL nullability.
17
+ */
18
+ export declare function appendObservationWithSql(sql: SqlExecutor, batch: ObservedEditBatch, physicalSheetId: string, observation: ObservationAttemptInput): Promise<ObservationAppendResult>;
19
+ /** Completes the receipt after an event, duplicate, or quarantine outcome. */
20
+ export declare function completeObservation(db: DatabaseSyncLike, logicalSheetId: string, observation: ObservationAttemptInput, eventId: Presence<string>, state: ObservationCompletionState): void;
21
+ /** Completes one observation receipt through the active async SQL transaction. */
22
+ export declare function completeObservationWithSql(sql: SqlExecutor, logicalSheetId: string, observation: ObservationAttemptInput, eventId: Presence<string>, state: ObservationCompletionState): Promise<void>;
23
+ /** Requires the binding identity that makes an event-bearing observation safe. */
24
+ export declare function requireKnownBinding(db: DatabaseSyncLike, logicalSheetId: string, rowBindingId: string): RowBindingRow;
25
+ /** Requires a row binding through the active async SQL transaction. */
26
+ export declare function requireKnownBindingWithSql(sql: SqlExecutor, logicalSheetId: string, rowBindingId: string): Promise<RowBindingRow>;
27
+ /** Finds a duplicate event represented by an unchanged active conflict candidate. */
28
+ export declare function findMatchingCandidateEventId(db: DatabaseSyncLike, input: PersistObservedRowInput, row: ObservedRowChange, binding: RowBindingRow): LookupResult<string>;
29
+ /** Finds an unchanged active conflict candidate through the active async SQL transaction. */
30
+ export declare function findMatchingCandidateEventIdWithSql(sql: SqlExecutor, input: PersistObservedRowInput, row: ObservedRowChange, binding: RowBindingRow): Promise<LookupResult<string>>;
31
+ /** Reads the currently visible unresolved candidate for one row field. */
32
+ export declare function readActiveCandidate(db: DatabaseSyncLike, physicalSheetId: string, projection: string, rowBindingId: string, fieldName: string): LookupResult<ActiveCandidateRow>;
33
+ /** Reads the active candidate through the active async SQL transaction. */
34
+ export declare function readActiveCandidateWithSql(sql: SqlExecutor, physicalSheetId: string, projection: string, rowBindingId: string, fieldName: string): Promise<LookupResult<ActiveCandidateRow>>;
35
+ /** Finds a prior event with the caller-supplied idempotency key. */
36
+ export declare function findEventByKey(db: DatabaseSyncLike, logicalSheetId: string, eventKey: string): LookupResult<EventRow>;
37
+ /** Finds an idempotent event key through the active async SQL transaction. */
38
+ export declare function findEventByKeyWithSql(sql: SqlExecutor, logicalSheetId: string, eventKey: string): Promise<LookupResult<EventRow>>;
39
+ /** Creates the event log, row evidence, and field evidence for one new observation. */
40
+ export declare function createEvent(db: DatabaseSyncLike, input: PersistObservedRowInput, row: ObservedRowChange): CreatedEvent;
41
+ /** Creates the event and its evidence through the active async SQL transaction. */
42
+ export declare function createEventWithSql(sql: SqlExecutor, input: PersistObservedRowInput, row: ObservedRowChange): Promise<CreatedEvent>;
43
+ /** Updates visible hashes after a new event has recorded its observed evidence. */
44
+ export declare function persistObservedHashes(db: DatabaseSyncLike, input: PersistObservedRowInput, row: ObservedRowChange): void;
45
+ /** Updates observed row and field hashes through the active async SQL transaction. */
46
+ export declare function persistObservedHashesWithSql(sql: SqlExecutor, input: PersistObservedRowInput, row: ObservedRowChange): Promise<void>;
47
+ /** Produces the idempotency hash for a visible unresolved field candidate. */
48
+ export declare function candidateHash(conflict: FieldConflict): string;
49
+ //# sourceMappingURL=observationLedger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observationLedger.d.ts","sourceRoot":"","sources":["../../../../../src/infrastructure/storage/state/observation/observationLedger.ts"],"names":[],"mappings":"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"}