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,345 @@
1
+ /**
2
+ * Fenced outbox worker for projection effects.
3
+ *
4
+ * It owns only claim/result transitions. Canonical state and any repair
5
+ * replan payload are supplied by the writer boundary; the gateway is never
6
+ * allowed to choose a winner or silently retry a response-lost write.
7
+ */
8
+ import { randomUUID } from "node:crypto";
9
+ import { EMPTY_STRING_LENGTH_ZERO, NON_NEGATIVE_SAFE_INTEGER_MINIMUM, POSITIVE_SAFE_INTEGER_MINIMUM, } from "../../../../domain/index.js";
10
+ import { LOOKUP_RESULT_KINDS, } from "../../../../shared/state/constants.js";
11
+ import { applyEffectResultWithAdapter, claimEffectWithAdapter, claimWriterLeaseWithAdapter, recoverExpiredLeasesWithAdapter, listReadyEffectsWithAdapter, releaseUnprocessedEffectWithAdapter, retryClaimedEffectWithAdapter, supersedeAndReplanWithAdapter, } from "../../../../infrastructure/storage/index.js";
12
+ import { SYNC_GATEWAY_EFFECT_RESULT_STATUSES, } from "../../gateway/constants.js";
13
+ import { WRITER_LEASE_CLAIM_RESULT_KINDS } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
14
+ import { SYNC_TIMING_SCOPES, } from "../../telemetry/syncTiming.js";
15
+ import { DEFAULT_EFFECT_LEASE_DURATION_MS, DEFAULT_WORKER_ROLE, DEFAULT_WRITER_LEASE_DURATION_MS, OUTBOX_EFFECT_STATUSES, USER_INPUT_CANDIDATE_BLOCK_SQL, WORKER_ERROR_CODES, } from "./SyncEffectWorkerConstants.js";
16
+ import { absentValue, isAbsent, isPresent, lookupResult, presentValue, safeErrorMessage, throwWorkerError, } from "./SyncEffectWorkerHelpers.js";
17
+ import { countsForItems, countsForPendingEffects, emptyOperationCounts, emitGatewayTiming, emitWorkerTiming, operationKindsForItems, operationKindsForPendingEffects, operationKindsForCounts, } from "./SyncEffectWorkerTiming.js";
18
+ import { completeFailure, completeGatewayResult, recoverUnknownResults, } from "./SyncEffectWorkerTransitions.js";
19
+ import { dispatchFastAppendGroup, rejectUnsupportedGatewayEffects, } from "./SyncEffectWorkerDispatch.js";
20
+ import { fenceFromLease, groupByFastAppendRequest, groupByGatewayRequest, isCandidateProtectingUserInputEffect, isFastAppendCandidate, isSuccessfulGatewayPostcondition, toGatewayEffect, } from "./SyncEffectWorkerRouting.js";
21
+ /**
22
+ * Processes effects through an adapter-owned SQL connection.
23
+ *
24
+ * This is the MikroORM-compatible worker entrypoint. It never opens the
25
+ * legacy synchronous `node:sqlite` database beside the ORM connection.
26
+ */
27
+ export async function runSyncEffectWorkerWithAdapter(options) {
28
+ return runEffectWorker(options, createAdapterEffectWorkerStorage(options.storage));
29
+ }
30
+ async function runEffectWorker(options, storage) {
31
+ const passStartedAt = Date.now();
32
+ validateOptions(options);
33
+ const role = options.writerRole ?? DEFAULT_WORKER_ROLE;
34
+ const leaseDuration = options.writerLeaseDurationMs ?? DEFAULT_WRITER_LEASE_DURATION_MS;
35
+ const effectLeaseDuration = options.effectLeaseDurationMs ?? DEFAULT_EFFECT_LEASE_DURATION_MS;
36
+ const leaseStartedAt = Date.now();
37
+ const claimResult = await storage.claimWriterLease({
38
+ role,
39
+ writerId: options.workerId,
40
+ leaseDurationMs: leaseDuration,
41
+ now: options.now,
42
+ });
43
+ if (claimResult.kind !== WRITER_LEASE_CLAIM_RESULT_KINDS.CLAIMED) {
44
+ const report = mutableReport(absentValue());
45
+ emitWorkerTiming(options, {
46
+ scope: SYNC_TIMING_SCOPES.WORKER,
47
+ phase: "writer_lease_claim",
48
+ durationMs: Date.now() - leaseStartedAt,
49
+ operationKinds: [],
50
+ operationCounts: emptyOperationCounts(),
51
+ });
52
+ emitWorkerTiming(options, {
53
+ scope: SYNC_TIMING_SCOPES.WORKER,
54
+ phase: "worker_total",
55
+ durationMs: Date.now() - passStartedAt,
56
+ operationKinds: [],
57
+ operationCounts: emptyOperationCounts(),
58
+ });
59
+ return freezeReport(report);
60
+ }
61
+ const report = mutableReport(presentValue(claimResult.lease));
62
+ emitWorkerTiming(options, {
63
+ scope: SYNC_TIMING_SCOPES.WORKER,
64
+ phase: "writer_lease_claim",
65
+ durationMs: Date.now() - leaseStartedAt,
66
+ operationKinds: [],
67
+ operationCounts: emptyOperationCounts(),
68
+ });
69
+ const fence = fenceFromLease(claimResult.lease, options.now);
70
+ const selectStartedAt = Date.now();
71
+ report.expiredLeasesRecovered = await storage.recoverExpiredLeases(fence);
72
+ const selected = await storage.listReadyEffects(options.maxEffects);
73
+ report.selected = selected.length;
74
+ emitWorkerTiming(options, {
75
+ scope: SYNC_TIMING_SCOPES.WORKER,
76
+ phase: "recover_and_select",
77
+ durationMs: Date.now() - selectStartedAt,
78
+ operationKinds: operationKindsForPendingEffects(selected),
79
+ operationCounts: countsForPendingEffects(selected),
80
+ });
81
+ const claimed = [];
82
+ const recoveryCandidates = [];
83
+ const claimEffectsStartedAt = Date.now();
84
+ for (const pending of selected) {
85
+ const claimToken = "claim:" + randomUUID();
86
+ const claim = await storage.claimEffect({
87
+ ...fence,
88
+ effectId: pending.effect_id,
89
+ claimToken,
90
+ leaseDurationMs: effectLeaseDuration,
91
+ });
92
+ if (!claim.success)
93
+ continue;
94
+ report.claimed += 1;
95
+ let gatewayEffect;
96
+ let invalidPayloadError;
97
+ try {
98
+ gatewayEffect = presentValue(toGatewayEffect(pending));
99
+ invalidPayloadError = absentValue();
100
+ }
101
+ catch (error) {
102
+ gatewayEffect = absentValue();
103
+ invalidPayloadError = presentValue(safeErrorMessage(error));
104
+ }
105
+ const item = { pending, claimToken, gatewayEffect, invalidPayloadError };
106
+ if (pending.status === OUTBOX_EFFECT_STATUSES.FAILED) {
107
+ recoveryCandidates.push(item);
108
+ continue;
109
+ }
110
+ claimed.push(item);
111
+ }
112
+ emitWorkerTiming(options, {
113
+ scope: SYNC_TIMING_SCOPES.WORKER,
114
+ phase: "effect_claims",
115
+ durationMs: Date.now() - claimEffectsStartedAt,
116
+ operationKinds: operationKindsForItems([...claimed, ...recoveryCandidates]),
117
+ operationCounts: countsForItems([...claimed, ...recoveryCandidates]),
118
+ });
119
+ const fullGateway = isFullEffectGateway(options.gateway);
120
+ if (fullGateway === undefined) {
121
+ await rejectUnsupportedGatewayEffects(storage, fence, recoveryCandidates, report);
122
+ }
123
+ else {
124
+ await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, recoveryCandidates, report);
125
+ }
126
+ const usable = claimed.filter((item) => isPresent(item.gatewayEffect));
127
+ for (const invalid of claimed.filter((item) => isAbsent(item.gatewayEffect))) {
128
+ await completeFailure(storage, fence, invalid, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, invalid.invalidPayloadError, report);
129
+ }
130
+ // A User_Input reconcile or physical delete is safe only while no unresolved
131
+ // user candidate owns one of its fields. This local gate runs before the
132
+ // remote CAS so stale canonical work cannot erase a candidate merely because
133
+ // its Sheet baseline happens to still look unchanged.
134
+ const dispatchable = [];
135
+ const candidateGateStartedAt = Date.now();
136
+ for (const item of usable) {
137
+ if (!(await storage.isUserInputCandidateBlocked(item))) {
138
+ dispatchable.push(item);
139
+ continue;
140
+ }
141
+ if (await storage.applyEffectResult({
142
+ ...fence,
143
+ effectId: item.pending.effect_id,
144
+ claimToken: item.claimToken,
145
+ status: OUTBOX_EFFECT_STATUSES.BLOCKED_CANDIDATE,
146
+ lastErrorCode: presentValue(WORKER_ERROR_CODES.ACTIVE_CANDIDATE_PRESERVED),
147
+ lastErrorMessage: presentValue("An unresolved User_Input candidate owns a projected field."),
148
+ })) {
149
+ report.blockedCandidate += 1;
150
+ }
151
+ }
152
+ emitWorkerTiming(options, {
153
+ scope: SYNC_TIMING_SCOPES.WORKER,
154
+ phase: "candidate_gate",
155
+ durationMs: Date.now() - candidateGateStartedAt,
156
+ operationKinds: operationKindsForItems(usable),
157
+ operationCounts: countsForItems(usable),
158
+ });
159
+ const fastAppendItems = dispatchable.filter(isFastAppendCandidate);
160
+ const regularItems = dispatchable.filter((item) => !isFastAppendCandidate(item));
161
+ for (const group of groupByFastAppendRequest(fastAppendItems)) {
162
+ await dispatchFastAppendGroup(options, storage, fence, group, report);
163
+ }
164
+ if (fullGateway === undefined) {
165
+ await rejectUnsupportedGatewayEffects(storage, fence, regularItems, report);
166
+ }
167
+ else {
168
+ for (const group of groupByGatewayRequest(regularItems)) {
169
+ const deferredEffectIds = new Set();
170
+ let response;
171
+ const regularOperationCounts = countsForItems(group.items);
172
+ const regularOperationKinds = operationKindsForCounts(regularOperationCounts);
173
+ const gatewayStartedAt = Date.now();
174
+ try {
175
+ response = await fullGateway.applyEffects(group.request);
176
+ }
177
+ catch {
178
+ emitWorkerTiming(options, {
179
+ scope: SYNC_TIMING_SCOPES.WORKER,
180
+ phase: "regular_gateway_dispatch",
181
+ durationMs: Date.now() - gatewayStartedAt,
182
+ operationKinds: regularOperationKinds,
183
+ operationCounts: regularOperationCounts,
184
+ });
185
+ // Remote side may have written the effect before transport failed.
186
+ await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, group.items, report);
187
+ continue;
188
+ }
189
+ emitGatewayTiming(options, response.timing);
190
+ emitWorkerTiming(options, {
191
+ scope: SYNC_TIMING_SCOPES.WORKER,
192
+ phase: "regular_gateway_dispatch",
193
+ durationMs: Date.now() - gatewayStartedAt,
194
+ operationKinds: regularOperationKinds,
195
+ operationCounts: regularOperationCounts,
196
+ });
197
+ const resultPersistenceStartedAt = Date.now();
198
+ const byEffectId = new Map(response.results.map((result) => [result.effectId, result]));
199
+ for (const item of group.items) {
200
+ const result = lookupResult(byEffectId.get(item.pending.effect_id));
201
+ if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND && response.hasMore) {
202
+ if (await storage.releaseUnprocessedEffect({
203
+ ...fence,
204
+ effectId: item.pending.effect_id,
205
+ claimToken: item.claimToken,
206
+ })) {
207
+ report.deferred += 1;
208
+ deferredEffectIds.add(item.pending.effect_id);
209
+ }
210
+ }
211
+ }
212
+ const recoveryItems = [];
213
+ for (const item of group.items) {
214
+ const result = lookupResult(byEffectId.get(item.pending.effect_id));
215
+ if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND &&
216
+ deferredEffectIds.has(item.pending.effect_id))
217
+ continue;
218
+ if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND ||
219
+ result.value.payloadHash !== item.pending.payload_hash) {
220
+ recoveryItems.push(item);
221
+ continue;
222
+ }
223
+ if ((result.value.status === SYNC_GATEWAY_EFFECT_RESULT_STATUSES.APPLIED ||
224
+ result.value.status === SYNC_GATEWAY_EFFECT_RESULT_STATUSES.ALREADY_APPLIED) &&
225
+ (!isSuccessfulGatewayPostcondition(result.value.postcondition) ||
226
+ !isPresent(result.value.visibleRevision) ||
227
+ !isPresent(result.value.visibleHash) ||
228
+ !isPresent(item.gatewayEffect) ||
229
+ result.value.visibleHash.value !== item.gatewayEffect.value.payload.targetVisibleHash)) {
230
+ // A success label without the acknowledged target state is not enough
231
+ // to close a durable effect. Treat it like a lost response and read
232
+ // back first.
233
+ recoveryItems.push(item);
234
+ continue;
235
+ }
236
+ await completeGatewayResult(options, storage, fence, item, result.value, report);
237
+ }
238
+ await recoverUnknownResults({ ...options, gateway: fullGateway }, storage, fence, recoveryItems, report);
239
+ emitWorkerTiming(options, {
240
+ scope: SYNC_TIMING_SCOPES.WORKER,
241
+ phase: "regular_result_persistence",
242
+ durationMs: Date.now() - resultPersistenceStartedAt,
243
+ operationKinds: regularOperationKinds,
244
+ operationCounts: regularOperationCounts,
245
+ });
246
+ }
247
+ }
248
+ emitWorkerTiming(options, {
249
+ scope: SYNC_TIMING_SCOPES.WORKER,
250
+ phase: "worker_total",
251
+ durationMs: Date.now() - passStartedAt,
252
+ operationKinds: operationKindsForItems(dispatchable),
253
+ operationCounts: countsForItems(dispatchable),
254
+ });
255
+ return freezeReport(report);
256
+ }
257
+ function createAdapterEffectWorkerStorage(storage) {
258
+ return {
259
+ claimWriterLease: (options) => claimWriterLeaseWithAdapter(storage, options),
260
+ recoverExpiredLeases: (fence) => recoverExpiredLeasesWithAdapter(storage, fence),
261
+ listReadyEffects: (limit) => listReadyEffectsWithAdapter(storage, limit),
262
+ claimEffect: (options) => claimEffectWithAdapter(storage, options),
263
+ applyEffectResult: (options) => applyEffectResultWithAdapter(storage, options),
264
+ releaseUnprocessedEffect: (options) => releaseUnprocessedEffectWithAdapter(storage, options),
265
+ retryClaimedEffect: (options) => retryClaimedEffectWithAdapter(storage, options),
266
+ supersedeAndReplan: (fence, oldEffectId, newEffect) => {
267
+ return supersedeAndReplanWithAdapter(storage, fence, oldEffectId, newEffect);
268
+ },
269
+ isUserInputCandidateBlocked: (item) => {
270
+ return storage.read(({ sql }) => isUserInputCandidateBlockedWithSql(sql, item));
271
+ },
272
+ };
273
+ }
274
+ async function isUserInputCandidateBlockedWithSql(sql, item) {
275
+ const effect = item.gatewayEffect;
276
+ if (!isPresent(effect) ||
277
+ !isCandidateProtectingUserInputEffect(effect.value) ||
278
+ !isPresent(effect.value.rowBindingId)) {
279
+ return false;
280
+ }
281
+ const fieldNames = Object.keys(effect.value.payload.fields);
282
+ if (fieldNames.length === 0)
283
+ return true;
284
+ const placeholders = fieldNames.map(() => "?").join(", ");
285
+ const blockSql = USER_INPUT_CANDIDATE_BLOCK_SQL.replace("__FIELD_NAMES__", placeholders);
286
+ const row = await sql.get(blockSql, [
287
+ effect.value.physicalSheetId,
288
+ effect.value.rowBindingId.value,
289
+ ...fieldNames,
290
+ ]);
291
+ return row !== undefined;
292
+ }
293
+ /** Returns the full gateway only when every regular recovery capability exists. */
294
+ function isFullEffectGateway(gateway) {
295
+ const candidate = gateway;
296
+ if (typeof candidate.applyEffects !== "function" ||
297
+ typeof candidate.readEffectPostcondition !== "function" ||
298
+ typeof candidate.readEffectPostconditions !== "function") {
299
+ return undefined;
300
+ }
301
+ return gateway;
302
+ }
303
+ function mutableReport(lease) {
304
+ return {
305
+ lease,
306
+ expiredLeasesRecovered: 0,
307
+ selected: 0,
308
+ claimed: 0,
309
+ applied: 0,
310
+ blockedCandidate: 0,
311
+ superseded: 0,
312
+ conflicted: 0,
313
+ failed: 0,
314
+ deferred: 0,
315
+ requeued: 0,
316
+ replanned: 0,
317
+ responseLossRecovered: 0,
318
+ };
319
+ }
320
+ function freezeReport(report) {
321
+ return { ...report };
322
+ }
323
+ function validateOptions(options) {
324
+ if (options.workerId.length === EMPTY_STRING_LENGTH_ZERO) {
325
+ throwWorkerError("effect worker ID is required");
326
+ }
327
+ if (!Number.isSafeInteger(options.now) ||
328
+ options.now < NON_NEGATIVE_SAFE_INTEGER_MINIMUM) {
329
+ throwWorkerError("effect worker time must be a non-negative safe integer");
330
+ }
331
+ if (!Number.isSafeInteger(options.maxEffects) ||
332
+ options.maxEffects < POSITIVE_SAFE_INTEGER_MINIMUM) {
333
+ throwWorkerError("effect worker maxEffects must be a positive safe integer");
334
+ }
335
+ for (const [name, value] of [
336
+ ["writerLeaseDurationMs", options.writerLeaseDurationMs],
337
+ ["effectLeaseDurationMs", options.effectLeaseDurationMs],
338
+ ]) {
339
+ if (value !== undefined &&
340
+ (!Number.isSafeInteger(value) || value < POSITIVE_SAFE_INTEGER_MINIMUM)) {
341
+ throwWorkerError(name + " must be a positive safe integer");
342
+ }
343
+ }
344
+ }
345
+ //# sourceMappingURL=SyncEffectWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncEffectWorker.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /** Constants and durable status contracts shared by the effect worker modules. */
2
+ export declare const DEFAULT_WORKER_ROLE = "sync-effect-worker";
3
+ export declare const DEFAULT_WRITER_LEASE_DURATION_MS = 60000;
4
+ export declare const DEFAULT_EFFECT_LEASE_DURATION_MS = 30000;
5
+ export declare const SYNC_EFFECT_KINDS: {
6
+ readonly SYSTEM_PROJECTION: "system_projection";
7
+ readonly CANDIDATE_RECONCILE: "candidate_reconcile";
8
+ readonly SYSTEM_REPAIR: "system_repair";
9
+ readonly RESOLUTION_PROJECTION: "resolution_projection";
10
+ readonly RESOLUTION_DELETE: "resolution_delete";
11
+ readonly USER_INPUT_DELETE: "user_input_delete";
12
+ };
13
+ export declare const EFFECT_TARGET_KINDS: {
14
+ readonly ENTITY: "entity";
15
+ readonly ROW_BINDING: "row_binding";
16
+ readonly PROJECTION_ROW: "projection_row";
17
+ readonly CONFLICT: "conflict";
18
+ };
19
+ export declare const OUTBOX_EFFECT_STATUSES: {
20
+ readonly FAILED: "failed";
21
+ readonly APPLIED: "applied";
22
+ readonly BLOCKED_CANDIDATE: "blocked_candidate";
23
+ readonly SUPERSEDED: "superseded";
24
+ readonly CONFLICT: "conflict";
25
+ };
26
+ export declare const WORKER_ERROR_CODES: {
27
+ readonly INVALID_EFFECT_PAYLOAD: "invalid_effect_payload";
28
+ readonly ACTIVE_CANDIDATE_PRESERVED: "active_candidate_preserved";
29
+ readonly GATEWAY_SUPERSEDED: "gateway_superseded";
30
+ readonly CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch";
31
+ readonly VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch";
32
+ readonly GATEWAY_SCHEMA_ERROR: "gateway_schema_error";
33
+ readonly GATEWAY_RETRYABLE_ERROR: "gateway_retryable_error";
34
+ readonly POSTCONDITION_READ_FAILED: "postcondition_read_failed";
35
+ readonly POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state";
36
+ readonly POSTCONDITION_UNAVAILABLE: "postcondition_unavailable";
37
+ readonly POSTCONDITION_CHANGED: "postcondition_changed";
38
+ readonly POSTCONDITION_UNAPPLIED_REQUIRES_REDRIVE: "postcondition_unapplied_requires_redrive";
39
+ readonly REPAIR_REOBSERVE_REQUIRES_WRITER_REPLAN: "repair_reobserve_requires_writer_replan";
40
+ readonly REPAIR_REPLAN_FAILED: "repair_replan_failed";
41
+ readonly REPAIR_REPLAN_DEFERRED: "repair_replan_deferred";
42
+ readonly GATEWAY_CAPABILITY_MISSING: "gateway_capability_missing";
43
+ };
44
+ export type SyncEffectWorkerErrorCode = (typeof WORKER_ERROR_CODES)[keyof typeof WORKER_ERROR_CODES];
45
+ export declare const USER_INPUT_CANDIDATE_BLOCK_SQL: string;
46
+ //# sourceMappingURL=SyncEffectWorkerConstants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncEffectWorkerConstants.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAOlF,eAAO,MAAM,mBAAmB,uBAAuB,CAAC;AACxD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AACvD,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,eAAO,MAAM,iBAAiB;;;;;;;CAOiB,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;CAKqB,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;;;;CAMc,CAAC;AAElD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;CAkBrB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE/D,eAAO,MAAM,8BAA8B,QAexC,CAAC"}
@@ -0,0 +1,63 @@
1
+ /** Constants and durable status contracts shared by the effect worker modules. */
2
+ import { CONFLICT_STATUSES } from "../../../../domain/model/constants.js";
3
+ import { SYNC_EFFECT_RECOVERY_ERROR_CODES } from "../../../../infrastructure/storage/sync/outbound/effectOutbox.js";
4
+ import { SYNC_GATEWAY_PROJECTIONS } from "../../gateway/constants.js";
5
+ export const DEFAULT_WORKER_ROLE = "sync-effect-worker";
6
+ export const DEFAULT_WRITER_LEASE_DURATION_MS = 60_000;
7
+ export const DEFAULT_EFFECT_LEASE_DURATION_MS = 30_000;
8
+ export const SYNC_EFFECT_KINDS = {
9
+ SYSTEM_PROJECTION: "system_projection",
10
+ CANDIDATE_RECONCILE: "candidate_reconcile",
11
+ SYSTEM_REPAIR: "system_repair",
12
+ RESOLUTION_PROJECTION: "resolution_projection",
13
+ RESOLUTION_DELETE: "resolution_delete",
14
+ USER_INPUT_DELETE: "user_input_delete",
15
+ };
16
+ export const EFFECT_TARGET_KINDS = {
17
+ ENTITY: "entity",
18
+ ROW_BINDING: "row_binding",
19
+ PROJECTION_ROW: "projection_row",
20
+ CONFLICT: "conflict",
21
+ };
22
+ export const OUTBOX_EFFECT_STATUSES = {
23
+ FAILED: "failed",
24
+ APPLIED: "applied",
25
+ BLOCKED_CANDIDATE: "blocked_candidate",
26
+ SUPERSEDED: "superseded",
27
+ CONFLICT: "conflict",
28
+ };
29
+ export const WORKER_ERROR_CODES = {
30
+ INVALID_EFFECT_PAYLOAD: "invalid_effect_payload",
31
+ ACTIVE_CANDIDATE_PRESERVED: "active_candidate_preserved",
32
+ GATEWAY_SUPERSEDED: "gateway_superseded",
33
+ CANDIDATE_GUARD_MISMATCH: "candidate_guard_mismatch",
34
+ VISIBLE_GUARD_MISMATCH: "visible_guard_mismatch",
35
+ GATEWAY_SCHEMA_ERROR: "gateway_schema_error",
36
+ GATEWAY_RETRYABLE_ERROR: SYNC_EFFECT_RECOVERY_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
37
+ POSTCONDITION_READ_FAILED: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_READ_FAILED,
38
+ POSTCONDITION_APPLIED_WITHOUT_VISIBLE_STATE: "postcondition_applied_without_visible_state",
39
+ POSTCONDITION_UNAVAILABLE: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_UNAVAILABLE,
40
+ POSTCONDITION_CHANGED: "postcondition_changed",
41
+ POSTCONDITION_UNAPPLIED_REQUIRES_REDRIVE: SYNC_EFFECT_RECOVERY_ERROR_CODES.POSTCONDITION_UNAPPLIED_REQUIRES_REDRIVE,
42
+ REPAIR_REOBSERVE_REQUIRES_WRITER_REPLAN: "repair_reobserve_requires_writer_replan",
43
+ REPAIR_REPLAN_FAILED: "repair_replan_failed",
44
+ REPAIR_REPLAN_DEFERRED: "repair_replan_deferred",
45
+ GATEWAY_CAPABILITY_MISSING: "gateway_capability_missing",
46
+ };
47
+ export const USER_INPUT_CANDIDATE_BLOCK_SQL = `
48
+ SELECT 1 AS blocked
49
+ FROM sheet_visible_field_state AS visible
50
+ LEFT JOIN sync_conflict AS conflict
51
+ ON conflict.conflict_id = visible.active_candidate_conflict_id
52
+ WHERE visible.physical_sheet_id = ?
53
+ AND visible.projection = '${SYNC_GATEWAY_PROJECTIONS.USER_INPUT}'
54
+ AND visible.row_binding_id = ?
55
+ AND visible.field_name IN (__FIELD_NAMES__)
56
+ AND visible.active_candidate_conflict_id IS NOT NULL
57
+ AND visible.active_candidate_hash IS NOT NULL
58
+ AND (conflict.conflict_id IS NULL OR conflict.status IN (
59
+ '${CONFLICT_STATUSES.OPEN}', '${CONFLICT_STATUSES.NEEDS_REBASE}'
60
+ ))
61
+ LIMIT 1
62
+ `;
63
+ //# sourceMappingURL=SyncEffectWorkerConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncEffectWorkerConstants.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerConstants.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAGlF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,gCAAgC,EAAE,MAAM,kEAAkE,CAAC;AACpH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,oBAAoB,CAAC;AACxD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;CACO,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,QAAQ,EAAE,UAAU;CAC+B,CAAC;AAEtD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CAC2B,CAAC;AAElD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;IACxD,kBAAkB,EAAE,oBAAoB;IACxC,wBAAwB,EAAE,0BAA0B;IACpD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,gCAAgC,CAAC,uBAAuB;IACjF,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,2CAA2C,EAAE,6CAA6C;IAC1F,yBAAyB,EAAE,gCAAgC,CAAC,yBAAyB;IACrF,qBAAqB,EAAE,uBAAuB;IAC9C,wCAAwC,EACtC,gCAAgC,CAAC,wCAAwC;IAC3E,uCAAuC,EAAE,yCAAyC;IAClF,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,0BAA0B,EAAE,4BAA4B;CAChD,CAAC;AAKX,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;kCAMZ,wBAAwB,CAAC,UAAU;;;;;;WAM1D,iBAAiB,CAAC,IAAI,OAAO,iBAAiB,CAAC,YAAY;;;GAGnE,CAAC"}
@@ -0,0 +1,20 @@
1
+ /** Fast-append and unsupported-capability dispatch paths for the effect worker. */
2
+ import type { FencingContext } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
3
+ import type { FastAppendRowsRequest } from "../../gateway/syncGateway.js";
4
+ import type { ClaimedEffect, EffectWorkerStorage, MutableReport, SyncEffectWorkerBaseOptions } from "./SyncEffectWorker.js";
5
+ /** Fails regular effects explicitly when the configured gateway is fast-only. */
6
+ export declare function rejectUnsupportedGatewayEffects(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
7
+ /**
8
+ * Dispatches append-only system rows without remote CAS or postcondition reads.
9
+ *
10
+ * A lost response is returned to pending. The append-only gateway deliberately
11
+ * does not keep row metadata for retry deduplication, so a retry can append a
12
+ * duplicate; reconciliation remains the eventual correction path.
13
+ */
14
+ export declare function dispatchFastAppendGroup(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, group: {
15
+ readonly request: FastAppendRowsRequest;
16
+ readonly items: readonly ClaimedEffect[];
17
+ }, report: MutableReport): Promise<void>;
18
+ /** Returns a response-lost fast append to pending for reconciliation-backed retry. */
19
+ export declare function requeueFastAppendItems(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
20
+ //# sourceMappingURL=SyncEffectWorkerDispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,8BAA8B,CAAC;AAmBtC,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,iFAAiF;AACjF,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,EACD,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAmEf;AAED,sFAAsF;AACtF,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,102 @@
1
+ /** Fast-append and unsupported-capability dispatch paths for the effect worker. */
2
+ import { LOOKUP_RESULT_KINDS } from "../../../../shared/state/constants.js";
3
+ import { SYNC_TIMING_OPERATION_KINDS, SYNC_TIMING_SCOPES, } from "../../telemetry/syncTiming.js";
4
+ import { WORKER_ERROR_CODES } from "./SyncEffectWorkerConstants.js";
5
+ import { isPresent, lookupResult, presentValue, } from "./SyncEffectWorkerHelpers.js";
6
+ import { completeApplied, completeFailure, } from "./SyncEffectWorkerTransitions.js";
7
+ import { emitGatewayTiming, emitWorkerTiming, } from "./SyncEffectWorkerTiming.js";
8
+ /** Fails regular effects explicitly when the configured gateway is fast-only. */
9
+ export async function rejectUnsupportedGatewayEffects(storage, fence, items, report) {
10
+ for (const item of items) {
11
+ if (!isPresent(item.gatewayEffect)) {
12
+ await completeFailure(storage, fence, item, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, item.invalidPayloadError, report);
13
+ continue;
14
+ }
15
+ await completeFailure(storage, fence, item, WORKER_ERROR_CODES.GATEWAY_CAPABILITY_MISSING, presentValue("The configured gateway supports fast append only; regular effect dispatch or recovery is unavailable."), report);
16
+ }
17
+ }
18
+ /**
19
+ * Dispatches append-only system rows without remote CAS or postcondition reads.
20
+ *
21
+ * A lost response is returned to pending. The append-only gateway deliberately
22
+ * does not keep row metadata for retry deduplication, so a retry can append a
23
+ * duplicate; reconciliation remains the eventual correction path.
24
+ */
25
+ export async function dispatchFastAppendGroup(options, storage, fence, group, report) {
26
+ let response;
27
+ const gatewayStartedAt = Date.now();
28
+ try {
29
+ response = await options.gateway.fastAppendRows(group.request);
30
+ }
31
+ catch {
32
+ emitWorkerTiming(options, {
33
+ scope: SYNC_TIMING_SCOPES.WORKER,
34
+ phase: "append_gateway_dispatch",
35
+ durationMs: Date.now() - gatewayStartedAt,
36
+ operationKinds: [SYNC_TIMING_OPERATION_KINDS.APPEND],
37
+ operationCounts: { append: group.items.length, update: 0, delete: 0 },
38
+ });
39
+ await requeueFastAppendItems(storage, fence, group.items, report);
40
+ return;
41
+ }
42
+ emitGatewayTiming(options, response.timing);
43
+ emitWorkerTiming(options, {
44
+ scope: SYNC_TIMING_SCOPES.WORKER,
45
+ phase: "append_gateway_dispatch",
46
+ durationMs: Date.now() - gatewayStartedAt,
47
+ operationKinds: [SYNC_TIMING_OPERATION_KINDS.APPEND],
48
+ operationCounts: { append: group.items.length, update: 0, delete: 0 },
49
+ });
50
+ const resultPersistenceStartedAt = Date.now();
51
+ const byEffectId = new Map(response.results.map((result) => [result.effectId, result]));
52
+ const deferredEffectIds = new Set();
53
+ for (const item of group.items) {
54
+ if (byEffectId.has(item.pending.effect_id) || !response.hasMore)
55
+ continue;
56
+ if (await storage.releaseUnprocessedEffect({
57
+ ...fence,
58
+ effectId: item.pending.effect_id,
59
+ claimToken: item.claimToken,
60
+ })) {
61
+ deferredEffectIds.add(item.pending.effect_id);
62
+ report.deferred += 1;
63
+ }
64
+ }
65
+ for (const item of group.items) {
66
+ if (deferredEffectIds.has(item.pending.effect_id))
67
+ continue;
68
+ const result = lookupResult(byEffectId.get(item.pending.effect_id));
69
+ if (result.kind === LOOKUP_RESULT_KINDS.NOT_FOUND) {
70
+ await requeueFastAppendItems(storage, fence, [item], report);
71
+ continue;
72
+ }
73
+ if (!isPresent(item.gatewayEffect)) {
74
+ await requeueFastAppendItems(storage, fence, [item], report);
75
+ continue;
76
+ }
77
+ await completeApplied(storage, fence, item, presentValue(item.pending.expected_visible_revision + 1), presentValue(item.gatewayEffect.value.payload.targetVisibleHash), report);
78
+ }
79
+ emitWorkerTiming(options, {
80
+ scope: SYNC_TIMING_SCOPES.WORKER,
81
+ phase: "append_result_persistence",
82
+ durationMs: Date.now() - resultPersistenceStartedAt,
83
+ operationKinds: [SYNC_TIMING_OPERATION_KINDS.APPEND],
84
+ operationCounts: { append: group.items.length, update: 0, delete: 0 },
85
+ });
86
+ }
87
+ /** Returns a response-lost fast append to pending for reconciliation-backed retry. */
88
+ export async function requeueFastAppendItems(storage, fence, items, report) {
89
+ for (const item of items) {
90
+ if (await storage.retryClaimedEffect({
91
+ ...fence,
92
+ effectId: item.pending.effect_id,
93
+ claimToken: item.claimToken,
94
+ lastErrorCode: WORKER_ERROR_CODES.GATEWAY_RETRYABLE_ERROR,
95
+ lastErrorMessage: "Fast append response was not observed; the row will be retried and reconciled later.",
96
+ })) {
97
+ report.deferred += 1;
98
+ report.requeued += 1;
99
+ }
100
+ }
101
+ }
102
+ //# sourceMappingURL=SyncEffectWorkerDispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncEffectWorkerDispatch.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /** Small value and error helpers shared by effect-worker modules. */
2
+ import type { Applicability, LookupResult, Presence } from "../../../../domain/index.js";
3
+ import { PRESENCE_KINDS } from "../../../../shared/state/constants.js";
4
+ export declare function safeErrorMessage(error: unknown): string;
5
+ export interface CandidateBlockSqlRow {
6
+ readonly blocked: number;
7
+ }
8
+ export type PresentValue<T> = {
9
+ readonly kind: typeof PRESENCE_KINDS.PRESENT;
10
+ readonly value: T;
11
+ };
12
+ export declare function presentValue<T>(value: T): Presence<T>;
13
+ export declare function absentValue<T>(): Presence<T>;
14
+ export declare function isPresent<T>(value: Presence<T>): value is PresentValue<T>;
15
+ export declare function isAbsent<T>(value: Presence<T>): boolean;
16
+ export declare function lookupResult<T>(value: T | undefined): LookupResult<T>;
17
+ export declare function applicabilityFromSqlNullable<T>(value: T | null): Applicability<T>;
18
+ export declare function throwWorkerError(message: string): never;
19
+ //# sourceMappingURL=SyncEffectWorkerHelpers.d.ts.map