@tapflowio/relay 0.29.0 → 0.31.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/dist/RelayServer.d.ts +6 -0
- package/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +48 -3
- package/dist/RelayServer.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +14 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +98 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/launchDefaults.d.ts +25 -0
- package/dist/lib/launchDefaults.d.ts.map +1 -0
- package/dist/lib/launchDefaults.js +41 -0
- package/dist/lib/launchDefaults.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/package.json +4 -4
- package/public/assets/{AISessionWatch-BSBkpTom.js → AISessionWatch-DMfOAt_U.js} +7 -7
- package/public/assets/AISessionWatch-DMfOAt_U.js.br +0 -0
- package/public/assets/AISessionWatch-DMfOAt_U.js.gz +0 -0
- package/public/assets/AndroidDeviceScreen-1RaPu10r.js +35 -0
- package/public/assets/AndroidDeviceScreen-1RaPu10r.js.br +0 -0
- package/public/assets/AndroidDeviceScreen-1RaPu10r.js.gz +0 -0
- package/public/assets/{AppCenter-DD_6LQx-.js → AppCenter-BWgstOJH.js} +6 -6
- package/public/assets/AppCenter-BWgstOJH.js.br +0 -0
- package/public/assets/AppCenter-BWgstOJH.js.gz +0 -0
- package/public/assets/{Default-CQ3Ae2mK.js → Default-Obywi6hR.js} +1 -1
- package/public/assets/Default-Obywi6hR.js.br +0 -0
- package/public/assets/Default-Obywi6hR.js.gz +0 -0
- package/public/assets/{Invite-D1uNMm0-.js → Invite-BVRKLYJu.js} +1 -1
- package/public/assets/Invite-BVRKLYJu.js.br +0 -0
- package/public/assets/Invite-BVRKLYJu.js.gz +0 -0
- package/public/assets/{MacResources-D2UeRbKL.js → MacResources-B6_Es8ye.js} +1 -1
- package/public/assets/MacResources-B6_Es8ye.js.br +0 -0
- package/public/assets/MacResources-B6_Es8ye.js.gz +0 -0
- package/public/assets/QASession-BuQdx-pq.js +81 -0
- package/public/assets/QASession-BuQdx-pq.js.br +0 -0
- package/public/assets/QASession-BuQdx-pq.js.gz +0 -0
- package/public/assets/{ResetPassword-B-4Uyfwr.js → ResetPassword-DU97TnMC.js} +1 -1
- package/public/assets/ResetPassword-DU97TnMC.js.br +0 -0
- package/public/assets/ResetPassword-DU97TnMC.js.gz +0 -0
- package/public/assets/{RunDetail-C50RjsuM.js → RunDetail-BspFUFg2.js} +4 -4
- package/public/assets/RunDetail-BspFUFg2.js.br +0 -0
- package/public/assets/RunDetail-BspFUFg2.js.gz +0 -0
- package/public/assets/{Runs-A7RcDLgO.js → Runs-BdCnN_dH.js} +2 -2
- package/public/assets/Runs-BdCnN_dH.js.br +0 -0
- package/public/assets/Runs-BdCnN_dH.js.gz +0 -0
- package/public/assets/{Setup-DK6TZbwh.js → Setup-D4DsciMG.js} +1 -1
- package/public/assets/Setup-D4DsciMG.js.br +0 -0
- package/public/assets/Setup-D4DsciMG.js.gz +0 -0
- package/public/assets/{Team-VoGput2p.js → Team-B2Txvi0a.js} +2 -2
- package/public/assets/Team-B2Txvi0a.js.br +0 -0
- package/public/assets/Team-B2Txvi0a.js.gz +0 -0
- package/public/assets/{Tokens-qkcJgunR.js → Tokens-D-ekP8kU.js} +1 -1
- package/public/assets/Tokens-D-ekP8kU.js.br +0 -0
- package/public/assets/Tokens-D-ekP8kU.js.gz +0 -0
- package/public/assets/WatchedDevice-D-SfDxp8.js +1 -0
- package/public/assets/WatchedDevice-D-SfDxp8.js.br +0 -0
- package/public/assets/WatchedDevice-D-SfDxp8.js.gz +0 -0
- package/public/assets/{aiSession-U7UqgdSb.js → aiSession-p7Uu2swu.js} +6 -6
- package/public/assets/aiSession-p7Uu2swu.js.br +0 -0
- package/public/assets/aiSession-p7Uu2swu.js.gz +0 -0
- package/public/assets/{alert-dialog-C0mRms8g.js → alert-dialog-DPNbpxqG.js} +1 -1
- package/public/assets/alert-dialog-DPNbpxqG.js.br +0 -0
- package/public/assets/alert-dialog-DPNbpxqG.js.gz +0 -0
- package/public/assets/{badge-BjEnOmb0.js → badge-Bjwwchrt.js} +1 -1
- package/public/assets/badge-Bjwwchrt.js.br +0 -0
- package/public/assets/badge-Bjwwchrt.js.gz +0 -0
- package/public/assets/{dialog-Cugbp1C4.js → dialog-CrzZQwxn.js} +1 -1
- package/public/assets/dialog-CrzZQwxn.js.br +0 -0
- package/public/assets/dialog-CrzZQwxn.js.gz +0 -0
- package/public/assets/{field-hint-qmBa0qqN.js → field-hint-CIJmSABE.js} +1 -1
- package/public/assets/field-hint-CIJmSABE.js.br +2 -0
- package/public/assets/field-hint-CIJmSABE.js.gz +0 -0
- package/public/assets/index-CiJwpDAf.js +248 -0
- package/public/assets/index-CiJwpDAf.js.br +0 -0
- package/public/assets/index-CiJwpDAf.js.gz +0 -0
- package/public/assets/index-DKKkUgNI.css +1 -0
- package/public/assets/index-DKKkUgNI.css.br +0 -0
- package/public/assets/index-DKKkUgNI.css.gz +0 -0
- package/public/assets/{list-view-CyM0QUaH.js → list-view-DpnCsTM-.js} +1 -1
- package/public/assets/list-view-DpnCsTM-.js.br +0 -0
- package/public/assets/list-view-DpnCsTM-.js.gz +0 -0
- package/public/assets/{pencil-DUZRZB3S.js → pencil-CE5LnE8i.js} +2 -2
- package/public/assets/pencil-CE5LnE8i.js.br +0 -0
- package/public/assets/pencil-CE5LnE8i.js.gz +0 -0
- package/public/assets/{play-Z1L2Eb91.js → play-BR_CdQzZ.js} +2 -2
- package/public/assets/play-BR_CdQzZ.js.br +0 -0
- package/public/assets/play-BR_CdQzZ.js.gz +0 -0
- package/public/assets/{search-input-B0s9mzRt.js → search-input-2MuvmbBR.js} +2 -2
- package/public/assets/search-input-2MuvmbBR.js.br +0 -0
- package/public/assets/search-input-2MuvmbBR.js.gz +0 -0
- package/public/assets/{select-CHbE6M4S.js → select-7EkQtxVy.js} +3 -3
- package/public/assets/select-7EkQtxVy.js.br +0 -0
- package/public/assets/select-7EkQtxVy.js.gz +0 -0
- package/public/assets/{slider-tyb3JvL2.js → slider-ifEFgQFt.js} +1 -1
- package/public/assets/slider-ifEFgQFt.js.br +0 -0
- package/public/assets/slider-ifEFgQFt.js.gz +0 -0
- package/public/assets/{tabs-Bf7ou-eS.js → tabs-SLpwFQLx.js} +1 -1
- package/public/assets/tabs-SLpwFQLx.js.br +0 -0
- package/public/assets/tabs-SLpwFQLx.js.gz +0 -0
- package/public/assets/{tech-label-KAwM5qZ_.js → tech-label-DpVGqU2Y.js} +1 -1
- package/public/assets/tech-label-DpVGqU2Y.js.br +0 -0
- package/public/assets/tech-label-DpVGqU2Y.js.gz +0 -0
- package/public/assets/{trash-HEJmY7DQ.js → trash-DFsQhdZ1.js} +3 -3
- package/public/assets/trash-DFsQhdZ1.js.br +0 -0
- package/public/assets/trash-DFsQhdZ1.js.gz +0 -0
- package/public/assets/{video-DdHH0Q0l.js → video-D1ajuM3p.js} +2 -2
- package/public/assets/video-D1ajuM3p.js.br +0 -0
- package/public/assets/video-D1ajuM3p.js.gz +0 -0
- package/public/index.html +2 -2
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/public/assets/AISessionWatch-BSBkpTom.js.br +0 -0
- package/public/assets/AISessionWatch-BSBkpTom.js.gz +0 -0
- package/public/assets/AndroidDeviceScreen-C55msKfh.js +0 -35
- package/public/assets/AndroidDeviceScreen-C55msKfh.js.br +0 -0
- package/public/assets/AndroidDeviceScreen-C55msKfh.js.gz +0 -0
- package/public/assets/AppCenter-DD_6LQx-.js.br +0 -0
- package/public/assets/AppCenter-DD_6LQx-.js.gz +0 -0
- package/public/assets/Default-CQ3Ae2mK.js.br +0 -0
- package/public/assets/Default-CQ3Ae2mK.js.gz +0 -0
- package/public/assets/Invite-D1uNMm0-.js.br +0 -0
- package/public/assets/Invite-D1uNMm0-.js.gz +0 -0
- package/public/assets/MacResources-D2UeRbKL.js.br +0 -0
- package/public/assets/MacResources-D2UeRbKL.js.gz +0 -0
- package/public/assets/QASession-d0eOjXXo.js +0 -81
- package/public/assets/QASession-d0eOjXXo.js.br +0 -0
- package/public/assets/QASession-d0eOjXXo.js.gz +0 -0
- package/public/assets/ResetPassword-B-4Uyfwr.js.br +0 -0
- package/public/assets/ResetPassword-B-4Uyfwr.js.gz +0 -0
- package/public/assets/RunDetail-C50RjsuM.js.br +0 -0
- package/public/assets/RunDetail-C50RjsuM.js.gz +0 -0
- package/public/assets/Runs-A7RcDLgO.js.br +0 -0
- package/public/assets/Runs-A7RcDLgO.js.gz +0 -0
- package/public/assets/Setup-DK6TZbwh.js.br +0 -0
- package/public/assets/Setup-DK6TZbwh.js.gz +0 -0
- package/public/assets/Team-VoGput2p.js.br +0 -0
- package/public/assets/Team-VoGput2p.js.gz +0 -0
- package/public/assets/Tokens-qkcJgunR.js.br +0 -0
- package/public/assets/Tokens-qkcJgunR.js.gz +0 -0
- package/public/assets/WatchedDevice-CpaKHa1x.js +0 -1
- package/public/assets/WatchedDevice-CpaKHa1x.js.br +0 -0
- package/public/assets/WatchedDevice-CpaKHa1x.js.gz +0 -0
- package/public/assets/aiSession-U7UqgdSb.js.br +0 -0
- package/public/assets/aiSession-U7UqgdSb.js.gz +0 -0
- package/public/assets/alert-dialog-C0mRms8g.js.br +0 -0
- package/public/assets/alert-dialog-C0mRms8g.js.gz +0 -0
- package/public/assets/badge-BjEnOmb0.js.br +0 -0
- package/public/assets/badge-BjEnOmb0.js.gz +0 -0
- package/public/assets/dialog-Cugbp1C4.js.br +0 -0
- package/public/assets/dialog-Cugbp1C4.js.gz +0 -0
- package/public/assets/field-hint-qmBa0qqN.js.br +0 -0
- package/public/assets/field-hint-qmBa0qqN.js.gz +0 -0
- package/public/assets/index-C_3Q51YJ.js +0 -248
- package/public/assets/index-C_3Q51YJ.js.br +0 -0
- package/public/assets/index-C_3Q51YJ.js.gz +0 -0
- package/public/assets/index-h2hiZ2OM.css +0 -1
- package/public/assets/index-h2hiZ2OM.css.br +0 -0
- package/public/assets/index-h2hiZ2OM.css.gz +0 -0
- package/public/assets/list-view-CyM0QUaH.js.br +0 -0
- package/public/assets/list-view-CyM0QUaH.js.gz +0 -0
- package/public/assets/pencil-DUZRZB3S.js.br +0 -0
- package/public/assets/pencil-DUZRZB3S.js.gz +0 -0
- package/public/assets/play-Z1L2Eb91.js.br +0 -0
- package/public/assets/play-Z1L2Eb91.js.gz +0 -0
- package/public/assets/search-input-B0s9mzRt.js.br +0 -0
- package/public/assets/search-input-B0s9mzRt.js.gz +0 -0
- package/public/assets/select-CHbE6M4S.js.br +0 -0
- package/public/assets/select-CHbE6M4S.js.gz +0 -0
- package/public/assets/slider-tyb3JvL2.js.br +0 -0
- package/public/assets/slider-tyb3JvL2.js.gz +0 -0
- package/public/assets/tabs-Bf7ou-eS.js.br +0 -0
- package/public/assets/tabs-Bf7ou-eS.js.gz +0 -0
- package/public/assets/tech-label-KAwM5qZ_.js.br +0 -0
- package/public/assets/tech-label-KAwM5qZ_.js.gz +0 -0
- package/public/assets/trash-HEJmY7DQ.js.br +0 -0
- package/public/assets/trash-HEJmY7DQ.js.gz +0 -0
- package/public/assets/video-DdHH0Q0l.js.br +0 -0
- package/public/assets/video-DdHH0Q0l.js.gz +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { RelayServer } from './RelayServer.js';
|
|
2
2
|
export { SessionManager } from './SessionManager.js';
|
|
3
3
|
export { initDb, getDb, closeDb } from './db.js';
|
|
4
|
-
export { config, loadedEnvPath, install, configFound, dataDirSource, assertInstallDir, getJwtSecret } from './lib/config.js';
|
|
4
|
+
export { config, loadedEnvPath, install, configFound, dataDirSource, assertInstallDir, getJwtSecret, loadLaunchDefaults } from './lib/config.js';
|
|
5
5
|
export { resolveInstallDir, resolveDefaultDataDir, holdsInstallData, CONFIG_FILE, OWN_DATA_DIR, UNIFIED_DATA_DIR, LEGACY_DATA_DIR } from './lib/dataDir.js';
|
|
6
6
|
export type { InstallDir } from './lib/dataDir.js';
|
|
7
|
-
export type { TapflowConfig } from './lib/config.js';
|
|
7
|
+
export type { TapflowConfig, LaunchDefaults } from './lib/config.js';
|
|
8
8
|
export { buildCorsOrigins, proxyWithoutPublicUrlWarning, resolveTunnelPort, DEFAULT_TUNNEL_PORT } from './lib/proxyConfig.js';
|
|
9
9
|
export { isInitialized } from './lib/adminAccount.js';
|
|
10
10
|
export type { TunnelRuntime } from './lib/publicUrl.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAChJ,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAC3J,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7H,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACnF,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACxI,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { RelayServer } from './RelayServer.js';
|
|
2
2
|
export { SessionManager } from './SessionManager.js';
|
|
3
3
|
export { initDb, getDb, closeDb } from './db.js';
|
|
4
|
-
export { config, loadedEnvPath, install, configFound, dataDirSource, assertInstallDir, getJwtSecret } from './lib/config.js';
|
|
4
|
+
export { config, loadedEnvPath, install, configFound, dataDirSource, assertInstallDir, getJwtSecret, loadLaunchDefaults } from './lib/config.js';
|
|
5
5
|
export { resolveInstallDir, resolveDefaultDataDir, holdsInstallData, CONFIG_FILE, OWN_DATA_DIR, UNIFIED_DATA_DIR, LEGACY_DATA_DIR } from './lib/dataDir.js';
|
|
6
6
|
export { buildCorsOrigins, proxyWithoutPublicUrlWarning, resolveTunnelPort, DEFAULT_TUNNEL_PORT } from './lib/proxyConfig.js';
|
|
7
7
|
export { isInitialized } from './lib/adminAccount.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAChJ,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG3J,OAAO,EAAE,gBAAgB,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC7H,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAIrD,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AACxI,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { type InstallDir } from './dataDir.js';
|
|
3
|
+
import { type LaunchOptions } from '@tapflowio/protocol/launch';
|
|
3
4
|
declare const configSchema: z.ZodObject<{
|
|
4
5
|
local: z.ZodObject<{
|
|
5
6
|
port: z.ZodNumber;
|
|
@@ -54,6 +55,19 @@ declare const configSchema: z.ZodObject<{
|
|
|
54
55
|
}, z.core.$strip>;
|
|
55
56
|
export type TapflowConfig = z.infer<typeof configSchema>;
|
|
56
57
|
export declare function resolveWebhooksConfig(raw: unknown, env: NodeJS.ProcessEnv): TapflowConfig['webhooks'];
|
|
58
|
+
/** Per-app launch defaults (#1047), keyed by bundle id. A Map, because the key is whatever a build was uploaded with. */
|
|
59
|
+
export type LaunchDefaults = ReadonlyMap<string, LaunchOptions>;
|
|
60
|
+
/**
|
|
61
|
+
* The `launch` section of tapflow.config.json, with `envFrom` read from the environment (the shell, then
|
|
62
|
+
* `<dataDir>/.env`). Returns every problem rather than the first, and never a value: the messages reach a log.
|
|
63
|
+
* `reserved` is the webhook `secretEnv` names, which are the relay's secrets too.
|
|
64
|
+
*/
|
|
65
|
+
export declare function parseLaunchDefaults(raw: unknown, env: NodeJS.ProcessEnv, reserved?: ReadonlySet<string>): {
|
|
66
|
+
defaults: LaunchDefaults;
|
|
67
|
+
problems: string[];
|
|
68
|
+
};
|
|
69
|
+
/** The launch defaults for a relay about to start, or exit with every problem, like a config error. */
|
|
70
|
+
export declare function loadLaunchDefaults(): LaunchDefaults;
|
|
57
71
|
export declare let loadedEnvPath: string | null;
|
|
58
72
|
export declare const install: InstallDir;
|
|
59
73
|
export declare let configFound: boolean;
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAA+E,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB,OAAO,EAA+E,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAE3H,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AA+CrF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoChB,CAAA;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAA;AAuDxD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAyBrG;AAED,yHAAyH;AACzH,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAW/D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAgCrK;AAQD,uGAAuG;AACvG,wBAAgB,kBAAkB,IAAI,cAAc,CAOnD;AAGD,eAAO,IAAI,aAAa,EAAE,MAAM,GAAG,IAAW,CAAA;AAI9C,eAAO,MAAM,OAAO,EAAE,UAAgC,CAAA;AAGtD,eAAO,IAAI,WAAW,SAAQ,CAAA;AAE9B,eAAO,IAAI,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAqB,CAAA;AAE/E;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAgJD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkBnE;AAYD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAS,CAAA"}
|
package/dist/lib/config.js
CHANGED
|
@@ -8,6 +8,7 @@ import { dnsProviders } from './cert/dnsRegistry.js';
|
|
|
8
8
|
import { loadDataDirEnv } from './loadEnvFile.js';
|
|
9
9
|
import { resolveInstallDir, resolveDefaultDataDir, LEGACY_DATA_DIR, UNIFIED_DATA_DIR } from './dataDir.js';
|
|
10
10
|
import { validateWebhookUrl } from './webhookUrl.js';
|
|
11
|
+
import { launchOptionsProblem } from '@tapflowio/protocol/launch';
|
|
11
12
|
const logger = createLogger('relay:config');
|
|
12
13
|
const tunnelSshSchema = z.object({
|
|
13
14
|
host: z.string().min(1),
|
|
@@ -153,6 +154,100 @@ export function resolveWebhooksConfig(raw, env) {
|
|
|
153
154
|
}
|
|
154
155
|
return out;
|
|
155
156
|
}
|
|
157
|
+
// Names the relay reads its own secrets from. A launch default reaches any app uploaded under its bundle id, so
|
|
158
|
+
// pointing one at these would hand the relay's credentials to that app.
|
|
159
|
+
const RELAY_SECRET_ENV = /^(JWT_SECRET$|SMTP_|TAPFLOW_)/;
|
|
160
|
+
const BUNDLE_ID = /^[A-Za-z0-9_.-]+$/;
|
|
161
|
+
function isRecord(v) {
|
|
162
|
+
return typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The `launch` section of tapflow.config.json, with `envFrom` read from the environment (the shell, then
|
|
166
|
+
* `<dataDir>/.env`). Returns every problem rather than the first, and never a value: the messages reach a log.
|
|
167
|
+
* `reserved` is the webhook `secretEnv` names, which are the relay's secrets too.
|
|
168
|
+
*/
|
|
169
|
+
export function parseLaunchDefaults(raw, env, reserved = new Set()) {
|
|
170
|
+
const defaults = new Map();
|
|
171
|
+
const problems = [];
|
|
172
|
+
if (raw === undefined || raw === null)
|
|
173
|
+
return { defaults, problems };
|
|
174
|
+
if (!isRecord(raw))
|
|
175
|
+
return { defaults, problems: ['launch: a map of bundle id to { arguments, env, envFrom }'] };
|
|
176
|
+
for (const [bundleId, entry] of Object.entries(raw)) {
|
|
177
|
+
const at = `launch.${bundleId}`;
|
|
178
|
+
if (!BUNDLE_ID.test(bundleId)) {
|
|
179
|
+
problems.push(`${at}: not a bundle id or package name`);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (!isRecord(entry)) {
|
|
183
|
+
problems.push(`${at}: a map with arguments, env and envFrom`);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const unknown = Object.keys(entry).filter((k) => !['arguments', 'env', 'envFrom'].includes(k));
|
|
187
|
+
if (unknown.length > 0) {
|
|
188
|
+
problems.push(`${at}: unknown ${unknown.join(', ')} (expected arguments, env, envFrom)`);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const { envFrom } = entry;
|
|
192
|
+
if (envFrom !== undefined && !isRecord(envFrom)) {
|
|
193
|
+
problems.push(`${at}.envFrom: a map of app variable to the name of a variable in .env`);
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
// No prototype, so an app variable named `__proto__` is kept as data rather than silently dropped.
|
|
197
|
+
const fromEnv = Object.create(null);
|
|
198
|
+
let bad = false;
|
|
199
|
+
for (const [name, source] of Object.entries(envFrom ?? {})) {
|
|
200
|
+
if (isRecord(entry.env) && Object.hasOwn(entry.env, name)) {
|
|
201
|
+
problems.push(`${at}: ${name} is in both env and envFrom`);
|
|
202
|
+
bad = true;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (typeof source !== 'string' || source === '') {
|
|
206
|
+
problems.push(`${at}.envFrom.${name}: the name of a variable in .env`);
|
|
207
|
+
bad = true;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (RELAY_SECRET_ENV.test(source) || reserved.has(source)) {
|
|
211
|
+
problems.push(`${at}.envFrom.${name}: ${source} is one of the relay's own secrets`);
|
|
212
|
+
bad = true;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (env[source] === undefined) {
|
|
216
|
+
problems.push(`${at}.envFrom.${name}: ${source} is not set in the environment or .env`);
|
|
217
|
+
bad = true;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
fromEnv[name] = env[source];
|
|
221
|
+
}
|
|
222
|
+
if (bad)
|
|
223
|
+
continue;
|
|
224
|
+
// An env that is not a map goes to the shared check as it is, which says so.
|
|
225
|
+
const merged = envFrom === undefined ? entry.env : isRecord(entry.env) || entry.env === undefined ? { ...entry.env, ...fromEnv } : entry.env;
|
|
226
|
+
const options = { arguments: entry.arguments, env: merged };
|
|
227
|
+
const problem = launchOptionsProblem(options);
|
|
228
|
+
if (problem) {
|
|
229
|
+
problems.push(`${at}: ${problem}`);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
defaults.set(bundleId, options);
|
|
233
|
+
}
|
|
234
|
+
return { defaults, problems };
|
|
235
|
+
}
|
|
236
|
+
// The raw section, kept by load() and resolved only by what starts a relay: an `envFrom` names a variable in the
|
|
237
|
+
// relay Mac's .env, and every CLI command imports this module — an agent-only Mac with the same file would otherwise
|
|
238
|
+
// fail `tapflow doctor` and `tapflow init` over a relay it does not run.
|
|
239
|
+
let rawLaunch;
|
|
240
|
+
let rawWebhookSecrets = [];
|
|
241
|
+
/** The launch defaults for a relay about to start, or exit with every problem, like a config error. */
|
|
242
|
+
export function loadLaunchDefaults() {
|
|
243
|
+
const { defaults, problems } = parseLaunchDefaults(rawLaunch, process.env, new Set(rawWebhookSecrets));
|
|
244
|
+
if (problems.length > 0) {
|
|
245
|
+
for (const p of problems)
|
|
246
|
+
logger.error(`config error: ${p}`);
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
return defaults;
|
|
250
|
+
}
|
|
156
251
|
// Populated by load(): path of the dataDir/.env that was loaded, or null. CLI/server use it for a "loaded credentials" log.
|
|
157
252
|
export let loadedEnvPath = null;
|
|
158
253
|
// Which install this process is running, decided once. `init` re-resolves at call time instead of
|
|
@@ -276,6 +371,9 @@ function load() {
|
|
|
276
371
|
lean: file.agent?.lean ?? DEFAULTS.agent.lean,
|
|
277
372
|
},
|
|
278
373
|
};
|
|
374
|
+
rawLaunch = file.launch;
|
|
375
|
+
const webhooks = file.webhooks;
|
|
376
|
+
rawWebhookSecrets = Array.isArray(webhooks) ? webhooks.flatMap((w) => isRecord(w) && typeof w.secretEnv === 'string' ? [w.secretEnv] : []) : [];
|
|
279
377
|
if (process.env.TAPFLOW_PORT)
|
|
280
378
|
cfg.local.port = Number(process.env.TAPFLOW_PORT);
|
|
281
379
|
if (process.env.TAPFLOW_TUNNEL_PORT)
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type LaunchOptions } from '@tapflowio/protocol/launch';
|
|
2
|
+
/** What a device can take of the relay's launch defaults, read from its agent's capabilities. */
|
|
3
|
+
export interface LaunchTarget {
|
|
4
|
+
options: boolean;
|
|
5
|
+
env: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface MergedLaunch {
|
|
8
|
+
options?: LaunchOptions;
|
|
9
|
+
/** Every option came from the defaults: the agent may launch without what it cannot deliver. */
|
|
10
|
+
defaultsOnly: boolean;
|
|
11
|
+
/** Defaults left out for this target, for a warning. Never a caller's value — those are refused. */
|
|
12
|
+
dropped?: 'all' | 'env';
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The relay's defaults for an app under the caller's options, per key, the caller winning. Defaults the target cannot
|
|
16
|
+
* take are left out rather than refused: they were written once for every device the app runs on, while a caller's
|
|
17
|
+
* options were asked for on this one.
|
|
18
|
+
*/
|
|
19
|
+
export declare function mergeLaunch(defaults: LaunchOptions | undefined, caller: LaunchOptions | undefined, target: LaunchTarget): MergedLaunch;
|
|
20
|
+
/**
|
|
21
|
+
* Warnings for configured bundle ids no build was uploaded with. A typo there is a default that never applies, with
|
|
22
|
+
* nothing else to say so. A key that differs only in case is named, because bundle ids are compared exactly.
|
|
23
|
+
*/
|
|
24
|
+
export declare function unmatchedLaunchKeys(keys: Iterable<string>, uploaded: readonly string[]): string[];
|
|
25
|
+
//# sourceMappingURL=launchDefaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchDefaults.d.ts","sourceRoot":"","sources":["../../src/lib/launchDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAErF,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,gGAAgG;IAChG,YAAY,EAAE,OAAO,CAAA;IACrB,oGAAoG;IACpG,OAAO,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;CACxB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,YAAY,CAetI;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAWjG"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { compactLaunchOptions } from '@tapflowio/protocol/launch';
|
|
2
|
+
/**
|
|
3
|
+
* The relay's defaults for an app under the caller's options, per key, the caller winning. Defaults the target cannot
|
|
4
|
+
* take are left out rather than refused: they were written once for every device the app runs on, while a caller's
|
|
5
|
+
* options were asked for on this one.
|
|
6
|
+
*/
|
|
7
|
+
export function mergeLaunch(defaults, caller, target) {
|
|
8
|
+
let usable = defaults;
|
|
9
|
+
let dropped;
|
|
10
|
+
if (usable && !target.options) {
|
|
11
|
+
usable = undefined;
|
|
12
|
+
dropped = 'all';
|
|
13
|
+
}
|
|
14
|
+
else if (usable?.env && !target.env) {
|
|
15
|
+
usable = { arguments: usable.arguments };
|
|
16
|
+
dropped = 'env';
|
|
17
|
+
}
|
|
18
|
+
const options = compactLaunchOptions({
|
|
19
|
+
arguments: { ...usable?.arguments, ...caller?.arguments },
|
|
20
|
+
env: { ...usable?.env, ...caller?.env },
|
|
21
|
+
});
|
|
22
|
+
return { options, defaultsOnly: options !== undefined && caller === undefined, ...(dropped ? { dropped } : {}) };
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Warnings for configured bundle ids no build was uploaded with. A typo there is a default that never applies, with
|
|
26
|
+
* nothing else to say so. A key that differs only in case is named, because bundle ids are compared exactly.
|
|
27
|
+
*/
|
|
28
|
+
export function unmatchedLaunchKeys(keys, uploaded) {
|
|
29
|
+
const known = new Set(uploaded);
|
|
30
|
+
const out = [];
|
|
31
|
+
for (const key of keys) {
|
|
32
|
+
if (known.has(key))
|
|
33
|
+
continue;
|
|
34
|
+
const near = uploaded.find((b) => b.toLowerCase() === key.toLowerCase());
|
|
35
|
+
out.push(near
|
|
36
|
+
? `launch.${key} in tapflow.config.json matches no build; did you mean ${near}? Bundle ids are compared exactly`
|
|
37
|
+
: `launch.${key} in tapflow.config.json matches no uploaded build yet`);
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=launchDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchDefaults.js","sourceRoot":"","sources":["../../src/lib/launchDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAsB,MAAM,4BAA4B,CAAA;AAgBrF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAmC,EAAE,MAAiC,EAAE,MAAoB;IACtH,IAAI,MAAM,GAAG,QAAQ,CAAA;IACrB,IAAI,OAAgC,CAAA;IACpC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,MAAM,GAAG,SAAS,CAAA;QAClB,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;SAAM,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACtC,MAAM,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAA;QACxC,OAAO,GAAG,KAAK,CAAA;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,CAAC;QACnC,SAAS,EAAE,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE;QACzD,GAAG,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE;KACxC,CAAC,CAAA;IACF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AAClH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB,EAAE,QAA2B;IACrF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC5B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAA;QACxE,GAAG,CAAC,IAAI,CAAC,IAAI;YACX,CAAC,CAAC,UAAU,GAAG,0DAA0D,IAAI,mCAAmC;YAChH,CAAC,CAAC,UAAU,GAAG,uDAAuD,CAAC,CAAA;IAC3E,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { initDb } from './db.js';
|
|
3
3
|
import { RelayServer } from './RelayServer.js';
|
|
4
|
-
import { config, loadedEnvPath, assertInstallDir } from './lib/config.js';
|
|
4
|
+
import { config, loadedEnvPath, assertInstallDir, loadLaunchDefaults } from './lib/config.js';
|
|
5
5
|
import { buildCorsOrigins, containerWithoutPublicUrlWarning, proxyWithoutPublicUrlWarning } from './lib/proxyConfig.js';
|
|
6
6
|
import { runningInContainer } from './lib/lanAddress.js';
|
|
7
7
|
import { bootstrapAdminFromEnv, AdminBootstrapError } from './lib/adminBootstrap.js';
|
|
@@ -63,7 +63,7 @@ async function main() {
|
|
|
63
63
|
// relay trusts config — an operator may run the tunnel alongside. See lib/publicUrl.ts.
|
|
64
64
|
// The tunnel listener opens only when its port is named: it is loopback-only, so inside a container only
|
|
65
65
|
// something sharing the relay's network namespace (a sidecar, host networking) could reach it at all.
|
|
66
|
-
const server = new RelayServer({ port, uploadsDir, wsBackpressureBytes: config.local.wsBackpressureBytes, trustedProxies: config.local.trustedProxies, corsOrigins, tls, tunnelPort: config.local.tunnelPort ?? undefined });
|
|
66
|
+
const server = new RelayServer({ port, uploadsDir, wsBackpressureBytes: config.local.wsBackpressureBytes, trustedProxies: config.local.trustedProxies, corsOrigins, tls, tunnelPort: config.local.tunnelPort ?? undefined, launchDefaults: loadLaunchDefaults() });
|
|
67
67
|
await server.start();
|
|
68
68
|
logger.info(`tapflow relay running at ${tls ? 'https' : 'http'}://${displayHost}:${port}`);
|
|
69
69
|
const stopTls = provider ? startTlsBackgroundTasks(provider, server, config.tls) : null;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tapflowio/relay",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "WebSocket relay server for tapflow — NAT traversal, session routing, JWT auth, bundled dashboard",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"tapflow",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"better-sqlite3": "^12.11.1",
|
|
50
50
|
"busboy": "^1.6.0",
|
|
51
51
|
"jsonwebtoken": "^9.0.3",
|
|
52
|
-
"nodemailer": "^10.1
|
|
52
|
+
"nodemailer": "^10.2.1",
|
|
53
53
|
"ws": "^8.22.0",
|
|
54
54
|
"zod": "^4.6.7",
|
|
55
|
-
"@tapflowio/agent-core": "0.
|
|
56
|
-
"@tapflowio/protocol": "0.
|
|
55
|
+
"@tapflowio/agent-core": "0.31.0",
|
|
56
|
+
"@tapflowio/protocol": "0.31.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@types/better-sqlite3": "^7.6.13",
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import{c as H,r as x,j as n}from"./vendor-react-DTSdA8m-.js";import{G as T,a2 as oe,a3 as ie,ax as le,O as re,ak as ce,S as de,B as fe}from"./index-
|
|
2
|
-
* @license lucide-react v1.
|
|
1
|
+
import{c as H,r as x,j as n}from"./vendor-react-DTSdA8m-.js";import{G as T,a2 as oe,a3 as ie,ax as le,O as re,ak as ce,S as de,B as fe}from"./index-CiJwpDAf.js";import{u as ue}from"./useRelay-CES3I1Mt.js";import{n as he,C as me,H as pe}from"./AndroidDeviceScreen-1RaPu10r.js";import{N as xe,M as ye,i as ke,t as ge,a as je,b as be,W as ve}from"./WatchedDevice-D-SfDxp8.js";import{L as we,D as _e,K as Se,H as Ne,h as U,w as Ae,a as Re,A as Me}from"./aiSession-p7Uu2swu.js";import{P as Le}from"./play-BR_CdQzZ.js";import{d as ze,L as Ce}from"./vendor-router-B1pQim9Z.js";/**
|
|
2
|
+
* @license lucide-react v1.61.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
5
5
|
* See the LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/const X={name:"corner-down-left",size:24,node:[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]]};X.node;const De=T(X);/**
|
|
7
|
-
* @license lucide-react v1.
|
|
7
|
+
* @license lucide-react v1.61.0 - ISC
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
10
10
|
* See the LICENSE file in the root directory of this source tree.
|
|
11
11
|
*/const Z={name:"eraser",size:24,node:[["path",{d:"M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21",key:"g5wo59"}],["path",{d:"m5.082 11.09 8.828 8.828",key:"1wx5vj"}]]};Z.node;const He=T(Z);/**
|
|
12
|
-
* @license lucide-react v1.
|
|
12
|
+
* @license lucide-react v1.61.0 - ISC
|
|
13
13
|
*
|
|
14
14
|
* This source code is licensed under the ISC license.
|
|
15
15
|
* See the LICENSE file in the root directory of this source tree.
|
|
16
16
|
*/const J={name:"mouse-pointer-click",size:24,node:[["path",{d:"M14 4.1 12 6",key:"ita8i4"}],["path",{d:"m5.1 8-2.9-.8",key:"1go3kf"}],["path",{d:"m6 12-1.9 2",key:"mnht97"}],["path",{d:"M7.2 2.2 8 5.1",key:"1cfko1"}],["path",{d:"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z",key:"s0h3yz"}]]};J.node;const Te=T(J);/**
|
|
17
|
-
* @license lucide-react v1.
|
|
17
|
+
* @license lucide-react v1.61.0 - ISC
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
21
|
*/const Q={name:"move-horizontal",size:24,node:[["path",{d:"m18 8 4 4-4 4",key:"1ak13k"}],["path",{d:"M2 12h20",key:"9i4pu4"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}]]};Q.node;const Ee=T(Q);/**
|
|
22
|
-
* @license lucide-react v1.
|
|
22
|
+
* @license lucide-react v1.61.0 - ISC
|
|
23
23
|
*
|
|
24
24
|
* This source code is licensed under the ISC license.
|
|
25
25
|
* See the LICENSE file in the root directory of this source tree.
|
|
26
26
|
*/const Y={name:"move-vertical",size:24,node:[["path",{d:"M12 2v20",key:"t6zp3m"}],["path",{d:"m8 18 4 4 4-4",key:"bh5tu3"}],["path",{d:"m8 6 4-4 4 4",key:"ybng9g"}]]};Y.node;const $e=T(Y);/**
|
|
27
|
-
* @license lucide-react v1.
|
|
27
|
+
* @license lucide-react v1.61.0 - ISC
|
|
28
28
|
*
|
|
29
29
|
* This source code is licensed under the ISC license.
|
|
30
30
|
* See the LICENSE file in the root directory of this source tree.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import{c as pe,r as y,j as S}from"./vendor-react-DTSdA8m-.js";const ze={width:324,height:720},Fe={width:540,height:720},Oe={width:376,height:548};function zt(t,e){return t==="foldable"?e==="ios"?Oe:Fe:t!=="tablet"?ze:e==="android"?{width:720,height:450}:Fe}const Ge="iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4nGNgAAIAAAUAAXpeqz8AAAAASUVORK5CYII=",Me=1500,Le=new Map,We=new WeakSet;function Ot(t,e){const n=Me,s=Math.round(Me*t.width/t.height),i=`${s}x${n}x${e??"guess"}`,o=Le.get(i);if(o)return o;const r={framePng:Ge,bezelWidth:s,bezelHeight:n,compositeWidth:s,compositeHeight:n,padding:{left:0,right:0,top:0,bottom:0},screenRect:{x:0,y:0,width:s,height:n},screenCornerRadius:e??Math.round(s*(s/n>.6?.03:.12)),logicalWidth:Math.round(s/2),logicalHeight:Math.round(n/2),buttons:[]};return Le.set(i,r),We.add(r),r}function Gt(t){return We.has(t)}function jt(){const t=pe.c(4),e=y.useRef(0),[n,s]=y.useState(0);let i,o;t[0]===Symbol.for("react.memo_cache_sentinel")?(i=()=>{const a=setInterval(()=>{s(e.current),e.current=0},1e3);return()=>clearInterval(a)},o=[],t[0]=i,t[1]=o):(i=t[0],o=t[1]),y.useEffect(i,o);let r;return t[2]!==n?(r={fps:n,frameCount:e},t[2]=n,t[3]=r):r=t[3],r}class De{constructor(e){this.bytes=e,this.bitPos=0}get position(){return this.bitPos}bit(){const e=this.bitPos>>3,n=7-(this.bitPos&7);return this.bitPos++,e>=this.bytes.length?0:this.bytes[e]>>n&1}bits(e){let n=0;for(let s=0;s<e;s++)n=n<<1|this.bit();return n>>>0}flag(){return this.bit()===1}ue(){let e=0;for(;this.bit()===0&&e<32;)e++;return e===0?0:(1<<e)-1+this.bits(e)}se(){const e=this.ue();return e&1?Math.ceil(e/2):-Math.ceil(e/2)}}class je{constructor(){this.bitsArr=[]}bit(e){this.bitsArr.push(e&1)}ue(e){const n=e+1,s=Math.floor(Math.log2(n));for(let i=0;i<s;i++)this.bit(0);for(let i=s;i>=0;i--)this.bit(n>>i&1)}toBytes(){const e=[];for(let n=0;n<this.bitsArr.length;n+=8){let s=0;for(let i=0;i<8;i++)s=s<<1|(this.bitsArr[n+i]??0);e.push(s)}return new Uint8Array(e)}}function $e(t){const e=[];let n=0;for(let s=1;s<t.length;s++){const i=t[s];if(n>=2&&i===3){n=0;continue}e.push(i),n=i===0?n+1:0}return new Uint8Array(e)}function Be(t){const e=[];let n=0;for(const s of t)n>=2&&s<=3&&(e.push(3),n=0),e.push(s),n=s===0?n+1:0;return new Uint8Array(e)}const Xe=new Set([100,110,122,244,44,83,86,118,128,138,139,134,135]);function He(t){const e=t.ue()+1;t.bits(4),t.bits(4);for(let n=0;n<e;n++)t.ue(),t.ue(),t.flag();t.bits(5),t.bits(5),t.bits(5),t.bits(5)}function ke(t){const e=t.bits(8);t.bits(8);const n=t.bits(8);if(t.ue(),Xe.has(e)){const d=t.ue();if(d===3&&t.flag(),t.ue(),t.ue(),t.flag(),t.flag()){const g=d!==3?8:12;for(let l=0;l<g;l++)if(t.flag()){const h=l<6?16:64;let x=8,U=8;for(let A=0;A<h;A++)U!==0&&(U=(x+t.se()+256)%256),x=U===0?x:U}}}t.ue();const s=t.ue();if(s===0)t.ue();else if(s===1){t.flag(),t.se(),t.se();const d=t.ue();for(let g=0;g<d;g++)t.se()}const i=t.ue();t.flag(),t.ue(),t.ue(),t.flag()||t.flag(),t.flag(),t.flag()&&(t.ue(),t.ue(),t.ue(),t.ue());const o={profileIdc:e,levelIdc:n,numRefFrames:i,bitstreamRestriction:!1,maxNumReorderFrames:null,maxDecFrameBuffering:null};if(!t.flag())return{...o,vuiPresent:!1,restrictionFlagPos:-1};t.flag()&&t.bits(8)===255&&(t.bits(16),t.bits(16)),t.flag()&&t.flag(),t.flag()&&(t.bits(3),t.flag(),t.flag()&&(t.bits(8),t.bits(8),t.bits(8))),t.flag()&&(t.ue(),t.ue()),t.flag()&&(t.bits(32),t.bits(32),t.flag());const a=t.flag();a&&He(t);const f=t.flag();f&&He(t),(a||f)&&t.flag(),t.flag();const c=t.position;return t.flag()?(t.flag(),t.ue(),t.ue(),t.ue(),t.ue(),{...o,vuiPresent:!0,bitstreamRestriction:!0,maxNumReorderFrames:t.ue(),maxDecFrameBuffering:t.ue(),restrictionFlagPos:c}):{...o,vuiPresent:!0,restrictionFlagPos:c}}function Ye(t){const e=ke(new De($e(t)));return{profileIdc:e.profileIdc,levelIdc:e.levelIdc,vuiPresent:e.vuiPresent,bitstreamRestriction:e.bitstreamRestriction,maxNumReorderFrames:e.maxNumReorderFrames,maxDecFrameBuffering:e.maxDecFrameBuffering}}function qe(t){const e=$e(t),n=ke(new De(e));if(!n.vuiPresent||n.restrictionFlagPos<0||n.bitstreamRestriction)return null;const s=new je,i=new De(e);for(let o=0;o<n.restrictionFlagPos;o++)s.bit(i.bit());return s.bit(1),s.bit(1),s.ue(0),s.ue(0),s.ue(0),s.ue(0),s.ue(0),s.ue(n.numRefFrames),s.bit(1),Uint8Array.from([t[0],...Be(s.toBytes())])}function Je(t){const e=[],n=t.length;let s=-1,i=0;for(;i+2<n;){const o=i+3<n&&t[i]===0&&t[i+1]===0&&t[i+2]===0&&t[i+3]===1,r=t[i]===0&&t[i+1]===0&&t[i+2]===1;o||r?(s>=0&&e.push(t.subarray(s,i)),i+=o?4:3,s=i):i++}return s>=0&&e.push(t.subarray(s,n)),e}class Ke{constructor(e){this.onFrame=e,this.decoder=null,this.sps=null,this.pps=null,this.frameCount=0,this.submitAt=new Map,this.spsLogged=!1}setDecodeSampler(e){this.decodeSampler=e}decode(e){const n=[];let s=!1;for(const c of Je(new Uint8Array(e))){const u=c[0]&31;if(u===7){const d=!this.sps||c.length!==this.sps.length||c.some((g,l)=>g!==this.sps[l]);this.sps=c,d&&this.decoder&&(this.decoder.close(),this.decoder=null)}else u===8?this.pps=c:u>=1&&u<=5&&(u===5&&(s=!0),n.push(c))}if(s&&this.sps&&this.pps&&!this.decoder&&this.initDecoder(this.sps,this.pps),!this.decoder||n.length===0)return;let i=0;for(const c of n)i+=4+c.length;const o=new Uint8Array(i),r=new DataView(o.buffer);let a=0;for(const c of n)r.setUint32(a,c.length,!1),a+=4,o.set(c,a),a+=c.length;const f=Math.round(this.frameCount++*(1e6/30));if(this.decodeSampler&&(this.submitAt.set(f,performance.now()),this.submitAt.size>120)){const c=this.submitAt.keys().next().value;c!==void 0&&this.submitAt.delete(c)}try{this.decoder.decode(new EncodedVideoChunk({type:s?"key":"delta",timestamp:f,data:o}))}catch{}}sampleDecode(e){var s;if(!this.decodeSampler)return;const n=this.submitAt.get(e.timestamp);n!==void 0&&(this.submitAt.delete(e.timestamp),this.decodeSampler({decodeMs:performance.now()-n,queueSize:((s=this.decoder)==null?void 0:s.decodeQueueSize)??0}))}flush(){var e;(e=this.decoder)==null||e.flush().catch(()=>{})}close(){var e;(e=this.decoder)==null||e.close(),this.decoder=null}logSpsVui(e){if(!(this.spsLogged||!this.decodeSampler)){this.spsLogged=!0;try{console.log("[sps-vui]",JSON.stringify(Ye(e)))}catch(n){console.warn("[sps-vui] parse failed",n)}}}initDecoder(e,n){this.logSpsVui(e);const s=qe(e)??e,i=s[0]===0?s.subarray(4):s,o=`avc1.${i[1].toString(16).padStart(2,"0")}${i[2].toString(16).padStart(2,"0")}${i[3].toString(16).padStart(2,"0")}`,r=this.buildAVCC(s,n);this.decoder=new VideoDecoder({output:a=>{this.sampleDecode(a),this.onFrame(a)},error:a=>console.error("[WebCodecsCore]",a)}),this.decoder.configure({codec:o,description:r,optimizeForLatency:!0})}buildAVCC(e,n){const s=e[0]===0?e.subarray(4):e,i=n[0]===0?n.subarray(4):n,o=new Uint8Array(8+s.length+1+2+i.length);let r=0;return o[r++]=1,o[r++]=s[1],o[r++]=s[2],o[r++]=s[3],o[r++]=255,o[r++]=225,o[r++]=s.length>>8&255,o[r++]=s.length&255,o.set(s,r),r+=s.length,o[r++]=1,o[r++]=i.length>>8&255,o[r++]=i.length&255,o.set(i,r),o}}const Qe=`#version 300 es
|
|
2
|
+
in vec2 a_pos;
|
|
3
|
+
out vec2 v_uv;
|
|
4
|
+
void main() {
|
|
5
|
+
v_uv = vec2(a_pos.x * 0.5 + 0.5, 0.5 - a_pos.y * 0.5);
|
|
6
|
+
gl_Position = vec4(a_pos, 0.0, 1.0);
|
|
7
|
+
}`,Ze=`#version 300 es
|
|
8
|
+
precision mediump float;
|
|
9
|
+
in vec2 v_uv;
|
|
10
|
+
uniform sampler2D u_tex;
|
|
11
|
+
out vec4 out_color;
|
|
12
|
+
void main() {
|
|
13
|
+
out_color = texture(u_tex, v_uv);
|
|
14
|
+
}`;function et(t){const e=t.getContext("webgl2",{alpha:!1,antialias:!1,powerPreference:"high-performance",preserveDrawingBuffer:!0});if(!e)return null;const n=(u,d)=>{const g=e.createShader(u);return e.shaderSource(g,d),e.compileShader(g),g},s=e.createProgram(),i=n(e.VERTEX_SHADER,Qe),o=n(e.FRAGMENT_SHADER,Ze);e.attachShader(s,i),e.attachShader(s,o),e.linkProgram(s),e.deleteShader(i),e.deleteShader(o),e.useProgram(s);const r=e.createVertexArray();e.bindVertexArray(r);const a=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),e.STATIC_DRAW);const f=e.getAttribLocation(s,"a_pos");e.enableVertexAttribArray(f),e.vertexAttribPointer(f,2,e.FLOAT,!1,0,0),e.bindVertexArray(null);const c=e.createTexture();return e.activeTexture(e.TEXTURE0),e.bindTexture(e.TEXTURE_2D,c),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.uniform1i(e.getUniformLocation(s,"u_tex"),0),{gl:e,program:s,tex:c,vao:r}}class tt{constructor(e){this.canvas=e,this.state=null}init(){return this.state=et(this.canvas),this.state!==null}drawFrame(e){const n=this.state;if(!n)return e.close(),null;const s=e.displayWidth,i=e.displayHeight;try{return(this.canvas.width!==s||this.canvas.height!==i)&&(this.canvas.width=s,this.canvas.height=i,n.gl.viewport(0,0,s,i)),n.gl.activeTexture(n.gl.TEXTURE0),n.gl.bindTexture(n.gl.TEXTURE_2D,n.tex),n.gl.texImage2D(n.gl.TEXTURE_2D,0,n.gl.RGBA,n.gl.RGBA,n.gl.UNSIGNED_BYTE,e),n.gl.bindVertexArray(n.vao),n.gl.drawArrays(n.gl.TRIANGLES,0,6),n.gl.bindVertexArray(null),n.gl.bindTexture(n.gl.TEXTURE_2D,null),{width:s,height:i}}finally{e.close()}}dispose(){const e=this.state;e&&(e.gl.deleteTexture(e.tex),e.gl.deleteVertexArray(e.vao),e.gl.deleteProgram(e.program),this.state=null)}}function st(t){const e=new tt(t);return e.init(),e}class nt{constructor(e=st){this._size=null,this.presented=new Set,this.canvas=document.createElement("canvas"),this.renderer=e(this.canvas),this.core=new Ke(n=>this.render(n))}get surface(){return this.canvas}get size(){return this._size}onResize(e){this.resizeCb=e}onDecodedFrame(e){this.decodedCb=e,this.core.setDecodeSampler(n=>{this.lastSample=n})}onPresented(e){return this.presented.add(e),()=>{this.presented.delete(e)}}decode(e){this.core.decode(e)}flush(){this.core.flush()}close(){this.core.close(),this.renderer.dispose()}render(e){var s,i;const n=this.renderer.drawFrame(e);if(n){(s=this.decodedCb)==null||s.call(this,performance.now(),this.lastSample),this.lastSample=void 0;for(const o of this.presented)o();(!this._size||this._size.width!==n.width||this._size.height!==n.height)&&(this._size=n,(i=this.resizeCb)==null||i.call(this,n))}}}const it=`#version 300 es
|
|
15
|
+
in vec2 a_pos;
|
|
16
|
+
out vec2 v_uv;
|
|
17
|
+
void main() {
|
|
18
|
+
v_uv = vec2(a_pos.x * 0.5 + 0.5, 0.5 - a_pos.y * 0.5);
|
|
19
|
+
gl_Position = vec4(a_pos, 0.0, 1.0);
|
|
20
|
+
}`,ot=`#version 300 es
|
|
21
|
+
precision mediump float;
|
|
22
|
+
in vec2 v_uv;
|
|
23
|
+
uniform sampler2D u_texY;
|
|
24
|
+
uniform sampler2D u_texU;
|
|
25
|
+
uniform sampler2D u_texV;
|
|
26
|
+
out vec4 out_color;
|
|
27
|
+
void main() {
|
|
28
|
+
float Y = (texture(u_texY, v_uv).r - 0.0627451) * 1.1643836; // (y-16/255)*255/219
|
|
29
|
+
float U = (texture(u_texU, v_uv).r - 0.5019608) * 1.1383929; // (u-128/255)*255/224
|
|
30
|
+
float V = (texture(u_texV, v_uv).r - 0.5019608) * 1.1383929;
|
|
31
|
+
float r = Y + 1.5748 * V;
|
|
32
|
+
float g = Y - 0.1873 * U - 0.4681 * V;
|
|
33
|
+
float b = Y + 1.8556 * U;
|
|
34
|
+
out_color = vec4(r, g, b, 1.0);
|
|
35
|
+
}`;function Pe(t,e,n,s){const i=t.createTexture();return t.activeTexture(t.TEXTURE0+e),t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.uniform1i(t.getUniformLocation(s,n),e),i}function rt(t){const e=t.getContext("webgl2",{alpha:!1,antialias:!1,powerPreference:"high-performance",preserveDrawingBuffer:!0});if(!e)return null;const n=(g,l)=>{const h=e.createShader(g);return e.shaderSource(h,l),e.compileShader(h),h},s=e.createProgram(),i=n(e.VERTEX_SHADER,it),o=n(e.FRAGMENT_SHADER,ot);e.attachShader(s,i),e.attachShader(s,o),e.linkProgram(s),e.deleteShader(i),e.deleteShader(o),e.useProgram(s);const r=e.createVertexArray();e.bindVertexArray(r);const a=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,a),e.bufferData(e.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),e.STATIC_DRAW);const f=e.getAttribLocation(s,"a_pos");e.enableVertexAttribArray(f),e.vertexAttribPointer(f,2,e.FLOAT,!1,0,0),e.bindVertexArray(null),e.pixelStorei(e.UNPACK_ALIGNMENT,1);const c=Pe(e,0,"u_texY",s),u=Pe(e,1,"u_texU",s),d=Pe(e,2,"u_texV",s);return{gl:e,program:s,texY:c,texU:u,texV:d,vao:r}}class at{constructor(e){this.canvas=e,this.state=null}init(){return this.state=rt(this.canvas),this.state!==null}drawI420(e,n,s){const i=this.state;if(!i)return null;const{gl:o}=i,r=n+1>>1,a=s+1>>1,f=n*s,c=r*a,u=e.subarray(0,f),d=e.subarray(f,f+c),g=e.subarray(f+c,f+2*c);(this.canvas.width!==n||this.canvas.height!==s)&&(this.canvas.width=n,this.canvas.height=s,o.viewport(0,0,n,s));const l=(h,x,U,A,z)=>{o.activeTexture(o.TEXTURE0+h),o.bindTexture(o.TEXTURE_2D,x),o.texImage2D(o.TEXTURE_2D,0,o.R8,U,A,0,o.RED,o.UNSIGNED_BYTE,z)};return l(0,i.texY,n,s,u),l(1,i.texU,r,a,d),l(2,i.texV,r,a,g),o.bindVertexArray(i.vao),o.drawArrays(o.TRIANGLES,0,6),o.bindVertexArray(null),{width:n,height:s}}dispose(){const e=this.state;e&&(e.gl.deleteTexture(e.texY),e.gl.deleteTexture(e.texU),e.gl.deleteTexture(e.texV),e.gl.deleteVertexArray(e.vao),e.gl.deleteProgram(e.program),this.state=null)}}const ct=0;function lt(t){const e=new at(t);return e.init(),e}function ut(){return new Worker(new URL("/assets/tinyh264.worker-DiJ50Hai.js",import.meta.url),{type:"module"})}class dt{constructor(e=lt,n=ut){this.ready=!1,this.pending=[],this._size=null,this.presented=new Set,this.canvas=document.createElement("canvas"),this.renderer=e(this.canvas),this.worker=n(),this.worker.onmessage=s=>this.onMessage(s.data)}get surface(){return this.canvas}get size(){return this._size}onResize(e){this.resizeCb=e}onDecodedFrame(e){this.decodedCb=e}onPresented(e){return this.presented.add(e),()=>{this.presented.delete(e)}}decode(e){if(!this.ready){this.pending.push(e);return}this.post(e)}close(){this.worker.terminate(),this.renderer.dispose()}post(e){this.worker.postMessage({type:"decode",data:e,offset:0,length:e.byteLength,renderStateId:ct},[e])}onMessage(e){var s,i;if(e.type==="decoderReady"){this.ready=!0;for(const o of this.pending)this.post(o);this.pending.length=0;return}const n=this.renderer.drawI420(new Uint8Array(e.data),e.width,e.height);if(n){(s=this.decodedCb)==null||s.call(this,performance.now());for(const o of this.presented)o();(!this._size||this._size.width!==n.width||this._size.height!==n.height)&&(this._size=n,(i=this.resizeCb)==null||i.call(this,n))}}}function Ce(){const t=typeof window<"u";let e=!1;try{e=!!document.createElement("canvas").getContext("webgl2")}catch{e=!1}return{secureContext:t&&window.isSecureContext===!0,webCodecs:t&&"VideoDecoder"in window,webgl2:e,wasm:typeof WebAssembly<"u"&&typeof Worker<"u"}}function ft(t=Ce()){return t.secureContext&&t.webCodecs&&t.webgl2?new nt:t.wasm&&t.webgl2?new dt:null}function Bt(t=Ce()){return t.secureContext&&t.webCodecs&&t.webgl2||t.wasm&&t.webgl2}function Xt(t=Ce()){return t.secureContext&&t.webCodecs&&t.webgl2?"high":t.wasm&&t.webgl2?"standard":"unsupported"}function Yt(t,e,n,s,i,o){const{x:r,y:a,width:f,height:c}=i,u=(t.x-e.left)/e.width,d=(t.y-e.top)/e.height,[g,l]=o===90?[d,1-u]:o===180?[1-u,1-d]:o===270?[1-d,u]:[u,d],h=g*n,x=l*s;return h<r||h>r+f||x<a||x>a+c?null:{x:(h-r)/f,y:(x-a)/c}}function qt(t,e){return t!==void 0?t:e?270:0}function Jt(t,e,n){const s=(t.x-e.left)/e.width,i=(t.y-e.top)/e.height;return s<0||s>1||i<0||i>1?null:n?{x:i,y:1-s}:{x:s,y:i}}function Kt(t,e){switch(e){case 0:return t;case 90:return{x:1-t.y,y:t.x};case 180:return{x:1-t.x,y:1-t.y};case 270:return{x:t.y,y:1-t.x}}}function Qt(t){return{f0:{x:1-t.x,y:1-t.y},f1:t}}function ht(t,e){return t>0?Math.min(1,e/t):1}function gt(t,e){return(t+(e?90:0))%360}function Ae(t,e,n){const s=n===90||n===270;return{width:s?e:t,height:s?t:e}}const pt=1920;function Zt(t){const e=Math.min(1,pt/Math.max(t.width,t.height)),n=s=>Math.max(2,2*Math.round(s*e/2));return{width:n(t.width),height:n(t.height)}}function es(t,e,n,s,i){const{width:o,height:r}=Ae(n,s,i),a=Math.min(t/o,e/r);return{picW:o,picH:r,scale:a,left:(t-o*a)/2,top:(e-r*a)/2}}function mt(t,e,n){const s=t===90||t===270,i=s?n:e,o=s?e:n;return{width:i,height:o,left:(e-i)/2,top:(n-o)/2}}function ts(t,e,n,s){const{width:i,height:o}=Ae(t,e,s);return{width:i,height:o,turn:(n-s+360)%360}}function yt(t){return!t.ready||t.rotating?!1:t.aspectAgrees||!t.frameIsAhead}function xt(t,e,n){if(!t||!e)return!0;const{width:s,height:i}=Ae(t.width,t.height,n);return Math.abs(s/i-e.width/e.height)<.05}function ss(t,e){return Math.max(0,t-e)}const bt=22,Ne=[84,70,70,69],wt=1,Rt=0,Ue=1,vt=2,At=1,Et=2,St=4;function ns(t){if(t.byteLength<bt)return null;const e=new DataView(t);for(let i=0;i<Ne.length;i++)if(e.getUint8(i)!==Ne[i])return null;if(e.getUint8(4)!==wt)return null;const n=e.getUint8(5),s=n&St?vt:n&At?Ue:Rt;return{capturedAt:Number(e.getBigUint64(6)),relayedAt:Number(e.getBigUint64(14)),codec:s,keyframe:s===Ue&&(n&Et)!==0}}function Ve(t){const{binaryFrameHandlerRef:e,perfHookRef:n,frameCount:s}=t,i=y.useRef(t);y.useLayoutEffect(()=>{i.current=t},[t]),y.useEffect(()=>{let o=null,r=!1,a=!1,f;const c=()=>{if(o)return o;if(r)return null;const u=ft();return u?(o=u,u.onResize(d=>i.current.onResize(d)),f=i.current.onDecoderReady(u),u):(r=!0,i.current.onUnsupported(),console.warn("[decoder] none available — set up HTTPS or use a supported browser"),null)};return e.current=(u,d)=>{var h;const g=i.current.onJpegFrame;if(g&&(d==null?void 0:d.codec)!==Ue){g(u,d);return}const l=c();if(l){if(!a){if(!(d!=null&&d.keyframe))return;a=!0}l.decode(u),d!=null&&d.flush&&((h=l.flush)==null||h.call(l)),s.current+=1}},()=>{e.current=void 0,typeof f=="function"&&f(),o==null||o.close(),o==null||o.surface.remove(),o=null}},[e,n,s])}const _t=2500;function is(t){const e=pe.c(26),{chrome:n,binaryFrameHandlerRef:s,perfHookRef:i,fps:o,frameCount:r,onCanvasResize:a}=t,f=y.useRef(null),c=y.useRef(null),u=y.useRef(null),d=y.useRef(0),g=y.useRef(0),[l,h]=y.useState(!1),[x,U]=y.useState(!1);o!==0&&x&&U(!1);let A,z;e[0]!==l||e[1]!==o?(A=()=>{if(o!==0||!l)return;const m=setTimeout(()=>U(!0),_t);return()=>clearTimeout(m)},z=[o,l],e[0]=l,e[1]=o,e[2]=A,e[3]=z):(A=e[2],z=e[3]),y.useEffect(A,z);const[O,k]=y.useState(!1),H=y.useRef(null);let _;e[4]===Symbol.for("react.memo_cache_sentinel")?(_=m=>{const p=f.current;p&&(m.style.left=p.style.left,m.style.top=p.style.top,m.style.width=p.style.width,m.style.height=p.style.height,m.style.borderRadius=p.style.borderRadius,m.style.maskImage=p.style.maskImage)},e[4]=_):_=e[4];const C=_;let N;e[5]===Symbol.for("react.memo_cache_sentinel")?(N=()=>{H.current&&C(H.current)},e[5]=N):N=e[5];let T;e[6]!==n?(T=[n],e[6]=n,e[7]=T):T=e[7],y.useLayoutEffect(N,T);let F;e[8]===Symbol.for("react.memo_cache_sentinel")?(F=()=>k(!0),e[8]=F):F=e[8];let I;e[9]!==a?(I=m=>{const p=f.current;p&&(p.width!==m.width||p.height!==m.height)&&(p.width=m.width,p.height=m.height,a==null||a({width:m.width,height:m.height})),h(!0)},e[9]=a,e[10]=I):I=e[10];let W;e[11]===Symbol.for("react.memo_cache_sentinel")?(W=m=>{var G,M;const p=m.surface;p.style.position="absolute",C(p),H.current=p,p.style.objectFit="fill",p.style.zIndex="3",p.style.pointerEvents="none",(G=c.current)==null||G.appendChild(p);let R=null;const v=()=>{R=null;const P=f.current,ne=P==null?void 0:P.getContext("2d");if(P&&ne&&m.size)try{ne.drawImage(m.surface,0,0,P.width,P.height)}catch{}},b=(M=m.onPresented)==null?void 0:M.call(m,()=>{R===null&&(R=requestAnimationFrame(v))});if(!b){const P=()=>{v(),R=requestAnimationFrame(P)};R=requestAnimationFrame(P)}return()=>{b==null||b(),R!==null&&cancelAnimationFrame(R),H.current===p&&(H.current=null)}},e[11]=W):W=e[11];let E;e[12]!==r||e[13]!==a||e[14]!==i?(E=m=>{const p=performance.now();d.current&&p-d.current,d.current=p;const R=g.current;createImageBitmap(new Blob([m],{type:"image/jpeg"})).then(v=>{if(performance.now()-p,g.current!==R){v.close();return}const b=f.current,G=b==null?void 0:b.getContext("2d");if(!b||!G){v.close();return}(b.width!==v.width||b.height!==v.height)&&(b.width=v.width,b.height=v.height,a==null||a({width:v.width,height:v.height}));const M=performance.now();G.drawImage(v,0,0),performance.now()-M,v.close(),h(!0),r.current=r.current+1}).catch(Tt)},e[12]=r,e[13]=a,e[14]=i,e[15]=E):E=e[15];let $;e[16]!==s||e[17]!==r||e[18]!==i||e[19]!==I||e[20]!==E?($={binaryFrameHandlerRef:s,perfHookRef:i,frameCount:r,onUnsupported:F,onResize:I,onDecoderReady:W,onJpegFrame:E},e[16]=s,e[17]=r,e[18]=i,e[19]=I,e[20]=E,e[21]=$):$=e[21],Ve($);let D;return e[22]!==l||e[23]!==O||e[24]!==x?(D={canvasRef:f,containerRef:c,screenAreaRef:u,canvasReady:l,stalled:x,decoderUnsupported:O},e[22]=l,e[23]=O,e[24]=x,e[25]=D):D=e[25],D}function Tt(){}function Ie(t){const e=t.rolloverOffset.x-t.buttonW/2,n=t.anchor==="top"?t.rolloverOffset.y:t.normalOffset.y-t.buttonH/2;return{left:e,top:n,right:e+t.buttonW,bottom:n+t.buttonH}}function Pt(t,e){return t.map(n=>{const s=Ie(n);if(n.onTop)return s;const i=(s.left+s.right)/2,o=(s.top+s.bottom)/2;switch(n.anchor){case"left":return{...s,left:0,right:i};case"right":return{...s,left:i,right:e.width};case"top":return{...s,top:0,bottom:o};case"bottom":return{...s,top:o,bottom:e.height};default:return s}})}const Dt=12,Ut=233,Ct=234;function It(t,e,n,s){const i=t.map(g=>g.accessibilityTitle);if(s!=="tablet")return i;const o=g=>t.findIndex(l=>l.usagePage===Dt&&l.usage===g),r=o(Ut),a=o(Ct);if(r<0||a<0)return i;const f=g=>{const l=Ie(g),h=(l.left+l.right)/2,x=(l.top+l.bottom)/2;switch(n){case 90:return{x:e.height-x,y:h};case 180:return{x:e.width-h,y:e.height-x};case 270:return{x,y:e.width-h};default:return{x:h,y:x}}},c=f(t[r]),u=f(t[a]);return(Math.abs(c.x-u.x)>Math.abs(c.y-u.y)?c.x>u.x:c.y<u.y)||([i[r],i[a]]=[i[a],i[r]]),i}function Ft(t){return t.includes("Firefox/")&&t.includes("Macintosh")?"linear-gradient(#fff,#fff)":void 0}const Mt=750;function Lt(t){const e=t.compositeWidth/2,n=t.compositeHeight/2,s=ht((t.scaleBasis??t.compositeHeight)/2,Mt),i=Math.round(e*s),o=Math.round(n*s),r=t.screenRect.x/t.compositeWidth*100,a=t.screenRect.y/t.compositeHeight*100,f=t.screenRect.width/t.compositeWidth*100,c=t.screenRect.height/t.compositeHeight*100,u=U=>Math.round(U/2*s),d=u(t.screenCornerRadius),g=t.screenCornerRadii,l=g?`${u(g.topLeft)}px ${u(g.topRight)}px ${u(g.bottomRight)}px ${u(g.bottomLeft)}px`:d>0?`${d}px`:void 0,h=d>0?Ft(navigator.userAgent):void 0,x={left:`${r}%`,top:`${a}%`,width:`${f}%`,height:`${c}%`,borderRadius:l,maskImage:h};return{displayW:i,displayH:o,screenPctLeft:r,screenPctTop:a,screenPctW:f,screenPctH:c,screenBox:x}}function Ht(t,e){const n=pe.c(4),s=y.useRef(e);let i,o;n[0]!==t||n[1]!==e?(i=()=>{var a;if(s.current===e)return;s.current=e;const r=t.current;typeof(r==null?void 0:r.animate)!="function"||(a=window.matchMedia)!=null&&a.call(window,"(prefers-reduced-motion: reduce)").matches||r.animate([{opacity:0},{opacity:1}],{duration:200,easing:"ease-out"})},o=[e,t],n[0]=t,n[1]=e,n[2]=i,n[3]=o):(i=n[2],o=n[3]),y.useEffect(i,o)}function os(t){const e=pe.c(68),{screen:n,chrome:s,formFactor:i,turn:o,joined:r,fps:a,containerHandlers:f,buttons:c,overlay:u,areaOverlay:d,folding:g}=t,l=g===void 0?null:g,{canvasRef:h,containerRef:x,screenAreaRef:U,canvasReady:A,stalled:z}=n;let O;e[0]!==s?(O=Lt(s),e[0]=s,e[1]=O):O=e[1];const{displayW:k,displayH:H,screenBox:_}=O;let C,N,T;if(e[2]!==s.buttons||e[3]!==s.compositeHeight||e[4]!==s.compositeWidth||e[5]!==i||e[6]!==o){const Z={width:s.compositeWidth,height:s.compositeHeight};T=Pt(s.buttons,Z),C=o===90||o===270,N=It(s.buttons,Z,o,i),e[2]=s.buttons,e[3]=s.compositeHeight,e[4]=s.compositeWidth,e[5]=i,e[6]=o,e[7]=C,e[8]=N,e[9]=T}else C=e[7],N=e[8],T=e[9];const F=N,I=o;let W;e[10]!==s.framePng||e[11]!==I||e[12]!==o?(W={turn:o,deg:I,frame:s.framePng,animate:!1},e[10]=s.framePng,e[11]=I,e[12]=o,e[13]=W):W=e[13];const[E,$]=y.useState(W);(E.turn!==o||E.frame!==s.framePng)&&$({turn:o,deg:E.deg+(o-E.turn+540)%360-180,frame:s.framePng,animate:E.frame===s.framePng}),Ht(x,E.frame);const D=l?l==="fold"?"Folding...":"Unfolding...":r&&a===0&&(!A||z)?A?"Waiting for next frame...":"Waiting for first frame...":null,m=E.animate?"motion-safe:duration-300 motion-safe:ease-in-out":"",p=E.animate?`motion-safe:transition-[width,height] ${m}`:void 0,R=C?H:k,v=C?k:H;let b;e[14]!==R||e[15]!==v?(b={width:R,height:v,position:"relative",flexShrink:0},e[14]=R,e[15]=v,e[16]=b):b=e[16];const G=E.animate?`cursor-default motion-safe:transition-transform ${m}`:"cursor-default",M=`translate(-50%, -50%) rotate(${E.deg}deg)`;let P;e[17]!==H||e[18]!==k||e[19]!==M?(P={position:"absolute",top:"50%",left:"50%",width:k,height:H,transform:M,transformOrigin:"center center"},e[17]=H,e[18]=k,e[19]=M,e[20]=P):P=e[20];const ne=`data:image/png;base64,${s.framePng}`;let ie;e[21]===Symbol.for("react.memo_cache_sentinel")?(ie={position:"absolute",top:0,left:0,zIndex:2,width:"100%",height:"100%",display:"block",pointerEvents:"none",userSelect:"none"},e[21]=ie):ie=e[21];let q;e[22]!==ne?(q=S.jsx("img",{src:ne,style:ie,draggable:!1,alt:""}),e[22]=ne,e[23]=q):q=e[23];const oe=A?"visible":"hidden";let J;e[24]!==_||e[25]!==oe?(J={position:"absolute",zIndex:3,..._,backgroundColor:"#010101",cursor:"none",visibility:oe},e[24]=_,e[25]=oe,e[26]=J):J=e[26];let j;e[27]!==h||e[28]!==J?(j=S.jsx("canvas",{ref:h,style:J}),e[27]=h,e[28]=J,e[29]=j):j=e[29];let L;e[30]!==A||e[31]!==_?(L=!A&&S.jsx("div",{className:"absolute overflow-hidden",style:{zIndex:3,..._},children:S.jsx("div",{className:"absolute inset-0 animate-pulse bg-zinc-700"})}),e[30]=A,e[31]=_,e[32]=L):L=e[32];let re;e[33]!==A||e[34]!==_||e[35]!==o||e[36]!==D?(re=D&&S.jsxs("div",{"data-testid":"screen-waiting",className:"absolute overflow-hidden pointer-events-none flex items-center justify-center",style:{zIndex:8,..._},children:[A&&S.jsx("div",{"aria-hidden":"true",className:"absolute inset-0 bg-black/60 bg-screen-shimmer bg-[length:200%_100%] animate-screen-shimmer motion-reduce:animate-none"}),S.jsx("span",{className:"relative text-sm text-white whitespace-nowrap",style:{transform:`rotate(${-o}deg)`},children:D})]}),e[33]=A,e[34]=_,e[35]=o,e[36]=D,e[37]=re):re=e[37];let V;if(e[38]!==c||e[39]!==s.buttons||e[40]!==s.compositeHeight||e[41]!==s.compositeWidth||e[42]!==T||e[43]!==F){let Z;e[45]!==c||e[46]!==s.compositeHeight||e[47]!==s.compositeWidth||e[48]!==T||e[49]!==F?(Z=(w,ce)=>{const we=(c==null?void 0:c.flashed)===w.name,ee=(c==null?void 0:c.hovered)===w.name,K=w.anchor==="top",me=Ie(w),te=me.top/s.compositeHeight*100,ye=w.buttonH/s.compositeHeight*100,de=w.buttonW/s.compositeWidth*100,fe=w.buttonW/2,le=me.left/s.compositeWidth*100,he=(2*w.rolloverOffset.x-w.normalOffset.x-fe)/s.compositeWidth*100,Ee=w.rolloverOffset.x/s.compositeWidth*100,ge=te,ue=K?(2*w.rolloverOffset.y-w.normalOffset.y)/s.compositeHeight*100:0,xe=w.onTop?4:1,se=T[ce];return S.jsxs(y.Fragment,{children:[c&&S.jsx("div",{"data-frame-button":w.name,"aria-hidden":"true",onPointerDown:ae=>c.onPress(w.name,ae),onPointerEnter:()=>c.onHoverChange(w.name),onPointerLeave:()=>c.onHoverChange(ae=>ae===w.name?null:ae),style:{position:"absolute",zIndex:6,cursor:"pointer",left:`${se.left/s.compositeWidth*100}%`,top:`${se.top/s.compositeHeight*100}%`,width:`${(se.right-se.left)/s.compositeWidth*100}%`,height:`${(se.bottom-se.top)/s.compositeHeight*100}%`}}),w.buttonPng&&S.jsx("img",{src:`data:image/png;base64,${w.buttonPng}`,style:{position:"absolute",zIndex:xe,top:`${K&&ee?ue:te}%`,left:`${K?le:ee?he:le}%`,width:`${de}%`,height:`${ye}%`,transition:K?"top 0.15s ease":"left 0.15s ease",pointerEvents:"none",userSelect:"none"},draggable:!1,alt:""}),we&&w.pressedPng&&w.pressedRect&&S.jsx("img",{src:`data:image/png;base64,${w.pressedPng}`,style:{position:"absolute",zIndex:w.onTop?3:1,left:`${K?le:ee?he:le}%`,top:`${K&&ee?ue:te}%`,width:`${w.pressedRect.width/s.compositeWidth*100}%`,height:`${w.pressedRect.height/s.compositeHeight*100}%`,pointerEvents:"none",userSelect:"none"},draggable:!1,alt:""}),ee&&S.jsx("div",{className:"bg-foreground/85 text-background text-[11px] px-[7px] py-1.5 rounded-lg whitespace-nowrap pointer-events-none",style:{position:"absolute",zIndex:5,left:`${Ee}%`,top:`${ge}%`,transform:"translate(-50%, calc(-100% - 8px))"},children:F[ce]})]},w.name)},e[45]=c,e[46]=s.compositeHeight,e[47]=s.compositeWidth,e[48]=T,e[49]=F,e[50]=Z):Z=e[50],V=s.buttons.map(Z),e[38]=c,e[39]=s.buttons,e[40]=s.compositeHeight,e[41]=s.compositeWidth,e[42]=T,e[43]=F,e[44]=V}else V=e[44];let B;e[51]!==f||e[52]!==x||e[53]!==u||e[54]!==G||e[55]!==P||e[56]!==q||e[57]!==j||e[58]!==L||e[59]!==re||e[60]!==V?(B=S.jsxs("div",{ref:x,className:G,style:P,...f,children:[q,j,L,u,re,V]}),e[51]=f,e[52]=x,e[53]=u,e[54]=G,e[55]=P,e[56]=q,e[57]=j,e[58]=L,e[59]=re,e[60]=V,e[61]=B):B=e[61];let X;return e[62]!==d||e[63]!==U||e[64]!==B||e[65]!==p||e[66]!==b?(X=S.jsxs("div",{ref:U,className:p,style:b,children:[B,d]}),e[62]=d,e[63]=U,e[64]=B,e[65]=p,e[66]=b,e[67]=X):X=e[67],X}const Nt=720,Wt=4e3,$t=350;function rs(t){const e=pe.c(42),{binaryFrameHandlerRef:n,perfHookRef:s,frameCount:i,screenWidth:o,screenHeight:r,streamRotation:a,cornerRadius:f,userWantsLandscape:c,rotatePending:u,bodyRotation:d,turnsAsked:g}=t,l=g===void 0?0:g,h=d!==void 0,x=y.useRef(null),U=y.useRef(null),A=y.useRef(null),[z,O]=y.useState(!1),[k,H]=y.useState(!1),_=y.useRef(null),[C,N]=y.useState(null),[T,F]=y.useState(!1),I=`${a}:${o??""}:${r??""}`,[W,E]=y.useState(I);W!==I&&(E(I),F(!1));let $,D,m;e[0]===Symbol.for("react.memo_cache_sentinel")?($=()=>H(!0),D=Y=>{O(!0);const Q=_.current;(!Q||Q.width!==Y.width||Q.height!==Y.height)&&(_.current=Y,N(Y),F(!0))},m=Y=>{var be;A.current=Y;const Q=Y.surface;Q.style.display="block",Q.style.width="100%",Q.style.height="100%",Q.style.objectFit="fill",(be=x.current)==null||be.appendChild(Q)},e[0]=$,e[1]=D,e[2]=m):($=e[0],D=e[1],m=e[2]);let p;e[3]!==n||e[4]!==i||e[5]!==s?(p={binaryFrameHandlerRef:n,perfHookRef:s,frameCount:i,onUnsupported:$,onResize:D,onDecoderReady:m},e[3]=n,e[4]=i,e[5]=s,e[6]=p):p=e[6],Ve(p);const R=C?C.width>C.height:null;let v;e[7]!==R||e[8]!==l?(v={asked:l,owed:0,frameLandscape:R,animate:!1},e[7]=R,e[8]=l,e[9]=v):v=e[9];const[b,G]=y.useState(v);if(b.asked!==l||b.frameLandscape!==R){const Q=b.frameLandscape!==null&&R!==null&&b.frameLandscape!==R&&b.owed>0?1:0,be=Math.max(0,l-b.asked);G({asked:l,owed:b.owed+be-Q,frameLandscape:R,animate:be>0})}const M=h?b.owed:0,[P,ne]=y.useState(!1);let ie;e[10]!==M?(ie=()=>{if(M===0)return;const Y=setTimeout(()=>{G(kt),ne(!0)},Wt);return()=>clearTimeout(Y)},e[10]=M,e[11]=ie):ie=e[11];let q;e[12]!==M||e[13]!==l?(q=[M,l],e[12]=M,e[13]=l,e[14]=q):q=e[14],y.useEffect(ie,q);let oe,J;e[15]!==P?(J=()=>{if(!P)return;const Y=setTimeout(()=>ne(!1),$t);return()=>clearTimeout(Y)},oe=[P],e[15]=P,e[16]=oe,e[17]=J):(oe=e[16],J=e[17]),y.useEffect(J,oe);const j=o&&r?{width:o,height:r}:null,L=h?C??(j?Ae(j.width,j.height,a):null):j??C,re=L?L.width>L.height:!1,V=!h&&c&&!re,B=h?0:gt(a,V),X=h?a:0,Z=y.useRef(0);let w,ce;e[18]!==X?(w=()=>{Z.current=X},ce=[X],e[18]=X,e[19]=w,e[20]=ce):(w=e[19],ce=e[20]),y.useLayoutEffect(w,ce);const we=y.useRef(!1);let ee,K;e[21]!==V?(ee=()=>{we.current=V},K=[V],e[21]=V,e[22]=ee,e[23]=K):(ee=e[22],K=e[23]),y.useLayoutEffect(ee,K);const me=L?Math.min(1,Nt/Math.max(L.width,L.height)):.3,te=L?Math.round(L.width*me):324,ye=L?Math.round(L.height*me):720,de=V?ye:te,fe=V?te:ye,le=o&&r?Math.max(o,r):0,he=f==null?22:Math.round(h&&o&&le?f*o*Math.max(te,ye)/le:f*te),Ee=xt(C,j,a),ge=h?!0:Ee,ue=yt({ready:z,aspectAgrees:ge,frameIsAhead:T,rotating:u}),xe=mt(B,de,fe),se=`rotate(${B}deg)`,ae=ue?"visible":"hidden";let Re;e[24]!==xe||e[25]!==se||e[26]!==ae?(Re={position:"absolute",...xe,transform:se,transformOrigin:"center center",visibility:ae,cursor:"none"},e[24]=xe,e[25]=se,e[26]=ae,e[27]=Re):Re=e[27];const Se=Re,_e=M*90,Te=M!==0||P;let ve;return e[28]!==h||e[29]!==Se||e[30]!==fe||e[31]!==de||e[32]!==k||e[33]!==ge||e[34]!==ue||e[35]!==he||e[36]!==X||e[37]!==b.animate||e[38]!==_e||e[39]!==Te||e[40]!==B?(ve={surfaceHostRef:x,containerRef:U,decoderRef:A,videoSizeRef:_,needsCSSRotationRef:we,screenTurnRef:Z,screenTurn:X,bodyMode:h,decoderUnsupported:k,totalTurn:B,containerW:de,containerH:fe,screenRadius:he,frameMatchesScreen:ge,pictureVisible:ue,canvasStyle:Se,spinDeg:_e,spinAnimates:b.animate,spinning:Te},e[28]=h,e[29]=Se,e[30]=fe,e[31]=de,e[32]=k,e[33]=ge,e[34]=ue,e[35]=he,e[36]=X,e[37]=b.animate,e[38]=_e,e[39]=Te,e[40]=B,e[41]=ve):ve=e[41],ve}function kt(t){return{...t,owed:0,animate:!0}}function as(t){const e=pe.c(32),{screen:n,deviceReady:s,posturePending:i,surfaceHandlers:o,overlay:r}=t,{surfaceHostRef:a,containerRef:f,decoderUnsupported:c,containerW:u,containerH:d,screenRadius:g,frameMatchesScreen:l,pictureVisible:h,canvasStyle:x,spinDeg:U,spinAnimates:A}=n,z=u+24,O=d+24,k=U%180===90,H=A?"motion-safe:duration-300 motion-safe:ease-in-out":"",_=A?`motion-safe:transition-[width,height] ${H}`:void 0,C=k?O:z,N=k?z:O;let T;e[0]!==C||e[1]!==N?(T={width:C,height:N,position:"relative",flexShrink:0},e[0]=C,e[1]=N,e[2]=T):T=e[2];const F=A?`motion-safe:transition-transform ${H}`:void 0,I=`${g+12}px`,W=`translate(-50%, -50%) rotate(${U}deg)`;let E;e[3]!==I||e[4]!==W?(E={background:"#1c1c1e",borderRadius:I,padding:"12px",boxShadow:"0 8px 32px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.06)",position:"absolute",top:"50%",left:"50%",transform:W,transformOrigin:"center center"},e[3]=I,e[4]=W,e[5]=E):E=e[5];const $=`${g}px`;let D;e[6]!==d||e[7]!==u||e[8]!==$?(D={width:u,height:d,backgroundColor:"#010101",borderRadius:$,overflow:"hidden"},e[6]=d,e[7]=u,e[8]=$,e[9]=D):D=e[9];let m;e[10]!==x||e[11]!==c||e[12]!==s||e[13]!==l||e[14]!==r||e[15]!==h||e[16]!==i||e[17]!==o||e[18]!==a?(m=!c&&S.jsxs(S.Fragment,{children:[S.jsx("div",{ref:a,style:x,...o}),!h&&S.jsx("div",{className:"absolute inset-0 animate-pulse bg-zinc-700"}),!h&&s&&S.jsx("div",{className:"absolute inset-0 flex items-center justify-center pointer-events-none",children:S.jsx("span",{style:{color:"rgba(255,255,255,0.6)",fontSize:"0.875rem"},children:i||!l?"Changing posture…":"Waiting for stream…"})}),r]}),e[10]=x,e[11]=c,e[12]=s,e[13]=l,e[14]=r,e[15]=h,e[16]=i,e[17]=o,e[18]=a,e[19]=m):m=e[19];let p;e[20]!==f||e[21]!==D||e[22]!==m?(p=S.jsx("div",{ref:f,className:"relative",style:D,children:m}),e[20]=f,e[21]=D,e[22]=m,e[23]=p):p=e[23];let R;e[24]!==p||e[25]!==F||e[26]!==E?(R=S.jsx("div",{className:F,style:E,children:p}),e[24]=p,e[25]=F,e[26]=E,e[27]=R):R=e[27];let v;return e[28]!==_||e[29]!==R||e[30]!==T?(v=S.jsx("div",{className:_,style:T,children:R}),e[28]=_,e[29]=R,e[30]=T,e[31]=v):v=e[31],v}export{as as A,vt as C,bt as H,os as I,Nt as M,$t as S,is as a,Lt as b,Gt as c,Zt as d,es as e,Yt as f,Qt as g,rs as h,qt as i,Kt as j,Jt as k,Ot as l,Bt as m,ns as n,ts as o,Xt as p,Ue as q,ss as r,zt as s,Ae as t,jt as u};
|
|
Binary file
|
|
Binary file
|