9remote 3.0.34 → 3.0.40
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/cli.cjs +163 -161
- package/dist/extension/background.js +137 -88
- package/dist/extension/manifest.json +6 -5
- package/dist/extension/runner.js +606 -0
- package/dist/ptyDaemon.cjs +2 -2
- package/dist/server.cjs +725 -517
- package/dist/ui/assets/index-D_C1NTm1.js +8 -0
- package/dist/ui/index.html +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +4 -4
- package/dist/web/__next._full.txt +17 -17
- package/dist/web/__next._head.txt +4 -4
- package/dist/web/__next._index.txt +10 -10
- package/dist/web/__next._tree.txt +3 -3
- package/dist/web/_next/static/chunks/{0fb7b532.2e7a08a3edb2d789.js → 025762a4.c49f8207624e1667.js} +1 -1
- package/dist/web/_next/static/chunks/101.bfb3898573e4245d.js +1 -0
- package/dist/web/_next/static/chunks/1342.3d5707800ea67dcb.js +1 -0
- package/dist/web/_next/static/chunks/153.d7a869e0874f32e0.js +1 -0
- package/dist/web/_next/static/chunks/1561.8d395206716b3967.js +1 -0
- package/dist/web/_next/static/chunks/{4314.6bbd89507909cad1.js → 1599.ed9aa4b461112c1a.js} +1 -1
- package/dist/web/_next/static/chunks/1694.7c4e72f21d4ce34c.js +1 -0
- package/dist/web/_next/static/chunks/1772-ef73c166e83f5eff.js +1 -0
- package/dist/web/_next/static/chunks/1878.724a4af779f951aa.js +138 -0
- package/dist/web/_next/static/chunks/1879.0252e2bd9153348f.js +1 -0
- package/dist/web/_next/static/chunks/1920-5ead25286846df83.js +1 -0
- package/dist/web/_next/static/chunks/1968-4d2969f0b7112e0b.js +32 -0
- package/dist/web/_next/static/chunks/2004.f975891d8a569296.js +24 -0
- package/dist/web/_next/static/chunks/2094.05efbc3414828946.js +1 -0
- package/dist/web/_next/static/chunks/2209.2ee6023fed2ac7a5.js +1 -0
- package/dist/web/_next/static/chunks/236.88ef102773dd3a91.js +1 -0
- package/dist/web/_next/static/chunks/2369.22023f63f0eaf8db.js +1 -0
- package/dist/web/_next/static/chunks/{6420.bfa7bc86d03dcefc.js → 2401.73a0315a75c7b051.js} +1 -1
- package/dist/web/_next/static/chunks/2427.3a468cdfabd25124.js +1 -0
- package/dist/web/_next/static/chunks/2436.da0ef064f744b8af.js +115 -0
- package/dist/web/_next/static/chunks/2488.87361126358794fd.js +1 -0
- package/dist/web/_next/static/chunks/2561.6c8eb8cf71429d5d.js +36 -0
- package/dist/web/_next/static/chunks/2581.d09a7f19c64e4b97.js +1 -0
- package/dist/web/_next/static/chunks/{8044.5f87392585c9f3e4.js → 2615.86c58079ec7c597c.js} +1 -1
- package/dist/web/_next/static/chunks/2934.0caeb8b2d8b67139.js +1 -0
- package/dist/web/_next/static/chunks/{6274.a3795ca6dacb3d62.js → 3011.fc80a2aad3ef8778.js} +2 -2
- package/dist/web/_next/static/chunks/3255.3c96f02d5eb06783.js +23 -0
- package/dist/web/_next/static/chunks/3284.e56b0102fb9a3920.js +62 -0
- package/dist/web/_next/static/chunks/329-15d3e36af1b2827f.js +1 -0
- package/dist/web/_next/static/chunks/3301.1f7e2bd5ccb55064.js +1 -0
- package/dist/web/_next/static/chunks/3314.b5b5b3cca99d832e.js +1 -0
- package/dist/web/_next/static/chunks/{20154aaa.868648f838e03bf1.js → 33d0405b.71576a1f83124ecd.js} +1 -1
- package/dist/web/_next/static/chunks/3428.8818e0ef88c0e743.js +1 -0
- package/dist/web/_next/static/chunks/3443.8d771dadb470603c.js +1 -0
- package/dist/web/_next/static/chunks/3704.bf80aa0d55f950d0.js +1 -0
- package/dist/web/_next/static/chunks/3916.141fb720bd1eee40.js +148 -0
- package/dist/web/_next/static/chunks/3973.e5c2013e2abeefd3.js +93 -0
- package/dist/web/_next/static/chunks/4065.7616cbd8f37a68e6.js +1 -0
- package/dist/web/_next/static/chunks/4129.a93c19870036f647.js +1 -0
- package/dist/web/_next/static/chunks/{6730.88fc6f2ccc49496c.js → 4171.b0e5c6dc86bc8a5f.js} +1 -1
- package/dist/web/_next/static/chunks/4330.a8740b63075e6886.js +1 -0
- package/dist/web/_next/static/chunks/4378.a0629cfcbc20c406.js +1 -0
- package/dist/web/_next/static/chunks/4553.cad71717d538a2e5.js +1 -0
- package/dist/web/_next/static/chunks/4589.9bd287581ccd378b.js +1 -0
- package/dist/web/_next/static/chunks/4594.53636acacf285911.js +34 -0
- package/dist/web/_next/static/chunks/466.908e4592c2b93997.js +77 -0
- package/dist/web/_next/static/chunks/468.2e48222bf3517040.js +1 -0
- package/dist/web/_next/static/chunks/4712.b7062faa67f544b5.js +1 -0
- package/dist/web/_next/static/chunks/{9675.be4a175f92aa2f26.js → 4724.e0dffedb6972b738.js} +1 -1
- package/dist/web/_next/static/chunks/482.a0b5af31d7354a82.js +1 -0
- package/dist/web/_next/static/chunks/4929.fce0c23972476c66.js +1 -0
- package/dist/web/_next/static/chunks/4964.5a41b2d776aee556.js +1 -0
- package/dist/web/_next/static/chunks/499.cf81a39b9e6ce4a4.js +94 -0
- package/dist/web/_next/static/chunks/{0a7753a9.4cb02a98e2e453b9.js → 4ff7191e.d68cdd8504937de5.js} +1 -1
- package/dist/web/_next/static/chunks/5035.f7175d1037807b62.js +90 -0
- package/dist/web/_next/static/chunks/5198.b8e3a08cb60bc349.js +1 -0
- package/dist/web/_next/static/chunks/5421.430fa3a5488e15a9.js +21 -0
- package/dist/web/_next/static/chunks/{9871-c277aedb0437cb82.js → 556-a8f04c41c5663ee8.js} +1 -1
- package/dist/web/_next/static/chunks/5587-fc5af8c76df14222.js +1 -0
- package/dist/web/_next/static/chunks/5710.b055a101d6b51ff3.js +27 -0
- package/dist/web/_next/static/chunks/5714.122f8cb7296bc9e1.js +1 -0
- package/dist/web/_next/static/chunks/5757.2c157c0924cea1c2.js +1 -0
- package/dist/web/_next/static/chunks/{3346-23aafd4add63869a.js → 5957-3d5d92b58dcc7d4e.js} +1 -1
- package/dist/web/_next/static/chunks/{565f33a6-fd3410bd29f39fdf.js → 5b8e7b36-a2678128cd5bdf5e.js} +1 -1
- package/dist/web/_next/static/chunks/6141-132d206408947c60.js +1 -0
- package/dist/web/_next/static/chunks/{7424.c8c9f85c8ea65885.js → 6181.6bdde6f59e3f2cea.js} +1 -1
- package/dist/web/_next/static/chunks/6221-cf883148bf8a4c1e.js +11 -0
- package/dist/web/_next/static/chunks/{3552.8dd9a3d2c3bcef65.js → 6372.51e578b15d566c0e.js} +2 -2
- package/dist/web/_next/static/chunks/6405.39e8b42a56b88bb5.js +1 -0
- package/dist/web/_next/static/chunks/641.7b1b12ccc56b3b3c.js +1 -0
- package/dist/web/_next/static/chunks/{6647.740ec32a32201eab.js → 6418.a86ca6012f0867ff.js} +1 -1
- package/dist/web/_next/static/chunks/{4924.3f5c77a103ac69a9.js → 6435.6aef0f9f1cc65be6.js} +1 -1
- package/dist/web/_next/static/chunks/6439.f02105d3687113e7.js +1 -0
- package/dist/web/_next/static/chunks/647.527b9a09373aab91.js +1 -0
- package/dist/web/_next/static/chunks/{8115.68d46fb961c724e0.js → 6470.7057ef6894a7f625.js} +16 -16
- package/dist/web/_next/static/chunks/6485.6ae2f3966cc25c9e.js +1 -0
- package/dist/web/_next/static/chunks/{6987.743a63813c6288ce.js → 6512.cc81f46437639a0e.js} +2 -2
- package/dist/web/_next/static/chunks/6520.73f10855f9d4b5a8.js +1 -0
- package/dist/web/_next/static/chunks/668.1ddcf2e38071ae57.js +24 -0
- package/dist/web/_next/static/chunks/6815.8126ae5481c3bfd8.js +1 -0
- package/dist/web/_next/static/chunks/6925-af784cffb03dd330.js +1 -0
- package/dist/web/_next/static/chunks/6e6d0562.6ebb8f7db67bd943.js +122 -0
- package/dist/web/_next/static/chunks/7058.affbacca3457f5a7.js +41 -0
- package/dist/web/_next/static/chunks/7207.72d8a01e77112af2.js +1 -0
- package/dist/web/_next/static/chunks/{4090.441fa61655da9b38.js → 7359.b09680f38f75e105.js} +1 -1
- package/dist/web/_next/static/chunks/7369.a824cc623274cf63.js +1 -0
- package/dist/web/_next/static/chunks/7489.24938d89538cd03e.js +1 -0
- package/dist/web/_next/static/chunks/{9641.f6f2982fc4b4735f.js → 7576.273c3d0faf5c3d02.js} +1 -1
- package/dist/web/_next/static/chunks/7620.5c5935fd937c0e84.js +1 -0
- package/dist/web/_next/static/chunks/7646.1c26e96ee36bc317.js +1 -0
- package/dist/web/_next/static/chunks/7712.cd8c3dc2d794d714.js +1 -0
- package/dist/web/_next/static/chunks/7812.aabc856212c93434.js +1 -0
- package/dist/web/_next/static/chunks/804.38f05d79313a8dcc.js +104 -0
- package/dist/web/_next/static/chunks/8126-0279fc9e17c08aff.js +1 -0
- package/dist/web/_next/static/chunks/820-99036fb63c5462c8.js +1 -0
- package/dist/web/_next/static/chunks/8304.936a74abe6f0a288.js +1 -0
- package/dist/web/_next/static/chunks/8314.7ff9d72cd8613f75.js +226 -0
- package/dist/web/_next/static/chunks/8390.5eda620e73ea6c5c.js +74 -0
- package/dist/web/_next/static/chunks/860.f7885efc630bcfd7.js +1 -0
- package/dist/web/_next/static/chunks/87c73c54-e11922cda838f8cc.js +1 -0
- package/dist/web/_next/static/chunks/887.15090f9a6a142a10.js +1 -0
- package/dist/web/_next/static/chunks/8977.1ab6ed8e2c098cf0.js +1 -0
- package/dist/web/_next/static/chunks/9121-3d281debd0f3e659.js +1 -0
- package/dist/web/_next/static/chunks/9491-6dc334192080d071.js +86 -0
- package/dist/web/_next/static/chunks/951ed0e8.98070dce91103a63.js +1 -0
- package/dist/web/_next/static/chunks/9651.d199fbbbc3de43b8.js +215 -0
- package/dist/web/_next/static/chunks/9692.dd07a90166f5e6ff.js +1 -0
- package/dist/web/_next/static/chunks/{6075.a6b8434732056526.js → 9700.c47024f592537718.js} +1 -1
- package/dist/web/_next/static/chunks/9711.cf7aaa7fa6ec7dd7.js +287 -0
- package/dist/web/_next/static/chunks/9736.63b4a559c8a23186.js +1 -0
- package/dist/web/_next/static/chunks/{bbfbfb6c.069db3c4cc981ed3.js → 98f82933.0c4f9e5e83926351.js} +1 -1
- package/dist/web/_next/static/chunks/{da9a53d6.df25e193f1f5bcae.js → a36ae3fc.d666935373d1f579.js} +4 -4
- package/dist/web/_next/static/chunks/{adcd17ec-9a2791632136b67b.js → ab6c8a12-9dac45de556d8a8d.js} +1 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-9f829d2c4beb1840.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/access/page-45f45ad529e5b691.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/login/page-382072b5b43d3c29.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/ota/page-293c0743bd60f454.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/page-fc676dae451dd646.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/turn/page-2ab33033fc7f0919.js +5 -0
- package/dist/web/_next/static/chunks/app/dev/question/page-bafce0c9fd4e8488.js +1 -0
- package/dist/web/_next/static/chunks/app/download/{page-2811ea822a1e586a.js → page-a65d1c7fcf6397af.js} +1 -1
- package/dist/web/_next/static/chunks/app/layout-f1429d22e935695f.js +1 -0
- package/dist/web/_next/static/chunks/app/login/page-a5dd37d1cbbb394e.js +1 -0
- package/dist/web/_next/static/chunks/app/page-1e67d8a5f3775276.js +22 -0
- package/dist/web/_next/static/chunks/app/workspace/browse/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-d8bb677fa1caa5a7.js +20 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/pair/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/b2b4fb58.d2a067fe7df4a0d0.js +1 -0
- package/dist/web/_next/static/chunks/baeaa4ff-8eac34d2e07d1bb3.js +1 -0
- package/dist/web/_next/static/chunks/{7c89255b.f727562586fa21cc.js → c2d9a0c9.b4e0bb73c2ed317c.js} +1 -1
- package/dist/web/_next/static/chunks/{a012e9f0.7dbb2fe05ec0b816.js → ccfb6294.add4177b76c37868.js} +11 -11
- package/dist/web/_next/static/chunks/{c7ea4e13.6153499d4c2fb1f2.js → db261188.134a04dd616706a4.js} +1 -1
- package/dist/web/_next/static/chunks/framework-59d2d1720fc2b396.js +1 -0
- package/dist/web/_next/static/chunks/main-app-72391b47e9393c1b.js +1 -0
- package/dist/web/_next/static/chunks/main-e10b0dbebb4de0a8.js +5 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-48f06b4c48a1eef3.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/webpack-dd1f7a5ae02e5d84.js +1 -0
- package/dist/web/_next/static/css/{b496025c9cd768cc.css → 15730e9f7c5c55ef.css} +1 -1
- package/dist/web/_next/static/css/1c2cca827fa36d54.css +1 -0
- package/dist/web/_not-found/__next._full.txt +15 -15
- package/dist/web/_not-found/__next._head.txt +4 -4
- package/dist/web/_not-found/__next._index.txt +10 -10
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/web/_not-found/__next._not-found.txt +3 -3
- package/dist/web/_not-found/__next._tree.txt +3 -3
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +15 -15
- package/dist/web/admin/__next._full.txt +17 -17
- package/dist/web/admin/__next._head.txt +4 -4
- package/dist/web/admin/__next._index.txt +10 -10
- package/dist/web/admin/__next._tree.txt +3 -3
- package/dist/web/admin/__next.admin.__PAGE__.txt +4 -4
- package/dist/web/admin/__next.admin.txt +3 -3
- package/dist/web/admin/access/__next._full.txt +17 -17
- package/dist/web/admin/access/__next._head.txt +4 -4
- package/dist/web/admin/access/__next._index.txt +10 -10
- package/dist/web/admin/access/__next._tree.txt +3 -3
- package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +4 -4
- package/dist/web/admin/access/__next.admin.access.txt +3 -3
- package/dist/web/admin/access/__next.admin.txt +3 -3
- package/dist/web/admin/access.html +1 -1
- package/dist/web/admin/access.txt +17 -17
- package/dist/web/admin/login/__next._full.txt +17 -17
- package/dist/web/admin/login/__next._head.txt +4 -4
- package/dist/web/admin/login/__next._index.txt +10 -10
- package/dist/web/admin/login/__next._tree.txt +3 -3
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +4 -4
- package/dist/web/admin/login/__next.admin.login.txt +3 -3
- package/dist/web/admin/login/__next.admin.txt +3 -3
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +17 -17
- package/dist/web/admin/ota/__next._full.txt +17 -17
- package/dist/web/admin/ota/__next._head.txt +4 -4
- package/dist/web/admin/ota/__next._index.txt +10 -10
- package/dist/web/admin/ota/__next._tree.txt +3 -3
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +4 -4
- package/dist/web/admin/ota/__next.admin.ota.txt +3 -3
- package/dist/web/admin/ota/__next.admin.txt +3 -3
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +17 -17
- package/dist/web/admin/turn/__next._full.txt +17 -17
- package/dist/web/admin/turn/__next._head.txt +4 -4
- package/dist/web/admin/turn/__next._index.txt +10 -10
- package/dist/web/admin/turn/__next._tree.txt +3 -3
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +4 -4
- package/dist/web/admin/turn/__next.admin.turn.txt +3 -3
- package/dist/web/admin/turn/__next.admin.txt +3 -3
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +17 -17
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +17 -17
- package/dist/web/dev/question/__next._full.txt +17 -17
- package/dist/web/dev/question/__next._head.txt +4 -4
- package/dist/web/dev/question/__next._index.txt +10 -10
- package/dist/web/dev/question/__next._tree.txt +3 -3
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +4 -4
- package/dist/web/dev/question/__next.dev.question.txt +3 -3
- package/dist/web/dev/question/__next.dev.txt +3 -3
- package/dist/web/dev/question.html +1 -1
- package/dist/web/dev/question.txt +17 -17
- package/dist/web/download/__next._full.txt +16 -16
- package/dist/web/download/__next._head.txt +4 -4
- package/dist/web/download/__next._index.txt +10 -10
- package/dist/web/download/__next._tree.txt +3 -3
- package/dist/web/download/__next.download.__PAGE__.txt +3 -3
- package/dist/web/download/__next.download.txt +3 -3
- package/dist/web/download.html +1 -1
- package/dist/web/download.txt +16 -16
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +17 -17
- package/dist/web/login/__next._full.txt +17 -17
- package/dist/web/login/__next._head.txt +4 -4
- package/dist/web/login/__next._index.txt +10 -10
- package/dist/web/login/__next._tree.txt +3 -3
- package/dist/web/login/__next.login.__PAGE__.txt +4 -4
- package/dist/web/login/__next.login.txt +3 -3
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +17 -17
- package/dist/web/workspace/__next._full.txt +17 -17
- package/dist/web/workspace/__next._head.txt +4 -4
- package/dist/web/workspace/__next._index.txt +10 -10
- package/dist/web/workspace/__next._tree.txt +3 -3
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +2 -2
- package/dist/web/workspace/__next.workspace.txt +5 -5
- package/dist/web/workspace/browse/__next._full.txt +17 -17
- package/dist/web/workspace/browse/__next._head.txt +4 -4
- package/dist/web/workspace/browse/__next._index.txt +10 -10
- package/dist/web/workspace/browse/__next._tree.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +2 -2
- package/dist/web/workspace/browse/__next.workspace.browse.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.txt +5 -5
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +17 -17
- package/dist/web/workspace/editor/__next._full.txt +17 -17
- package/dist/web/workspace/editor/__next._head.txt +4 -4
- package/dist/web/workspace/editor/__next._index.txt +10 -10
- package/dist/web/workspace/editor/__next._tree.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +2 -2
- package/dist/web/workspace/editor/__next.workspace.editor.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.txt +5 -5
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +17 -17
- package/dist/web/workspace/files/__next._full.txt +17 -17
- package/dist/web/workspace/files/__next._head.txt +4 -4
- package/dist/web/workspace/files/__next._index.txt +10 -10
- package/dist/web/workspace/files/__next._tree.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +2 -2
- package/dist/web/workspace/files/__next.workspace.files.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.txt +5 -5
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +17 -17
- package/dist/web/workspace/git/__next._full.txt +17 -17
- package/dist/web/workspace/git/__next._head.txt +4 -4
- package/dist/web/workspace/git/__next._index.txt +10 -10
- package/dist/web/workspace/git/__next._tree.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +2 -2
- package/dist/web/workspace/git/__next.workspace.git.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.txt +5 -5
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +17 -17
- package/dist/web/workspace/mobile/__next._full.txt +17 -17
- package/dist/web/workspace/mobile/__next._head.txt +4 -4
- package/dist/web/workspace/mobile/__next._index.txt +10 -10
- package/dist/web/workspace/mobile/__next._tree.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +2 -2
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.txt +5 -5
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +17 -17
- package/dist/web/workspace/pair/__next._full.txt +17 -17
- package/dist/web/workspace/pair/__next._head.txt +4 -4
- package/dist/web/workspace/pair/__next._index.txt +10 -10
- package/dist/web/workspace/pair/__next._tree.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +2 -2
- package/dist/web/workspace/pair/__next.workspace.pair.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.txt +5 -5
- package/dist/web/workspace/pair.html +1 -1
- package/dist/web/workspace/pair.txt +17 -17
- package/dist/web/workspace/remote/__next._full.txt +17 -17
- package/dist/web/workspace/remote/__next._head.txt +4 -4
- package/dist/web/workspace/remote/__next._index.txt +10 -10
- package/dist/web/workspace/remote/__next._tree.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +2 -2
- package/dist/web/workspace/remote/__next.workspace.remote.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.txt +5 -5
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +17 -17
- package/dist/web/workspace/terminal/default/__next._full.txt +26 -25
- package/dist/web/workspace/terminal/default/__next._head.txt +4 -4
- package/dist/web/workspace/terminal/default/__next._index.txt +10 -10
- package/dist/web/workspace/terminal/default/__next._tree.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +2 -2
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.txt +5 -5
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +26 -25
- package/dist/web/workspace/welcome/__next._full.txt +17 -17
- package/dist/web/workspace/welcome/__next._head.txt +4 -4
- package/dist/web/workspace/welcome/__next._index.txt +10 -10
- package/dist/web/workspace/welcome/__next._tree.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.txt +5 -5
- package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +2 -2
- package/dist/web/workspace/welcome/__next.workspace.welcome.txt +3 -3
- package/dist/web/workspace/welcome.html +1 -1
- package/dist/web/workspace/welcome.txt +17 -17
- package/dist/web/workspace/workspaces/__next._full.txt +17 -17
- package/dist/web/workspace/workspaces/__next._head.txt +4 -4
- package/dist/web/workspace/workspaces/__next._index.txt +10 -10
- package/dist/web/workspace/workspaces/__next._tree.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.txt +5 -5
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +3 -3
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +17 -17
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +17 -17
- package/package.json +1 -1
- package/dist/ui/assets/index-DbuftNJF.js +0 -8
- package/dist/web/_next/static/chunks/1050-b9af41e8856b58c0.js +0 -1
- package/dist/web/_next/static/chunks/1222.a2ce7d7f04241e2a.js +0 -1
- package/dist/web/_next/static/chunks/1228.046ad5fd038f5192.js +0 -1
- package/dist/web/_next/static/chunks/1243.1d11020940b8a88b.js +0 -1
- package/dist/web/_next/static/chunks/132.1ed2fce3a4b6f7ee.js +0 -1
- package/dist/web/_next/static/chunks/133.1106654a28b5afda.js +0 -1
- package/dist/web/_next/static/chunks/1385.086b560acb0d7a68.js +0 -115
- package/dist/web/_next/static/chunks/1642.cac26d30ac331cb4.js +0 -1
- package/dist/web/_next/static/chunks/1733.f06c240b3ef8a428.js +0 -77
- package/dist/web/_next/static/chunks/1750.09ca4eade7a6e5d3.js +0 -1
- package/dist/web/_next/static/chunks/1763.28beedca593b5e19.js +0 -138
- package/dist/web/_next/static/chunks/179.b9e8f385bd414d1c.js +0 -62
- package/dist/web/_next/static/chunks/1838.7c8990f903e3524a.js +0 -215
- package/dist/web/_next/static/chunks/2038.b7c72b442a1b2d92.js +0 -1
- package/dist/web/_next/static/chunks/2112.d72eefbdf81659b3.js +0 -23
- package/dist/web/_next/static/chunks/2125.61c6e4a3541e30ad.js +0 -1
- package/dist/web/_next/static/chunks/2129.61afb2f4ff59e46a.js +0 -24
- package/dist/web/_next/static/chunks/213.f07a816120a320ba.js +0 -1
- package/dist/web/_next/static/chunks/2179.3f55be0b79e3cca7.js +0 -1
- package/dist/web/_next/static/chunks/2180.23585bd3f3308f3a.js +0 -1
- package/dist/web/_next/static/chunks/2264.0fc1474d26067a01.js +0 -1
- package/dist/web/_next/static/chunks/2376.ed6302a91a9de1ae.js +0 -36
- package/dist/web/_next/static/chunks/2545.3ff192a933baf11e.js +0 -1
- package/dist/web/_next/static/chunks/2620.d17f4fac0eec88a5.js +0 -1
- package/dist/web/_next/static/chunks/2847.d3124853ca727b78.js +0 -1
- package/dist/web/_next/static/chunks/2849.360e2c64521fa795.js +0 -1
- package/dist/web/_next/static/chunks/3189.64c6546d621eec0b.js +0 -1
- package/dist/web/_next/static/chunks/3348-9ef29f9cedf6c0df.js +0 -1
- package/dist/web/_next/static/chunks/3429.98d7e79ff6d2a6ce.js +0 -1
- package/dist/web/_next/static/chunks/3514.9079bf49bb3e05c9.js +0 -1
- package/dist/web/_next/static/chunks/3606.b59e695fd05b4eb3.js +0 -74
- package/dist/web/_next/static/chunks/3736.4a5662ceeecc6acb.js +0 -94
- package/dist/web/_next/static/chunks/392.842b338137824bb8.js +0 -1
- package/dist/web/_next/static/chunks/4136-d7c1ff2da0833b42.js +0 -86
- package/dist/web/_next/static/chunks/4300-7d6c9b3328075562.js +0 -1
- package/dist/web/_next/static/chunks/4303.54c4aa0b89834fc6.js +0 -1
- package/dist/web/_next/static/chunks/4551.d0d6723cacfb90b9.js +0 -226
- package/dist/web/_next/static/chunks/4566.d8e009823b8647d1.js +0 -90
- package/dist/web/_next/static/chunks/4643.ddf3ea3a760e73a5.js +0 -1
- package/dist/web/_next/static/chunks/4930.42e564644c94a93b.js +0 -1
- package/dist/web/_next/static/chunks/5155.d7e8db52ab4c95e0.js +0 -27
- package/dist/web/_next/static/chunks/5158-267908d069475cdc.js +0 -32
- package/dist/web/_next/static/chunks/543.5636e97aa68eb9c8.js +0 -41
- package/dist/web/_next/static/chunks/5506.98304a1821200439.js +0 -1
- package/dist/web/_next/static/chunks/5622.5ead5e748ecedbd1.js +0 -1
- package/dist/web/_next/static/chunks/5708.22b4531ceebf3eca.js +0 -1
- package/dist/web/_next/static/chunks/5788-d4b8dc2ab68396b6.js +0 -1
- package/dist/web/_next/static/chunks/5804.ff72a927135eb74c.js +0 -93
- package/dist/web/_next/static/chunks/588.78e2528ff24df85c.js +0 -287
- package/dist/web/_next/static/chunks/6001.e5bcb28bb9ce6571.js +0 -1
- package/dist/web/_next/static/chunks/6180.82fa683aa16f21df.js +0 -1
- package/dist/web/_next/static/chunks/6276.aa48f74970f7ef3d.js +0 -1
- package/dist/web/_next/static/chunks/6419.99aa173d83f20370.js +0 -1
- package/dist/web/_next/static/chunks/6552-cebe84e4399a184f.js +0 -1
- package/dist/web/_next/static/chunks/6739.22a05398bfd34922.js +0 -1
- package/dist/web/_next/static/chunks/674.97a7237f011fb986.js +0 -1
- package/dist/web/_next/static/chunks/6742.bc3783b9784ead96.js +0 -1
- package/dist/web/_next/static/chunks/7202.dad90ce4a1d78f67.js +0 -1
- package/dist/web/_next/static/chunks/7233.0f252f6c1cce8058.js +0 -1
- package/dist/web/_next/static/chunks/7248.d89bf328a0dc1b4c.js +0 -1
- package/dist/web/_next/static/chunks/7263.6f224c3924155294.js +0 -1
- package/dist/web/_next/static/chunks/7341.6958eac888a96823.js +0 -34
- package/dist/web/_next/static/chunks/7507.28a3807b5d02a5c1.js +0 -1
- package/dist/web/_next/static/chunks/7811.19082afa63eb73ba.js +0 -1
- package/dist/web/_next/static/chunks/7853.d01982fa0afc1ee2.js +0 -24
- package/dist/web/_next/static/chunks/7908.432ab9feeb9ae756.js +0 -1
- package/dist/web/_next/static/chunks/7960.026e07028dd25edb.js +0 -1
- package/dist/web/_next/static/chunks/7967.6c62be01fad1603c.js +0 -1
- package/dist/web/_next/static/chunks/8054.feeb01b8acdb31d4.js +0 -1
- package/dist/web/_next/static/chunks/817.cd0f4d221eca4c8b.js +0 -104
- package/dist/web/_next/static/chunks/8207-45554e2570bc59e6.js +0 -1
- package/dist/web/_next/static/chunks/8467.290e9bde34b58e7c.js +0 -1
- package/dist/web/_next/static/chunks/8495.d6cea1be03635fa8.js +0 -148
- package/dist/web/_next/static/chunks/8638.237712645dcdcb8a.js +0 -1
- package/dist/web/_next/static/chunks/8669-8d1fb8dce08c886d.js +0 -11
- package/dist/web/_next/static/chunks/8716.1ad6febb58e8560e.js +0 -1
- package/dist/web/_next/static/chunks/8762-cb470d05070f5ead.js +0 -1
- package/dist/web/_next/static/chunks/8839.1ad64faf06fb4a33.js +0 -1
- package/dist/web/_next/static/chunks/8922-8660f73e9cd42406.js +0 -1
- package/dist/web/_next/static/chunks/910.43be9c3be85c7fa0.js +0 -21
- package/dist/web/_next/static/chunks/925.fe600c6039a3201d.js +0 -1
- package/dist/web/_next/static/chunks/9259.c450f561db04037d.js +0 -1
- package/dist/web/_next/static/chunks/9299.83236781dfa74eb0.js +0 -1
- package/dist/web/_next/static/chunks/9387.96263a2d1602a078.js +0 -1
- package/dist/web/_next/static/chunks/9568-0bfadca4fcb105aa.js +0 -1
- package/dist/web/_next/static/chunks/9860.05fa134ae44699e0.js +0 -1
- package/dist/web/_next/static/chunks/9b87412a.d2cfae4121762dec.js +0 -122
- package/dist/web/_next/static/chunks/a096f98a-5a93977f5f5de413.js +0 -1
- package/dist/web/_next/static/chunks/ab1da478.d051e56375dab6d8.js +0 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/_not-found/page-877523282abd5a7c.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/access/page-65febd13b3d1fc91.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/login/page-8ff8150184b7ccaa.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/ota/page-d8766baa3680522d.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/page-6237b1487c05f33e.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/turn/page-6a6b695b67d59451.js +0 -5
- package/dist/web/_next/static/chunks/app/dev/question/page-bdedfcfce7a3c516.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-a0e78c8427f97e4f.js +0 -1
- package/dist/web/_next/static/chunks/app/login/page-edc7457ddecf9262.js +0 -1
- package/dist/web/_next/static/chunks/app/page-b76772608a876c23.js +0 -22
- package/dist/web/_next/static/chunks/app/workspace/browse/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/editor/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/files/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/git/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-0fd9ea03182e9c89.js +0 -15
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/pair/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/remote/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/c7879cf7-0d16fce1674078f9.js +0 -1
- package/dist/web/_next/static/chunks/cdcce140.7a440644c3dd52b8.js +0 -1
- package/dist/web/_next/static/chunks/framework-42053c69543a55f9.js +0 -1
- package/dist/web/_next/static/chunks/main-255c95c36766ce86.js +0 -5
- package/dist/web/_next/static/chunks/main-app-1831d4f902c3fcb9.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-76800531999827bd.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/webpack-f3500fd1fae71c88.js +0 -1
- package/dist/web/_next/static/css/1b307dedbb687210.css +0 -1
- package/dist/web/proxy.html +0 -179
- package/dist/web/sw-site.js +0 -283
- package/dist/web/swBridgeClaim.js +0 -57
- /package/dist/web/_next/static/{DdbafQkcX_ZaKRMjMeNKp → 55Oo1FQxj9HIxB7QE1XWG}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{DdbafQkcX_ZaKRMjMeNKp → 55Oo1FQxj9HIxB7QE1XWG}/_ssgManifest.js +0 -0
- /package/dist/web/_next/static/chunks/{1311.8c6b8930e22ceea0.js → 6153.8c6b8930e22ceea0.js} +0 -0
- /package/dist/web/_next/static/chunks/{3692.8c6b8930e22ceea0.js → 8534.8c6b8930e22ceea0.js} +0 -0
package/dist/web/sw-site.js
DELETED
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
// Site proxy service worker: serves /browse/<port>/... documents via transport bridge.
|
|
2
|
-
|
|
3
|
-
importScripts("/swBridgeClaim.js");
|
|
4
|
-
|
|
5
|
-
const BROWSE_RE = /^\/browse\/(\d{1,5})(\/.*)?$/;
|
|
6
|
-
const BRIDGE_TIMEOUT_MS = 60000;
|
|
7
|
-
const BRIDGE_DISCOVER_MS = 3000;
|
|
8
|
-
const MAX_REQUEST_BODY_BYTES = 512 * 1024;
|
|
9
|
-
const REDIRECT_STATUSES = [301, 302, 303, 307, 308];
|
|
10
|
-
|
|
11
|
-
// Restrict framing and origin communication via Content Security Policy.
|
|
12
|
-
const SITE_CSP = [
|
|
13
|
-
"connect-src 'self'",
|
|
14
|
-
"form-action 'self'",
|
|
15
|
-
`frame-ancestors 'self' ${appOriginsFor(self.location.hostname, self.location.port)}`.trim(),
|
|
16
|
-
"base-uri 'self'"
|
|
17
|
-
].join("; ");
|
|
18
|
-
|
|
19
|
-
let bridgeClient = null;
|
|
20
|
-
let bridgeDiscover = null;
|
|
21
|
-
let bridgeResolve = null;
|
|
22
|
-
let reqCounter = 0;
|
|
23
|
-
|
|
24
|
-
self.addEventListener("install", (event) => event.waitUntil(self.skipWaiting()));
|
|
25
|
-
self.addEventListener("activate", (event) => event.waitUntil(self.clients.claim()));
|
|
26
|
-
|
|
27
|
-
self.addEventListener("message", (event) => {
|
|
28
|
-
const msg = event.data;
|
|
29
|
-
if (!msg || typeof msg !== "object") return;
|
|
30
|
-
if (msg.type === "bridge-hello") {
|
|
31
|
-
// Verify source is shell to prevent cross-site privilege escalation.
|
|
32
|
-
if (!canBeBridge(event.source?.url, self.location.origin)) return;
|
|
33
|
-
bridgeClient = event.source;
|
|
34
|
-
if (bridgeResolve) {
|
|
35
|
-
const resolve = bridgeResolve;
|
|
36
|
-
bridgeDiscover = null;
|
|
37
|
-
bridgeResolve = null;
|
|
38
|
-
resolve();
|
|
39
|
-
}
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
function base64ToBytes(b64) {
|
|
45
|
-
const bin = atob(b64 || "");
|
|
46
|
-
const out = new Uint8Array(bin.length);
|
|
47
|
-
for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
|
|
48
|
-
return out;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function bytesToBase64(buffer) {
|
|
52
|
-
const bytes = new Uint8Array(buffer);
|
|
53
|
-
let bin = "";
|
|
54
|
-
const CHUNK = 0x8000;
|
|
55
|
-
for (let i = 0; i < bytes.length; i += CHUNK) {
|
|
56
|
-
bin += String.fromCharCode.apply(null, bytes.subarray(i, i + CHUNK));
|
|
57
|
-
}
|
|
58
|
-
return btoa(bin);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function discoverBridge() {
|
|
62
|
-
if (bridgeClient) return Promise.resolve();
|
|
63
|
-
if (!bridgeDiscover) {
|
|
64
|
-
bridgeDiscover = new Promise((resolve) => {
|
|
65
|
-
bridgeResolve = resolve;
|
|
66
|
-
setTimeout(() => {
|
|
67
|
-
bridgeDiscover = null;
|
|
68
|
-
bridgeResolve = null;
|
|
69
|
-
resolve();
|
|
70
|
-
}, BRIDGE_DISCOVER_MS);
|
|
71
|
-
});
|
|
72
|
-
self.clients.matchAll({ type: "window", includeUncontrolled: true }).then((clients) => {
|
|
73
|
-
for (const client of clients) {
|
|
74
|
-
if (canBeBridge(client.url, self.location.origin)) client.postMessage({ type: "sw-hello" });
|
|
75
|
-
}
|
|
76
|
-
}).catch(() => {});
|
|
77
|
-
}
|
|
78
|
-
return bridgeDiscover;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Injected script rewriting absolute links/forms into /browse/<port> scope.
|
|
82
|
-
function inScopeScript(port) {
|
|
83
|
-
return `<script data-9remote="site-proxy">
|
|
84
|
-
(function () {
|
|
85
|
-
if (window.__nineRemoteSiteProxy) return;
|
|
86
|
-
window.__nineRemoteSiteProxy = true;
|
|
87
|
-
var BASE = "/browse/${port}";
|
|
88
|
-
function scoped(path) {
|
|
89
|
-
if (!path || path.indexOf(BASE + "/") === 0 || path === BASE) return null;
|
|
90
|
-
return path.charAt(0) === "/" ? BASE + path : null;
|
|
91
|
-
}
|
|
92
|
-
// Bubble phase allows SPA routers to handle owned routes first.
|
|
93
|
-
document.addEventListener("click", function (e) {
|
|
94
|
-
if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;
|
|
95
|
-
var a = e.target && e.target.closest && e.target.closest("a[href]");
|
|
96
|
-
if (!a || a.target && a.target !== "_self" || a.hasAttribute("download")) return;
|
|
97
|
-
var url;
|
|
98
|
-
try { url = new URL(a.getAttribute("href"), location.href); } catch (err) { return; }
|
|
99
|
-
if (url.origin !== location.origin) return;
|
|
100
|
-
var next = scoped(url.pathname);
|
|
101
|
-
if (!next) return;
|
|
102
|
-
e.preventDefault();
|
|
103
|
-
location.replace(next + url.search + url.hash);
|
|
104
|
-
});
|
|
105
|
-
document.addEventListener("submit", function (e) {
|
|
106
|
-
if (e.defaultPrevented) return;
|
|
107
|
-
var form = e.target;
|
|
108
|
-
if (!form || form.tagName !== "FORM" || form.target && form.target !== "_self") return;
|
|
109
|
-
var action = form.getAttribute("action");
|
|
110
|
-
if (action === null) return;
|
|
111
|
-
var url;
|
|
112
|
-
try { url = new URL(action, location.href); } catch (err) { return; }
|
|
113
|
-
if (url.origin !== location.origin) return;
|
|
114
|
-
var next = scoped(url.pathname);
|
|
115
|
-
if (next) form.setAttribute("action", next + url.search);
|
|
116
|
-
}, true);
|
|
117
|
-
// Downgrade pushState to replaceState so iframe history doesn't swallow parent Back.
|
|
118
|
-
var nativeReplace = history.replaceState.bind(history);
|
|
119
|
-
["pushState", "replaceState"].forEach(function (name) {
|
|
120
|
-
history[name] = function (state, title, path) {
|
|
121
|
-
if (typeof path === "string") {
|
|
122
|
-
try {
|
|
123
|
-
var url = new URL(path, location.href);
|
|
124
|
-
if (url.origin === location.origin) {
|
|
125
|
-
var next = scoped(url.pathname);
|
|
126
|
-
if (next) path = next + url.search + url.hash;
|
|
127
|
-
}
|
|
128
|
-
} catch (err) { /* leave path as-is */ }
|
|
129
|
-
}
|
|
130
|
-
return nativeReplace(state, title, path);
|
|
131
|
-
};
|
|
132
|
-
});
|
|
133
|
-
})();
|
|
134
|
-
</script>`;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function injectIntoHtml(html, port) {
|
|
138
|
-
const tag = inScopeScript(port);
|
|
139
|
-
const head = html.match(/<head[^>]*>/i);
|
|
140
|
-
if (head) return html.replace(head[0], () => head[0] + tag);
|
|
141
|
-
return tag + html;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
async function portFromReferrer(request) {
|
|
145
|
-
try {
|
|
146
|
-
if (request.referrer) {
|
|
147
|
-
const match = new URL(request.referrer).pathname.match(BROWSE_RE);
|
|
148
|
-
if (match) return Number(match[1]);
|
|
149
|
-
}
|
|
150
|
-
} catch { /* bad referrer — fall through */ }
|
|
151
|
-
const clients = await self.clients.matchAll({ type: "window", includeUncontrolled: false });
|
|
152
|
-
for (const client of clients) {
|
|
153
|
-
const match = new URL(client.url).pathname.match(BROWSE_RE);
|
|
154
|
-
if (match) return Number(match[1]);
|
|
155
|
-
}
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// MessageChannel per request to keep concurrent requests isolated.
|
|
160
|
-
function requestViaBridge(reqId, port, method, target, headers, bodyB64) {
|
|
161
|
-
return new Promise((resolve, reject) => {
|
|
162
|
-
const channel = new MessageChannel();
|
|
163
|
-
const timer = setTimeout(() => {
|
|
164
|
-
channel.port1.close();
|
|
165
|
-
reject(new Error("bridge-timeout"));
|
|
166
|
-
}, BRIDGE_TIMEOUT_MS);
|
|
167
|
-
channel.port1.onmessage = (event) => {
|
|
168
|
-
clearTimeout(timer);
|
|
169
|
-
channel.port1.close();
|
|
170
|
-
resolve(event.data);
|
|
171
|
-
};
|
|
172
|
-
bridgeClient.postMessage(
|
|
173
|
-
{ type: "http-request", reqId, port, method, target, headers, bodyB64 },
|
|
174
|
-
[channel.port2]
|
|
175
|
-
);
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
function fail(message, status, port) {
|
|
180
|
-
if (port) {
|
|
181
|
-
self.clients.matchAll({ type: "window", includeUncontrolled: true }).then((clients) => {
|
|
182
|
-
for (const client of clients) {
|
|
183
|
-
if (canBeBridge(client.url, self.location.origin)) client.postMessage({ type: "site-error", message, port });
|
|
184
|
-
}
|
|
185
|
-
}).catch(() => {});
|
|
186
|
-
}
|
|
187
|
-
return new Response(`9Remote: ${message}`, { status });
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
async function handle(request, url, inScope) {
|
|
191
|
-
const port = inScope ? Number(inScope[1]) : await portFromReferrer(request);
|
|
192
|
-
if (!port) return fail("no site context for this request", 503, null);
|
|
193
|
-
|
|
194
|
-
// Prevent cross-site subresource access within shared origin.
|
|
195
|
-
if (inScope && request.mode !== "navigate") {
|
|
196
|
-
const from = await portFromReferrer(request);
|
|
197
|
-
if (from && from !== port) {
|
|
198
|
-
return new Response("9Remote: cross-site request refused", { status: 403 });
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
await discoverBridge();
|
|
203
|
-
if (!bridgeClient) return fail("bridge not connected — open the 9Remote app", 503, port);
|
|
204
|
-
|
|
205
|
-
url.searchParams.delete("r");
|
|
206
|
-
const path = inScope ? (inScope[2] || "/") : url.pathname;
|
|
207
|
-
const target = path + (url.search || "");
|
|
208
|
-
|
|
209
|
-
if (request.mode === "navigate") {
|
|
210
|
-
bridgeClient.postMessage({ type: "site-nav", port, path });
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
const headers = {};
|
|
214
|
-
request.headers.forEach((value, key) => {
|
|
215
|
-
if (key.toLowerCase() !== "cookie") headers[key] = value;
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
let bodyB64 = null;
|
|
219
|
-
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
220
|
-
const buf = await request.arrayBuffer();
|
|
221
|
-
if (buf.byteLength > MAX_REQUEST_BODY_BYTES) {
|
|
222
|
-
return new Response("9Remote: request body too large", { status: 413 });
|
|
223
|
-
}
|
|
224
|
-
if (buf.byteLength > 0) bodyB64 = bytesToBase64(buf);
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
const reqId = `sw-${Date.now()}-${++reqCounter}`;
|
|
228
|
-
let msg;
|
|
229
|
-
try {
|
|
230
|
-
msg = await requestViaBridge(reqId, port, request.method, target, headers, bodyB64);
|
|
231
|
-
} catch {
|
|
232
|
-
return fail("request timed out", 504, port);
|
|
233
|
-
}
|
|
234
|
-
if (!msg || msg.error) return fail(msg?.error || "no reply from the agent", 502, port);
|
|
235
|
-
|
|
236
|
-
const resHeaders = new Headers(msg.headers || {});
|
|
237
|
-
|
|
238
|
-
const location = resHeaders.get("location");
|
|
239
|
-
if (location && REDIRECT_STATUSES.includes(msg.status)) {
|
|
240
|
-
let next = null;
|
|
241
|
-
try {
|
|
242
|
-
const abs = new URL(location, `http://localhost:${port}`);
|
|
243
|
-
const sameSite = location.startsWith("/") || abs.host === `localhost:${port}`;
|
|
244
|
-
if (sameSite) next = abs.pathname + abs.search;
|
|
245
|
-
} catch { /* keep null */ }
|
|
246
|
-
if (next) return Response.redirect(`/browse/${port}${next}`, msg.status);
|
|
247
|
-
return Response.redirect(location, msg.status);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (msg.status === 204 || msg.status === 304) {
|
|
251
|
-
return new Response(null, { status: msg.status, headers: resHeaders });
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
// Enforce CSP on proxied site content.
|
|
255
|
-
resHeaders.set("Content-Security-Policy", SITE_CSP);
|
|
256
|
-
|
|
257
|
-
const bytes = base64ToBytes(msg.bodyB64);
|
|
258
|
-
if ((resHeaders.get("content-type") || "").includes("text/html")) {
|
|
259
|
-
const html = new TextDecoder("utf-8").decode(bytes);
|
|
260
|
-
return new Response(injectIntoHtml(html, port), { status: msg.status, headers: resHeaders });
|
|
261
|
-
}
|
|
262
|
-
return new Response(bytes, { status: msg.status, headers: resHeaders });
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
self.addEventListener("fetch", (event) => {
|
|
266
|
-
const request = event.request;
|
|
267
|
-
let url;
|
|
268
|
-
try { url = new URL(request.url); } catch { return; }
|
|
269
|
-
|
|
270
|
-
if (url.origin !== self.location.origin) return;
|
|
271
|
-
if (url.pathname === "/sw-site.js") return;
|
|
272
|
-
if (url.pathname.startsWith("/cdn-cgi/")) return;
|
|
273
|
-
|
|
274
|
-
const inScope = url.pathname.match(BROWSE_RE);
|
|
275
|
-
if (inScope) {
|
|
276
|
-
event.respondWith(handle(request, url, inScope));
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// Handle root-relative subresource requests from in-scope pages.
|
|
281
|
-
if (request.mode === "navigate") return;
|
|
282
|
-
event.respondWith(handle(request, url, null));
|
|
283
|
-
});
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
// Which client may act as the bridge.
|
|
2
|
-
//
|
|
3
|
-
// The worker forwards every browsed request to whichever client announced
|
|
4
|
-
// itself with "bridge-hello", and every browsed site lives on this same origin.
|
|
5
|
-
// So a dev server rendering something the developer did not write can claim the
|
|
6
|
-
// role, then see every other tab's requests — paths, headers, bodies — and
|
|
7
|
-
// answer them with content of its own.
|
|
8
|
-
//
|
|
9
|
-
// The shell is the one page entitled to it, and the worker can tell: the shell
|
|
10
|
-
// is served at /proxy.html, while sites are always under /browse/. Parsing the
|
|
11
|
-
// URL rather than matching on the string is what makes /browse/3000/proxy.html
|
|
12
|
-
// and /browse/3000/../proxy.html answer correctly.
|
|
13
|
-
//
|
|
14
|
-
// Loaded by sw-site.js through importScripts, so this is a classic script and
|
|
15
|
-
// defines a global rather than exporting. The test reads and evaluates it.
|
|
16
|
-
function canBeBridge(clientUrl, expectedOrigin) {
|
|
17
|
-
if (typeof clientUrl !== "string" || !clientUrl) return false;
|
|
18
|
-
let url;
|
|
19
|
-
try {
|
|
20
|
-
url = new URL(clientUrl);
|
|
21
|
-
} catch {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
if (url.origin !== expectedOrigin) return false;
|
|
25
|
-
// pathname is already normalised by the URL parser, so ../ is resolved and a
|
|
26
|
-
// query or fragment cannot smuggle the shell's name into it.
|
|
27
|
-
return url.pathname === "/proxy.html";
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// The app origins that may sit above a browsed site. frame-ancestors is checked
|
|
31
|
-
// against EVERY ancestor, not just the parent, so a site framed by the shell is
|
|
32
|
-
// also framed by the app — naming only the shell blocks the load.
|
|
33
|
-
//
|
|
34
|
-
// The loopback entry is the agent's own deploy: there the app and the sites host
|
|
35
|
-
// are two names on one server, and the app answers on any loopback name, so all
|
|
36
|
-
// of them have to be listed. A single fixed name leaves the site unframable for
|
|
37
|
-
// whichever spelling the app was not opened on.
|
|
38
|
-
const APP_HOSTS_BY_SITES_HOST = {
|
|
39
|
-
"sites.9remote.cc": ["https://9remote.cc"],
|
|
40
|
-
"sites-dev.9remote.cc": ["https://dev.9remote.cc"],
|
|
41
|
-
// No [::1]: CSP's frame-ancestors rejects an IPv6 literal as a source
|
|
42
|
-
// expression — Chrome drops the whole directive over it — so a page opened on
|
|
43
|
-
// that spelling cannot be named, and is left unsupported rather than silently
|
|
44
|
-
// unframable. localhost and 127.0.0.1 are what the agent is actually reached on.
|
|
45
|
-
"sites.localhost": ["http://localhost", "http://127.0.0.1"],
|
|
46
|
-
"sites.127.0.0.1": ["http://127.0.0.1"]
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
// "" for an unknown host: the policy then names the shell alone, which is the
|
|
50
|
-
// safe direction — a load fails rather than an unknown origin being allowed.
|
|
51
|
-
// `port` is the sites origin's own port, and the app answers on the same one.
|
|
52
|
-
function appOriginsFor(hostname, port) {
|
|
53
|
-
const host = String(hostname || "").toLowerCase();
|
|
54
|
-
const bases = APP_HOSTS_BY_SITES_HOST[host];
|
|
55
|
-
if (!bases) return "";
|
|
56
|
-
return bases.map((b) => (port ? `${b}:${port}` : b)).join(" ");
|
|
57
|
-
}
|
/package/dist/web/_next/static/{DdbafQkcX_ZaKRMjMeNKp → 55Oo1FQxj9HIxB7QE1XWG}/_buildManifest.js
RENAMED
|
File without changes
|
/package/dist/web/_next/static/{DdbafQkcX_ZaKRMjMeNKp → 55Oo1FQxj9HIxB7QE1XWG}/_ssgManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|