@mentra/miniapp 0.3.0-dev.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 +259 -0
- package/dist/background/index.d.ts +59 -0
- package/dist/background/index.d.ts.map +1 -0
- package/dist/background/index.js +25 -0
- package/dist/background/index.js.map +1 -0
- package/dist/background/register.d.ts +38 -0
- package/dist/background/register.d.ts.map +1 -0
- package/dist/background/register.js +75 -0
- package/dist/background/register.js.map +1 -0
- package/dist/dev-reload.d.ts +21 -0
- package/dist/dev-reload.d.ts.map +1 -0
- package/dist/dev-reload.js +62 -0
- package/dist/dev-reload.js.map +1 -0
- package/dist/envelope.d.ts +23 -0
- package/dist/envelope.d.ts.map +1 -0
- package/dist/envelope.js +47 -0
- package/dist/envelope.js.map +1 -0
- package/dist/globals.d.ts +54 -0
- package/dist/globals.d.ts.map +1 -0
- package/dist/globals.js +12 -0
- package/dist/globals.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/actions.d.ts +54 -0
- package/dist/modules/actions.d.ts.map +1 -0
- package/dist/modules/actions.js +122 -0
- package/dist/modules/actions.js.map +1 -0
- package/dist/modules/auth.d.ts +25 -0
- package/dist/modules/auth.d.ts.map +1 -0
- package/dist/modules/auth.js +52 -0
- package/dist/modules/auth.js.map +1 -0
- package/dist/modules/base64.d.ts +16 -0
- package/dist/modules/base64.d.ts.map +1 -0
- package/dist/modules/base64.js +92 -0
- package/dist/modules/base64.js.map +1 -0
- package/dist/modules/blob.d.ts +161 -0
- package/dist/modules/blob.d.ts.map +1 -0
- package/dist/modules/blob.js +277 -0
- package/dist/modules/blob.js.map +1 -0
- package/dist/modules/camera.d.ts +137 -0
- package/dist/modules/camera.d.ts.map +1 -0
- package/dist/modules/camera.js +104 -0
- package/dist/modules/camera.js.map +1 -0
- package/dist/modules/cloud.d.ts +34 -0
- package/dist/modules/cloud.d.ts.map +1 -0
- package/dist/modules/cloud.js +70 -0
- package/dist/modules/cloud.js.map +1 -0
- package/dist/modules/dashboard.d.ts +16 -0
- package/dist/modules/dashboard.d.ts.map +1 -0
- package/dist/modules/dashboard.js +27 -0
- package/dist/modules/dashboard.js.map +1 -0
- package/dist/modules/display.d.ts +106 -0
- package/dist/modules/display.d.ts.map +1 -0
- package/dist/modules/display.js +57 -0
- package/dist/modules/display.js.map +1 -0
- package/dist/modules/events.d.ts +167 -0
- package/dist/modules/events.d.ts.map +1 -0
- package/dist/modules/events.js +123 -0
- package/dist/modules/events.js.map +1 -0
- package/dist/modules/glasses.d.ts +28 -0
- package/dist/modules/glasses.d.ts.map +1 -0
- package/dist/modules/glasses.js +39 -0
- package/dist/modules/glasses.js.map +1 -0
- package/dist/modules/heading.d.ts +16 -0
- package/dist/modules/heading.d.ts.map +1 -0
- package/dist/modules/heading.js +20 -0
- package/dist/modules/heading.js.map +1 -0
- package/dist/modules/imu.d.ts +31 -0
- package/dist/modules/imu.d.ts.map +1 -0
- package/dist/modules/imu.js +40 -0
- package/dist/modules/imu.js.map +1 -0
- package/dist/modules/input.d.ts +34 -0
- package/dist/modules/input.d.ts.map +1 -0
- package/dist/modules/input.js +50 -0
- package/dist/modules/input.js.map +1 -0
- package/dist/modules/led.d.ts +35 -0
- package/dist/modules/led.d.ts.map +1 -0
- package/dist/modules/led.js +39 -0
- package/dist/modules/led.js.map +1 -0
- package/dist/modules/location.d.ts +27 -0
- package/dist/modules/location.d.ts.map +1 -0
- package/dist/modules/location.js +35 -0
- package/dist/modules/location.js.map +1 -0
- package/dist/modules/mic.d.ts +44 -0
- package/dist/modules/mic.d.ts.map +1 -0
- package/dist/modules/mic.js +67 -0
- package/dist/modules/mic.js.map +1 -0
- package/dist/modules/miniapps.d.ts +72 -0
- package/dist/modules/miniapps.d.ts.map +1 -0
- package/dist/modules/miniapps.js +48 -0
- package/dist/modules/miniapps.js.map +1 -0
- package/dist/modules/navigation.d.ts +326 -0
- package/dist/modules/navigation.d.ts.map +1 -0
- package/dist/modules/navigation.js +386 -0
- package/dist/modules/navigation.js.map +1 -0
- package/dist/modules/permissions.d.ts +58 -0
- package/dist/modules/permissions.d.ts.map +1 -0
- package/dist/modules/permissions.js +66 -0
- package/dist/modules/permissions.js.map +1 -0
- package/dist/modules/phone.d.ts +61 -0
- package/dist/modules/phone.d.ts.map +1 -0
- package/dist/modules/phone.js +94 -0
- package/dist/modules/phone.js.map +1 -0
- package/dist/modules/pivots/engine.d.ts +169 -0
- package/dist/modules/pivots/engine.d.ts.map +1 -0
- package/dist/modules/pivots/engine.js +779 -0
- package/dist/modules/pivots/engine.js.map +1 -0
- package/dist/modules/pivots/geometry.d.ts +84 -0
- package/dist/modules/pivots/geometry.d.ts.map +1 -0
- package/dist/modules/pivots/geometry.js +371 -0
- package/dist/modules/pivots/geometry.js.map +1 -0
- package/dist/modules/pivots/instructions.d.ts +139 -0
- package/dist/modules/pivots/instructions.d.ts.map +1 -0
- package/dist/modules/pivots/instructions.js +280 -0
- package/dist/modules/pivots/instructions.js.map +1 -0
- package/dist/modules/speaker.d.ts +163 -0
- package/dist/modules/speaker.d.ts.map +1 -0
- package/dist/modules/speaker.js +250 -0
- package/dist/modules/speaker.js.map +1 -0
- package/dist/modules/storage.d.ts +50 -0
- package/dist/modules/storage.d.ts.map +1 -0
- package/dist/modules/storage.js +99 -0
- package/dist/modules/storage.js.map +1 -0
- package/dist/modules/stream.d.ts +129 -0
- package/dist/modules/stream.d.ts.map +1 -0
- package/dist/modules/stream.js +52 -0
- package/dist/modules/stream.js.map +1 -0
- package/dist/modules/system.d.ts +45 -0
- package/dist/modules/system.d.ts.map +1 -0
- package/dist/modules/system.js +42 -0
- package/dist/modules/system.js.map +1 -0
- package/dist/modules/transcription.d.ts +67 -0
- package/dist/modules/transcription.d.ts.map +1 -0
- package/dist/modules/transcription.js +106 -0
- package/dist/modules/transcription.js.map +1 -0
- package/dist/modules/translation.d.ts +59 -0
- package/dist/modules/translation.d.ts.map +1 -0
- package/dist/modules/translation.js +119 -0
- package/dist/modules/translation.js.map +1 -0
- package/dist/modules/ui.d.ts +186 -0
- package/dist/modules/ui.d.ts.map +1 -0
- package/dist/modules/ui.js +293 -0
- package/dist/modules/ui.js.map +1 -0
- package/dist/protocol.d.ts +294 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +320 -0
- package/dist/protocol.js.map +1 -0
- package/dist/react/MentraProvider.d.ts +33 -0
- package/dist/react/MentraProvider.d.ts.map +1 -0
- package/dist/react/MentraProvider.js +15 -0
- package/dist/react/MentraProvider.js.map +1 -0
- package/dist/react/MiniappHeader.d.ts +44 -0
- package/dist/react/MiniappHeader.d.ts.map +1 -0
- package/dist/react/MiniappHeader.js +32 -0
- package/dist/react/MiniappHeader.js.map +1 -0
- package/dist/react/index.d.ts +13 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +9 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/useCapabilities.d.ts +26 -0
- package/dist/react/useCapabilities.d.ts.map +1 -0
- package/dist/react/useCapabilities.js +27 -0
- package/dist/react/useCapabilities.js.map +1 -0
- package/dist/react/useCapsuleHeaderStyle.d.ts +27 -0
- package/dist/react/useCapsuleHeaderStyle.d.ts.map +1 -0
- package/dist/react/useCapsuleHeaderStyle.js +36 -0
- package/dist/react/useCapsuleHeaderStyle.js.map +1 -0
- package/dist/react/useColorScheme.d.ts +18 -0
- package/dist/react/useColorScheme.d.ts.map +1 -0
- package/dist/react/useColorScheme.js +24 -0
- package/dist/react/useColorScheme.js.map +1 -0
- package/dist/react/useConnected.d.ts +17 -0
- package/dist/react/useConnected.d.ts.map +1 -0
- package/dist/react/useConnected.js +39 -0
- package/dist/react/useConnected.js.map +1 -0
- package/dist/react/useRpc.d.ts +29 -0
- package/dist/react/useRpc.d.ts.map +1 -0
- package/dist/react/useRpc.js +82 -0
- package/dist/react/useRpc.js.map +1 -0
- package/dist/react/useSafeArea.d.ts +21 -0
- package/dist/react/useSafeArea.d.ts.map +1 -0
- package/dist/react/useSafeArea.js +22 -0
- package/dist/react/useSafeArea.js.map +1 -0
- package/dist/session.d.ts +310 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +653 -0
- package/dist/session.js.map +1 -0
- package/dist/sub-path-types.test-d.d.ts +28 -0
- package/dist/sub-path-types.test-d.d.ts.map +1 -0
- package/dist/sub-path-types.test-d.js +37 -0
- package/dist/sub-path-types.test-d.js.map +1 -0
- package/dist/transport/auto.d.ts +35 -0
- package/dist/transport/auto.d.ts.map +1 -0
- package/dist/transport/auto.js +125 -0
- package/dist/transport/auto.js.map +1 -0
- package/dist/transport/dispatch.d.ts +43 -0
- package/dist/transport/dispatch.d.ts.map +1 -0
- package/dist/transport/dispatch.js +91 -0
- package/dist/transport/dispatch.js.map +1 -0
- package/dist/transport/local-socket.d.ts +28 -0
- package/dist/transport/local-socket.d.ts.map +1 -0
- package/dist/transport/local-socket.js +80 -0
- package/dist/transport/local-socket.js.map +1 -0
- package/dist/transport/mock.d.ts +54 -0
- package/dist/transport/mock.d.ts.map +1 -0
- package/dist/transport/mock.js +205 -0
- package/dist/transport/mock.js.map +1 -0
- package/dist/transport/postmessage.d.ts +36 -0
- package/dist/transport/postmessage.d.ts.map +1 -0
- package/dist/transport/postmessage.js +78 -0
- package/dist/transport/postmessage.js.map +1 -0
- package/dist/transport/types.d.ts +25 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +11 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/ui/index.d.ts +98 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +32 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +75 -0
- package/src/background/index.ts +152 -0
- package/src/background/register.ts +85 -0
- package/src/dev-reload.ts +60 -0
- package/src/envelope.ts +54 -0
- package/src/globals.ts +62 -0
- package/src/index.ts +171 -0
- package/src/modules/actions.ts +156 -0
- package/src/modules/auth.ts +68 -0
- package/src/modules/base64.ts +87 -0
- package/src/modules/blob.ts +341 -0
- package/src/modules/camera.ts +196 -0
- package/src/modules/cloud.ts +94 -0
- package/src/modules/dashboard.ts +31 -0
- package/src/modules/display.ts +122 -0
- package/src/modules/events.ts +264 -0
- package/src/modules/glasses.ts +44 -0
- package/src/modules/heading.ts +23 -0
- package/src/modules/imu.ts +44 -0
- package/src/modules/input.ts +71 -0
- package/src/modules/led.ts +61 -0
- package/src/modules/location.ts +39 -0
- package/src/modules/mic.ts +74 -0
- package/src/modules/miniapps.ts +90 -0
- package/src/modules/navigation.ts +670 -0
- package/src/modules/permissions.ts +84 -0
- package/src/modules/phone.ts +120 -0
- package/src/modules/pivots/engine.ts +863 -0
- package/src/modules/pivots/geometry.ts +409 -0
- package/src/modules/pivots/instructions.ts +343 -0
- package/src/modules/speaker.ts +328 -0
- package/src/modules/storage.ts +109 -0
- package/src/modules/stream.ts +163 -0
- package/src/modules/system.ts +76 -0
- package/src/modules/transcription.ts +128 -0
- package/src/modules/translation.ts +149 -0
- package/src/modules/ui.ts +498 -0
- package/src/protocol.ts +371 -0
- package/src/react/MentraProvider.tsx +50 -0
- package/src/react/MiniappHeader.tsx +122 -0
- package/src/react/index.ts +12 -0
- package/src/react/useCapabilities.ts +29 -0
- package/src/react/useCapsuleHeaderStyle.ts +54 -0
- package/src/react/useColorScheme.ts +26 -0
- package/src/react/useConnected.ts +47 -0
- package/src/react/useRpc.ts +106 -0
- package/src/react/useSafeArea.ts +40 -0
- package/src/session.ts +878 -0
- package/src/sub-path-types.test-d.ts +49 -0
- package/src/transport/auto.ts +143 -0
- package/src/transport/dispatch.ts +106 -0
- package/src/transport/local-socket.ts +93 -0
- package/src/transport/mock.ts +248 -0
- package/src/transport/postmessage.ts +95 -0
- package/src/transport/types.ts +26 -0
- package/src/ui/index.ts +122 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,eAAe,CAAA;AAE1C,OAAO,EAAC,aAAa,EAAmB,aAAa,EAAE,iBAAiB,EAAC,MAAM,YAAY,CAAA;AAC3F,OAAO,EAAC,kBAAkB,EAAqB,MAAM,WAAW,CAAA;AAChE,OAAO,EAAC,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAC,MAAM,YAAY,CAAA;AACpF,OAAO,EAAC,eAAe,EAAyB,MAAM,kBAAkB,CAAA;AAExE,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAC,YAAY,EAAqB,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAA;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAA;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAC,SAAS,EAAC,MAAM,eAAe,CAAA;AACvC,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,YAAY,EAAgB,MAAM,cAAc,CAAA;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAC,UAAU,EAAC,MAAM,gBAAgB,CAAA;AAsFzC,MAAM,oBAAoB,GAA8B;IACtD,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,eAAe;IACf,UAAU;CACF,CAAA;AAEV,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAE1C,YAAY,OAAO,GAAG,iCAAiC;QACrD,KAAK,CAAC,OAAO,CAAC,CAAA;QAFP,SAAI,GAAG,gBAAgB,CAAC,aAAa,CAAA;QAG5C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAmBD,MAAM,0BAA0B,GAAG,KAAM,CAAA;AAEzC,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,0BAA0B,GAAG,KAAM,CAAA;AAsBzC,MAAM,OAAO,cAAc;IAiGzB,YAAY,UAAiC,EAAE;QAzC/C,2EAA2E;QACpE,iBAAY,GAA+B,IAAI,CAAA;QAC/C,WAAM,GAAG,EAAE,CAAA;QACX,gBAAW,GAAG,EAAE,CAAA;QAChB,eAAU,GAAsB,YAAY,CAAA;QACnD,kFAAkF;QAC3E,gBAAW,GAAuB,OAAO,CAAA;QAEhD,gFAAgF;QACzE,UAAK,GAAG,KAAK,CAAA;QAIH,YAAO,GAAG,IAAI,YAAY,EAAwB,CAAA;QAC3D,cAAS,GAA4B,IAAI,CAAA;QAChC,gBAAW,GAAG,IAAI,GAAG,EAKlC,CAAA;QACI,uBAAkB,GAA4C,IAAI,CAAA;QAE1E;;;WAGG;QACc,kBAAa,GAAa,EAAE,CAAA;QAC5B,oBAAe,GAAG,IAAI,GAAG,EAA0B,CAAA;QAC5D,mBAAc,GAAyB,IAAI,CAAA;QAC3C,aAAQ,GAAG,KAAK,CAAA;QAExB,uFAAuF;QAC/E,iBAAY,GAAqB;YACvC,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,MAAM,EAAE,KAAK;YACb,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAA;QAGC,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAA0B,CAAA;QAE9E,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAA;QACpE,IAAI,QAAQ,CAAC,WAAW,KAAK,OAAO,IAAI,QAAQ,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YACxE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;QACzC,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,aAAa,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,WAAW,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED;;;;;;;;;OASG;IACH,sBAAsB,CAAC,WAAmB;QACxC,MAAM,SAAS,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAA;QACrD,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAA;QAC5B,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACH,eAAe;QACb,OAAO,EAAC,GAAG,IAAI,CAAC,YAAY,EAAC,CAAA;IAC/B,CAAC;IAED,iFAAiF;IACjF,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,GAAG,IAAI,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACpD,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAM;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAC,GAAG,OAAO,EAAC,CAAC,CAAA;QACtC,CAAC;QAED,KAAK,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAEtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG;gBACb,QAAQ;gBACR,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE;oBACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBAC/B,MAAM,CAAC,IAAI,iBAAiB,CAAC,qCAAqC,CAAC,CAAC,CAAA;gBACtE,CAAC,EAAE,SAAS,CAAC;aACd,CAAA;YACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,UAAkB,EAAE,OAAgC;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACnD,CAAC;IAED,4EAA4E;IAC5E,uBAAuB;IACvB,4EAA4E;IAE5E;;;OAGG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,6BAA6B,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC,cAAc,CAAA;QAEnD,0EAA0E;QAC1E,4EAA4E;QAC5E,MAAM,YAAY,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;gBAC5D,IAAI,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAC,CAAC,CAAA;gBACjF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC/B,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAEzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC9B,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjC,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;YAC3D,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAA;YAC/E,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;YAE3B,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YACjC,MAAM,cAAc,GAAG;gBACrB,IAAI,EAAE,kBAAkB,CAAC,OAAO;gBAChC,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAA;YACD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAC,CAAC,CAAC,CAAA;YAE5E,MAAM,YAAY,CAAA;QACpB,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;IAED,wEAAwE;IACxE,YAAY;QACV,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACxC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;IAC9C,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,gEAAgE;QAChE,+DAA+D;QAC/D,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,8CAA8C;YAC9C,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;QACvE,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,eAAe,EAAE,OAAO,EAAE,sBAAsB,EAAC,CAAC,CAAA;QAC9F,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;IACtD,CAAC;IAED,4EAA4E;IAC5E,wCAAwC;IACxC,4EAA4E;IAE5E,oEAAoE;IACpE,WAAW,CAAC,OAAe;QACzB,MAAM,QAAQ,GAAoB,EAAC,OAAO,EAAC,CAAA;QAC3C,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;IACjD,CAAC;IAED;;;;;;;;;OASG;IACH,WAAW,CAAoB,OAAe,EAAE,IAA2B;QACzE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;QACjC,MAAM,QAAQ,GAAoB,EAAC,OAAO,EAAE,SAAS,EAAC,CAAA;QACtD,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,0BAA0B,CAAA;QAC/D,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,0EAA0E;YAC1E,yEAAyE;YACzE,0EAA0E;YAC1E,0EAA0E;YAC1E,MAAM,KAAK,GACT,SAAS,GAAG,CAAC;gBACX,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;oBACnD,IAAI,CAAC,OAAO;wBAAE,OAAM;oBACpB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;oBACtC,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,gBAAgB,CAAC,cAAc;wBACrC,OAAO,EAAE,wDAAwD;qBAClE,CAAC,CAAA;gBACJ,CAAC,EAAE,SAAS,CAAC;gBACf,CAAC,CAAC,SAAS,CAAA;YACf,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE;gBAClC,SAAS;gBACT,OAAO,EAAE,OAA+B;gBACxC,MAAM;gBACN,KAAK;aACN,CAAC,CAAA;YACF,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,4EAA4E;IAC5E,+BAA+B;IAC/B,4EAA4E;IAE5E,EAAE,CAAuC,KAAQ,EAAE,OAAgC;QACjF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAuC,CAAC,CAAA;QAC/D,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAuC,CAAC,CAAA;IAC/E,CAAC;IAED,GAAG,CAAuC,KAAQ,EAAE,OAAgC;QAClF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAuC,CAAC,CAAA;IAClE,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAiC;QAClD,OAAO,IAAI,CAAC,EAAE,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,kBAAkB,CAAC,OAAuC;QACxD,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,oBAAoB,CAAC,OAAkD;QACrE,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAED,mBAAmB,CAAC,OAA6C;QAC/D,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,4EAA4E;IAC5E,4BAA4B;IAC5B,4EAA4E;IAEpE,aAAa,CAAC,GAAW;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,sDAAsD;gBACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAY,CAAC,CAAA;YAC1C,CAAC;YACD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAEO,UAAU;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC1C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAY,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,GAAW;QAChC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAErB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAoD,CAAA;QAC7E,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAA;QAE1B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrC,MAAM,GAAG,GAAG,OAAuC,CAAA;gBACnD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;gBAC9B,IAAI,GAAG,CAAC,WAAW;oBAAE,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;gBACvD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAA;gBAC5C,IAAI,GAAG,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAA;gBACpD,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;oBAC9D,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAA;gBACpC,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACxB,IAAI,CAAC,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAA;gBACvD,CAAC;gBACD,kEAAkE;gBAClE,qEAAqE;gBACrE,sDAAsD;gBACtD,IAAI,GAAG,CAAC,WAAW;oBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;gBAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;gBACjB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC1B,yEAAyE;gBACzE,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrC,MAAM,IAAI,GAAI,OAAwC,CAAC,IAAI,CAAA;gBAC3D,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACpB,IAAI,CAAC,IAAI,CAAC,MAAM;wBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAA;gBACnD,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,WAA2C,CAAA;gBAChE,IAAI,IAAI;oBAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;gBACrC,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAyE,CAAA;gBAC/F,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,MAAM,KAAK,GAAG;oBACZ,KAAK;oBACL,SAAS,EAAE,OAAO,CAAC,SAA+B;oBAClD,YAAY,EAAE,OAAO,CAAC,YAAkC;oBACxD,UAAU,EAAE,OAAO,CAAC,UAAgC;iBACrD,CAAA;gBACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;gBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;gBACxC,OAAM;YACR,CAAC;YAED,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,wDAAwD;gBACxD,MAAM,IAAI,GAAW,EAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAC,CAAA;gBACrD,MAAM,GAAG,GAAoB;oBAC3B,OAAO,EAAE,IAAI;oBACb,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D,CAAA;gBACD,IAAI,CAAC;oBACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC7C,CAAC;gBAAC,MAAM,CAAC;oBACP,+DAA+D;gBACjE,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAgC,CAAA;gBAC3D,IAAI,CAAC,UAAU;oBAAE,OAAM;gBACvB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;gBACnD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC;gBACrC,oEAAoE;gBACpE,sEAAsE;gBACtE,yDAAyD;gBACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAA4B,CAAA;gBACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA8B,CAAA;gBACvD,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ;oBAAE,OAAM;gBAChC,MAAM,MAAM,GAAI,OAAO,CAAC,MAA8C,IAAI,EAAE,CAAA;gBAC5E,MAAM,iBAAiB,GAAI,OAAO,CAAC,iBAAwC,IAAI,EAAE,CAAA;gBACjF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAC,iBAAiB,EAAC,CAAC,CAAA;gBACpE,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7C,MAAM,GAAG,GAAI,OAAO,CAAC,YAA2C,IAAI,IAAI,CAAA;gBACxE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;gBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;gBACtC,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,UAA2C,CAAA;gBAChE,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;oBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;oBACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;gBACvC,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,WAA6C,CAAA;gBAClE,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;oBACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBACxC,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;gBACpC,IAAI,CAAC,SAAS;oBAAE,OAAM;gBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACnD,IAAI,CAAC,OAAO;oBAAE,OAAM;gBACpB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;gBACtC,IAAI,OAAO,CAAC,KAAK;oBAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC9C,IAAI,OAAO,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAI,OAAO,CAAC,KAAyC,IAAI;wBAChE,IAAI,EAAE,gBAAgB,CAAC,QAAQ;wBAC/B,OAAO,EAAE,eAAe;qBACzB,CAAA;oBACD,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACrB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;gBACvC,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;gBACzC,MAAM,MAAM,GAAI,OAAO,CAAC,MAA6B,IAAI,qBAAqB,CAAA;gBAC9E,IAAI,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAA;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;gBACvE,CAAC;gBACD,OAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAE,OAAO,CAAC,OAA8B,IAAI,sBAAsB,CAAC,CAAA;gBACxF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;gBAC/B,OAAM;YACR,CAAC;YAED;gBACE,gDAAgD;gBAChD,OAAM;QACV,CAAC;IACH,CAAC;IAEO,yBAAyB,CAAC,MAAc;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,cAAc,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,2BAA2B,MAAM,EAAE,EAAC,CAAC,CAAA;QACzG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAEO,cAAc,CAAC,KAA0B;QAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,KAAK;gBAAE,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACvB,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,qEAAqE;QACrE,2EAA2E;QAC3E,0EAA0E;QAC1E,uEAAuE;QACvE,6DAA6D;QAC7D,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAsB,EAAE,QAAgB;QACzD,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAA;IAC/C,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,IAAI,IAAI,CAAC,kBAAkB;YAAE,OAAO,IAAI,CAAC,kBAAkB,CAAA;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAEzE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAoB;YAC5D,IAAI,EAAE,kBAAkB,CAAC,YAAY;YACrC,QAAQ;SACT,CAAC;aACC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;YACzB,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAC9B,OAAO,IAAI,IAAI,IAAI,CAAA;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;YAC1D,OAAO,IAAI,CAAA;QACb,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAChC,CAAC,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAC,kBAAkB,CAAA;IAChC,CAAC;IAEO,SAAS,CAAC,IAAsB;QACtC,IAAI,CAAC,SAAS,GAAG,EAAC,GAAG,IAAI,EAAC,CAAA;QAC1B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YACrD,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAC/B,MAAM,CAAC,OAAO,CAAC,EAAC,GAAG,IAAI,EAAC,CAAC,CAAA;QAC3B,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC,GAAG,IAAI,EAAC,CAAC,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,IAA+B;QACtD,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,OAAO,GAAqB,EAAC,GAAG,IAAI,CAAC,YAAY,EAAC,CAAA;QACxD,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;YAC1B,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrB,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;gBACd,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,YAAY,GAAG,OAAO,CAAA;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,GAAG,OAAO,EAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;CACF;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,WAAmB;IACjD,QAAQ,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;QAClC,KAAK,YAAY;YACf,OAAO,YAAY,CAAA;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,qBAAqB;YACxB,OAAO,UAAU,CAAA;QACnB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB;YACvB,OAAO,eAAe,CAAA;QACxB,KAAK,UAAU;YACb,OAAO,UAAU,CAAA;QACnB;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,mBAAmB;IACjC,OAAO,oBAAoB,CAAA;AAC7B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile-time test for the two-layer SDK split.
|
|
3
|
+
*
|
|
4
|
+
* The package exports two sub-paths with distinct type-roots:
|
|
5
|
+
* - `@mentra/miniapp/background` exposes `MiniappSession` + module
|
|
6
|
+
* types; it does NOT declare the `mentra` global.
|
|
7
|
+
* - `@mentra/miniapp/ui` exposes the `MentraUiGlobal` / `MentraTyped`
|
|
8
|
+
* types + React adapters. It deliberately does NOT declare a
|
|
9
|
+
* `var mentra` on `globalThis` — that would lock every consumer
|
|
10
|
+
* into the SDK's default `Record<string, unknown>` channel shape
|
|
11
|
+
* and break per-miniapp `Channels` registries via TS's `var`
|
|
12
|
+
* declaration-merging rules. Each miniapp declares its own typed
|
|
13
|
+
* `var mentra: MentraTyped<MyChannels>` in `shared/channels.ts`.
|
|
14
|
+
*
|
|
15
|
+
* Wrong-layer imports should be caught at compile time. This file is
|
|
16
|
+
* type-only (`.test-d.ts`) — no runtime assertions. `bun typecheck` /
|
|
17
|
+
* `bun x tsc -p tsconfig.json` is the executor.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: this file lives inside `src/` so it ships with the package and
|
|
20
|
+
* downstream consumers' typechecks would also catch a regression. The
|
|
21
|
+
* `@ts-expect-error` lines fail the build if the named symbol *does*
|
|
22
|
+
* become reachable on the wrong path, which is the contract we want.
|
|
23
|
+
*/
|
|
24
|
+
import type { MentraTyped } from "./ui/index";
|
|
25
|
+
export type _Typed = MentraTyped<{
|
|
26
|
+
foo: number;
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=sub-path-types.test-d.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-path-types.test-d.d.ts","sourceRoot":"","sources":["../src/sub-path-types.test-d.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,OAAO,KAAK,EAAiB,WAAW,EAAC,MAAM,YAAY,CAAA;AAS3D,MAAM,MAAM,MAAM,GAAG,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile-time test for the two-layer SDK split.
|
|
3
|
+
*
|
|
4
|
+
* The package exports two sub-paths with distinct type-roots:
|
|
5
|
+
* - `@mentra/miniapp/background` exposes `MiniappSession` + module
|
|
6
|
+
* types; it does NOT declare the `mentra` global.
|
|
7
|
+
* - `@mentra/miniapp/ui` exposes the `MentraUiGlobal` / `MentraTyped`
|
|
8
|
+
* types + React adapters. It deliberately does NOT declare a
|
|
9
|
+
* `var mentra` on `globalThis` — that would lock every consumer
|
|
10
|
+
* into the SDK's default `Record<string, unknown>` channel shape
|
|
11
|
+
* and break per-miniapp `Channels` registries via TS's `var`
|
|
12
|
+
* declaration-merging rules. Each miniapp declares its own typed
|
|
13
|
+
* `var mentra: MentraTyped<MyChannels>` in `shared/channels.ts`.
|
|
14
|
+
*
|
|
15
|
+
* Wrong-layer imports should be caught at compile time. This file is
|
|
16
|
+
* type-only (`.test-d.ts`) — no runtime assertions. `bun typecheck` /
|
|
17
|
+
* `bun x tsc -p tsconfig.json` is the executor.
|
|
18
|
+
*
|
|
19
|
+
* NOTE: this file lives inside `src/` so it ships with the package and
|
|
20
|
+
* downstream consumers' typechecks would also catch a regression. The
|
|
21
|
+
* `@ts-expect-error` lines fail the build if the named symbol *does*
|
|
22
|
+
* become reachable on the wrong path, which is the contract we want.
|
|
23
|
+
*/
|
|
24
|
+
// ✅ MiniappSession is reachable from the background entry.
|
|
25
|
+
const _bg = undefined;
|
|
26
|
+
void _bg;
|
|
27
|
+
// ✅ MentraUiGlobal is reachable from the ui entry.
|
|
28
|
+
const _ui = undefined;
|
|
29
|
+
void _ui;
|
|
30
|
+
export {};
|
|
31
|
+
// ----- compile-time guardrails ------------------------------------------
|
|
32
|
+
// (TypeScript doesn't ship a `// @ts-expect-no-error` mirror, so we just
|
|
33
|
+
// rely on the named imports above failing if the corresponding files
|
|
34
|
+
// disappear. The asymmetric exports are enforced by package.json's
|
|
35
|
+
// `exports` map at consumer time; this file proves the source files
|
|
36
|
+
// expose what they should.)
|
|
37
|
+
//# sourceMappingURL=sub-path-types.test-d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sub-path-types.test-d.js","sourceRoot":"","sources":["../src/sub-path-types.test-d.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,2DAA2D;AAC3D,MAAM,GAAG,GAA+B,SAAS,CAAA;AACjD,KAAK,GAAG,CAAA;AAKR,mDAAmD;AACnD,MAAM,GAAG,GAA+B,SAAS,CAAA;AACjD,KAAK,GAAG,CAAA;;AAOR,2EAA2E;AAC3E,yEAAyE;AACzE,qEAAqE;AACrE,mEAAmE;AACnE,oEAAoE;AACpE,4BAA4B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Auto-detect the right Transport based on environment.
|
|
3
|
+
*/
|
|
4
|
+
import { Transport } from "./types";
|
|
5
|
+
export interface CreateTransportOptions {
|
|
6
|
+
/** Force a specific transport. Skip auto-detection. */
|
|
7
|
+
transport?: Transport;
|
|
8
|
+
/** For LocalSocketTransport fallback — override the ws URL. */
|
|
9
|
+
localSocketUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Return a Transport appropriate for the current environment.
|
|
13
|
+
*
|
|
14
|
+
* Detection order (first match wins):
|
|
15
|
+
*
|
|
16
|
+
* 1. **DispatchTransport** — when running in a per-miniapp JSContext
|
|
17
|
+
* (no DOM, but `__dispatch` is installed on `globalThis` by the
|
|
18
|
+
* MentraJS runtime). This is the production path.
|
|
19
|
+
* 2. **PostMessageTransport** — inside a MentraOS WebView
|
|
20
|
+
* (`window.ReactNativeWebView` defined). This is the existing UI
|
|
21
|
+
* layer path and the only transport miniapp UI bundles need.
|
|
22
|
+
* 3. **MockTransport** — explicit opt-in via `?mentra=mock` or
|
|
23
|
+
* `localStorage.MENTRA_MOCK=1`. Useful for Storybook / unit tests.
|
|
24
|
+
* 4. **LocalSocketWithMockFallback** — external browser, races a
|
|
25
|
+
* `ws://127.0.0.1` LocalSocketTransport open against a 500ms timeout
|
|
26
|
+
* and falls back to MockTransport so the page doesn't hang.
|
|
27
|
+
* 5. **MockTransport** — no `WebSocket` at all (some embedded contexts,
|
|
28
|
+
* jsdom without a polyfill). Keeps the SDK from throwing.
|
|
29
|
+
*
|
|
30
|
+
* DispatchTransport is checked FIRST because the JSContext doesn't have
|
|
31
|
+
* a `window` global, so it'd otherwise fall through to LocalSocket and
|
|
32
|
+
* race a non-existent dev WebSocket — annoying and confusing in logs.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createTransport(options?: CreateTransportOptions): Transport;
|
|
35
|
+
//# sourceMappingURL=auto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/transport/auto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAC,SAAS,EAAsD,MAAM,SAAS,CAAA;AAItF,MAAM,WAAW,sBAAsB;IACrC,uDAAuD;IACvD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,SAAS,CA0B/E"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Auto-detect the right Transport based on environment.
|
|
3
|
+
*/
|
|
4
|
+
import { DispatchTransport } from "./dispatch";
|
|
5
|
+
import { LocalSocketTransport } from "./local-socket";
|
|
6
|
+
import { MockTransport, isMockExplicitlyRequested } from "./mock";
|
|
7
|
+
import { PostMessageTransport } from "./postmessage";
|
|
8
|
+
const LOCAL_SOCKET_OPEN_TIMEOUT_MS = 500;
|
|
9
|
+
/**
|
|
10
|
+
* Return a Transport appropriate for the current environment.
|
|
11
|
+
*
|
|
12
|
+
* Detection order (first match wins):
|
|
13
|
+
*
|
|
14
|
+
* 1. **DispatchTransport** — when running in a per-miniapp JSContext
|
|
15
|
+
* (no DOM, but `__dispatch` is installed on `globalThis` by the
|
|
16
|
+
* MentraJS runtime). This is the production path.
|
|
17
|
+
* 2. **PostMessageTransport** — inside a MentraOS WebView
|
|
18
|
+
* (`window.ReactNativeWebView` defined). This is the existing UI
|
|
19
|
+
* layer path and the only transport miniapp UI bundles need.
|
|
20
|
+
* 3. **MockTransport** — explicit opt-in via `?mentra=mock` or
|
|
21
|
+
* `localStorage.MENTRA_MOCK=1`. Useful for Storybook / unit tests.
|
|
22
|
+
* 4. **LocalSocketWithMockFallback** — external browser, races a
|
|
23
|
+
* `ws://127.0.0.1` LocalSocketTransport open against a 500ms timeout
|
|
24
|
+
* and falls back to MockTransport so the page doesn't hang.
|
|
25
|
+
* 5. **MockTransport** — no `WebSocket` at all (some embedded contexts,
|
|
26
|
+
* jsdom without a polyfill). Keeps the SDK from throwing.
|
|
27
|
+
*
|
|
28
|
+
* DispatchTransport is checked FIRST because the JSContext doesn't have
|
|
29
|
+
* a `window` global, so it'd otherwise fall through to LocalSocket and
|
|
30
|
+
* race a non-existent dev WebSocket — annoying and confusing in logs.
|
|
31
|
+
*/
|
|
32
|
+
export function createTransport(options = {}) {
|
|
33
|
+
if (options.transport)
|
|
34
|
+
return options.transport;
|
|
35
|
+
// 1) JSContext background world — single check for the native bridge.
|
|
36
|
+
if (DispatchTransport.isAvailable()) {
|
|
37
|
+
return new DispatchTransport();
|
|
38
|
+
}
|
|
39
|
+
if (typeof window !== "undefined" && window.ReactNativeWebView) {
|
|
40
|
+
return new PostMessageTransport();
|
|
41
|
+
}
|
|
42
|
+
// Explicit opt-in to mock — useful for stories / framework-level testing.
|
|
43
|
+
if (isMockExplicitlyRequested()) {
|
|
44
|
+
return new MockTransport();
|
|
45
|
+
}
|
|
46
|
+
if (typeof WebSocket !== "undefined") {
|
|
47
|
+
const localSocketOptions = {};
|
|
48
|
+
if (options.localSocketUrl)
|
|
49
|
+
localSocketOptions.url = options.localSocketUrl;
|
|
50
|
+
return new LocalSocketWithMockFallback(localSocketOptions);
|
|
51
|
+
}
|
|
52
|
+
// No WebSocket at all (some embedded contexts, jsdom without a polyfill).
|
|
53
|
+
// MockTransport keeps the SDK from throwing during construction.
|
|
54
|
+
return new MockTransport();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Internal wrapper transport: tries LocalSocketTransport first; if open() hasn't
|
|
58
|
+
* resolved within LOCAL_SOCKET_OPEN_TIMEOUT_MS, swaps in MockTransport so a
|
|
59
|
+
* miniapp opened in a regular browser tab gets a synthetic CONNECT_ACK instead
|
|
60
|
+
* of a 10-second hang while the SDK's CONNECT_ACK timeout expires.
|
|
61
|
+
*
|
|
62
|
+
* Once a delegate is selected, all subsequent calls forward to it.
|
|
63
|
+
*/
|
|
64
|
+
class LocalSocketWithMockFallback {
|
|
65
|
+
constructor(options) {
|
|
66
|
+
this.options = options;
|
|
67
|
+
this.active = null;
|
|
68
|
+
this.messageHandler = null;
|
|
69
|
+
this.disconnectHandler = null;
|
|
70
|
+
}
|
|
71
|
+
async open() {
|
|
72
|
+
const local = new LocalSocketTransport(this.options);
|
|
73
|
+
let timedOut = false;
|
|
74
|
+
const timeout = new Promise((_, reject) => {
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
timedOut = true;
|
|
77
|
+
reject(new Error("LocalSocketTransport open timed out"));
|
|
78
|
+
}, LOCAL_SOCKET_OPEN_TIMEOUT_MS);
|
|
79
|
+
});
|
|
80
|
+
try {
|
|
81
|
+
await Promise.race([local.open(), timeout]);
|
|
82
|
+
// LocalSocket succeeded.
|
|
83
|
+
this.active = local;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
try {
|
|
87
|
+
local.close();
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
/* ignore */
|
|
91
|
+
}
|
|
92
|
+
const mock = new MockTransport();
|
|
93
|
+
await mock.open();
|
|
94
|
+
this.active = mock;
|
|
95
|
+
// eslint-disable-next-line no-console
|
|
96
|
+
console.log(timedOut
|
|
97
|
+
? "[mentra-miniapp] No phone WebSocket reachable; using MockTransport so the page can render."
|
|
98
|
+
: "[mentra-miniapp] LocalSocketTransport failed; using MockTransport.");
|
|
99
|
+
}
|
|
100
|
+
if (this.messageHandler)
|
|
101
|
+
this.active.onMessage(this.messageHandler);
|
|
102
|
+
if (this.disconnectHandler)
|
|
103
|
+
this.active.onDisconnect(this.disconnectHandler);
|
|
104
|
+
}
|
|
105
|
+
send(raw) {
|
|
106
|
+
if (!this.active)
|
|
107
|
+
throw new Error("LocalSocketWithMockFallback: send() before open()");
|
|
108
|
+
this.active.send(raw);
|
|
109
|
+
}
|
|
110
|
+
onMessage(handler) {
|
|
111
|
+
this.messageHandler = handler;
|
|
112
|
+
this.active?.onMessage(handler);
|
|
113
|
+
}
|
|
114
|
+
onDisconnect(handler) {
|
|
115
|
+
this.disconnectHandler = handler;
|
|
116
|
+
this.active?.onDisconnect(handler);
|
|
117
|
+
}
|
|
118
|
+
close() {
|
|
119
|
+
this.active?.close();
|
|
120
|
+
}
|
|
121
|
+
isOpen() {
|
|
122
|
+
return this.active?.isOpen() === true;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=auto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/transport/auto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview DispatchTransport — Transport implementation that rides
|
|
3
|
+
* the native `__dispatch(iface, method, argsJson)` bridge exposed by the
|
|
4
|
+
* MentraJS runtime (per-miniapp JSContext on iOS-JSC, Zipline/QuickJS
|
|
5
|
+
* context on Android).
|
|
6
|
+
*
|
|
7
|
+
* The existing `MiniappSession` (session.ts) is transport-agnostic — it
|
|
8
|
+
* serialises envelopes into JSON strings and hands them to Transport.send().
|
|
9
|
+
* The native side has historically been on the other end of a
|
|
10
|
+
* `window.ReactNativeWebView.postMessage(...)` shim (PostMessageTransport)
|
|
11
|
+
* inside a WebView. In the new architecture, background JS runs in a
|
|
12
|
+
* JSContext that has no WebView — so the wire is `__dispatch` instead.
|
|
13
|
+
*
|
|
14
|
+
* What this transport does:
|
|
15
|
+
* - send(raw) — calls __dispatch("__bridge", "send", [raw]). The host
|
|
16
|
+
* side `MentraJSRouter` consumes the raw string verbatim, same shape
|
|
17
|
+
* as PostMessageTransport's wire payload.
|
|
18
|
+
* - The polyfill bundle (`startup.ts`) wires __deliver({kind:'bridge',raw})
|
|
19
|
+
* back into this transport's message handler so the host can push
|
|
20
|
+
* unsolicited events (mic_pcm, transcription, button events, etc.)
|
|
21
|
+
* into the SDK.
|
|
22
|
+
* - open()/close() are no-ops — the JSContext is alive as long as the
|
|
23
|
+
* host has the runtime spawned; nothing to handshake here.
|
|
24
|
+
*
|
|
25
|
+
* On Android Zipline `__dispatch` is suspending under the hood; on
|
|
26
|
+
* iOS-JSC it's a synchronous Swift block. Both shapes are JSON-string in,
|
|
27
|
+
* JSON-string out, so the JS-side surface is identical.
|
|
28
|
+
*/
|
|
29
|
+
import { Transport, TransportDisconnectHandler, TransportMessageHandler } from "./types";
|
|
30
|
+
export declare class DispatchTransport implements Transport {
|
|
31
|
+
private messageHandler;
|
|
32
|
+
private disconnectHandler;
|
|
33
|
+
private open_;
|
|
34
|
+
/** True iff `__dispatch` is bound on the current globalThis. */
|
|
35
|
+
static isAvailable(): boolean;
|
|
36
|
+
open(): Promise<void>;
|
|
37
|
+
send(raw: string): void;
|
|
38
|
+
onMessage(handler: TransportMessageHandler): void;
|
|
39
|
+
onDisconnect(handler: TransportDisconnectHandler): void;
|
|
40
|
+
close(): void;
|
|
41
|
+
isOpen(): boolean;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/transport/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAC,SAAS,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAYtF,qBAAa,iBAAkB,YAAW,SAAS;IACjD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,KAAK,CAAQ;IAErB,gEAAgE;IAChE,MAAM,CAAC,WAAW,IAAI,OAAO;IAIvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqBvB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAIjD,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAIvD,KAAK,IAAI,IAAI;IAQb,MAAM,IAAI,OAAO;CAGlB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview DispatchTransport — Transport implementation that rides
|
|
3
|
+
* the native `__dispatch(iface, method, argsJson)` bridge exposed by the
|
|
4
|
+
* MentraJS runtime (per-miniapp JSContext on iOS-JSC, Zipline/QuickJS
|
|
5
|
+
* context on Android).
|
|
6
|
+
*
|
|
7
|
+
* The existing `MiniappSession` (session.ts) is transport-agnostic — it
|
|
8
|
+
* serialises envelopes into JSON strings and hands them to Transport.send().
|
|
9
|
+
* The native side has historically been on the other end of a
|
|
10
|
+
* `window.ReactNativeWebView.postMessage(...)` shim (PostMessageTransport)
|
|
11
|
+
* inside a WebView. In the new architecture, background JS runs in a
|
|
12
|
+
* JSContext that has no WebView — so the wire is `__dispatch` instead.
|
|
13
|
+
*
|
|
14
|
+
* What this transport does:
|
|
15
|
+
* - send(raw) — calls __dispatch("__bridge", "send", [raw]). The host
|
|
16
|
+
* side `MentraJSRouter` consumes the raw string verbatim, same shape
|
|
17
|
+
* as PostMessageTransport's wire payload.
|
|
18
|
+
* - The polyfill bundle (`startup.ts`) wires __deliver({kind:'bridge',raw})
|
|
19
|
+
* back into this transport's message handler so the host can push
|
|
20
|
+
* unsolicited events (mic_pcm, transcription, button events, etc.)
|
|
21
|
+
* into the SDK.
|
|
22
|
+
* - open()/close() are no-ops — the JSContext is alive as long as the
|
|
23
|
+
* host has the runtime spawned; nothing to handshake here.
|
|
24
|
+
*
|
|
25
|
+
* On Android Zipline `__dispatch` is suspending under the hood; on
|
|
26
|
+
* iOS-JSC it's a synchronous Swift block. Both shapes are JSON-string in,
|
|
27
|
+
* JSON-string out, so the JS-side surface is identical.
|
|
28
|
+
*/
|
|
29
|
+
export class DispatchTransport {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.messageHandler = null;
|
|
32
|
+
this.disconnectHandler = null;
|
|
33
|
+
this.open_ = false;
|
|
34
|
+
}
|
|
35
|
+
/** True iff `__dispatch` is bound on the current globalThis. */
|
|
36
|
+
static isAvailable() {
|
|
37
|
+
return typeof globalThis.__dispatch === "function";
|
|
38
|
+
}
|
|
39
|
+
async open() {
|
|
40
|
+
if (!DispatchTransport.isAvailable()) {
|
|
41
|
+
throw new Error("DispatchTransport: __dispatch is not installed on globalThis");
|
|
42
|
+
}
|
|
43
|
+
// Wire up the inbound delivery hook so the polyfill's __deliver can
|
|
44
|
+
// route bridge frames here. Installed lazily so multiple transports
|
|
45
|
+
// can share the same global if a test spins up two.
|
|
46
|
+
const g = globalThis;
|
|
47
|
+
g.__mentraDeliverBridgeRaw = (raw) => {
|
|
48
|
+
if (this.messageHandler)
|
|
49
|
+
this.messageHandler(raw);
|
|
50
|
+
};
|
|
51
|
+
this.open_ = true;
|
|
52
|
+
}
|
|
53
|
+
send(raw) {
|
|
54
|
+
if (!this.open_) {
|
|
55
|
+
throw new Error("DispatchTransport: send() before open()");
|
|
56
|
+
}
|
|
57
|
+
const g = globalThis;
|
|
58
|
+
if (typeof g.__dispatch !== "function") {
|
|
59
|
+
// Native bridge gone — surface as a transport-level disconnect so
|
|
60
|
+
// upstream callers don't hang on pending requests.
|
|
61
|
+
this.open_ = false;
|
|
62
|
+
this.disconnectHandler?.("DispatchTransport: __dispatch disappeared");
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Wire format: stringify the args array as a single-element array
|
|
66
|
+
// containing the raw envelope. The router unwraps it.
|
|
67
|
+
try {
|
|
68
|
+
g.__dispatch("__bridge", "send", JSON.stringify([raw]));
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
this.disconnectHandler?.(`DispatchTransport: __dispatch threw: ${String(e)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
onMessage(handler) {
|
|
75
|
+
this.messageHandler = handler;
|
|
76
|
+
}
|
|
77
|
+
onDisconnect(handler) {
|
|
78
|
+
this.disconnectHandler = handler;
|
|
79
|
+
}
|
|
80
|
+
close() {
|
|
81
|
+
this.open_ = false;
|
|
82
|
+
const g = globalThis;
|
|
83
|
+
if (g.__mentraDeliverBridgeRaw) {
|
|
84
|
+
delete g.__mentraDeliverBridgeRaw;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
isOpen() {
|
|
88
|
+
return this.open_;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/transport/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH,MAAM,OAAO,iBAAiB;IAA9B;QACU,mBAAc,GAAmC,IAAI,CAAA;QACrD,sBAAiB,GAAsC,IAAI,CAAA;QAC3D,UAAK,GAAG,KAAK,CAAA;IA6DvB,CAAC;IA3DC,gEAAgE;IAChE,MAAM,CAAC,WAAW;QAChB,OAAO,OAAQ,UAA6C,CAAC,UAAU,KAAK,UAAU,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;QACjF,CAAC;QACD,oEAAoE;QACpE,oEAAoE;QACpE,oDAAoD;QACpD,MAAM,CAAC,GAAG,UAA4C,CAAA;QACtD,CAAC,CAAC,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QACnD,CAAC,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAC5D,CAAC;QACD,MAAM,CAAC,GAAG,UAA4C,CAAA;QACtD,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACvC,kEAAkE;YAClE,mDAAmD;YACnD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC,2CAA2C,CAAC,CAAA;YACrE,OAAM;QACR,CAAC;QACD,kEAAkE;QAClE,sDAAsD;QACtD,IAAI,CAAC;YACH,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,iBAAiB,EAAE,CAAC,wCAAwC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAgC;QACxC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAA;IAC/B,CAAC;IAED,YAAY,CAAC,OAAmC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAA;IAClC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,GAAG,UAA4C,CAAA;QACtD,IAAI,CAAC,CAAC,wBAAwB,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC,wBAAwB,CAAA;QACnC,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LocalSocket transport — browser fallback.
|
|
3
|
+
*
|
|
4
|
+
* When the miniapp runs in an external browser (Safari/Chrome, not inside the
|
|
5
|
+
* MentraOS React Native WebView), it connects to a localhost WebSocket that
|
|
6
|
+
* MentraOS exposes via MiniSockets.
|
|
7
|
+
*
|
|
8
|
+
* Default endpoint: ws://127.0.0.1:8765. Override via the `url` option for
|
|
9
|
+
* dev / testing.
|
|
10
|
+
*/
|
|
11
|
+
import { Transport, TransportDisconnectHandler, TransportMessageHandler } from "./types";
|
|
12
|
+
export interface LocalSocketTransportOptions {
|
|
13
|
+
url?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class LocalSocketTransport implements Transport {
|
|
16
|
+
private url;
|
|
17
|
+
private ws;
|
|
18
|
+
private messageHandler;
|
|
19
|
+
private disconnectHandler;
|
|
20
|
+
constructor(options?: LocalSocketTransportOptions);
|
|
21
|
+
open(): Promise<void>;
|
|
22
|
+
send(raw: string): void;
|
|
23
|
+
onMessage(handler: TransportMessageHandler): void;
|
|
24
|
+
onDisconnect(handler: TransportDisconnectHandler): void;
|
|
25
|
+
close(): void;
|
|
26
|
+
isOpen(): boolean;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=local-socket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-socket.d.ts","sourceRoot":"","sources":["../../src/transport/local-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAC,SAAS,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAEtF,MAAM,WAAW,2BAA2B;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAID,qBAAa,oBAAqB,YAAW,SAAS;IACpD,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,iBAAiB,CAA0C;gBAEvD,OAAO,GAAE,2BAAgC;IAI/C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAOvB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAIjD,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAIvD,KAAK,IAAI,IAAI;IAUb,MAAM,IAAI,OAAO;CAGlB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LocalSocket transport — browser fallback.
|
|
3
|
+
*
|
|
4
|
+
* When the miniapp runs in an external browser (Safari/Chrome, not inside the
|
|
5
|
+
* MentraOS React Native WebView), it connects to a localhost WebSocket that
|
|
6
|
+
* MentraOS exposes via MiniSockets.
|
|
7
|
+
*
|
|
8
|
+
* Default endpoint: ws://127.0.0.1:8765. Override via the `url` option for
|
|
9
|
+
* dev / testing.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_URL = "ws://127.0.0.1:8765";
|
|
12
|
+
export class LocalSocketTransport {
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.ws = null;
|
|
15
|
+
this.messageHandler = null;
|
|
16
|
+
this.disconnectHandler = null;
|
|
17
|
+
this.url = options.url ?? DEFAULT_URL;
|
|
18
|
+
}
|
|
19
|
+
async open() {
|
|
20
|
+
if (this.ws && this.ws.readyState === WebSocket.OPEN)
|
|
21
|
+
return;
|
|
22
|
+
if (typeof WebSocket === "undefined") {
|
|
23
|
+
throw new Error("LocalSocketTransport: browser WebSocket global not available");
|
|
24
|
+
}
|
|
25
|
+
await new Promise((resolve, reject) => {
|
|
26
|
+
const ws = new WebSocket(this.url);
|
|
27
|
+
let settled = false;
|
|
28
|
+
const settle = (fn) => {
|
|
29
|
+
if (settled)
|
|
30
|
+
return;
|
|
31
|
+
settled = true;
|
|
32
|
+
fn();
|
|
33
|
+
};
|
|
34
|
+
ws.onopen = () => {
|
|
35
|
+
this.ws = ws;
|
|
36
|
+
settle(() => resolve());
|
|
37
|
+
};
|
|
38
|
+
ws.onerror = (ev) => {
|
|
39
|
+
settle(() => reject(new Error(`LocalSocketTransport: failed to connect to ${this.url}: ${String(ev)}`)));
|
|
40
|
+
};
|
|
41
|
+
ws.onmessage = (ev) => {
|
|
42
|
+
const data = ev.data;
|
|
43
|
+
if (typeof data === "string")
|
|
44
|
+
this.messageHandler?.(data);
|
|
45
|
+
};
|
|
46
|
+
ws.onclose = (ev) => {
|
|
47
|
+
if (this.ws === ws)
|
|
48
|
+
this.ws = null;
|
|
49
|
+
this.disconnectHandler?.(`closed: ${ev.code} ${ev.reason}`);
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
send(raw) {
|
|
54
|
+
if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
|
|
55
|
+
throw new Error("LocalSocketTransport: not connected");
|
|
56
|
+
}
|
|
57
|
+
this.ws.send(raw);
|
|
58
|
+
}
|
|
59
|
+
onMessage(handler) {
|
|
60
|
+
this.messageHandler = handler;
|
|
61
|
+
}
|
|
62
|
+
onDisconnect(handler) {
|
|
63
|
+
this.disconnectHandler = handler;
|
|
64
|
+
}
|
|
65
|
+
close() {
|
|
66
|
+
if (!this.ws)
|
|
67
|
+
return;
|
|
68
|
+
try {
|
|
69
|
+
this.ws.close();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// ignore
|
|
73
|
+
}
|
|
74
|
+
this.ws = null;
|
|
75
|
+
}
|
|
76
|
+
isOpen() {
|
|
77
|
+
return !!this.ws && this.ws.readyState === WebSocket.OPEN;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=local-socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-socket.js","sourceRoot":"","sources":["../../src/transport/local-socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview MockTransport — browser-tab fallback so the SDK doesn't hang.
|
|
3
|
+
*
|
|
4
|
+
* Activates when:
|
|
5
|
+
* - `window.ReactNativeWebView` is undefined (not in MentraOS WebView), AND
|
|
6
|
+
* - The first LocalSocketTransport connection attempt fails fast, OR
|
|
7
|
+
* - The author opts in via `?mentra=mock` query param / `localStorage.MENTRA_MOCK = "1"`.
|
|
8
|
+
*
|
|
9
|
+
* Behaviors:
|
|
10
|
+
* - On `open()`: synthesize a CONNECT_ACK envelope so `session.connect()` resolves.
|
|
11
|
+
* - On `send(envelope)`: parse, log to console with `[mock-transport]` prefix,
|
|
12
|
+
* auto-reply with synthetic results for any request that needs one.
|
|
13
|
+
* - Does NOT emit any glasses events. Subscribing succeeds silently.
|
|
14
|
+
*
|
|
15
|
+
* This is the Stage-1 stopgap from `agents/miniapp-quick-fixes-spec.md` #6.
|
|
16
|
+
* The full simulator (event injection, glasses-display preview, hardware bridge)
|
|
17
|
+
* is Stage 2 — see `agents/miniapp-browser-testing-simulator-spec.md`.
|
|
18
|
+
*/
|
|
19
|
+
import type { Transport, TransportDisconnectHandler, TransportMessageHandler } from "./types";
|
|
20
|
+
/**
|
|
21
|
+
* Returns true if the current environment requested the mock transport
|
|
22
|
+
* explicitly. Checks `?mentra=mock` query param and `localStorage.MENTRA_MOCK`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isMockExplicitlyRequested(): boolean;
|
|
25
|
+
export interface MockTransportOptions {
|
|
26
|
+
/** Override the synthetic userId. Default "mock-user". */
|
|
27
|
+
userId?: string;
|
|
28
|
+
/** Override the synthetic miniapp auth token. Default "mock-miniapp-token". */
|
|
29
|
+
authToken?: string;
|
|
30
|
+
/** Override the synthetic packageName when window.MentraOS isn't set. */
|
|
31
|
+
packageName?: string;
|
|
32
|
+
/** Suppress the [mock-transport] console logs. Default false. */
|
|
33
|
+
silent?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare class MockTransport implements Transport {
|
|
36
|
+
private messageHandler;
|
|
37
|
+
private disconnectHandler;
|
|
38
|
+
private open_;
|
|
39
|
+
private readonly userId;
|
|
40
|
+
private readonly authToken;
|
|
41
|
+
private readonly packageName;
|
|
42
|
+
private readonly silent;
|
|
43
|
+
constructor(options?: MockTransportOptions);
|
|
44
|
+
open(): Promise<void>;
|
|
45
|
+
send(raw: string): void;
|
|
46
|
+
onMessage(handler: TransportMessageHandler): void;
|
|
47
|
+
onDisconnect(handler: TransportDisconnectHandler): void;
|
|
48
|
+
close(): void;
|
|
49
|
+
isOpen(): boolean;
|
|
50
|
+
private deliverConnectAck;
|
|
51
|
+
private deliverSyntheticResult;
|
|
52
|
+
private log;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../src/transport/mock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAC,SAAS,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,SAAS,CAAA;AAI3F;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAkBnD;AAED,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,aAAc,YAAW,SAAS;IAC7C,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,GAAE,oBAAyB;IAOxC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAuCvB,SAAS,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAIjD,YAAY,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAIvD,KAAK,IAAI,IAAI;IAMb,MAAM,IAAI,OAAO;IAMjB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,GAAG;CAKZ"}
|