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,193 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
ComponentContext,
|
|
4
|
+
DomImpl,
|
|
5
|
+
domImpl,
|
|
6
|
+
jsx,
|
|
7
|
+
setDomImpl,
|
|
8
|
+
} from "dreamland/core";
|
|
9
|
+
import { SSR_DATA, SSR_ID } from "../common/consts";
|
|
10
|
+
import { hydrateState, Json } from "../common/serialize";
|
|
11
|
+
import { SsrData, SsrObject } from "../common/types";
|
|
12
|
+
|
|
13
|
+
// single function for all hydration mismatch warnings, easy to breakpoint
|
|
14
|
+
let mismatch: (msg: string) => void;
|
|
15
|
+
let isPruned: (idx: number) => boolean;
|
|
16
|
+
dev: {
|
|
17
|
+
mismatch = (msg) => {
|
|
18
|
+
console.warn("[dreamland.js] Hydration mismatch: " + msg);
|
|
19
|
+
};
|
|
20
|
+
isPruned = () => false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export let hydrate = async (
|
|
24
|
+
component: () => any,
|
|
25
|
+
ssr: HTMLElement,
|
|
26
|
+
head: HTMLElement,
|
|
27
|
+
dataEl: HTMLElement
|
|
28
|
+
) => {
|
|
29
|
+
dev: {
|
|
30
|
+
if (dataEl.getAttribute(SSR_DATA) !== ":3") throw "invalid ssr root";
|
|
31
|
+
}
|
|
32
|
+
// decode entities
|
|
33
|
+
let textarea = jsx("textarea", {}) as HTMLTextAreaElement;
|
|
34
|
+
textarea.innerHTML = dataEl.innerText;
|
|
35
|
+
let data: SsrData = Json.parse(textarea.value);
|
|
36
|
+
|
|
37
|
+
dev: {
|
|
38
|
+
if (data.p) {
|
|
39
|
+
let ranges = data.p;
|
|
40
|
+
isPruned = (idx) => {
|
|
41
|
+
let lo = 0,
|
|
42
|
+
hi = ranges.length - 1;
|
|
43
|
+
while (lo <= hi) {
|
|
44
|
+
let mid = (lo + hi) >> 1;
|
|
45
|
+
let r = ranges[mid];
|
|
46
|
+
let start = typeof r === "number" ? r : r[0];
|
|
47
|
+
let end = typeof r === "number" ? r : r[1];
|
|
48
|
+
if (idx < start) hi = mid - 1;
|
|
49
|
+
else if (idx > end) lo = mid + 1;
|
|
50
|
+
else return true;
|
|
51
|
+
}
|
|
52
|
+
return false;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
let els: [number, HTMLElement][] = [];
|
|
58
|
+
|
|
59
|
+
let rootIdx = +ssr.getAttribute(SSR_ID)!;
|
|
60
|
+
let idx = -1;
|
|
61
|
+
let getInternal = (idx: number) => {
|
|
62
|
+
let selector = `[${SSR_ID}="${idx}"]`;
|
|
63
|
+
let ret =
|
|
64
|
+
rootIdx == idx
|
|
65
|
+
? ssr
|
|
66
|
+
: ssr.querySelector<HTMLElement>(selector) ||
|
|
67
|
+
head.querySelector<HTMLElement>(selector);
|
|
68
|
+
if (ret) els.push([idx, ret]);
|
|
69
|
+
return ret;
|
|
70
|
+
};
|
|
71
|
+
let getRelative = () => {
|
|
72
|
+
let info = data.n[++idx];
|
|
73
|
+
if (!info) return;
|
|
74
|
+
|
|
75
|
+
let [parent, offset] = info as [number, number];
|
|
76
|
+
return getInternal(parent)?.childNodes?.[offset];
|
|
77
|
+
};
|
|
78
|
+
let hydrateCx = (cx: ComponentContext<any>) => {
|
|
79
|
+
let ssr = data.n[cx?.state?.root?.getAttribute?.(SSR_ID) as any as number];
|
|
80
|
+
if (ssr) {
|
|
81
|
+
hydrateState(data, ssr as SsrObject, cx.state);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
let hydrating = (x: HTMLElement) => x.hasAttribute(SSR_ID);
|
|
85
|
+
|
|
86
|
+
for (let [parent, offset, len] of data.t) {
|
|
87
|
+
let text = getInternal(parent)!.childNodes[offset] as Text;
|
|
88
|
+
if (text.length !== len) text.splitText(len);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
let _old = domImpl,
|
|
92
|
+
old = _old();
|
|
93
|
+
let cxs: ComponentContext<Component<any, any>>[] = [];
|
|
94
|
+
let inits: (Promise<any> | any)[] = [];
|
|
95
|
+
let mounts: typeof inits = [];
|
|
96
|
+
let vdom = [
|
|
97
|
+
{
|
|
98
|
+
createElement: (x: any) => {
|
|
99
|
+
let el = getInternal(++idx);
|
|
100
|
+
dev: {
|
|
101
|
+
if (el && el.tagName.toLowerCase() !== x.toLowerCase())
|
|
102
|
+
mismatch(
|
|
103
|
+
`expected <${x}> but server rendered <${el.tagName.toLowerCase()}> (${SSR_ID}=${idx})`
|
|
104
|
+
);
|
|
105
|
+
if (!el && !isPruned(idx))
|
|
106
|
+
mismatch(
|
|
107
|
+
`could not find server-rendered element for <${x}> (${SSR_ID}=${idx})`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
return el || old[0].createElement(x);
|
|
111
|
+
},
|
|
112
|
+
createElementNS: (x: any, y: any) => {
|
|
113
|
+
let el = getInternal(++idx);
|
|
114
|
+
dev: {
|
|
115
|
+
if (el && el.tagName.toLowerCase() !== y.toLowerCase())
|
|
116
|
+
mismatch(
|
|
117
|
+
`expected <${y}> (ns: ${x}) but server rendered <${el.tagName.toLowerCase()}> (${SSR_ID}=${idx})`
|
|
118
|
+
);
|
|
119
|
+
if (!el && !isPruned(idx))
|
|
120
|
+
mismatch(
|
|
121
|
+
`could not find server-rendered element for <${y}> (ns: ${x}) (${SSR_ID}=${idx})`
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
return el || old[0].createElementNS(x, y);
|
|
125
|
+
},
|
|
126
|
+
head: old[0].head,
|
|
127
|
+
},
|
|
128
|
+
old[1],
|
|
129
|
+
(x: any) => {
|
|
130
|
+
let node = getRelative();
|
|
131
|
+
dev: {
|
|
132
|
+
if (node && node.nodeType !== 3)
|
|
133
|
+
mismatch(
|
|
134
|
+
`expected text node but found node of type ${node.nodeType} (${SSR_ID}=${idx})`
|
|
135
|
+
);
|
|
136
|
+
if (
|
|
137
|
+
node &&
|
|
138
|
+
node.nodeType === 3 &&
|
|
139
|
+
x != null &&
|
|
140
|
+
"" + x !== node.textContent
|
|
141
|
+
)
|
|
142
|
+
mismatch(
|
|
143
|
+
`text content differs - expected "${x}" but server rendered "${node.textContent}" (${SSR_ID}=${idx})`
|
|
144
|
+
);
|
|
145
|
+
if (!node && !isPruned(idx))
|
|
146
|
+
mismatch(
|
|
147
|
+
`could not find server-rendered text node for "${x}" (${SSR_ID}=${idx})`
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
return node || old[2](x);
|
|
151
|
+
},
|
|
152
|
+
(x: any) => {
|
|
153
|
+
let node = getRelative();
|
|
154
|
+
dev: {
|
|
155
|
+
if (node && node.nodeType !== 8)
|
|
156
|
+
mismatch(
|
|
157
|
+
`expected comment node but found node of type ${node.nodeType} (${SSR_ID}=${idx})`
|
|
158
|
+
);
|
|
159
|
+
if (!node && !isPruned(idx))
|
|
160
|
+
mismatch(
|
|
161
|
+
`could not find server-rendered comment node (${SSR_ID}=${idx})`
|
|
162
|
+
);
|
|
163
|
+
}
|
|
164
|
+
return node || old[3](x);
|
|
165
|
+
},
|
|
166
|
+
(x) => data.i[idx + 1] || old[4](x),
|
|
167
|
+
old[5],
|
|
168
|
+
hydrating,
|
|
169
|
+
(_init, _state, cx) => {
|
|
170
|
+
if (cx?.state?.root instanceof old[1] && !hydrating(cx.state?.root))
|
|
171
|
+
hydrateCx(cx);
|
|
172
|
+
},
|
|
173
|
+
cxs,
|
|
174
|
+
inits,
|
|
175
|
+
mounts,
|
|
176
|
+
] as const satisfies DomImpl;
|
|
177
|
+
|
|
178
|
+
setDomImpl(() => vdom);
|
|
179
|
+
let root = await component();
|
|
180
|
+
while (inits.length) {
|
|
181
|
+
await Promise.all(inits.splice(0));
|
|
182
|
+
}
|
|
183
|
+
setDomImpl(_old);
|
|
184
|
+
|
|
185
|
+
cxs.map((x) => {
|
|
186
|
+
hydrateCx(x);
|
|
187
|
+
mounts.push(x.mount?.());
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
await Promise.all(mounts);
|
|
191
|
+
|
|
192
|
+
return root;
|
|
193
|
+
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Pointer, DREAMLAND, NO_CHANGE } from "dreamland/core";
|
|
2
|
+
import { SsrData, SsrObject, SsrPointer, SsrValue } from "./types";
|
|
3
|
+
|
|
4
|
+
export let Json = JSON;
|
|
5
|
+
|
|
6
|
+
export let serializeState = (
|
|
7
|
+
data: SsrData,
|
|
8
|
+
object: object,
|
|
9
|
+
isNode: (x: any) => boolean
|
|
10
|
+
): SsrObject => {
|
|
11
|
+
let push = (arr: string[], val: any): number => {
|
|
12
|
+
let idx = arr.indexOf(val);
|
|
13
|
+
if (idx != -1) return idx;
|
|
14
|
+
else return arr.push(val) - 1;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
let exportPtr = (ptr: Pointer<any>): SsrPointer => {
|
|
18
|
+
let zipped = ptr[DREAMLAND]();
|
|
19
|
+
return zipped ? zipped.map(exportPtr) : { v: _val(ptr.value) };
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
let isUndefined = (x: any): x is undefined => typeof x == "undefined";
|
|
23
|
+
|
|
24
|
+
let _val = (val: any): SsrValue | undefined => {
|
|
25
|
+
if (!["bigint", "function", "object"].includes(typeof val)) {
|
|
26
|
+
return push(data.v, val);
|
|
27
|
+
} else if (val instanceof Pointer) {
|
|
28
|
+
return [4, exportPtr(val)];
|
|
29
|
+
} else if (val instanceof Map) {
|
|
30
|
+
let entries = Object.fromEntries(val.entries());
|
|
31
|
+
return [0, _serialize(entries)];
|
|
32
|
+
} else if (val instanceof Set) {
|
|
33
|
+
let vals = [...val.values()].map((x) => _val(x));
|
|
34
|
+
if (vals.some(isUndefined)) return;
|
|
35
|
+
|
|
36
|
+
return [2, vals];
|
|
37
|
+
} else if (val instanceof Array) {
|
|
38
|
+
let vals = val.map((x) => _val(x));
|
|
39
|
+
if (vals.some(isUndefined)) return;
|
|
40
|
+
|
|
41
|
+
return [3, vals];
|
|
42
|
+
} else if (
|
|
43
|
+
typeof val === "object" &&
|
|
44
|
+
[undefined, Object].includes(val.constructor)
|
|
45
|
+
) {
|
|
46
|
+
return [1, _serialize(val)];
|
|
47
|
+
} else if (!isNode(val)) {
|
|
48
|
+
dev: {
|
|
49
|
+
if (val instanceof Function) return;
|
|
50
|
+
|
|
51
|
+
console.warn("[dreamland.js] did not serialize unknown value ", val);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
let _serialize = (object: any, root?: boolean): SsrObject => {
|
|
57
|
+
let out: SsrObject = [];
|
|
58
|
+
if (!object[NO_CHANGE])
|
|
59
|
+
for (let k in object) {
|
|
60
|
+
if (root && ["cx", "root"].includes(k)) continue;
|
|
61
|
+
|
|
62
|
+
let v = object[k];
|
|
63
|
+
let val = _val(v);
|
|
64
|
+
|
|
65
|
+
if (!isUndefined(val)) out.push([push(data.k, k), val]);
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return _serialize(object, true);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export let hydrateState = (data: SsrData, state: SsrObject, target: any) => {
|
|
74
|
+
let hydratePtr = (ptr: Pointer<any>, data: SsrPointer) => {
|
|
75
|
+
if (data instanceof Array) {
|
|
76
|
+
ptr[DREAMLAND]()!.forEach((x, i) => hydratePtr(x, data[i]));
|
|
77
|
+
} else {
|
|
78
|
+
ptr.value = _val(data.v, ptr.value, true);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
// TODO this is ugly
|
|
83
|
+
let _val = (val: SsrValue, target?: any, ptr?: boolean): any => {
|
|
84
|
+
if (typeof val == "number") {
|
|
85
|
+
return data.v[val];
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
let [type, v] = val as any;
|
|
89
|
+
if (type == 4) {
|
|
90
|
+
hydratePtr(target as Pointer<any>, v);
|
|
91
|
+
return ptr ? NO_CHANGE : target;
|
|
92
|
+
} else if (type == 2) {
|
|
93
|
+
return new Set(v.map((x: SsrValue) => _val(x, {})));
|
|
94
|
+
} else if (type == 0) {
|
|
95
|
+
let t = {};
|
|
96
|
+
_hydrate(v, t);
|
|
97
|
+
return new Map(Object.entries(t));
|
|
98
|
+
} else if (type == 3) {
|
|
99
|
+
return v.map((x: SsrValue) => _val(x, {}));
|
|
100
|
+
} else if (type == 1) {
|
|
101
|
+
target ||= {};
|
|
102
|
+
_hydrate(v, target);
|
|
103
|
+
return target;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
let _hydrate = (state: SsrObject, target: any) => {
|
|
108
|
+
for (let [_k, v] of state) {
|
|
109
|
+
let k = data.k[_k];
|
|
110
|
+
target[k] = _val(v, target[k]);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
_hydrate(state, target);
|
|
115
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type SsrValue =
|
|
2
|
+
| number /* JSON serialized value in SsrData */
|
|
3
|
+
| [0 /* map */ | 1 /* object */, SsrObject]
|
|
4
|
+
| [2 /* set */ | 3 /* array */, SsrValue[]]
|
|
5
|
+
| [4 /* pointer */, SsrPointer]
|
|
6
|
+
| undefined;
|
|
7
|
+
export type SsrPointer = SsrPointer[] | { v: SsrValue /* values index */ };
|
|
8
|
+
export type SsrObject = [
|
|
9
|
+
number /* keys index */,
|
|
10
|
+
SsrValue /* values index */,
|
|
11
|
+
][];
|
|
12
|
+
|
|
13
|
+
export type Node =
|
|
14
|
+
| SsrObject
|
|
15
|
+
| [
|
|
16
|
+
number,
|
|
17
|
+
number,
|
|
18
|
+
string?,
|
|
19
|
+
] /* text/comment node, 1st number is parent element's ssr id, 2nd is child index, possible debug string */;
|
|
20
|
+
|
|
21
|
+
export interface SsrData {
|
|
22
|
+
k /* keys */: string[];
|
|
23
|
+
v /* values */: any[];
|
|
24
|
+
n /* nodes */: Record<number, Node>;
|
|
25
|
+
i /* idents */: Record<number, string>;
|
|
26
|
+
t /* textFixups */: [number, number, number][];
|
|
27
|
+
p /* pruned element ranges (dev only) */?: (number | [number, number])[];
|
|
28
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
// regular dl2 component syntax
|
|
3
|
+
// autoimported via the importmap stuff or manually mounted with `mount("selector or array of els", DropdownController)`
|
|
4
|
+
export function DropdownController(this: FC<{}, {
|
|
5
|
+
hidden: boolean,
|
|
6
|
+
}>) {
|
|
7
|
+
this.hidden = true;
|
|
8
|
+
|
|
9
|
+
this.cx.mount = () => {
|
|
10
|
+
// this.root points to the controller root
|
|
11
|
+
console.log(this.root.outerHTML);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// return a bunch of mount points as a Fragment
|
|
15
|
+
// mount points have dlssr to figure out where to mount them, id matches "dlssri=..."
|
|
16
|
+
// any children/components or other props will just get added onto or modify the element
|
|
17
|
+
return <>
|
|
18
|
+
<button dlssr={{ id: "abc" }} on:click={() => this.hidden = false} />
|
|
19
|
+
<div dlssr={{ id: "menu" }} class:hidden={use(this.hidden)}>
|
|
20
|
+
<span>hydrated in content</span>
|
|
21
|
+
</div>
|
|
22
|
+
</>
|
|
23
|
+
}
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
import {
|
|
27
|
+
Component,
|
|
28
|
+
DomImpl,
|
|
29
|
+
domImpl,
|
|
30
|
+
h,
|
|
31
|
+
setDomImpl,
|
|
32
|
+
Pointer,
|
|
33
|
+
} from "dreamland/core";
|
|
34
|
+
import { SSR, SSR_ID } from "../common/consts";
|
|
35
|
+
|
|
36
|
+
export let mountOne = (
|
|
37
|
+
root: HTMLElement,
|
|
38
|
+
component: Component<any, any>,
|
|
39
|
+
data?: any
|
|
40
|
+
): void => {
|
|
41
|
+
let lookup = (
|
|
42
|
+
root: HTMLElement,
|
|
43
|
+
ty: string,
|
|
44
|
+
props: any,
|
|
45
|
+
ssr: { id: string } | string
|
|
46
|
+
) => {
|
|
47
|
+
props[SSR] = undefined;
|
|
48
|
+
if (typeof ssr === "string") ssr = { id: ssr };
|
|
49
|
+
|
|
50
|
+
let el: HTMLElement | null | undefined;
|
|
51
|
+
if (ty === SSR + "-root") el = root;
|
|
52
|
+
else if (ssr.id)
|
|
53
|
+
el = root.querySelector<HTMLElement>(`${ty}[${SSR_ID}='${ssr.id}'`);
|
|
54
|
+
|
|
55
|
+
if (!el) return;
|
|
56
|
+
|
|
57
|
+
for (let prop in props) {
|
|
58
|
+
let val;
|
|
59
|
+
if (prop.startsWith("attr:")) val = (el as any)[prop];
|
|
60
|
+
else if (prop == "this" || prop.includes(":")) continue;
|
|
61
|
+
else val = el.getAttribute(prop);
|
|
62
|
+
if (val && props[prop] instanceof Pointer) {
|
|
63
|
+
props[prop].value = val;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return el;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
let _old = domImpl,
|
|
71
|
+
old = _old();
|
|
72
|
+
let vdom = [
|
|
73
|
+
{
|
|
74
|
+
createElement(ty: string, _: any, props: any) {
|
|
75
|
+
return (
|
|
76
|
+
(props[SSR] && lookup(root, ty, props, props[SSR])) ||
|
|
77
|
+
document.createElement(ty)
|
|
78
|
+
);
|
|
79
|
+
},
|
|
80
|
+
createElementNS(ns: string, ty: string, props: any) {
|
|
81
|
+
return (
|
|
82
|
+
lookup(root, ty, props, props[SSR]) ||
|
|
83
|
+
document.createElementNS(ns, ty)
|
|
84
|
+
);
|
|
85
|
+
},
|
|
86
|
+
head: document.head,
|
|
87
|
+
},
|
|
88
|
+
old[1],
|
|
89
|
+
old[2],
|
|
90
|
+
old[3],
|
|
91
|
+
old[4],
|
|
92
|
+
old[5],
|
|
93
|
+
old[6],
|
|
94
|
+
(init, state, cx) => {
|
|
95
|
+
if (init === component) {
|
|
96
|
+
if (init.style) {
|
|
97
|
+
dev: {
|
|
98
|
+
throw new Error("Hybrid SSR controllers do not support CSS");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (cx) {
|
|
103
|
+
cx.state.root = root;
|
|
104
|
+
} else {
|
|
105
|
+
(state as any).ssrData = data;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
] satisfies DomImpl;
|
|
110
|
+
setDomImpl(() => vdom);
|
|
111
|
+
let x = h(component, {});
|
|
112
|
+
setDomImpl(_old);
|
|
113
|
+
|
|
114
|
+
// @ts-expect-error prevent vite from messing stuff up
|
|
115
|
+
return x;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
export let mount = (
|
|
119
|
+
roots: string | HTMLElement[],
|
|
120
|
+
component: Component<any, any>,
|
|
121
|
+
getData?: (x: HTMLElement) => any
|
|
122
|
+
) => {
|
|
123
|
+
(typeof roots == "string"
|
|
124
|
+
? [...document.querySelectorAll<HTMLElement>(roots)]
|
|
125
|
+
: roots
|
|
126
|
+
).map((x) => mountOne(x, component, getData?.(x)));
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export let discover = async (
|
|
130
|
+
controllers: Record<string, () => Promise<any>>
|
|
131
|
+
) => {
|
|
132
|
+
for (let controller in controllers) {
|
|
133
|
+
let mod = await controllers[controller]();
|
|
134
|
+
for (let key in mod) {
|
|
135
|
+
let exp = mod[key];
|
|
136
|
+
if (exp instanceof Function) {
|
|
137
|
+
mount(
|
|
138
|
+
`[${SSR}-controller="${exp.name.toLowerCase().slice(0, -10)}"]`,
|
|
139
|
+
exp
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Element as DomElement, Text as DomText } from "domhandler";
|
|
2
|
+
import { setDomImpl, DomImpl, domImpl } from "dreamland/core";
|
|
3
|
+
import { Node as VdomNode, Comment, Text, Element, newVDom } from "./vdom";
|
|
4
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
5
|
+
|
|
6
|
+
import { CSS_IDENT, SSR_DATA } from "../common/consts";
|
|
7
|
+
import { Node, SsrData } from "../common/types";
|
|
8
|
+
import { serializeState } from "../common/serialize";
|
|
9
|
+
|
|
10
|
+
export interface RenderedComponent {
|
|
11
|
+
head: DomElement[];
|
|
12
|
+
data: DomElement;
|
|
13
|
+
component: DomElement;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let storage = new AsyncLocalStorage<DomImpl>();
|
|
17
|
+
let dom = domImpl;
|
|
18
|
+
setDomImpl(() => storage.getStore() || dom());
|
|
19
|
+
|
|
20
|
+
export async function render(
|
|
21
|
+
component: () => Promise<any> | any
|
|
22
|
+
): Promise<RenderedComponent> {
|
|
23
|
+
let vdom = newVDom();
|
|
24
|
+
return storage.run(vdom, async () => {
|
|
25
|
+
let ret: any;
|
|
26
|
+
ret = await component();
|
|
27
|
+
while (vdom[0].promises.length) {
|
|
28
|
+
await Promise.all(vdom[0].promises.splice(0));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
let root: Element,
|
|
32
|
+
extraHead: Element[] = [];
|
|
33
|
+
if (ret instanceof Array) {
|
|
34
|
+
root = ret[0];
|
|
35
|
+
extraHead = ret[1];
|
|
36
|
+
} else {
|
|
37
|
+
root = ret;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
let domIds = new Set<number>();
|
|
41
|
+
let domCssIdents = new Set();
|
|
42
|
+
let walk = (el: VdomNode) => {
|
|
43
|
+
domIds.add(el._id);
|
|
44
|
+
if (el instanceof Element && el.component) {
|
|
45
|
+
if (el.component.id) domCssIdents.add(el.component.id);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
for (let node of el.childNodes) {
|
|
49
|
+
walk(node);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
walk(root);
|
|
53
|
+
|
|
54
|
+
let data: SsrData = {
|
|
55
|
+
k: [],
|
|
56
|
+
v: [],
|
|
57
|
+
n: {},
|
|
58
|
+
i: Object.fromEntries(
|
|
59
|
+
[...vdom[0].identArr.entries()].filter(([_, i]) =>
|
|
60
|
+
domCssIdents.has(CSS_IDENT + i)
|
|
61
|
+
)
|
|
62
|
+
),
|
|
63
|
+
t: [],
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
for (let el of vdom[0].elArr) {
|
|
67
|
+
if (!domIds.has(el._id)) continue;
|
|
68
|
+
|
|
69
|
+
let node: Node | undefined;
|
|
70
|
+
if (el instanceof Element && el.component) {
|
|
71
|
+
node = serializeState(
|
|
72
|
+
data,
|
|
73
|
+
el.component.state,
|
|
74
|
+
(x) => x instanceof vdom[1]
|
|
75
|
+
);
|
|
76
|
+
} else if ((el instanceof Comment || el instanceof Text) && el.parent) {
|
|
77
|
+
node = [el.parent._id, el.parent.childNodes.indexOf(el)];
|
|
78
|
+
dev: {
|
|
79
|
+
node.push(el.data);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
data.n[el._id] = node!;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let seen = new Set<VdomNode>();
|
|
86
|
+
for (let el of vdom[0].elArr) {
|
|
87
|
+
if (!(el instanceof Text) || !el.parent || seen.has(el)) continue;
|
|
88
|
+
|
|
89
|
+
let siblings = el.parent.childNodes;
|
|
90
|
+
let start = siblings.indexOf(el);
|
|
91
|
+
|
|
92
|
+
let run: Text[] = [];
|
|
93
|
+
for (
|
|
94
|
+
let j = start;
|
|
95
|
+
j < siblings.length && siblings[j] instanceof Text;
|
|
96
|
+
j++
|
|
97
|
+
) {
|
|
98
|
+
run.push(siblings[j] as Text);
|
|
99
|
+
seen.add(siblings[j]);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
if (run.length < 2) continue;
|
|
103
|
+
|
|
104
|
+
for (let j = 0; j < run.length; j++) {
|
|
105
|
+
if (domIds.has(run[j]._id)) {
|
|
106
|
+
data.t.push([el.parent._id, start + j, run[j].data.length]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
dev: {
|
|
112
|
+
let pruned = vdom[0].elArr
|
|
113
|
+
.map((x) => x._id)
|
|
114
|
+
.filter((id) => !domIds.has(id))
|
|
115
|
+
.sort((a, b) => a - b);
|
|
116
|
+
|
|
117
|
+
let ranges: (number | [number, number])[] = [];
|
|
118
|
+
let start = -1,
|
|
119
|
+
end = -1;
|
|
120
|
+
let flush = () => {
|
|
121
|
+
if (end - start >= 2) ranges.push([start, end]);
|
|
122
|
+
else for (let i = start; i <= end; i++) ranges.push(i);
|
|
123
|
+
};
|
|
124
|
+
for (let id of pruned) {
|
|
125
|
+
if (start === -1) {
|
|
126
|
+
start = end = id;
|
|
127
|
+
} else if (id === end + 1) {
|
|
128
|
+
end = id;
|
|
129
|
+
} else {
|
|
130
|
+
flush();
|
|
131
|
+
start = end = id;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (start !== -1) flush();
|
|
135
|
+
data.p = ranges;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
let head = [
|
|
139
|
+
...extraHead,
|
|
140
|
+
...vdom[0].head.childNodes.filter(
|
|
141
|
+
(x) =>
|
|
142
|
+
x instanceof Element &&
|
|
143
|
+
domCssIdents.has(x.attributes.get(CSS_IDENT + "id"))
|
|
144
|
+
),
|
|
145
|
+
].map((x) => x.toStandard()) as DomElement[];
|
|
146
|
+
|
|
147
|
+
return {
|
|
148
|
+
head,
|
|
149
|
+
data: new DomElement(
|
|
150
|
+
"script",
|
|
151
|
+
{ type: "application/json", [SSR_DATA]: ":3" },
|
|
152
|
+
[new DomText(JSON.stringify(data))]
|
|
153
|
+
),
|
|
154
|
+
component: root.toStandard(),
|
|
155
|
+
};
|
|
156
|
+
});
|
|
157
|
+
}
|