@honua/app-platform 0.0.20-alpha.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 (840) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/app/index.d.ts +164 -0
  4. package/app/index.d.ts.map +1 -0
  5. package/app/index.js +424 -0
  6. package/app-controller/controller.d.ts +425 -0
  7. package/app-controller/controller.d.ts.map +1 -0
  8. package/app-controller/controller.js +1173 -0
  9. package/app-controller/index.d.ts +14 -0
  10. package/app-controller/index.d.ts.map +1 -0
  11. package/app-controller/index.js +12 -0
  12. package/app-workspace/index.d.ts +421 -0
  13. package/app-workspace/index.d.ts.map +1 -0
  14. package/app-workspace/index.js +722 -0
  15. package/collaboration/client.d.ts +40 -0
  16. package/collaboration/client.d.ts.map +1 -0
  17. package/collaboration/client.js +299 -0
  18. package/collaboration/errors.d.ts +15 -0
  19. package/collaboration/errors.d.ts.map +1 -0
  20. package/collaboration/errors.js +17 -0
  21. package/collaboration/fixture.d.ts +41 -0
  22. package/collaboration/fixture.d.ts.map +1 -0
  23. package/collaboration/fixture.js +362 -0
  24. package/collaboration/index.d.ts +18 -0
  25. package/collaboration/index.d.ts.map +1 -0
  26. package/collaboration/index.js +14 -0
  27. package/collaboration/types.d.ts +240 -0
  28. package/collaboration/types.d.ts.map +1 -0
  29. package/collaboration/types.js +1 -0
  30. package/contract/analytics-sources.d.ts +149 -0
  31. package/contract/analytics-sources.d.ts.map +1 -0
  32. package/contract/analytics-sources.js +235 -0
  33. package/contract/edit-session.d.ts +203 -0
  34. package/contract/edit-session.d.ts.map +1 -0
  35. package/contract/edit-session.js +760 -0
  36. package/contract/edit-sketch.d.ts +91 -0
  37. package/contract/edit-sketch.d.ts.map +1 -0
  38. package/contract/edit-sketch.js +281 -0
  39. package/contract/index.d.ts +63 -0
  40. package/contract/index.d.ts.map +1 -0
  41. package/contract/index.js +52 -0
  42. package/contract/jobs.d.ts +149 -0
  43. package/contract/jobs.d.ts.map +1 -0
  44. package/contract/jobs.js +40 -0
  45. package/contract/pmtiles.d.ts +162 -0
  46. package/contract/pmtiles.d.ts.map +1 -0
  47. package/contract/pmtiles.js +155 -0
  48. package/contract/source.d.ts +447 -0
  49. package/contract/source.d.ts.map +1 -0
  50. package/contract/source.js +3909 -0
  51. package/contract/spatial-aggregation.d.ts +336 -0
  52. package/contract/spatial-aggregation.d.ts.map +1 -0
  53. package/contract/spatial-aggregation.js +298 -0
  54. package/contract/temporal.d.ts +455 -0
  55. package/contract/temporal.d.ts.map +1 -0
  56. package/contract/temporal.js +146 -0
  57. package/contract/tiles.d.ts +370 -0
  58. package/contract/tiles.d.ts.map +1 -0
  59. package/contract/tiles.js +519 -0
  60. package/contract/types.d.ts +694 -0
  61. package/contract/types.d.ts.map +1 -0
  62. package/contract/types.js +183 -0
  63. package/contract/widget-source.d.ts +205 -0
  64. package/contract/widget-source.d.ts.map +1 -0
  65. package/contract/widget-source.js +1473 -0
  66. package/control-plane/client.d.ts +95 -0
  67. package/control-plane/client.d.ts.map +1 -0
  68. package/control-plane/client.js +374 -0
  69. package/control-plane/index.d.ts +18 -0
  70. package/control-plane/index.d.ts.map +1 -0
  71. package/control-plane/index.js +14 -0
  72. package/control-plane/types.d.ts +233 -0
  73. package/control-plane/types.d.ts.map +1 -0
  74. package/control-plane/types.js +7 -0
  75. package/controls/basemap-style-binding.d.ts +54 -0
  76. package/controls/basemap-style-binding.d.ts.map +1 -0
  77. package/controls/basemap-style-binding.js +199 -0
  78. package/controls/basemap-switcher.d.ts +95 -0
  79. package/controls/basemap-switcher.d.ts.map +1 -0
  80. package/controls/basemap-switcher.js +379 -0
  81. package/controls/element-utils.d.ts +48 -0
  82. package/controls/element-utils.d.ts.map +1 -0
  83. package/controls/element-utils.js +78 -0
  84. package/controls/index.d.ts +33 -0
  85. package/controls/index.d.ts.map +1 -0
  86. package/controls/index.js +30 -0
  87. package/controls/layer-list.d.ts +98 -0
  88. package/controls/layer-list.d.ts.map +1 -0
  89. package/controls/layer-list.js +375 -0
  90. package/controls/legend-derive.d.ts +53 -0
  91. package/controls/legend-derive.d.ts.map +1 -0
  92. package/controls/legend-derive.js +196 -0
  93. package/controls/legend.d.ts +104 -0
  94. package/controls/legend.d.ts.map +1 -0
  95. package/controls/legend.js +381 -0
  96. package/controls/swipe-control.d.ts +80 -0
  97. package/controls/swipe-control.d.ts.map +1 -0
  98. package/controls/swipe-control.js +368 -0
  99. package/controls/types.d.ts +227 -0
  100. package/controls/types.d.ts.map +1 -0
  101. package/controls/types.js +11 -0
  102. package/core/auth/client-credentials-provider.d.ts +51 -0
  103. package/core/auth/client-credentials-provider.d.ts.map +1 -0
  104. package/core/auth/client-credentials-provider.js +115 -0
  105. package/core/auth/credential-store.d.ts +52 -0
  106. package/core/auth/credential-store.d.ts.map +1 -0
  107. package/core/auth/credential-store.js +82 -0
  108. package/core/auth/index.d.ts +23 -0
  109. package/core/auth/index.d.ts.map +1 -0
  110. package/core/auth/index.js +20 -0
  111. package/core/auth/oauth2-provider.d.ts +114 -0
  112. package/core/auth/oauth2-provider.d.ts.map +1 -0
  113. package/core/auth/oauth2-provider.js +408 -0
  114. package/core/auth/pkce.d.ts +25 -0
  115. package/core/auth/pkce.d.ts.map +1 -0
  116. package/core/auth/pkce.js +46 -0
  117. package/core/auth/static-providers.d.ts +20 -0
  118. package/core/auth/static-providers.d.ts.map +1 -0
  119. package/core/auth/static-providers.js +26 -0
  120. package/core/auth/token-endpoint.d.ts +40 -0
  121. package/core/auth/token-endpoint.d.ts.map +1 -0
  122. package/core/auth/token-endpoint.js +133 -0
  123. package/core/auth/types.d.ts +144 -0
  124. package/core/auth/types.d.ts.map +1 -0
  125. package/core/auth/types.js +8 -0
  126. package/core/batch.d.ts +37 -0
  127. package/core/batch.d.ts.map +1 -0
  128. package/core/batch.js +79 -0
  129. package/core/cache-state.d.ts +79 -0
  130. package/core/cache-state.d.ts.map +1 -0
  131. package/core/cache-state.js +87 -0
  132. package/core/client.d.ts +607 -0
  133. package/core/client.d.ts.map +1 -0
  134. package/core/client.js +1716 -0
  135. package/core/compatibility.d.ts +18 -0
  136. package/core/compatibility.d.ts.map +1 -0
  137. package/core/compatibility.js +245 -0
  138. package/core/errors.d.ts +139 -0
  139. package/core/errors.d.ts.map +1 -0
  140. package/core/errors.js +176 -0
  141. package/core/esri-geojson.d.ts +66 -0
  142. package/core/esri-geojson.d.ts.map +1 -0
  143. package/core/esri-geojson.js +363 -0
  144. package/core/geoparquet-sql.d.ts +162 -0
  145. package/core/geoparquet-sql.d.ts.map +1 -0
  146. package/core/geoparquet-sql.js +333 -0
  147. package/core/geoservices.d.ts +34 -0
  148. package/core/geoservices.d.ts.map +1 -0
  149. package/core/geoservices.js +434 -0
  150. package/core/grpc-adapter.d.ts +23 -0
  151. package/core/grpc-adapter.d.ts.map +1 -0
  152. package/core/grpc-adapter.js +688 -0
  153. package/core/odata.d.ts +347 -0
  154. package/core/odata.d.ts.map +1 -0
  155. package/core/odata.js +913 -0
  156. package/core/ogc-conformance.d.ts +35 -0
  157. package/core/ogc-conformance.d.ts.map +1 -0
  158. package/core/ogc-conformance.js +134 -0
  159. package/core/ogc-endpoint-layout.d.ts +70 -0
  160. package/core/ogc-endpoint-layout.d.ts.map +1 -0
  161. package/core/ogc-endpoint-layout.js +173 -0
  162. package/core/ogc-features.d.ts +23 -0
  163. package/core/ogc-features.d.ts.map +1 -0
  164. package/core/ogc-features.js +129 -0
  165. package/core/ogc-maps.d.ts +49 -0
  166. package/core/ogc-maps.d.ts.map +1 -0
  167. package/core/ogc-maps.js +126 -0
  168. package/core/ogc-processes.d.ts +118 -0
  169. package/core/ogc-processes.d.ts.map +1 -0
  170. package/core/ogc-processes.js +423 -0
  171. package/core/ogc-records.d.ts +75 -0
  172. package/core/ogc-records.d.ts.map +1 -0
  173. package/core/ogc-records.js +251 -0
  174. package/core/ogc-tiles.d.ts +125 -0
  175. package/core/ogc-tiles.d.ts.map +1 -0
  176. package/core/ogc-tiles.js +183 -0
  177. package/core/path-utils.d.ts +69 -0
  178. package/core/path-utils.d.ts.map +1 -0
  179. package/core/path-utils.js +123 -0
  180. package/core/pbf-decoder.d.ts +39 -0
  181. package/core/pbf-decoder.d.ts.map +1 -0
  182. package/core/pbf-decoder.js +702 -0
  183. package/core/process-runner.d.ts +104 -0
  184. package/core/process-runner.d.ts.map +1 -0
  185. package/core/process-runner.js +315 -0
  186. package/core/protocol-transport.d.ts +76 -0
  187. package/core/protocol-transport.d.ts.map +1 -0
  188. package/core/protocol-transport.js +15 -0
  189. package/core/query-builder.d.ts +261 -0
  190. package/core/query-builder.d.ts.map +1 -0
  191. package/core/query-builder.js +538 -0
  192. package/core/request-pipeline.d.ts +88 -0
  193. package/core/request-pipeline.d.ts.map +1 -0
  194. package/core/request-pipeline.js +273 -0
  195. package/core/spatial-filter.d.ts +93 -0
  196. package/core/spatial-filter.d.ts.map +1 -0
  197. package/core/spatial-filter.js +153 -0
  198. package/core/stac-static.d.ts +51 -0
  199. package/core/stac-static.d.ts.map +1 -0
  200. package/core/stac-static.js +195 -0
  201. package/core/stac.d.ts +67 -0
  202. package/core/stac.d.ts.map +1 -0
  203. package/core/stac.js +259 -0
  204. package/core/surfaces.d.ts +540 -0
  205. package/core/surfaces.d.ts.map +1 -0
  206. package/core/surfaces.js +1964 -0
  207. package/core/terrain-elevation.d.ts +114 -0
  208. package/core/terrain-elevation.d.ts.map +1 -0
  209. package/core/terrain-elevation.js +150 -0
  210. package/core/types.d.ts +1404 -0
  211. package/core/types.d.ts.map +1 -0
  212. package/core/types.js +13 -0
  213. package/core/wfs-capabilities.d.ts +153 -0
  214. package/core/wfs-capabilities.d.ts.map +1 -0
  215. package/core/wfs-capabilities.js +490 -0
  216. package/core/wfs-filter.d.ts +118 -0
  217. package/core/wfs-filter.d.ts.map +1 -0
  218. package/core/wfs-filter.js +634 -0
  219. package/core/wfs.d.ts +232 -0
  220. package/core/wfs.d.ts.map +1 -0
  221. package/core/wfs.js +426 -0
  222. package/core/wire-shared.d.ts +32 -0
  223. package/core/wire-shared.d.ts.map +1 -0
  224. package/core/wire-shared.js +76 -0
  225. package/core/wms-axis.d.ts +36 -0
  226. package/core/wms-axis.d.ts.map +1 -0
  227. package/core/wms-axis.js +73 -0
  228. package/core/wms-capabilities.d.ts +110 -0
  229. package/core/wms-capabilities.d.ts.map +1 -0
  230. package/core/wms-capabilities.js +559 -0
  231. package/core/wms-types.d.ts +128 -0
  232. package/core/wms-types.d.ts.map +1 -0
  233. package/core/wms-types.js +32 -0
  234. package/core/wms.d.ts +144 -0
  235. package/core/wms.d.ts.map +1 -0
  236. package/core/wms.js +338 -0
  237. package/core/wmts-capabilities.d.ts +82 -0
  238. package/core/wmts-capabilities.d.ts.map +1 -0
  239. package/core/wmts-capabilities.js +402 -0
  240. package/core/wmts.d.ts +103 -0
  241. package/core/wmts.d.ts.map +1 -0
  242. package/core/wmts.js +332 -0
  243. package/core/xml-text.d.ts +20 -0
  244. package/core/xml-text.d.ts.map +1 -0
  245. package/core/xml-text.js +85 -0
  246. package/esri-compat/basemap-gallery.d.ts +38 -0
  247. package/esri-compat/basemap-gallery.d.ts.map +1 -0
  248. package/esri-compat/basemap-gallery.js +159 -0
  249. package/esri-compat/basemap-layer-list.d.ts +35 -0
  250. package/esri-compat/basemap-layer-list.d.ts.map +1 -0
  251. package/esri-compat/basemap-layer-list.js +139 -0
  252. package/esri-compat/basemap.d.ts +32 -0
  253. package/esri-compat/basemap.d.ts.map +1 -0
  254. package/esri-compat/basemap.js +84 -0
  255. package/esri-compat/bookmarks.d.ts +36 -0
  256. package/esri-compat/bookmarks.d.ts.map +1 -0
  257. package/esri-compat/bookmarks.js +108 -0
  258. package/esri-compat/class-breaks-renderer.d.ts +50 -0
  259. package/esri-compat/class-breaks-renderer.d.ts.map +1 -0
  260. package/esri-compat/class-breaks-renderer.js +164 -0
  261. package/esri-compat/color.d.ts +22 -0
  262. package/esri-compat/color.d.ts.map +1 -0
  263. package/esri-compat/color.js +106 -0
  264. package/esri-compat/controls.d.ts +174 -0
  265. package/esri-compat/controls.d.ts.map +1 -0
  266. package/esri-compat/controls.js +479 -0
  267. package/esri-compat/coordinate-conversion.d.ts +41 -0
  268. package/esri-compat/coordinate-conversion.d.ts.map +1 -0
  269. package/esri-compat/coordinate-conversion.js +125 -0
  270. package/esri-compat/directions.d.ts +45 -0
  271. package/esri-compat/directions.d.ts.map +1 -0
  272. package/esri-compat/directions.js +123 -0
  273. package/esri-compat/editor.d.ts +47 -0
  274. package/esri-compat/editor.d.ts.map +1 -0
  275. package/esri-compat/editor.js +170 -0
  276. package/esri-compat/esri-config.d.ts +16 -0
  277. package/esri-compat/esri-config.d.ts.map +1 -0
  278. package/esri-compat/esri-config.js +23 -0
  279. package/esri-compat/esri-request.d.ts +17 -0
  280. package/esri-compat/esri-request.d.ts.map +1 -0
  281. package/esri-compat/esri-request.js +127 -0
  282. package/esri-compat/event-bus.d.ts +106 -0
  283. package/esri-compat/event-bus.d.ts.map +1 -0
  284. package/esri-compat/event-bus.js +90 -0
  285. package/esri-compat/expand.d.ts +36 -0
  286. package/esri-compat/expand.d.ts.map +1 -0
  287. package/esri-compat/expand.js +97 -0
  288. package/esri-compat/extent.d.ts +43 -0
  289. package/esri-compat/extent.d.ts.map +1 -0
  290. package/esri-compat/extent.js +140 -0
  291. package/esri-compat/feature-filter.d.ts +55 -0
  292. package/esri-compat/feature-filter.d.ts.map +1 -0
  293. package/esri-compat/feature-filter.js +109 -0
  294. package/esri-compat/feature-form.d.ts +64 -0
  295. package/esri-compat/feature-form.d.ts.map +1 -0
  296. package/esri-compat/feature-form.js +137 -0
  297. package/esri-compat/feature-layer.d.ts +173 -0
  298. package/esri-compat/feature-layer.d.ts.map +1 -0
  299. package/esri-compat/feature-layer.js +661 -0
  300. package/esri-compat/feature-set.d.ts +32 -0
  301. package/esri-compat/feature-set.d.ts.map +1 -0
  302. package/esri-compat/feature-set.js +80 -0
  303. package/esri-compat/feature-table.d.ts +141 -0
  304. package/esri-compat/feature-table.d.ts.map +1 -0
  305. package/esri-compat/feature-table.js +500 -0
  306. package/esri-compat/feature-templates.d.ts +41 -0
  307. package/esri-compat/feature-templates.d.ts.map +1 -0
  308. package/esri-compat/feature-templates.js +97 -0
  309. package/esri-compat/feature.d.ts +33 -0
  310. package/esri-compat/feature.d.ts.map +1 -0
  311. package/esri-compat/feature.js +83 -0
  312. package/esri-compat/geojson-layer.d.ts +86 -0
  313. package/esri-compat/geojson-layer.d.ts.map +1 -0
  314. package/esri-compat/geojson-layer.js +191 -0
  315. package/esri-compat/geometry-engine.d.ts +107 -0
  316. package/esri-compat/geometry-engine.d.ts.map +1 -0
  317. package/esri-compat/geometry-engine.js +266 -0
  318. package/esri-compat/graphic.d.ts +46 -0
  319. package/esri-compat/graphic.d.ts.map +1 -0
  320. package/esri-compat/graphic.js +103 -0
  321. package/esri-compat/graphics-layer.d.ts +49 -0
  322. package/esri-compat/graphics-layer.d.ts.map +1 -0
  323. package/esri-compat/graphics-layer.js +185 -0
  324. package/esri-compat/group-layer.d.ts +48 -0
  325. package/esri-compat/group-layer.d.ts.map +1 -0
  326. package/esri-compat/group-layer.js +212 -0
  327. package/esri-compat/identify.d.ts +71 -0
  328. package/esri-compat/identify.d.ts.map +1 -0
  329. package/esri-compat/identify.js +299 -0
  330. package/esri-compat/identity-manager.d.ts +74 -0
  331. package/esri-compat/identity-manager.d.ts.map +1 -0
  332. package/esri-compat/identity-manager.js +245 -0
  333. package/esri-compat/imagery-layer.d.ts +78 -0
  334. package/esri-compat/imagery-layer.d.ts.map +1 -0
  335. package/esri-compat/imagery-layer.js +167 -0
  336. package/esri-compat/label-class.d.ts +31 -0
  337. package/esri-compat/label-class.d.ts.map +1 -0
  338. package/esri-compat/label-class.js +102 -0
  339. package/esri-compat/layer-list.d.ts +77 -0
  340. package/esri-compat/layer-list.d.ts.map +1 -0
  341. package/esri-compat/layer-list.js +342 -0
  342. package/esri-compat/legend.d.ts +53 -0
  343. package/esri-compat/legend.d.ts.map +1 -0
  344. package/esri-compat/legend.js +254 -0
  345. package/esri-compat/map-image-layer.d.ts +162 -0
  346. package/esri-compat/map-image-layer.d.ts.map +1 -0
  347. package/esri-compat/map-image-layer.js +709 -0
  348. package/esri-compat/map-view.d.ts +323 -0
  349. package/esri-compat/map-view.d.ts.map +1 -0
  350. package/esri-compat/map-view.js +1175 -0
  351. package/esri-compat/map.d.ts +47 -0
  352. package/esri-compat/map.d.ts.map +1 -0
  353. package/esri-compat/map.js +209 -0
  354. package/esri-compat/measurement-2d.d.ts +61 -0
  355. package/esri-compat/measurement-2d.d.ts.map +1 -0
  356. package/esri-compat/measurement-2d.js +184 -0
  357. package/esri-compat/measurement.d.ts +45 -0
  358. package/esri-compat/measurement.d.ts.map +1 -0
  359. package/esri-compat/measurement.js +193 -0
  360. package/esri-compat/oauth-info.d.ts +50 -0
  361. package/esri-compat/oauth-info.d.ts.map +1 -0
  362. package/esri-compat/oauth-info.js +142 -0
  363. package/esri-compat/picture-marker-symbol.d.ts +35 -0
  364. package/esri-compat/picture-marker-symbol.d.ts.map +1 -0
  365. package/esri-compat/picture-marker-symbol.js +126 -0
  366. package/esri-compat/point.d.ts +31 -0
  367. package/esri-compat/point.d.ts.map +1 -0
  368. package/esri-compat/point.js +102 -0
  369. package/esri-compat/polygon.d.ts +31 -0
  370. package/esri-compat/polygon.d.ts.map +1 -0
  371. package/esri-compat/polygon.js +107 -0
  372. package/esri-compat/polyline.d.ts +31 -0
  373. package/esri-compat/polyline.d.ts.map +1 -0
  374. package/esri-compat/polyline.js +107 -0
  375. package/esri-compat/popup-template.d.ts +55 -0
  376. package/esri-compat/popup-template.d.ts.map +1 -0
  377. package/esri-compat/popup-template.js +128 -0
  378. package/esri-compat/popup.d.ts +54 -0
  379. package/esri-compat/popup.d.ts.map +1 -0
  380. package/esri-compat/popup.js +312 -0
  381. package/esri-compat/print.d.ts +47 -0
  382. package/esri-compat/print.d.ts.map +1 -0
  383. package/esri-compat/print.js +105 -0
  384. package/esri-compat/query.d.ts +58 -0
  385. package/esri-compat/query.d.ts.map +1 -0
  386. package/esri-compat/query.js +128 -0
  387. package/esri-compat/reactive-utils.d.ts +24 -0
  388. package/esri-compat/reactive-utils.d.ts.map +1 -0
  389. package/esri-compat/reactive-utils.js +193 -0
  390. package/esri-compat/request.d.ts +41 -0
  391. package/esri-compat/request.d.ts.map +1 -0
  392. package/esri-compat/request.js +253 -0
  393. package/esri-compat/route-layer.d.ts +59 -0
  394. package/esri-compat/route-layer.d.ts.map +1 -0
  395. package/esri-compat/route-layer.js +223 -0
  396. package/esri-compat/route-task.d.ts +88 -0
  397. package/esri-compat/route-task.d.ts.map +1 -0
  398. package/esri-compat/route-task.js +225 -0
  399. package/esri-compat/scene-view.d.ts +41 -0
  400. package/esri-compat/scene-view.d.ts.map +1 -0
  401. package/esri-compat/scene-view.js +68 -0
  402. package/esri-compat/search.d.ts +112 -0
  403. package/esri-compat/search.d.ts.map +1 -0
  404. package/esri-compat/search.js +820 -0
  405. package/esri-compat/simple-fill-symbol.d.ts +27 -0
  406. package/esri-compat/simple-fill-symbol.d.ts.map +1 -0
  407. package/esri-compat/simple-fill-symbol.js +85 -0
  408. package/esri-compat/simple-line-symbol.d.ts +27 -0
  409. package/esri-compat/simple-line-symbol.d.ts.map +1 -0
  410. package/esri-compat/simple-line-symbol.js +85 -0
  411. package/esri-compat/simple-marker-symbol.d.ts +29 -0
  412. package/esri-compat/simple-marker-symbol.d.ts.map +1 -0
  413. package/esri-compat/simple-marker-symbol.js +92 -0
  414. package/esri-compat/simple-renderer.d.ts +29 -0
  415. package/esri-compat/simple-renderer.d.ts.map +1 -0
  416. package/esri-compat/simple-renderer.js +92 -0
  417. package/esri-compat/sketch.d.ts +64 -0
  418. package/esri-compat/sketch.d.ts.map +1 -0
  419. package/esri-compat/sketch.js +227 -0
  420. package/esri-compat/spatial-reference.d.ts +31 -0
  421. package/esri-compat/spatial-reference.d.ts.map +1 -0
  422. package/esri-compat/spatial-reference.js +102 -0
  423. package/esri-compat/swipe.d.ts +34 -0
  424. package/esri-compat/swipe.d.ts.map +1 -0
  425. package/esri-compat/swipe.js +93 -0
  426. package/esri-compat/table-list.d.ts +36 -0
  427. package/esri-compat/table-list.d.ts.map +1 -0
  428. package/esri-compat/table-list.js +126 -0
  429. package/esri-compat/text-symbol.d.ts +37 -0
  430. package/esri-compat/text-symbol.d.ts.map +1 -0
  431. package/esri-compat/text-symbol.js +123 -0
  432. package/esri-compat/tile-layer.d.ts +52 -0
  433. package/esri-compat/tile-layer.d.ts.map +1 -0
  434. package/esri-compat/tile-layer.js +168 -0
  435. package/esri-compat/time-slider.d.ts +70 -0
  436. package/esri-compat/time-slider.d.ts.map +1 -0
  437. package/esri-compat/time-slider.js +208 -0
  438. package/esri-compat/track.d.ts +51 -0
  439. package/esri-compat/track.d.ts.map +1 -0
  440. package/esri-compat/track.js +174 -0
  441. package/esri-compat/unique-value-renderer.d.ts +41 -0
  442. package/esri-compat/unique-value-renderer.d.ts.map +1 -0
  443. package/esri-compat/unique-value-renderer.js +127 -0
  444. package/esri-compat/url.d.ts +13 -0
  445. package/esri-compat/url.d.ts.map +1 -0
  446. package/esri-compat/url.js +68 -0
  447. package/esri-compat/vector-tile-layer.d.ts +47 -0
  448. package/esri-compat/vector-tile-layer.d.ts.map +1 -0
  449. package/esri-compat/vector-tile-layer.js +130 -0
  450. package/esri-compat/web-map.d.ts +14 -0
  451. package/esri-compat/web-map.d.ts.map +1 -0
  452. package/esri-compat/web-map.js +24 -0
  453. package/esri-compat/wfs-layer.d.ts +64 -0
  454. package/esri-compat/wfs-layer.d.ts.map +1 -0
  455. package/esri-compat/wfs-layer.js +145 -0
  456. package/esri-compat/wms-layer.d.ts +76 -0
  457. package/esri-compat/wms-layer.d.ts.map +1 -0
  458. package/esri-compat/wms-layer.js +157 -0
  459. package/exploration/context.d.ts +25 -0
  460. package/exploration/context.d.ts.map +1 -0
  461. package/exploration/context.js +396 -0
  462. package/exploration/index.d.ts +27 -0
  463. package/exploration/index.d.ts.map +1 -0
  464. package/exploration/index.js +24 -0
  465. package/exploration/presets.d.ts +27 -0
  466. package/exploration/presets.d.ts.map +1 -0
  467. package/exploration/presets.js +114 -0
  468. package/exploration/reducer.d.ts +23 -0
  469. package/exploration/reducer.d.ts.map +1 -0
  470. package/exploration/reducer.js +332 -0
  471. package/exploration/selection.d.ts +25 -0
  472. package/exploration/selection.d.ts.map +1 -0
  473. package/exploration/selection.js +34 -0
  474. package/exploration/selectors.d.ts +56 -0
  475. package/exploration/selectors.d.ts.map +1 -0
  476. package/exploration/selectors.js +110 -0
  477. package/exploration/types.d.ts +294 -0
  478. package/exploration/types.d.ts.map +1 -0
  479. package/exploration/types.js +33 -0
  480. package/expr/expression.d.ts +457 -0
  481. package/expr/expression.d.ts.map +1 -0
  482. package/expr/expression.js +663 -0
  483. package/expr/index.d.ts +32 -0
  484. package/expr/index.d.ts.map +1 -0
  485. package/expr/index.js +30 -0
  486. package/filter-registry/index.d.ts +145 -0
  487. package/filter-registry/index.d.ts.map +1 -0
  488. package/filter-registry/index.js +531 -0
  489. package/gen/honua/v1/feature_service_pb.d.ts +918 -0
  490. package/gen/honua/v1/feature_service_pb.d.ts.map +1 -0
  491. package/gen/honua/v1/feature_service_pb.js +375 -0
  492. package/generated-app/errors.d.ts +41 -0
  493. package/generated-app/errors.d.ts.map +1 -0
  494. package/generated-app/errors.js +41 -0
  495. package/generated-app/index.d.ts +17 -0
  496. package/generated-app/index.d.ts.map +1 -0
  497. package/generated-app/index.js +12 -0
  498. package/generated-app/manifest.d.ts +183 -0
  499. package/generated-app/manifest.d.ts.map +1 -0
  500. package/generated-app/manifest.js +14 -0
  501. package/generated-app/projection.d.ts +44 -0
  502. package/generated-app/projection.d.ts.map +1 -0
  503. package/generated-app/projection.js +234 -0
  504. package/generated-app/runtime.d.ts +215 -0
  505. package/generated-app/runtime.d.ts.map +1 -0
  506. package/generated-app/runtime.js +1196 -0
  507. package/geocoding/index.d.ts +106 -0
  508. package/geocoding/index.d.ts.map +1 -0
  509. package/geocoding/index.js +278 -0
  510. package/interactions/detail-model.d.ts +54 -0
  511. package/interactions/detail-model.d.ts.map +1 -0
  512. package/interactions/detail-model.js +105 -0
  513. package/interactions/exploration-bindings.d.ts +120 -0
  514. package/interactions/exploration-bindings.d.ts.map +1 -0
  515. package/interactions/exploration-bindings.js +218 -0
  516. package/interactions/feature-state.d.ts +144 -0
  517. package/interactions/feature-state.d.ts.map +1 -0
  518. package/interactions/feature-state.js +169 -0
  519. package/interactions/hit-test.d.ts +112 -0
  520. package/interactions/hit-test.d.ts.map +1 -0
  521. package/interactions/hit-test.js +291 -0
  522. package/interactions/index.d.ts +31 -0
  523. package/interactions/index.d.ts.map +1 -0
  524. package/interactions/index.js +24 -0
  525. package/interactions/share-state.d.ts +36 -0
  526. package/interactions/share-state.d.ts.map +1 -0
  527. package/interactions/share-state.js +123 -0
  528. package/map/feature-service-adapter.d.ts +138 -0
  529. package/map/feature-service-adapter.d.ts.map +1 -0
  530. package/map/feature-service-adapter.js +279 -0
  531. package/map/honua-map.d.ts +203 -0
  532. package/map/honua-map.d.ts.map +1 -0
  533. package/map/honua-map.js +347 -0
  534. package/map/index.d.ts +27 -0
  535. package/map/index.d.ts.map +1 -0
  536. package/map/index.js +22 -0
  537. package/map/maplibre-target.d.ts +103 -0
  538. package/map/maplibre-target.d.ts.map +1 -0
  539. package/map/maplibre-target.js +164 -0
  540. package/map/webmap-maplibre.d.ts +60 -0
  541. package/map/webmap-maplibre.d.ts.map +1 -0
  542. package/map/webmap-maplibre.js +212 -0
  543. package/operate/client.d.ts +94 -0
  544. package/operate/client.d.ts.map +1 -0
  545. package/operate/client.js +361 -0
  546. package/operate/index.d.ts +22 -0
  547. package/operate/index.d.ts.map +1 -0
  548. package/operate/index.js +19 -0
  549. package/operate/types.d.ts +397 -0
  550. package/operate/types.d.ts.map +1 -0
  551. package/operate/types.js +17 -0
  552. package/operator/client.d.ts +60 -0
  553. package/operator/client.d.ts.map +1 -0
  554. package/operator/client.js +20 -0
  555. package/operator/controllers/approval.d.ts +52 -0
  556. package/operator/controllers/approval.d.ts.map +1 -0
  557. package/operator/controllers/approval.js +123 -0
  558. package/operator/controllers/base.d.ts +27 -0
  559. package/operator/controllers/base.d.ts.map +1 -0
  560. package/operator/controllers/base.js +53 -0
  561. package/operator/controllers/builder-workspace.d.ts +55 -0
  562. package/operator/controllers/builder-workspace.d.ts.map +1 -0
  563. package/operator/controllers/builder-workspace.js +108 -0
  564. package/operator/controllers/chat.d.ts +61 -0
  565. package/operator/controllers/chat.d.ts.map +1 -0
  566. package/operator/controllers/chat.js +154 -0
  567. package/operator/controllers/clarification.d.ts +52 -0
  568. package/operator/controllers/clarification.d.ts.map +1 -0
  569. package/operator/controllers/clarification.js +121 -0
  570. package/operator/controllers/execution.d.ts +60 -0
  571. package/operator/controllers/execution.d.ts.map +1 -0
  572. package/operator/controllers/execution.js +286 -0
  573. package/operator/controllers/index.d.ts +23 -0
  574. package/operator/controllers/index.d.ts.map +1 -0
  575. package/operator/controllers/index.js +15 -0
  576. package/operator/controllers/map-workspace.d.ts +85 -0
  577. package/operator/controllers/map-workspace.d.ts.map +1 -0
  578. package/operator/controllers/map-workspace.js +296 -0
  579. package/operator/controllers/plan-review.d.ts +66 -0
  580. package/operator/controllers/plan-review.d.ts.map +1 -0
  581. package/operator/controllers/plan-review.js +124 -0
  582. package/operator/errors.d.ts +62 -0
  583. package/operator/errors.d.ts.map +1 -0
  584. package/operator/errors.js +75 -0
  585. package/operator/i18n/index.d.ts +10 -0
  586. package/operator/i18n/index.d.ts.map +1 -0
  587. package/operator/i18n/index.js +8 -0
  588. package/operator/i18n/messages.d.ts +19 -0
  589. package/operator/i18n/messages.d.ts.map +1 -0
  590. package/operator/i18n/messages.js +54 -0
  591. package/operator/index.d.ts +19 -0
  592. package/operator/index.d.ts.map +1 -0
  593. package/operator/index.js +15 -0
  594. package/operator/telemetry.d.ts +26 -0
  595. package/operator/telemetry.d.ts.map +1 -0
  596. package/operator/telemetry.js +9 -0
  597. package/operator/theming/index.d.ts +12 -0
  598. package/operator/theming/index.d.ts.map +1 -0
  599. package/operator/theming/index.js +9 -0
  600. package/operator/theming/provider.d.ts +27 -0
  601. package/operator/theming/provider.d.ts.map +1 -0
  602. package/operator/theming/provider.js +26 -0
  603. package/operator/theming/tokens.d.ts +28 -0
  604. package/operator/theming/tokens.d.ts.map +1 -0
  605. package/operator/theming/tokens.js +65 -0
  606. package/operator/workspace/events.d.ts +70 -0
  607. package/operator/workspace/events.d.ts.map +1 -0
  608. package/operator/workspace/events.js +9 -0
  609. package/operator/workspace/index.d.ts +12 -0
  610. package/operator/workspace/index.d.ts.map +1 -0
  611. package/operator/workspace/index.js +8 -0
  612. package/operator/workspace/types.d.ts +178 -0
  613. package/operator/workspace/types.d.ts.map +1 -0
  614. package/operator/workspace/types.js +47 -0
  615. package/operator/workspace/workspace.d.ts +58 -0
  616. package/operator/workspace/workspace.d.ts.map +1 -0
  617. package/operator/workspace/workspace.js +339 -0
  618. package/package.json +105 -0
  619. package/realtime/exploration.d.ts +16 -0
  620. package/realtime/exploration.d.ts.map +1 -0
  621. package/realtime/exploration.js +32 -0
  622. package/realtime/honua-server.d.ts +123 -0
  623. package/realtime/honua-server.d.ts.map +1 -0
  624. package/realtime/honua-server.js +188 -0
  625. package/realtime/index.d.ts +20 -0
  626. package/realtime/index.d.ts.map +1 -0
  627. package/realtime/index.js +14 -0
  628. package/realtime/projections.d.ts +30 -0
  629. package/realtime/projections.d.ts.map +1 -0
  630. package/realtime/projections.js +51 -0
  631. package/realtime/reducer.d.ts +14 -0
  632. package/realtime/reducer.d.ts.map +1 -0
  633. package/realtime/reducer.js +351 -0
  634. package/realtime/sse.d.ts +23 -0
  635. package/realtime/sse.d.ts.map +1 -0
  636. package/realtime/sse.js +143 -0
  637. package/realtime/store.d.ts +18 -0
  638. package/realtime/store.d.ts.map +1 -0
  639. package/realtime/store.js +63 -0
  640. package/realtime/types.d.ts +190 -0
  641. package/realtime/types.d.ts.map +1 -0
  642. package/realtime/types.js +10 -0
  643. package/replica-sync/client.d.ts +32 -0
  644. package/replica-sync/client.d.ts.map +1 -0
  645. package/replica-sync/client.js +52 -0
  646. package/replica-sync/errors.d.ts +22 -0
  647. package/replica-sync/errors.d.ts.map +1 -0
  648. package/replica-sync/errors.js +29 -0
  649. package/replica-sync/fixture.d.ts +40 -0
  650. package/replica-sync/fixture.d.ts.map +1 -0
  651. package/replica-sync/fixture.js +364 -0
  652. package/replica-sync/index.d.ts +22 -0
  653. package/replica-sync/index.d.ts.map +1 -0
  654. package/replica-sync/index.js +17 -0
  655. package/replica-sync/types.d.ts +270 -0
  656. package/replica-sync/types.d.ts.map +1 -0
  657. package/replica-sync/types.js +13 -0
  658. package/runtime/diff.d.ts +31 -0
  659. package/runtime/diff.d.ts.map +1 -0
  660. package/runtime/diff.js +143 -0
  661. package/runtime/errors.d.ts +40 -0
  662. package/runtime/errors.d.ts.map +1 -0
  663. package/runtime/errors.js +35 -0
  664. package/runtime/index.d.ts +59 -0
  665. package/runtime/index.d.ts.map +1 -0
  666. package/runtime/index.js +40 -0
  667. package/runtime/legend.d.ts +23 -0
  668. package/runtime/legend.d.ts.map +1 -0
  669. package/runtime/legend.js +38 -0
  670. package/runtime/load-package.d.ts +125 -0
  671. package/runtime/load-package.d.ts.map +1 -0
  672. package/runtime/load-package.js +272 -0
  673. package/runtime/map-package-fetch.d.ts +107 -0
  674. package/runtime/map-package-fetch.d.ts.map +1 -0
  675. package/runtime/map-package-fetch.js +336 -0
  676. package/runtime/map-package-realtime.d.ts +169 -0
  677. package/runtime/map-package-realtime.d.ts.map +1 -0
  678. package/runtime/map-package-realtime.js +350 -0
  679. package/runtime/map-package-validation.d.ts +30 -0
  680. package/runtime/map-package-validation.d.ts.map +1 -0
  681. package/runtime/map-package-validation.js +257 -0
  682. package/runtime/map-package-watch.d.ts +78 -0
  683. package/runtime/map-package-watch.d.ts.map +1 -0
  684. package/runtime/map-package-watch.js +695 -0
  685. package/runtime/map-package.d.ts +167 -0
  686. package/runtime/map-package.d.ts.map +1 -0
  687. package/runtime/map-package.js +15 -0
  688. package/runtime/ogc-styles.d.ts +110 -0
  689. package/runtime/ogc-styles.d.ts.map +1 -0
  690. package/runtime/ogc-styles.js +195 -0
  691. package/runtime/pmtiles-protocol.d.ts +77 -0
  692. package/runtime/pmtiles-protocol.d.ts.map +1 -0
  693. package/runtime/pmtiles-protocol.js +120 -0
  694. package/runtime/popups.d.ts +62 -0
  695. package/runtime/popups.d.ts.map +1 -0
  696. package/runtime/popups.js +95 -0
  697. package/runtime/query-tiles.d.ts +217 -0
  698. package/runtime/query-tiles.d.ts.map +1 -0
  699. package/runtime/query-tiles.js +801 -0
  700. package/runtime/runtime.d.ts +243 -0
  701. package/runtime/runtime.d.ts.map +1 -0
  702. package/runtime/runtime.js +1147 -0
  703. package/runtime/source-bridge.d.ts +99 -0
  704. package/runtime/source-bridge.d.ts.map +1 -0
  705. package/runtime/source-bridge.js +428 -0
  706. package/runtime/style-compose.d.ts +46 -0
  707. package/runtime/style-compose.d.ts.map +1 -0
  708. package/runtime/style-compose.js +144 -0
  709. package/runtime/style-interactions.d.ts +141 -0
  710. package/runtime/style-interactions.d.ts.map +1 -0
  711. package/runtime/style-interactions.js +574 -0
  712. package/runtime/style-spec-validation.d.ts +23 -0
  713. package/runtime/style-spec-validation.d.ts.map +1 -0
  714. package/runtime/style-spec-validation.js +357 -0
  715. package/scene-workspace/analysis-widgets.d.ts +334 -0
  716. package/scene-workspace/analysis-widgets.d.ts.map +1 -0
  717. package/scene-workspace/analysis-widgets.js +424 -0
  718. package/scene-workspace/cesium-adapter.d.ts +438 -0
  719. package/scene-workspace/cesium-adapter.d.ts.map +1 -0
  720. package/scene-workspace/cesium-adapter.js +493 -0
  721. package/scene-workspace/index.d.ts +21 -0
  722. package/scene-workspace/index.d.ts.map +1 -0
  723. package/scene-workspace/index.js +14 -0
  724. package/scene-workspace/primitives.d.ts +162 -0
  725. package/scene-workspace/primitives.d.ts.map +1 -0
  726. package/scene-workspace/primitives.js +255 -0
  727. package/scene-workspace/scene-discovery.d.ts +196 -0
  728. package/scene-workspace/scene-discovery.d.ts.map +1 -0
  729. package/scene-workspace/scene-discovery.js +228 -0
  730. package/scene-workspace/scene-view.d.ts +209 -0
  731. package/scene-workspace/scene-view.d.ts.map +1 -0
  732. package/scene-workspace/scene-view.js +267 -0
  733. package/scene-workspace/types.d.ts +229 -0
  734. package/scene-workspace/types.d.ts.map +1 -0
  735. package/scene-workspace/types.js +23 -0
  736. package/scene-workspace/workspace.d.ts +13 -0
  737. package/scene-workspace/workspace.d.ts.map +1 -0
  738. package/scene-workspace/workspace.js +391 -0
  739. package/share/denial.d.ts +78 -0
  740. package/share/denial.d.ts.map +1 -0
  741. package/share/denial.js +61 -0
  742. package/share/embed-token.d.ts +71 -0
  743. package/share/embed-token.d.ts.map +1 -0
  744. package/share/embed-token.js +99 -0
  745. package/share/index.d.ts +35 -0
  746. package/share/index.d.ts.map +1 -0
  747. package/share/index.js +30 -0
  748. package/share/open-data.d.ts +114 -0
  749. package/share/open-data.d.ts.map +1 -0
  750. package/share/open-data.js +81 -0
  751. package/share/types.d.ts +163 -0
  752. package/share/types.d.ts.map +1 -0
  753. package/share/types.js +17 -0
  754. package/studio/capability-manifest.d.ts +285 -0
  755. package/studio/capability-manifest.d.ts.map +1 -0
  756. package/studio/capability-manifest.js +59 -0
  757. package/studio/chart-spec.d.ts +85 -0
  758. package/studio/chart-spec.d.ts.map +1 -0
  759. package/studio/chart-spec.js +106 -0
  760. package/studio/index.d.ts +34 -0
  761. package/studio/index.d.ts.map +1 -0
  762. package/studio/index.js +27 -0
  763. package/studio/provenance.d.ts +131 -0
  764. package/studio/provenance.d.ts.map +1 -0
  765. package/studio/provenance.js +39 -0
  766. package/studio/publish.d.ts +64 -0
  767. package/studio/publish.d.ts.map +1 -0
  768. package/studio/publish.js +13 -0
  769. package/studio/types.d.ts +278 -0
  770. package/studio/types.d.ts.map +1 -0
  771. package/studio/types.js +71 -0
  772. package/studio/validate.d.ts +45 -0
  773. package/studio/validate.d.ts.map +1 -0
  774. package/studio/validate.js +255 -0
  775. package/studio/validation.d.ts +112 -0
  776. package/studio/validation.d.ts.map +1 -0
  777. package/studio/validation.js +42 -0
  778. package/style/factory.d.ts +30 -0
  779. package/style/factory.d.ts.map +1 -0
  780. package/style/factory.js +61 -0
  781. package/style/index.d.ts +25 -0
  782. package/style/index.d.ts.map +1 -0
  783. package/style/index.js +24 -0
  784. package/style/specification.d.ts +203 -0
  785. package/style/specification.d.ts.map +1 -0
  786. package/style/specification.js +178 -0
  787. package/style/wms-wmts-resolvers.d.ts +38 -0
  788. package/style/wms-wmts-resolvers.d.ts.map +1 -0
  789. package/style/wms-wmts-resolvers.js +92 -0
  790. package/web-components/controller.d.ts +39 -0
  791. package/web-components/controller.d.ts.map +1 -0
  792. package/web-components/controller.js +640 -0
  793. package/web-components/elements.d.ts +210 -0
  794. package/web-components/elements.d.ts.map +1 -0
  795. package/web-components/elements.js +1651 -0
  796. package/web-components/index.d.ts +24 -0
  797. package/web-components/index.d.ts.map +1 -0
  798. package/web-components/index.js +22 -0
  799. package/web-components/maplibre-renderer.d.ts +22 -0
  800. package/web-components/maplibre-renderer.d.ts.map +1 -0
  801. package/web-components/maplibre-renderer.js +474 -0
  802. package/web-components/types.d.ts +397 -0
  803. package/web-components/types.d.ts.map +1 -0
  804. package/web-components/types.js +1 -0
  805. package/webmap/contract.d.ts +28 -0
  806. package/webmap/contract.d.ts.map +1 -0
  807. package/webmap/contract.js +130 -0
  808. package/webmap/convert-basemap.d.ts +17 -0
  809. package/webmap/convert-basemap.d.ts.map +1 -0
  810. package/webmap/convert-basemap.js +78 -0
  811. package/webmap/convert-extent.d.ts +17 -0
  812. package/webmap/convert-extent.d.ts.map +1 -0
  813. package/webmap/convert-extent.js +114 -0
  814. package/webmap/convert-label.d.ts +13 -0
  815. package/webmap/convert-label.d.ts.map +1 -0
  816. package/webmap/convert-label.js +125 -0
  817. package/webmap/convert-layer.d.ts +22 -0
  818. package/webmap/convert-layer.d.ts.map +1 -0
  819. package/webmap/convert-layer.js +181 -0
  820. package/webmap/convert-popup.d.ts +34 -0
  821. package/webmap/convert-popup.d.ts.map +1 -0
  822. package/webmap/convert-popup.js +68 -0
  823. package/webmap/convert-renderer.d.ts +17 -0
  824. package/webmap/convert-renderer.d.ts.map +1 -0
  825. package/webmap/convert-renderer.js +161 -0
  826. package/webmap/convert-symbol.d.ts +17 -0
  827. package/webmap/convert-symbol.d.ts.map +1 -0
  828. package/webmap/convert-symbol.js +122 -0
  829. package/webmap/index.d.ts +44 -0
  830. package/webmap/index.d.ts.map +1 -0
  831. package/webmap/index.js +33 -0
  832. package/webmap/parse.d.ts +25 -0
  833. package/webmap/parse.d.ts.map +1 -0
  834. package/webmap/parse.js +83 -0
  835. package/webmap/types.d.ts +264 -0
  836. package/webmap/types.d.ts.map +1 -0
  837. package/webmap/types.js +13 -0
  838. package/webmap/warnings.d.ts +30 -0
  839. package/webmap/warnings.d.ts.map +1 -0
  840. package/webmap/warnings.js +37 -0
