gps-plus-slam-app-framework 1.10.0 → 1.11.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.
- package/README.md +14 -14
- package/dist/{absolute-orientation-C_IxDR_j.d.ts → absolute-orientation-Dj1One3y.d.ts} +1 -1
- package/dist/{accuracy-circles-BE7tbvYV.d.ts → accuracy-circles-BHz7yVIL.d.ts} +1 -1
- package/dist/{app-selectors-CV7ggGoo.d.ts → app-selectors-DG0ZqaeI.d.ts} +1 -1
- package/dist/ar/ar-crash-isolation.d.ts +2 -0
- package/dist/ar/ar-crash-isolation.js +40 -0
- package/dist/ar/capability-checker.d.ts +1 -1
- package/dist/ar/capture-motion-gate.d.ts +2 -0
- package/dist/{capture-motion-gate-D1eyGC_o.js → ar/capture-motion-gate.js} +25 -2
- package/dist/ar/chromium-camera-access-workaround.d.ts +1 -1
- package/dist/ar/chromium-camera-access-workaround.js +1 -1
- package/dist/ar/depth-grid-lookup.d.ts +1 -1
- package/dist/ar/depth-occluder.d.ts +1 -1
- package/dist/ar/depth-occluder.js +1 -1
- package/dist/ar/depth-sampler.d.ts +2 -2
- package/dist/ar/depth-unprojection.d.ts +1 -1
- package/dist/ar/enable-gps-ar.d.ts +1 -1
- package/dist/ar/enable-gps-ar.js +2 -2
- package/dist/ar/frame-loop.d.ts +1 -1
- package/dist/ar/image-capture.d.ts +1 -1
- package/dist/ar/image-capture.js +1 -1
- package/dist/ar/image-quality.d.ts +2 -2
- package/dist/ar/image-quality.js +136 -4
- package/dist/ar/index.d.ts +28 -26
- package/dist/ar/index.js +15 -14
- package/dist/ar/occlusion-mesh-worker.d.ts +1 -1
- package/dist/ar/occupancy-grid.d.ts +1 -1
- package/dist/ar/occupancy-grid.js +1 -1
- package/dist/ar/occupancy-mesher.d.ts +1 -1
- package/dist/ar/occupancy-mesher.js +1 -1
- package/dist/ar/qr/index.d.ts +11 -0
- package/dist/ar/qr/index.js +11 -0
- package/dist/ar/{planar-pnp.d.ts → qr/planar-pnp.d.ts} +1 -1
- package/dist/ar/{planar-pnp.js → qr/planar-pnp.js} +1 -1
- package/dist/ar/qr/qr-debug-view.d.ts +2 -0
- package/dist/ar/{qr-debug-view.js → qr/qr-debug-view.js} +2 -2
- package/dist/ar/{qr-derived-pose.d.ts → qr/qr-derived-pose.d.ts} +1 -1
- package/dist/ar/{qr-derived-pose.js → qr/qr-derived-pose.js} +2 -2
- package/dist/ar/{qr-detection-controller.d.ts → qr/qr-detection-controller.d.ts} +1 -1
- package/dist/ar/qr/qr-detection-controller.js +2 -0
- package/dist/ar/{qr-frontend.d.ts → qr/qr-frontend.d.ts} +1 -1
- package/dist/ar/{qr-frontend.js → qr/qr-frontend.js} +1 -1
- package/dist/ar/{qr-pose.d.ts → qr/qr-pose.d.ts} +1 -1
- package/dist/ar/{qr-pose.js → qr/qr-pose.js} +1 -1
- package/dist/ar/qr/qr-size-depth-context.d.ts +3 -0
- package/dist/ar/{qr-size-depth-context.js → qr/qr-size-depth-context.js} +4 -4
- package/dist/ar/{qr-size-measurer.d.ts → qr/qr-size-measurer.d.ts} +1 -1
- package/dist/ar/qr/qr-size-measurer.js +2 -0
- package/dist/ar/replay-scene.d.ts +1 -1
- package/dist/ar/replay-scene.js +15 -13
- package/dist/ar/webxr-session.d.ts +4 -4
- package/dist/ar/webxr-session.js +2 -2
- package/dist/ar/xr-camera-texture.d.ts +1 -1
- package/dist/ar/xr-frame-loop.d.ts +1 -1
- package/dist/ar/xr-frame-loop.js +1 -1
- package/dist/ar-crash-isolation-DlXCGzMf.d.ts +52 -0
- package/dist/{ar-world-group-alignment-B6XiA1cT.d.ts → ar-world-group-alignment-BdS_h8Nf.d.ts} +2 -2
- package/dist/{capability-checker-DEo-ktWI.d.ts → capability-checker-BZ3_x1YL.d.ts} +1 -1
- package/dist/capture-motion-gate-CPwLekNf.d.ts +120 -0
- package/dist/{chromium-camera-access-workaround-DCd8SP2N.d.ts → chromium-camera-access-workaround-BHR4clTE.d.ts} +1 -1
- package/dist/{create-slam-app-store-CH31erpP.d.ts → create-slam-app-store-DFm5K9Ob.d.ts} +13 -4
- package/dist/{create-slam-app-store-DLv5ZwqU.js → create-slam-app-store-oK9bnqyI.js} +8 -6
- package/dist/{depth-grid-lookup-DY6zYTLx.d.ts → depth-grid-lookup-CCuzlqUo.d.ts} +1 -1
- package/dist/{depth-sampler-txG8evgQ.d.ts → depth-sampler-CS2jAFw4.d.ts} +2 -2
- package/dist/{depth-unprojection-JKkeqJrV.d.ts → depth-unprojection-ET3Gwedf.d.ts} +1 -1
- package/dist/{enable-gps-ar-BbNWyqp5.d.ts → enable-gps-ar-D_xEHzh5.d.ts} +10 -5
- package/dist/{file-system-utils-CfLTj5Ra.d.ts → file-system-utils-BHI0rXr9.d.ts} +1 -1
- package/dist/geo/h3-proximity.d.ts +1 -1
- package/dist/geo/h3-proximity.js +1 -1
- package/dist/geo/index.d.ts +1 -1
- package/dist/{geodesic-angle-HXBWiXiI.js → geodesic-angle-CZ_Ow90I.js} +2 -2
- package/dist/{gps-ar-pose-sampler-BOOV0jJk.d.ts → gps-ar-pose-sampler-BuuUuK-D.d.ts} +1 -1
- package/dist/{gps-event-coordinator-03rVh_us.d.ts → gps-event-coordinator-Cruoe5I-.d.ts} +4 -4
- package/dist/{gps-event-markers-BsC2Ynlh.d.ts → gps-event-markers-y2b2aVl6.d.ts} +35 -1
- package/dist/{h3-proximity-pFluGfwL.d.ts → h3-proximity-BaAulrnM.d.ts} +1 -1
- package/dist/{image-capture-Cr_rljeV.d.ts → image-capture-BevgKpoO.d.ts} +6 -6
- package/dist/{image-capture-BUqqsOi3.js → image-capture-C4DwxC10.js} +3 -3
- package/dist/{image-quality-BjBLoTec.d.ts → image-quality--HLuyJ2r.d.ts} +44 -2
- package/dist/{index-C2Bo0buN.d.ts → index-BWVwd9Zw.d.ts} +9 -71
- package/dist/{index-CuHaGY0F.d.ts → index-ClmnNJ6-.d.ts} +1 -1
- package/dist/index-Dxb6ATNK.d.ts +64 -0
- package/dist/index.d.ts +55 -55
- package/dist/index.js +23 -23
- package/dist/{leaflet-map-overlay-BRkUhZMD.js → leaflet-map-overlay-CTcTVmL1.js} +1 -1
- package/dist/{leaflet-map-overlay-QhF199BW.d.ts → leaflet-map-overlay-CksetpTt.d.ts} +1 -1
- package/dist/{map-data-D8sSxpOr.d.ts → map-data-D8cCqpOM.d.ts} +2 -2
- package/dist/{map-data-D3oE8AQP.js → map-data-DkhsYDGM.js} +1 -1
- package/dist/{map-overlay-draw-1E61FLKs.d.ts → map-overlay-draw-Cy-klqoA.d.ts} +1 -1
- package/dist/{median-Bla_W50f.js → median-DDBrZGP0.js} +2 -2
- package/dist/{occlusion-mesh-CZ4i_SW2.d.ts → occlusion-mesh-BWe2PrVi.d.ts} +22 -3
- package/dist/{occupancy-grid-f0I07UxI.d.ts → occupancy-grid-CYBdmMOo.d.ts} +2 -2
- package/dist/{persistence-middleware-CI4Cetnl.d.ts → persistence-middleware-Cun4aF5M.d.ts} +12 -2
- package/dist/{planar-pnp-CPLhg5MX.d.ts → planar-pnp-ByxwDEyM.d.ts} +2 -2
- package/dist/{ar-D-03Kso-.js → qr-CTp5xI83.js} +11 -25
- package/dist/{qr-debug-view-BmbWo06j.d.ts → qr-debug-view-CGlITU09.d.ts} +2 -2
- package/dist/{qr-derived-pose-DEYT85ul.d.ts → qr-derived-pose-DZPxZd9C.d.ts} +3 -3
- package/dist/{qr-detected-slice-CPEkGbxh.d.ts → qr-detected-slice-mfyxD2-M.d.ts} +9 -8
- package/dist/{qr-detection-controller-IcMRpTjV.d.ts → qr-detection-controller-C5NII-vs.d.ts} +4 -4
- package/dist/{qr-detection-controller-bRTJXC6G.js → qr-detection-controller-DXc1yHRf.js} +3 -3
- package/dist/{qr-frontend-61SKPSyU.d.ts → qr-frontend-QzKZSqB-.d.ts} +2 -2
- package/dist/{qr-pose-CCTF1PP0.d.ts → qr-pose-21fRDcFO.d.ts} +1 -1
- package/dist/{qr-pose-aggregation-H-O_Jjz9.js → qr-pose-aggregation-Cp0Mtg_j.js} +4 -4
- package/dist/{qr-pose-aggregation-BL6gfl0s.d.ts → qr-pose-aggregation-mABSN0AW.d.ts} +2 -2
- package/dist/{qr-size-depth-context-DJsYqbqY.d.ts → qr-size-depth-context-CMDv6T29.d.ts} +3 -3
- package/dist/{qr-size-measurer-Bl_i-umk.d.ts → qr-size-measurer-rVFf4AdM.d.ts} +5 -5
- package/dist/{qr-size-measurer-BVOIg-He.js → qr-size-measurer-zZB9S1va.js} +4 -4
- package/dist/{recording-replayer-DyIN13nG.d.ts → recording-replayer-qT2EM1Qs.d.ts} +1 -1
- package/dist/{recording-slice-DziOl7P5.d.ts → recording-slice-DXw5-UvO.d.ts} +10 -5
- package/dist/{replay-engine-DAymjsd1.d.ts → replay-engine-B1H_kLhK.d.ts} +1 -1
- package/dist/{replay-scene-CZdWgcpc.d.ts → replay-scene-BJeO36YT.d.ts} +12 -5
- package/dist/sensors/absolute-orientation.d.ts +1 -1
- package/dist/sensors/absolute-orientation.js +1 -1
- package/dist/sensors/gps.d.ts +1 -1
- package/dist/sensors/index.d.ts +3 -3
- package/dist/sensors/permission-checker.d.ts +1 -1
- package/dist/{session-disposers-BZS-hi8u.js → session-disposers-B7hUN90w.js} +1 -1
- package/dist/state/app-selectors.d.ts +1 -1
- package/dist/state/combined-root-state.d.ts +1 -1
- package/dist/state/create-slam-app-store.d.ts +1 -1
- package/dist/state/create-slam-app-store.js +1 -1
- package/dist/state/gps-ar-pose-sampler.d.ts +2 -2
- package/dist/state/gps-event-coordinator.d.ts +2 -2
- package/dist/state/gps-event-coordinator.js +1 -1
- package/dist/state/index.d.ts +17 -18
- package/dist/state/index.js +4 -5
- package/dist/state/persistence-middleware.d.ts +2 -2
- package/dist/state/persistence-middleware.js +24 -15
- package/dist/state/qr-detected-slice.d.ts +3 -3
- package/dist/state/qr-detected-slice.js +8 -8
- package/dist/state/recording-replayer.d.ts +2 -2
- package/dist/state/recording-replayer.js +1 -1
- package/dist/state/recording-slice.d.ts +1 -1
- package/dist/state/replay-engine.d.ts +1 -1
- package/dist/state/store-subscribers.d.ts +2 -2
- package/dist/state/store-subscribers.js +1 -1
- package/dist/state/subscribe-to-selector.d.ts +1 -1
- package/dist/state/tracking-quality.d.ts +1 -1
- package/dist/state/tracking-quality.js +2 -2
- package/dist/state/tracking-slice.d.ts +1 -1
- package/dist/{state-U45ioVyB.js → state-CDF5LvsO.js} +1 -2
- package/dist/storage/file-system-utils.d.ts +1 -1
- package/dist/storage/file-system-utils.js +1 -1
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/zip-coverage-embed.d.ts +1 -1
- package/dist/storage/zip-coverage-embed.js +1 -1
- package/dist/{store-subscribers-DtwakLrQ.d.ts → store-subscribers-CWHToX6N.d.ts} +2 -2
- package/dist/{subscribe-to-selector-Cgo9JTfS.d.ts → subscribe-to-selector-j-eOYybQ.d.ts} +1 -1
- package/dist/test-utils/browser-mocks.d.ts +1 -1
- package/dist/{tracking-slice-Bt2OEQhA.d.ts → tracking-slice-BAbcZK-Y.d.ts} +3 -2
- package/dist/types/ar-types.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/visualization/accuracy-circles.d.ts +1 -1
- package/dist/visualization/accuracy-circles.js +1 -1
- package/dist/visualization/alignment-lerper.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.d.ts +1 -1
- package/dist/visualization/ar-world-group-alignment.js +2 -2
- package/dist/visualization/camera-follower.d.ts +1 -1
- package/dist/visualization/css3d-renderer-manager.d.ts +1 -1
- package/dist/visualization/gps-anchor.js +2 -2
- package/dist/visualization/gps-event-markers.d.ts +2 -2
- package/dist/visualization/gps-event-markers.js +27 -6
- package/dist/visualization/index.d.ts +13 -14
- package/dist/visualization/index.js +4 -5
- package/dist/visualization/leaflet-map-overlay.d.ts +1 -1
- package/dist/visualization/leaflet-map-overlay.js +1 -1
- package/dist/visualization/map-data.d.ts +1 -1
- package/dist/visualization/map-data.js +1 -1
- package/dist/visualization/map-overlay-draw.d.ts +1 -1
- package/dist/visualization/occluder-mesh-driver.d.ts +1 -1
- package/dist/visualization/occluder-mesh-driver.js +1 -1
- package/dist/visualization/occlusion-mesh.d.ts +2 -2
- package/dist/visualization/occlusion-mesh.js +28 -3
- package/dist/visualization/three-dispose.d.ts +1 -1
- package/dist/visualization/vis-colors.d.ts +1 -1
- package/dist/{webxr-session-CGFZ429B.d.ts → webxr-session-DefwObIu.d.ts} +144 -194
- package/dist/{webxr-session-DWKUsCN9.js → webxr-session-OyR3YbTq.js} +151 -281
- package/dist/{xr-frame-loop-25gM4B0K.d.ts → xr-frame-loop-BiZvgqP7.d.ts} +1 -1
- package/dist/{zip-coverage-embed-BrodRLq0.d.ts → zip-coverage-embed-CyoX7XL7.d.ts} +1 -1
- package/package.json +4 -2
- package/dist/ar/qr-debug-view.d.ts +0 -2
- package/dist/ar/qr-detection-controller.js +0 -2
- package/dist/ar/qr-size-depth-context.d.ts +0 -3
- package/dist/ar/qr-size-measurer.js +0 -2
- package/dist/capture-motion-gate-BmjiWUJv.d.ts +0 -24
- package/dist/map-overlay-0yJOcEVO.d.ts +0 -153
- package/dist/recording-options-Cai9D14V.d.ts +0 -700
- package/dist/state/recording-options.d.ts +0 -2
- package/dist/state/recording-options.js +0 -620
- package/dist/visualization/map-overlay.d.ts +0 -2
- package/dist/visualization/map-overlay.js +0 -241
- /package/dist/{alignment-lerper-B4COh_0p.d.ts → alignment-lerper-DAHicRON.d.ts} +0 -0
- /package/dist/{ar-types-CBafnxhE.d.ts → ar-types-D6PYS4bc.d.ts} +0 -0
- /package/dist/{camera-follower-B6zA3dy9.d.ts → camera-follower-CO_ibF2o.d.ts} +0 -0
- /package/dist/{css3d-renderer-manager-DbrSY7Mh.d.ts → css3d-renderer-manager-CJjHtCMT.d.ts} +0 -0
- /package/dist/{device-orientation-cache-BjEaEAmh.js → device-orientation-cache-j-kLP8he.js} +0 -0
- /package/dist/{frame-loop-7HigCj7m.d.ts → frame-loop-7GBMBu68.d.ts} +0 -0
- /package/dist/{gps-CX5b9g3s.d.ts → gps-CnhYrJCa.d.ts} +0 -0
- /package/dist/{occupancy-mesher-BqnRd10x.d.ts → occupancy-mesher-B4Bv4BTk.d.ts} +0 -0
- /package/dist/{permission-checker-D1C5zvo-.d.ts → permission-checker-B-VtjnBA.d.ts} +0 -0
- /package/dist/{three-dispose-C9mdpSRX.d.ts → three-dispose-C3mnKQR5.d.ts} +0 -0
- /package/dist/{vis-colors-DjStl_tD.d.ts → vis-colors-CoSpbZEO.d.ts} +0 -0
- /package/dist/{xr-camera-texture-C6Z4d7RR.d.ts → xr-camera-texture-q0eIDSRg.d.ts} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { i as Pose, r as Point2, s as SolvePnpSquare } from "./qr-pose-
|
|
2
|
-
import { a as QrSizeMeasurerOptions, n as QrSizeDepthContext } from "./qr-size-measurer-
|
|
1
|
+
import { i as Pose, r as Point2, s as SolvePnpSquare } from "./qr-pose-21fRDcFO.js";
|
|
2
|
+
import { a as QrSizeMeasurerOptions, n as QrSizeDepthContext } from "./qr-size-measurer-rVFf4AdM.js";
|
|
3
3
|
import { Matrix4 } from "gps-plus-slam-js";
|
|
4
4
|
|
|
5
|
-
//#region ../src/ar/qr-derived-pose.d.ts
|
|
5
|
+
//#region ../src/ar/qr/qr-derived-pose.d.ts
|
|
6
6
|
/**
|
|
7
7
|
* One RAW QR observation — the authoritative recorded shape (D-A). Everything
|
|
8
8
|
* the derive layer needs to recompute size + pose is here EXCEPT depth (injected
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { i as Pose, r as Point2 } from "./qr-pose-
|
|
2
|
-
import { l as QrSizeEstimate } from "./qr-size-measurer-
|
|
3
|
-
import { i as RawQrObservation, n as DerivedQrPlacement, t as DeriveQrPoseDeps } from "./qr-derived-pose-
|
|
4
|
-
import { a as QrPoseStability, o as QrPoseStabilityOptions } from "./qr-pose-aggregation-
|
|
1
|
+
import { i as Pose, r as Point2 } from "./qr-pose-21fRDcFO.js";
|
|
2
|
+
import { l as QrSizeEstimate } from "./qr-size-measurer-rVFf4AdM.js";
|
|
3
|
+
import { i as RawQrObservation, n as DerivedQrPlacement, t as DeriveQrPoseDeps } from "./qr-derived-pose-DZPxZd9C.js";
|
|
4
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions } from "./qr-pose-aggregation-mABSN0AW.js";
|
|
5
5
|
import { Matrix4, Vector3 } from "gps-plus-slam-js";
|
|
6
6
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
7
|
+
import * as _$redux from "redux";
|
|
7
8
|
|
|
8
9
|
//#region ../src/state/qr-detected-slice.d.ts
|
|
9
10
|
/**
|
|
@@ -27,7 +28,7 @@ interface QrDetectionEntry {
|
|
|
27
28
|
* this MUST be **EPOCH ms** (`Date.now()`), because the depth stream it joins
|
|
28
29
|
* against is epoch (`DepthSample.timestamp = performance.timeOrigin + frameTs`,
|
|
29
30
|
* `ar/depth-sampler.ts`) and the size as-of join pairs this with the depth
|
|
30
|
-
* sample whose timestamp is `≤` this one (`ar/qr-derived-pose`). A relative
|
|
31
|
+
* sample whose timestamp is `≤` this one (`ar/qr/qr-derived-pose`). A relative
|
|
31
32
|
* `performance.now()` stamp (~1e5) never satisfies that join, so the size — and
|
|
32
33
|
* the debug cube — never resolve. See the recorder live-QR plan open topic A.
|
|
33
34
|
*/
|
|
@@ -71,7 +72,7 @@ declare const recordQrDetection: _$_reduxjs_toolkit0.ActionCreatorWithPayload<Qr
|
|
|
71
72
|
}, "qrDetected/pruneQrDetections">, clearQrMarker: _$_reduxjs_toolkit0.ActionCreatorWithPayload<{
|
|
72
73
|
text: string;
|
|
73
74
|
}, "qrDetected/clearQrMarker">, clearAllQrMarkers: _$_reduxjs_toolkit0.ActionCreatorWithoutPayload<"qrDetected/clearAllQrMarkers">, setQrMaxHistory: _$_reduxjs_toolkit0.ActionCreatorWithPayload<number, "qrDetected/setQrMaxHistory">;
|
|
74
|
-
declare const qrDetectedReducer: _$
|
|
75
|
+
declare const qrDetectedReducer: _$redux.Reducer<QrDetectedState>;
|
|
75
76
|
/** Minimal root shape the selectors need (avoids a store import cycle). */
|
|
76
77
|
interface RootWithQrDetected {
|
|
77
78
|
qrDetected: QrDetectedState;
|
|
@@ -117,7 +118,7 @@ declare function medianQrPosition(entries: readonly QrDetectionEntry[]): Vector3
|
|
|
117
118
|
* buffer (NOT stored separately — the detections are the source of truth, unlike
|
|
118
119
|
* the depth-measured size which is accumulated outside the buffer). Mirrors the
|
|
119
120
|
* size lifecycle's `unknown → measuring → stable` shape so the HUD can show
|
|
120
|
-
* "converging…" vs "stable". See `ar/qr-pose-aggregation.ts`.
|
|
121
|
+
* "converging…" vs "stable". See `ar/qr/qr-pose-aggregation.ts`.
|
|
121
122
|
*/
|
|
122
123
|
declare function selectQrPoseStability(state: RootWithQrDetected, text: string, options?: QrPoseStabilityOptions): QrPoseStability;
|
|
123
124
|
/**
|
|
@@ -141,7 +142,7 @@ declare function selectStableQrPose(state: RootWithQrDetected, text: string, opt
|
|
|
141
142
|
* `null` when the marker is unknown, has no raw observations, cannot be sized
|
|
142
143
|
* yet, or PnP rejects the latest quad — the re-test-friendly replacement for the
|
|
143
144
|
* once-stored solved pose. Runs identically live and on replay (only
|
|
144
|
-
* `deps.resolveDepthAt` differs). See `ar/qr-derived-pose.ts`.
|
|
145
|
+
* `deps.resolveDepthAt` differs). See `ar/qr/qr-derived-pose.ts`.
|
|
145
146
|
*/
|
|
146
147
|
declare function selectSolvedQrPose(state: RootWithQrDetected, text: string, deps: DeriveQrPoseDeps): Pose | null;
|
|
147
148
|
/**
|
package/dist/{qr-detection-controller-IcMRpTjV.d.ts → qr-detection-controller-C5NII-vs.d.ts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { i as Pose } from "./qr-pose-
|
|
2
|
-
import { i as QrDetection, o as RgbaImage } from "./qr-frontend-
|
|
3
|
-
import { i as RawQrObservation } from "./qr-derived-pose-
|
|
1
|
+
import { i as Pose } from "./qr-pose-21fRDcFO.js";
|
|
2
|
+
import { i as QrDetection, o as RgbaImage } from "./qr-frontend-QzKZSqB-.js";
|
|
3
|
+
import { i as RawQrObservation } from "./qr-derived-pose-DZPxZd9C.js";
|
|
4
4
|
import { Matrix4 } from "gps-plus-slam-js";
|
|
5
5
|
|
|
6
|
-
//#region ../src/ar/qr-detection-controller.d.ts
|
|
6
|
+
//#region ../src/ar/qr/qr-detection-controller.d.ts
|
|
7
7
|
/** Minimal scan-status machine (NO QR detail — per the recorder scope). */
|
|
8
8
|
type QrScanStatus = 'idle' | 'scanning' | 'tracking';
|
|
9
9
|
/** Sink for one recorded RAW observation — e.g. dispatch `recordQrDetection`. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "./utils/logger.js";
|
|
2
|
-
import { validateQuad } from "./ar/qr-pose.js";
|
|
3
|
-
//#region ../src/ar/detection-scheduler.ts
|
|
2
|
+
import { validateQuad } from "./ar/qr/qr-pose.js";
|
|
3
|
+
//#region ../src/ar/qr/detection-scheduler.ts
|
|
4
4
|
const log = createLogger("DetectionScheduler");
|
|
5
5
|
const defaultNow = () => typeof performance !== "undefined" && typeof performance.now === "function" ? performance.now() : Date.now();
|
|
6
6
|
function createDetectionScheduler(config) {
|
|
@@ -58,7 +58,7 @@ function createQrDetectionScheduler(config) {
|
|
|
58
58
|
return createDetectionScheduler(config);
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
|
-
//#region ../src/ar/qr-detection-controller.ts
|
|
61
|
+
//#region ../src/ar/qr/qr-detection-controller.ts
|
|
62
62
|
/**
|
|
63
63
|
* Create the thin RAW producer. On each accepted decode it emits a
|
|
64
64
|
* {@link RawQrObservation} via `recordDetection`; it does not size or solve.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as Point2 } from "./qr-pose-
|
|
1
|
+
import { r as Point2 } from "./qr-pose-21fRDcFO.js";
|
|
2
2
|
|
|
3
|
-
//#region ../src/ar/qr-frontend.d.ts
|
|
3
|
+
//#region ../src/ar/qr/qr-frontend.d.ts
|
|
4
4
|
/** Raw RGBA pixels of the frame fed to detection (top-left origin). */
|
|
5
5
|
interface RgbaImage {
|
|
6
6
|
data: Uint8ClampedArray;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { n as lowerMedian } from "./median-
|
|
2
|
-
import { t as geodesicAngleRad } from "./geodesic-angle-
|
|
1
|
+
import { n as lowerMedian } from "./median-DDBrZGP0.js";
|
|
2
|
+
import { t as geodesicAngleRad } from "./geodesic-angle-CZ_Ow90I.js";
|
|
3
3
|
import { quat } from "gl-matrix";
|
|
4
|
-
//#region ../src/ar/qr-pose-aggregation.ts
|
|
4
|
+
//#region ../src/ar/qr/qr-pose-aggregation.ts
|
|
5
5
|
/**
|
|
6
6
|
* QR pose aggregation — sliding-window pose stabilization
|
|
7
|
-
* (docs `2026-06-16-
|
|
7
|
+
* (docs `2026-06-16-0858-qr-pose-stabilization-sliding-window-followup.md`).
|
|
8
8
|
*
|
|
9
9
|
* Pure, device-free, store-free robust aggregation of a STATIC fiducial's pose
|
|
10
10
|
* across a short sliding window of detections. A QR is static in the world, so
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { i as Pose } from "./qr-pose-
|
|
1
|
+
import { i as Pose } from "./qr-pose-21fRDcFO.js";
|
|
2
2
|
import { Quaternion } from "gps-plus-slam-js";
|
|
3
3
|
|
|
4
|
-
//#region ../src/ar/qr-pose-aggregation.d.ts
|
|
4
|
+
//#region ../src/ar/qr/qr-pose-aggregation.d.ts
|
|
5
5
|
/** Default inlier half-angle (deg) — start ~12°, confirm on device. */
|
|
6
6
|
declare const DEFAULT_ROTATION_INLIER_ANGLE_DEG = 12;
|
|
7
7
|
interface AverageRotationOptions {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { i as DepthSample } from "./ar-types-
|
|
2
|
-
import { n as QrSizeDepthContext } from "./qr-size-measurer-
|
|
1
|
+
import { i as DepthSample } from "./ar-types-D6PYS4bc.js";
|
|
2
|
+
import { n as QrSizeDepthContext } from "./qr-size-measurer-rVFf4AdM.js";
|
|
3
3
|
|
|
4
|
-
//#region ../src/ar/qr-size-depth-context.d.ts
|
|
4
|
+
//#region ../src/ar/qr/qr-size-depth-context.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* Build a {@link QrSizeDepthContext} from one depth sample, or `null` when it has
|
|
7
7
|
* no projection matrix / a singular one (the unprojector cannot be built). The
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { r as DepthPoint } from "./ar-types-
|
|
2
|
-
import { t as DepthUnprojector } from "./depth-unprojection-
|
|
3
|
-
import { r as Point2 } from "./qr-pose-
|
|
1
|
+
import { r as DepthPoint } from "./ar-types-D6PYS4bc.js";
|
|
2
|
+
import { t as DepthUnprojector } from "./depth-unprojection-ET3Gwedf.js";
|
|
3
|
+
import { r as Point2 } from "./qr-pose-21fRDcFO.js";
|
|
4
4
|
import { Vector3 } from "gps-plus-slam-js";
|
|
5
5
|
|
|
6
|
-
//#region ../src/ar/qr-size-from-depth.d.ts
|
|
6
|
+
//#region ../src/ar/qr/qr-size-from-depth.d.ts
|
|
7
7
|
/** Where the size lifecycle currently sits for one marker (Note 3 / Note 4). */
|
|
8
8
|
type QrSizeStatus = /** No size authored and none measured yet — size-dependent features blocked. */'unknown' /** Measurements are accumulating but the estimate has not converged. */ | 'measuring' /** A reliably-estimated (or authored) size — size-dependent features unlock. */ | 'estimated';
|
|
9
9
|
/** Per-marker physical-size estimate (drives the Note 3 size lifecycle). */
|
|
@@ -73,7 +73,7 @@ interface QrSizeAccumulator {
|
|
|
73
73
|
}
|
|
74
74
|
declare function createQrSizeAccumulator(options?: QrSizeAccumulatorOptions): QrSizeAccumulator;
|
|
75
75
|
//#endregion
|
|
76
|
-
//#region ../src/ar/qr-size-measurer.d.ts
|
|
76
|
+
//#region ../src/ar/qr/qr-size-measurer.d.ts
|
|
77
77
|
/**
|
|
78
78
|
* Robustness knobs for the depth-at-corners stage (on top of the accumulator
|
|
79
79
|
* options). QR corners sit on a high-contrast print boundary where the coarse
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { t as interpolatingMedian } from "./median-
|
|
1
|
+
import { t as interpolatingMedian } from "./median-DDBrZGP0.js";
|
|
2
2
|
import { vec3 } from "gl-matrix";
|
|
3
|
-
//#region ../src/ar/qr-size-from-depth.ts
|
|
3
|
+
//#region ../src/ar/qr/qr-size-from-depth.ts
|
|
4
4
|
/**
|
|
5
5
|
* QR size from depth — Note 4 of the QR-tracking follow-up plan
|
|
6
|
-
* (docs `2026-06-15-
|
|
6
|
+
* (docs `2026-06-15-1219-qr-tracking-generalization-overlay-and-north-followup.md`).
|
|
7
7
|
*
|
|
8
8
|
* MEASURE a QR's printed physical size directly from the depth map, so the
|
|
9
9
|
* QR content + printed size are irrelevant and `qr.physicalSizeM` need not be
|
|
@@ -389,7 +389,7 @@ function createQrSizeAccumulator(options = {}) {
|
|
|
389
389
|
};
|
|
390
390
|
}
|
|
391
391
|
//#endregion
|
|
392
|
-
//#region ../src/ar/qr-size-measurer.ts
|
|
392
|
+
//#region ../src/ar/qr/qr-size-measurer.ts
|
|
393
393
|
const EPS = 1e-9;
|
|
394
394
|
/** Pixel corner → normalized screen point for the given frame. */
|
|
395
395
|
function toScreen(corner, image) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "./create-slam-app-store-
|
|
1
|
+
import { N as CombinedRootState } from "./create-slam-app-store-DFm5K9Ob.js";
|
|
2
2
|
import { i as RecordedAction } from "./zip-reader-BHc_b_iA.js";
|
|
3
3
|
|
|
4
4
|
//#region ../src/state/recording-replayer.d.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i as DepthSample } from "./ar-types-
|
|
2
|
-
import { y as RecordingOptions } from "./recording-options-Cai9D14V.js";
|
|
1
|
+
import { i as DepthSample } from "./ar-types-D6PYS4bc.js";
|
|
3
2
|
import * as _$_reduxjs_toolkit0 from "@reduxjs/toolkit";
|
|
3
|
+
import * as _$redux from "redux";
|
|
4
4
|
|
|
5
5
|
//#region ../src/state/recording-slice.d.ts
|
|
6
6
|
interface SessionMetadata {
|
|
@@ -17,8 +17,13 @@ interface SessionMetadata {
|
|
|
17
17
|
startTime: number;
|
|
18
18
|
deviceInfo?: string;
|
|
19
19
|
notes?: string;
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Recording options used for this session (for replay context). Stored
|
|
22
|
+
* OPAQUELY: the recorder owns the concrete `RecordingOptions` type (its
|
|
23
|
+
* settings catalog, `GpsPlusSlamJs_RecorderApp/src/state/recording-options.ts`
|
|
24
|
+
* since the 2026-07-11 G-1 move) and narrows this on read.
|
|
25
|
+
*/
|
|
26
|
+
recordingOptions?: Record<string, unknown>;
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* Payload accepted by {@link startSession}. New callers pass `contextTag`.
|
|
@@ -50,6 +55,6 @@ interface RecordingState {
|
|
|
50
55
|
latestDepthSample: DepthSample | null;
|
|
51
56
|
}
|
|
52
57
|
declare const startSession: _$_reduxjs_toolkit0.ActionCreatorWithPayload<StartSessionPayload, "recording/startSession">, endSession: _$_reduxjs_toolkit0.ActionCreatorWithoutPayload<"recording/endSession">, recordDepthSample: _$_reduxjs_toolkit0.ActionCreatorWithPayload<DepthSample, "recording/recordDepthSample">, recordWriteFailure: _$_reduxjs_toolkit0.ActionCreatorWithPayload<string, "recording/recordWriteFailure">;
|
|
53
|
-
declare const recordingReducer: _$
|
|
58
|
+
declare const recordingReducer: _$redux.Reducer<RecordingState>;
|
|
54
59
|
//#endregion
|
|
55
60
|
export { recordWriteFailure as a, recordDepthSample as i, SessionMetadata as n, recordingReducer as o, endSession as r, startSession as s, RecordingState as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
1
|
+
import { t as CameraFollower } from "./camera-follower-CO_ibF2o.js";
|
|
2
|
+
import { t as AlignmentLerper } from "./alignment-lerper-DAHicRON.js";
|
|
3
|
+
import { t as Css3dRendererManager } from "./css3d-renderer-manager-CJjHtCMT.js";
|
|
4
4
|
import * as THREE from "three";
|
|
5
5
|
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
|
6
6
|
|
|
@@ -9,6 +9,11 @@ type CameraMode = 'orbit' | 'fps';
|
|
|
9
9
|
interface ReplaySceneState {
|
|
10
10
|
scene: THREE.Scene;
|
|
11
11
|
arWorldGroup: THREE.Group;
|
|
12
|
+
/**
|
|
13
|
+
* The arpose node (between basisChangeNode and the detached camera slot).
|
|
14
|
+
* Store subscribers write recorded odom poses here during replay.
|
|
15
|
+
*/
|
|
16
|
+
arpose: THREE.Object3D;
|
|
12
17
|
camera: THREE.PerspectiveCamera;
|
|
13
18
|
renderer: THREE.WebGLRenderer;
|
|
14
19
|
orbitControls: OrbitControls;
|
|
@@ -25,7 +30,8 @@ interface ReplaySceneState {
|
|
|
25
30
|
* - Creates the scene hierarchy via createSceneHierarchy()
|
|
26
31
|
* - Reparents camera from arWorldGroup to scene root (Risk R5)
|
|
27
32
|
* - Creates a WebGLRenderer WITHOUT WebXR
|
|
28
|
-
* -
|
|
33
|
+
* - Keeps its own scene/arWorldGroup/arpose/camera references (returned
|
|
34
|
+
* here and via getReplayState()) — nothing is written into webxr-session
|
|
29
35
|
* - Inserts canvas into the provided container
|
|
30
36
|
* - Starts a requestAnimationFrame render loop
|
|
31
37
|
* - Sets up OrbitControls as default camera mode
|
|
@@ -37,6 +43,7 @@ interface ReplaySceneState {
|
|
|
37
43
|
declare function initReplayScene(container: HTMLElement): {
|
|
38
44
|
scene: THREE.Scene;
|
|
39
45
|
arWorldGroup: THREE.Group;
|
|
46
|
+
arpose: THREE.Object3D;
|
|
40
47
|
camera: THREE.PerspectiveCamera;
|
|
41
48
|
renderer: THREE.WebGLRenderer;
|
|
42
49
|
};
|
|
@@ -47,7 +54,7 @@ declare function initReplayScene(container: HTMLElement): {
|
|
|
47
54
|
* - Disposes renderer (frees GPU resources)
|
|
48
55
|
* - Disposes camera controls
|
|
49
56
|
* - Removes canvas from DOM
|
|
50
|
-
* - Clears module
|
|
57
|
+
* - Clears this module's state (getReplayState() returns null afterwards)
|
|
51
58
|
*
|
|
52
59
|
* Safe to call multiple times (idempotent).
|
|
53
60
|
*/
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-
|
|
1
|
+
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-Dj1One3y.js";
|
|
2
2
|
export { AbsoluteOrientationReading, AbsoluteOrientationStatus, getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, startAbsoluteOrientationWatch, stopAbsoluteOrientationWatch };
|
|
@@ -4,7 +4,7 @@ import { createLogger } from "../utils/logger.js";
|
|
|
4
4
|
* AbsoluteOrientationSensor capture (Generic Sensor API).
|
|
5
5
|
*
|
|
6
6
|
* Phase 1 of the AbsoluteOrientationSensor plan
|
|
7
|
-
* (GpsPlusSlamJs_Docs/docs/2026-06-25-absolute-orientation-sensor-plan.md §5.1):
|
|
7
|
+
* (GpsPlusSlamJs_Docs/docs/2026-06-25-0543-absolute-orientation-sensor-plan.md §5.1):
|
|
8
8
|
* passive instrumentation that fuses accelerometer + gyroscope + magnetometer
|
|
9
9
|
* into an Earth-referenced (ENU) quaternion, captured per GPS event as an
|
|
10
10
|
* independent north reference. No production behaviour change.
|
package/dist/sensors/gps.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-
|
|
1
|
+
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-CnhYrJCa.js";
|
|
2
2
|
export { GpsPosition, RawDeviceOrientation, requestOrientationPermission, startGpsWatch, startOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
package/dist/sensors/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-
|
|
2
|
-
import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-
|
|
3
|
-
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-
|
|
1
|
+
import { a as startOrientationWatch, i as startGpsWatch, n as RawDeviceOrientation, o as stopGpsWatch, r as requestOrientationPermission, s as stopOrientationWatch, t as GpsPosition } from "../gps-CnhYrJCa.js";
|
|
2
|
+
import { a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission$1, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-B-VtjnBA.js";
|
|
3
|
+
import { a as startAbsoluteOrientationWatch, i as isAbsoluteOrientationAvailable, n as AbsoluteOrientationStatus, o as stopAbsoluteOrientationWatch, r as getLatestAbsoluteOrientation, t as AbsoluteOrientationReading } from "../absolute-orientation-Dj1One3y.js";
|
|
4
4
|
import { a as getGpsErrorMessage, i as createGpsErrorHandler, n as GPS_ERROR_MESSAGES, r as GPS_ERROR_MESSAGE_UNKNOWN, t as GPS_ERROR_CODES } from "../gps-error-handler-DjVuLXve.js";
|
|
5
5
|
export { type AbsoluteOrientationReading, type AbsoluteOrientationStatus, GPS_ERROR_CODES, GPS_ERROR_MESSAGES, GPS_ERROR_MESSAGE_UNKNOWN, type GpsPosition, type PermissionCheckResult, type PermissionStatus, type RawDeviceOrientation, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, createGpsErrorHandler, getGpsErrorMessage, getLatestAbsoluteOrientation, isAbsoluteOrientationAvailable, requestAllPermissions, requestCameraPermission, requestOrientationPermission as requestDeviceOrientationPermission, requestGeolocationPermission, requestOrientationPermission$1 as requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, startAbsoluteOrientationWatch, startGpsWatch, startOrientationWatch, stopAbsoluteOrientationWatch, stopGpsWatch, stopOrientationWatch };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { _ as subscribePermissionChanges, a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission, r as PermissionSubscription, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-
|
|
1
|
+
import { _ as subscribePermissionChanges, a as checkCameraPermission, c as checkOrientationPermission, d as requestCameraPermission, f as requestGeolocationPermission, g as setFileSystemState, h as resetFileSystemState, i as checkAllPermissions, l as checkWebXRSupport, m as requestWebXRWithDepthPermission, n as PermissionStatus, o as checkFileSystemPermission, p as requestOrientationPermission, r as PermissionSubscription, s as checkGeolocationPermission, t as PermissionCheckResult, u as requestAllPermissions } from "../permission-checker-B-VtjnBA.js";
|
|
2
2
|
export { PermissionCheckResult, PermissionStatus, PermissionSubscription, checkAllPermissions, checkCameraPermission, checkFileSystemPermission, checkGeolocationPermission, checkOrientationPermission, checkWebXRSupport, requestAllPermissions, requestCameraPermission, requestGeolocationPermission, requestOrientationPermission, requestWebXRWithDepthPermission, resetFileSystemState, setFileSystemState, subscribePermissionChanges };
|
|
@@ -19,7 +19,7 @@ import { createLogger } from "./utils/logger.js";
|
|
|
19
19
|
* `arWorldGroup`). Because `initAR()` throws if a prior session is still live,
|
|
20
20
|
* every restart must pass through `resetWebXRState()`, making it the single
|
|
21
21
|
* chokepoint where flushing these disposers is guaranteed. See
|
|
22
|
-
* gps-plus-slam/GpsPlusSlamJs_Docs/docs/2026-06-08-arworldgroup-alignment-session-scoped-disposal.md.
|
|
22
|
+
* gps-plus-slam/GpsPlusSlamJs_Docs/docs/2026-06-08-2149-arworldgroup-alignment-session-scoped-disposal.md.
|
|
23
23
|
*/
|
|
24
24
|
const log = createLogger("SessionDisposers");
|
|
25
25
|
const disposers = /* @__PURE__ */ new Set();
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-
|
|
1
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-DG0ZqaeI.js";
|
|
2
2
|
export { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { N as CombinedRootState } from "../create-slam-app-store-
|
|
1
|
+
import { N as CombinedRootState } from "../create-slam-app-store-DFm5K9Ob.js";
|
|
2
2
|
export { CombinedRootState };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as SlamAppStoreOptions, i as SlamAppStore, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, t as SlamAppCombinedState } from "../create-slam-app-store-
|
|
1
|
+
import { a as SlamAppStoreOptions, i as SlamAppStore, n as SlamAppMiddleware, o as createSlamAppStore, r as SlamAppRootState, t as SlamAppCombinedState } from "../create-slam-app-store-DFm5K9Ob.js";
|
|
2
2
|
export { SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, createSlamAppStore };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createSlamAppStore } from "../create-slam-app-store-
|
|
1
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-oK9bnqyI.js";
|
|
2
2
|
export { createSlamAppStore };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as extractOdomPosition, l as extractOdomRotation, t as ARPose } from "../ar-types-
|
|
2
|
-
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-
|
|
1
|
+
import { c as extractOdomPosition, l as extractOdomRotation, t as ARPose } from "../ar-types-D6PYS4bc.js";
|
|
2
|
+
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-BuuUuK-D.js";
|
|
3
3
|
export { ARPose, CaptureGpsAnchorSampleOptions, GpsAnchorSample, GpsAnchorSampleGpsPoint, captureGpsAnchorSample, extractOdomPosition, extractOdomRotation };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { c as extractOdomPosition, l as extractOdomRotation } from "../ar-types-
|
|
2
|
-
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as updateDeviceOrientation, n as buildRawGpsPoint, o as resetCoordinatorState, r as buildRecordGpsEventPayload, s as toRawAbsoluteOrientation, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-
|
|
1
|
+
import { c as extractOdomPosition, l as extractOdomRotation } from "../ar-types-D6PYS4bc.js";
|
|
2
|
+
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as updateDeviceOrientation, n as buildRawGpsPoint, o as resetCoordinatorState, r as buildRecordGpsEventPayload, s as toRawAbsoluteOrientation, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-Cruoe5I-.js";
|
|
3
3
|
export { RecordingCoordinatorConfig, buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, resetCoordinatorState, toRawAbsoluteOrientation, updateDeviceOrientation };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger.js";
|
|
2
2
|
import { extractOdomPosition, extractOdomRotation } from "../types/ar-types.js";
|
|
3
|
-
import { n as resetDeviceOrientationCache, r as updateDeviceOrientation, t as getLastDeviceOrientation } from "../device-orientation-cache-
|
|
3
|
+
import { n as resetDeviceOrientationCache, r as updateDeviceOrientation, t as getLastDeviceOrientation } from "../device-orientation-cache-j-kLP8he.js";
|
|
4
4
|
import { getLatestAbsoluteOrientation } from "../sensors/absolute-orientation.js";
|
|
5
5
|
import { eulerToQuaternion, getOdometryPositions, getZeroReference, recordGpsEvent, setZeroPos } from "gps-plus-slam-js";
|
|
6
6
|
//#region ../src/state/gps-event-coordinator.ts
|
package/dist/state/index.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { c as extractOdomPosition, i as DepthSample, l as extractOdomRotation, r as DepthPoint } from "../ar-types-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { a as
|
|
6
|
-
import { a as
|
|
7
|
-
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-CPEkGbxh.js";
|
|
1
|
+
import { c as extractOdomPosition, i as DepthSample, l as extractOdomRotation, r as DepthPoint } from "../ar-types-D6PYS4bc.js";
|
|
2
|
+
import { a as TrackingSliceState, c as poseLost, d as selectLastRestartedPayload, f as selectLastSensorOrientation, g as trackingReducer, h as selectTrackingPhase, i as TrackingPhase, l as poseReceived, m as selectLostFrameCount, n as PoseReceivedPayload, o as clearLastRestartedPayload, p as selectLastValidPose, r as ResetTransformData, s as originReset, t as DeviceOrientation, u as resetTracking } from "../tracking-slice-BAbcZK-Y.js";
|
|
3
|
+
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-rVFf4AdM.js";
|
|
4
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-mABSN0AW.js";
|
|
5
|
+
import { a as recordWriteFailure, i as recordDepthSample, n as SessionMetadata$1, o as recordingReducer, r as endSession, s as startSession, t as RecordingState } from "../recording-slice-DXw5-UvO.js";
|
|
6
|
+
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-mfyxD2-M.js";
|
|
8
7
|
import { n as SessionMetadata } from "../opfs-storage-S_odkCk1.js";
|
|
9
8
|
import { n as StorageBackend } from "../storage-backend-BX7egQKi.js";
|
|
10
|
-
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, a as SlamAppStoreOptions, b as computeGpsVsFusedDivergence, g as TrackingQualityState, h as TrackingQualitySliceState, i as SlamAppStore, j as snapshotsTrimmed, k as selectTrackingQuality, m as TrackingQualityReport, n as SlamAppMiddleware, o as createSlamAppStore, p as TrackingQualityOptions, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-
|
|
11
|
-
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as updateDeviceOrientation, n as buildRawGpsPoint, o as resetCoordinatorState, r as buildRecordGpsEventPayload, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-
|
|
12
|
-
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-
|
|
13
|
-
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-
|
|
14
|
-
import {
|
|
15
|
-
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "../replay-engine-
|
|
16
|
-
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-
|
|
17
|
-
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-
|
|
18
|
-
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-
|
|
19
|
-
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-
|
|
20
|
-
export { Add2dImagePayload, AlignmentSnapshot, CaptureGpsAnchorSampleOptions, CompleteCallback, DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY,
|
|
9
|
+
import { A as snapshotPushed, C as createTrackingQualityListenerMiddleware, D as resetTrackingQuality, E as reportUpdated, M as trackingQualityReducer, O as selectRecentAlignments, S as computeTrackingQualityReport, T as matrixDelta, _ as computeConvergence, a as SlamAppStoreOptions, b as computeGpsVsFusedDivergence, g as TrackingQualityState, h as TrackingQualitySliceState, i as SlamAppStore, j as snapshotsTrimmed, k as selectTrackingQuality, m as TrackingQualityReport, n as SlamAppMiddleware, o as createSlamAppStore, p as TrackingQualityOptions, r as SlamAppRootState, s as AlignmentSnapshot, t as SlamAppCombinedState, u as DEFAULT_TRACKING_QUALITY_OPTIONS, v as computeCoverage, w as degradedCountUpdated, x as computeResidualConsensus, y as computeGpsAccuracy } from "../create-slam-app-store-DFm5K9Ob.js";
|
|
10
|
+
import { a as eulerToQuaternion, c as getLastDeviceOrientation, i as createGpsPositionHandler, l as updateDeviceOrientation, n as buildRawGpsPoint, o as resetCoordinatorState, r as buildRecordGpsEventPayload, t as RecordingCoordinatorConfig } from "../gps-event-coordinator-Cruoe5I-.js";
|
|
11
|
+
import { i as captureGpsAnchorSample, n as GpsAnchorSample, r as GpsAnchorSampleGpsPoint, t as CaptureGpsAnchorSampleOptions } from "../gps-ar-pose-sampler-BuuUuK-D.js";
|
|
12
|
+
import { n as replayRecording, t as ReplayRecordingOptions } from "../recording-replayer-qT2EM1Qs.js";
|
|
13
|
+
import { i as slicePrefixOf, n as PersistenceMiddlewareOptions, r as createPersistenceMiddleware } from "../persistence-middleware-Cun4aF5M.js";
|
|
14
|
+
import { a as ReplayAction, c as computeInterActionDelay, i as ProgressCallback, l as extractActionTimestamp, n as DEFAULT_MAX_DELAY_MS, o as ReplayEngine, r as ErrorCallback, s as ReplayState, t as CompleteCallback } from "../replay-engine-B1H_kLhK.js";
|
|
15
|
+
import { n as subscribeToSelector, t as SubscribableStore } from "../subscribe-to-selector-j-eOYybQ.js";
|
|
16
|
+
import { n as wireStoreSubscribers, t as StoreSubscriberDeps } from "../store-subscribers-CWHToX6N.js";
|
|
17
|
+
import { a as selectOdometryRotations, i as selectOdometryPositions, n as selectFrameTilesInWebXR, o as selectZeroReference, r as selectGpsPositions, t as selectAlignmentMatrix } from "../app-selectors-DG0ZqaeI.js";
|
|
18
|
+
import { a as RawGpsPoint, c as calcRelativeCoordsInMeters, d as OnboardingGuidance, f as OnboardingPhase, i as RawDeviceOrientation, l as recordGpsEvent, m as selectOnboardingGuidance, n as GpsPoint, o as RecordGpsEventPayload, p as computeOnboardingGuidance, r as LatLong, s as add2dImage, t as Add2dImagePayload, u as setZeroPos } from "../index-ClmnNJ6-.js";
|
|
19
|
+
export { Add2dImagePayload, AlignmentSnapshot, CaptureGpsAnchorSampleOptions, CompleteCallback, DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_TRACKING_QUALITY_OPTIONS, DepthPoint, DepthSample, DeviceOrientation, ErrorCallback, GpsAnchorSample, GpsAnchorSampleGpsPoint, GpsPoint, LatLong, OnboardingGuidance, OnboardingPhase, SessionMetadata as OpfsSessionMetadata, PersistenceMiddlewareOptions, PoseReceivedPayload, ProgressCallback, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RawDeviceOrientation, RawGpsPoint, RecordGpsEventPayload, RecordingCoordinatorConfig, RecordingState, ReplayAction, ReplayEngine, ReplayRecordingOptions, ReplayState, ResetTransformData, RootWithQrDetected, SessionMetadata$1 as SessionMetadata, SlamAppCombinedState, SlamAppMiddleware, SlamAppRootState, SlamAppStore, SlamAppStoreOptions, StorageBackend, StoreSubscriberDeps, SubscribableStore, TrackingPhase, TrackingQualityOptions, TrackingQualityReport, TrackingQualitySliceState, TrackingQualityState, TrackingSliceState, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetTracking, resetTrackingQuality, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, wireStoreSubscribers };
|
package/dist/state/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { extractOdomPosition, extractOdomRotation } from "../types/ar-types.js";
|
|
2
2
|
import { clearLastRestartedPayload, originReset, poseLost, poseReceived, resetTracking, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLostFrameCount, selectTrackingPhase, trackingReducer } from "./tracking-slice.js";
|
|
3
|
-
import { r as updateDeviceOrientation, t as getLastDeviceOrientation } from "../device-orientation-cache-
|
|
4
|
-
import { DEFAULT_RECORDING_OPTIONS, DEPTH_CONSTRAINTS, IMAGE_CONSTRAINTS, STORAGE_KEY, cloneRecordingOptions, loadRecordingOptions, resetRecordingOptions, saveRecordingOptions, validateDepthOptions, validateImageOptions, validateRecordingOptions } from "./recording-options.js";
|
|
3
|
+
import { r as updateDeviceOrientation, t as getLastDeviceOrientation } from "../device-orientation-cache-j-kLP8he.js";
|
|
5
4
|
import { endSession, recordDepthSample, recordWriteFailure, recordingReducer, startSession } from "./recording-slice.js";
|
|
6
5
|
import { DEFAULT_QR_MAX_HISTORY, clearAllQrMarkers, clearQrMarker, medianQrPosition, pruneQrDetections, qrDetectedReducer, recordQrDetection, recordQrSizeEstimate, selectDerivedQrPlacement, selectLatestQrDetection, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, setQrMaxHistory } from "./qr-detected-slice.js";
|
|
7
6
|
import { buildRawGpsPoint, buildRecordGpsEventPayload, createGpsPositionHandler, eulerToQuaternion, resetCoordinatorState } from "./gps-event-coordinator.js";
|
|
@@ -9,10 +8,10 @@ import { captureGpsAnchorSample } from "./gps-ar-pose-sampler.js";
|
|
|
9
8
|
import { selectAlignmentMatrix, selectFrameTilesInWebXR, selectGpsPositions, selectOdometryPositions, selectOdometryRotations, selectZeroReference } from "./app-selectors.js";
|
|
10
9
|
import { DEFAULT_TRACKING_QUALITY_OPTIONS, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeResidualConsensus, computeTrackingQualityReport, createTrackingQualityListenerMiddleware, degradedCountUpdated, matrixDelta, reportUpdated, resetTrackingQuality, selectRecentAlignments, selectTrackingQuality, snapshotPushed, snapshotsTrimmed, trackingQualityReducer } from "./tracking-quality.js";
|
|
11
10
|
import { createPersistenceMiddleware, slicePrefixOf } from "./persistence-middleware.js";
|
|
12
|
-
import { t as createSlamAppStore } from "../create-slam-app-store-
|
|
11
|
+
import { t as createSlamAppStore } from "../create-slam-app-store-oK9bnqyI.js";
|
|
13
12
|
import { replayRecording } from "./recording-replayer.js";
|
|
14
13
|
import { DEFAULT_MAX_DELAY_MS, ReplayEngine, computeInterActionDelay, extractActionTimestamp } from "./replay-engine.js";
|
|
15
14
|
import { subscribeToSelector } from "./subscribe-to-selector.js";
|
|
16
15
|
import { wireStoreSubscribers } from "./store-subscribers.js";
|
|
17
|
-
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-
|
|
18
|
-
export { DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY,
|
|
16
|
+
import { a as computeOnboardingGuidance, i as setZeroPos, n as calcRelativeCoordsInMeters, o as selectOnboardingGuidance, r as recordGpsEvent, t as add2dImage } from "../state-CDF5LvsO.js";
|
|
17
|
+
export { DEFAULT_MAX_DELAY_MS, DEFAULT_QR_MAX_HISTORY, DEFAULT_TRACKING_QUALITY_OPTIONS, ReplayEngine, add2dImage, buildRawGpsPoint, buildRecordGpsEventPayload, calcRelativeCoordsInMeters, captureGpsAnchorSample, clearAllQrMarkers, clearLastRestartedPayload, clearQrMarker, computeConvergence, computeCoverage, computeGpsAccuracy, computeGpsVsFusedDivergence, computeInterActionDelay, computeOnboardingGuidance, computeResidualConsensus, computeTrackingQualityReport, createGpsPositionHandler, createPersistenceMiddleware, createSlamAppStore, createTrackingQualityListenerMiddleware, degradedCountUpdated, endSession, eulerToQuaternion, extractActionTimestamp, extractOdomPosition, extractOdomRotation, getLastDeviceOrientation, matrixDelta, medianQrPosition, originReset, poseLost, poseReceived, pruneQrDetections, qrDetectedReducer, recordDepthSample, recordGpsEvent, recordQrDetection, recordQrSizeEstimate, recordWriteFailure, recordingReducer, replayRecording, reportUpdated, resetCoordinatorState, resetTracking, resetTrackingQuality, selectAlignmentMatrix, selectDerivedQrPlacement, selectFrameTilesInWebXR, selectGpsPositions, selectLastRestartedPayload, selectLastSensorOrientation, selectLastValidPose, selectLatestQrDetection, selectLostFrameCount, selectOdometryPositions, selectOdometryRotations, selectOnboardingGuidance, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectRecentAlignments, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, selectTrackingPhase, selectTrackingQuality, selectZeroReference, setQrMaxHistory, setZeroPos, slicePrefixOf, snapshotPushed, snapshotsTrimmed, startSession, subscribeToSelector, trackingQualityReducer, trackingReducer, updateDeviceOrientation, wireStoreSubscribers };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as
|
|
2
|
-
export { PersistenceMiddlewareOptions, createPersistenceMiddleware, slicePrefixOf };
|
|
1
|
+
import { i as slicePrefixOf, n as PersistenceMiddlewareOptions, r as createPersistenceMiddleware, t as PersistenceMiddleware } from "../persistence-middleware-Cun4aF5M.js";
|
|
2
|
+
export { PersistenceMiddleware, PersistenceMiddlewareOptions, createPersistenceMiddleware, slicePrefixOf };
|
|
@@ -11,10 +11,27 @@ const MAX_CONCURRENT_WRITES = 3;
|
|
|
11
11
|
var WriteQueue = class {
|
|
12
12
|
pendingCount = 0;
|
|
13
13
|
queue = [];
|
|
14
|
+
flushWaiters = [];
|
|
14
15
|
enqueue(writeFn) {
|
|
15
16
|
this.queue.push(writeFn);
|
|
16
17
|
this.drain();
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolves once the queue is fully idle — every enqueued write (including
|
|
21
|
+
* ones still waiting behind the concurrency cap) has settled. Rejected
|
|
22
|
+
* writes count as settled (the enqueue wrappers handle their errors), so
|
|
23
|
+
* flush never hangs on a failing backend. Writes enqueued AFTER the queue
|
|
24
|
+
* went idle again are not waited for.
|
|
25
|
+
*/
|
|
26
|
+
flush() {
|
|
27
|
+
if (this.isIdle()) return Promise.resolve();
|
|
28
|
+
return new Promise((resolve) => {
|
|
29
|
+
this.flushWaiters.push(resolve);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
isIdle() {
|
|
33
|
+
return this.pendingCount === 0 && this.queue.length === 0;
|
|
34
|
+
}
|
|
18
35
|
drain() {
|
|
19
36
|
while (this.pendingCount < MAX_CONCURRENT_WRITES && this.queue.length > 0) {
|
|
20
37
|
const fn = this.queue.shift();
|
|
@@ -24,6 +41,11 @@ var WriteQueue = class {
|
|
|
24
41
|
this.drain();
|
|
25
42
|
});
|
|
26
43
|
}
|
|
44
|
+
if (this.isIdle() && this.flushWaiters.length > 0) {
|
|
45
|
+
const waiters = this.flushWaiters;
|
|
46
|
+
this.flushWaiters = [];
|
|
47
|
+
for (const resolve of waiters) resolve();
|
|
48
|
+
}
|
|
27
49
|
}
|
|
28
50
|
};
|
|
29
51
|
/**
|
|
@@ -58,19 +80,6 @@ function isInPersistableSession(wasRecording, isRecording, actionType) {
|
|
|
58
80
|
const isEndSession = actionType === endSession.type;
|
|
59
81
|
return isRecording || wasRecording && isEndSession;
|
|
60
82
|
}
|
|
61
|
-
/**
|
|
62
|
-
* Create a Redux middleware that persists qualifying actions to storage
|
|
63
|
-
* during active recording sessions.
|
|
64
|
-
*
|
|
65
|
-
* Persistence rules:
|
|
66
|
-
* - Only persists when `state.recording.isRecording` is true (checked AFTER
|
|
67
|
-
* the action is reduced, so `startSession` itself is included).
|
|
68
|
-
* - Persists actions whose slice prefix is listed in `persistedPrefixes`.
|
|
69
|
-
* - Excludes `recording/recordWriteFailure` to prevent recursive persistence.
|
|
70
|
-
* - Excludes `routing/*` and any other non-whitelisted actions.
|
|
71
|
-
* - Uses 1-based indexing for action files (000001.json, 000002.json, …).
|
|
72
|
-
* - Each middleware instance maintains its own action index (Bug 10 fix).
|
|
73
|
-
*/
|
|
74
83
|
function createPersistenceMiddleware(options) {
|
|
75
84
|
const { storageBackend, onWriteFailure, persistedPrefixes } = options;
|
|
76
85
|
const normalizedPrefixes = persistedPrefixes.map((prefix) => prefix.endsWith("/") ? prefix : `${prefix}/`);
|
|
@@ -93,7 +102,7 @@ function createPersistenceMiddleware(options) {
|
|
|
93
102
|
const index = ++actionIndex;
|
|
94
103
|
if (dispatchDepth > 1 && !hasWarnedReentrant) {
|
|
95
104
|
hasWarnedReentrant = true;
|
|
96
|
-
log.warn(`Persisted action "${actionType}" was dispatched re-entrantly (inside another dispatch's next()). Its recorded order can invert on replay — react to actions via a prepended listener middleware, not a synchronous store.subscribe dispatch. See 2026-06-28-subscriber-dispatch-persistence-ordering-review.md.`);
|
|
105
|
+
log.warn(`Persisted action "${actionType}" was dispatched re-entrantly (inside another dispatch's next()). Its recorded order can invert on replay — react to actions via a prepended listener middleware, not a synchronous store.subscribe dispatch. See 2026-06-28-0751-subscriber-dispatch-persistence-ordering-review.md.`);
|
|
97
106
|
}
|
|
98
107
|
writeQueue.enqueue(async () => {
|
|
99
108
|
try {
|
|
@@ -110,7 +119,7 @@ function createPersistenceMiddleware(options) {
|
|
|
110
119
|
dispatchDepth -= 1;
|
|
111
120
|
}
|
|
112
121
|
};
|
|
113
|
-
return middleware;
|
|
122
|
+
return Object.assign(middleware, { flushPendingWrites: () => writeQueue.flush() });
|
|
114
123
|
}
|
|
115
124
|
//#endregion
|
|
116
125
|
export { createPersistenceMiddleware, slicePrefixOf };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-
|
|
2
|
-
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-
|
|
3
|
-
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-
|
|
1
|
+
import { d as QrSizeStatus, l as QrSizeEstimate } from "../qr-size-measurer-rVFf4AdM.js";
|
|
2
|
+
import { a as QrPoseStability, o as QrPoseStabilityOptions, s as QrPoseStabilityStatus } from "../qr-pose-aggregation-mABSN0AW.js";
|
|
3
|
+
import { C as setQrMaxHistory, S as selectStableQrPose, _ as selectQrPoseStability, a as RootWithQrDetected, b as selectResolvedQrSizeM, c as medianQrPosition, d as recordQrDetection, f as recordQrSizeEstimate, g as selectQrMarkers, h as selectQrMarker, i as QrMarkerState, l as pruneQrDetections, m as selectLatestQrDetection, n as QrDetectedState, o as clearAllQrMarkers, p as selectDerivedQrPlacement, r as QrDetectionEntry, s as clearQrMarker, t as DEFAULT_QR_MAX_HISTORY, u as qrDetectedReducer, v as selectQrRawObservations, x as selectSolvedQrPose, y as selectQrSize } from "../qr-detected-slice-mfyxD2-M.js";
|
|
4
4
|
export { DEFAULT_QR_MAX_HISTORY, QrDetectedState, QrDetectionEntry, QrMarkerState, QrPoseStability, QrPoseStabilityOptions, QrPoseStabilityStatus, QrSizeEstimate, QrSizeStatus, RootWithQrDetected, clearAllQrMarkers, clearQrMarker, medianQrPosition, pruneQrDetections, qrDetectedReducer, recordQrDetection, recordQrSizeEstimate, selectDerivedQrPlacement, selectLatestQrDetection, selectQrMarker, selectQrMarkers, selectQrPoseStability, selectQrRawObservations, selectQrSize, selectResolvedQrSizeM, selectSolvedQrPose, selectStableQrPose, setQrMaxHistory };
|