hikoutei 0.3.0 → 0.3.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 (368) hide show
  1. package/README.ja.md +13 -21
  2. package/README.ko.md +14 -22
  3. package/README.md +25 -29
  4. package/dist/adapter/persistence/contracts/sql.d.ts +16 -2
  5. package/dist/adapter/persistence/contracts/sql.d.ts.map +1 -1
  6. package/dist/adapter/persistence/contracts/sql.js +11 -1
  7. package/dist/adapter/persistence/contracts/sql.js.map +1 -1
  8. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts +1 -1
  9. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.d.ts.map +1 -1
  10. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js +40 -14
  11. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmScalarPersistenceProvider.js.map +1 -1
  12. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts +2 -0
  13. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.d.ts.map +1 -1
  14. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js +23 -8
  15. package/dist/adapter/persistence/providers/mikro-orm/api/MikroOrmTypedSheetsEntityManager.js.map +1 -1
  16. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +13 -4
  17. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -1
  18. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +12 -2
  19. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js.map +1 -1
  20. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts +21 -0
  21. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts.map +1 -0
  22. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +59 -0
  23. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js.map +1 -0
  24. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.d.ts +14 -13
  25. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.d.ts.map +1 -1
  26. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js +43 -64
  27. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
  28. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.d.ts.map +1 -1
  29. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js +4 -2
  30. package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmTypedSheetsEngine.js.map +1 -1
  31. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -1
  32. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +1 -2
  33. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
  34. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +61 -0
  35. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -0
  36. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +186 -0
  37. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -0
  38. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts +56 -0
  39. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts.map +1 -0
  40. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +275 -0
  41. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -0
  42. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +11 -0
  43. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts.map +1 -0
  44. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +345 -0
  45. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -0
  46. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts +65 -0
  47. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts.map +1 -0
  48. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +51 -0
  49. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -0
  50. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts +36 -0
  51. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts.map +1 -0
  52. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js +126 -0
  53. package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js.map +1 -0
  54. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts +11 -2
  55. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.d.ts.map +1 -1
  56. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js +39 -0
  57. package/dist/adapter/persistence/providers/mikro-orm/storage/MikroOrmSqliteAdapter.js.map +1 -1
  58. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -1
  59. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +46 -35
  60. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -1
  61. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -1
  62. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +22 -4
  63. package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -1
  64. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +2 -0
  65. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -1
  66. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +47 -54
  67. package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -1
  68. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +1 -1
  69. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +6 -30
  70. package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +1 -1
  71. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +1 -0
  72. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -1
  73. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +79 -22
  74. package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -1
  75. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +2 -1
  76. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +1 -1
  77. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +1 -1
  78. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +5 -0
  79. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -1
  80. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +19 -4
  81. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -1
  82. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +5 -6
  83. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +1 -1
  84. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +2 -1
  85. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +1 -1
  86. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +2 -1
  87. package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +1 -1
  88. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +2 -1
  89. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -1
  90. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +15 -19
  91. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -1
  92. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -1
  93. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +44 -30
  94. package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -1
  95. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts +3 -0
  96. package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts.map +1 -0
  97. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js +10 -0
  98. package/dist/adapter/sheets/providers/apps-script-gateway/validation.js.map +1 -0
  99. package/dist/api/Hikoutei.d.ts +17 -50
  100. package/dist/api/Hikoutei.d.ts.map +1 -1
  101. package/dist/api/Hikoutei.js +46 -105
  102. package/dist/api/Hikoutei.js.map +1 -1
  103. package/dist/api/entity.d.ts +9 -10
  104. package/dist/api/entity.d.ts.map +1 -1
  105. package/dist/api/entity.js +20 -26
  106. package/dist/api/entity.js.map +1 -1
  107. package/dist/api/errors.d.ts +0 -6
  108. package/dist/api/errors.d.ts.map +1 -1
  109. package/dist/api/errors.js +0 -6
  110. package/dist/api/errors.js.map +1 -1
  111. package/dist/api/index.d.ts +4 -4
  112. package/dist/api/index.d.ts.map +1 -1
  113. package/dist/api/index.js +2 -2
  114. package/dist/api/index.js.map +1 -1
  115. package/dist/api/internalEntityManager.d.ts.map +1 -1
  116. package/dist/api/internalEntityManager.js +33 -19
  117. package/dist/api/internalEntityManager.js.map +1 -1
  118. package/dist/application/orm/mapping/contracts.d.ts +16 -6
  119. package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
  120. package/dist/application/orm/mapping/definition.d.ts.map +1 -1
  121. package/dist/application/orm/mapping/definition.js +47 -8
  122. package/dist/application/orm/mapping/definition.js.map +1 -1
  123. package/dist/application/orm/mapping/identity.js +1 -1
  124. package/dist/application/orm/mapping/identity.js.map +1 -1
  125. package/dist/application/orm/mapping/projection.d.ts.map +1 -1
  126. package/dist/application/orm/mapping/projection.js +10 -2
  127. package/dist/application/orm/mapping/projection.js.map +1 -1
  128. package/dist/application/orm/mapping/values.d.ts.map +1 -1
  129. package/dist/application/orm/mapping/values.js +5 -35
  130. package/dist/application/orm/mapping/values.js.map +1 -1
  131. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +3 -1
  132. package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
  133. package/dist/application/orm/persistence/flush/flushCoordinator.js +4 -3
  134. package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
  135. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +2 -1
  136. package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
  137. package/dist/application/orm/persistence/projection/projectionEffects.d.ts +3 -1
  138. package/dist/application/orm/persistence/projection/projectionEffects.d.ts.map +1 -1
  139. package/dist/application/orm/persistence/projection/projectionEffects.js +14 -16
  140. package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
  141. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts +6 -6
  142. package/dist/application/orm/persistence/scalar/unitOfWork.d.ts.map +1 -1
  143. package/dist/application/orm/persistence/scalar/unitOfWork.js +28 -28
  144. package/dist/application/orm/persistence/scalar/unitOfWork.js.map +1 -1
  145. package/dist/application/orm/persistence/support/businessKeys.d.ts.map +1 -1
  146. package/dist/application/orm/persistence/support/businessKeys.js +6 -24
  147. package/dist/application/orm/persistence/support/businessKeys.js.map +1 -1
  148. package/dist/application/orm/persistence/support/canonicalState.d.ts.map +1 -1
  149. package/dist/application/orm/persistence/support/canonicalState.js +9 -25
  150. package/dist/application/orm/persistence/support/canonicalState.js.map +1 -1
  151. package/dist/application/orm/persistence/support/contracts.d.ts +0 -57
  152. package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
  153. package/dist/application/orm/persistence/support/contracts.js +0 -68
  154. package/dist/application/orm/persistence/support/contracts.js.map +1 -1
  155. package/dist/application/orm/persistence/support/helpers.d.ts +1 -11
  156. package/dist/application/orm/persistence/support/helpers.d.ts.map +1 -1
  157. package/dist/application/orm/persistence/support/helpers.js +1 -21
  158. package/dist/application/orm/persistence/support/helpers.js.map +1 -1
  159. package/dist/application/sync/gateway/constants.d.ts +2 -1
  160. package/dist/application/sync/gateway/constants.d.ts.map +1 -1
  161. package/dist/application/sync/gateway/constants.js +4 -3
  162. package/dist/application/sync/gateway/constants.js.map +1 -1
  163. package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -1
  164. package/dist/application/sync/gateway/syncGateway.js +9 -28
  165. package/dist/application/sync/gateway/syncGateway.js.map +1 -1
  166. package/dist/application/sync/gateway/validation.d.ts +5 -0
  167. package/dist/application/sync/gateway/validation.d.ts.map +1 -1
  168. package/dist/application/sync/gateway/validation.js +22 -3
  169. package/dist/application/sync/gateway/validation.js.map +1 -1
  170. package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -1
  171. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +3 -23
  172. package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -1
  173. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +2 -0
  174. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
  175. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +24 -6
  176. package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
  177. package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
  178. package/dist/application/sync/outbound/effects/SyncEffectWorker.js +35 -34
  179. package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
  180. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +0 -1
  181. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
  182. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +8 -37
  183. package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
  184. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
  185. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +2 -2
  186. package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
  187. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts +0 -5
  188. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.d.ts.map +1 -1
  189. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +3 -10
  190. package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -1
  191. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
  192. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +13 -21
  193. package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
  194. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +1 -1
  195. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
  196. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +15 -3
  197. package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
  198. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -1
  199. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +1 -10
  200. package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -1
  201. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
  202. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +5 -9
  203. package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
  204. package/dist/application/sync/service/SyncPollingSupervisor.d.ts +45 -0
  205. package/dist/application/sync/service/SyncPollingSupervisor.d.ts.map +1 -0
  206. package/dist/application/sync/service/SyncPollingSupervisor.js +142 -0
  207. package/dist/application/sync/service/SyncPollingSupervisor.js.map +1 -0
  208. package/dist/application/sync/service/SyncServiceBootstrap.d.ts +63 -0
  209. package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -0
  210. package/dist/application/sync/service/SyncServiceBootstrap.js +223 -0
  211. package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -0
  212. package/dist/application/sync/service/contracts.d.ts +25 -0
  213. package/dist/application/sync/service/contracts.d.ts.map +1 -0
  214. package/dist/application/sync/service/contracts.js +3 -0
  215. package/dist/application/sync/service/contracts.js.map +1 -0
  216. package/dist/application/sync/service/errors.d.ts +15 -0
  217. package/dist/application/sync/service/errors.d.ts.map +1 -0
  218. package/dist/application/sync/service/errors.js +16 -0
  219. package/dist/application/sync/service/errors.js.map +1 -0
  220. package/dist/domain/errors/types.d.ts +1 -1
  221. package/dist/domain/errors/types.d.ts.map +1 -1
  222. package/dist/domain/errors/types.js +2 -2
  223. package/dist/domain/errors/types.js.map +1 -1
  224. package/dist/domain/evaluate/constants.d.ts +1 -1
  225. package/dist/domain/evaluate/constants.d.ts.map +1 -1
  226. package/dist/domain/evaluate/constants.js.map +1 -1
  227. package/dist/domain/evaluate/preconditions.d.ts.map +1 -1
  228. package/dist/domain/evaluate/preconditions.js +25 -32
  229. package/dist/domain/evaluate/preconditions.js.map +1 -1
  230. package/dist/domain/evaluate/quarantine.js +4 -1
  231. package/dist/domain/evaluate/quarantine.js.map +1 -1
  232. package/dist/domain/model/constants.d.ts +48 -0
  233. package/dist/domain/model/constants.d.ts.map +1 -1
  234. package/dist/domain/model/constants.js +38 -0
  235. package/dist/domain/model/constants.js.map +1 -1
  236. package/dist/domain/model/index.d.ts +2 -2
  237. package/dist/domain/model/index.d.ts.map +1 -1
  238. package/dist/domain/model/index.js +1 -1
  239. package/dist/domain/model/index.js.map +1 -1
  240. package/dist/domain/model/types.d.ts +13 -10
  241. package/dist/domain/model/types.d.ts.map +1 -1
  242. package/dist/infrastructure/storage/constants.d.ts +1 -1
  243. package/dist/infrastructure/storage/constants.d.ts.map +1 -1
  244. package/dist/infrastructure/storage/constants.js.map +1 -1
  245. package/dist/infrastructure/storage/errors.d.ts +2 -2
  246. package/dist/infrastructure/storage/errors.d.ts.map +1 -1
  247. package/dist/infrastructure/storage/errors.js +3 -5
  248. package/dist/infrastructure/storage/errors.js.map +1 -1
  249. package/dist/infrastructure/storage/index.d.ts +9 -5
  250. package/dist/infrastructure/storage/index.d.ts.map +1 -1
  251. package/dist/infrastructure/storage/index.js +3 -1
  252. package/dist/infrastructure/storage/index.js.map +1 -1
  253. package/dist/infrastructure/storage/sqlite/migrateSchema.js +9 -4
  254. package/dist/infrastructure/storage/sqlite/migrateSchema.js.map +1 -1
  255. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts +9 -0
  256. package/dist/infrastructure/storage/state/canonical/canonicalCommit.d.ts.map +1 -1
  257. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +35 -36
  258. package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
  259. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts +8 -1
  260. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts.map +1 -1
  261. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js +14 -0
  262. package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js.map +1 -1
  263. package/dist/infrastructure/storage/state/observation/observationAudit.d.ts.map +1 -1
  264. package/dist/infrastructure/storage/state/observation/observationAudit.js +4 -1
  265. package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -1
  266. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts +11 -1
  267. package/dist/infrastructure/storage/state/observation/observationCanonical.d.ts.map +1 -1
  268. package/dist/infrastructure/storage/state/observation/observationCanonical.js +108 -0
  269. package/dist/infrastructure/storage/state/observation/observationCanonical.js.map +1 -1
  270. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts +36 -1
  271. package/dist/infrastructure/storage/state/observation/observationQuarantine.d.ts.map +1 -1
  272. package/dist/infrastructure/storage/state/observation/observationQuarantine.js +55 -0
  273. package/dist/infrastructure/storage/state/observation/observationQuarantine.js.map +1 -1
  274. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +22 -0
  275. package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -1
  276. package/dist/infrastructure/storage/state/observation/observationTypes.js +5 -0
  277. package/dist/infrastructure/storage/state/observation/observationTypes.js.map +1 -1
  278. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts +1 -1
  279. package/dist/infrastructure/storage/state/observation/observationValidation.d.ts.map +1 -1
  280. package/dist/infrastructure/storage/state/observation/observationValidation.js +26 -0
  281. package/dist/infrastructure/storage/state/observation/observationValidation.js.map +1 -1
  282. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts +1 -1
  283. package/dist/infrastructure/storage/state/observation/observationWriter.d.ts.map +1 -1
  284. package/dist/infrastructure/storage/state/observation/observationWriter.js +5 -1
  285. package/dist/infrastructure/storage/state/observation/observationWriter.js.map +1 -1
  286. package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
  287. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +3 -2
  288. package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
  289. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts +1 -5
  290. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.d.ts.map +1 -1
  291. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js +3 -43
  292. package/dist/infrastructure/storage/state/resolution/resolutionWriterHelpers.js.map +1 -1
  293. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +1 -1
  294. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
  295. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +2 -4
  296. package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
  297. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +2 -2
  298. package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
  299. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +20 -10
  300. package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
  301. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +33 -18
  302. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
  303. package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
  304. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +1 -1
  305. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
  306. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +2 -4
  307. package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
  308. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +6 -2
  309. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -1
  310. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +157 -14
  311. package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -1
  312. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.d.ts +1 -1
  313. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.d.ts.map +1 -1
  314. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js +14 -1
  315. package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js.map +1 -1
  316. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +2 -1
  317. package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -1
  318. package/dist/infrastructure/storage/sync/shared/syncRegistry.js +4 -1
  319. package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -1
  320. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts +4 -0
  321. package/dist/infrastructure/storage/sync/shared/writerLease.d.ts.map +1 -1
  322. package/dist/infrastructure/storage/sync/shared/writerLease.js +9 -0
  323. package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -1
  324. package/dist/shared/constants.d.ts +4 -4
  325. package/dist/shared/constants.d.ts.map +1 -1
  326. package/dist/shared/constants.js.map +1 -1
  327. package/dist/shared/encoding/index.d.ts +1 -0
  328. package/dist/shared/encoding/index.d.ts.map +1 -1
  329. package/dist/shared/encoding/index.js +1 -0
  330. package/dist/shared/encoding/index.js.map +1 -1
  331. package/dist/shared/encoding/normalizedCell.d.ts +4 -0
  332. package/dist/shared/encoding/normalizedCell.d.ts.map +1 -0
  333. package/dist/shared/encoding/normalizedCell.js +29 -0
  334. package/dist/shared/encoding/normalizedCell.js.map +1 -0
  335. package/dist/shared/encoding/stableEncode.d.ts +2 -1
  336. package/dist/shared/encoding/stableEncode.d.ts.map +1 -1
  337. package/dist/shared/encoding/stableEncode.js +6 -12
  338. package/dist/shared/encoding/stableEncode.js.map +1 -1
  339. package/dist/shared/identity/index.d.ts +3 -0
  340. package/dist/shared/identity/index.d.ts.map +1 -0
  341. package/dist/shared/identity/index.js +2 -0
  342. package/dist/shared/identity/index.js.map +1 -0
  343. package/dist/shared/identity/types.d.ts +41 -0
  344. package/dist/shared/identity/types.d.ts.map +1 -0
  345. package/dist/shared/identity/types.js +34 -0
  346. package/dist/shared/identity/types.js.map +1 -0
  347. package/dist/shared/index.d.ts +1 -0
  348. package/dist/shared/index.d.ts.map +1 -1
  349. package/dist/shared/index.js +1 -0
  350. package/dist/shared/index.js.map +1 -1
  351. package/dist/shared/state/constructors.d.ts +10 -0
  352. package/dist/shared/state/constructors.d.ts.map +1 -0
  353. package/dist/shared/state/constructors.js +18 -0
  354. package/dist/shared/state/constructors.js.map +1 -0
  355. package/dist/shared/state/index.d.ts +1 -0
  356. package/dist/shared/state/index.d.ts.map +1 -1
  357. package/dist/shared/state/index.js +1 -0
  358. package/dist/shared/state/index.js.map +1 -1
  359. package/dist/shared/validation.d.ts +2 -0
  360. package/dist/shared/validation.d.ts.map +1 -1
  361. package/dist/shared/validation.js +9 -0
  362. package/dist/shared/validation.js.map +1 -1
  363. package/docs/architecture.md +108 -103
  364. package/docs/ci.md +184 -61
  365. package/docs/mikro-orm-adapter-spike.md +55 -214
  366. package/docs/quick-start.md +58 -96
  367. package/docs/write-and-synchronization-flow.md +70 -39
  368. package/package.json +1 -1
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Polls User_Input projections and applies accepted edits to the local entity
3
+ * table through the observation writer.
4
+ *
5
+ * The gateway is treated as an untrusted observation source: only rows with a
6
+ * known SQLite business key and literal/blank cells are promoted. Canonical
7
+ * state, field revisions, conflict candidates, and the System_State outbox
8
+ * remain the durable source of truth.
9
+ */
10
+ import { SYNC_GATEWAY_PROJECTIONS, SYNC_GATEWAY_SNAPSHOT_READ_MODES, } from "../../../../../application/sync/gateway/constants.js";
11
+ import { observeSyncSnapshots, } from "../../../../../application/sync/gateway/syncGateway.js";
12
+ import { createTypedSheetsEntityMappingRegistry, requireTypedSheetsEntityProjection, } from "../../../../../application/orm/mapping/entityMapping.js";
13
+ import { resolveTypedSheetsEntityWriterOptions } from "../../../../../application/orm/persistence/flush/flushCoordinator.js";
14
+ import { claimWriterLeaseWithAdapter, WRITER_LEASE_CLAIM_RESULT_KINDS, } from "../../../../../infrastructure/storage/index.js";
15
+ import { TypedSheetsOrmError, TYPED_SHEETS_ORM_ERROR_CODES } from "../../../../../application/orm/errors.js";
16
+ import { readMappedPollingRows, } from "./MikroOrmUserInputPollingSql.js";
17
+ import { buildPollingState, } from "./MikroOrmUserInputPollingState.js";
18
+ import { inspectSnapshot, } from "./MikroOrmUserInputPollingInspection.js";
19
+ import { persistInvalidPollingRows, persistPreparedRows, } from "./MikroOrmUserInputPollingPersistence.js";
20
+ export { MAPPED_USER_INPUT_INVALID_REASONS } from "./MikroOrmUserInputPollingInspection.js";
21
+ /**
22
+ * Observes mapped User_Input tabs and applies each established row
23
+ * independently. New rows are intentionally left for the insert workflow.
24
+ */
25
+ export async function pollMappedUserInputWithMikroOrm(options) {
26
+ const startedAt = Date.now();
27
+ const mappings = selectMappings(options.mappings, options.physicalSheetIds);
28
+ if (mappings.length === 0)
29
+ return emptyReport(startedAt);
30
+ const requests = mappings.map(toSnapshotRequest);
31
+ const observed = await observeSyncSnapshots(options.gateway, requests);
32
+ assertObservationCount(observed, mappings.length);
33
+ const state = await readMappedPollingState(options.storage, mappings);
34
+ const accumulators = mappings.map((mapping) => createAccumulator(mapping));
35
+ const prepared = prepareObservedRows(mappings, observed, state, accumulators);
36
+ await persistPreparedRowsIfNeeded(options, state, prepared.preparedRows, prepared.invalidRows, accumulators);
37
+ return createPollingReport(startedAt, accumulators);
38
+ }
39
+ function assertObservationCount(observed, expectedCount) {
40
+ if (observed.length === expectedCount)
41
+ return;
42
+ throw new TypedSheetsOrmError(TYPED_SHEETS_ORM_ERROR_CODES.INVALID_ENTITY_MAPPING, "User_Input observation result count does not match the requested mappings.");
43
+ }
44
+ function prepareObservedRows(mappings, observed, state, accumulators) {
45
+ const preparedRows = [];
46
+ const invalidRows = [];
47
+ for (const [index, mapping] of mappings.entries()) {
48
+ const observation = observed[index];
49
+ const accumulator = accumulators[index];
50
+ if (observation === undefined || accumulator === undefined)
51
+ continue;
52
+ const invalidSnapshotRows = inspectSnapshot(mapping, observation, state, accumulator, preparedRows);
53
+ accumulator.invalidRows += invalidSnapshotRows.length;
54
+ invalidRows.push(...invalidSnapshotRows);
55
+ }
56
+ return { preparedRows, invalidRows };
57
+ }
58
+ async function persistPreparedRowsIfNeeded(options, state, preparedRows, invalidRows, accumulators) {
59
+ if (preparedRows.length === 0 && invalidRows.length === 0)
60
+ return;
61
+ const writer = resolveTypedSheetsEntityWriterOptions(options.writer);
62
+ const fence = await claimMappedInboundWriterLease(options.storage, writer);
63
+ await persistInvalidPollingRows(options.storage, writer, fence, invalidRows, accumulators);
64
+ await persistPreparedRows(options.storage, writer, fence, state, preparedRows, accumulators);
65
+ }
66
+ async function claimMappedInboundWriterLease(storage, writer) {
67
+ const now = writer.now();
68
+ const claim = await claimWriterLeaseWithAdapter(storage, {
69
+ role: writer.role,
70
+ writerId: writer.writerId,
71
+ leaseDurationMs: writer.leaseDurationMs,
72
+ now,
73
+ });
74
+ if (claim.kind !== WRITER_LEASE_CLAIM_RESULT_KINDS.CLAIMED) {
75
+ throw new TypedSheetsOrmError(TYPED_SHEETS_ORM_ERROR_CODES.WRITER_LEASE_UNAVAILABLE, `mapped inbound writer lease is unavailable: ${claim.reason}.`);
76
+ }
77
+ return {
78
+ role: claim.lease.role,
79
+ writerEpoch: claim.lease.writerEpoch,
80
+ fencingToken: claim.lease.fencingToken,
81
+ now,
82
+ };
83
+ }
84
+ function createPollingReport(startedAt, accumulators) {
85
+ const sheets = accumulators.map(toSheetReport);
86
+ return {
87
+ elapsedMs: Date.now() - startedAt,
88
+ sheets,
89
+ rowsScanned: sum(sheets, (sheet) => sheet.rowsScanned),
90
+ changedRows: sum(sheets, (sheet) => sheet.changedRows),
91
+ appliedRows: sum(sheets, (sheet) => sheet.appliedRows),
92
+ conflictRows: sum(sheets, (sheet) => sheet.conflictRows),
93
+ quarantinedRows: sum(sheets, (sheet) => sheet.quarantinedRows),
94
+ duplicateRows: sum(sheets, (sheet) => sheet.duplicateRows),
95
+ staleRows: sum(sheets, (sheet) => sheet.staleRows),
96
+ fencedRows: sum(sheets, (sheet) => sheet.fencedRows),
97
+ invalidRows: sum(sheets, (sheet) => sheet.invalidRows),
98
+ unknownBusinessKeyRows: sum(sheets, (sheet) => sheet.unknownBusinessKeyRows),
99
+ duplicateBusinessKeyRows: sum(sheets, (sheet) => sheet.duplicateBusinessKeyRows),
100
+ };
101
+ }
102
+ function selectMappings(input, physicalSheetIds) {
103
+ const registry = "findByEntityName" in input
104
+ ? input
105
+ : createTypedSheetsEntityMappingRegistry(input);
106
+ const selected = physicalSheetIds === undefined
107
+ ? undefined
108
+ : new Set(physicalSheetIds);
109
+ return registry.mappings.filter((mapping) => {
110
+ const projection = mapping.projections.find((candidate) => candidate.projection === SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
111
+ return projection !== undefined && (selected === undefined || selected.has(projection.physicalSheetId));
112
+ });
113
+ }
114
+ function toSnapshotRequest(mapping) {
115
+ const projection = requireTypedSheetsEntityProjection(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
116
+ return {
117
+ physicalSheetId: projection.physicalSheetId,
118
+ sheetName: projection.tabName,
119
+ registeredRange: projection.registeredRange,
120
+ projection: SYNC_GATEWAY_PROJECTIONS.USER_INPUT,
121
+ schemaVersion: mapping.schemaVersion,
122
+ // Polling must retain formula/merge/error metadata so invalid cells are
123
+ // quarantined instead of being mistaken for literal user edits.
124
+ readMode: SYNC_GATEWAY_SNAPSHOT_READ_MODES.FULL,
125
+ };
126
+ }
127
+ async function readMappedPollingState(storage, mappings) {
128
+ return storage.read(async ({ sql }) => {
129
+ const rows = await readMappedPollingRows(sql, mappings);
130
+ return buildPollingState(rows.bindings, rows.entities, rows.fields, rows.businessKeys, rows.conflicts, rows.visible);
131
+ });
132
+ }
133
+ function createAccumulator(mapping) {
134
+ return {
135
+ mapping,
136
+ rowsScanned: 0,
137
+ changedRows: 0,
138
+ appliedRows: 0,
139
+ conflictRows: 0,
140
+ quarantinedRows: 0,
141
+ duplicateRows: 0,
142
+ staleRows: 0,
143
+ fencedRows: 0,
144
+ invalidRows: 0,
145
+ unknownBusinessKeyRows: 0,
146
+ duplicateBusinessKeyRows: 0,
147
+ };
148
+ }
149
+ function toSheetReport(accumulator) {
150
+ return {
151
+ physicalSheetId: requireTypedSheetsEntityProjection(accumulator.mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT).physicalSheetId,
152
+ logicalSheetId: accumulator.mapping.logicalSheetId,
153
+ rowsScanned: accumulator.rowsScanned,
154
+ changedRows: accumulator.changedRows,
155
+ appliedRows: accumulator.appliedRows,
156
+ conflictRows: accumulator.conflictRows,
157
+ quarantinedRows: accumulator.quarantinedRows,
158
+ duplicateRows: accumulator.duplicateRows,
159
+ staleRows: accumulator.staleRows,
160
+ fencedRows: accumulator.fencedRows,
161
+ invalidRows: accumulator.invalidRows,
162
+ unknownBusinessKeyRows: accumulator.unknownBusinessKeyRows,
163
+ duplicateBusinessKeyRows: accumulator.duplicateBusinessKeyRows,
164
+ };
165
+ }
166
+ function emptyReport(startedAt) {
167
+ return {
168
+ elapsedMs: Date.now() - startedAt,
169
+ sheets: [],
170
+ rowsScanned: 0,
171
+ changedRows: 0,
172
+ appliedRows: 0,
173
+ conflictRows: 0,
174
+ quarantinedRows: 0,
175
+ duplicateRows: 0,
176
+ staleRows: 0,
177
+ fencedRows: 0,
178
+ invalidRows: 0,
179
+ unknownBusinessKeyRows: 0,
180
+ duplicateBusinessKeyRows: 0,
181
+ };
182
+ }
183
+ function sum(values, read) {
184
+ return values.reduce((total, value) => total + read(value), 0);
185
+ }
186
+ //# sourceMappingURL=MikroOrmUserInputPolling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MikroOrmUserInputPolling.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EACL,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EACL,oBAAoB,GACrB,MAAM,wDAAwD,CAAC;AAKhE,OAAO,EACL,sCAAsC,EACtC,kCAAkC,GACnC,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,qCAAqC,EAAE,MAAM,sEAAsE,CAAC;AAK7H,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,GAEhC,MAAM,gDAAgD,CAAC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAE7G,OAAO,EACL,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,iBAAiB,GAElB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,eAAe,GAIhB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,yCAAyC,CAAC;AA8C5F;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAA+C;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9E,MAAM,2BAA2B,CAC/B,OAAO,EACP,KAAK,EACL,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,WAAW,EACpB,YAAY,CACb,CAAC;IACF,OAAO,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAyC,EACzC,aAAqB;IAErB,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa;QAAE,OAAO;IAC9C,MAAM,IAAI,mBAAmB,CAC3B,4BAA4B,CAAC,sBAAsB,EACnD,4EAA4E,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,QAA6C,EAC7C,QAAyC,EACzC,KAAyB,EACzB,YAAyC;IAEzC,MAAM,YAAY,GAAkB,EAAE,CAAC;IACvC,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;YAAE,SAAS;QACrE,MAAM,mBAAmB,GAAG,eAAe,CACzC,OAAO,EACP,WAAW,EACX,KAAK,EACL,WAAW,EACX,YAAY,CACb,CAAC;QACF,WAAW,CAAC,WAAW,IAAI,mBAAmB,CAAC,MAAM,CAAC;QACtD,WAAW,CAAC,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,OAA+C,EAC/C,KAAyB,EACzB,YAAoC,EACpC,WAAkC,EAClC,YAAyC;IAEzC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAClE,MAAM,MAAM,GAAG,qCAAqC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3E,MAAM,yBAAyB,CAC7B,OAAO,CAAC,OAAO,EACf,MAAM,EACN,KAAK,EACL,WAAW,EACX,YAAY,CACb,CAAC;IACF,MAAM,mBAAmB,CACvB,OAAO,CAAC,OAAO,EACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,CACb,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,OAA8B,EAC9B,MAA6B;IAE7B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE;QACvD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,GAAG;KACJ,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,IAAI,mBAAmB,CAC3B,4BAA4B,CAAC,wBAAwB,EACrD,+CAA+C,KAAK,CAAC,MAAM,GAAG,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;QACtB,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;QACpC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY;QACtC,GAAG;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAAiB,EACjB,YAAyC;IAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QACjC,MAAM;QACN,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;QACtD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;QACtD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;QACtD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;QACxD,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;QAC9D,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;QAC1D,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QAClD,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;QACpD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;QACtD,sBAAsB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAC5E,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,KAA6E,EAC7E,gBAA+C;IAE/C,MAAM,QAAQ,GAAG,kBAAkB,IAAI,KAAK;QAC1C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,gBAAgB,KAAK,SAAS;QAC7C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CACzC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,wBAAwB,CAAC,UAAU,CAC5E,CAAC;QACF,OAAO,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAiC;IAC1D,MAAM,UAAU,GAAG,kCAAkC,CACnD,OAAO,EACP,wBAAwB,CAAC,UAAU,CACpC,CAAC;IACF,OAAO;QACL,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,SAAS,EAAE,UAAU,CAAC,OAAO;QAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,UAAU,EAAE,wBAAwB,CAAC,UAAU;QAC/C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,wEAAwE;QACxE,gEAAgE;QAChE,QAAQ,EAAE,gCAAgC,CAAC,IAAI;KACvC,CAAC;AACb,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA0B,EAC1B,QAA6C;IAE7C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxD,OAAO,iBAAiB,CACtB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAiC;IAC1D,OAAO;QACL,OAAO;QACP,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,sBAAsB,EAAE,CAAC;QACzB,wBAAwB,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,WAA6B;IAClD,OAAO;QACL,eAAe,EAAE,kCAAkC,CACjD,WAAW,CAAC,OAAO,EACnB,wBAAwB,CAAC,UAAU,CACpC,CAAC,eAAe;QACjB,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc;QAClD,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,eAAe,EAAE,WAAW,CAAC,eAAe;QAC5C,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;QAC1D,wBAAwB,EAAE,WAAW,CAAC,wBAAwB;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QACjC,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,CAAC;QAClB,aAAa,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,sBAAsB,EAAE,CAAC;QACzB,wBAAwB,EAAE,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAI,MAAoB,EAAE,IAA0B;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,56 @@
1
+ /** Validates observed User_Input rows and prepares accepted entity changes. */
2
+ import { type ObservedExistingRowChange } from "../../../../../domain/index.js";
3
+ import type { SyncGatewaySnapshot, SyncObservedSnapshot, SyncSnapshotRow } from "../../../../../application/sync/gateway/syncGateway.js";
4
+ import { type TypedSheetsEntityFieldMapping, type TypedSheetsEntityMapping } from "../../../../../application/orm/mapping/entityMapping.js";
5
+ import { type EntityStateRecord, type MappedPollingState, type RowBindingStateRecord } from "./MikroOrmUserInputPollingState.js";
6
+ /** Stable reasons for a User_Input row that cannot enter the evaluator. */
7
+ export declare const MAPPED_USER_INPUT_INVALID_REASONS: {
8
+ readonly UNKNOWN_BUSINESS_KEY: "unknown_business_key";
9
+ readonly DUPLICATE_BUSINESS_KEY: "duplicate_business_key";
10
+ readonly NON_LITERAL_CELL: "non_literal_cell";
11
+ readonly FORMULA_CELL: "formula_cell";
12
+ readonly MERGED_CELL: "merged_cell";
13
+ readonly ERROR_CELL: "error_cell";
14
+ readonly MISSING_CELL: "missing_cell";
15
+ readonly INVALID_CELL: "invalid_cell";
16
+ readonly MISSING_CANONICAL_STATE: "missing_canonical_state";
17
+ readonly PRIMARY_KEY_MUTATION: "primary_key_mutation";
18
+ };
19
+ export type MappedUserInputInvalidReason = (typeof MAPPED_USER_INPUT_INVALID_REASONS)[keyof typeof MAPPED_USER_INPUT_INVALID_REASONS];
20
+ export interface PreparedRow {
21
+ readonly mapping: TypedSheetsEntityMapping;
22
+ readonly snapshot: SyncGatewaySnapshot;
23
+ readonly snapshotHash: string;
24
+ readonly snapshotRow: SyncSnapshotRow;
25
+ readonly binding: RowBindingStateRecord;
26
+ readonly canonical: EntityStateRecord;
27
+ readonly row: ObservedExistingRowChange;
28
+ }
29
+ export interface InvalidRow {
30
+ readonly mapping: TypedSheetsEntityMapping;
31
+ readonly snapshot: SyncGatewaySnapshot;
32
+ readonly snapshotRow: SyncSnapshotRow;
33
+ readonly rowNumber: number;
34
+ readonly reason: MappedUserInputInvalidReason;
35
+ }
36
+ export interface SheetAccumulator {
37
+ readonly mapping: TypedSheetsEntityMapping;
38
+ rowsScanned: number;
39
+ changedRows: number;
40
+ appliedRows: number;
41
+ conflictRows: number;
42
+ quarantinedRows: number;
43
+ duplicateRows: number;
44
+ staleRows: number;
45
+ fencedRows: number;
46
+ invalidRows: number;
47
+ unknownBusinessKeyRows: number;
48
+ duplicateBusinessKeyRows: number;
49
+ }
50
+ /** Inspects one projection snapshot and appends changed rows to the batch. */
51
+ export declare function inspectSnapshot(mapping: TypedSheetsEntityMapping, observed: SyncObservedSnapshot, state: MappedPollingState, accumulator: SheetAccumulator, preparedRows: PreparedRow[]): readonly InvalidRow[];
52
+ /** Derives duplicate business-key values from one normalized snapshot. */
53
+ export declare function duplicateBusinessKeysForSnapshot(snapshot: SyncGatewaySnapshot, businessKey: TypedSheetsEntityFieldMapping): ReadonlySet<string>;
54
+ /** Computes the stable snapshot identity used by observation deduplication. */
55
+ export declare function snapshotHash(snapshot: SyncGatewaySnapshot): string;
56
+ //# sourceMappingURL=MikroOrmUserInputPollingInspection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MikroOrmUserInputPollingInspection.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAQL,KAAK,yBAAyB,EAC/B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAEpB,eAAe,EAChB,MAAM,wDAAwD,CAAC;AAKhE,OAAO,EAGL,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC9B,MAAM,yDAAyD,CAAC;AAMjE,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAE3B,MAAM,oCAAoC,CAAC;AAG5C,2EAA2E;AAC3E,eAAO,MAAM,iCAAiC;;;;;;;;;;;CAWpC,CAAC;AAEX,MAAM,MAAM,4BAA4B,GACtC,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,OAAO,iCAAiC,CAAC,CAAC;AAE7F,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE,yBAAyB,CAAC;CACzC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAcD,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,WAAW,EAAE,GAC1B,SAAS,UAAU,EAAE,CA8CvB;AAyND,0EAA0E;AAC1E,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,6BAA6B,GACzC,WAAW,CAAC,MAAM,CAAC,CAerB;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAmBlE"}
@@ -0,0 +1,275 @@
1
+ /** Validates observed User_Input rows and prepares accepted entity changes. */
2
+ import { APPLICABILITY_KINDS, CELL_OBSERVATION_KINDS, FIELD_OWNERSHIPS, ROW_BINDING_STATES, ROW_OPERATIONS, stableHash, } from "../../../../../domain/index.js";
3
+ import { SYNC_GATEWAY_PROJECTIONS, SYNC_GATEWAY_PROTOCOL_VERSIONS, } from "../../../../../application/sync/gateway/constants.js";
4
+ import { requireTypedSheetsEntityProjection, typedSheetsEntityProjectionHeaders, } from "../../../../../application/orm/mapping/entityMapping.js";
5
+ import { TYPED_SHEETS_ORM_ERROR_CODES, TypedSheetsOrmError, } from "../../../../../application/orm/errors.js";
6
+ import { isCanonicalUtcIsoDate } from "../../../../../shared/validation.js";
7
+ import { NORMALIZED_CELL_KINDS } from "../../../../../shared/encoding/constants.js";
8
+ /** Stable reasons for a User_Input row that cannot enter the evaluator. */
9
+ export const MAPPED_USER_INPUT_INVALID_REASONS = {
10
+ UNKNOWN_BUSINESS_KEY: "unknown_business_key",
11
+ DUPLICATE_BUSINESS_KEY: "duplicate_business_key",
12
+ NON_LITERAL_CELL: "non_literal_cell",
13
+ FORMULA_CELL: "formula_cell",
14
+ MERGED_CELL: "merged_cell",
15
+ ERROR_CELL: "error_cell",
16
+ MISSING_CELL: "missing_cell",
17
+ INVALID_CELL: "invalid_cell",
18
+ MISSING_CANONICAL_STATE: "missing_canonical_state",
19
+ PRIMARY_KEY_MUTATION: "primary_key_mutation",
20
+ };
21
+ /** Inspects one projection snapshot and appends changed rows to the batch. */
22
+ export function inspectSnapshot(mapping, observed, state, accumulator, preparedRows) {
23
+ const snapshot = observed.snapshot;
24
+ const projection = requireTypedSheetsEntityProjection(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
25
+ const expectedHeaders = typedSheetsEntityProjectionHeaders(mapping, SYNC_GATEWAY_PROJECTIONS.USER_INPUT);
26
+ validateSnapshotRoute(mapping, snapshot, expectedHeaders, projection);
27
+ const observedSnapshotHash = snapshotHash(snapshot);
28
+ const businessKeyField = mapping.businessKey;
29
+ const duplicateBusinessKeys = duplicateBusinessKeysForSnapshot(snapshot, businessKeyField);
30
+ const byBusinessKey = state.businessKeysByLogicalAndField
31
+ .get(mapping.logicalSheetId)
32
+ ?.get(businessKeyField.fieldName) ?? new Map();
33
+ const byEntityId = state.bindingsByEntityId.get(mapping.logicalSheetId) ?? new Map();
34
+ const visibleByBinding = state.visibleRevisionsByPhysicalAndBinding.get(projection.physicalSheetId)
35
+ ?? new Map();
36
+ const context = {
37
+ mapping,
38
+ snapshot,
39
+ snapshotHash: observedSnapshotHash,
40
+ businessKeyField,
41
+ duplicateBusinessKeys,
42
+ byBusinessKey,
43
+ byEntityId,
44
+ entitiesById: state.entitiesById,
45
+ visibleByBinding,
46
+ };
47
+ const invalidRows = [];
48
+ for (const snapshotRow of snapshot.rows) {
49
+ accumulator.rowsScanned += 1;
50
+ const result = inspectSnapshotRow(context, snapshotRow);
51
+ if (result.kind === "invalid") {
52
+ countInvalidRow(accumulator, result.invalid.reason);
53
+ invalidRows.push(result.invalid);
54
+ continue;
55
+ }
56
+ if (result.kind === "unchanged")
57
+ continue;
58
+ accumulator.changedRows += 1;
59
+ preparedRows.push(result.prepared);
60
+ }
61
+ return invalidRows;
62
+ }
63
+ function inspectSnapshotRow(context, snapshotRow) {
64
+ const invalid = (reason) => ({
65
+ kind: "invalid",
66
+ invalid: {
67
+ mapping: context.mapping,
68
+ snapshot: context.snapshot,
69
+ snapshotRow,
70
+ rowNumber: snapshotRow.rowNumber,
71
+ reason,
72
+ },
73
+ });
74
+ const identityCell = snapshotRow.cells[context.businessKeyField.fieldName];
75
+ const identityValidation = validateSnapshotCell(context.businessKeyField, identityCell);
76
+ if (identityValidation !== undefined)
77
+ return invalid(identityValidation);
78
+ const identity = identityCell?.normalizedCell;
79
+ if (identity === null || identity === undefined) {
80
+ return invalid(MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL);
81
+ }
82
+ const normalizedBusinessKey = stableHash(identity);
83
+ if (context.duplicateBusinessKeys.has(normalizedBusinessKey)) {
84
+ return invalid(MAPPED_USER_INPUT_INVALID_REASONS.DUPLICATE_BUSINESS_KEY);
85
+ }
86
+ const entityId = context.byBusinessKey.get(normalizedBusinessKey);
87
+ if (entityId === undefined) {
88
+ return invalid(MAPPED_USER_INPUT_INVALID_REASONS.UNKNOWN_BUSINESS_KEY);
89
+ }
90
+ const binding = context.byEntityId.get(entityId);
91
+ if (binding === undefined || binding.entityId === null) {
92
+ return invalid(MAPPED_USER_INPUT_INVALID_REASONS.UNKNOWN_BUSINESS_KEY);
93
+ }
94
+ const canonical = context.entitiesById.get(binding.entityId);
95
+ if (binding.state !== ROW_BINDING_STATES.ACTIVE ||
96
+ canonical === undefined ||
97
+ canonical.status !== "active") {
98
+ return invalid(MAPPED_USER_INPUT_INVALID_REASONS.MISSING_CANONICAL_STATE);
99
+ }
100
+ const row = normalizeExistingRow(context.mapping, snapshotRow, binding, canonical, context.visibleByBinding.get(binding.rowBindingId));
101
+ if (row.kind === "invalid")
102
+ return invalid(row.reason);
103
+ if (row.kind === "unchanged")
104
+ return row;
105
+ return {
106
+ kind: "changed",
107
+ prepared: {
108
+ mapping: context.mapping,
109
+ snapshot: context.snapshot,
110
+ snapshotHash: context.snapshotHash,
111
+ snapshotRow,
112
+ binding,
113
+ canonical,
114
+ row: row.row,
115
+ },
116
+ };
117
+ }
118
+ function countInvalidRow(accumulator, reason) {
119
+ if (reason === MAPPED_USER_INPUT_INVALID_REASONS.DUPLICATE_BUSINESS_KEY) {
120
+ accumulator.duplicateBusinessKeyRows += 1;
121
+ }
122
+ if (reason === MAPPED_USER_INPUT_INVALID_REASONS.UNKNOWN_BUSINESS_KEY) {
123
+ accumulator.unknownBusinessKeyRows += 1;
124
+ }
125
+ }
126
+ function normalizeExistingRow(mapping, snapshotRow, binding, canonical, visibleState) {
127
+ const beforeFields = new Map();
128
+ const afterFields = new Map();
129
+ const changes = [];
130
+ let changed = false;
131
+ const userFields = mapping.fields.filter((field) => field.ownership === FIELD_OWNERSHIPS.USER);
132
+ // If canonical state advanced after the row was materialized, the exact
133
+ // field baseline is unavailable, so force evaluator conflict handling.
134
+ const forceConflict = visibleState === undefined ||
135
+ visibleState.confirmedEntityRevision === null ||
136
+ visibleState.confirmedEntityRevision < canonical.entityRevision;
137
+ for (const field of userFields) {
138
+ const canonicalField = canonical.fields.get(field.fieldName);
139
+ if (canonicalField === undefined) {
140
+ return { kind: "invalid", reason: MAPPED_USER_INPUT_INVALID_REASONS.MISSING_CANONICAL_STATE };
141
+ }
142
+ const observedCell = snapshotRow.cells[field.fieldName];
143
+ const validation = validateSnapshotCell(field, observedCell);
144
+ if (validation !== undefined)
145
+ return { kind: "invalid", reason: validation };
146
+ const nextValue = observedCell.normalizedCell;
147
+ const baseFieldRevision = {
148
+ kind: APPLICABILITY_KINDS.APPLICABLE,
149
+ value: forceConflict ? 0 : canonicalField.fieldRevision,
150
+ };
151
+ beforeFields.set(field.fieldName, {
152
+ fieldName: field.fieldName,
153
+ cell: canonicalField.value,
154
+ baseFieldRevision,
155
+ });
156
+ afterFields.set(field.fieldName, {
157
+ fieldName: field.fieldName,
158
+ cell: nextValue,
159
+ baseFieldRevision,
160
+ });
161
+ if (stableHash(canonicalField.value) === stableHash(nextValue))
162
+ continue;
163
+ if (field.property === mapping.primaryKey) {
164
+ return { kind: "invalid", reason: MAPPED_USER_INPUT_INVALID_REASONS.PRIMARY_KEY_MUTATION };
165
+ }
166
+ changed = true;
167
+ changes.push({
168
+ fieldName: field.fieldName,
169
+ previousValue: canonicalField.value,
170
+ nextValue,
171
+ baseFieldRevision: forceConflict ? 0 : canonicalField.fieldRevision,
172
+ });
173
+ }
174
+ if (!changed)
175
+ return { kind: "unchanged" };
176
+ return {
177
+ kind: "changed",
178
+ row: {
179
+ rowBindingId: binding.rowBindingId,
180
+ operation: ROW_OPERATIONS.UPDATE,
181
+ beforeRow: { rowBindingId: binding.rowBindingId, fields: beforeFields },
182
+ afterRow: { rowBindingId: binding.rowBindingId, fields: afterFields },
183
+ baseVisibleRevision: visibleState?.confirmedVisibleRevision ?? 0,
184
+ ...(visibleState === undefined ? {} : { baseVisibleHash: visibleState.confirmedVisibleHash }),
185
+ baseEntityRevision: canonical.entityRevision,
186
+ fields: changes,
187
+ },
188
+ };
189
+ }
190
+ function validateSnapshotCell(field, cell) {
191
+ if (cell === undefined)
192
+ return MAPPED_USER_INPUT_INVALID_REASONS.MISSING_CELL;
193
+ if (cell.cellKind === CELL_OBSERVATION_KINDS.FORMULA) {
194
+ return MAPPED_USER_INPUT_INVALID_REASONS.FORMULA_CELL;
195
+ }
196
+ if (cell.cellKind === CELL_OBSERVATION_KINDS.MERGED) {
197
+ return MAPPED_USER_INPUT_INVALID_REASONS.MERGED_CELL;
198
+ }
199
+ if (cell.cellKind === CELL_OBSERVATION_KINDS.ERROR) {
200
+ return MAPPED_USER_INPUT_INVALID_REASONS.ERROR_CELL;
201
+ }
202
+ if (cell.cellKind !== CELL_OBSERVATION_KINDS.LITERAL && cell.cellKind !== CELL_OBSERVATION_KINDS.BLANK) {
203
+ return MAPPED_USER_INPUT_INVALID_REASONS.NON_LITERAL_CELL;
204
+ }
205
+ if (cell.cellKind === CELL_OBSERVATION_KINDS.BLANK && cell.normalizedCell !== null) {
206
+ return MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL;
207
+ }
208
+ const value = cell.normalizedCell;
209
+ if (value === null) {
210
+ return field.required ? MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL : undefined;
211
+ }
212
+ if (value.kind !== field.cellKind)
213
+ return MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL;
214
+ switch (value.kind) {
215
+ case NORMALIZED_CELL_KINDS.STRING:
216
+ return field.required && value.value.length === 0
217
+ ? MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL
218
+ : undefined;
219
+ case NORMALIZED_CELL_KINDS.NUMBER:
220
+ return Number.isFinite(value.value) ? undefined : MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL;
221
+ case NORMALIZED_CELL_KINDS.BOOLEAN:
222
+ return undefined;
223
+ case NORMALIZED_CELL_KINDS.DATE:
224
+ return isCanonicalUtcIsoDate(value.value) ? undefined : MAPPED_USER_INPUT_INVALID_REASONS.INVALID_CELL;
225
+ }
226
+ }
227
+ function validateSnapshotRoute(mapping, snapshot, expectedHeaders, projection) {
228
+ if (snapshot.protocolVersion !== SYNC_GATEWAY_PROTOCOL_VERSIONS.V1 ||
229
+ snapshot.sheetName !== projection.tabName ||
230
+ snapshot.registeredRange !== projection.registeredRange ||
231
+ snapshot.projection !== SYNC_GATEWAY_PROJECTIONS.USER_INPUT ||
232
+ snapshot.schemaVersion !== mapping.schemaVersion ||
233
+ snapshot.headers.length !== expectedHeaders.length ||
234
+ snapshot.headers.some((header, index) => header !== expectedHeaders[index])) {
235
+ throw new TypedSheetsOrmError(TYPED_SHEETS_ORM_ERROR_CODES.INVALID_ENTITY_MAPPING, `User_Input snapshot does not match the registered route ${projection.physicalSheetId}.`);
236
+ }
237
+ }
238
+ /** Derives duplicate business-key values from one normalized snapshot. */
239
+ export function duplicateBusinessKeysForSnapshot(snapshot, businessKey) {
240
+ const rowsByBusinessKey = new Map();
241
+ for (const row of snapshot.rows) {
242
+ const cell = row.cells[businessKey.fieldName];
243
+ if (cell === undefined || cell.normalizedCell === null)
244
+ continue;
245
+ const key = stableHash(cell.normalizedCell);
246
+ const rowNumbers = rowsByBusinessKey.get(key) ?? [];
247
+ rowNumbers.push(row.rowNumber);
248
+ rowsByBusinessKey.set(key, rowNumbers);
249
+ }
250
+ return new Set([...rowsByBusinessKey.entries()]
251
+ .filter(([, rowNumbers]) => rowNumbers.length > 1)
252
+ .map(([businessKeyValue]) => businessKeyValue));
253
+ }
254
+ /** Computes the stable snapshot identity used by observation deduplication. */
255
+ export function snapshotHash(snapshot) {
256
+ return stableHash({
257
+ protocolVersion: snapshot.protocolVersion,
258
+ sheetName: snapshot.sheetName,
259
+ registeredRange: snapshot.registeredRange,
260
+ projection: snapshot.projection,
261
+ schemaVersion: snapshot.schemaVersion,
262
+ headers: snapshot.headers,
263
+ rows: snapshot.rows.map((row) => ({
264
+ rowNumber: row.rowNumber,
265
+ cells: Object.entries(row.cells)
266
+ .sort(([left], [right]) => left.localeCompare(right))
267
+ .map(([fieldName, cell]) => ({
268
+ fieldName,
269
+ cellKind: cell.cellKind,
270
+ normalizedCell: cell.normalizedCell,
271
+ })),
272
+ })),
273
+ });
274
+ }
275
+ //# sourceMappingURL=MikroOrmUserInputPollingInspection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MikroOrmUserInputPollingInspection.js","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,UAAU,GAGX,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,EACL,kCAAkC,EAClC,kCAAkC,GAGnC,MAAM,yDAAyD,CAAC;AACjE,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAO5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAEpF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;CACpC,CAAC;AAkDX,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAC7B,OAAiC,EACjC,QAA8B,EAC9B,KAAyB,EACzB,WAA6B,EAC7B,YAA2B;IAE3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,MAAM,UAAU,GAAG,kCAAkC,CACnD,OAAO,EACP,wBAAwB,CAAC,UAAU,CACpC,CAAC;IACF,MAAM,eAAe,GAAG,kCAAkC,CACxD,OAAO,EACP,wBAAwB,CAAC,UAAU,CACpC,CAAC;IACF,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,oBAAoB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAC7C,MAAM,qBAAqB,GAAG,gCAAgC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,KAAK,CAAC,6BAA6B;SACtD,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5B,EAAE,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IACrF,MAAM,gBAAgB,GAAG,KAAK,CAAC,oCAAoC,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC;WAC9F,IAAI,GAAG,EAAE,CAAC;IACf,MAAM,OAAO,GAAiC;QAC5C,OAAO;QACP,QAAQ;QACR,YAAY,EAAE,oBAAoB;QAClC,gBAAgB;QAChB,qBAAqB;QACrB,aAAa;QACb,UAAU;QACV,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,gBAAgB;KACjB,CAAC;IACF,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,KAAK,MAAM,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpD,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC1C,WAAW,CAAC,WAAW,IAAI,CAAC,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAOD,SAAS,kBAAkB,CACzB,OAAqC,EACrC,WAA4B;IAE5B,MAAM,OAAO,GAAG,CAAC,MAAoC,EAA+B,EAAE,CAAC,CAAC;QACtF,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW;YACX,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,MAAM;SACP;KACF,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IACxF,IAAI,kBAAkB,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,YAAY,EAAE,cAAc,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,qBAAqB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,iCAAiC,CAAC,sBAAsB,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,iCAAiC,CAAC,oBAAoB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACvD,OAAO,OAAO,CAAC,iCAAiC,CAAC,oBAAoB,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,IACE,OAAO,CAAC,KAAK,KAAK,kBAAkB,CAAC,MAAM;QAC3C,SAAS,KAAK,SAAS;QACvB,SAAS,CAAC,MAAM,KAAK,QAAQ,EAC7B,CAAC;QACD,OAAO,OAAO,CAAC,iCAAiC,CAAC,uBAAuB,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,GAAG,GAAG,oBAAoB,CAC9B,OAAO,CAAC,OAAO,EACf,WAAW,EACX,OAAO,EACP,SAAS,EACT,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CACnD,CAAC;IACF,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW;YACX,OAAO;YACP,SAAS;YACT,GAAG,EAAE,GAAG,CAAC,GAAG;SACb;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,WAA6B,EAC7B,MAAoC;IAEpC,IAAI,MAAM,KAAK,iCAAiC,CAAC,sBAAsB,EAAE,CAAC;QACxE,WAAW,CAAC,wBAAwB,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM,KAAK,iCAAiC,CAAC,oBAAoB,EAAE,CAAC;QACtE,WAAW,CAAC,sBAAsB,IAAI,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAOD,SAAS,oBAAoB,CAC3B,OAAiC,EACjC,WAA4B,EAC5B,OAA8B,EAC9B,SAA4B,EAC5B,YAAgD;IAEhD,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC3D,MAAM,WAAW,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC1D,MAAM,OAAO,GAA2F,EAAE,CAAC;IAC3G,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/F,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,aAAa,GAAG,YAAY,KAAK,SAAS;QAC9C,YAAY,CAAC,uBAAuB,KAAK,IAAI;QAC7C,YAAY,CAAC,uBAAuB,GAAG,SAAS,CAAC,cAAc,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,iCAAiC,CAAC,uBAAuB,EAAE,CAAC;QAChG,CAAC;QACD,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC7E,MAAM,SAAS,GAAG,YAAa,CAAC,cAAc,CAAC;QAC/C,MAAM,iBAAiB,GAAG;YACxB,IAAI,EAAE,mBAAmB,CAAC,UAAU;YACpC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa;SAC/C,CAAC;QACX,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;YAChC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,cAAc,CAAC,KAAK;YAC1B,iBAAiB;SAClB,CAAC,CAAC;QACH,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE;YAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,SAAS;YACf,iBAAiB;SAClB,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QACzE,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,iCAAiC,CAAC,oBAAoB,EAAE,CAAC;QAC7F,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,cAAc,CAAC,KAAK;YACnC,SAAS;YACT,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,aAAa;SACpE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,SAAS;QACf,GAAG,EAAE;YACH,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,cAAc,CAAC,MAAM;YAChC,SAAS,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE;YACvE,QAAQ,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE;YACrE,mBAAmB,EAAE,YAAY,EAAE,wBAAwB,IAAI,CAAC;YAChE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,YAAY,CAAC,oBAAoB,EAAE,CAAC;YAC7F,kBAAkB,EAAE,SAAS,CAAC,cAAc;YAC5C,MAAM,EAAE,OAAO;SAChB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoC,EACpC,IAAkC;IAElC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,iCAAiC,CAAC,YAAY,CAAC;IAC9E,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,OAAO,EAAE,CAAC;QACrD,OAAO,iCAAiC,CAAC,YAAY,CAAC;IACxD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,iCAAiC,CAAC,WAAW,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACnD,OAAO,iCAAiC,CAAC,UAAU,CAAC;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACvG,OAAO,iCAAiC,CAAC,gBAAgB,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,sBAAsB,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACnF,OAAO,iCAAiC,CAAC,YAAY,CAAC;IACxD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;IAClC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ;QAAE,OAAO,iCAAiC,CAAC,YAAY,CAAC;IACzF,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,qBAAqB,CAAC,MAAM;YAC/B,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC/C,CAAC,CAAC,iCAAiC,CAAC,YAAY;gBAChD,CAAC,CAAC,SAAS,CAAC;QAChB,KAAK,qBAAqB,CAAC,MAAM;YAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,YAAY,CAAC;QACnG,KAAK,qBAAqB,CAAC,OAAO;YAChC,OAAO,SAAS,CAAC;QACnB,KAAK,qBAAqB,CAAC,IAAI;YAC7B,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,YAAY,CAAC;IAC3G,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAAiC,EACjC,QAA6B,EAC7B,eAAkC,EAClC,UAAiE;IAEjE,IACE,QAAQ,CAAC,eAAe,KAAK,8BAA8B,CAAC,EAAE;QAC9D,QAAQ,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO;QACzC,QAAQ,CAAC,eAAe,KAAK,UAAU,CAAC,eAAe;QACvD,QAAQ,CAAC,UAAU,KAAK,wBAAwB,CAAC,UAAU;QAC3D,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC,aAAa;QAChD,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM;QAClD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC,EAC3E,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,4BAA4B,CAAC,sBAAsB,EACnD,2DAA2D,UAAU,CAAC,eAAe,GAAG,CACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gCAAgC,CAC9C,QAA6B,EAC7B,WAA0C;IAE1C,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAoB,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI;YAAE,SAAS;QACjE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,IAAI,GAAG,CACZ,CAAC,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CACjD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,QAA6B;IACxD,OAAO,UAAU,CAAC;QAChB,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;iBAC7B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACpD,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;SACN,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Turns prepared User_Input changes into evaluator and storage mutations. */
2
+ import type { ResolvedWriterOptions } from "../../../../../application/orm/persistence/support/contracts.js";
3
+ import { type FencingContext } from "../../../../../infrastructure/storage/index.js";
4
+ import type { MikroOrmSqliteAdapter } from "../storage/MikroOrmSqliteAdapter.js";
5
+ import { type InvalidRow, type PreparedRow, type SheetAccumulator } from "./MikroOrmUserInputPollingInspection.js";
6
+ import { type MappedPollingState } from "./MikroOrmUserInputPollingState.js";
7
+ /** Persists invalid polling evidence without mutating canonical entity state. */
8
+ export declare function persistInvalidPollingRows(storage: MikroOrmSqliteAdapter, writer: ResolvedWriterOptions, fence: FencingContext, rows: readonly InvalidRow[], accumulators: readonly SheetAccumulator[]): Promise<void>;
9
+ /** Persists each prepared row independently under the claimed writer fence. */
10
+ export declare function persistPreparedRows(storage: MikroOrmSqliteAdapter, writer: ResolvedWriterOptions, fence: FencingContext, state: MappedPollingState, rows: readonly PreparedRow[], accumulators: readonly SheetAccumulator[]): Promise<void>;
11
+ //# sourceMappingURL=MikroOrmUserInputPollingPersistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MikroOrmUserInputPollingPersistence.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAiC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AAC7G,OAAO,EAOL,KAAK,cAAc,EAIpB,MAAM,gDAAgD,CAAC;AAGxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EACL,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,oCAAoC,CAAC;AAG5C,iFAAiF;AACjF,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,SAAS,UAAU,EAAE,EAC3B,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAmDf;AAED,+EAA+E;AAC/E,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,qBAAqB,EAC7B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,SAAS,WAAW,EAAE,EAC5B,YAAY,EAAE,SAAS,gBAAgB,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAgBf"}