@juspay/shooter 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/notifier.cjs +117 -33
- package/.claude/settings.json +14 -14
- package/README.md +116 -84
- package/bin/shooter.cjs +471 -102
- package/build/client/_app/immutable/assets/{0.CM9Hl6d-.css → 0.BhZOCxO4.css} +1 -1
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.br +0 -0
- package/build/client/_app/immutable/assets/0.BhZOCxO4.css.gz +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css +1 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.br +0 -0
- package/build/client/_app/immutable/assets/1.BYutk3aU.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.CAShZ7lQ.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css +1 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.br +0 -0
- package/build/client/_app/immutable/assets/3.DGDHCVnW.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css +1 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.br +0 -0
- package/build/client/_app/immutable/assets/4.BFUut--w.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css +1 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.br +0 -0
- package/build/client/_app/immutable/assets/5.BTOx7yt7.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css +1 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css.br +0 -0
- package/build/client/_app/immutable/assets/6.eZGZN-BF.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css +1 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.br +0 -0
- package/build/client/_app/immutable/assets/7.DwS5ZHBh.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css +1 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CwWbzIL-.css.gz +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css +1 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.br +0 -0
- package/build/client/_app/immutable/assets/Phone.FQEfwCX2.css.gz +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css +1 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.br +0 -0
- package/build/client/_app/immutable/assets/markdown.Dc-OSJWY.css.gz +0 -0
- package/build/client/_app/immutable/assets/xterm.DFuMZ0ql.css.gz +0 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js +1 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.br +0 -0
- package/build/client/_app/immutable/chunks/B-K5Sh65.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js +20 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.br +0 -0
- package/build/client/_app/immutable/chunks/B5NAKyil.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js +1 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8XegpSE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js +6 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.br +0 -0
- package/build/client/_app/immutable/chunks/B8zoBsv3.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js +1 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.br +0 -0
- package/build/client/_app/immutable/chunks/BLszSzTT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js +1 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.br +0 -0
- package/build/client/_app/immutable/chunks/BOYo8yTr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BTGVxaYV.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js +1 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.br +0 -0
- package/build/client/_app/immutable/chunks/BYqGCrTe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BlxrFPDK.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js +1 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bu1aqm5j.js.gz +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js +1 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.br +0 -0
- package/build/client/_app/immutable/chunks/C4mLaWWx.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js +61 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CQjSATpv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js +1 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.br +0 -0
- package/build/client/_app/immutable/chunks/CSoRdFvv.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js +1 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.br +0 -0
- package/build/client/_app/immutable/chunks/CZHsSL_X.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DLu6yJIZ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js +1 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.br +0 -0
- package/build/client/_app/immutable/chunks/DSU1n5N_.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js +1 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.br +0 -0
- package/build/client/_app/immutable/chunks/DVkn4r72.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js +41 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjsDGxCa.js.gz +0 -0
- package/build/client/_app/immutable/chunks/PPVm8Dsz.js.gz +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js +1 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.br +0 -0
- package/build/client/_app/immutable/chunks/UJOiqIYE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js +2 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.br +0 -0
- package/build/client/_app/immutable/chunks/r0JawsZc.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js +2 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Z3zMnuSx.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js +1 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.br +2 -0
- package/build/client/_app/immutable/entry/start.Dd-gIP4y.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js +1 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.D2YR8tTD.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js +1 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.B3m6rO4C.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js +1 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.CyRB2euU.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js +3 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.3yohCM25.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js +1 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DEAcwl7l.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js +4 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.C6bLGWQR.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js +2 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.ByTzlA2D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js +2 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.BPMfwzd2.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/client/favicon.svg.gz +0 -0
- package/build/client/manifest.json +13 -0
- package/build/client/manifest.json.br +0 -0
- package/build/client/manifest.json.gz +0 -0
- package/build/pty-holder.cjs +37 -8
- package/build/server/chunks/0-Vk38tI2J.js +9 -0
- package/build/server/chunks/0-Vk38tI2J.js.map +1 -0
- package/build/server/chunks/1-BvYQX5MR.js +9 -0
- package/build/server/chunks/1-BvYQX5MR.js.map +1 -0
- package/build/server/chunks/2-Cl7R4Qk2.js +9 -0
- package/build/server/chunks/2-Cl7R4Qk2.js.map +1 -0
- package/build/server/chunks/3-Ck7ewhOX.js +9 -0
- package/build/server/chunks/3-Ck7ewhOX.js.map +1 -0
- package/build/server/chunks/4-CnDeRm2Z.js +9 -0
- package/build/server/chunks/4-CnDeRm2Z.js.map +1 -0
- package/build/server/chunks/5-IxitzEvN.js +9 -0
- package/build/server/chunks/5-IxitzEvN.js.map +1 -0
- package/build/server/chunks/6-CyZ3r1iS.js +9 -0
- package/build/server/chunks/6-CyZ3r1iS.js.map +1 -0
- package/build/server/chunks/7-BmI7du46.js +9 -0
- package/build/server/chunks/7-BmI7du46.js.map +1 -0
- package/build/server/chunks/Button-Cs1aE6ka.js +80 -0
- package/build/server/chunks/Button-Cs1aE6ka.js.map +1 -0
- package/build/server/chunks/EmptyState-DDFH1K8g.js +26 -0
- package/build/server/chunks/EmptyState-DDFH1K8g.js.map +1 -0
- package/build/server/chunks/Icon-CEUrotA6.js +36 -0
- package/build/server/chunks/Icon-CEUrotA6.js.map +1 -0
- package/build/server/chunks/Shimmer-DB8W1zt6.js +10 -0
- package/build/server/chunks/Shimmer-DB8W1zt6.js.map +1 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js +39 -0
- package/build/server/chunks/_error.svelte-uCOJNxvr.js.map +1 -0
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js +56 -0
- package/build/server/chunks/_layout.svelte-CtWmEJwe.js.map +1 -0
- package/build/server/chunks/_page.svelte-BcZaKdX9.js +45 -0
- package/build/server/chunks/_page.svelte-BcZaKdX9.js.map +1 -0
- package/build/server/chunks/_page.svelte-BdYynOck.js +85 -0
- package/build/server/chunks/_page.svelte-BdYynOck.js.map +1 -0
- package/build/server/chunks/_page.svelte-BgevQjq1.js +101 -0
- package/build/server/chunks/_page.svelte-BgevQjq1.js.map +1 -0
- package/build/server/chunks/_page.svelte-CVq6tRb3.js +550 -0
- package/build/server/chunks/_page.svelte-CVq6tRb3.js.map +1 -0
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js +651 -0
- package/build/server/chunks/_page.svelte-CxWcQ0Am.js.map +1 -0
- package/build/server/chunks/_page.svelte-DO4oa_LY.js +44 -0
- package/build/server/chunks/_page.svelte-DO4oa_LY.js.map +1 -0
- package/build/server/chunks/{_server.ts-CbDRDIoP.js → _server.ts-BStnNIcq.js} +9 -11
- package/build/server/chunks/_server.ts-BStnNIcq.js.map +1 -0
- package/build/server/chunks/{_server.ts-DRVbgm6k.js → _server.ts-CAxsWKvS.js} +22 -25
- package/build/server/chunks/_server.ts-CAxsWKvS.js.map +1 -0
- package/build/server/chunks/{_server.ts-CPa6DgIt.js → _server.ts-COu0vNpd.js} +6 -6
- package/build/server/chunks/_server.ts-COu0vNpd.js.map +1 -0
- package/build/server/chunks/{_server.ts-C29xzfaw.js → _server.ts-CTpcLUH8.js} +10 -10
- package/build/server/chunks/_server.ts-CTpcLUH8.js.map +1 -0
- package/build/server/chunks/{_server.ts-D4MNi4cD.js → _server.ts-Cf84YIaW.js} +3 -3
- package/build/server/chunks/{_server.ts-D4MNi4cD.js.map → _server.ts-Cf84YIaW.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BL2FGb5Z.js → _server.ts-Ch-6iOHp.js} +99 -53
- package/build/server/chunks/_server.ts-Ch-6iOHp.js.map +1 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js +71 -0
- package/build/server/chunks/_server.ts-CtH0dhUp.js.map +1 -0
- package/build/server/chunks/_server.ts-DB_Kg97c.js +73 -0
- package/build/server/chunks/_server.ts-DB_Kg97c.js.map +1 -0
- package/build/server/chunks/{_server.ts-DfajWaqh.js → _server.ts-DV8zTCF9.js} +7 -9
- package/build/server/chunks/_server.ts-DV8zTCF9.js.map +1 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js +99 -0
- package/build/server/chunks/_server.ts-DYpJImqd.js.map +1 -0
- package/build/server/chunks/{_server.ts-ColfDHW8.js → _server.ts-DYvb9ijZ.js} +21 -10
- package/build/server/chunks/_server.ts-DYvb9ijZ.js.map +1 -0
- package/build/server/chunks/{_server.ts-Cv_OrRuL.js → _server.ts-Deok2y88.js} +209 -34
- package/build/server/chunks/_server.ts-Deok2y88.js.map +1 -0
- package/build/server/chunks/{_server.ts-y9-WYDMa.js → _server.ts-WhTJBEJy.js} +5 -4
- package/build/server/chunks/{_server.ts-y9-WYDMa.js.map → _server.ts-WhTJBEJy.js.map} +1 -1
- package/build/server/chunks/{_server.ts-BjOJsoy4.js → _server.ts-XzT2UHM1.js} +6 -5
- package/build/server/chunks/_server.ts-XzT2UHM1.js.map +1 -0
- package/build/server/chunks/{_server.ts-BgdjBZco.js → _server.ts-tSpgyl1D.js} +7 -5
- package/build/server/chunks/_server.ts-tSpgyl1D.js.map +1 -0
- package/build/server/chunks/{_server.ts-BihKSdj_.js → _server.ts-vekTmWAx.js} +8 -8
- package/build/server/chunks/_server.ts-vekTmWAx.js.map +1 -0
- package/build/server/chunks/{auth-CEgFis71.js → auth-DeCdZ83n.js} +2 -2
- package/build/server/chunks/{auth-CEgFis71.js.map → auth-DeCdZ83n.js.map} +1 -1
- package/build/server/chunks/client-BdGHe_hY.js +25 -0
- package/build/server/chunks/client-BdGHe_hY.js.map +1 -0
- package/build/server/chunks/client2-CCBGA-2V.js +7 -0
- package/build/server/chunks/client2-CCBGA-2V.js.map +1 -0
- package/build/server/chunks/error-DDXB3duW.js +12 -0
- package/build/server/chunks/error-DDXB3duW.js.map +1 -0
- package/build/server/chunks/{exports-CJ0Q5XmL.js → index-DwaY1cAm.js} +1111 -1634
- package/build/server/chunks/index-DwaY1cAm.js.map +1 -0
- package/build/server/chunks/index-server-CrDaL06Y.js +9 -0
- package/build/server/chunks/index-server-CrDaL06Y.js.map +1 -0
- package/build/server/chunks/index2-CgclKpUj.js +58 -0
- package/build/server/chunks/index2-CgclKpUj.js.map +1 -0
- package/build/server/chunks/{library-apns-BHxLmuIx.js → library-apns-BqJbvSKh.js} +4 -4
- package/build/server/chunks/library-apns-BqJbvSKh.js.map +1 -0
- package/build/server/chunks/markdown-W_mTBct0.js +8 -0
- package/build/server/chunks/markdown-W_mTBct0.js.map +1 -0
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js +15 -0
- package/build/server/chunks/opencode-db-path-DcfhJtJy.js.map +1 -0
- package/build/server/chunks/{pty-manager-C0FhBiVq.js → pty-manager-BQVB7IVj.js} +155 -326
- package/build/server/chunks/pty-manager-BQVB7IVj.js.map +1 -0
- package/build/server/chunks/root-DDSnEAZv.js +1171 -0
- package/build/server/chunks/root-DDSnEAZv.js.map +1 -0
- package/build/server/chunks/{shared-server-BDY8jh20.js → shared-server-sSGG17Df.js} +2 -3
- package/build/server/chunks/{shared-server-BDY8jh20.js.map → shared-server-sSGG17Df.js.map} +1 -1
- package/build/server/chunks/state.svelte-hBbXlUak.js +11 -0
- package/build/server/chunks/state.svelte-hBbXlUak.js.map +1 -0
- package/build/server/chunks/stores-DHNzYNpX.js +28 -0
- package/build/server/chunks/stores-DHNzYNpX.js.map +1 -0
- package/build/server/index.js +1085 -2242
- package/build/server/index.js.map +1 -1
- package/build/server/manifest.js +39 -25
- package/build/server/manifest.js.map +1 -1
- package/package.json +32 -9
- package/scripts/fix-generated-types.sh +37 -0
- package/scripts/homebrew/shooter.rb +51 -0
- package/scripts/install.sh +348 -186
- package/scripts/setup.cjs +215 -45
- package/server.ts +114 -71
- package/src/app.css +12 -3
- package/src/app.d.ts +13 -20
- package/src/app.html +3 -2
- package/src/generated/types/API.ts +280 -0
- package/src/generated/types/APN.ts +186 -203
- package/src/generated/types/CLI.ts +18 -25
- package/src/generated/types/Client.ts +589 -0
- package/src/generated/types/Config.ts +53 -0
- package/src/generated/types/Holder.ts +638 -0
- package/src/generated/types/JWT.ts +39 -50
- package/src/generated/types/Notification.ts +426 -0
- package/src/generated/types/OpenCode.ts +356 -0
- package/src/generated/types/Sessions.ts +570 -0
- package/src/generated/types/Terminal.ts +2184 -2071
- package/src/generated/types/WsProtocol.ts +2004 -0
- package/src/generated/types/index.ts +9 -3
- package/src/lib/env.ts +29 -0
- package/src/lib/modules/client/common/cache.ts +10 -2
- package/src/lib/modules/client/common/config-guard.ts +37 -5
- package/src/lib/modules/client/common/error.ts +10 -0
- package/src/lib/modules/client/common/index.ts +6 -5
- package/src/lib/modules/client/common/markdown.ts +22 -1
- package/src/lib/modules/client/common/native-bridge.ts +28 -20
- package/src/lib/modules/client/common/time.ts +13 -11
- package/src/lib/modules/client/terminal/ChatView.svelte +354 -74
- package/src/lib/modules/client/terminal/CommandPalette.svelte +3 -2
- package/src/lib/modules/client/terminal/ConnectionStatus.svelte +7 -1
- package/src/lib/modules/client/terminal/LaunchSheet.svelte +147 -84
- package/src/lib/modules/client/terminal/QuickKeys.svelte +3 -1
- package/src/lib/modules/client/terminal/ShortcutsHelp.svelte +2 -5
- package/src/lib/modules/client/terminal/keyboard-shortcuts.ts +27 -24
- package/src/lib/modules/client/terminal/xterm-wrapper.ts +74 -45
- package/src/lib/modules/server/apn/library-apns.ts +3 -2
- package/src/lib/modules/server/apn/notification-history.ts +2 -13
- package/src/lib/modules/server/apn/notification-sessions.ts +3 -13
- package/src/lib/modules/server/apn/pending-requests.ts +3 -8
- package/src/lib/modules/server/apn/types.ts +5 -4
- package/src/lib/modules/server/cli/index.ts +3 -2
- package/src/lib/modules/server/fcm/fcm-service.ts +8 -6
- package/src/lib/modules/server/sessions/jsonl-parser.ts +3 -3
- package/src/lib/modules/server/sessions/jsonl-reader.ts +86 -26
- package/src/lib/modules/server/sessions/opencode-db-path.ts +26 -0
- package/src/lib/modules/server/sessions/opencode-reader.ts +13 -15
- package/src/lib/modules/server/sessions/process-detector.ts +103 -0
- package/src/lib/modules/server/sessions/types.ts +11 -22
- package/src/lib/modules/server/terminal/holder-client.ts +272 -248
- package/src/lib/modules/server/terminal/opencode-watcher.ts +547 -556
- package/src/lib/modules/server/terminal/pty-holder.cjs +37 -8
- package/src/lib/modules/server/terminal/pty-manager.ts +157 -115
- package/src/lib/modules/server/terminal/session-watcher.ts +6 -4
- package/src/lib/modules/server/terminal/terminal-store.ts +131 -128
- package/src/lib/modules/server/utils/error.ts +9 -0
- package/src/lib/modules/server/ws/events-handler.ts +12 -6
- package/src/lib/modules/server/ws/keepalive.ts +86 -69
- package/src/lib/modules/server/ws/server.ts +43 -37
- package/src/lib/modules/server/ws/session-handler.ts +332 -147
- package/src/lib/modules/server/ws/terminal-handler.ts +29 -17
- package/src/lib/modules/server/ws/ticket-store.ts +29 -26
- package/src/lib/theme.css +30 -0
- package/src/lib/types/config.ts +1 -6
- package/src/routes/+error.svelte +94 -0
- package/src/routes/+layout.svelte +66 -31
- package/src/routes/+page.svelte +25 -22
- package/src/routes/api/debug/+server.ts +3 -1
- package/src/routes/api/device-token/+server.ts +60 -60
- package/src/routes/api/health/+server.ts +81 -73
- package/src/routes/api/notify/+server.ts +115 -68
- package/src/routes/api/qr-config/+server.ts +30 -32
- package/src/routes/api/response/+server.ts +9 -4
- package/src/routes/api/sessions/+server.ts +15 -5
- package/src/routes/api/sessions/connect/+server.ts +125 -0
- package/src/routes/api/sessions/detect/+server.ts +27 -0
- package/src/routes/api/terminals/+server.ts +26 -24
- package/src/routes/api/terminals/[id]/+server.ts +13 -7
- package/src/routes/api/terminals/[id]/paste-image/+server.ts +54 -52
- package/src/routes/api/terminals/[id]/resize/+server.ts +6 -3
- package/src/routes/api/webhook/+server.ts +8 -10
- package/src/routes/api/ws-status/+server.ts +7 -5
- package/src/routes/api/ws-ticket/+server.ts +42 -41
- package/src/routes/config/+page.svelte +149 -75
- package/src/routes/project/+page.svelte +165 -35
- package/src/routes/session/[id]/+page.svelte +479 -283
- package/src/routes/terminals/+page.svelte +58 -45
- package/src/routes/terminals/[id]/+page.svelte +223 -91
- package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.br +0 -0
- package/build/client/_app/immutable/assets/0.CM9Hl6d-.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css +0 -1
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css.br +0 -0
- package/build/client/_app/immutable/assets/3.C0uFg0IS.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css +0 -1
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.br +0 -0
- package/build/client/_app/immutable/assets/4.cJuCkJKZ.css.gz +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css +0 -1
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.br +0 -0
- package/build/client/_app/immutable/assets/5.DRjApZQW.css.gz +0 -0
- package/build/client/_app/immutable/assets/6.AraZrY8I.css +0 -1
- package/build/client/_app/immutable/assets/6.AraZrY8I.css.br +0 -0
- package/build/client/_app/immutable/assets/6.AraZrY8I.css.gz +0 -0
- package/build/client/_app/immutable/assets/7.BCJ1IuMx.css +0 -1
- package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.br +0 -0
- package/build/client/_app/immutable/assets/7.BCJ1IuMx.css.gz +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css +0 -1
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.br +0 -0
- package/build/client/_app/immutable/assets/ChatView.CsdBAOKx.css.gz +0 -0
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css +0 -1
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.br +0 -0
- package/build/client/_app/immutable/assets/markdown.B0b5w2tq.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BNJphC1q.js +0 -56
- package/build/client/_app/immutable/chunks/BNJphC1q.js.br +0 -0
- package/build/client/_app/immutable/chunks/BNJphC1q.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js +0 -1
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bvk7mfPM.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CAokzuPQ.js +0 -1
- package/build/client/_app/immutable/chunks/CAokzuPQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/CAokzuPQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js +0 -1
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.br +0 -0
- package/build/client/_app/immutable/chunks/CGLrx-H5.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CgCpWzEA.js +0 -1
- package/build/client/_app/immutable/chunks/CgCpWzEA.js.br +0 -0
- package/build/client/_app/immutable/chunks/CgCpWzEA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Cjwk_cGO.js +0 -6
- package/build/client/_app/immutable/chunks/Cjwk_cGO.js.br +0 -0
- package/build/client/_app/immutable/chunks/Cjwk_cGO.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CtQ8EED1.js +0 -11
- package/build/client/_app/immutable/chunks/CtQ8EED1.js.br +0 -0
- package/build/client/_app/immutable/chunks/CtQ8EED1.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DERQCisl.js +0 -1
- package/build/client/_app/immutable/chunks/DERQCisl.js.br +0 -0
- package/build/client/_app/immutable/chunks/DERQCisl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DKrg8TQs.js +0 -1
- package/build/client/_app/immutable/chunks/DKrg8TQs.js.br +0 -0
- package/build/client/_app/immutable/chunks/DKrg8TQs.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js +0 -126
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js.br +0 -0
- package/build/client/_app/immutable/chunks/Dkkpz_4D.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DoczjQhA.js +0 -1
- package/build/client/_app/immutable/chunks/DoczjQhA.js.br +0 -0
- package/build/client/_app/immutable/chunks/DoczjQhA.js.gz +0 -0
- package/build/client/_app/immutable/chunks/RpcNruLP.js +0 -2
- package/build/client/_app/immutable/chunks/RpcNruLP.js.br +0 -0
- package/build/client/_app/immutable/chunks/RpcNruLP.js.gz +0 -0
- package/build/client/_app/immutable/chunks/a-St0Zwo.js +0 -1
- package/build/client/_app/immutable/chunks/a-St0Zwo.js.br +0 -0
- package/build/client/_app/immutable/chunks/a-St0Zwo.js.gz +0 -0
- package/build/client/_app/immutable/chunks/bo70OQUZ.js +0 -1
- package/build/client/_app/immutable/chunks/bo70OQUZ.js.br +0 -0
- package/build/client/_app/immutable/chunks/bo70OQUZ.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js +0 -2
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js.br +0 -0
- package/build/client/_app/immutable/entry/app.QvGgdvTI.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BntDNRMC.js +0 -1
- package/build/client/_app/immutable/entry/start.BntDNRMC.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BntDNRMC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js +0 -1
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.CzkdvJ7j.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js +0 -1
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.br +0 -0
- package/build/client/_app/immutable/nodes/1.MG1QhfrI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js +0 -1
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B4MlOSh6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js +0 -3
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DIwYkjDn.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js +0 -1
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.D-cIe70D.js.gz +0 -0
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js +0 -1
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.br +0 -0
- package/build/client/_app/immutable/nodes/5.D7zPRe3L.js.gz +0 -0
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js +0 -2
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js.br +0 -0
- package/build/client/_app/immutable/nodes/6.BB7QE48r.js.gz +0 -0
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js +0 -2
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.br +0 -0
- package/build/client/_app/immutable/nodes/7.D8mqsrZG.js.gz +0 -0
- package/build/client/manifest.webmanifest +0 -1
- package/build/client/registerSW.js +0 -1
- package/build/client/registerSW.js.br +0 -0
- package/build/client/registerSW.js.gz +0 -0
- package/build/client/sw.js +0 -222
- package/build/client/sw.js.br +0 -0
- package/build/client/sw.js.gz +0 -0
- package/build/client/workbox-5119daf5.js +0 -3395
- package/build/client/workbox-5119daf5.js.br +0 -0
- package/build/client/workbox-5119daf5.js.gz +0 -0
- package/build/server/chunks/0-q2IUp76Y.js +0 -9
- package/build/server/chunks/0-q2IUp76Y.js.map +0 -1
- package/build/server/chunks/1-CU50G5wZ.js +0 -9
- package/build/server/chunks/1-CU50G5wZ.js.map +0 -1
- package/build/server/chunks/2-D01t9s8T.js +0 -9
- package/build/server/chunks/2-D01t9s8T.js.map +0 -1
- package/build/server/chunks/3-5PUQ04wC.js +0 -9
- package/build/server/chunks/3-5PUQ04wC.js.map +0 -1
- package/build/server/chunks/4-e7gywnSG.js +0 -9
- package/build/server/chunks/4-e7gywnSG.js.map +0 -1
- package/build/server/chunks/5-CA1SA6KZ.js +0 -9
- package/build/server/chunks/5-CA1SA6KZ.js.map +0 -1
- package/build/server/chunks/6-71H221sV.js +0 -9
- package/build/server/chunks/6-71H221sV.js.map +0 -1
- package/build/server/chunks/7-Bo-vmdyz.js +0 -9
- package/build/server/chunks/7-Bo-vmdyz.js.map +0 -1
- package/build/server/chunks/_layout.svelte-SFHOxs74.js +0 -132
- package/build/server/chunks/_layout.svelte-SFHOxs74.js.map +0 -1
- package/build/server/chunks/_page.svelte-B4w-2wD-.js +0 -120
- package/build/server/chunks/_page.svelte-B4w-2wD-.js.map +0 -1
- package/build/server/chunks/_page.svelte-B_qAXjkh.js +0 -213
- package/build/server/chunks/_page.svelte-B_qAXjkh.js.map +0 -1
- package/build/server/chunks/_page.svelte-CsF1_TRG.js +0 -50
- package/build/server/chunks/_page.svelte-CsF1_TRG.js.map +0 -1
- package/build/server/chunks/_page.svelte-DJC6U-P0.js +0 -68
- package/build/server/chunks/_page.svelte-DJC6U-P0.js.map +0 -1
- package/build/server/chunks/_page.svelte-DQ6HBtsz.js +0 -407
- package/build/server/chunks/_page.svelte-DQ6HBtsz.js.map +0 -1
- package/build/server/chunks/_page.svelte-LbhhjP21.js +0 -148
- package/build/server/chunks/_page.svelte-LbhhjP21.js.map +0 -1
- package/build/server/chunks/_server.ts-BL2FGb5Z.js.map +0 -1
- package/build/server/chunks/_server.ts-BgdjBZco.js.map +0 -1
- package/build/server/chunks/_server.ts-BihKSdj_.js.map +0 -1
- package/build/server/chunks/_server.ts-BjOJsoy4.js.map +0 -1
- package/build/server/chunks/_server.ts-C29xzfaw.js.map +0 -1
- package/build/server/chunks/_server.ts-CPa6DgIt.js.map +0 -1
- package/build/server/chunks/_server.ts-CbDRDIoP.js.map +0 -1
- package/build/server/chunks/_server.ts-Cl1OEWL4.js +0 -54
- package/build/server/chunks/_server.ts-Cl1OEWL4.js.map +0 -1
- package/build/server/chunks/_server.ts-ColfDHW8.js.map +0 -1
- package/build/server/chunks/_server.ts-Cv_OrRuL.js.map +0 -1
- package/build/server/chunks/_server.ts-DRVbgm6k.js.map +0 -1
- package/build/server/chunks/_server.ts-DfajWaqh.js.map +0 -1
- package/build/server/chunks/client-CxCatAKr.js +0 -255
- package/build/server/chunks/client-CxCatAKr.js.map +0 -1
- package/build/server/chunks/error.svelte-BqdwMWdK.js +0 -26
- package/build/server/chunks/error.svelte-BqdwMWdK.js.map +0 -1
- package/build/server/chunks/exports-CJ0Q5XmL.js.map +0 -1
- package/build/server/chunks/index2-DAxIoAO-.js +0 -36
- package/build/server/chunks/index2-DAxIoAO-.js.map +0 -1
- package/build/server/chunks/jsonl-parser-dmZU_Hyu.js +0 -137
- package/build/server/chunks/jsonl-parser-dmZU_Hyu.js.map +0 -1
- package/build/server/chunks/library-apns-BHxLmuIx.js.map +0 -1
- package/build/server/chunks/markdown-Bxrl3cCF.js +0 -1241
- package/build/server/chunks/markdown-Bxrl3cCF.js.map +0 -1
- package/build/server/chunks/pty-manager-C0FhBiVq.js.map +0 -1
- package/build/server/chunks/stores-D0HorpgL.js +0 -36
- package/build/server/chunks/stores-D0HorpgL.js.map +0 -1
|
@@ -1,305 +1,288 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
isJSON,
|
|
3
|
+
decodeString,
|
|
4
|
+
_decodeString,
|
|
5
|
+
decodeNumber,
|
|
6
|
+
_decodeNumber,
|
|
7
|
+
decodeBoolean,
|
|
8
|
+
_decodeBoolean,
|
|
9
|
+
} from 'type-decoder';
|
|
2
10
|
|
|
3
11
|
/**
|
|
4
|
-
* @type {
|
|
5
|
-
* @description
|
|
12
|
+
* @type { ErrorResponse }
|
|
13
|
+
* @description Full error response from APNs
|
|
6
14
|
*/
|
|
7
|
-
export
|
|
15
|
+
export type ErrorResponse = {
|
|
8
16
|
/**
|
|
9
|
-
* @description
|
|
17
|
+
* @description Specific error reason code from APNs
|
|
10
18
|
* @type { string }
|
|
11
|
-
* @memberof
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
* @memberof Error
|
|
24
|
-
*/
|
|
25
|
-
status: null | number;
|
|
19
|
+
* @memberof ErrorResponse
|
|
20
|
+
*/
|
|
21
|
+
reason: string | null;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export function decodeErrorResponse(rawInput: unknown): ErrorResponse | null {
|
|
25
|
+
if (isJSON(rawInput)) {
|
|
26
|
+
const decodedReason = decodeString(rawInput['reason']);
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
reason: decodedReason,
|
|
30
|
+
};
|
|
26
31
|
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
27
34
|
|
|
28
35
|
/**
|
|
29
36
|
* @type { ErrorData }
|
|
30
37
|
* @description Error details returned from APNs server
|
|
31
38
|
*/
|
|
32
|
-
export
|
|
39
|
+
export type ErrorData = {
|
|
33
40
|
/**
|
|
34
41
|
* @description Specific error reason code from APNs
|
|
35
42
|
* @type { string }
|
|
36
43
|
* @memberof ErrorData
|
|
37
|
-
|
|
38
|
-
reason:
|
|
39
|
-
|
|
40
|
-
|
|
44
|
+
*/
|
|
45
|
+
reason: string | null;
|
|
46
|
+
};
|
|
41
47
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
*/
|
|
46
|
-
export interface ErrorResponse {
|
|
47
|
-
/**
|
|
48
|
-
* @description Specific error reason code from APNs
|
|
49
|
-
* @type { string }
|
|
50
|
-
* @memberof ErrorResponse
|
|
51
|
-
*/
|
|
52
|
-
reason: null | string;
|
|
53
|
-
}
|
|
48
|
+
export function decodeErrorData(rawInput: unknown): ErrorData | null {
|
|
49
|
+
if (isJSON(rawInput)) {
|
|
50
|
+
const decodedReason = decodeString(rawInput['reason']);
|
|
54
51
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
*/
|
|
59
|
-
export interface LibraryFailedItem {
|
|
60
|
-
/**
|
|
61
|
-
* @description Device token that failed
|
|
62
|
-
* @type { string }
|
|
63
|
-
* @memberof LibraryFailedItem
|
|
64
|
-
*/
|
|
65
|
-
device: string;
|
|
66
|
-
/**
|
|
67
|
-
* @description Error response from APNs
|
|
68
|
-
* @type { ErrorResponse }
|
|
69
|
-
* @memberof LibraryFailedItem
|
|
70
|
-
*/
|
|
71
|
-
response: ErrorResponse | null;
|
|
72
|
-
/**
|
|
73
|
-
* @description HTTP status code
|
|
74
|
-
* @type { number }
|
|
75
|
-
* @memberof LibraryFailedItem
|
|
76
|
-
*/
|
|
77
|
-
status: null | number;
|
|
52
|
+
return {
|
|
53
|
+
reason: decodedReason,
|
|
54
|
+
};
|
|
78
55
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @type { LibrarySentItem }
|
|
83
|
-
* @description Individual sent notification item from apn library
|
|
84
|
-
*/
|
|
85
|
-
export interface LibrarySentItem {
|
|
86
|
-
/**
|
|
87
|
-
* @description Device token that received notification
|
|
88
|
-
* @type { string }
|
|
89
|
-
* @memberof LibrarySentItem
|
|
90
|
-
*/
|
|
91
|
-
device: string;
|
|
56
|
+
return null;
|
|
92
57
|
}
|
|
93
58
|
|
|
94
59
|
/**
|
|
95
60
|
* @type { RawResponse }
|
|
96
61
|
* @description Raw HTTP response from APNs server
|
|
97
62
|
*/
|
|
98
|
-
export
|
|
63
|
+
export type RawResponse = {
|
|
99
64
|
/**
|
|
100
|
-
* @description
|
|
101
|
-
* @type {
|
|
102
|
-
* @memberof RawResponse
|
|
103
|
-
*/
|
|
104
|
-
apnsId: null | string;
|
|
105
|
-
/**
|
|
106
|
-
* @description Response body data (nullable - null on success)
|
|
107
|
-
* @type { ErrorData }
|
|
65
|
+
* @description HTTP status code from APNs
|
|
66
|
+
* @type { number }
|
|
108
67
|
* @memberof RawResponse
|
|
109
|
-
|
|
110
|
-
|
|
68
|
+
*/
|
|
69
|
+
statusCode: number;
|
|
111
70
|
/**
|
|
112
71
|
* @description HTTP response headers from APNs
|
|
113
72
|
* @type { RawResponseHeaders }
|
|
114
73
|
* @memberof RawResponse
|
|
115
|
-
|
|
74
|
+
*/
|
|
116
75
|
headers: RawResponseHeaders;
|
|
117
|
-
|
|
118
|
-
* @description
|
|
119
|
-
* @type {
|
|
76
|
+
/**
|
|
77
|
+
* @description Response body data (nullable - null on success)
|
|
78
|
+
* @type { ErrorData }
|
|
120
79
|
* @memberof RawResponse
|
|
121
|
-
|
|
122
|
-
|
|
80
|
+
*/
|
|
81
|
+
data: ErrorData | null;
|
|
123
82
|
/**
|
|
124
83
|
* @description Whether the notification was successfully sent
|
|
125
84
|
* @type { boolean }
|
|
126
85
|
* @memberof RawResponse
|
|
127
|
-
|
|
86
|
+
*/
|
|
128
87
|
success: boolean;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* @type { RawResponseHeaders }
|
|
133
|
-
* @description HTTP response headers from APNs
|
|
134
|
-
*/
|
|
135
|
-
export type RawResponseHeaders = Record<string, unknown>;
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* @type { SentDetail }
|
|
139
|
-
* @description Details about a successfully sent notification
|
|
140
|
-
*/
|
|
141
|
-
export interface SentDetail {
|
|
142
88
|
/**
|
|
143
|
-
* @description Unique
|
|
144
|
-
* @type { string }
|
|
145
|
-
* @memberof SentDetail
|
|
146
|
-
*/
|
|
147
|
-
'apns-unique-id': null | string;
|
|
148
|
-
/**
|
|
149
|
-
* @description Device token that received the notification
|
|
150
|
-
* @type { string }
|
|
151
|
-
* @memberof SentDetail
|
|
152
|
-
*/
|
|
153
|
-
device: null | string;
|
|
154
|
-
/**
|
|
155
|
-
* @description Delivery status
|
|
89
|
+
* @description Unique identifier for this notification from APNs
|
|
156
90
|
* @type { string }
|
|
157
|
-
* @memberof
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
91
|
+
* @memberof RawResponse
|
|
92
|
+
*/
|
|
93
|
+
apnsId: string | null;
|
|
94
|
+
};
|
|
162
95
|
|
|
163
|
-
export function
|
|
96
|
+
export function decodeRawResponse(rawInput: unknown): RawResponse | null {
|
|
164
97
|
if (isJSON(rawInput)) {
|
|
165
|
-
const
|
|
166
|
-
const
|
|
167
|
-
const
|
|
98
|
+
const decodedStatusCode = decodeNumber(rawInput['statusCode']);
|
|
99
|
+
const decodedHeaders = decodeRawResponseHeaders(rawInput['headers']);
|
|
100
|
+
const decodedData = decodeErrorData(rawInput['data']);
|
|
101
|
+
const decodedSuccess = decodeBoolean(rawInput['success']);
|
|
102
|
+
const decodedApnsId = decodeString(rawInput['apnsId']);
|
|
168
103
|
|
|
169
|
-
if (
|
|
170
|
-
decodedDevice === null
|
|
171
|
-
) {
|
|
104
|
+
if (decodedStatusCode === null || decodedHeaders === null || decodedSuccess === null) {
|
|
172
105
|
return null;
|
|
173
106
|
}
|
|
174
107
|
|
|
175
108
|
return {
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
return null;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
export function decodeErrorData(rawInput: unknown): ErrorData | null {
|
|
185
|
-
if (isJSON(rawInput)) {
|
|
186
|
-
const decodedReason = decodeString(rawInput.reason);
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
return {
|
|
190
|
-
reason: decodedReason
|
|
109
|
+
statusCode: decodedStatusCode,
|
|
110
|
+
headers: decodedHeaders,
|
|
111
|
+
data: decodedData,
|
|
112
|
+
success: decodedSuccess,
|
|
113
|
+
apnsId: decodedApnsId,
|
|
191
114
|
};
|
|
192
115
|
}
|
|
193
116
|
return null;
|
|
194
117
|
}
|
|
195
118
|
|
|
119
|
+
/**
|
|
120
|
+
* @type { RawResponseHeaders }
|
|
121
|
+
* @description HTTP response headers from APNs
|
|
122
|
+
*/
|
|
123
|
+
export type RawResponseHeaders = Record<string, unknown>;
|
|
196
124
|
|
|
197
|
-
export function
|
|
125
|
+
export function decodeRawResponseHeaders(rawInput: unknown): RawResponseHeaders | null {
|
|
198
126
|
if (isJSON(rawInput)) {
|
|
199
|
-
const decodedReason = decodeString(rawInput.reason);
|
|
200
|
-
|
|
201
|
-
|
|
202
127
|
return {
|
|
203
|
-
|
|
128
|
+
...rawInput,
|
|
204
129
|
};
|
|
205
130
|
}
|
|
206
131
|
return null;
|
|
207
132
|
}
|
|
208
133
|
|
|
209
|
-
|
|
134
|
+
/**
|
|
135
|
+
* @type { Error }
|
|
136
|
+
* @description Individual notification error for a specific device
|
|
137
|
+
*/
|
|
138
|
+
export type Error = {
|
|
139
|
+
/**
|
|
140
|
+
* @description Device token that failed to receive notification
|
|
141
|
+
* @type { string }
|
|
142
|
+
* @memberof Error
|
|
143
|
+
*/
|
|
144
|
+
device: string;
|
|
145
|
+
/**
|
|
146
|
+
* @description Error response from APNs
|
|
147
|
+
* @type { ErrorResponse }
|
|
148
|
+
* @memberof Error
|
|
149
|
+
*/
|
|
150
|
+
response: ErrorResponse | null;
|
|
151
|
+
/**
|
|
152
|
+
* @description HTTP status code from APNs
|
|
153
|
+
* @type { number }
|
|
154
|
+
* @memberof Error
|
|
155
|
+
*/
|
|
156
|
+
status: number | null;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export function decodeError(rawInput: unknown): Error | null {
|
|
210
160
|
if (isJSON(rawInput)) {
|
|
211
|
-
const decodedDevice = decodeString(rawInput
|
|
212
|
-
const decodedResponse = decodeErrorResponse(rawInput
|
|
213
|
-
const decodedStatus = decodeNumber(rawInput
|
|
161
|
+
const decodedDevice = decodeString(rawInput['device']);
|
|
162
|
+
const decodedResponse = decodeErrorResponse(rawInput['response']);
|
|
163
|
+
const decodedStatus = decodeNumber(rawInput['status']);
|
|
214
164
|
|
|
215
|
-
if (
|
|
216
|
-
decodedDevice === null
|
|
217
|
-
) {
|
|
165
|
+
if (decodedDevice === null) {
|
|
218
166
|
return null;
|
|
219
167
|
}
|
|
220
168
|
|
|
221
169
|
return {
|
|
222
170
|
device: decodedDevice,
|
|
223
171
|
response: decodedResponse,
|
|
224
|
-
status: decodedStatus
|
|
172
|
+
status: decodedStatus,
|
|
225
173
|
};
|
|
226
174
|
}
|
|
227
175
|
return null;
|
|
228
176
|
}
|
|
229
177
|
|
|
178
|
+
/**
|
|
179
|
+
* @type { SentDetail }
|
|
180
|
+
* @description Details about a successfully sent notification
|
|
181
|
+
*/
|
|
182
|
+
export type SentDetail = {
|
|
183
|
+
/**
|
|
184
|
+
* @description Device token that received the notification
|
|
185
|
+
* @type { string }
|
|
186
|
+
* @memberof SentDetail
|
|
187
|
+
*/
|
|
188
|
+
device: string | null;
|
|
189
|
+
/**
|
|
190
|
+
* @description Delivery status
|
|
191
|
+
* @type { string }
|
|
192
|
+
* @memberof SentDetail
|
|
193
|
+
*/
|
|
194
|
+
status: string | null;
|
|
195
|
+
/**
|
|
196
|
+
* @description Unique APNs identifier for the notification
|
|
197
|
+
* @type { string }
|
|
198
|
+
* @memberof SentDetail
|
|
199
|
+
*/
|
|
200
|
+
'apns-unique-id': string | null;
|
|
201
|
+
};
|
|
230
202
|
|
|
231
|
-
export function
|
|
203
|
+
export function decodeSentDetail(rawInput: unknown): SentDetail | null {
|
|
232
204
|
if (isJSON(rawInput)) {
|
|
233
|
-
const decodedDevice = decodeString(rawInput
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
decodedDevice === null
|
|
237
|
-
) {
|
|
238
|
-
return null;
|
|
239
|
-
}
|
|
205
|
+
const decodedDevice = decodeString(rawInput['device']);
|
|
206
|
+
const decodedStatus = decodeString(rawInput['status']);
|
|
207
|
+
const decodedApnsUniqueId = decodeString(rawInput['apns-unique-id']);
|
|
240
208
|
|
|
241
209
|
return {
|
|
242
|
-
device: decodedDevice
|
|
210
|
+
device: decodedDevice,
|
|
211
|
+
status: decodedStatus,
|
|
212
|
+
'apns-unique-id': decodedApnsUniqueId,
|
|
243
213
|
};
|
|
244
214
|
}
|
|
245
215
|
return null;
|
|
246
216
|
}
|
|
247
217
|
|
|
248
|
-
|
|
218
|
+
/**
|
|
219
|
+
* @type { LibrarySentItem }
|
|
220
|
+
* @description Individual sent notification item from apn library
|
|
221
|
+
*/
|
|
222
|
+
export type LibrarySentItem = {
|
|
223
|
+
/**
|
|
224
|
+
* @description Device token that received notification
|
|
225
|
+
* @type { string }
|
|
226
|
+
* @memberof LibrarySentItem
|
|
227
|
+
*/
|
|
228
|
+
device: string;
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
export function decodeLibrarySentItem(rawInput: unknown): LibrarySentItem | null {
|
|
249
232
|
if (isJSON(rawInput)) {
|
|
250
|
-
const
|
|
251
|
-
const decodedHeaders = decodeRawResponseHeaders(rawInput.headers);
|
|
252
|
-
const decodedData = decodeErrorData(rawInput.data);
|
|
253
|
-
const decodedSuccess = decodeBoolean(rawInput.success);
|
|
254
|
-
const decodedApnsId = decodeString(rawInput.apnsId);
|
|
233
|
+
const decodedDevice = decodeString(rawInput['device']);
|
|
255
234
|
|
|
256
|
-
if (
|
|
257
|
-
decodedStatusCode === null ||
|
|
258
|
-
decodedHeaders === null ||
|
|
259
|
-
decodedSuccess === null
|
|
260
|
-
) {
|
|
235
|
+
if (decodedDevice === null) {
|
|
261
236
|
return null;
|
|
262
237
|
}
|
|
263
238
|
|
|
264
239
|
return {
|
|
265
|
-
|
|
266
|
-
data: decodedData,
|
|
267
|
-
headers: decodedHeaders,
|
|
268
|
-
statusCode: decodedStatusCode,
|
|
269
|
-
success: decodedSuccess
|
|
240
|
+
device: decodedDevice,
|
|
270
241
|
};
|
|
271
242
|
}
|
|
272
243
|
return null;
|
|
273
244
|
}
|
|
274
245
|
|
|
246
|
+
/**
|
|
247
|
+
* @type { LibraryFailedItem }
|
|
248
|
+
* @description Individual failed notification item from apn library
|
|
249
|
+
*/
|
|
250
|
+
export type LibraryFailedItem = {
|
|
251
|
+
/**
|
|
252
|
+
* @description Device token that failed
|
|
253
|
+
* @type { string }
|
|
254
|
+
* @memberof LibraryFailedItem
|
|
255
|
+
*/
|
|
256
|
+
device: string;
|
|
257
|
+
/**
|
|
258
|
+
* @description Error response from APNs
|
|
259
|
+
* @type { ErrorResponse }
|
|
260
|
+
* @memberof LibraryFailedItem
|
|
261
|
+
*/
|
|
262
|
+
response: ErrorResponse | null;
|
|
263
|
+
/**
|
|
264
|
+
* @description HTTP status code
|
|
265
|
+
* @type { number }
|
|
266
|
+
* @memberof LibraryFailedItem
|
|
267
|
+
*/
|
|
268
|
+
status: number | null;
|
|
269
|
+
};
|
|
275
270
|
|
|
276
|
-
export function
|
|
277
|
-
if (isJSON(rawInput)) {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
return {
|
|
281
|
-
...rawInput,
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
return null;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
export function decodeSentDetail(rawInput: unknown): null | SentDetail {
|
|
271
|
+
export function decodeLibraryFailedItem(rawInput: unknown): LibraryFailedItem | null {
|
|
288
272
|
if (isJSON(rawInput)) {
|
|
289
|
-
const decodedDevice = decodeString(rawInput
|
|
290
|
-
const
|
|
291
|
-
const
|
|
273
|
+
const decodedDevice = decodeString(rawInput['device']);
|
|
274
|
+
const decodedResponse = decodeErrorResponse(rawInput['response']);
|
|
275
|
+
const decodedStatus = decodeNumber(rawInput['status']);
|
|
292
276
|
|
|
277
|
+
if (decodedDevice === null) {
|
|
278
|
+
return null;
|
|
279
|
+
}
|
|
293
280
|
|
|
294
281
|
return {
|
|
295
|
-
'apns-unique-id': decodedApnsUniqueId,
|
|
296
282
|
device: decodedDevice,
|
|
297
|
-
|
|
283
|
+
response: decodedResponse,
|
|
284
|
+
status: decodedStatus,
|
|
298
285
|
};
|
|
299
286
|
}
|
|
300
287
|
return null;
|
|
301
288
|
}
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
@@ -1,52 +1,45 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isJSON, decodeBoolean, _decodeBoolean, decodeNumber, _decodeNumber } from 'type-decoder';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @type { Options }
|
|
5
5
|
* @description Configuration options for CLI command execution
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export type Options = {
|
|
8
|
+
/**
|
|
9
|
+
* @description Enable verbose output logging
|
|
10
|
+
* @type { boolean }
|
|
11
|
+
* @memberof Options
|
|
12
|
+
*/
|
|
13
|
+
verbose: boolean;
|
|
8
14
|
/**
|
|
9
15
|
* @description Simulate execution without making changes
|
|
10
16
|
* @type { boolean }
|
|
11
17
|
* @memberof Options
|
|
12
|
-
|
|
18
|
+
*/
|
|
13
19
|
dryRun: boolean;
|
|
14
20
|
/**
|
|
15
21
|
* @description Command timeout in milliseconds
|
|
16
22
|
* @type { number }
|
|
17
23
|
* @memberof Options
|
|
18
|
-
|
|
19
|
-
timeout:
|
|
20
|
-
|
|
21
|
-
* @description Enable verbose output logging
|
|
22
|
-
* @type { boolean }
|
|
23
|
-
* @memberof Options
|
|
24
|
-
*/
|
|
25
|
-
verbose: boolean;
|
|
26
|
-
}
|
|
24
|
+
*/
|
|
25
|
+
timeout: number | null;
|
|
26
|
+
};
|
|
27
27
|
|
|
28
|
-
export function decodeOptions(rawInput: unknown):
|
|
28
|
+
export function decodeOptions(rawInput: unknown): Options | null {
|
|
29
29
|
if (isJSON(rawInput)) {
|
|
30
|
-
const decodedVerbose = decodeBoolean(rawInput
|
|
31
|
-
const decodedDryRun = decodeBoolean(rawInput
|
|
32
|
-
const decodedTimeout = decodeNumber(rawInput
|
|
30
|
+
const decodedVerbose = decodeBoolean(rawInput['verbose']);
|
|
31
|
+
const decodedDryRun = decodeBoolean(rawInput['dryRun']);
|
|
32
|
+
const decodedTimeout = decodeNumber(rawInput['timeout']);
|
|
33
33
|
|
|
34
|
-
if (
|
|
35
|
-
decodedVerbose === null ||
|
|
36
|
-
decodedDryRun === null
|
|
37
|
-
) {
|
|
34
|
+
if (decodedVerbose === null || decodedDryRun === null) {
|
|
38
35
|
return null;
|
|
39
36
|
}
|
|
40
37
|
|
|
41
38
|
return {
|
|
39
|
+
verbose: decodedVerbose,
|
|
42
40
|
dryRun: decodedDryRun,
|
|
43
41
|
timeout: decodedTimeout,
|
|
44
|
-
verbose: decodedVerbose
|
|
45
42
|
};
|
|
46
43
|
}
|
|
47
44
|
return null;
|
|
48
45
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|