roxxie-proxy-u-prod 0.1.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/LICENSE +661 -0
- package/README.md +123 -0
- package/SOURCE.md +29 -0
- package/THIRD_PARTY_NOTICES.md +24 -0
- package/dist/assets/filters-Bu_3nHVy.bin +0 -0
- package/dist/assets/index-BdRlQ7d_.css +1 -0
- package/dist/assets/index-DcvPYWS3.js +3621 -0
- package/dist/assets/inject-BnVzMVpl.js +40 -0
- package/dist/assets/scramjet-C9HLwI-y.wasm +0 -0
- package/dist/defaultfavicon.png +0 -0
- package/dist/icon.png +0 -0
- package/dist/roxxie-icon.svg +12 -0
- package/embed.js +70 -0
- package/examples/single-page.html +25 -0
- package/package.json +42 -0
- package/runtime/controller.sw.js +273 -0
- package/runtime/index.html +18 -0
- package/runtime/localcontrollersw.js +7 -0
- package/runtime/roxxie-network.json +13 -0
- package/runtime/sw.js +6 -0
- package/scripts/build.mjs +344 -0
- package/scripts/smoke.mjs +123 -0
- package/scripts/verify.mjs +122 -0
- package/source/external/dreamlandjs/LICENSE +21 -0
- package/source/external/dreamlandjs/README.md +22 -0
- package/source/external/dreamlandjs/dist/core.d.ts +167 -0
- package/source/external/dreamlandjs/dist/core.js +2 -0
- package/source/external/dreamlandjs/dist/core.js.map +1 -0
- package/source/external/dreamlandjs/dist/core.size.html +4950 -0
- package/source/external/dreamlandjs/dist/js-runtime.d.ts +3 -0
- package/source/external/dreamlandjs/dist/js-runtime.js +2 -0
- package/source/external/dreamlandjs/dist/js-runtime.js.map +1 -0
- package/source/external/dreamlandjs/dist/jsx-runtime.d.ts +1 -0
- package/source/external/dreamlandjs/dist/jsx-runtime.js +2 -0
- package/source/external/dreamlandjs/dist/jsx-runtime.js.map +1 -0
- package/source/external/dreamlandjs/dist/motion.d.ts +19 -0
- package/source/external/dreamlandjs/dist/motion.js +2 -0
- package/source/external/dreamlandjs/dist/motion.js.map +1 -0
- package/source/external/dreamlandjs/dist/router.d.ts +48 -0
- package/source/external/dreamlandjs/dist/router.js +2 -0
- package/source/external/dreamlandjs/dist/router.js.map +1 -0
- package/source/external/dreamlandjs/dist/ssr.client.d.ts +3 -0
- package/source/external/dreamlandjs/dist/ssr.client.js +2 -0
- package/source/external/dreamlandjs/dist/ssr.client.js.map +1 -0
- package/source/external/dreamlandjs/dist/ssr.client.size.html +4950 -0
- package/source/external/dreamlandjs/dist/ssr.hybrid.d.ts +7 -0
- package/source/external/dreamlandjs/dist/ssr.hybrid.js +2 -0
- package/source/external/dreamlandjs/dist/ssr.hybrid.js.map +1 -0
- package/source/external/dreamlandjs/dist/ssr.hybrid.size.html +4950 -0
- package/source/external/dreamlandjs/dist/ssr.server.d.ts +11 -0
- package/source/external/dreamlandjs/dist/ssr.server.js +2373 -0
- package/source/external/dreamlandjs/dist/ssr.server.js.map +1 -0
- package/source/external/dreamlandjs/dist/types/core/consts.d.ts +16 -0
- package/source/external/dreamlandjs/dist/types/core/css/index.d.ts +11 -0
- package/source/external/dreamlandjs/dist/types/core/css/selectorParser.d.ts +50 -0
- package/source/external/dreamlandjs/dist/types/core/delegate.d.ts +10 -0
- package/source/external/dreamlandjs/dist/types/core/index.d.ts +9 -0
- package/source/external/dreamlandjs/dist/types/core/jsx/child.d.ts +2 -0
- package/source/external/dreamlandjs/dist/types/core/jsx/definitions.d.ts +76 -0
- package/source/external/dreamlandjs/dist/types/core/jsx/dom.d.ts +28 -0
- package/source/external/dreamlandjs/dist/types/core/jsx/index.d.ts +14 -0
- package/source/external/dreamlandjs/dist/types/core/state/index.d.ts +1 -0
- package/source/external/dreamlandjs/dist/types/core/state/pointers.d.ts +37 -0
- package/source/external/dreamlandjs/dist/types/core/state/state.d.ts +13 -0
- package/source/external/dreamlandjs/dist/types/core/state/use.d.ts +11 -0
- package/source/external/dreamlandjs/dist/types/core/utils.d.ts +4 -0
- package/source/external/dreamlandjs/dist/types/js-runtime/index.d.ts +1 -0
- package/source/external/dreamlandjs/dist/types/jsx-runtime/index.d.ts +2 -0
- package/source/external/dreamlandjs/dist/types/motion/index.d.ts +15 -0
- package/source/external/dreamlandjs/dist/types/router/index.d.ts +45 -0
- package/source/external/dreamlandjs/dist/types/ssr/client/index.d.ts +1 -0
- package/source/external/dreamlandjs/dist/types/ssr/common/consts.d.ts +4 -0
- package/source/external/dreamlandjs/dist/types/ssr/common/serialize.d.ts +4 -0
- package/source/external/dreamlandjs/dist/types/ssr/common/types.d.ts +21 -0
- package/source/external/dreamlandjs/dist/types/ssr/hybrid/index.d.ts +4 -0
- package/source/external/dreamlandjs/dist/types/ssr/server/index.d.ts +7 -0
- package/source/external/dreamlandjs/dist/types/ssr/server/vdom.d.ts +71 -0
- package/source/external/dreamlandjs/dist/types/util/index.d.ts +1 -0
- package/source/external/dreamlandjs/dist/types/util/store.d.ts +26 -0
- package/source/external/dreamlandjs/dist/types/vite/css-minifier.d.ts +7 -0
- package/source/external/dreamlandjs/dist/types/vite/index.d.ts +11 -0
- package/source/external/dreamlandjs/dist/util.d.ts +29 -0
- package/source/external/dreamlandjs/dist/util.js +2 -0
- package/source/external/dreamlandjs/dist/util.js.map +1 -0
- package/source/external/dreamlandjs/dist/vite.d.ts +19 -0
- package/source/external/dreamlandjs/dist/vite.js +2 -0
- package/source/external/dreamlandjs/dist/vite.js.map +1 -0
- package/source/external/dreamlandjs/package.json +101 -0
- package/source/external/dreamlandjs/rollup.config.ts +302 -0
- package/source/external/dreamlandjs/rollup.plugins.ts +1134 -0
- package/source/external/dreamlandjs/src/core/consts.d.ts +16 -0
- package/source/external/dreamlandjs/src/core/consts.js +18 -0
- package/source/external/dreamlandjs/src/core/css/index.ts +111 -0
- package/source/external/dreamlandjs/src/core/css/selectorParser.ts +313 -0
- package/source/external/dreamlandjs/src/core/delegate.ts +28 -0
- package/source/external/dreamlandjs/src/core/index.ts +31 -0
- package/source/external/dreamlandjs/src/core/jsx/child.ts +91 -0
- package/source/external/dreamlandjs/src/core/jsx/definitions.ts +125 -0
- package/source/external/dreamlandjs/src/core/jsx/dom.ts +49 -0
- package/source/external/dreamlandjs/src/core/jsx/index.ts +289 -0
- package/source/external/dreamlandjs/src/core/state/index.ts +1 -0
- package/source/external/dreamlandjs/src/core/state/pointers.ts +310 -0
- package/source/external/dreamlandjs/src/core/state/state.ts +112 -0
- package/source/external/dreamlandjs/src/core/state/use.ts +82 -0
- package/source/external/dreamlandjs/src/core/utils.ts +48 -0
- package/source/external/dreamlandjs/src/js-runtime/index.ts +4 -0
- package/source/external/dreamlandjs/src/jsx-runtime/index.ts +3 -0
- package/source/external/dreamlandjs/src/motion/index.ts +156 -0
- package/source/external/dreamlandjs/src/router/index.tsx +394 -0
- package/source/external/dreamlandjs/src/router/tsconfig.json +9 -0
- package/source/external/dreamlandjs/src/ssr/client/index.ts +193 -0
- package/source/external/dreamlandjs/src/ssr/common/consts.ts +5 -0
- package/source/external/dreamlandjs/src/ssr/common/serialize.ts +115 -0
- package/source/external/dreamlandjs/src/ssr/common/types.ts +28 -0
- package/source/external/dreamlandjs/src/ssr/hybrid/index.ts +144 -0
- package/source/external/dreamlandjs/src/ssr/server/index.ts +157 -0
- package/source/external/dreamlandjs/src/ssr/server/tsconfig.json +7 -0
- package/source/external/dreamlandjs/src/ssr/server/vdom.ts +285 -0
- package/source/external/dreamlandjs/src/util/index.ts +10 -0
- package/source/external/dreamlandjs/src/util/store.ts +134 -0
- package/source/external/dreamlandjs/src/vite/css-minifier.ts +222 -0
- package/source/external/dreamlandjs/src/vite/index.ts +60 -0
- package/source/external/dreamlandjs/src/vite/tsconfig.json +7 -0
- package/source/external/dreamlandjs/tsconfig.json +15 -0
- package/source/package.json +48 -0
- package/source/packages/adrift-protocol/package.json +31 -0
- package/source/packages/adrift-protocol/src/index.ts +348 -0
- package/source/packages/adrift-protocol/tsconfig.json +18 -0
- package/source/packages/cdp/LICENSE +21 -0
- package/source/packages/cdp/README.md +47 -0
- package/source/packages/cdp/dist/chobitsu.js +2 -0
- package/source/packages/cdp/dist/chobitsu.js.map +1 -0
- package/source/packages/cdp/package.json +73 -0
- package/source/packages/cdp/script/build.js +15 -0
- package/source/packages/cdp/src/Chobitsu.ts +110 -0
- package/source/packages/cdp/src/domains/CSS.ts +378 -0
- package/source/packages/cdp/src/domains/CacheStorage.ts +8 -0
- package/source/packages/cdp/src/domains/DOM.ts +487 -0
- package/source/packages/cdp/src/domains/DOMDebugger.ts +109 -0
- package/source/packages/cdp/src/domains/DOMStorage.ts +122 -0
- package/source/packages/cdp/src/domains/Debugger.ts +25 -0
- package/source/packages/cdp/src/domains/IndexedDB.ts +207 -0
- package/source/packages/cdp/src/domains/Input.ts +177 -0
- package/source/packages/cdp/src/domains/Network.ts +251 -0
- package/source/packages/cdp/src/domains/Overlay.ts +230 -0
- package/source/packages/cdp/src/domains/Page.ts +296 -0
- package/source/packages/cdp/src/domains/Runtime.ts +273 -0
- package/source/packages/cdp/src/domains/Storage.ts +71 -0
- package/source/packages/cdp/src/index.d.ts +8 -0
- package/source/packages/cdp/src/index.ts +153 -0
- package/source/packages/cdp/src/lib/connector.ts +15 -0
- package/source/packages/cdp/src/lib/constants.ts +1 -0
- package/source/packages/cdp/src/lib/evaluate.ts +59 -0
- package/source/packages/cdp/src/lib/mutationObserver.ts +39 -0
- package/source/packages/cdp/src/lib/nodeManager.ts +142 -0
- package/source/packages/cdp/src/lib/objManager.ts +422 -0
- package/source/packages/cdp/src/lib/request.ts +313 -0
- package/source/packages/cdp/src/lib/resources.ts +59 -0
- package/source/packages/cdp/src/lib/scriptMananger.ts +62 -0
- package/source/packages/cdp/src/lib/stylesheet.ts +146 -0
- package/source/packages/cdp/src/lib/util.ts +105 -0
- package/source/packages/cdp/tsconfig.json +16 -0
- package/source/packages/cdp/webpack.config.js +48 -0
- package/source/packages/chrome/index.html +17 -0
- package/source/packages/chrome/package.json +41 -0
- package/source/packages/chrome/public/ROXXIE_NETWORK.md +22 -0
- package/source/packages/chrome/public/controller.sw.js +273 -0
- package/source/packages/chrome/public/defaultfavicon.png +0 -0
- package/source/packages/chrome/public/icon.png +0 -0
- package/source/packages/chrome/public/localcontrollersw.js +7 -0
- package/source/packages/chrome/public/roxxie-icon.svg +12 -0
- package/source/packages/chrome/public/roxxie-network.json +13 -0
- package/source/packages/chrome/public/sw.js +6 -0
- package/source/packages/chrome/src/App.tsx +269 -0
- package/source/packages/chrome/src/CDP.ts +285 -0
- package/source/packages/chrome/src/Tab/History.ts +186 -0
- package/source/packages/chrome/src/Tab/Tab.tsx +219 -0
- package/source/packages/chrome/src/Tab/screenshot.ts +66 -0
- package/source/packages/chrome/src/Tab/serialize.ts +221 -0
- package/source/packages/chrome/src/adblock/AdBlockPlugin.test.ts +159 -0
- package/source/packages/chrome/src/adblock/AdBlockPlugin.ts +232 -0
- package/source/packages/chrome/src/adblock/AdBlockService.test.ts +148 -0
- package/source/packages/chrome/src/adblock/AdBlockService.ts +166 -0
- package/source/packages/chrome/src/adblock/NOTICE.md +14 -0
- package/source/packages/chrome/src/adblock/assets/filters.bin +0 -0
- package/source/packages/chrome/src/adblock/index.ts +18 -0
- package/source/packages/chrome/src/assets/favicon.ts +4 -0
- package/source/packages/chrome/src/components/BookmarkPopup.tsx +101 -0
- package/source/packages/chrome/src/components/BookmarksStrip.tsx +150 -0
- package/source/packages/chrome/src/components/Button.tsx +99 -0
- package/source/packages/chrome/src/components/Checkbox.tsx +89 -0
- package/source/packages/chrome/src/components/DownloadsPopup.tsx +230 -0
- package/source/packages/chrome/src/components/Favicon.tsx +65 -0
- package/source/packages/chrome/src/components/Icon.tsx +29 -0
- package/source/packages/chrome/src/components/Input.tsx +82 -0
- package/source/packages/chrome/src/components/Menu.tsx +287 -0
- package/source/packages/chrome/src/components/Omnibar/BookmarkButton.tsx +73 -0
- package/source/packages/chrome/src/components/Omnibar/CircularProgress.tsx +83 -0
- package/source/packages/chrome/src/components/Omnibar/Omnibar.tsx +455 -0
- package/source/packages/chrome/src/components/Omnibar/OmnibarButton.tsx +48 -0
- package/source/packages/chrome/src/components/Omnibar/Omnibox.tsx +466 -0
- package/source/packages/chrome/src/components/Omnibar/SiteOptionsButton.tsx +52 -0
- package/source/packages/chrome/src/components/Omnibar/Suggestion.tsx +186 -0
- package/source/packages/chrome/src/components/Omnibar/UrlInput.tsx +198 -0
- package/source/packages/chrome/src/components/Omnibar/suggestions.ts +468 -0
- package/source/packages/chrome/src/components/Omnibar/utils.ts +11 -0
- package/source/packages/chrome/src/components/ReportBrokenSiteModal.tsx +279 -0
- package/source/packages/chrome/src/components/Shell.tsx +191 -0
- package/source/packages/chrome/src/components/SiteInformationPopup.tsx +96 -0
- package/source/packages/chrome/src/components/SmallIconButton.tsx +36 -0
- package/source/packages/chrome/src/components/StartScreen.tsx +386 -0
- package/source/packages/chrome/src/components/TabStrip/DragTab.tsx +546 -0
- package/source/packages/chrome/src/components/TabStrip/Sidebar.tsx +820 -0
- package/source/packages/chrome/src/components/TabStrip/TabHoverCard.tsx +87 -0
- package/source/packages/chrome/src/components/TabStrip/TabStrip.tsx +510 -0
- package/source/packages/chrome/src/components/TopSiteButton.tsx +234 -0
- package/source/packages/chrome/src/consts.ts +3 -0
- package/source/packages/chrome/src/icons.ts +70 -0
- package/source/packages/chrome/src/index.ts +168 -0
- package/source/packages/chrome/src/migrations/0-from-legacy.ts +6 -0
- package/source/packages/chrome/src/migrations/1-vertical-tab-settings.ts +15 -0
- package/source/packages/chrome/src/migrations/index.ts +42 -0
- package/source/packages/chrome/src/pages/AboutPage.tsx +37 -0
- package/source/packages/chrome/src/pages/DownloadsPage.tsx +133 -0
- package/source/packages/chrome/src/pages/HistoryPage.tsx +99 -0
- package/source/packages/chrome/src/pages/NewTabPage.tsx +264 -0
- package/source/packages/chrome/src/pages/PlaygroundPage.tsx +43 -0
- package/source/packages/chrome/src/pages/SettingsPage.tsx +1931 -0
- package/source/packages/chrome/src/proxy/Controller.ts +331 -0
- package/source/packages/chrome/src/proxy/ProxyFrame.ts +26 -0
- package/source/packages/chrome/src/proxy/cache.ts +487 -0
- package/source/packages/chrome/src/proxy/codec.ts +11 -0
- package/source/packages/chrome/src/proxy/contextitems.ts +180 -0
- package/source/packages/chrome/src/proxy/index.ts +5 -0
- package/source/packages/chrome/src/proxy/roxxie.ts +85 -0
- package/source/packages/chrome/src/proxy/scramjet.ts +642 -0
- package/source/packages/chrome/src/reset.css +124 -0
- package/source/packages/chrome/src/runtime-base.ts +16 -0
- package/source/packages/chrome/src/sentry.tsx +45 -0
- package/source/packages/chrome/src/services/DownloadsService.ts +136 -0
- package/source/packages/chrome/src/services/FaviconService.ts +161 -0
- package/source/packages/chrome/src/services/KVWrapper.ts +169 -0
- package/source/packages/chrome/src/services/ProfileService.ts +94 -0
- package/source/packages/chrome/src/services/Service.ts +10 -0
- package/source/packages/chrome/src/services/SettingsService.ts +108 -0
- package/source/packages/chrome/src/services/TabsService.ts +161 -0
- package/source/packages/chrome/src/startup.test.ts +129 -0
- package/source/packages/chrome/src/startup.ts +161 -0
- package/source/packages/chrome/src/style.css +229 -0
- package/source/packages/chrome/src/themes.ts +756 -0
- package/source/packages/chrome/src/util/StatefulClass.ts +31 -0
- package/source/packages/chrome/src/util/index.ts +74 -0
- package/source/packages/chrome/src/util/memoize.ts +13 -0
- package/source/packages/chrome/src/vite-env.d.ts +16 -0
- package/source/packages/chrome/tsconfig.json +30 -0
- package/source/packages/chrome/vite.config.ts +47 -0
- package/source/packages/inject/package.json +20 -0
- package/source/packages/inject/src/context.ts +194 -0
- package/source/packages/inject/src/emulators/alwaysLastBubble.ts +168 -0
- package/source/packages/inject/src/emulators/anchors.ts +55 -0
- package/source/packages/inject/src/emulators/contextmenu.ts +46 -0
- package/source/packages/inject/src/emulators/history.ts +51 -0
- package/source/packages/inject/src/emulators/titlewatcher.ts +42 -0
- package/source/packages/inject/src/emulators/windowopen.ts +134 -0
- package/source/packages/inject/src/errorpage/errorpage.css +234 -0
- package/source/packages/inject/src/errorpage/errorpage.html +29 -0
- package/source/packages/inject/src/errorpage/errorpage.ts +76 -0
- package/source/packages/inject/src/index.ts +62 -0
- package/source/packages/inject/src/transport.ts +97 -0
- package/source/packages/inject/src/types.d.ts +136 -0
- package/source/packages/roxxie-transport/package.json +36 -0
- package/source/packages/roxxie-transport/src/binary.ts +398 -0
- package/source/packages/roxxie-transport/src/config.ts +254 -0
- package/source/packages/roxxie-transport/src/connection.ts +767 -0
- package/source/packages/roxxie-transport/src/index.ts +5 -0
- package/source/packages/roxxie-transport/src/tracker.ts +651 -0
- package/source/packages/roxxie-transport/src/transport.ts +414 -0
- package/source/packages/roxxie-transport/tsconfig.json +18 -0
- package/source/packages/scramjet/packages/controller/package.json +37 -0
- package/source/packages/scramjet/packages/controller/src/index.ts +861 -0
- package/source/packages/scramjet/packages/controller/src/inject.ts +365 -0
- package/source/packages/scramjet/packages/controller/src/sw.ts +231 -0
- package/source/packages/scramjet/packages/controller/src/symbols.ts +1 -0
- package/source/packages/scramjet/packages/controller/src/types.d.ts +140 -0
- package/source/packages/scramjet/packages/controller/src/typesEntry.ts +6 -0
- package/source/packages/scramjet/packages/controller/src/version.ts +30 -0
- package/source/packages/scramjet/packages/controller/tsconfig.json +24 -0
- package/source/packages/scramjet/packages/core/dist/scramjet-external.mjs +57 -0
- package/source/packages/scramjet/packages/core/dist/scramjet.js +13599 -0
- package/source/packages/scramjet/packages/core/dist/scramjet.js.map +1 -0
- package/source/packages/scramjet/packages/core/dist/scramjet.mjs +13649 -0
- package/source/packages/scramjet/packages/core/dist/scramjet.mjs.map +1 -0
- package/source/packages/scramjet/packages/core/dist/scramjet.wasm +0 -0
- package/source/packages/scramjet/packages/core/dist/scramjet_bundled.js +13601 -0
- package/source/packages/scramjet/packages/core/dist/scramjet_bundled.js.map +1 -0
- package/source/packages/scramjet/packages/core/dist/scramjet_bundled.mjs +13651 -0
- package/source/packages/scramjet/packages/core/dist/scramjet_bundled.mjs.map +1 -0
- package/source/packages/scramjet/packages/core/dist/temp-types-build/index.js +23 -0
- package/source/packages/scramjet/packages/core/dist/temp-types-build/index.js.map +1 -0
- package/source/packages/scramjet/packages/core/dist/types/Tap.d.ts +39 -0
- package/source/packages/scramjet/packages/core/dist/types/client/client.d.ts +115 -0
- package/source/packages/scramjet/packages/core/dist/types/client/entry.d.ts +5 -0
- package/source/packages/scramjet/packages/core/dist/types/client/events.d.ts +10 -0
- package/source/packages/scramjet/packages/core/dist/types/client/helpers.d.ts +1 -0
- package/source/packages/scramjet/packages/core/dist/types/client/index.d.ts +7 -0
- package/source/packages/scramjet/packages/core/dist/types/client/location.d.ts +2 -0
- package/source/packages/scramjet/packages/core/dist/types/client/shared/eval.d.ts +3 -0
- package/source/packages/scramjet/packages/core/dist/types/client/shared/sourcemaps.d.ts +19 -0
- package/source/packages/scramjet/packages/core/dist/types/client/shared/wrap.d.ts +4 -0
- package/source/packages/scramjet/packages/core/dist/types/client/singletonbox.d.ts +18 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/body.d.ts +3 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/fetch.d.ts +7 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/headers.d.ts +19 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/index.d.ts +128 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/parse.d.ts +23 -0
- package/source/packages/scramjet/packages/core/dist/types/fetch/util.d.ts +7 -0
- package/source/packages/scramjet/packages/core/dist/types/index.d.ts +12 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/cookie.d.ts +26 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/headers.d.ts +13 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/htmlRules.d.ts +6 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/index.d.ts +50 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/mime.d.ts +53 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/refresh.d.ts +7 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/css.d.ts +4 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/html.d.ts +33 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/index.d.ts +6 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/js.d.ts +11 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/url.d.ts +24 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/wasm.d.ts +7 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/rewriters/worker.d.ts +3 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/set-cookie-parser.d.ts +20 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/snapshot.d.ts +186 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/sniffEncoding.d.ts +65 -0
- package/source/packages/scramjet/packages/core/dist/types/shared/util.d.ts +2 -0
- package/source/packages/scramjet/packages/core/dist/types/symbols.d.ts +6 -0
- package/source/packages/scramjet/packages/core/dist/types/types.d.ts +60 -0
- package/source/packages/scramjet/packages/core/dist/types/typesEntry.d.ts +5 -0
- package/source/packages/scramjet/packages/core/lib/index.cjs +7 -0
- package/source/packages/scramjet/packages/core/lib/index.d.ts +8 -0
- package/source/packages/scramjet/packages/core/package.json +69 -0
- package/source/packages/scramjet/packages/core/rewriter/Cargo.lock +1985 -0
- package/source/packages/scramjet/packages/core/rewriter/Cargo.toml +20 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/Cargo.toml +15 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/analyze.rs +1118 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/ast_table.rs +927 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/helper_index.rs +556 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/lib.rs +455 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/reachability.rs +85 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/templates.rs +192 -0
- package/source/packages/scramjet/packages/core/rewriter/coverage-macro/src/witness.rs +597 -0
- package/source/packages/scramjet/packages/core/rewriter/js/Cargo.toml +18 -0
- package/source/packages/scramjet/packages/core/rewriter/js/src/cfg.rs +45 -0
- package/source/packages/scramjet/packages/core/rewriter/js/src/changes.rs +379 -0
- package/source/packages/scramjet/packages/core/rewriter/js/src/lib.rs +171 -0
- package/source/packages/scramjet/packages/core/rewriter/js/src/rewrite.rs +290 -0
- package/source/packages/scramjet/packages/core/rewriter/js/src/visitor.rs +967 -0
- package/source/packages/scramjet/packages/core/rewriter/native/Cargo.toml +22 -0
- package/source/packages/scramjet/packages/core/rewriter/native/src/main.rs +166 -0
- package/source/packages/scramjet/packages/core/rewriter/native/src/rewriter.rs +161 -0
- package/source/packages/scramjet/packages/core/rewriter/native/src/test_runner.rs +156 -0
- package/source/packages/scramjet/packages/core/rewriter/rust-toolchain.toml +5 -0
- package/source/packages/scramjet/packages/core/rewriter/rustfmt.toml +2 -0
- package/source/packages/scramjet/packages/core/rewriter/transform/Cargo.toml +16 -0
- package/source/packages/scramjet/packages/core/rewriter/transform/src/lib.rs +242 -0
- package/source/packages/scramjet/packages/core/rewriter/transform/src/transform.rs +123 -0
- package/source/packages/scramjet/packages/core/rewriter/wasm/Cargo.toml +22 -0
- package/source/packages/scramjet/packages/core/rewriter/wasm/build.sh +128 -0
- package/source/packages/scramjet/packages/core/rewriter/wasm/src/error.rs +56 -0
- package/source/packages/scramjet/packages/core/rewriter/wasm/src/jsr.rs +125 -0
- package/source/packages/scramjet/packages/core/rewriter/wasm/src/lib.rs +144 -0
- package/source/packages/scramjet/packages/core/src/Tap.ts +166 -0
- package/source/packages/scramjet/packages/core/src/client/client.ts +916 -0
- package/source/packages/scramjet/packages/core/src/client/dom/attr.ts +94 -0
- package/source/packages/scramjet/packages/core/src/client/dom/beacon.ts +11 -0
- package/source/packages/scramjet/packages/core/src/client/dom/cookie.ts +21 -0
- package/source/packages/scramjet/packages/core/src/client/dom/css.ts +106 -0
- package/source/packages/scramjet/packages/core/src/client/dom/document.ts +140 -0
- package/source/packages/scramjet/packages/core/src/client/dom/element.ts +783 -0
- package/source/packages/scramjet/packages/core/src/client/dom/fontface.ts +11 -0
- package/source/packages/scramjet/packages/core/src/client/dom/fragments.ts +32 -0
- package/source/packages/scramjet/packages/core/src/client/dom/history.ts +35 -0
- package/source/packages/scramjet/packages/core/src/client/dom/open.ts +59 -0
- package/source/packages/scramjet/packages/core/src/client/dom/origin.ts +13 -0
- package/source/packages/scramjet/packages/core/src/client/dom/performance.ts +50 -0
- package/source/packages/scramjet/packages/core/src/client/dom/protocol.ts +17 -0
- package/source/packages/scramjet/packages/core/src/client/dom/storage.ts +107 -0
- package/source/packages/scramjet/packages/core/src/client/entry.ts +12 -0
- package/source/packages/scramjet/packages/core/src/client/events.ts +10 -0
- package/source/packages/scramjet/packages/core/src/client/helpers.ts +7 -0
- package/source/packages/scramjet/packages/core/src/client/index.ts +7 -0
- package/source/packages/scramjet/packages/core/src/client/location.ts +139 -0
- package/source/packages/scramjet/packages/core/src/client/shared/antiantidebugger.ts +20 -0
- package/source/packages/scramjet/packages/core/src/client/shared/blob.ts +35 -0
- package/source/packages/scramjet/packages/core/src/client/shared/caches.ts +31 -0
- package/source/packages/scramjet/packages/core/src/client/shared/chrome.ts +90 -0
- package/source/packages/scramjet/packages/core/src/client/shared/err.ts +55 -0
- package/source/packages/scramjet/packages/core/src/client/shared/error.ts +42 -0
- package/source/packages/scramjet/packages/core/src/client/shared/eval.ts +40 -0
- package/source/packages/scramjet/packages/core/src/client/shared/event.ts +215 -0
- package/source/packages/scramjet/packages/core/src/client/shared/function.ts +59 -0
- package/source/packages/scramjet/packages/core/src/client/shared/import.ts +46 -0
- package/source/packages/scramjet/packages/core/src/client/shared/indexeddb.ts +18 -0
- package/source/packages/scramjet/packages/core/src/client/shared/opfs.ts +27 -0
- package/source/packages/scramjet/packages/core/src/client/shared/postmessage.ts +113 -0
- package/source/packages/scramjet/packages/core/src/client/shared/realm.ts +26 -0
- package/source/packages/scramjet/packages/core/src/client/shared/requests/eventsource.ts +17 -0
- package/source/packages/scramjet/packages/core/src/client/shared/requests/fetch.ts +67 -0
- package/source/packages/scramjet/packages/core/src/client/shared/requests/websocket.ts +389 -0
- package/source/packages/scramjet/packages/core/src/client/shared/requests/xmlhttprequest.ts +163 -0
- package/source/packages/scramjet/packages/core/src/client/shared/settimeout.ts +20 -0
- package/source/packages/scramjet/packages/core/src/client/shared/sourcemaps.ts +203 -0
- package/source/packages/scramjet/packages/core/src/client/shared/worker.ts +72 -0
- package/source/packages/scramjet/packages/core/src/client/shared/wrap.ts +197 -0
- package/source/packages/scramjet/packages/core/src/client/singletonbox.ts +52 -0
- package/source/packages/scramjet/packages/core/src/client/worker/importScripts.ts +13 -0
- package/source/packages/scramjet/packages/core/src/fetch/body.ts +93 -0
- package/source/packages/scramjet/packages/core/src/fetch/fetch.ts +323 -0
- package/source/packages/scramjet/packages/core/src/fetch/headers.ts +528 -0
- package/source/packages/scramjet/packages/core/src/fetch/index.ts +198 -0
- package/source/packages/scramjet/packages/core/src/fetch/parse.ts +149 -0
- package/source/packages/scramjet/packages/core/src/fetch/util.ts +81 -0
- package/source/packages/scramjet/packages/core/src/global.d.ts +32 -0
- package/source/packages/scramjet/packages/core/src/index.ts +78 -0
- package/source/packages/scramjet/packages/core/src/log.ts +117 -0
- package/source/packages/scramjet/packages/core/src/shared/cookie.ts +199 -0
- package/source/packages/scramjet/packages/core/src/shared/headers.ts +76 -0
- package/source/packages/scramjet/packages/core/src/shared/htmlRules.ts +154 -0
- package/source/packages/scramjet/packages/core/src/shared/index.ts +79 -0
- package/source/packages/scramjet/packages/core/src/shared/mime.ts +234 -0
- package/source/packages/scramjet/packages/core/src/shared/refresh.ts +164 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/css.ts +67 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/html.ts +603 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/index.ts +6 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/js.ts +158 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/url.ts +248 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/wasm.ts +58 -0
- package/source/packages/scramjet/packages/core/src/shared/rewriters/worker.ts +37 -0
- package/source/packages/scramjet/packages/core/src/shared/set-cookie-parser.ts +195 -0
- package/source/packages/scramjet/packages/core/src/shared/snapshot.ts +245 -0
- package/source/packages/scramjet/packages/core/src/shared/sniffEncoding.ts +1061 -0
- package/source/packages/scramjet/packages/core/src/shared/util.ts +35 -0
- package/source/packages/scramjet/packages/core/src/symbols.ts +9 -0
- package/source/packages/scramjet/packages/core/src/sync.ts +63 -0
- package/source/packages/scramjet/packages/core/src/types.ts +66 -0
- package/source/packages/scramjet/packages/core/src/typesEntry.ts +6 -0
- package/source/packages/scramjet/packages/core/tsconfig.json +21 -0
- package/source/packages/scramjet/packages/rpc/index.ts +100 -0
- package/source/packages/scramjet/packages/rpc/package.json +7 -0
- package/source/packages/scramjet/packages/utils/package.json +39 -0
- package/source/packages/scramjet/packages/utils/src/alwaysLastBubble.ts +172 -0
- package/source/packages/scramjet/packages/utils/src/catch-escaped-links.ts +34 -0
- package/source/packages/scramjet/packages/utils/src/event-handler-plugin.ts +86 -0
- package/source/packages/scramjet/packages/utils/src/global.d.ts +8 -0
- package/source/packages/scramjet/packages/utils/src/http-cache-plugin.ts +475 -0
- package/source/packages/scramjet/packages/utils/src/index.ts +26 -0
- package/source/packages/scramjet/packages/utils/src/link-handler-plugin.ts +75 -0
- package/source/packages/scramjet/packages/utils/src/typesEntry.ts +5 -0
- package/source/packages/scramjet/packages/utils/src/url-watcher.ts +37 -0
- package/source/packages/scramjet/packages/utils/src/version.ts +40 -0
- package/source/packages/scramjet/packages/utils/tsconfig.json +11 -0
- package/source/packages/scramjet/patches/htmlparser2@12.0.0.patch +124 -0
- package/source/packages/scramjet/rspack.config.ts +613 -0
- package/source/packages/scramjet/tsconfig.json +11 -0
- package/source/packages/tracker-protocol/package.json +31 -0
- package/source/packages/tracker-protocol/src/index.ts +745 -0
- package/source/packages/tracker-protocol/tsconfig.json +18 -0
- package/source/pnpm-lock.yaml +12018 -0
- package/source/pnpm-workspace.yaml +31 -0
- package/source/rspack.config.ts +103 -0
- package/source/scripts/update-adblock-assets.mjs +164 -0
- package/third_party/filter-lists/LICENSE-CC-BY-SA-3.0.txt +359 -0
- package/third_party/filter-lists/LICENSE-GPL-3.0.txt +674 -0
- package/third_party/filter-lists/LICENSE-MPL-2.0.txt +375 -0
- package/third_party/filter-lists/README.md +24 -0
- package/third_party/filter-lists/easylist.txt +83088 -0
- package/third_party/filter-lists/easyprivacy.txt +56361 -0
- package/third_party/filter-lists/manifest.json +56 -0
- package/third_party/filter-lists/ublock-filters.txt +10937 -0
- package/third_party/filter-lists/ublock-privacy.txt +3209 -0
- package/third_party/filter-lists/ublock-resources.json +1852 -0
- package/third_party/filter-lists/ublock-unbreak.txt +6026 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"lib": ["ES2022", "dom", "dom.iterable"],
|
|
4
|
+
"target": "ES2022",
|
|
5
|
+
"declaration": true,
|
|
6
|
+
"declarationDir": "dist/types",
|
|
7
|
+
"rootDir": "src",
|
|
8
|
+
"moduleResolution": "bundler",
|
|
9
|
+
"stripInternal": true,
|
|
10
|
+
"strict": true,
|
|
11
|
+
"allowUnusedLabels": true
|
|
12
|
+
},
|
|
13
|
+
"include": ["src"],
|
|
14
|
+
"exclude": ["dist"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "roxxie-proxy-u",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A static-hostable browser proxy with tracker-rendezvoused WebRTC exit nodes.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"keywords": [],
|
|
7
|
+
"author": "",
|
|
8
|
+
"license": "AGPL-3.0-only",
|
|
9
|
+
"packageManager": "pnpm@10.12.1",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rspack build",
|
|
12
|
+
"build:protocol": "pnpm --filter roxxie-transports-adrift-protocol build",
|
|
13
|
+
"build:tracker-protocol": "pnpm --filter roxxie-transports-tracker-protocol build",
|
|
14
|
+
"build:transport": "pnpm --filter roxxie-transports build",
|
|
15
|
+
"build:node": "pnpm --filter roxxie-transports-node build",
|
|
16
|
+
"build:tracker": "pnpm --filter roxxie-transports-tracker build",
|
|
17
|
+
"build:dreamland": "cd external/dreamlandjs && pnpm build",
|
|
18
|
+
"build:chrome": "cd packages/chrome && pnpm build",
|
|
19
|
+
"build:static": "pnpm build:protocol && pnpm build:tracker-protocol && pnpm build:transport && pnpm build:dreamland && pnpm rewriter:build && CI=1 SKIP_DECLARATIONS=1 pnpm build && VITE_ISOLATION_ORIGIN=none VITE_SINGLEFILE=1 VITE_SOURCEMAP=0 pnpm --dir packages/chrome exec vite build --outDir ../../dist/static --emptyOutDir",
|
|
20
|
+
"build:all": "pnpm build:static && pnpm build:node && pnpm build:tracker",
|
|
21
|
+
"rewriter:build": "cd packages/scramjet/packages/core && pnpm run rewriter:build",
|
|
22
|
+
"test:roxxie": "pnpm --filter roxxie-transports-adrift-protocol test && pnpm --filter roxxie-transports-tracker-protocol test && pnpm --filter roxxie-transports test && pnpm --filter roxxie-transports-node test && pnpm --filter roxxie-transports-tracker test && pnpm --dir packages/chrome test:adblock",
|
|
23
|
+
"dev": "node --no-warnings=ExperimentalWarning devserver.ts",
|
|
24
|
+
"eslint": "node scripts/eslint-cli.mjs",
|
|
25
|
+
"lint": "pnpm eslint .",
|
|
26
|
+
"watch": "rspack build --watch",
|
|
27
|
+
"format": "prettier --write .",
|
|
28
|
+
"preinstall": "npx only-allow pnpm",
|
|
29
|
+
"ii": "pnpm install"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@eslint/eslintrc": "^3.3.5",
|
|
33
|
+
"@eslint/js": "^10.0.1",
|
|
34
|
+
"@rsdoctor/rspack-plugin": "^1.4.0",
|
|
35
|
+
"@rspack/cli": "^1.5.8",
|
|
36
|
+
"@rspack/core": "^1.5.8",
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "8.57.3-alpha.3",
|
|
38
|
+
"@typescript-eslint/parser": "8.57.3-alpha.3",
|
|
39
|
+
"bufferutil": "^4.0.9",
|
|
40
|
+
"chafa-wasm": "^0.3.1",
|
|
41
|
+
"chalk": "^5.6.2",
|
|
42
|
+
"eslint": "^10.1.0",
|
|
43
|
+
"prettier": "^3.6.2",
|
|
44
|
+
"ts-checker-rspack-plugin": "^1.1.6",
|
|
45
|
+
"tsc-alias": "^1.8.16",
|
|
46
|
+
"vite": "^7.1.12"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "roxxie-transports-adrift-protocol",
|
|
3
|
+
"version": "6.0.0",
|
|
4
|
+
"description": "Browser-safe wire types and codecs for Roxxie Proxy U transports",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/src/index.d.ts",
|
|
10
|
+
"import": "./dist/src/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist/src"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc -p tsconfig.json",
|
|
18
|
+
"test": "npm run build && node --test dist/test/*.test.js"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20"
|
|
22
|
+
},
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"license": "AGPL-3.0-only",
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@types/node": "^20.0.0",
|
|
29
|
+
"typescript": "~5.9.3"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Version 6 removes the raw TCP surface and adds an application-level RTT
|
|
3
|
+
* probe. HTTP(S) requests and target-site WebSockets remain multiplexed over
|
|
4
|
+
* the selected WebRTC data channel.
|
|
5
|
+
*/
|
|
6
|
+
export const PROTOCOL_VERSION = "6.0";
|
|
7
|
+
export const FRAME_HEADER_BYTES = 3;
|
|
8
|
+
export const MAX_CHUNK_SIZE = 12 * 1024;
|
|
9
|
+
export const MAX_DATA_CHANNEL_MESSAGE_BYTES = 256 * 1024;
|
|
10
|
+
export const HEADER_LIMITS = Object.freeze({
|
|
11
|
+
maxEntries: 256,
|
|
12
|
+
maxNameBytes: 256,
|
|
13
|
+
maxValueBytes: 16 * 1024,
|
|
14
|
+
maxTotalBytes: 64 * 1024,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const C2S_HELLO = "haiii ";
|
|
18
|
+
export const S2C_HELLO_OK = ":3";
|
|
19
|
+
export const S2C_HELLO_ERR = ":< ";
|
|
20
|
+
|
|
21
|
+
export const C2SRequestTypes = {
|
|
22
|
+
HTTPRequestStart: 0,
|
|
23
|
+
HTTPRequestChunk: 1,
|
|
24
|
+
HTTPRequestEnd: 2,
|
|
25
|
+
WSOpen: 3,
|
|
26
|
+
WSClose: 4,
|
|
27
|
+
/** Single-frame compatibility operations for messages <= MAX_CHUNK_SIZE. */
|
|
28
|
+
WSSendText: 5,
|
|
29
|
+
WSSendBinary: 6,
|
|
30
|
+
WSTextStart: 7,
|
|
31
|
+
WSBinaryStart: 8,
|
|
32
|
+
WSDataChunk: 9,
|
|
33
|
+
WSDataEnd: 10,
|
|
34
|
+
HTTPRequestAbort: 11,
|
|
35
|
+
Ping: 12,
|
|
36
|
+
} as const;
|
|
37
|
+
|
|
38
|
+
export const S2CRequestTypes = {
|
|
39
|
+
HTTPResponseStart: 0,
|
|
40
|
+
HTTPResponseChunk: 1,
|
|
41
|
+
HTTPResponseEnd: 2,
|
|
42
|
+
WSOpen: 3,
|
|
43
|
+
WSClose: 4,
|
|
44
|
+
WSTextStart: 5,
|
|
45
|
+
WSBinaryStart: 6,
|
|
46
|
+
WSDataChunk: 7,
|
|
47
|
+
WSDataEnd: 8,
|
|
48
|
+
WSError: 9,
|
|
49
|
+
Pong: 10,
|
|
50
|
+
} as const;
|
|
51
|
+
|
|
52
|
+
export type ObjectValue<T> = T[keyof T];
|
|
53
|
+
export type C2SRequestType = ObjectValue<typeof C2SRequestTypes>;
|
|
54
|
+
export type S2CRequestType = ObjectValue<typeof S2CRequestTypes>;
|
|
55
|
+
export type RequestType = C2SRequestType | S2CRequestType;
|
|
56
|
+
|
|
57
|
+
/** Header names retain their original spelling and duplicate values stay ordered. */
|
|
58
|
+
export type HeaderEntry = readonly [name: string, value: string];
|
|
59
|
+
export type HeaderList = readonly HeaderEntry[];
|
|
60
|
+
|
|
61
|
+
export interface HTTPRequestPayload {
|
|
62
|
+
method: string;
|
|
63
|
+
requestHeaders: HeaderList;
|
|
64
|
+
remote: string;
|
|
65
|
+
hasBody: boolean;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface HTTPResponsePayload {
|
|
69
|
+
status: number;
|
|
70
|
+
statusText: string;
|
|
71
|
+
headers: HeaderList;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface C2SWSOpenPayload {
|
|
75
|
+
url: string;
|
|
76
|
+
protocols: string[];
|
|
77
|
+
requestHeaders: HeaderList;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface S2CWSOpenPayload {
|
|
81
|
+
protocol: string;
|
|
82
|
+
extensions: string;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
export interface WSClosePayload {
|
|
86
|
+
code: number;
|
|
87
|
+
reason: string;
|
|
88
|
+
wasClean?: boolean;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export interface WSErrorPayload {
|
|
92
|
+
message: string;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface PingPayload {
|
|
96
|
+
nonce: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface SessionDescriptionJSON {
|
|
100
|
+
type: "offer" | "answer" | "pranswer" | "rollback";
|
|
101
|
+
sdp?: string;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface IceCandidateJSON {
|
|
105
|
+
candidate: string;
|
|
106
|
+
sdpMid?: string | null;
|
|
107
|
+
sdpMLineIndex?: number | null;
|
|
108
|
+
usernameFragment?: string | null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export interface RTCIceServerJSON {
|
|
112
|
+
urls: string | string[];
|
|
113
|
+
username?: string;
|
|
114
|
+
credential?: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface WebRTCSessionOffer {
|
|
118
|
+
protocolVersion: typeof PROTOCOL_VERSION | string;
|
|
119
|
+
offer: SessionDescriptionJSON;
|
|
120
|
+
candidates: IceCandidateJSON[];
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface WebRTCSessionAnswer {
|
|
124
|
+
protocolVersion: typeof PROTOCOL_VERSION | string;
|
|
125
|
+
sessionId: string;
|
|
126
|
+
answer: SessionDescriptionJSON;
|
|
127
|
+
candidates: IceCandidateJSON[];
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Minimal binary interface implemented by the WebRTC data-channel transport. */
|
|
131
|
+
export interface BinaryTransport {
|
|
132
|
+
ondata: (data: ArrayBuffer) => void;
|
|
133
|
+
onopen?: () => void;
|
|
134
|
+
onclose?: (reason?: unknown) => void;
|
|
135
|
+
send(data: ArrayBuffer): void | Promise<void>;
|
|
136
|
+
close(code?: number, reason?: string): void;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface DecodedFrame<TOperation extends number = number> {
|
|
140
|
+
sequence: number;
|
|
141
|
+
operation: TOperation;
|
|
142
|
+
payload: ArrayBuffer;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export class ProtocolError extends Error {
|
|
146
|
+
constructor(message: string) {
|
|
147
|
+
super(message);
|
|
148
|
+
this.name = "ProtocolError";
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function bytesOf(data: ArrayBuffer | ArrayBufferView): Uint8Array {
|
|
153
|
+
if (ArrayBuffer.isView(data)) {
|
|
154
|
+
return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
155
|
+
}
|
|
156
|
+
// Constructing a view works for ArrayBuffers from another browser realm,
|
|
157
|
+
// unlike an instanceof check against this realm's ArrayBuffer constructor.
|
|
158
|
+
return new Uint8Array(data);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function copiedBuffer(bytes: Uint8Array): ArrayBuffer {
|
|
162
|
+
const copy = new Uint8Array(bytes.byteLength);
|
|
163
|
+
copy.set(bytes);
|
|
164
|
+
return copy.buffer;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export function encodeFrame(
|
|
168
|
+
sequence: number,
|
|
169
|
+
operation: number,
|
|
170
|
+
payload?: ArrayBuffer | ArrayBufferView
|
|
171
|
+
): ArrayBuffer {
|
|
172
|
+
if (!Number.isInteger(sequence) || sequence < 0 || sequence > 0xffff) {
|
|
173
|
+
throw new ProtocolError(
|
|
174
|
+
"Frame sequence must be an unsigned 16-bit integer"
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
if (!Number.isInteger(operation) || operation < 0 || operation > 0xff) {
|
|
178
|
+
throw new ProtocolError(
|
|
179
|
+
"Frame operation must be an unsigned 8-bit integer"
|
|
180
|
+
);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const payloadBytes = payload ? bytesOf(payload) : new Uint8Array(0);
|
|
184
|
+
const output = new Uint8Array(FRAME_HEADER_BYTES + payloadBytes.byteLength);
|
|
185
|
+
const view = new DataView(output.buffer);
|
|
186
|
+
view.setUint16(0, sequence);
|
|
187
|
+
view.setUint8(2, operation);
|
|
188
|
+
output.set(payloadBytes, FRAME_HEADER_BYTES);
|
|
189
|
+
return output.buffer;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export function decodeFrame<TOperation extends number = number>(
|
|
193
|
+
data: ArrayBuffer | ArrayBufferView
|
|
194
|
+
): DecodedFrame<TOperation> {
|
|
195
|
+
const bytes = bytesOf(data);
|
|
196
|
+
if (bytes.byteLength < FRAME_HEADER_BYTES) {
|
|
197
|
+
throw new ProtocolError(
|
|
198
|
+
`Frame must contain at least ${FRAME_HEADER_BYTES} bytes`
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
203
|
+
return {
|
|
204
|
+
sequence: view.getUint16(0),
|
|
205
|
+
operation: view.getUint8(2) as TOperation,
|
|
206
|
+
payload: copiedBuffer(bytes.subarray(FRAME_HEADER_BYTES)),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const encoder = new TextEncoder();
|
|
211
|
+
const decoder = new TextDecoder("utf-8", { fatal: true });
|
|
212
|
+
|
|
213
|
+
export function encodeJSON(value: unknown): ArrayBuffer {
|
|
214
|
+
return copiedBuffer(encoder.encode(JSON.stringify(value)));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export function decodeJSON<T = unknown>(
|
|
218
|
+
data: ArrayBuffer | ArrayBufferView
|
|
219
|
+
): T {
|
|
220
|
+
let text: string;
|
|
221
|
+
try {
|
|
222
|
+
text = decoder.decode(bytesOf(data));
|
|
223
|
+
} catch {
|
|
224
|
+
throw new ProtocolError("Payload is not valid UTF-8");
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
return JSON.parse(text) as T;
|
|
228
|
+
} catch {
|
|
229
|
+
throw new ProtocolError("Payload is not valid JSON");
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
export function encodeJSONFrame(
|
|
234
|
+
sequence: number,
|
|
235
|
+
operation: number,
|
|
236
|
+
value: unknown
|
|
237
|
+
): ArrayBuffer {
|
|
238
|
+
return encodeFrame(sequence, operation, encodeJSON(value));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export function encodeClientHello(version = PROTOCOL_VERSION): ArrayBuffer {
|
|
242
|
+
return copiedBuffer(encoder.encode(C2S_HELLO + version));
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export function decodeText(data: ArrayBuffer | ArrayBufferView): string {
|
|
246
|
+
try {
|
|
247
|
+
return decoder.decode(bytesOf(data));
|
|
248
|
+
} catch {
|
|
249
|
+
throw new ProtocolError("Message is not valid UTF-8");
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export function parseClientHello(data: ArrayBuffer | ArrayBufferView): string {
|
|
254
|
+
const hello = decodeText(data);
|
|
255
|
+
if (!hello.startsWith(C2S_HELLO)) {
|
|
256
|
+
throw new ProtocolError("Invalid client hello");
|
|
257
|
+
}
|
|
258
|
+
const version = hello.slice(C2S_HELLO.length);
|
|
259
|
+
if (version.length === 0) throw new ProtocolError("Missing protocol version");
|
|
260
|
+
return version;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
export function encodeServerHelloOK(): ArrayBuffer {
|
|
264
|
+
return copiedBuffer(encoder.encode(S2C_HELLO_OK));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export function encodeServerHelloError(
|
|
268
|
+
expectedVersion = PROTOCOL_VERSION
|
|
269
|
+
): ArrayBuffer {
|
|
270
|
+
return copiedBuffer(encoder.encode(S2C_HELLO_ERR + expectedVersion));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export function assertHeaderList(value: unknown): asserts value is HeaderList {
|
|
274
|
+
if (!Array.isArray(value))
|
|
275
|
+
throw new ProtocolError("Headers must be an array");
|
|
276
|
+
if (value.length > HEADER_LIMITS.maxEntries) {
|
|
277
|
+
throw new ProtocolError(
|
|
278
|
+
`Headers exceed the ${HEADER_LIMITS.maxEntries}-entry limit`
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
let totalBytes = 0;
|
|
282
|
+
for (const entry of value) {
|
|
283
|
+
if (
|
|
284
|
+
!Array.isArray(entry) ||
|
|
285
|
+
entry.length !== 2 ||
|
|
286
|
+
typeof entry[0] !== "string" ||
|
|
287
|
+
typeof entry[1] !== "string"
|
|
288
|
+
) {
|
|
289
|
+
throw new ProtocolError("Invalid header entry");
|
|
290
|
+
}
|
|
291
|
+
const [name, headerValue] = entry;
|
|
292
|
+
if (!/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/u.test(name)) {
|
|
293
|
+
throw new ProtocolError("Invalid header name");
|
|
294
|
+
}
|
|
295
|
+
if (/[\0-\x08\x0a-\x1f\x7f]/u.test(headerValue)) {
|
|
296
|
+
throw new ProtocolError("Invalid header value");
|
|
297
|
+
}
|
|
298
|
+
if (name.length > HEADER_LIMITS.maxNameBytes) {
|
|
299
|
+
throw new ProtocolError("Header name exceeds the byte limit");
|
|
300
|
+
}
|
|
301
|
+
if (headerValue.length > HEADER_LIMITS.maxValueBytes) {
|
|
302
|
+
throw new ProtocolError("Header value exceeds the byte limit");
|
|
303
|
+
}
|
|
304
|
+
const nameBytes = encoder.encode(name).byteLength;
|
|
305
|
+
const valueBytes = encoder.encode(headerValue).byteLength;
|
|
306
|
+
if (nameBytes > HEADER_LIMITS.maxNameBytes) {
|
|
307
|
+
throw new ProtocolError("Header name exceeds the byte limit");
|
|
308
|
+
}
|
|
309
|
+
if (valueBytes > HEADER_LIMITS.maxValueBytes) {
|
|
310
|
+
throw new ProtocolError("Header value exceeds the byte limit");
|
|
311
|
+
}
|
|
312
|
+
// Include the bytes used by `: ` and CRLF in the aggregate wire budget.
|
|
313
|
+
totalBytes += nameBytes + valueBytes + 4;
|
|
314
|
+
if (totalBytes > HEADER_LIMITS.maxTotalBytes) {
|
|
315
|
+
throw new ProtocolError("Headers exceed the aggregate byte limit");
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
export function headerListToRecord(
|
|
321
|
+
headers: HeaderList
|
|
322
|
+
): Record<string, string | string[]> {
|
|
323
|
+
assertHeaderList(headers);
|
|
324
|
+
const result: Record<string, string | string[]> = Object.create(
|
|
325
|
+
null
|
|
326
|
+
) as Record<string, string | string[]>;
|
|
327
|
+
for (const [rawName, value] of headers) {
|
|
328
|
+
const name = rawName.toLowerCase();
|
|
329
|
+
const previous = result[name];
|
|
330
|
+
if (previous === undefined) result[name] = value;
|
|
331
|
+
else if (Array.isArray(previous)) previous.push(value);
|
|
332
|
+
else result[name] = [previous, value];
|
|
333
|
+
}
|
|
334
|
+
return result;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
export function recordToHeaderList(
|
|
338
|
+
headers: Readonly<Record<string, string | readonly string[] | undefined>>
|
|
339
|
+
): HeaderEntry[] {
|
|
340
|
+
const result: HeaderEntry[] = [];
|
|
341
|
+
for (const [name, rawValue] of Object.entries(headers)) {
|
|
342
|
+
if (rawValue === undefined) continue;
|
|
343
|
+
const values = Array.isArray(rawValue) ? rawValue : [rawValue];
|
|
344
|
+
for (const value of values) result.push([name, value]);
|
|
345
|
+
}
|
|
346
|
+
assertHeaderList(result);
|
|
347
|
+
return result;
|
|
348
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"lib": ["ES2022", "DOM"],
|
|
7
|
+
"rootDir": ".",
|
|
8
|
+
"outDir": "dist",
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"declarationMap": true,
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"strict": true,
|
|
13
|
+
"noUncheckedIndexedAccess": true,
|
|
14
|
+
"exactOptionalPropertyTypes": true,
|
|
15
|
+
"skipLibCheck": true
|
|
16
|
+
},
|
|
17
|
+
"include": ["src/**/*.ts", "test/**/*.ts"]
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020-present liriliri
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# chobitsu
|
|
2
|
+
|
|
3
|
+
[![NPM version][npm-image]][npm-url]
|
|
4
|
+
[![Build status][ci-image]][ci-url]
|
|
5
|
+
[![Test coverage][codecov-image]][codecov-url]
|
|
6
|
+
[![License][license-image]][npm-url]
|
|
7
|
+
|
|
8
|
+
[npm-image]: https://img.shields.io/npm/v/chobitsu?style=flat-square
|
|
9
|
+
[npm-url]: https://npmjs.org/package/chobitsu
|
|
10
|
+
[ci-image]: https://img.shields.io/github/actions/workflow/status/liriliri/chobitsu/main.yml?branch=master&style=flat-square
|
|
11
|
+
[ci-url]: https://github.com/liriliri/chobitsu/actions/workflows/main.yml
|
|
12
|
+
[codecov-image]: https://img.shields.io/codecov/c/github/liriliri/chobitsu?style=flat-square
|
|
13
|
+
[codecov-url]: https://codecov.io/github/liriliri/chobitsu?branch=master
|
|
14
|
+
[license-image]: https://img.shields.io/npm/l/chobitsu?style=flat-square
|
|
15
|
+
|
|
16
|
+
[Chrome devtools protocol](https://chromedevtools.github.io/devtools-protocol/) JavaScript implementation.
|
|
17
|
+
|
|
18
|
+
## Install
|
|
19
|
+
|
|
20
|
+
You can get it on npm.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install chobitsu --save
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
const chobitsu = require('chobitsu');
|
|
30
|
+
|
|
31
|
+
chobitsu.setOnMessage(message => {
|
|
32
|
+
console.log(message);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
chobitsu.sendRawMessage(JSON.stringify({
|
|
36
|
+
id: 1,
|
|
37
|
+
method: 'DOMStorage.clear',
|
|
38
|
+
params: {
|
|
39
|
+
storageId: {
|
|
40
|
+
isLocalStorage: true,
|
|
41
|
+
securityOrigin: 'http://example.com'
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}));
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For more detailed usage instructions, please read the documentation at [chii.liriliri.io](https://chii.liriliri.io/docs/chobitsu.html)!
|