@@ -0,0 +1,364 @@
1
+ /**
2
+ * In-memory fixture transport for disconnected replica and sync-conflict
3
+ * review. It powers Console and Studio temporal/conflict viewer prototypes and
4
+ * SDK tests without a live server.
5
+ *
6
+ * The default seed covers the states the issue calls out: an active replica, an
7
+ * expired replica, a pending conflict, an already-resolved conflict, a batch of
8
+ * conflicts, and a dataset where conflict review is unsupported.
9
+ *
10
+ * @module
11
+ */
12
+ import { HonuaReplicaSyncError } from "./errors.js";
13
+ const FULL_CAPABILITIES = {
14
+ sync: true,
15
+ createReplica: true,
16
+ synchronizeReplica: true,
17
+ conflictReview: true,
18
+ conflictResolution: true,
19
+ conflictPolicies: ["server-wins", "client-wins", "manual"],
20
+ directions: ["bidirectional", "upload", "download"],
21
+ };
22
+ const NO_CONFLICT_REVIEW_CAPABILITIES = {
23
+ sync: true,
24
+ createReplica: true,
25
+ synchronizeReplica: true,
26
+ conflictReview: false,
27
+ conflictResolution: false,
28
+ conflictPolicies: ["server-wins", "client-wins"],
29
+ directions: ["bidirectional"],
30
+ };
31
+ export function createFixtureReplicaSyncTransport(options = {}) {
32
+ return new FixtureReplicaSyncTransport(options);
33
+ }
34
+ export class FixtureReplicaSyncTransport {
35
+ #now;
36
+ #capabilities = new Map();
37
+ #replicas = new Map();
38
+ #conflicts = new Map();
39
+ constructor(options = {}) {
40
+ this.#now = options.now ?? (() => new Date());
41
+ const seed = options.seed ?? defaultSeed();
42
+ for (const [key, value] of Object.entries(seed.capabilities ?? {}))
43
+ this.#capabilities.set(key, value);
44
+ for (const replica of seed.replicas ?? [])
45
+ this.#replicas.set(replica.id, replica);
46
+ for (const conflict of seed.conflicts ?? [])
47
+ this.#conflicts.set(conflict.id, conflict);
48
+ }
49
+ async capabilities(datasetId, sourceId) {
50
+ const key = capabilityKey(datasetId, sourceId);
51
+ const caps = this.#capabilities.get(key) ?? this.#capabilities.get(datasetId);
52
+ if (!caps) {
53
+ throw new HonuaReplicaSyncError("unsupported-sync", `Disconnected sync is not available for dataset "${datasetId}".`);
54
+ }
55
+ return caps;
56
+ }
57
+ async listReplicas(request = {}) {
58
+ const items = [...this.#replicas.values()].filter((replica) => {
59
+ if (request.datasetId !== undefined && replica.datasetId !== request.datasetId)
60
+ return false;
61
+ if (request.sourceId !== undefined && replica.sourceId !== request.sourceId)
62
+ return false;
63
+ if (request.ownerId !== undefined && replica.owner?.id !== request.ownerId)
64
+ return false;
65
+ if (request.states !== undefined && !request.states.includes(replica.state))
66
+ return false;
67
+ return true;
68
+ });
69
+ return paginate(items, request.limit, request.cursor);
70
+ }
71
+ async getReplica(replicaId) {
72
+ const replica = this.#replicas.get(replicaId);
73
+ if (!replica) {
74
+ throw new HonuaReplicaSyncError("replica-not-found", `Replica "${replicaId}" was not found.`);
75
+ }
76
+ return replica;
77
+ }
78
+ async listConflicts(request = {}) {
79
+ const replica = request.replicaId === undefined ? undefined : this.#replicas.get(request.replicaId);
80
+ if (request.replicaId !== undefined && replica === undefined) {
81
+ throw new HonuaReplicaSyncError("replica-not-found", `Replica "${request.replicaId}" was not found.`);
82
+ }
83
+ this.assertConflictReviewSupported(replica?.datasetId ?? request.datasetId);
84
+ const items = [...this.#conflicts.values()].filter((conflict) => {
85
+ if (request.replicaId !== undefined && conflict.replicaId !== request.replicaId)
86
+ return false;
87
+ if (request.datasetId !== undefined && conflict.datasetId !== request.datasetId)
88
+ return false;
89
+ if (request.statuses !== undefined && !request.statuses.includes(conflict.status))
90
+ return false;
91
+ if (request.kinds !== undefined && !request.kinds.includes(conflict.kind))
92
+ return false;
93
+ return true;
94
+ });
95
+ return paginate(items.map(toSummary), request.limit, request.cursor);
96
+ }
97
+ async getConflict(conflictId) {
98
+ const conflict = this.#conflicts.get(conflictId);
99
+ if (!conflict) {
100
+ throw new HonuaReplicaSyncError("conflict-not-found", `Sync conflict "${conflictId}" was not found.`);
101
+ }
102
+ this.assertConflictReviewSupported(conflict.datasetId);
103
+ return conflict;
104
+ }
105
+ async resolveConflict(resolution) {
106
+ const conflict = this.#conflicts.get(resolution.conflictId);
107
+ if (!conflict) {
108
+ throw new HonuaReplicaSyncError("conflict-not-found", `Sync conflict "${resolution.conflictId}" was not found.`);
109
+ }
110
+ this.assertConflictReviewSupported(conflict.datasetId);
111
+ if (conflict.status === "resolved" || conflict.status === "discarded") {
112
+ throw new HonuaReplicaSyncError("conflict-already-resolved", `Sync conflict "${conflict.id}" is already resolved.`, {
113
+ details: { status: conflict.status },
114
+ });
115
+ }
116
+ const record = {
117
+ conflictId: conflict.id,
118
+ choice: resolution.choice,
119
+ status: resolution.choice === "discard" ? "discarded" : "resolved",
120
+ resolvedAt: this.#now().toISOString(),
121
+ resolvedBy: resolution.resolvedBy,
122
+ serverGen: bumpServerGen(conflict.serverGen),
123
+ note: resolution.note,
124
+ };
125
+ this.#conflicts.set(conflict.id, { ...conflict, status: record.status, resolution: record });
126
+ return record;
127
+ }
128
+ async resolveConflicts(resolutions) {
129
+ const records = [];
130
+ const failures = [];
131
+ for (const resolution of resolutions) {
132
+ try {
133
+ records.push(await this.resolveConflict(resolution));
134
+ }
135
+ catch (error) {
136
+ failures.push({
137
+ conflictId: resolution.conflictId,
138
+ reason: error instanceof Error ? error.message : String(error),
139
+ });
140
+ }
141
+ }
142
+ return { records, failures };
143
+ }
144
+ assertConflictReviewSupported(datasetId) {
145
+ if (datasetId === undefined)
146
+ return;
147
+ const caps = this.#capabilities.get(datasetId);
148
+ if (caps && !caps.conflictReview) {
149
+ throw new HonuaReplicaSyncError("unsupported-conflict-review", `Manual conflict review is not available for dataset "${datasetId}".`);
150
+ }
151
+ }
152
+ }
153
+ function capabilityKey(datasetId, sourceId) {
154
+ return sourceId === undefined ? datasetId : `${datasetId}::${sourceId}`;
155
+ }
156
+ function toSummary(conflict) {
157
+ const { base: _base, clientState: _clientState, serverState: _serverState, fieldConflicts: _fieldConflicts, geometryConflict: _geometryConflict, resolutionOptions: _resolutionOptions, resolution: _resolution, serverGen: _serverGen, metadata: _metadata, ...summary } = conflict;
158
+ return summary;
159
+ }
160
+ function paginate(items, limit, cursor) {
161
+ const start = cursor === undefined ? 0 : Math.max(0, Number.parseInt(cursor, 10) || 0);
162
+ const end = limit === undefined ? items.length : start + limit;
163
+ const page = items.slice(start, end);
164
+ const nextCursor = end < items.length ? String(end) : undefined;
165
+ return { items: page, cursor: nextCursor, totalCount: items.length };
166
+ }
167
+ function bumpServerGen(serverGen) {
168
+ const current = serverGen === undefined ? 0 : Number.parseInt(serverGen, 10) || 0;
169
+ return String(current + 1);
170
+ }
171
+ /**
172
+ * Default seed covering every state the issue enumerates. Re-export so apps and
173
+ * tests can extend it.
174
+ */
175
+ export function defaultSeed() {
176
+ const owner = { id: "user-amelia", displayName: "Amelia Stone", kind: "user" };
177
+ const device = { id: "device-field-01", displayName: "Field Tablet 01", platform: "android" };
178
+ const activeReplica = {
179
+ id: "replica-active-1",
180
+ name: "Parcels — North District",
181
+ datasetId: "parcels",
182
+ sourceId: "parcels",
183
+ state: "active",
184
+ direction: "bidirectional",
185
+ conflictPolicy: "manual",
186
+ owner,
187
+ device,
188
+ createdAt: "2026-05-20T08:00:00.000Z",
189
+ expiresAt: "2026-06-20T08:00:00.000Z",
190
+ status: {
191
+ serverGen: "42",
192
+ targetServerGen: "47",
193
+ lastSyncedAt: "2026-05-28T16:30:00.000Z",
194
+ lastSyncDirection: "bidirectional",
195
+ inProgress: false,
196
+ pendingUploads: 3,
197
+ pendingDownloads: 5,
198
+ openConflicts: 2,
199
+ },
200
+ };
201
+ const expiredReplica = {
202
+ id: "replica-expired-1",
203
+ name: "Inspections — South District",
204
+ datasetId: "inspections",
205
+ sourceId: "inspections",
206
+ state: "expired",
207
+ direction: "upload",
208
+ conflictPolicy: "server-wins",
209
+ owner: { id: "user-noah", displayName: "Noah Patel", kind: "user" },
210
+ device: { id: "device-field-07", displayName: "Field Tablet 07", platform: "ios" },
211
+ createdAt: "2026-03-01T08:00:00.000Z",
212
+ expiresAt: "2026-04-01T08:00:00.000Z",
213
+ status: {
214
+ serverGen: "11",
215
+ lastSyncedAt: "2026-03-30T12:00:00.000Z",
216
+ lastSyncDirection: "upload",
217
+ inProgress: false,
218
+ pendingUploads: 0,
219
+ pendingDownloads: 0,
220
+ openConflicts: 0,
221
+ lastError: "Replica lease expired before final synchronization.",
222
+ },
223
+ };
224
+ const pendingConflict = {
225
+ id: "conflict-pending-1",
226
+ replicaId: "replica-active-1",
227
+ datasetId: "parcels",
228
+ sourceId: "parcels",
229
+ layerId: 0,
230
+ featureId: "parcel-1024",
231
+ kind: "replica-sync",
232
+ status: "pending",
233
+ clientOperation: "update",
234
+ serverOperation: "update",
235
+ detectedAt: "2026-05-28T16:30:05.000Z",
236
+ fieldConflictCount: 1,
237
+ hasGeometryConflict: true,
238
+ client: owner,
239
+ device,
240
+ serverGen: "47",
241
+ base: {
242
+ operation: "update",
243
+ attributes: { zoning: "R1", area: 1200 },
244
+ editedAt: "2026-05-20T08:00:00.000Z",
245
+ },
246
+ clientState: {
247
+ operation: "update",
248
+ attributes: { zoning: "R2", area: 1200 },
249
+ geometry: { type: "Polygon", coordinates: [] },
250
+ editedAt: "2026-05-27T10:15:00.000Z",
251
+ editedBy: owner,
252
+ device,
253
+ },
254
+ serverState: {
255
+ operation: "update",
256
+ attributes: { zoning: "C1", area: 1200 },
257
+ geometry: { type: "Polygon", coordinates: [] },
258
+ editedAt: "2026-05-28T09:45:00.000Z",
259
+ editedBy: { id: "user-office", displayName: "Office Editor", kind: "user" },
260
+ },
261
+ fieldConflicts: [{ field: "zoning", baseValue: "R1", clientValue: "R2", serverValue: "C1", diverged: true }],
262
+ geometryConflict: {
263
+ changed: true,
264
+ clientChanged: true,
265
+ serverChanged: true,
266
+ geometryType: "Polygon",
267
+ divergenceMeters: 3.4,
268
+ note: "Both sides moved a shared vertex.",
269
+ },
270
+ resolutionOptions: [
271
+ { choice: "accept-client", label: "Keep field edit", available: true },
272
+ { choice: "accept-server", label: "Keep office edit", available: true },
273
+ { choice: "merge", label: "Merge values", available: true },
274
+ { choice: "discard", label: "Discard both", available: true },
275
+ ],
276
+ };
277
+ const resolvedConflict = {
278
+ id: "conflict-resolved-1",
279
+ replicaId: "replica-active-1",
280
+ datasetId: "parcels",
281
+ sourceId: "parcels",
282
+ layerId: 0,
283
+ featureId: "parcel-2048",
284
+ kind: "replica-sync",
285
+ status: "resolved",
286
+ clientOperation: "update",
287
+ serverOperation: "delete",
288
+ detectedAt: "2026-05-26T11:00:00.000Z",
289
+ fieldConflictCount: 0,
290
+ hasGeometryConflict: false,
291
+ client: owner,
292
+ device,
293
+ serverGen: "44",
294
+ base: { operation: "update", attributes: { owner: "Acme" } },
295
+ clientState: {
296
+ operation: "update",
297
+ attributes: { owner: "Acme Holdings" },
298
+ editedAt: "2026-05-25T14:00:00.000Z",
299
+ editedBy: owner,
300
+ device,
301
+ },
302
+ serverState: {
303
+ operation: "delete",
304
+ deleted: true,
305
+ editedAt: "2026-05-26T10:00:00.000Z",
306
+ editedBy: { id: "user-office", displayName: "Office Editor", kind: "user" },
307
+ },
308
+ fieldConflicts: [],
309
+ resolutionOptions: [
310
+ { choice: "accept-client", label: "Restore feature", available: true },
311
+ { choice: "accept-server", label: "Keep deletion", available: true },
312
+ { choice: "merge", label: "Merge values", available: false, reason: "Server side was deleted." },
313
+ { choice: "discard", label: "Discard", available: true },
314
+ ],
315
+ resolution: {
316
+ conflictId: "conflict-resolved-1",
317
+ choice: "accept-client",
318
+ status: "resolved",
319
+ resolvedAt: "2026-05-26T12:00:00.000Z",
320
+ resolvedBy: owner,
321
+ serverGen: "45",
322
+ note: "Restored — feature was edited in the field after the office delete.",
323
+ },
324
+ };
325
+ // A second pending conflict so batch-resolution scenarios have >1 input.
326
+ const batchConflict = {
327
+ ...pendingConflict,
328
+ id: "conflict-pending-2",
329
+ featureId: "parcel-3072",
330
+ detectedAt: "2026-05-28T16:31:00.000Z",
331
+ serverGen: "47",
332
+ fieldConflicts: [{ field: "area", baseValue: 1200, clientValue: 1250, serverValue: 1300, diverged: true }],
333
+ fieldConflictCount: 1,
334
+ hasGeometryConflict: false,
335
+ geometryConflict: undefined,
336
+ };
337
+ // Dataset that supports sync but not manual conflict review.
338
+ const unsupportedReviewReplica = {
339
+ id: "replica-no-review-1",
340
+ name: "Hydrants — server-wins",
341
+ datasetId: "hydrants",
342
+ sourceId: "hydrants",
343
+ state: "active",
344
+ direction: "bidirectional",
345
+ conflictPolicy: "server-wins",
346
+ createdAt: "2026-05-22T08:00:00.000Z",
347
+ status: {
348
+ serverGen: "9",
349
+ lastSyncedAt: "2026-05-29T07:00:00.000Z",
350
+ lastSyncDirection: "bidirectional",
351
+ inProgress: false,
352
+ openConflicts: 0,
353
+ },
354
+ };
355
+ return {
356
+ capabilities: {
357
+ parcels: FULL_CAPABILITIES,
358
+ inspections: FULL_CAPABILITIES,
359
+ hydrants: NO_CONFLICT_REVIEW_CAPABILITIES,
360
+ },
361
+ replicas: [activeReplica, expiredReplica, unsupportedReviewReplica],
362
+ conflicts: [pendingConflict, resolvedConflict, batchConflict],
363
+ };
364
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Disconnected replica and sync-conflict SDK contracts.
3
+ *
4
+ * Console, MCP, QGIS, Studio, and mobile-adjacent tools share one product
5
+ * contract for disconnected replica metadata and sync conflict review. The
6
+ * surface is Esri-aligned (Sync, createReplica, synchronizeReplica, replica
7
+ * names, server generation cursors, conflict behavior) without hard-coding
8
+ * ArcGIS-only names, and composes with the temporal history contracts in
9
+ * honua-sdk-js#227.
10
+ *
11
+ * @experimental This entrypoint is not yet covered by the SDK's semver
12
+ * contract — the surface may change in any minor release prior to `1.0.0`.
13
+ * @module
14
+ */
15
+ export { HonuaReplicaSyncClient, createHonuaReplicaSync } from "./client.js";
16
+ export type { HonuaReplicaSyncClientOptions } from "./client.js";
17
+ export { HonuaReplicaSyncError, isHonuaReplicaSyncError, isUnsupportedReplicaSyncError, } from "./errors.js";
18
+ export type { ReplicaSyncErrorCode } from "./errors.js";
19
+ export { FixtureReplicaSyncTransport, createFixtureReplicaSyncTransport, defaultSeed as defaultReplicaSyncSeed, } from "./fixture.js";
20
+ export type { FixtureReplicaSyncSeed, FixtureReplicaSyncTransportOptions, } from "./fixture.js";
21
+ export type { BatchConflictResolutionResult, ConflictFeatureState, FeatureId, SourceId, ConflictResolutionChoice, ConflictResolutionOption, DisconnectedReplica, FieldConflict, GeometryConflictSummary, ListConflictsRequest, ListReplicasRequest, ReplicaConflictPolicy, ReplicaId, ReplicaState, ReplicaSyncCapabilities, ReplicaSyncDirection, ReplicaSyncStatus, ReplicaSyncTransport, ServerGenerationCursor, SyncActor, SyncConflictDetail, SyncConflictId, SyncConflictKind, SyncConflictOperation, SyncConflictResolution, SyncConflictResolutionRecord, SyncConflictStatus, SyncConflictSummary, SyncDevice, SyncPage, } from "./types.js";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/replica-sync/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC7E,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,WAAW,IAAI,sBAAsB,GACtC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,SAAS,EACT,QAAQ,EACR,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,QAAQ,GACT,MAAM,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Disconnected replica and sync-conflict SDK contracts.
3
+ *
4
+ * Console, MCP, QGIS, Studio, and mobile-adjacent tools share one product
5
+ * contract for disconnected replica metadata and sync conflict review. The
6
+ * surface is Esri-aligned (Sync, createReplica, synchronizeReplica, replica
7
+ * names, server generation cursors, conflict behavior) without hard-coding
8
+ * ArcGIS-only names, and composes with the temporal history contracts in
9
+ * honua-sdk-js#227.
10
+ *
11
+ * @experimental This entrypoint is not yet covered by the SDK's semver
12
+ * contract — the surface may change in any minor release prior to `1.0.0`.
13
+ * @module
14
+ */
15
+ export { HonuaReplicaSyncClient, createHonuaReplicaSync } from "./client.js";
16
+ export { HonuaReplicaSyncError, isHonuaReplicaSyncError, isUnsupportedReplicaSyncError, } from "./errors.js";
17
+ export { FixtureReplicaSyncTransport, createFixtureReplicaSyncTransport, defaultSeed as defaultReplicaSyncSeed, } from "./fixture.js";
@@ -0,0 +1,270 @@
1
+ /**
2
+ * Disconnected replica and sync-conflict SDK contracts.
3
+ *
4
+ * These types give Console, MCP, QGIS, Studio, and mobile-adjacent tools a
5
+ * single product-level shape for disconnected replica metadata and sync
6
+ * conflict review, instead of forcing every client to infer it from low-level
7
+ * sync responses. The model is Esri-aligned (replicas, server generation
8
+ * cursors, conflict behavior) but does not hard-code ArcGIS-only names into the
9
+ * public Honua surface.
10
+ *
11
+ * @module
12
+ */
13
+ import type { FeatureId, SourceId } from "../contract/types.js";
14
+ /**
15
+ * Re-exported so replica-sync conflict records compose directly with the
16
+ * temporal history contracts (honua-sdk-js#227), which key revisions and
17
+ * timelines by the same {@link FeatureId} / {@link SourceId} aliases. A reviewer
18
+ * can take a conflict's `featureId` and feed it straight into the temporal
19
+ * feature-timeline contract without re-typing.
20
+ */
21
+ export type { FeatureId, SourceId } from "../contract/types.js";
22
+ /** Stable identifier for a disconnected replica. */
23
+ export type ReplicaId = string;
24
+ /** Stable identifier for a sync conflict awaiting review. */
25
+ export type SyncConflictId = string;
26
+ /**
27
+ * Monotonic server generation cursor. A replica tracks the server generation it
28
+ * last synchronized against; the server advances this on every committed edit.
29
+ * Esri exposes this as `serverGen` on Sync responses — Honua keeps the cursor
30
+ * opaque so transports can use sequence numbers, hybrid logical clocks, or
31
+ * vector cursors.
32
+ */
33
+ export type ServerGenerationCursor = string;
34
+ /** Lifecycle state of a disconnected replica. */
35
+ export type ReplicaState = "provisioning" | "active" | "syncing" | "out-of-date" | "expired" | "removed";
36
+ /**
37
+ * How a replica reconciles concurrent edits when synchronizing. Mirrors Esri
38
+ * `createReplica` conflict behavior without binding to its wire spelling.
39
+ */
40
+ export type ReplicaConflictPolicy = "server-wins" | "client-wins" | "manual" | "last-writer-wins";
41
+ /** Direction(s) of data flow a replica supports. */
42
+ export type ReplicaSyncDirection = "bidirectional" | "upload" | "download";
43
+ /** Per-source capability flags advertised for a replica's parent dataset. */
44
+ export interface ReplicaSyncCapabilities {
45
+ /** Replica creation / disconnected editing is offered at all. */
46
+ readonly sync: boolean;
47
+ /** Server can register new replicas (`createReplica`). */
48
+ readonly createReplica: boolean;
49
+ /** Existing replicas can be synchronized (`synchronizeReplica`). */
50
+ readonly synchronizeReplica: boolean;
51
+ /** Server retains per-conflict detail for manual review. */
52
+ readonly conflictReview: boolean;
53
+ /** Conflict resolutions can be submitted back through the SDK. */
54
+ readonly conflictResolution: boolean;
55
+ /** Supported reconciliation policies for new replicas. */
56
+ readonly conflictPolicies: ReadonlyArray<ReplicaConflictPolicy>;
57
+ /** Supported sync directions. */
58
+ readonly directions: ReadonlyArray<ReplicaSyncDirection>;
59
+ }
60
+ /** Actor (person, service, or agent) attributed to a replica or edit. */
61
+ export interface SyncActor {
62
+ readonly id: string;
63
+ readonly displayName?: string;
64
+ readonly kind?: "user" | "service" | "agent" | (string & {});
65
+ }
66
+ /** Device a disconnected replica is checked out to. */
67
+ export interface SyncDevice {
68
+ readonly id: string;
69
+ readonly displayName?: string;
70
+ readonly platform?: string;
71
+ readonly lastSeenAt?: string;
72
+ }
73
+ /** Outcome of the most recent synchronization attempt for a replica. */
74
+ export interface ReplicaSyncStatus {
75
+ /** Server generation the replica was last reconciled against. */
76
+ readonly serverGen?: ServerGenerationCursor;
77
+ /** Server generation the replica is currently aware of (may be ahead). */
78
+ readonly targetServerGen?: ServerGenerationCursor;
79
+ readonly lastSyncedAt?: string;
80
+ readonly lastSyncDirection?: ReplicaSyncDirection;
81
+ readonly inProgress: boolean;
82
+ /** Count of edits uploaded but not yet acknowledged by the server. */
83
+ readonly pendingUploads?: number;
84
+ /** Count of server edits not yet applied to the replica. */
85
+ readonly pendingDownloads?: number;
86
+ /** Open conflicts attributed to this replica. */
87
+ readonly openConflicts: number;
88
+ readonly lastError?: string;
89
+ }
90
+ /** A disconnected replica registered against a Honua dataset. */
91
+ export interface DisconnectedReplica {
92
+ readonly id: ReplicaId;
93
+ /**
94
+ * Human-facing replica name. Esri parity surfaces a server-assigned replica
95
+ * name; Honua keeps it optional and informational.
96
+ */
97
+ readonly name?: string;
98
+ readonly datasetId: string;
99
+ readonly sourceId?: SourceId;
100
+ readonly state: ReplicaState;
101
+ readonly direction: ReplicaSyncDirection;
102
+ readonly conflictPolicy: ReplicaConflictPolicy;
103
+ readonly owner?: SyncActor;
104
+ readonly device?: SyncDevice;
105
+ readonly createdAt: string;
106
+ /** When the replica's server-side lease expires; absent means no expiry. */
107
+ readonly expiresAt?: string;
108
+ readonly status: ReplicaSyncStatus;
109
+ readonly metadata?: Readonly<Record<string, unknown>>;
110
+ }
111
+ /** Lifecycle of a single sync conflict. */
112
+ export type SyncConflictStatus = "pending" | "resolving" | "resolved" | "discarded";
113
+ /** The kind of edit that produced a conflicting side. */
114
+ export type SyncConflictOperation = "create" | "update" | "delete";
115
+ /**
116
+ * Distinguishes a disconnected-replica sync conflict from a named-version
117
+ * reconcile/post conflict. Clients use this to route review UI correctly and to
118
+ * avoid mixing the two conflict models (see honua-server#371).
119
+ */
120
+ export type SyncConflictKind = "replica-sync" | "version-reconcile";
121
+ /** A single conflicting attribute value. */
122
+ export interface FieldConflict {
123
+ readonly field: string;
124
+ readonly baseValue?: unknown;
125
+ readonly clientValue?: unknown;
126
+ readonly serverValue?: unknown;
127
+ /** True when client and server diverged from the common base. */
128
+ readonly diverged: boolean;
129
+ }
130
+ /** Summary of a geometry-level conflict without shipping full geometries. */
131
+ export interface GeometryConflictSummary {
132
+ readonly changed: boolean;
133
+ readonly clientChanged: boolean;
134
+ readonly serverChanged: boolean;
135
+ readonly geometryType?: string;
136
+ /** Hausdorff-style or area-delta hint, when the transport computes one. */
137
+ readonly divergenceMeters?: number;
138
+ readonly note?: string;
139
+ }
140
+ /** One side of a three-way conflict (base / client / server feature state). */
141
+ export interface ConflictFeatureState {
142
+ readonly operation: SyncConflictOperation;
143
+ readonly attributes?: Readonly<Record<string, unknown>>;
144
+ readonly geometry?: unknown;
145
+ readonly editedAt?: string;
146
+ readonly editedBy?: SyncActor;
147
+ readonly device?: SyncDevice;
148
+ /** Present when the feature was deleted on this side. */
149
+ readonly deleted?: boolean;
150
+ }
151
+ /** How a single conflict may be resolved. */
152
+ export type ConflictResolutionChoice = "accept-client" | "accept-server" | "merge" | "discard";
153
+ /** A resolution option the server is willing to accept for a conflict. */
154
+ export interface ConflictResolutionOption {
155
+ readonly choice: ConflictResolutionChoice;
156
+ readonly label?: string;
157
+ /** False when the option is shown but not currently selectable. */
158
+ readonly available: boolean;
159
+ readonly reason?: string;
160
+ }
161
+ /** Lightweight conflict record returned by listings. */
162
+ export interface SyncConflictSummary {
163
+ readonly id: SyncConflictId;
164
+ readonly replicaId: ReplicaId;
165
+ readonly datasetId: string;
166
+ readonly sourceId?: SourceId;
167
+ readonly layerId?: string | number;
168
+ /** Shared with the temporal contracts (#227) so a conflict's feature can be
169
+ * fed straight into a temporal feature timeline. */
170
+ readonly featureId: FeatureId;
171
+ readonly kind: SyncConflictKind;
172
+ readonly status: SyncConflictStatus;
173
+ readonly clientOperation: SyncConflictOperation;
174
+ readonly serverOperation: SyncConflictOperation;
175
+ readonly detectedAt: string;
176
+ /** Number of conflicting fields; geometry counts separately. */
177
+ readonly fieldConflictCount: number;
178
+ readonly hasGeometryConflict: boolean;
179
+ readonly client?: SyncActor;
180
+ readonly device?: SyncDevice;
181
+ }
182
+ /** Full three-way conflict detail for manual review. */
183
+ export interface SyncConflictDetail extends SyncConflictSummary {
184
+ readonly serverGen?: ServerGenerationCursor;
185
+ readonly base: ConflictFeatureState;
186
+ readonly clientState: ConflictFeatureState;
187
+ readonly serverState: ConflictFeatureState;
188
+ readonly fieldConflicts: ReadonlyArray<FieldConflict>;
189
+ readonly geometryConflict?: GeometryConflictSummary;
190
+ readonly resolutionOptions: ReadonlyArray<ConflictResolutionOption>;
191
+ /** Resolution recorded once the conflict reaches a terminal state. */
192
+ readonly resolution?: SyncConflictResolutionRecord;
193
+ readonly metadata?: Readonly<Record<string, unknown>>;
194
+ }
195
+ /** A resolution submitted by a reviewer. */
196
+ export interface SyncConflictResolution {
197
+ readonly conflictId: SyncConflictId;
198
+ readonly choice: ConflictResolutionChoice;
199
+ /** Required when `choice` is `merge`: the field values to commit. */
200
+ readonly mergedAttributes?: Readonly<Record<string, unknown>>;
201
+ readonly mergedGeometry?: unknown;
202
+ readonly note?: string;
203
+ readonly resolvedBy?: SyncActor;
204
+ }
205
+ /** Server acknowledgement of an applied resolution. */
206
+ export interface SyncConflictResolutionRecord {
207
+ readonly conflictId: SyncConflictId;
208
+ readonly choice: ConflictResolutionChoice;
209
+ readonly status: "resolved" | "discarded";
210
+ readonly resolvedAt: string;
211
+ readonly resolvedBy?: SyncActor;
212
+ /** Server generation produced by committing the resolution. */
213
+ readonly serverGen?: ServerGenerationCursor;
214
+ readonly note?: string;
215
+ }
216
+ /** Pageable request for the replica listing. */
217
+ export interface ListReplicasRequest {
218
+ readonly datasetId?: string;
219
+ readonly sourceId?: SourceId;
220
+ readonly states?: ReadonlyArray<ReplicaState>;
221
+ readonly ownerId?: string;
222
+ readonly limit?: number;
223
+ readonly cursor?: string;
224
+ readonly signal?: AbortSignal;
225
+ }
226
+ /** Pageable request for conflict listings. */
227
+ export interface ListConflictsRequest {
228
+ readonly replicaId?: ReplicaId;
229
+ readonly datasetId?: string;
230
+ readonly statuses?: ReadonlyArray<SyncConflictStatus>;
231
+ readonly kinds?: ReadonlyArray<SyncConflictKind>;
232
+ readonly limit?: number;
233
+ readonly cursor?: string;
234
+ readonly signal?: AbortSignal;
235
+ }
236
+ /** A page of results plus an optional continuation cursor. */
237
+ export interface SyncPage<T> {
238
+ readonly items: ReadonlyArray<T>;
239
+ readonly cursor?: string;
240
+ readonly totalCount?: number;
241
+ }
242
+ /** Result of submitting a batch of resolutions. */
243
+ export interface BatchConflictResolutionResult {
244
+ readonly records: ReadonlyArray<SyncConflictResolutionRecord>;
245
+ /** Conflicts that could not be resolved, with a reason. */
246
+ readonly failures: ReadonlyArray<{
247
+ readonly conflictId: SyncConflictId;
248
+ readonly reason: string;
249
+ }>;
250
+ }
251
+ /**
252
+ * Transport-neutral contract the client drives. A fixture transport ships with
253
+ * the SDK; a Connect/HTTP adapter can implement the same surface when the
254
+ * server endpoints land.
255
+ */
256
+ export interface ReplicaSyncTransport {
257
+ /** Capabilities for a dataset (or the default source within it). */
258
+ capabilities(datasetId: string, sourceId?: string): Promise<ReplicaSyncCapabilities>;
259
+ listReplicas(request?: ListReplicasRequest): Promise<SyncPage<DisconnectedReplica>>;
260
+ getReplica(replicaId: ReplicaId, options?: {
261
+ readonly signal?: AbortSignal;
262
+ }): Promise<DisconnectedReplica>;
263
+ listConflicts(request?: ListConflictsRequest): Promise<SyncPage<SyncConflictSummary>>;
264
+ getConflict(conflictId: SyncConflictId, options?: {
265
+ readonly signal?: AbortSignal;
266
+ }): Promise<SyncConflictDetail>;
267
+ resolveConflict(resolution: SyncConflictResolution): Promise<SyncConflictResolutionRecord>;
268
+ resolveConflicts(resolutions: ReadonlyArray<SyncConflictResolution>): Promise<BatchConflictResolutionResult>;
269
+ }
270
+ //# sourceMappingURL=types.d.ts.map