Full Code of QwikDev/partytown for AI

main bf2a980f205e cached
437 files
18.3 MB
4.2M tokens
8766 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (16,742K chars total). Download the full file to get everything.
Repository: QwikDev/partytown
Branch: main
Commit: bf2a980f205e
Files: 437
Total size: 18.3 MB

Directory structure:
gitextract_d9ts_aht/

├── .changeset/
│   ├── README.md
│   ├── changelog-github-custom.cjs
│   ├── changelog-github-custom.ts
│   └── config.json
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yaml
│   │   ├── docs_suggestion.yml
│   │   └── feature.yaml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── linter.yml
│       ├── pr.yml
│       └── release.yml
├── .gitignore
├── .nvmrc
├── .prettierignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── bin/
│   └── partytown.cjs
├── docs/
│   ├── .eslintignore
│   ├── .eslintrc.cjs
│   ├── .gitignore
│   ├── .prettierignore
│   ├── .prettierrc.js
│   ├── .vscode/
│   │   ├── launch.json
│   │   ├── qwik-router.code-snippets
│   │   └── qwik.code-snippets
│   ├── README.md
│   ├── adapters/
│   │   └── cloudflare-pages/
│   │       └── vite.config.mts
│   ├── package.json
│   ├── postcss.config.cjs
│   ├── public/
│   │   ├── _headers
│   │   ├── _redirects
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── qwik.env.d.ts
│   ├── recma-provide-components.ts
│   ├── src/
│   │   ├── components/
│   │   │   ├── Aside/
│   │   │   │   └── Aside.tsx
│   │   │   ├── CodeSnippet/
│   │   │   │   └── CodeSnippet.tsx
│   │   │   ├── Footer/
│   │   │   │   └── Footer.tsx
│   │   │   ├── Header/
│   │   │   │   └── Header.tsx
│   │   │   ├── Highlight/
│   │   │   │   └── Highlight.tsx
│   │   │   ├── Icons/
│   │   │   │   ├── CloseIcon.tsx
│   │   │   │   ├── GitHubIcon.tsx
│   │   │   │   ├── MenuIcon.tsx
│   │   │   │   ├── ThemeDarkIcon.tsx
│   │   │   │   └── ThemeLightIcon.tsx
│   │   │   ├── MdxComponents/
│   │   │   │   └── MdxComponents.tsx
│   │   │   ├── RouterHead/
│   │   │   │   └── RouterHead.tsx
│   │   │   ├── ThemeSelector/
│   │   │   │   └── ThemeSelector.tsx
│   │   │   └── Toc/
│   │   │       └── Toc.tsx
│   │   ├── config.ts
│   │   ├── entry.cloudflare-pages.tsx
│   │   ├── entry.dev.tsx
│   │   ├── entry.preview.tsx
│   │   ├── entry.ssr.tsx
│   │   ├── global.scss
│   │   ├── root.tsx
│   │   ├── routes/
│   │   │   ├── 404.tsx
│   │   │   ├── angular/
│   │   │   │   └── index.mdx
│   │   │   ├── astro/
│   │   │   │   └── index.mdx
│   │   │   ├── atomics/
│   │   │   │   └── index.mdx
│   │   │   ├── browser-support/
│   │   │   │   └── index.mdx
│   │   │   ├── common-services/
│   │   │   │   └── index.mdx
│   │   │   ├── configuration/
│   │   │   │   └── index.mdx
│   │   │   ├── copy-library-files/
│   │   │   │   └── index.mdx
│   │   │   ├── cross-origin/
│   │   │   │   └── index.ts
│   │   │   ├── debugging/
│   │   │   │   └── index.mdx
│   │   │   ├── distribution/
│   │   │   │   └── index.mdx
│   │   │   ├── drupal/
│   │   │   │   └── index.mdx
│   │   │   ├── facebook-pixel/
│   │   │   │   └── index.mdx
│   │   │   ├── faq/
│   │   │   │   └── index.mdx
│   │   │   ├── forwarding-events/
│   │   │   │   └── index.mdx
│   │   │   ├── gatsby/
│   │   │   │   └── index.mdx
│   │   │   ├── getting-started/
│   │   │   │   └── index.mdx
│   │   │   ├── google-tag-manager/
│   │   │   │   └── index.mdx
│   │   │   ├── how-does-partytown-work/
│   │   │   │   └── index.mdx
│   │   │   ├── html/
│   │   │   │   └── index.mdx
│   │   │   ├── index.mdx
│   │   │   ├── integrations/
│   │   │   │   └── index.mdx
│   │   │   ├── layout.tsx
│   │   │   ├── magento2/
│   │   │   │   └── index.mdx
│   │   │   ├── menu.md
│   │   │   ├── nextjs/
│   │   │   │   └── index.mdx
│   │   │   ├── nuxt/
│   │   │   │   └── index.mdx
│   │   │   ├── partytown-scripts/
│   │   │   │   └── index.mdx
│   │   │   ├── proxying-requests/
│   │   │   │   └── index.mdx
│   │   │   ├── react/
│   │   │   │   └── index.mdx
│   │   │   ├── remix/
│   │   │   │   └── index.mdx
│   │   │   ├── sandboxing/
│   │   │   │   └── index.mdx
│   │   │   ├── shopify-hydrogen/
│   │   │   │   └── index.mdx
│   │   │   ├── shopify-os2/
│   │   │   │   └── index.mdx
│   │   │   ├── solid/
│   │   │   │   └── index.mdx
│   │   │   ├── sveltekit/
│   │   │   │   └── index.mdx
│   │   │   └── trade-offs/
│   │   │       └── index.mdx
│   │   ├── types.ts
│   │   └── utils/
│   │       └── cn.ts
│   ├── tailwind.config.js
│   ├── tsconfig.json
│   └── vite.config.mts
├── package.json
├── playwright.atomics.config.ts
├── playwright.config.ts
├── scripts/
│   ├── build-api.ts
│   ├── build-atomics.ts
│   ├── build-integration.ts
│   ├── build-main-snippet.ts
│   ├── build-media-implementations.ts
│   ├── build-react.ts
│   ├── build-service-worker.ts
│   ├── build-services.ts
│   ├── build-utils.ts
│   ├── build-web-worker.ts
│   ├── index.ts
│   ├── minify.ts
│   ├── rollup.config.js
│   ├── serve.cjs
│   ├── server.cjs
│   └── utils.ts
├── src/
│   ├── integration/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── snippet.ts
│   ├── lib/
│   │   ├── atomics/
│   │   │   ├── sync-create-messenger-atomics.ts
│   │   │   └── sync-send-message-to-main-atomics.ts
│   │   ├── build-modules/
│   │   │   ├── sync-create-messenger.ts
│   │   │   ├── sync-send-message-to-main.ts
│   │   │   ├── version.ts
│   │   │   ├── web-worker-blob.ts
│   │   │   └── web-worker-url.ts
│   │   ├── log.ts
│   │   ├── main/
│   │   │   ├── snippet-entry.ts
│   │   │   └── snippet.ts
│   │   ├── sandbox/
│   │   │   ├── index.ts
│   │   │   ├── main-access-handler.ts
│   │   │   ├── main-constants.ts
│   │   │   ├── main-custom-element.ts
│   │   │   ├── main-forward-trigger.ts
│   │   │   ├── main-globals.ts
│   │   │   ├── main-instances.ts
│   │   │   ├── main-register-window.ts
│   │   │   ├── main-serialization.ts
│   │   │   ├── on-messenge-from-worker.ts
│   │   │   ├── read-main-platform.ts
│   │   │   └── read-main-scripts.ts
│   │   ├── service-worker/
│   │   │   ├── fetch.ts
│   │   │   ├── index.ts
│   │   │   ├── sync-create-messenger-sw.ts
│   │   │   └── sync-send-message-to-main-sw.ts
│   │   ├── types.ts
│   │   ├── utils.ts
│   │   └── web-worker/
│   │       ├── index.ts
│   │       ├── init-web-worker.ts
│   │       ├── media/
│   │       │   ├── bridge.ts
│   │       │   ├── canvas.ts
│   │       │   ├── index.ts
│   │       │   ├── media.ts
│   │       │   └── utils.ts
│   │       ├── worker-anchor.ts
│   │       ├── worker-constants.ts
│   │       ├── worker-constructors.ts
│   │       ├── worker-css-style-declaration.ts
│   │       ├── worker-custom-elements.ts
│   │       ├── worker-document.ts
│   │       ├── worker-element.ts
│   │       ├── worker-environment.ts
│   │       ├── worker-exec.ts
│   │       ├── worker-form.ts
│   │       ├── worker-forwarded-trigger.ts
│   │       ├── worker-iframe.ts
│   │       ├── worker-image.ts
│   │       ├── worker-location.ts
│   │       ├── worker-media.ts
│   │       ├── worker-named-node-map.ts
│   │       ├── worker-navigator.ts
│   │       ├── worker-node.ts
│   │       ├── worker-performance.ts
│   │       ├── worker-proxy.ts
│   │       ├── worker-script.ts
│   │       ├── worker-serialization.ts
│   │       ├── worker-src-element.ts
│   │       ├── worker-state.ts
│   │       ├── worker-storage.ts
│   │       ├── worker-style.ts
│   │       ├── worker-svg.ts
│   │       └── worker-window.ts
│   ├── modules.d.ts
│   ├── react/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── snippet.tsx
│   ├── services/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── facebook-pixel.ts
│   │   ├── freshpaint.ts
│   │   ├── google-tag-manager.ts
│   │   ├── index.ts
│   │   └── package.json
│   └── utils/
│       ├── api-extractor.json
│       ├── api.md
│       ├── copy-lib-files.ts
│       ├── fs.ts
│       ├── index.ts
│       ├── package.json
│       ├── rollup.ts
│       └── vite.ts
├── tests/
│   ├── 404.html
│   ├── atomics/
│   │   └── index.html
│   ├── benchmarks/
│   │   ├── benchmark.js
│   │   ├── index.html
│   │   ├── run.cjs
│   │   └── services/
│   │       └── index.html
│   ├── index.html
│   ├── integrations/
│   │   ├── clarity/
│   │   │   ├── clarity.bundle.js
│   │   │   ├── clarity.spec.ts
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── config/
│   │   │   ├── config.spec.ts
│   │   │   └── index.html
│   │   ├── event-forwarding/
│   │   │   ├── event-forwarding.spec.ts
│   │   │   └── index.html
│   │   ├── facebook-pixel/
│   │   │   ├── facebook-pixel.spec.ts
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── full-story/
│   │   │   ├── full-story.spec.ts
│   │   │   ├── gtm-fullstory.html
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── gtm/
│   │   │   ├── gtag.js
│   │   │   ├── gtm.js
│   │   │   ├── gtm.spec.ts
│   │   │   ├── index.html
│   │   │   ├── preserve-behavior.html
│   │   │   └── standard.html
│   │   ├── hubspot/
│   │   │   ├── 20632911.js
│   │   │   ├── analytics-20632911.js
│   │   │   ├── banner-20632911.js
│   │   │   ├── collectedforms.js
│   │   │   ├── forms-standard.html
│   │   │   ├── forms.html
│   │   │   ├── hubspot.spec.ts
│   │   │   ├── leadflows.js
│   │   │   ├── scripts-20632911.js
│   │   │   └── shell.js
│   │   ├── intercom/
│   │   │   ├── app-modern.e4d2d085.js
│   │   │   ├── frame-modern.5069da72.js
│   │   │   ├── index.html
│   │   │   ├── shim.latest.js
│   │   │   ├── standard.html
│   │   │   ├── vendor-modern.d054d6ff.js
│   │   │   └── vendors~app-modern.c7bfd661.js
│   │   ├── javascript-request/
│   │   │   ├── execute.js
│   │   │   ├── index.html
│   │   │   ├── javascript-request.spec.ts
│   │   │   └── some-text.txt
│   │   ├── jquery/
│   │   │   ├── index.html
│   │   │   ├── jquery.js
│   │   │   ├── jquery.spec.ts
│   │   │   └── standard.html
│   │   ├── kiwisizing/
│   │   │   ├── index.html
│   │   │   ├── kiwisizing.SizingPlugin.js
│   │   │   ├── kiwisizing.spec.ts
│   │   │   ├── shopify-dynamic-checkout.js
│   │   │   └── standard.html
│   │   ├── load-scripts-on-main-thread/
│   │   │   ├── background-test-script.js
│   │   │   ├── index.html
│   │   │   ├── load-scripts-on-main-thread.spec.ts
│   │   │   ├── regex-test-script.js
│   │   │   ├── snippet.html
│   │   │   ├── test-script.js
│   │   │   └── wait-for-class.js
│   │   ├── main-window-accessors/
│   │   │   ├── index.html
│   │   │   └── main-window-accessors.spec.ts
│   │   ├── mermaid/
│   │   │   ├── index.html
│   │   │   ├── mermaid.js
│   │   │   ├── mermaid.spec.ts
│   │   │   └── standard.html
│   │   ├── twitter/
│   │   │   ├── index.html
│   │   │   ├── standard.html
│   │   │   ├── twitter.spec.ts
│   │   │   └── widgets.js
│   │   ├── underoutfit/
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── underoutfit_kiwi/
│   │   │   ├── index.html
│   │   │   ├── kiwisizing.SizingPlugin.js
│   │   │   └── standard.html
│   │   └── wistia/
│   │       ├── E-v1.js
│   │       ├── assets/
│   │       │   └── external/
│   │       │       ├── airplay.js
│   │       │       ├── engines/
│   │       │       │   ├── hls_video.js
│   │       │       │   ├── manual_quality_video.js
│   │       │       │   └── native_hls_video.js
│   │       │       ├── playPauseLoadingControl.js
│   │       │       ├── vulcanV2Player/
│   │       │       │   └── video/
│   │       │       │       ├── controls/
│   │       │       │       │   └── VolumeSliderControl/
│   │       │       │       │       └── VolumeSliderControl.js
│   │       │       │       └── ui_components/
│   │       │       │           └── Storyboard.js
│   │       │       └── wistia-mux.js
│   │       ├── embed/
│   │       │   └── medias/
│   │       │       └── varrf62cw4.json
│   │       ├── index.html
│   │       ├── standard.html
│   │       └── varrf62cw4.jsonp
│   ├── nextjs/
│   │   ├── README.md
│   │   ├── next.config.js
│   │   ├── nextjs.spec.ts
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── _app.js
│   │   │   └── index.js
│   │   └── playwright.nextjs.ts
│   ├── platform/
│   │   ├── anchor/
│   │   │   ├── anchor.spec.ts
│   │   │   └── index.html
│   │   ├── audio/
│   │   │   ├── audio-scripts.js
│   │   │   ├── audio.spec.ts
│   │   │   └── index.html
│   │   ├── canvas/
│   │   │   ├── canvas.spec.ts
│   │   │   └── index.html
│   │   ├── custom-element/
│   │   │   ├── custom-element.spec.ts
│   │   │   └── index.html
│   │   ├── document/
│   │   │   ├── current-script-src.js
│   │   │   ├── document.spec.ts
│   │   │   └── index.html
│   │   ├── document-prod/
│   │   │   ├── current-script-src.js
│   │   │   ├── document-prod.spec.ts
│   │   │   └── index.html
│   │   ├── element/
│   │   │   ├── element.spec.ts
│   │   │   └── index.html
│   │   ├── element-class/
│   │   │   ├── element-class.spec.ts
│   │   │   └── index.html
│   │   ├── element-style/
│   │   │   ├── element-style.spec.ts
│   │   │   └── index.html
│   │   ├── error/
│   │   │   ├── error.spec.ts
│   │   │   └── index.html
│   │   ├── event/
│   │   │   ├── event.spec.ts
│   │   │   └── index.html
│   │   ├── fetch/
│   │   │   ├── data.json
│   │   │   ├── fetch.spec.ts
│   │   │   ├── index.html
│   │   │   └── text.txt
│   │   ├── form/
│   │   │   ├── form.spec.ts
│   │   │   └── index.html
│   │   ├── history/
│   │   │   ├── history.spec.ts
│   │   │   ├── iframe-history.html
│   │   │   └── index.html
│   │   ├── iframe/
│   │   │   ├── call-fn-on-parent.js
│   │   │   ├── content.html
│   │   │   ├── cookie.html
│   │   │   ├── current-script.js
│   │   │   ├── external-js.html
│   │   │   ├── external.js
│   │   │   ├── fn-on-window.js
│   │   │   ├── global-var.html
│   │   │   ├── iframe-cookie-localstorage.spec.ts
│   │   │   ├── iframe1.spec.ts
│   │   │   ├── iframe2.spec.ts
│   │   │   ├── index-cookie-localstorage.html
│   │   │   ├── index.html
│   │   │   ├── index2.html
│   │   │   ├── localstorage.html
│   │   │   ├── location1.html
│   │   │   ├── location2.html
│   │   │   ├── location2.js
│   │   │   ├── no-deadlock.html
│   │   │   ├── no-deadlock.js
│   │   │   ├── no-global-share.html
│   │   │   ├── no-global-share.js
│   │   │   ├── onload.js
│   │   │   ├── parent-window.js
│   │   │   ├── post-message.html
│   │   │   ├── src-change1.html
│   │   │   └── src-change2.html
│   │   ├── image/
│   │   │   ├── image.spec.ts
│   │   │   └── index.html
│   │   ├── intersection-observer/
│   │   │   ├── index.html
│   │   │   └── intersection-observer.spec.ts
│   │   ├── klaviyo/
│   │   │   ├── current-script-src.js
│   │   │   ├── document.spec.ts
│   │   │   └── index.html
│   │   ├── multiple-tabs/
│   │   │   ├── index.html
│   │   │   └── multiple-tabs.spec.ts
│   │   ├── mutation-observer/
│   │   │   ├── index.html
│   │   │   └── mutation-observer.spec.ts
│   │   ├── navigator/
│   │   │   ├── api.js
│   │   │   ├── index.html
│   │   │   └── navigator.spec.ts
│   │   ├── no-partytown-script/
│   │   │   ├── index.html
│   │   │   └── no-partytown-script.spec.ts
│   │   ├── node/
│   │   │   ├── index.html
│   │   │   └── node.spec.ts
│   │   ├── node-list/
│   │   │   ├── index.html
│   │   │   └── node-list.spec.ts
│   │   ├── resize-observer/
│   │   │   ├── index.html
│   │   │   └── resize-observer.spec.ts
│   │   ├── screen/
│   │   │   ├── index.html
│   │   │   └── screen.spec.ts
│   │   ├── script/
│   │   │   ├── async-1.js
│   │   │   ├── async-2.js
│   │   │   ├── defer-1.js
│   │   │   ├── defer-2.js
│   │   │   ├── index.html
│   │   │   ├── jsonp-a.js
│   │   │   ├── jsonp-b.js
│   │   │   ├── jsonp-c.js
│   │   │   ├── script-1.js
│   │   │   ├── script.spec.ts
│   │   │   ├── set-get-attr.js
│   │   │   └── source-mapping-url.js
│   │   ├── storage/
│   │   │   ├── index.html
│   │   │   ├── storage-access.html
│   │   │   ├── storage-access.spec.ts
│   │   │   └── storage.spec.ts
│   │   ├── style/
│   │   │   ├── index.html
│   │   │   └── style.spec.ts
│   │   ├── svg/
│   │   │   ├── index.html
│   │   │   └── svg.spec.ts
│   │   ├── video/
│   │   │   ├── index.html
│   │   │   └── video.spec.__ts
│   │   └── window/
│   │       ├── index.html
│   │       └── window.spec.ts
│   ├── react-app/
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── index.html
│   │   ├── src/
│   │   │   ├── App.css
│   │   │   ├── App.tsx
│   │   │   ├── index.css
│   │   │   ├── index.tsx
│   │   │   └── react-app-env.d.ts
│   │   └── tsconfig.json
│   └── unit/
│       ├── forward.spec.ts
│       ├── html-replace.spec.ts
│       ├── integration.spec.ts
│       ├── snippet.spec.ts
│       ├── utils.spec.ts
│       ├── utils.ts
│       ├── worker-exec.spec.ts
│       └── worker-image.spec.ts
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .changeset/README.md
================================================
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)


================================================
FILE: .changeset/changelog-github-custom.cjs
================================================
'use strict';
var __assign =
  (this && this.__assign) ||
  function () {
    __assign =
      Object.assign ||
      function (t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
          s = arguments[i];
          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
      };
    return __assign.apply(this, arguments);
  };
var __awaiter =
  (this && this.__awaiter) ||
  function (thisArg, _arguments, P, generator) {
    function adopt(value) {
      return value instanceof P
        ? value
        : new P(function (resolve) {
            resolve(value);
          });
    }
    return new (P || (P = Promise))(function (resolve, reject) {
      function fulfilled(value) {
        try {
          step(generator.next(value));
        } catch (e) {
          reject(e);
        }
      }
      function rejected(value) {
        try {
          step(generator['throw'](value));
        } catch (e) {
          reject(e);
        }
      }
      function step(result) {
        result.done
          ? resolve(result.value)
          : adopt(result.value).then(fulfilled, rejected);
      }
      step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
  };
var __generator =
  (this && this.__generator) ||
  function (thisArg, body) {
    var _ = {
        label: 0,
        sent: function () {
          if (t[0] & 1) throw t[1];
          return t[1];
        },
        trys: [],
        ops: [],
      },
      f,
      y,
      t,
      g;
    return (
      (g = { next: verb(0), throw: verb(1), return: verb(2) }),
      typeof Symbol === 'function' &&
        (g[Symbol.iterator] = function () {
          return this;
        }),
      g
    );
    function verb(n) {
      return function (v) {
        return step([n, v]);
      };
    }
    function step(op) {
      if (f) throw new TypeError('Generator is already executing.');
      while ((g && ((g = 0), op[0] && (_ = 0)), _))
        try {
          if (
            ((f = 1),
            y &&
              (t =
                op[0] & 2
                  ? y['return']
                  : op[0]
                  ? y['throw'] || ((t = y['return']) && t.call(y), 0)
                  : y.next) &&
              !(t = t.call(y, op[1])).done)
          )
            return t;
          if (((y = 0), t)) op = [op[0] & 2, t.value];
          switch (op[0]) {
            case 0:
            case 1:
              t = op;
              break;
            case 4:
              _.label++;
              return { value: op[1], done: false };
            case 5:
              _.label++;
              y = op[1];
              op = [0];
              continue;
            case 7:
              op = _.ops.pop();
              _.trys.pop();
              continue;
            default:
              if (
                !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&
                (op[0] === 6 || op[0] === 2)
              ) {
                _ = 0;
                continue;
              }
              if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
                _.label = op[1];
                break;
              }
              if (op[0] === 6 && _.label < t[1]) {
                _.label = t[1];
                t = op;
                break;
              }
              if (t && _.label < t[2]) {
                _.label = t[2];
                _.ops.push(op);
                break;
              }
              if (t[2]) _.ops.pop();
              _.trys.pop();
              continue;
          }
          op = body.call(thisArg, _);
        } catch (e) {
          op = [6, e];
          y = 0;
        } finally {
          f = t = 0;
        }
      if (op[0] & 5) throw op[1];
      return { value: op[0] ? op[1] : void 0, done: true };
    }
  };
var __spreadArray =
  (this && this.__spreadArray) ||
  function (to, from, pack) {
    if (pack || arguments.length === 2)
      for (var i = 0, l = from.length, ar; i < l; i++) {
        if (ar || !(i in from)) {
          if (!ar) ar = Array.prototype.slice.call(from, 0, i);
          ar[i] = from[i];
        }
      }
    return to.concat(ar || Array.prototype.slice.call(from));
  };
Object.defineProperty(exports, '__esModule', { value: true });
// @ts-ignore
var get_github_info_1 = require('@changesets/get-github-info');
var dotenv_1 = require('dotenv');
(0, dotenv_1.config)();
var changelogFunctions = {
  getDependencyReleaseLine: function (changesets, dependenciesUpdated, options) {
    return __awaiter(void 0, void 0, void 0, function () {
      var changesetLink, _a, updatedDepenenciesList;
      return __generator(this, function (_b) {
        switch (_b.label) {
          case 0:
            if (!options.repo) {
              throw new Error(
                'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]',
              );
            }
            if (dependenciesUpdated.length === 0) return [2 /*return*/, ''];
            _a = '- Updated dependencies ['.concat;
            return [
              4 /*yield*/,
              Promise.all(
                changesets.map(function (cs) {
                  return __awaiter(void 0, void 0, void 0, function () {
                    var links;
                    return __generator(this, function (_a) {
                      switch (_a.label) {
                        case 0:
                          if (!cs.commit) return [3 /*break*/, 2];
                          return [
                            4 /*yield*/,
                            (0, get_github_info_1.getInfo)({
                              repo: options.repo,
                              commit: cs.commit,
                            }),
                          ];
                        case 1:
                          links = _a.sent().links;
                          return [2 /*return*/, links.commit];
                        case 2:
                          return [2 /*return*/];
                      }
                    });
                  });
                }),
              ),
            ];
          case 1:
            changesetLink = _a.apply('- Updated dependencies [', [
              _b
                .sent()
                .filter(function (_) {
                  return _;
                })
                .join(', '),
              ']:',
            ]);
            updatedDepenenciesList = dependenciesUpdated.map(function (dependency) {
              return '  - '.concat(dependency.name, '@').concat(dependency.newVersion);
            });
            return [
              2 /*return*/,
              __spreadArray([changesetLink], updatedDepenenciesList, true).join('\n'),
            ];
        }
      });
    });
  },
  getReleaseLine: function (changeset, type, options) {
    return __awaiter(void 0, void 0, void 0, function () {
      var prFromSummary,
        commitFromSummary,
        usersFromSummary,
        replacedChangelog,
        linkifyIssueHints,
        _a,
        firstLine,
        futureLines,
        links,
        users,
        suffix,
        emojiFirstline;
      return __generator(this, function (_b) {
        switch (_b.label) {
          case 0:
            if (!options || !options.repo) {
              throw new Error(
                'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]',
              );
            }
            usersFromSummary = [];
            replacedChangelog = changeset.summary
              .replace(/^\s*(?:pr|pull|pull\s+request):\s*#?(\d+)/im, function (_, pr) {
                var num = Number(pr);
                if (!isNaN(num)) prFromSummary = num;
                return '';
              })
              .replace(/^\s*commit:\s*([^\s]+)/im, function (_, commit) {
                commitFromSummary = commit;
                return '';
              })
              .replace(/^\s*(?:author|user):\s*@?([^\s]+)/gim, function (_, user) {
                usersFromSummary.push(user);
                return '';
              })
              .trim();
            linkifyIssueHints = function (line) {
              return line.replace(
                /(?<=\( ?(?:fix|fixes|see) )(#\d+)(?= ?\))/g,
                function (issueHash) {
                  return '['
                    .concat(issueHash, '](https://github.com/')
                    .concat(options.repo, '/issues/')
                    .concat(issueHash.substring(1), ')');
                },
              );
            };
            (_a = replacedChangelog.split('\n').map(function (l) {
              return linkifyIssueHints(l.trimEnd());
            })),
              (firstLine = _a[0]),
              (futureLines = _a.slice(1));
            return [
              4 /*yield*/,
              (function () {
                return __awaiter(void 0, void 0, void 0, function () {
                  var links_1, shortCommitId, commitToFetchFrom, links_2;
                  return __generator(this, function (_a) {
                    switch (_a.label) {
                      case 0:
                        if (!(prFromSummary !== undefined)) return [3 /*break*/, 2];
                        return [
                          4 /*yield*/,
                          (0, get_github_info_1.getInfoFromPullRequest)({
                            repo: options.repo,
                            pull: prFromSummary,
                          }),
                        ];
                      case 1:
                        links_1 = _a.sent().links;
                        if (commitFromSummary) {
                          shortCommitId = commitFromSummary.slice(0, 7);
                          links_1 = __assign(__assign({}, links_1), {
                            commit: '[`'
                              .concat(shortCommitId, '`](https://github.com/')
                              .concat(options.repo, '/commit/')
                              .concat(commitFromSummary, ')'),
                          });
                        }
                        return [2 /*return*/, links_1];
                      case 2:
                        commitToFetchFrom = commitFromSummary || changeset.commit;
                        if (!commitToFetchFrom) return [3 /*break*/, 4];
                        return [
                          4 /*yield*/,
                          (0, get_github_info_1.getInfo)({
                            repo: options.repo,
                            commit: commitToFetchFrom,
                          }),
                        ];
                      case 3:
                        links_2 = _a.sent().links;
                        return [2 /*return*/, links_2];
                      case 4:
                        return [
                          2 /*return*/,
                          {
                            commit: null,
                            pull: null,
                            user: null,
                          },
                        ];
                    }
                  });
                });
              })(),
            ];
          case 1:
            links = _b.sent();
            users = usersFromSummary.length
              ? usersFromSummary
                  .map(function (userFromSummary) {
                    return '[@'
                      .concat(userFromSummary, '](https://github.com/')
                      .concat(userFromSummary, ')');
                  })
                  .join(', ')
              : links.user;
            suffix = '';
            if (links.pull || links.commit || users) {
              suffix = '('
                .concat(users ? 'by '.concat(users, ' ') : '', 'in ')
                .concat(links.pull || links.commit, ')');
            }
            emojiFirstline = firstLine
              .replace(/feat:/i, '✨ ')
              .replace(/fix:/i, '🐞🩹')
              .replace(/docs:/i, '📃');
            return [
              2 /*return*/,
              '\n\n- '
                .concat(emojiFirstline, ' ')
                .concat(suffix, '\n')
                .concat(
                  futureLines
                    .map(function (l) {
                      return '  '.concat(l);
                    })
                    .join('\n'),
                ),
            ];
        }
      });
    });
  },
};
exports.default = changelogFunctions;


================================================
FILE: .changeset/changelog-github-custom.ts
================================================
import { ChangelogFunctions } from '@changesets/types';
// @ts-ignore
import { getInfo, getInfoFromPullRequest } from '@changesets/get-github-info';
import { config } from 'dotenv';

config();

const changelogFunctions: ChangelogFunctions = {
  getDependencyReleaseLine: async (changesets, dependenciesUpdated, options) => {
    if (!options.repo) {
      throw new Error(
        'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]',
      );
    }
    if (dependenciesUpdated.length === 0) return '';

    const changesetLink = `- Updated dependencies [${(
      await Promise.all(
        changesets.map(async (cs) => {
          if (cs.commit) {
            let { links } = await getInfo({
              repo: options.repo,
              commit: cs.commit,
            });
            return links.commit;
          }
        }),
      )
    )
      .filter((_) => _)
      .join(', ')}]:`;

    const updatedDepenenciesList = dependenciesUpdated.map(
      (dependency) => `  - ${dependency.name}@${dependency.newVersion}`,
    );

    return [changesetLink, ...updatedDepenenciesList].join('\n');
  },
  getReleaseLine: async (changeset, type, options) => {
    if (!options || !options.repo) {
      throw new Error(
        'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]',
      );
    }

    let prFromSummary: number | undefined;
    let commitFromSummary: string | undefined;
    let usersFromSummary: string[] = [];

    const replacedChangelog = changeset.summary
      .replace(/^\s*(?:pr|pull|pull\s+request):\s*#?(\d+)/im, (_, pr) => {
        let num = Number(pr);
        if (!isNaN(num)) prFromSummary = num;
        return '';
      })
      .replace(/^\s*commit:\s*([^\s]+)/im, (_, commit) => {
        commitFromSummary = commit;
        return '';
      })
      .replace(/^\s*(?:author|user):\s*@?([^\s]+)/gim, (_, user) => {
        usersFromSummary.push(user);
        return '';
      })
      .trim();

    const linkifyIssueHints = (line: string) =>
      line.replace(/(?<=\( ?(?:fix|fixes|see) )(#\d+)(?= ?\))/g, (issueHash) => {
        return `[${issueHash}](https://github.com/${
          options.repo
        }/issues/${issueHash.substring(1)})`;
      });

    const [firstLine, ...futureLines] = replacedChangelog
      .split('\n')
      .map((l) => linkifyIssueHints(l.trimEnd()));

    const links = await (async () => {
      if (prFromSummary !== undefined) {
        let { links } = await getInfoFromPullRequest({
          repo: options.repo,
          pull: prFromSummary,
        });
        if (commitFromSummary) {
          const shortCommitId = commitFromSummary.slice(0, 7);
          links = {
            ...links,
            commit: `[\`${shortCommitId}\`](https://github.com/${options.repo}/commit/${commitFromSummary})`,
          };
        }
        return links;
      }
      const commitToFetchFrom = commitFromSummary || changeset.commit;
      if (commitToFetchFrom) {
        let { links } = await getInfo({
          repo: options.repo,
          commit: commitToFetchFrom,
        });
        return links;
      }
      return {
        commit: null,
        pull: null,
        user: null,
      };
    })();

    const users = usersFromSummary.length
      ? usersFromSummary
          .map(
            (userFromSummary) =>
              `[@${userFromSummary}](https://github.com/${userFromSummary})`,
          )
          .join(', ')
      : links.user;

    let suffix = '';
    if (links.pull || links.commit || users) {
      suffix = `(${users ? `by ${users} ` : ''}in ${links.pull || links.commit})`;
    }

    const emojiFirstline = firstLine
      .replace(/feat:/i, '✨ ')
      .replace(/fix:/i, '🐞🩹')
      .replace(/docs:/i, '📃');

    return `\n\n- ${emojiFirstline} ${suffix}\n${futureLines
      .map((l) => `  ${l}`)
      .join('\n')}`;
  },
};

export default changelogFunctions;


================================================
FILE: .changeset/config.json
================================================
{
  "$schema": "https://unpkg.com/@changesets/config@3.0.4/schema.json",
  "changelog": ["./changelog-github-custom.cjs", { "repo": "QwikDev/partytown" }],
  "commit": false,
  "fixed": [],
  "linked": [],
  "access": "public",
  "baseBranch": "main",
  "updateInternalDependencies": "patch",
  "ignore": []
}


================================================
FILE: .gitattributes
================================================
tests/** linguist-vendored


================================================
FILE: .github/ISSUE_TEMPLATE/bug.yaml
================================================
name: 🐞 Bug Report
description: Something does not work or is flaky! Let us know!
labels: [bug, triage]
title: '[🐞]'
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out this bug report!

  - type: textarea
    id: description
    attributes:
      description: 'A clear and concise description of what you expected to happen instead. If you intend to submit a PR for this issue, tell us in the description. Thanks!'
      label: Describe the bug
      placeholder: I am doing ... What I expect is ... What actually happening is ...
    validations:
      required: true

  - type: input
    id: reproduction
    attributes:
      label: Reproduction
      description: Please provide a link to a repo that can reproduce the problem you ran into. Please see the [contributing docs](https://github.com/BuilderIO/partytown/blob/main/CODE_OF_CONDUCT.md) for suggestions on create a reproduction. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label. If no reproduction is provided after 3 days, it will be auto-closed.
      placeholder: Reproduction URL
    validations:
      required: true

  - type: textarea
    id: reproduction_steps
    attributes:
      label: Steps to reproduce
      description: Please provide any reproduction steps that may need to be described.
    validations:
      required: true

  - type: input
    id: browser_info
    attributes:
      label: Browser Info
      description: Which browser did you experience the issue on?
      placeholder: Chrome, Safari, Firefox, Edge
    validations:
      required: true

  - type: textarea
    id: additional_information
    attributes:
      label: Additional Information
    validations:
      required: false


================================================
FILE: .github/ISSUE_TEMPLATE/docs_suggestion.yml
================================================
name: 📖 Documentation Suggestion
description: Suggestions on how we can improve the documentation.
title: '[📖]'
labels: [documentation]
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to fill out docs suggestion! However, if you think it's something you can fix yourself, please submit a PR instead. In every doc page, you will be able to find the "Edit this page" in the right menu!

  - type: textarea
    id: description
    attributes:
      description: 'A clear and concise description of your suggestion to improve the docs.'
      label: Suggestion
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/feature.yaml
================================================
name: ✨ Feature Request
description: Suggest an idea for this project.
labels: [enhancement, triage]
title: '[✨]'
body:
  - type: textarea
    id: use_case
    attributes:
      label: 'Is your feature request related to a problem?'
      description: 'A clear and concise description of what the problem is.'
    validations:
      required: true

  - type: textarea
    id: solution
    attributes:
      label: "Describe the solution you'd like"
      description: 'A clear and concise description of what you want to happen.'
    validations:
      required: true

  - type: textarea
    id: alternatives
    attributes:
      label: "Describe alternatives you've considered"
      description: "A clear and concise description of any alternative solutions or features you've considered."
    validations:
      required: true

  - type: textarea
    id: additional_context
    attributes:
      label: 'Additional context'
      description: 'Add any other context or screenshots about the feature request here.'
    validations:
      required: false


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
# What is it?

- [ ] Feature / enhancement
- [ ] Bug
- [ ] Docs / tests

# Description

Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.

# Use cases and why

<!-- Actual / expected behavior if it's a bug -->

- 1. One use case
- 2. Another use case

# Checklist:

- [ ] My code follows the [developer guidelines of this project](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md)
- [ ] I have performed a self-review of my own code
- [ ] I have made corresponding changes to the documentation
- [ ] Added new tests to cover the fix / functionality


================================================
FILE: .github/workflows/ci.yml
================================================
name: Partytown CI
on: [push, pull_request]

jobs:
  test-chromium:
    name: Test Chromium (Ubuntu)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.1

      - uses: pnpm/action-setup@v4.0.0

      - name: Setup Node
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 20.10.0
          cache: 'pnpm'
          registry-url: https://registry.npmjs.org/

      - run: corepack enable

      - name: Install NPM Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: npm run build

      - name: Install Chromium Playwright
        run: npx playwright install chromium && npx playwright install-deps chromium

      - name: Run Chromium E2E Tests (Service Worker)
        run: npm run test.chromium

      - name: Run Chromium E2E Tests (Atomics)
        run: npm run test.atomics

      - name: Run Unit Tests
        run: npm run test.unit

      - name: Upload Chromium E2E Test Videos
        uses: actions/upload-artifact@v4.3.1
        if: always()
        with:
          name: Chromium E2E Test Videos
          path: tests/videos

  test-webkit:
    name: Test WebKit (MacOS)
    runs-on: macos-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.1

      - uses: pnpm/action-setup@v4.0.0

      - name: Setup Node
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 20.10.0
          cache: 'pnpm'
          registry-url: https://registry.npmjs.org/

      - run: corepack enable

      - name: Install NPM Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: npm run build

      - name: Install WebKit Playwright
        run: npx playwright install webkit && npx playwright install-deps webkit

      - name: Run WebKit E2E Tests
        run: npm run test.webkit

      - name: Upload WebKit E2E Test Videos
        uses: actions/upload-artifact@v4.3.1
        if: always()
        with:
          name: WebKit E2E Test Videos Videos
          path: tests/videos

  benchmark-chromium:
    name: Benchmark Chromium (Ubuntu)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.1

      - uses: pnpm/action-setup@v4.0.0

      - name: Setup Node
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 20.10.0
          cache: 'pnpm'
          registry-url: https://registry.npmjs.org/

      - run: corepack enable

      - name: Install NPM Dependencies
        run: pnpm install --frozen-lockfile

      - name: Build
        run: npm run build

      - name: Install Chromium Playwright
        run: npx playwright install chromium && npx playwright install-deps chromium

      - name: Run Chromium Benchmark
        run: npm run benchmark

      - name: Upload Chromium Benchmark Screenshots
        uses: actions/upload-artifact@v4.3.1
        if: always()
        with:
          name: Chromium Benchmark Screenshots
          path: tests/benchmarks/screenshots


================================================
FILE: .github/workflows/linter.yml
================================================
name: PR Prettier Check

on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize
      - ready_for_review

permissions:
  pull-requests: read

jobs:
  ########### LINT PACKAGE ############
  lint-package:
    name: Lint Package
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4.1.1

      - uses: pnpm/action-setup@v4.0.0

      - name: Setup Node
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 20.10.0
          cache: 'pnpm'
          registry-url: https://registry.npmjs.org/

      - run: corepack enable

      - name: Install NPM Dependencies
        run: pnpm install --frozen-lockfile

      - name: Prettier Check
        if: ${{ always() }}
        run: pnpm fmt.check


================================================
FILE: .github/workflows/pr.yml
================================================
name: PR Title Check

on:
  pull_request_target:
    types:
      - opened
      - edited
      - synchronize
      - ready_for_review

permissions:
  pull-requests: read

jobs:
  ############ SEMANTIC PR TITLE VALIDATION ############
  semantic-pr:
    name: Validate PR title
    runs-on: ubuntu-latest
    steps:
      - uses: amannn/action-semantic-pull-request@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/release.yml
================================================
name: Release

on:
  pull_request:
  push:
    branches:
      - main

permissions:
  id-token: write
  contents: write
  pull-requests: write

jobs:
  release:
    runs-on: ubuntu-latest

    if: github.ref == 'refs/heads/main'

    steps:
      - name: Checkout all commits
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Setup git user
        shell: bash
        run: |
          git config --global user.name '@partytown'
          git config --global user.email 'partytown@users.noreply.github.com'

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: 9.7.0

      - name: Use Node
        uses: actions/setup-node@v4
        with:
          node-version: 20.x
          registry-url: https://registry.npmjs.org
          cache: 'pnpm'

      - name: Install dependencies
        shell: bash
        run: pnpm install --frozen-lockfile

      - name: Build packages
        shell: bash
        run: pnpm build.prod

      # - name: Publish any commit / build for testing
      #   run: pnpm release.pkg-pr-new
      #   env:
      #     GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Create Release Pull Request or Publish
        if: github.ref == 'refs/heads/main'
        id: changesets
        uses: changesets/action@v1
        with:
          publish: pnpm release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .gitignore
================================================
.cache/
.next/
.DS_Store
/dist/
/docs/site/dist/
/docs/site/public/~partytown/
/docs/site/src/table-of-contents.ts
/docs/site/src/pages/
node_modules/
/integration/
/lib/
/react/
/tests/nextjs/public/
/tests/benchmarks/screenshots/
/tests/posts/
/tests/react-app/public/~partytown/
/tests/videos/
/services/
/tsc/
/utils/
/index.cjs
/index.mjs
/index.d.ts
.idea
.history
test-results/
tests/integrations/load-scripts-on-main-thread/snippet.js

# AI Aritfacts
.planning


================================================
FILE: .nvmrc
================================================
20.10.0

================================================
FILE: .prettierignore
================================================
.cache
/lib
/node_modules
/react
/tsc
api.md
tests/platform/script/source-mapping-url.js

================================================
FILE: CHANGELOG.md
================================================
# @qwik.dev/partytown

## 0.13.0

### Minor Changes

- ✨ add new documentation for Drupal integration (by [@OulipianSummer](https://github.com/OulipianSummer) in [#701](https://github.com/QwikDev/partytown/pull/701))

  This commit adds a new section to the integrations section of the documentation, detailing how to install, configure, and use the Drupal integration for PartyTown.

### Patch Changes

- patch: expand docs on manual Drupal module installation, fix typos (by [@OulipianSummer](https://github.com/OulipianSummer) in [#703](https://github.com/QwikDev/partytown/pull/703))

  Although uncommon, some Drupal web sites do install all of their third-party modules without composer. In these cases, it is still possible to use the contributed PartyTown module to manage PartyTown from a GUI, though the setup does require some extra explanation. I've added some notes on this uncommon setup in the hope it will be helpful to those users.

## 0.12.0

### Minor Changes

- Add `strictProxyHas` configuration option for accurate namespace conflict detection (by [@chadgauth](https://github.com/chadgauth) in [#692](https://github.com/QwikDev/partytown/pull/692))

  **Summary:**

  This release adds a new configuration option `strictProxyHas` that enables accurate property existence checks using the `in` operator. This is required for scripts like FullStory that check for namespace conflicts when loaded via Google Tag Manager (GTM).

  **Key Changes:**

  - Add `strictProxyHas?: boolean` config option to enable accurate `in` operator behavior
  - Update window proxy's `has` trap to use `Reflect.has()` when `strictProxyHas: true`
  - Default is `false` for backwards compatibility
  - Add FullStory GTM integration test with production-ready snippet
  - Document the configuration and provide usage guide

  **Usage:**

  ```html
  <script>
    partytown = {
      forward: ['FS.identify', 'FS.event'],
      strictProxyHas: true, // Enable for FullStory via GTM
    };
  </script>
  ```

  **Backwards Compatibility:**

  This is a non-breaking change. The default behavior remains unchanged (`strictProxyHas: false`), so existing implementations will continue to work without modifications.

## 0.11.2

### Patch Changes

- ✨ Implement full attribute methods for HTMLImageElement (by [@mws19901118](https://github.com/mws19901118) in [#681](https://github.com/QwikDev/partytown/pull/681))

  Implemented complete attribute handling for HTMLImageElement class including getAttribute(), setAttribute(), hasAttribute(), removeAttribute(), and toggleAttribute() methods. Added attributes Map to store element attributes and enhanced setAttribute() to properly handle src attribute. Includes comprehensive unit tests covering all attribute methods.

## 0.11.1

### Patch Changes

- Add adoptedStyleSheets.get() to patched `document` in worker. (by [@leeroybrun](https://github.com/leeroybrun) in [#674](https://github.com/QwikDev/partytown/pull/674))

## 0.11.0

### Minor Changes

- Bunch of fixes and a new release system.. (by [@shairez](https://github.com/shairez) in [#652](https://github.com/QwikDev/partytown/pull/652))

  **Here's a list of the changes:**

  ### FEATURES

  - add config fallback timeout (#620)

  ### FIXES

  - Same-origin iframe set/get cookie/localStorage bug (#600)
  - make sure unknown is mapped to HTMLUnknownElement cstr (#606)

  ### DOCS

  - making install commands consistent (#638)
  - Add example reverse proxy handler for Facebook Pixel (#648)
  - add integration module for Magento 2 (#594)
  - add clarification that the worker strategy is not supported with app directory (#625)
  - use dummy web property ID (#621)
  - revert recent incorrect change to SvelteKit destination (#622)


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or
  advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
  address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
info@builder.io.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.


================================================
FILE: CONTRIBUTING.md
================================================
# Local Development

Welcome 🎉!! If you've found a bug, or have an idea to add a feature we'd love to hear from you. It may save time to first ping the group on [Partytown's Discord channel](https://discord.gg/aHKdpdWv7a) to talk through any ideas or any issues that may be a bug.

## Installation

```
npm install
npm run dev
```

See the [distribution](https://partytown.qwik.dev/distribution) section about the various files created. Note that both the root directory, and the `tests` directory receive a copy of the build files, such as `tests/~partytown/partytown.js`.

## Submitting Issues And Writing Tests

We need your help! If you found a bug, it's best to create a [Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) that replicates the issue using a test page.

- Minimal Reproduction Case: If maintainers and contributors are unable to reproduce the same error, then it makes it very difficult to debug and fix. Any issued opened without a minimal reproduction example will be closed.
- E2E Test: A good example of an End-to-end test is one where the test fails before the fix, and passes after the fix. But also, all the other tests pass too.

In the [tests directory](https://github.com/BuilderIO/partytown/tree/main/tests), copy one of the directories, such as `tests/platform/document`, and recreate the issue you've found.

Follow the [manual testing](#manual-testing) directions on how to start the local dev server. Next, the more you can describe the debug and pin-point the issue the better, and any fixes to the runtime to solve the problem would be awesome. 🎉

If the PR fixes the issue, then creating an [end-to-end test](#e2e-testing) would help ensure no regressions happen over time.

Additionally, Github issues is a place to explain a problem in detail, along with a reproduction case for maintainers. However, Github issues is not the best place to ask how-to questions since project contributors and maintainers don’t have the capacity to debug external websites and the many third-party scripts. Any issues opened asking that are not following these guidelines will be closed.

Please also see the [FAQ section](https://partytown.qwik.dev/faq) for more info

## Plugin Authors / Developers

If you are the author / developer of any 3rd party plugin / library, and want to ensure that your library works with Partytown, we would love to work with you to ensure it does!

The easiest way to verify is to create a small, standalone replica in our [integration tests directory](https://github.com/BuilderIO/partytown/tree/main/tests/integrations). Our standard practice is to:

- Create a `standard.html` which loads your library / plugin as it normally is loaded, as a `<script type="text/javascript">`. This file basically is your normal, happy case, with no Partytown in sight.
- Create an `index.html` which loads your library, but also sets up Partytown. This file should:
  - Setup the `partytown` configuration
  - Load the `partytown.js` file
  - Mark the library / plugin that you want to test as `text/partytown` instead of `text/javascript`

To get a sense of this, you can take a look at some examples in the `tests/integrations` folder like [Twitter](https://github.com/BuilderIO/partytown/tree/main/tests/integrations/twitter/index.html). Usually, creating a copy of one of these folders and modifying it for a new plugin is the easiest way to get these to setup.

If it works, great! Send us a PR and we'd love to merge it in and highlight it as a working integration on our [Common Services page](https://partytown.qwik.dev/common-services) . If for any reason it does not work, we would love to help you figure out why it might not be working and figure out a way forward.

## Manual Testing

Tests to be manually ran on a browser are located in the `tests` directory. These pages can help to test out DOM apis and individual services.

```
npm run serve
```

http://localhost:4000/tests/

## E2E Testing

E2E tests use [@playwright/test](https://playwright.dev/docs/intro#writing-assertions), which allows us to test on Chromium, Firefox and WebKit browsers. These pages are also tested on every commit within the project's [CI Workflow](https://github.com/BuilderIO/partytown/actions/workflows/ci.yml).

```
npm test
```

[CI Test Results](https://github.com/BuilderIO/partytown/actions/workflows/ci.yml)

## Deployed Tests

The same pages found in `tests` are deployed to:

https://partytown.qwik.dev/


## Contributing a Pull Request (PR)? Please add a changeset


For your convenience, we prepared a video tutorial that covers the process of adding a changeset:

[📽 TUTORIAL: Adding a changeset](https://go.screenpal.com/watch/cZivIcVPJQV)

**1.** Run the following command to create a changeset:

```shell
pnpm change
```

**2.** Choose the packages that should be included in the changeset

**3** Choose the specific type of change

(hit `Enter` if you need to skip to the next option)

- `major` for breaking changes
- `minor` for new features
- `patch` for bug fixes

**4.** Prefix your change title with one of these:

- `FEAT:` or `feat:` for features
- `FIX:` or `fix:` for bug fixes
- `DOCS` or `docs:` for documentation

**5.** Modify the created MD file

After the `change` command runs, a new MD file will be created under the `.changeset` folder.

Please modify this file to include a descriptive message of the changes you made.

You can even add code examples if you need do, to describe a new feature for example. (pun intended 😉)

The prefix and this elaborated description will be used to create the changelog files and release notes, so please give them love. 💗😊

---

#### ❓ "What if my PR is not a significant change?"

If you made small changes like fixing typos, CI config, prettier, etc, you can run `pnpm change add --empty` to generate an empty changeset file to document
your changes.

---

## Publishing

```
npm run release
```


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 Builder.io

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# Partytown 🎉

<img width="838" alt="Partytown github fit 2x" src="https://user-images.githubusercontent.com/452425/134568488-f36f4640-9ada-4a78-a969-2b8315cf7f47.png">

- [Introducing Partytown: Run Third-Party Scripts From a Web Worker](https://dev.to/adamdbradley/introducing-partytown-run-third-party-scripts-from-a-web-worker-2cnp)
- [How Partytown's Sync Communication Works](https://dev.to/adamdbradley/how-partytown-s-sync-communication-works-4244)
- [How we cut 99% of our JavaScript with Qwik + Partytown](https://www.builder.io/blog/how-we-cut-99-percent-js-with-qwik-and-partytown)
- [Partytown is now in Beta](https://www.builder.io/blog/partytown-is-now-in-beta)

> A fun location for your third-party scripts to hang out

Partytown is a lazy-loaded library to help relocate resource intensive scripts into a [web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API), and off of the [main thread](https://developer.mozilla.org/en-US/docs/Glossary/Main_thread). Its goal is to help speed up sites by dedicating the main thread to your code, and offloading third-party scripts to a web worker.

> Note: Partytown is still in beta and not guaranteed to work in every scenario. Please see our [FAQ](https://partytown.qwik.dev/faq) and [Trade-Off](https://partytown.qwik.dev/trade-offs) sections for more info.

The philosophy is that the main thread should be dedicated to your code, and any scripts that are not required to be in the [critical path](https://developers.google.com/web/fundamentals/performance/critical-rendering-path) should be moved to a web worker. Main thread performance is, without question, more important than web worker thread performance.

- [Getting Started](https://partytown.qwik.dev/getting-started)
- [Integrations](https://partytown.qwik.dev/integrations)
- [Configuration](https://partytown.qwik.dev/configuration)
- [Releases](https://github.com/BuilderIO/partytown/releases)
- [FAQs](https://partytown.qwik.dev/faq)

![Without Partytown and With Partytown: Your code and third-party code compete for main thread resources](https://user-images.githubusercontent.com/452425/152393346-6f721a4f-3f66-410a-8878-a2b49e24307f.png)

## Community

- [@QwikDev](https://twitter.com/QwikDev)
- [@Builderio](https://twitter.com/builderio)
- [Local Development](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#local-development)
- [For Plugin Authors / Developers](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#plugin-authors-developers)

## Related Projects

- [Qwik](https://github.com/BuilderIO/qwik): An open-source framework designed for best possible time to interactive, by focusing on resumability of server-side-rendering of HTML, and fine-grained lazy-loading of code.
- [Mitosis](https://github.com/BuilderIO/mitosis): Write components once, run everywhere. Compiles to Vue, React, Solid, Angular, Svelte, and more.
- [Builder](https://github.com/BuilderIO/builder): Drag and drop page builder and CMS for React, Vue, Angular, and more.

<br>
<br>
<p align="center">
   <a href="https://www.builder.io/m/developers">
      <picture>
         <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/844291/230786554-eb225eeb-2f6b-4286-b8c2-535b1131744a.png">
         <img width="250" alt="Made with love by Builder.io" src="https://user-images.githubusercontent.com/844291/230786555-a58479e4-75f3-4222-a6eb-74c5af953eac.png">
       </picture>
   </a>
</p>


================================================
FILE: bin/partytown.cjs
================================================
#!/usr/bin/env node

async function run() {
  const task = process.argv.slice(2).filter((a) => !a.startsWith('-'))[0];
  const args = process.argv.slice(2).filter((a) => a !== task);

  if (task === 'help' || args.includes('--help') || args.includes('-h')) {
    help();
  } else if (task === 'version' || args.includes('--version') || args.includes('-v')) {
    console.log(version());
  } else if (task === 'copylib') {
    await copyLibTask(args);
  } else {
    panic('Unknown partytown task: ' + task);
  }
}

async function copyLibTask(args) {
  try {
    const utils = require('../utils/index.cjs');
    const destDir = args.filter((a) => !a.startsWith('-'))[0];
    const logResult = !args.includes('--silent');
    const includeDebugDir = !args.includes('--no-debug');
    const result = await utils.copyLibFiles(destDir, {
      debugDir: includeDebugDir,
    });

    if (logResult) {
      console.log('Partytown lib copied to: ' + result.dest);
    }
  } catch (e) {
    panic(String(e.message || e));
  }
}

function help() {
  console.log(``);
  console.log(`Partytown (${version()}):`);
  console.log(``);
  console.log(`  copylib <destDir> [--no-debug | --silent]`);
  console.log(``);
}

function version() {
  return require('../package.json').version;
}

function panic(msg) {
  console.error('\n❌ ' + msg);
  help();
  process.exit(1);
}

run();


================================================
FILE: docs/.eslintignore
================================================
**/*.log
**/.DS_Store
*.
.vscode/settings.json
.history
.yarn
bazel-*
bazel-bin
bazel-out
bazel-qwik
bazel-testlogs
dist
dist-dev
lib
lib-types
etc
external
node_modules
temp
tsc-out
tsdoc-metadata.json
target
output
rollup.config.js
build
.cache
.vscode
.rollup.cache
dist
tsconfig.tsbuildinfo
vite.config.mts
*.spec.tsx
*.spec.ts
.netlify
pnpm-lock.yaml
package-lock.json
yarn.lock
server


================================================
FILE: docs/.eslintrc.cjs
================================================
module.exports = {
  root: true,
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:qwik/recommended",
  ],
  parser: "@typescript-eslint/parser",
  parserOptions: {
    tsconfigRootDir: __dirname,
    project: ["./tsconfig.json"],
    ecmaVersion: 2021,
    sourceType: "module",
    ecmaFeatures: {
      jsx: true,
    },
  },
  plugins: ["@typescript-eslint"],
  rules: {
    "@typescript-eslint/no-explicit-any": "off",
    "@typescript-eslint/explicit-module-boundary-types": "off",
    "@typescript-eslint/no-inferrable-types": "off",
    "@typescript-eslint/no-non-null-assertion": "off",
    "@typescript-eslint/no-empty-interface": "off",
    "@typescript-eslint/no-namespace": "off",
    "@typescript-eslint/no-empty-function": "off",
    "@typescript-eslint/no-this-alias": "off",
    "@typescript-eslint/ban-types": "off",
    "@typescript-eslint/ban-ts-comment": "off",
    "prefer-spread": "off",
    "no-case-declarations": "off",
    "no-console": "off",
    "@typescript-eslint/no-unused-vars": ["error"],
    "@typescript-eslint/consistent-type-imports": "warn",
    "@typescript-eslint/no-unnecessary-condition": "warn",
  },
};


================================================
FILE: docs/.gitignore
================================================
# Build
/dist
/lib
/lib-types
/server

# Development
node_modules
.env
*.local

# Cache
.cache
.mf
.rollup.cache
tsconfig.tsbuildinfo

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Editor
.vscode/*
!.vscode/launch.json
!.vscode/*.code-snippets

.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# Yarn
.yarn/*
!.yarn/releases

# Cloudflare
functions/**/*.js


================================================
FILE: docs/.prettierignore
================================================
**/*.log
**/.DS_Store
*.
.vscode/settings.json
.history
.yarn
bazel-*
bazel-bin
bazel-out
bazel-qwik
bazel-testlogs
dist
dist-dev
lib
lib-types
etc
external
node_modules
temp
tsc-out
tsdoc-metadata.json
target
output
rollup.config.js
build
.cache
.vscode
.rollup.cache
tsconfig.tsbuildinfo
vite.config.mts
*.spec.tsx
*.spec.ts
.netlify
pnpm-lock.yaml
package-lock.json
yarn.lock
server


================================================
FILE: docs/.prettierrc.js
================================================
export default {
  plugins: ["prettier-plugin-tailwindcss"],
};


================================================
FILE: docs/.vscode/launch.json
================================================
{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch Chrome",
      "request": "launch",
      "type": "chrome",
      "url": "http://localhost:5173",
      "webRoot": "${workspaceFolder}"
    },
    {
      "type": "node",
      "name": "dev.debug",
      "request": "launch",
      "skipFiles": ["<node_internals>/**"],
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}/node_modules/vite/bin/vite.js",
      "args": ["--mode", "ssr", "--force"]
    }
  ]
}


================================================
FILE: docs/.vscode/qwik-router.code-snippets
================================================
{
  "onRequest": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "qonRequest",
    "description": "onRequest function for a route index",
    "body": [
      "export const onRequest: RequestHandler = (request) => {",
      "  $0",
      "};",
    ],
  },
  "loader$": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "qloader$",
    "description": "loader$()",
    "body": ["export const $1 = routeLoader$(() => {", "  $0", "});"],
  },
  "action$": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "qaction$",
    "description": "action$()",
    "body": ["export const $1 = routeAction$((data) => {", "  $0", "});"],
  },
  "Full Page": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "qpage",
    "description": "Simple page component",
    "body": [
      "import { component$ } from '@qwik.dev/core';",
      "",
      "export default component$(() => {",
      "  $0",
      "});",
    ],
  },
}


================================================
FILE: docs/.vscode/qwik.code-snippets
================================================
{
  "Qwik component (simple)": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "qcomponent$",
    "description": "Simple Qwik component",
    "body": [
      "export const ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}} = component$(() => {",
      "  return <${2:div}>$4</$2>",
      "});",
    ],
  },
  "Qwik component (props)": {
    "scope": "typescriptreact",
    "prefix": "qcomponent$ + props",
    "description": "Qwik component w/ props",
    "body": [
      "export interface ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}Props {",
      "  $2",
      "}",
      "",
      "export const $1 = component$<$1Props>((props) => {",
      "  const ${2:count} = useSignal(0);",
      "  return (",
      "    <${3:div} on${4:Click}$={(ev) => {$5}}>",
      "      $6",
      "    </${3}>",
      "  );",
      "});",
    ],
  },
  "Qwik signal": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "quseSignal",
    "description": "useSignal() declaration",
    "body": ["const ${1:foo} = useSignal($2);", "$0"],
  },
  "Qwik store": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "quseStore",
    "description": "useStore() declaration",
    "body": ["const ${1:state} = useStore({", "  $2", "});", "$0"],
  },
  "$ hook": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "q$",
    "description": "$() function hook",
    "body": ["$(() => {", "  $0", "});", ""],
  },
  "useVisibleTask": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "quseVisibleTask",
    "description": "useVisibleTask$() function hook",
    "body": ["useVisibleTask$(({ track }) => {", "  $0", "});", ""],
  },
  "useTask": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "quseTask$",
    "description": "useTask$() function hook",
    "body": [
      "useTask$(({ track }) => {",
      "  track(() => $1);",
      "  $0",
      "});",
      "",
    ],
  },
  "useResource": {
    "scope": "javascriptreact,typescriptreact",
    "prefix": "quseResource$",
    "description": "useResource$() declaration",
    "body": [
      "const $1 = useResource$(({ track, cleanup }) => {",
      "  $0",
      "});",
      "",
    ],
  },
}


================================================
FILE: docs/README.md
================================================
# Qwik App ⚡️

- [Qwik Docs](https://qwik.dev/)
- [Discord](https://qwik.dev/chat)
- [Qwik GitHub](https://github.com/QwikDev/qwik)
- [@QwikDev](https://twitter.com/QwikDev)
- [Vite](https://vitejs.dev/)

---

## Project Structure

This project is using Qwik with [QwikRouter](https://qwik.dev/docs/). QwikRouter is just an extra set of tools on top of Qwik to make it easier to build a full site, including directory-based routing, layouts, and more.

Inside your project, you'll see the following directory structure:

```
├── public/
│   └── ...
└── src/
    ├── components/
    │   └── ...
    └── routes/
        └── ...
```

- `src/routes`: Provides the directory-based routing, which can include a hierarchy of `layout.tsx` layout files, and an `index.tsx` file as the page. Additionally, `index.ts` files are endpoints. Please see the [routing docs](https://qwik.dev/docs/routing/) for more info.

- `src/components`: Recommended directory for components.

- `public`: Any static assets, like images, can be placed in the public directory. Please see the [Vite public directory](https://vitejs.dev/guide/assets.html#the-public-directory) for more info.

## Add Integrations and deployment

Use the `pnpm qwik add` command to add additional integrations. Some examples of integrations includes: Cloudflare, Netlify or Express Server, and the [Static Site Generator (SSG)](https://qwik.dev/docs/guides/static-site-generation/).

```shell
pnpm qwik add # or `pnpm qwik add`
```

## Development

Development mode uses [Vite's development server](https://vitejs.dev/). The `dev` command will server-side render (SSR) the output during development.

```shell
npm start # or `pnpm start`
```

> Note: during dev mode, Vite may request a significant number of `.js` files. This does not represent a Qwik production build.

## Preview

The preview command will create a production build of the client modules, a production build of `src/entry.preview.tsx`, and run a local server. The preview server is only for convenience to preview a production build locally and should not be used as a production server.

```shell
pnpm preview # or `pnpm preview`
```

## Production

The production build will generate client and server modules by running both client and server build commands. The build command will use Typescript to run a type check on the source code.

```shell
pnpm build # or `pnpm build`
```

## Cloudflare Pages

Cloudflare's [wrangler](https://github.com/cloudflare/wrangler) CLI can be used to preview a production build locally. To start a local server, run:

```
pnpm serve
```

Then visit [http://localhost:8787/](http://localhost:8787/)

### Deployments

[Cloudflare Pages](https://pages.cloudflare.com/) are deployable through their [Git provider integrations](https://developers.cloudflare.com/pages/platform/git-integration/).

If you don't already have an account, then [create a Cloudflare account here](https://dash.cloudflare.com/sign-up/pages). Next go to your dashboard and follow the [Cloudflare Pages deployment guide](https://developers.cloudflare.com/pages/framework-guides/deploy-anything/).

Within the projects "Settings" for "Build and deployments", the "Build command" should be `pnpm build`, and the "Build output directory" should be set to `dist`.

### Function Invocation Routes

Cloudflare Page's [function-invocation-routes config](https://developers.cloudflare.com/pages/platform/functions/routing/#functions-invocation-routes) can be used to include, or exclude, certain paths to be used by the worker functions. Having a `_routes.json` file gives developers more granular control over when your Function is invoked.
This is useful to determine if a page response should be Server-Side Rendered (SSR) or if the response should use a static-site generated (SSG) `index.html` file.

By default, the Cloudflare pages adaptor _does not_ include a `public/_routes.json` config, but rather it is auto-generated from the build by the Cloudflare adaptor. An example of an auto-generate `dist/_routes.json` would be:

```
{
  "include": [
    "/*"
  ],
  "exclude": [
    "/_headers",
    "/_redirects",
    "/build/*",
    "/favicon.ico",
    "/manifest.json",
    "/service-worker.js",
    "/about"
  ],
  "version": 1
}
```

In the above example, it's saying _all_ pages should be SSR'd. However, the root static files such as `/favicon.ico` and any static assets in `/build/*` should be excluded from the Functions, and instead treated as a static file.

In most cases the generated `dist/_routes.json` file is ideal. However, if you need more granular control over each path, you can instead provide you're own `public/_routes.json` file. When the project provides its own `public/_routes.json` file, then the Cloudflare adaptor will not auto-generate the routes config and instead use the committed one within the `public` directory.


================================================
FILE: docs/adapters/cloudflare-pages/vite.config.mts
================================================
import { cloudflarePagesAdapter } from "@qwik.dev/router/adapters/cloudflare-pages/vite";
import { extendConfig } from "@qwik.dev/router/vite";
import baseConfig from "../../vite.config.mts";

export default extendConfig(baseConfig, () => {
  return {
    build: {
      ssr: true,
      rollupOptions: {
        input: ["src/entry.cloudflare-pages.tsx", "@qwik-router-config"],
      },
    },
    plugins: [
      cloudflarePagesAdapter({
        ssg: {
          include: ["/*"],
          origin: "https://partytown.qwik.dev",
        },
      }),
    ],
  };
});


================================================
FILE: docs/package.json
================================================
{
  "name": "my-qwik-empty-starter",
  "description": "Blank project with routing included",
  "engines": {
    "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
  },
  "engines-annotation": "Mostly required by sharp which needs a Node-API v9 compatible runtime",
  "private": true,
  "trustedDependencies": [
    "sharp"
  ],
  "trustedDependencies-annotation": "Needed for bun to allow running install scripts",
  "type": "module",
  "scripts": {
    "build": "qwik build",
    "build.client": "vite build",
    "build.preview": "vite build --ssr src/entry.preview.tsx",
    "build.server": "vite build -c adapters/cloudflare-pages/vite.config.mts",
    "build.types": "tsc --incremental --noEmit",
    "deploy": "wrangler pages deploy ./dist",
    "dev": "vite --mode ssr",
    "dev.debug": "node --inspect-brk ./node_modules/vite/bin/vite.js --mode ssr --force",
    "fmt": "prettier --write .",
    "fmt.check": "prettier --check .",
    "lint": "eslint \"src/**/*.ts*\"",
    "preview": "qwik build preview && vite preview --open",
    "serve": "wrangler pages dev ./dist --compatibility-flags=nodejs_als",
    "start": "vite --open --mode ssr",
    "qwik": "qwik"
  },
  "devDependencies": {
    "@qwik.dev/core": "2.0.0-beta.27",
    "@qwik.dev/router": "2.0.0-beta.27",
    "@types/eslint": "8.56.10",
    "@types/node": "^20.19.0",
    "@typescript-eslint/eslint-plugin": "7.16.1",
    "@typescript-eslint/parser": "7.16.1",
    "autoprefixer": "^10.4.19",
    "clsx": "^2.1.1",
    "eslint": "8.57.0",
    "eslint-plugin-qwik": "2.0.0-beta.27",
    "postcss": "^8.4.39",
    "prettier": "3.6.2",
    "rollup": "^4.52.0",
    "prettier-plugin-tailwindcss": "^0.5.4",
    "rehype-pretty-code": "^0.14.0",
    "sass": "^1.83.0",
    "shiki": "^1.24.3",
    "tailwind-merge": "^2.5.5",
    "tailwindcss": "^3.4.6",
    "typescript": "5.4.5",
    "unist-util-visit": "^5.0.0",
    "vite": "^7.3.1",
    "vite-tsconfig-paths": "^4.2.1",
    "wrangler": "^3.0.0"
  }
}

================================================
FILE: docs/postcss.config.cjs
================================================
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  },
};


================================================
FILE: docs/public/_headers
================================================
# https://developers.cloudflare.com/pages/platform/headers/

/*service-worker.js
  Cache-Control: no-store
  Content-Type: application/javascript
  X-Content-Type-Options: nosniff

/build/*
  Cache-Control: public, max-age=31536000, s-maxage=31536000, immutable


================================================
FILE: docs/public/_redirects
================================================
# https://developers.cloudflare.com/pages/platform/redirects/


================================================
FILE: docs/public/manifest.json
================================================
{
  "$schema": "https://json.schemastore.org/web-manifest-combined.json",
  "name": "qwik-project-name",
  "short_name": "Welcome to Qwik",
  "start_url": ".",
  "display": "standalone",
  "background_color": "#fff",
  "description": "A Qwik project app."
}


================================================
FILE: docs/public/robots.txt
================================================


================================================
FILE: docs/qwik.env.d.ts
================================================
// This file can be used to add references for global types like `vite/client`.

// Add global `vite/client` types. For more info, see: https://vitejs.dev/guide/features#client-types
/// <reference types="vite/client" />


================================================
FILE: docs/recma-provide-components.ts
================================================
import type {
  CallExpression,
  FunctionDeclaration,
  Literal,
  Node,
  Program,
  VariableDeclaration,
  VariableDeclarator,
} from "estree-jsx";
import type { Plugin } from "unified";

function isNamedFunction(node: FunctionDeclaration, name: string) {
  return Boolean(node.id?.name === name);
}

export const recmaProvideComponents: Plugin<any, Program> = () => {
  let id = 0;
  return (tree) => {
    const replacement = [];
    for (const _node of tree.body) {
      const node = _node as Node;
      if (node.type === "FunctionDeclaration") {
        if (
          isNamedFunction(node, "MDXContent") ||
          isNamedFunction(node, "_createMdxContent")
        ) {
          /**
           * Transforms function MDXContent (props = {}) {...}
           * to const MDXContent = _componentQrl(_inlinedQrl(function (props = {}) {...}, 'symbolName', []))
           * allows using Qwik hooks inside
           *  */
          const symbolName = `${node.id?.name || "mdx"}_${id++}`;
          const declarations: VariableDeclarator[] = [
            {
              id: node.id!,
              type: "VariableDeclarator",
              init: {
                type: "CallExpression",
                callee: {
                  type: "Identifier",
                  name: "_componentQrl",
                },
                arguments: [
                  {
                    type: "CallExpression",
                    callee: {
                      type: "Identifier",
                      name: "_inlinedQrl",
                    },
                    arguments: [
                      {
                        type: "ArrowFunctionExpression",
                        id: null,
                        params: node.params,
                        body: node.body,
                        async: node.async,
                        generator: node.generator,
                      },
                      {
                        type: "Literal",
                        value: symbolName,
                        raw: String.raw`"${symbolName}"`,
                      } as Literal,
                      {
                        type: "ArrayExpression",
                        elements: [],
                      },
                    ],
                  } as CallExpression,
                ],
              } as CallExpression,
            },
          ];
          const newNode: VariableDeclaration = {
            type: "VariableDeclaration",
            kind: "const",
            declarations,
          };
          replacement.push(newNode);
          continue;
        }
      }
      replacement.push(_node);
    }
    tree.body = replacement;

    tree.body.unshift({
      type: "ImportDeclaration",
      specifiers: [
        {
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "componentQrl" },
          local: { type: "Identifier", name: "_componentQrl" },
        },
        {
          type: "ImportSpecifier",
          imported: { type: "Identifier", name: "inlinedQrl" },
          local: { type: "Identifier", name: "_inlinedQrl" },
        },
      ],
      source: { type: "Literal", value: "@qwik.dev/core" },
    });
  };
};


================================================
FILE: docs/src/components/Aside/Aside.tsx
================================================
import { component$ } from "@qwik.dev/core";
import { useContent } from "@qwik.dev/router";

export const Aside = component$(() => {
  const { menu } = useContent();

  return (
    <div
      class={`fixed top-20 mt-8 flex h-full flex-col overflow-hidden overflow-y-auto px-6 text-black dark:text-white`}
    >
      {(menu?.items || []).map(({ text, items }, idx) => {
        const [title, href] = text.split("|");
        return (
          <ul key={idx} class="mb-6">
            <li>
              {href ? (
                <a
                  class="mb-2 block rounded bg-blue-700 dark:bg-blue-600 px-4 py-1 text-base font-bold uppercase text-white no-underline"
                  href={href}
                >
                  {title}
                </a>
              ) : (
                <span class="mb-2 block rounded bg-blue-700 dark:bg-blue-600 px-4 py-1 text-base font-bold uppercase text-white no-underline">
                  {text}
                </span>
              )}
              {(items || []).map(({ text, href }, idx) => (
                <ul key={idx}>
                  <li class="py-1 text-black dark:text-white">
                    <a href={href}>
                      <span class="text-md pl-2">
                        <span>{text}</span>
                      </span>
                    </a>
                  </li>
                </ul>
              ))}
            </li>
          </ul>
        );
      })}
    </div>
  );
});


================================================
FILE: docs/src/components/CodeSnippet/CodeSnippet.tsx
================================================
import type { PropsOf } from "@qwik.dev/core";
import { component$, useComputed$ } from "@qwik.dev/core";
import { useLocation } from "@qwik.dev/router";
import { Highlight } from "../Highlight/Highlight";

const codeSnippets: Record<string, { default: string }> = import.meta.glob(`/src/**/snippets/*`, {
  query: "?raw",
  eager: true,
});

type CodeSnippetProps = PropsOf<"div"> & {
  name: string;
};

export const CodeSnippet = component$<CodeSnippetProps>(({ name }) => {
  const location = useLocation();

  const codeSnippet = useComputed$(() => {
    let fileExtension = ".tsx";
    if (name.endsWith(".tsx") || name.endsWith(".ts") || name.endsWith(".css")) {
      fileExtension = "";
    }
    const snippetPath = `/src/routes${location.url.pathname}snippets/${name}${fileExtension}`;
    const code = codeSnippets[snippetPath];
    return code?.default || "";
  });

  return (
    <div class="shadow-3xl mb-6 rounded-md border shadow-lg">
      <Highlight code={codeSnippet.value || ""} />
    </div>
  );
});


================================================
FILE: docs/src/components/Footer/Footer.tsx
================================================
import { component$ } from "@qwik.dev/core";
import { GitHubIcon } from "../Icons/GitHubIcon";

export const Footer = component$(() => {
  return (
    <footer class="flex border-t-[2px] border-slate-200 px-6 py-4 dark:border-slate-800 bg-[#F8F8FF] dark:bg-[#0D0F12] mt-6">
      <div class="grid w-full grid-cols-12">
        <div class="col-span-4" />
        <div class="col-span-4" />
        <div class="col-span-4 flex justify-end">
          <a
            target="_blank"
            href="https://github.com/QwikDev/RoadPlan"
            rel="noopener noreferrer"
            title="QwikDev/RoadPlan"
            aria-label="QwikDev/RoadPlan"
          >
            <GitHubIcon />
          </a>
        </div>
      </div>
    </footer>
  );
});


================================================
FILE: docs/src/components/Header/Header.tsx
================================================
/* eslint-disable qwik/jsx-img */
import { component$, useSignal } from "@qwik.dev/core";
import { ThemeSelector } from "~/components/ThemeSelector/ThemeSelector";
import { config } from "../../config";
import { Aside } from "../Aside/Aside";
import { CloseIcon } from "../Icons/CloseIcon";
import { GitHubIcon } from "../Icons/GitHubIcon";
import { MenuIcon } from "../Icons/MenuIcon";

type Props = {
  links?: { name: string; href: string }[];
  showMenu?: boolean;
};
export const Header = component$<Props>(({ links = [], showMenu = true }) => {
  const showAsideSig = useSignal(false);
  return (
    <header
      class={`fixed top-0 z-10 h-20 w-full border-b-[2px] border-zinc-100 bg-[#F8F8FF] dark:border-zinc-900 dark:bg-[#0D0F12]`}
    >
      <div class="grid h-full max-w-[1376px] grid-cols-12 px-6">
        <div class="col-span-3 flex items-center sm:col-span-4">
          {showMenu && (
            <button
              class="block lg:hidden"
              onClick$={() => (showAsideSig.value = true)}
            >
              <MenuIcon />
            </button>
          )}
          <a href="/" class="hidden items-center pt-2 lg:flex">
            <img
              src="/partytown-logo.svg"
              width={42}
              height={42}
              alt="logo-black"
              loading="eager"
            />
            <span class="ml-2 text-lg font-bold dark:text-white">
              {config.title}
            </span>
          </a>
        </div>
        <div class="col-span-3 flex items-center justify-center sm:col-span-4">
          <a href="/" class="flex items-center lg:hidden">
            <img
              src="/partytown-logo.svg"
              width={42}
              height={42}
              alt="logo-black"
              loading="eager"
            />
            <span class="ml-2 text-lg font-bold dark:text-white lg:hidden">
              {config.title}
            </span>
          </a>
          <div class="hidden text-black dark:text-white lg:flex">
            {links.map(({ name, href }, key) => (
              <a key={key} class="m-4" href={href}>
                {name}
              </a>
            ))}
          </div>
        </div>
        <div class="col-span-6 flex items-center justify-end sm:col-span-4">
          <ThemeSelector />
          <a
            target="_blank"
            href={config.GitHub}
            title="QwikDev/RoadPlan"
            aria-label="QwikDev/RoadPlan"
            class="hidden xsm:block"
            rel="noopener noreferrer"
          >
            <GitHubIcon />
          </a>
        </div>
      </div>
      {showAsideSig.value && (
        <div class="fixed inset-0 z-10 overflow-hidden">
          <div class="absolute inset-0 overflow-hidden">
            <div class="absolute inset-0 bg-gray-500 bg-opacity-75 opacity-100 transition-opacity"></div>
            <div class="fixed inset-y-0 left-0 flex h-full w-screen max-w-xs translate-x-0 flex-col overflow-y-scroll bg-white dark:bg-black">
              <div
                class={`flex h-20 items-center border-b-[2px] border-slate-200 bg-white dark:border-slate-800 dark:bg-black`}
              >
                <div class="pl-5" onClick$={() => (showAsideSig.value = false)}>
                  <CloseIcon />
                </div>
              </div>
              <Aside />
            </div>
          </div>
        </div>
      )}
    </header>
  );
});


================================================
FILE: docs/src/components/Highlight/Highlight.tsx
================================================
import type { PropsOf } from "@qwik.dev/core";
import {
  $,
  component$,
  useSignal,
  useTask$,
  useVisibleTask$,
} from "@qwik.dev/core";
import { isDev } from "@qwik.dev/core/build";
import { getHighlighterCore } from "shiki";
import css from "shiki/langs/css.mjs";
import html from "shiki/langs/html.mjs";
import tsx from "shiki/langs/tsx.mjs";
import poimandres from "shiki/themes/poimandres.mjs";

export type HighlightProps = PropsOf<"div"> & {
  code: string;
  language?: "tsx" | "html" | "css";
  splitCommentStart?: string;
  splitCommentEnd?: string;
};

export const Highlight = component$(
  ({
    code,
    language = "tsx",
    splitCommentStart = "{/* start */}",
    splitCommentEnd = "{/* end */}",
    ...props
  }: HighlightProps) => {
    const codeSig = useSignal("");

    const addShiki$ = $(async () => {
      let modifiedCode: string = code;

      let partsOfCode = modifiedCode.split(splitCommentStart);
      if (partsOfCode.length > 1) {
        modifiedCode = partsOfCode[1];
      }

      partsOfCode = modifiedCode.split(splitCommentEnd);
      if (partsOfCode.length > 1) {
        modifiedCode = partsOfCode[0];
      }

      const highlighter = await getHighlighterCore({
        themes: [poimandres],
        langs: [html, css, tsx],
        loadWasm: import("shiki/wasm"),
      });

      const str = highlighter.codeToHtml(modifiedCode, {
        lang: language,
        themes: {
          light: "poimandres",
          dark: "poimandres",
        },
      });
      codeSig.value = str.toString();
    });

    useTask$(async ({ track }) => {
      track(() => code);
      if (!isDev) {
        await addShiki$();
      }
    });

    // eslint-disable-next-line qwik/no-use-visible-task
    useVisibleTask$(async ({ track }) => {
      track(() => code);
      if (isDev) {
        await addShiki$();
      }
    });

    return (
      <div class="code-example rounded-base relative max-h-[31.25rem]">
        <div
          {...props}
          class={[
            "tab-size dark:from-background dark:to-accent/30 max-h-[31.25rem] max-w-full overflow-auto rounded-sm bg-gradient-to-b from-slate-900 to-slate-800 p-6 text-sm",
            props.class,
          ]}
        >
          <div dangerouslySetInnerHTML={codeSig.value} />
        </div>
      </div>
    );
  },
);


================================================
FILE: docs/src/components/Icons/CloseIcon.tsx
================================================
import { component$ } from "@qwik.dev/core";

export const CloseIcon = component$(() => {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      class="h-10 w-10 rounded-xl stroke-black p-1 dark:stroke-white"
      fill="none"
      stroke-width="2.5"
      viewBox="0 0 24 24"
      aria-label="Close"
    >
      <path
        d="M6 18L18 6M6 6l12 12"
        stroke-linecap="round"
        stroke-linejoin="round"
      ></path>
    </svg>
  );
});


================================================
FILE: docs/src/components/Icons/GitHubIcon.tsx
================================================
import { component$ } from "@qwik.dev/core";

export const GitHubIcon = component$<{ classes?: string }>(
  ({ classes = "w-8 h8" }) => {
    return (
      <svg
        xmlns="http://www.w3.org/2000/svg"
        xmlns:xlink="http://www.w3.org/1999/xlink"
        aria-hidden="true"
        role="img"
        class={`rounded-xl p-1 ${classes}`}
        viewBox="0 0 496 512"
      >
        <path
          class="fill-black dark:fill-white"
          d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2z"
        ></path>
      </svg>
    );
  },
);


================================================
FILE: docs/src/components/Icons/MenuIcon.tsx
================================================
import { component$ } from "@qwik.dev/core";

export const MenuIcon = component$(() => {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      role="img"
      class="h-8 w-8 rounded-xl p-1"
      viewBox="0 0 24 24"
      aria-label="Menu"
    >
      <g fill="none">
        <path d="M24 0v24H0V0h24ZM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035c-.01-.004-.019-.001-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427c-.002-.01-.009-.017-.017-.018Zm.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093c.012.004.023 0 .029-.008l.004-.014l-.034-.614c-.003-.012-.01-.02-.02-.022Zm-.715.002a.023.023 0 0 0-.027.006l-.006.014l-.034.614c0 .012.007.02.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01l-.184-.092Z" />
        <path
          class="fill-black dark:fill-white"
          d="M20 17.5a1.5 1.5 0 0 1 .144 2.993L20 20.5H4a1.5 1.5 0 0 1-.144-2.993L4 17.5h16Zm0-7a1.5 1.5 0 0 1 0 3H4a1.5 1.5 0 0 1 0-3h16Zm0-7a1.5 1.5 0 0 1 0 3H4a1.5 1.5 0 1 1 0-3h16Z"
        />
      </g>
    </svg>
  );
});


================================================
FILE: docs/src/components/Icons/ThemeDarkIcon.tsx
================================================
import { component$ } from "@qwik.dev/core";

export const ThemeDarkIcon = component$(() => {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      aria-hidden="true"
      role="img"
      class="w- h-8 rounded-xl p-1"
      viewBox="0 0 24 24"
    >
      <path
        class="fill-black dark:fill-white"
        d="M21.64 13a1 1 0 0 0-1.05-.14a8.05 8.05 0 0 1-3.37.73a8.15 8.15 0 0 1-8.14-8.1a8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69a1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14a9.79 9.79 0 0 0 2.1-.22a8.11 8.11 0 0 1-7.18 4.32Z"
      ></path>
    </svg>
  );
});


================================================
FILE: docs/src/components/Icons/ThemeLightIcon.tsx
================================================
import { component$ } from "@qwik.dev/core";

export const ThemeLightIcon = component$(() => {
  return (
    <svg
      xmlns="http://www.w3.org/2000/svg"
      xmlns:xlink="http://www.w3.org/1999/xlink"
      aria-hidden="true"
      role="img"
      class="h-8 w-8 rounded-xl p-1"
      viewBox="0 0 24 24"
    >
      <path
        class="fill-black dark:fill-white"
        d="m5.64 17l-.71.71a1 1 0 0 0 0 1.41a1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm7-7a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1ZM5.64 7.05a1 1 0 0 0 .7.29a1 1 0 0 0 .71-.29a1 1 0 0 0 0-1.41l-.71-.71a1 1 0 0 0-1.41 1.41Zm12 .29a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.64.71a1 1 0 0 0 0 1.41a1 1 0 0 0 .66.29ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-9 8a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Zm6.36-2A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0a1 1 0 0 0 0-1.41ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 3.5-3.5a3.5 3.5 0 0 1-3.5 3.5Z"
      ></path>
    </svg>
  );
});


================================================
FILE: docs/src/components/MdxComponents/MdxComponents.tsx
================================================
import { type PropsOf, Slot, component$ } from "@qwik.dev/core";
import { CodeSnippet } from "../CodeSnippet/CodeSnippet";

export const components: Record<string, any> = {
  pre: component$<PropsOf<"div"> & { __rawString__?: string }>(
    () => {
      return (
        <div class="relative">
          <pre class="mb-4 mt-6 max-h-[650px] overflow-x-auto rounded-lg bg-zinc-950 p-6 text-white dark:bg-zinc-950">
            <Slot />
          </pre>
        </div>
      );
    },
  ),
  code: component$<PropsOf<"code">>(({ ...props }) => {
    return (
      <code {...props}>
        <Slot />
      </code>
    );
  }),
  CodeSnippet,
};


================================================
FILE: docs/src/components/RouterHead/RouterHead.tsx
================================================
import { useDocumentHead, useLocation } from "@qwik.dev/router";
import { component$ } from "@qwik.dev/core";

/**
 * The RouterHead component is placed inside of the document `<head>` element.
 */
export const RouterHead = component$(() => {
  const head = useDocumentHead();
  const loc = useLocation();

  const imageSrc = "https://partytown.qwik.dev/partytown-media.png";
  const description =
    head.meta.find((m) => m.name === "description")?.content ||
    `Partytown is a lazy-loaded library to help relocate resource intensive scripts into a web worker`;

  return (
    <>
      <title>{head.title}</title>
      <meta name="description" content={description} />

      <link rel="canonical" href={loc.url.href} />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <link rel="icon" type="image/svg+xml" href="/favicon.svg" />

      <link rel="canonical" href={loc.url.href} />

      <meta property="og:title" content={head.frontmatter.title} />
      <meta property="og:type" content="article" />
      <meta property="og:url" content={loc.url.href} />
      <meta property="og:locale" content={"en_US"} />
      <meta property="og:image" content={imageSrc} />
      <meta
        name="description"
        property="og:description"
        content={description || head.frontmatter.title}
      />
      <meta property="og:site_name" content={head.frontmatter.title} />

      <meta name="twitter:card" content="summary_large_image" />
      <meta name="twitter:site" content="@builderio" />
      <meta name="twitter:title" content={head.frontmatter.title} />
      <meta
        name="twitter:description"
        content={description || head.frontmatter.title}
      />
      <meta name="twitter:image" content={imageSrc} />
      <meta name="twitter:image:alt" content="Partytown Logo" />

      {head.meta.map((m) => (
        <meta key={m.key} {...m} />
      ))}

      {head.links.map((l) => (
        <link key={l.key} {...l} />
      ))}

      {head.styles.map((s) => (
        <style key={s.key} {...s.props} dangerouslySetInnerHTML={s.style} />
      ))}
      <script
        dangerouslySetInnerHTML={`
          (function() {
            function setTheme(theme) {
              document.documentElement.className = theme;
              localStorage.setItem('theme', theme);
            }
            var theme = localStorage.getItem('theme');
            theme = theme === 'light' ? 'light' : 'dark';
            if (theme) {
              setTheme(theme);
            } else {
              setTheme('light');
            }
          })();
        `}
      />
    </>
  );
});


================================================
FILE: docs/src/components/ThemeSelector/ThemeSelector.tsx
================================================
import { component$, useContext } from "@qwik.dev/core";
import { ThemeDarkIcon } from "~/components/Icons/ThemeDarkIcon";
import { ThemeLightIcon } from "~/components/Icons/ThemeLightIcon";
import { StoreContext } from "~/routes/layout";

export const ThemeSelector = component$(() => {
  const store = useContext(StoreContext);
  return (
    <div
      class="cursor-pointer px-4 xsm:block"
      onClick$={() => {
        store.theme = store.theme === "light" ? "dark" : "light";
        const newTheme = store.theme === "light" ? "light" : "dark";
        document.documentElement.className = newTheme;
        localStorage.setItem("theme", store.theme);
      }}
    >
      <div class="light-element">
        <ThemeLightIcon />
      </div>
      <div class="dark-element">
        <ThemeDarkIcon />
      </div>
    </div>
  );
});


================================================
FILE: docs/src/components/Toc/Toc.tsx
================================================
import { cn } from "~/utils/cn";
import { component$, useSignal, $, useOnWindow } from "@qwik.dev/core";
import type { ContentHeading } from "@qwik.dev/router";

export const Toc = component$(
  ({ headings }: { headings: ContentHeading[] }) => {
    if (headings.length === 0) {
      return null;
    }
    return (
      <div class="sticky top-24 hidden max-h-[calc(80vh)] space-y-2 p-1 text-black dark:text-white xl:block">
        <div class="mb-2 block rounded bg-blue-700 px-4 py-1 text-base font-bold uppercase text-white no-underline dark:bg-blue-600">
          On this page
        </div>
        <TableOfContents headings={headings} />
      </div>
    );
  },
);

type TableOfContentsProps = { headings: ContentHeading[] };

interface Node extends ContentHeading {
  children: Node[];
  activeItem: string;
}
type Tree = Array<Node>;

const TableOfContents = component$<TableOfContentsProps>(({ headings }) => {
  const sanitizedHeadings = headings.map(({ text, id, level }) => ({
    text,
    id,
    level,
  }));
  const itemIds = headings.map(({ id }) => id);
  const activeHeading = useActiveItem(itemIds);
  const tree = buildTree(sanitizedHeadings);
  const fixStartingBug: Node = { ...tree, children: [tree] };
  return (
    <RecursiveList
      tree={fixStartingBug}
      activeItem={activeHeading.value ?? ""}
    />
  );
});

function deltaToStrg(
  currNode: Node,
  nextNode: Node,
): "same level" | "down one level" | "up one level" | "upwards discontinuous" {
  const delta = currNode.level - nextNode.level;
  if (delta > 1) {
    return "upwards discontinuous";
  }
  if (delta === 1) {
    return "up one level";
  }
  if (delta === 0) {
    return "same level";
  }
  if (delta === -1) {
    return "down one level";
  }

  throw new Error(
    `bad headings: are downwards discontinous from: #${currNode.id} to #${nextNode.id} bc from ${currNode.level} to ${nextNode.level}`,
  );
}

function buildTree(nodes: ContentHeading[]) {
  let currNode = nodes[0] as Node;
  currNode.children = [];
  const tree = [currNode];
  const childrenMap = new Map<number, Tree>();
  childrenMap.set(currNode.level, currNode.children);
  for (let index = 1; index < nodes.length; index++) {
    const nextNode = nodes[index] as Node;
    nextNode.children = [];
    childrenMap.set(nextNode.level, nextNode.children);
    const deltaStrg = deltaToStrg(currNode, nextNode);
    switch (deltaStrg) {
      case "upwards discontinuous": {
        const delta = currNode.level - nextNode.level;
        if (childrenMap.has(delta - 1)) {
          const nthParent = childrenMap.get(delta - 1);
          nthParent?.push(nextNode);
        }
        break;
      }
      case "up one level": {
        const grandParent = childrenMap.get(currNode.level - 2);
        grandParent?.push(nextNode);
        break;
      }
      case "same level": {
        const parent = childrenMap.get(currNode.level - 1);
        parent?.push(nextNode);
        break;
      }
      case "down one level": {
        currNode.children.push(nextNode);
        break;
      }
      default:
        break;
    }
    currNode = nextNode;
  }
  return tree[0];
}

type RecursiveListProps = {
  tree: Node;
  activeItem: string;
  limit?: number;
};

const RecursiveList = component$<RecursiveListProps>(
  ({ tree, activeItem, limit = 3 }) => {
    return tree.children.length && tree.level < limit ? (
      <ul class={cn("m-0 list-none", { "pl-4": tree.level !== 1 })}>
        {tree.children.map((childNode) => (
          <li key={childNode.id} class="mt-0 list-none pt-2">
            <Anchor node={childNode} activeItem={activeItem} />
            {childNode.children.length > 0 && (
              <RecursiveList tree={childNode} activeItem={activeItem} />
            )}
          </li>
        ))}
      </ul>
    ) : null;
  },
);

const useActiveItem = (itemIds: string[]) => {
  const activeId = useSignal<string>();

  useOnWindow(
    "scroll",
    $(() => {
      const observer = new IntersectionObserver(
        (entries) => {
          entries.forEach((entry) => {
            if (entry.isIntersecting) {
              activeId.value = entry.target.id;
            }
          });
        },
        { rootMargin: "0% 0% -85% 0%" },
      );

      itemIds.forEach((id) => {
        const element = document.getElementById(id);
        if (element) {
          observer.observe(element);
        }
      });

      return () => {
        itemIds.forEach((id) => {
          const element = document.getElementById(id);
          if (element) {
            observer.unobserve(element);
          }
        });
      };
    }),
  );

  return activeId;
};

type AnchorProps = {
  node: Node;
  activeItem: string;
};

const Anchor = component$<AnchorProps>(({ node, activeItem }) => {
  const isActive = node.id === activeItem;
  return (
    <a
      href={`#${node.id}`}
      onClick$={[
        $(() => {
          const element = document.getElementById(node.id);
          if (element) {
            const navbarHeight = 90;
            const position =
              element.getBoundingClientRect().top +
              window.scrollY -
              navbarHeight;
            window.scrollTo({ top: position, behavior: "auto" });
          }
        }),
      ]}
      class={cn(
        node.level > 2 && "ml-2",
        "inline-block no-underline transition-colors",
        isActive ? "text-blue-500 dark:text-blue-300" : "text-muted-foreground",
      )}
    >
      {node.text}
    </a>
  );
});


================================================
FILE: docs/src/config.ts
================================================
export const config = {
  title: "PartyTown",
  GitHub: "https://github.com/QwikDev/partytown",
};


================================================
FILE: docs/src/entry.cloudflare-pages.tsx
================================================
/*
 * WHAT IS THIS FILE?
 *
 * It's the entry point for Cloudflare Pages when building for production.
 *
 * Learn more about the Cloudflare Pages integration here:
 * - https://qwik.dev/docs/deployments/cloudflare-pages/
 *
 */
import { manifest } from "@qwik-client-manifest";
import qwikRouterConfig from "@qwik-router-config";
import {
  createQwikRouter,
  type PlatformCloudflarePages,
} from "@qwik.dev/router/middleware/cloudflare-pages";
import render from "./entry.ssr";

declare global {
  interface QwikRouterPlatform extends PlatformCloudflarePages {}
}

const fetch = createQwikRouter({ render, qwikRouterConfig, manifest });

export { fetch };


================================================
FILE: docs/src/entry.dev.tsx
================================================
/*
 * WHAT IS THIS FILE?
 *
 * Development entry point using only client-side modules:
 * - Do not use this mode in production!
 * - No SSR
 * - No portion of the application is pre-rendered on the server.
 * - All of the application is running eagerly in the browser.
 * - More code is transferred to the browser than in SSR mode.
 * - Optimizer/Serialization/Deserialization code is not exercised!
 */
import { render, type RenderOptions } from "@qwik.dev/core";
import Root from "./root";

export default function (opts: RenderOptions) {
  return render(document, <Root />, opts);
}


================================================
FILE: docs/src/entry.preview.tsx
================================================
/*
 * WHAT IS THIS FILE?
 *
 * It's the bundle entry point for `npm run preview`.
 * That is, serving your app built in production mode.
 *
 * Feel free to modify this file, but don't remove it!
 *
 * Learn more about Vite's preview command:
 * - https://vitejs.dev/config/preview-options.html#preview-options
 *
 */
import qwikRouterConfig from "@qwik-router-config";
import { createQwikRouter } from "@qwik.dev/router/middleware/node";
// make sure qwikRouterConfig is imported before entry
import render from "./entry.ssr";

/**
 * The default export is the QwikRouter adapter used by Vite preview.
 */
export default createQwikRouter({ render, qwikRouterConfig });


================================================
FILE: docs/src/entry.ssr.tsx
================================================
/**
 * WHAT IS THIS FILE?
 *
 * SSR entry point, in all cases the application is rendered outside the browser, this
 * entry point will be the common one.
 *
 * - Server (express, cloudflare...)
 * - npm run start
 * - npm run preview
 * - npm run build
 *
 */
import { manifest } from "@qwik-client-manifest";
import {
  renderToStream,
  type RenderToStreamOptions,
} from "@qwik.dev/core/server";
import Root from "./root";

export default function (opts: RenderToStreamOptions) {
  return renderToStream(<Root />, {
    manifest,
    ...opts,
    // Use container attributes to set attributes on the html tag.
    containerAttributes: {
      lang: "en-us",
      ...opts.containerAttributes,
    },
    serverData: {
      ...opts.serverData,
    },
  });
}


================================================
FILE: docs/src/global.scss
================================================
/**
 * Tailwind CSS imports
 * View the full documentation at https://tailwindcss.com
 */
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  :root {
    --color-background: 0 0% 100%;
    --color-foreground: 263 84% 5%;

    --color-primary: 263 56% 52%;
    --color-primary-foreground: 0 0% 100%;

    --color-secondary: 202 91% 52%;
    --color-secondary-foreground: 0 0% 100%;

    --color-muted: 210 40% 96%;
    --color-muted-foreground: 263 16% 47%;

    --color-accent: 0 0% 89%;
    --color-accent-foreground: 263 47% 11%;

    --color-destructive: 0 84% 60%;
    --color-destructive-foreground: 263 0% 100%;

    --color-card: 0 0% 100%;
    --color-card-foreground: 263 84% 5%;

    --color-popover: 0 0% 100%;
    --color-popover-foreground: 263 84% 5%;

    --color-border: 263 32% 91%;

    --color-input: 263 32% 91%;

    --color-ring: 263 18% 61%;

    --border-radius: 0.375rem;
  }

  .dark {
    /* previous 263 84% 5%  */
    --color-background: 222 47% 11%;
    --color-foreground: 263 40% 98%;

    --color-primary: 263 70% 58%;
    --color-primary-foreground: 190 40% 98%;

    --color-secondary: 202 97% 55%;
    --color-secondary-foreground: 190 40% 98%;

    --color-muted: 218 32.6% 17.5%;
    --color-muted-foreground: 263 20.2% 65.1%;

    --color-accent: 0 0% 23%;
    --color-accent-foreground: 263 40% 98%;

    --color-destructive: 0 70% 40%;
    --color-destructive-foreground: 263 40% 98%;

    --color-card: 263 84% 4.9%;
    --color-card-foreground: 263 40% 98%;

    --color-popover: 263 84% 4.9%;
    --color-popover-foreground: 263 40% 98%;

    --color-border: 263 32.6% 17.5%;

    --color-input: 263 32.6% 17.5%;

    --color-ring: 263 26.8% 83.9%;
  }
}

/**
 * WHAT IS THIS FILE?
 *
 * Globally applied styles. No matter which components are in the page or matching route,
 * the styles in here will be applied to the Document, without any sort of CSS scoping.
 *
 */

html {
  @apply bg-[#F8F8FF];
}

.dark {
  @apply bg-[#0D0F12]
}

body {
  padding: 0;
  height: 100%;
  width: 100%;
  margin: auto;
}

.light-element {
  display: none;
}
.dark-element {
  display: none;
}
.light {
  .light-element {
    display: block;
  }
}
.dark {
  .dark-element {
    display: block;
  }
}

.docs {
  @apply w-full px-8 text-black dark:text-white lg:px-16;

  * {
    @apply scroll-m-[160px];
  }
  h1 {
    @apply mt-2  text-4xl font-bold;
  }

  h2 {
    @apply mt-12 border-b pb-2 text-2xl font-semibold tracking-tight first:mt-0;
  }

  h3 {
    @apply mt-8 text-xl font-semibold tracking-tight;
  }

  h4 {
    @apply mt-8 text-lg font-semibold tracking-tight;
  }

  h5 {
    @apply mt-8 text-lg font-semibold tracking-tight;
  }

  h6 {
    @apply mt-8 text-base font-semibold tracking-tight;
  }

  a {
    @apply font-medium underline underline-offset-4;
  }

  p {
    @apply leading-7;
  }

  p:not(:first-child) {
    @apply mt-6;
  }

  ul {
    @apply my-6 ml-6 list-disc;
  }

  ol {
    @apply my-6 ml-6 list-decimal;
  }

  li {
    @apply mt-2;
  }

  blockquote {
    @apply mt-6 border-l-2 pl-6 italic;
  }

  img {
    @apply rounded-md;
  }

  pre {
    @apply mb-4 mt-6 max-h-[650px] overflow-x-auto rounded-lg bg-zinc-950 p-6 text-white dark:bg-zinc-950;
  }

  hr {
    @apply my-4 md:my-8;
  }

  table {
    @apply my-6 w-full overflow-y-auto;
  }

  tr {
    @apply m-0 border-t p-0;
  }

  th {
    @apply border px-4 py-2 text-left font-bold;
  }

  th[align="center"] {
    @apply text-center;
  }

  th[align="right"] {
    @apply text-right;
  }

  td {
    @apply border px-4 py-2 text-left;
  }

  td[align="center"] {
    @apply text-center;
  }

  td[align="right"] {
    @apply text-right;
  }
}


================================================
FILE: docs/src/root.tsx
================================================
import { component$ } from "@qwik.dev/core";
import { isDev } from "@qwik.dev/core/build";
import { QwikRouterProvider, RouterOutlet } from "@qwik.dev/router";

import "./global.scss";
import { RouterHead } from "./components/RouterHead/RouterHead";

export default component$(() => {
  /**
   * The root of a QwikRouter site always start with the <QwikRouterProvider> component,
   * immediately followed by the document's <head> and <body>.
   *
   * Don't remove the `<head>` and `<body>` elements.
   */

  return (
    <QwikRouterProvider>
      <head>
        <meta charset="utf-8" />
        {!isDev && (
          <link
            rel="manifest"
            href={`${import.meta.env.BASE_URL}manifest.json`}
          />
        )}
        <RouterHead />
      </head>
      <body lang="en" class="m-auto max-w-[1376px]">
        <RouterOutlet />
      </body>
    </QwikRouterProvider>
  );
});


================================================
FILE: docs/src/routes/404.tsx
================================================
import { component$ } from "@qwik.dev/core";

export default component$(() => {
  return (
    <>
      <h1>Page Not Found</h1>
      <p>We could not find what you were looking for.</p>
      <p>
        Please contact the owner of the site that linked you to the original URL
        and let them know their link is broken.
      </p>
    </>
  );
});


================================================
FILE: docs/src/routes/angular/index.mdx
================================================
---
title: Angular
---

# Angular

To setup Partytown in an Angular project take the following steps.

## Installation

Run the command below to install the dependencies

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

Add the path to the Partytown JS files into the assets array in your `angular.json` file

```json
"projects": {
    ...
    "{project-name}": {
        ...
        "architect": {
            ...
            "build": {
                ...
                "options": {
                    "assets": [...,
                      {
                        "glob": "**/*",
                        "input": "node_modules/@qwik.dev/partytown/lib",
                        "output": "/~partytown"
                      }
                    ]
                }
            }
        }
    }
}
```

## Script Setup

The snippet below shows you how to setup Partytown scripts in your `index.html` file. The first script tag takes the Partytown [configuration](/configuration). The second script tag references the Partytown JS file and the third file takes the third-party scripts to be loaded on the web-worker.

```html
<head>
  /* Partytown config properties */
  <script>
    partytown = {
      ...
    };
  </script>

  /* Inlined Partytown Snippet */
  <script src="/~partytown/debug/partytown.js"></script>

  <script type="text/partytown">
    /* Third-Party Script goes here */
  </script>
</head>
```


================================================
FILE: docs/src/routes/astro/index.mdx
================================================
---
title: Astro
---

# Astro

There is a first-class [Astro integration for partytown](https://github.com/withastro/astro/tree/main/packages/integrations/partytown).

## Automatic Setup

Astro includes a CLI tool for adding integrations. Using the `astro add` command will automatically install Partytown and configure your project.

```bash
npx astro add partytown
yarn astro add partytown
pnpx astro add partytown
```

## Partytown Script

Add `type: 'text/partytown'` [attribute](/partytown-scripts) to any scripts you want to be handled by Partytown.

```html
<script type="text/partytown" src="https://example.com/analytics.js"></script>
```

Note that the [Astro Partytown](https://github.com/withastro/astro/tree/main/packages/integrations/partytown) integration already handles copying the library files to the correct location.


================================================
FILE: docs/src/routes/atomics/index.mdx
================================================
---
title: Atomics
---

# Atomics

Partytown will use [Atomics](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics) and [SharedArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) when they're available by the browser. Some of the advantages include:

- 10x faster communication between threads compared to the service-worker requests
- 5% smaller build file compared to the service-worker build
- No `proxytown` requests in the network tab
- Fewer http requests to initialize the Partytown library
- Partytown service-worker and iframe is no longer used

It's important to note that [not all browsers support Atomics](#browser-atomics-support), and the server hosting the site must be configured with the correct response headers. If neither of those are true, then Partytown will fallback to using the service-worker communication layer instead.

## Document Response Headers

To enable Atomics communication, the browser's [crossOriginIsolated](https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated) readonly property should be `true`. The `crossOriginIsolated` property is only set to true, by the browser, when the document includes these http response headers:

```
Cross-Origin-Embedder-Policy: credentialless
Cross-Origin-Opener-Policy: same-origin
```

- [Cross-Origin-Embedder-Policy (COEP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Embedder-Policy) response header prevents a document from loading any cross-origin resources that don't explicitly grant the document permission. At the time of writing, `credentialless` is not a supported value in Safari, so Safari will fallback to using the Service Worker communication. An alternative to `credentialless` is to use `require-corp`, which does work in Safari too. Please see [Setting Cross-Origin Attribute](#setting-cross-origin-attribute) for more info.
- [Cross-Origin-Opener-Policy (COOP)](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cross-Origin-Opener-Policy) response header allows you to ensure a top-level document does not share a browsing context group with cross-origin documents.

## Setting Cross-Origin Attribute

An alternative to setting `Cross-Origin-Embedder-Policy: credentialless`, is to instead use `Cross-Origin-Embedder-Policy: require-corp`. The biggest thing to highlight is that the `require-corp` does not allow images, scripts, videos, etc. to be loaded from another origin. For example, when this header is set, any scripts or images to a CDN will no longer work.

However, the [crossorigin](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin) attribute can be used on individual elements, such as `<audio>`, `<img>`, `<link>`, `<script>`, and `<video>`, which allows these requests to go through and not be blocked.

Below is an example of setting the `crossorigin` attribute on an image:

```html
<img src="https://c.tenor.com/8wBCqZH60U8AAAAC/computer-cat.gif" crossorigin />
```

## Browser Atomics Support

[Can I Use: Atomics](https://caniuse.com/mdn-javascript_builtins_atomics)

- Desktop:
  - Chrome 68+ (Jul 2018)
  - Edge 79+ (Jan 2020)
  - Firefox 78+ (June 2020)
  - Safari 15.2+ (Dec 2021)
- Mobile:
  - Android, Chrome 97+
  - Android, Edge 97+
  - Android, Firefox 98+
  - iOS, Safari 15.2+ (Dec 2021)

## Test Atomics

You can test if a browser is capable of enabling Atomics by visiting these test pages which respond with the correct headers.

- [Test COEP "credentialless"](https://partytown.qwik.dev/tests/atomics/)
- [Test COEP "require-corp"](https://partytown.qwik.dev/tests/atomics/?coep=require-corp)

## Additional Resources

- [Making your website "cross-origin isolated" using COOP and COEP](https://web.dev/coop-coep/)
- [Cross-Origin-Embedder-Policy: credentialless](https://wicg.github.io/credentiallessness/)
- [COEP: credentialless. Isolation w/o Opt-In?](https://github.com/WICG/credentiallessness)
- [Understanding "same-site" and "same-origin"](https://web.dev/same-site-same-origin/)


================================================
FILE: docs/src/routes/browser-support/index.mdx
================================================
---
title: Browser Support
---

# Browser Support

Partytown works to ensure that all browsers can still run third-party scripts, whether they have support for service workers, atomics, or neither. This means if you're supporting legacy browsers such as IE11, the scripts should continue to work as if Partytown wasn't being used.

At its core, Partytown uses Service Workers or Atomics to do its synchronous communication from the web worker to the main thread. However, when a browser does not support either of those, it'll fallback to run the scripts the traditional way (the way it works today without Partytown).

## How Feature Support Works

1. Browser checks to see if it has support for [Atomics](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics) using the [crossOriginIsolated](https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated) boolean found on `window`.
1. If the browser and site do not have support for Atomics, it'll then check to see if the browser has support for [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API). Currently this is the most commonly used one.
1. If the browser does not have support for Service Workers or Atomics, it'll then find all the `type="text/partytown"` scripts and reset them to be traditional scripts and execute normally.

> Note: Atomics are still experimental, and also require specific server-side response headers for them to work. Please see the [Enabling Atomics](/atomics) section for more info.

## Web API Feature Support

- [Atomics](https://caniuse.com/mdn-javascript_builtins_atomics)
- [JavaScript Proxy](https://caniuse.com/proxy)
- [Service Workers](https://caniuse.com/serviceworkers)
- [Web Workers](https://caniuse.com/webworkers)


================================================
FILE: docs/src/routes/common-services/index.mdx
================================================
---
title: Common Services
---

# Common Services

Partytown is built with the goal that any third-party script can be ran from within it. At the lowest level, any script can add the `type="text/partytown"` attribute to have it executed from a web worker.

Below is a list of plugins / libraries that are tested & known to be working with Partytown with their commonly used [forward configs](/forwarding-events) and [proxied domains](/proxying-requests).

| Service                                                                                       | Forward Config                      | Proxy Domain                                        | Additional Config                          |
| --------------------------------------------------------------------------------------------- | ----------------------------------- | --------------------------------------------------- | ------------------------------------------ |
| [Facebook Pixel](/facebook-pixel)                                                             | "fbq"                               | "connect.facebook.net"                              |                                            |
| [FullStory](https://help.fullstory.com/hc/en-us/articles/360020623574)                        | "FS.identify", "FS.event"           |                                                     | `strictProxyHas: true` (if loaded via GTM) |
| [Google Tag Manager](/google-tag-manager)                                                     | "dataLayer.push"                    |                                                     |                                            |
| [Hubspot Tracking](https://developers.hubspot.com/docs/api/events/tracking-code)              | "\_hsq.push"                        |                                                     |                                            |
| [Intercom](https://developers.intercom.com/installing-intercom/docs/intercom-javascript)      | "Intercom"                          |                                                     |                                            |
| [Klaviyo](https://developers.klaviyo.com/en/docs/javascript-api)                              | "\_learnq.push"                     | "static.klaviyo.com", "static-tracking.klaviyo.com" |                                            |
| [TikTok Pixel](https://ads.tiktok.com/marketing_api/docs?rid=959icq5stjr&id=1701890973258754) | "ttq.track", "ttq.page", "ttq.load" |                                                     |                                            |
| [Mixpanel](https://developer.mixpanel.com/docs/javascript-quickstart)                         | "mixpanel.track"                    |                                                     |                                            |

If you would like to add to this list,

- Refer to the ["for Plugin Authors / Developers"](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#plugin-authors--developers) section to see how you can validate whether a library / plugin works with Partytown.
- Send us a PR so that we can have a scenario checked in that validates it.
- Please [edit this doc](https://github.com/BuilderIO/partytown/edit/main/docs/common-services.md) to add your plugin / library and its configuration so that others can start using it!

## FullStory with Google Tag Manager

When loading FullStory via Google Tag Manager (GTM), you need to enable the `strictProxyHas` configuration option. This is because FullStory checks for namespace conflicts using the `in` operator (e.g., `if (!("FS" in window))`), and by default, Partytown's window proxy always returns `true` for the `in` operator for backwards compatibility.

```html
<script>
  partytown = {
    forward: ['FS.identify', 'FS.event'],
    strictProxyHas: true,
  };
</script>
```

Without `strictProxyHas: true`, FullStory will detect a false "namespace conflict" and fail to initialize when loaded via GTM's Custom HTML tag. This configuration ensures the `in` operator accurately checks property existence on the window object.


================================================
FILE: docs/src/routes/configuration/index.mdx
================================================
---
title: Configuration
---

# Configuration

Partytown does not require a config for it to work, however a config can be set to change the defaults. At the lowest level, it's configured by setting the `window.partytown = {...}` object before the Partytown snippet script. However, higher-level integrations, such as the `<Partytown/>` component found in `@qwik.dev/partytown/react`, should provide utilities to make setting the config easier

| Config                    | Description                                                                                                                                                                                                                                                                 |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `debug`                   | When `true`, Partytown scripts are not inlined and not minified. See the [Debugging](/debugging) docs on how to enable more logging.                                                                                                                                        |
| `forward`                 | An array of strings representing function calls on the main thread to forward to the web worker. See [Forwarding Events and Triggers](/forwarding-events) for more info.                                                                                                    |
| `lib`                     | Path where the Partytown library can be found your server. Note that the path must both start and end with a `/` character, and the files must be hosted from the same origin as the webpage. Default is `/~partytown/`                                                     |
| `loadScriptsOnMainThread` | An array of strings or regular expressions (RegExp) used to filter out which script are executed via Partytown and the main thread. An example is as follows: `loadScriptsOnMainThread: ["https://test.com/analytics.js", "inline-script-id", /regex-matched-script\.js/]`. |
| `resolveUrl`              | Hook that is called to resolve URLs which can be used to modify URLs. The hook uses the API: `resolveUrl(url: URL, location: URL, method: string)`. See the [Proxying Requests](/proxying-requests) for more information.                                                   |
| `nonce`                   | The nonce property may be set on script elements created by Partytown. This should be set only when dealing with content security policies and when the use of `unsafe-inline` is disabled (using `nonce-*` instead).                                                       |
| `strictProxyHas`          | When `true`, the `in` operator will accurately check if properties exist on the window object. Required for scripts that check for namespace conflicts, such as FullStory loaded via GTM. Default is `false` for backwards compatibility.                                   |
| `fallbackTimeout`         | A timeout in ms until Partytown initialization is considered as failed & fallbacks to the regular execution in main thread. Default is 9999                                                                                                                                 |

## Vanilla Config

What we mean by "vanilla config", is that the Partytown config can be set without any higher-level integration. Below is an example of setting the `debug` config. Notice that the config script tag is _before_ the Partytown snippet script. Additionally, the config or snippet scripts should _NOT_ contain the `type="text/partytown"` attribute (this small amount of JavaScript we need to run on the main thread to initialize everything).

```html
<html>
  <head>
    <title>Vanilla Config Example</title>
    <script>
      partytown = {
        debug: true,
      };
    </script>
    <script>
      /* Inlined Partytown Snippet */
    </script>
  </head>
  <body>
    ...
  </body>
</html>
```

Please see the [integration guides](/integrations) for more information.


================================================
FILE: docs/src/routes/copy-library-files/index.mdx
================================================
---
title: Copy Library Files
---

# Copy Library Files

The [@qwik.dev/partytown](https://www.npmjs.com/package/@qwik.dev/partytown) NPM package provides the static `lib` files that need to be served from your site. Since Partytown is using a service worker, these files must be served from the same origin as your site, and cannot be hosted from a CDN. Each site is different, and how the Partytown `lib` files are hosted depends on individual setup.

The `/~partytown/` directory should serve the static files found within [@qwik.dev/partytown/lib](/distribution). The quickest way is to copy the `lib` directory into a public `/~partytown` directory within your static server. Another option would be to set up a copy task within the project's bundler, or create a build step.

You can also use the [lib config](/configuration) if your site must host these files from a directory other than the default `/~partytown/`. Please see the [integration guides](/integrations) for more info on copying library files.

## Copy Task Command

For convenience, the Partytown CLI provides a `copylib` task. The last argument should be the directory where the Partytown lib files should be copied to. In the example below, the lib files are copying to the directory `public/~partytown`, relative to the current working directory:

```bash
partytown copylib 'public/~partytown'
```

This command can be used before a build script. Below is an example of copying the Partytown lib files before a Nextjs build command, using npm scripts:

```json
{
  "scripts": {
    "build": "npm run partytown && next build",
    "partytown": "partytown copylib 'public/~partytown'"
  }
}
```

## Copy Task API

The same code that the `partytown copylib` CLI task uses, is also exposed as an API and can be imported by any NodeJS script. Below is an example of importing the `@qwik.dev/partytown/utils` API and copying the lib files to the given directory. Both examples of an ESM import or CommonJS require should work.

```js
import { copyLibFiles } from "@qwik.dev/partytown/utils"; // ESM
// const { copyLibFiles } = require('@qwik.dev/partytown/utils'); // CommonJS

async function myBuildTask() {
  await copyLibFiles("path/to/public/~partytown");
}
```

## Rollup

> Available as of Partytown 0.3.6

Import the `partytownRollup` plugin from `@qwik.dev/partytown/utils` into your `rollup.config.js` config file. Next, add `partytownRollup(opts)` to the `plugins` [option](https://rollupjs.org/guide/en/#using-plugins).

The Rollup plugin will copy Partytown `lib` directory to the given destination, which must be an absolute file path. The copying will happen at the time of the `writeBundle()` hook.

Below is an example of using a [Rollup config](https://rollupjs.org/guide/en/#using-plugins) to copy the Partytown `lib` to a `dist` build directory:

```js
// rollup.config.js
import path from "path";
import { partytownRollup } from "@qwik.dev/partytown/utils";

export default {
  plugins: [
    partytownRollup({
      dest: path.join(__dirname, "dist", "~partytown"),
    }),
  ],
};
```

## Vite

> Available as of Partytown 0.3.6

Import the `partytownVite` plugin from `@qwik.dev/partytown/utils` into your `vite.config.js` config file. Next, add `partytownVite(opts)` to the `plugins` [option](https://vitejs.dev/config/#plugins).

The Vite plugin will copy Partytown `lib` directory to the given destination, which must be an absolute file path. The copying will happen at the time of the `writeBundle()` hook. When in dev mode, the Partytown lib files will be served using the Vite Dev Server.

Below is an example of using a [Vite config](https://vitejs.dev/config/) to copy the Partytown `lib` to a `dist` build directory:

```js
// vite.config.js
import path from "path";
import { partytownVite } from "@qwik.dev/partytown/utils";

export default ({ command }) => ({
  plugins: [
    partytownVite({
      dest: path.join(__dirname, "dist", "~partytown"),
    }),
  ],
});
```

## Webpack

Below is an example of using [Webpack's copy plugin](https://webpack.js.org/plugins/copy-webpack-plugin/) to copy the source `lib` directory found in the [@qwik.dev/partytown](https://www.npmjs.com/package/@qwik.dev/partytown) package, to the `public/~partytown/` directory:

```js
// webpack.config.js
const path = require("path");
const CopyPlugin = require("copy-webpack-plugin");
const partytown = require("@qwik.dev/partytown/utils");

module.exports = {
  plugins: [
    new CopyPlugin({
      patterns: [
        {
          from: partytown.libDirPath(),
          to: path.join(__dirname, "public", "~partytown"),
        },
      ],
    }),
  ],
};
```

## Laravel Mix

Below is an example of using [Mix's copy()](https://laravel-mix.com/docs/6.0/copying-files/) to copy the source `lib` directory found in the [@qwik.dev/partytown](https://www.npmjs.com/package/@qwik.dev/partytown) package, to the `public/~partytown/` directory:

```js
// webpack.mix.js
const mix = require("laravel-mix");
const partytown = require("@qwik.dev/partytown/utils");

mix.copy(partytown.libDirPath(), "public/~partytown");
```


================================================
FILE: docs/src/routes/cross-origin/index.ts
================================================
import { RequestHandler } from "@qwik.dev/router";

export const onGet: RequestHandler = async ({send}) => {
  const page = `
  <html>
    <head>
      <style>
        body {
          background-color: skyblue;
          margin: 2px;
        }
      </style>
    </head>
    <body>
      <div>
        <span>iframe origin:</span>
        <span id="iframe-origin"></span>
      </div>
      <div>
        <span>parent origin:</span>
        <span id="parent-origin"></span>
      </div>
      <script>
        document.getElementById('iframe-origin').textContent = window.origin;

        const url = new URL(location.href);
        const parentOrigin = url.searchParams.get('parentorigin');
        document.getElementById('parent-origin').textContent = parentOrigin;

        setTimeout(async () => {
          await new Promise((resolve) => {
            setTimeout(() => {
              parent.postMessage('88', parentOrigin);
              resolve();
            });
          });
        });

        const crossOriginCookie = document.cookie;

        localStorage.setItem('mph', '88');
      </script>
    </body>
  </html>`;
  send(200, page);
};

================================================
FILE: docs/src/routes/debugging/index.mdx
================================================
---
title: Debugging
---

# Debugging

With `debug` mode and logging enabled, below is an example of the Partytown logs showing all calls, getters and setters:

![Partytown Debug Console Logs](https://user-images.githubusercontent.com/452425/131688576-e207cb15-7ce5-4009-a358-3e3093d51957.png)

The [debug config](/configuration) must be `true` in order to see more verbose logging messages. The config table below lists all of the possible log configurations.

If you are using Chrome DevTools to see these logs, make sure that the `Verbose` log level is selected in Console

| Log Config Property     | Description                         |
| ----------------------- | ----------------------------------- |
| `logCalls`              | Log method calls                    |
| `logGetters`            | Log getter calls                    |
| `logSetters`            | Log setter calls                    |
| `logImageRequests`      | Log Image() src requests            |
| `logScriptExecution`    | Log script executions               |
| `logSendBeaconRequests` | Log navigator.sendBeacon() requests |
| `logStackTraces`        | Log stack traces                    |

Please see the [debug file docs](/distribution#libdebug) more information about the distribution.


================================================
FILE: docs/src/routes/distribution/index.mdx
================================================
---
title: Distribution
---

# Distribution

Partytown is distributed from [@qwik.dev/partytown](https://www.npmjs.com/package/@qwik.dev/partytown) using NPM. Within the distribution there are a few directories and submodules, each with their own purpose.

```bash
@qwik.dev/partytown/
├── integration/
├── lib/
├── react/
├── services/
└── utils/
```

## `@qwik.dev/partytown/lib`

The `lib` directory contains the static files that should be hosted from the same [origin](https://developer.mozilla.org/en-US/docs/Glossary/Origin) as the website. Hosting from the same origin is a requirement of the [service worker scope](https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/scope). The `lib` static files are minified and meant for production use.

```bash
@qwik.dev/partytown/lib/
├── partytown-atomics.js
├── partytown-media.js
├── partytown-sw.js
└── partytown.js
```

The `partytown.js` file must be in the `<head>` before all other third-party scripts, and should _not_ have the `async` or `defer` attributes. Because the script must be executed immediately, and since it's such a small file, it's always preferred to inline the `partytown.js` script content, rather than it being an additional http request.

> Note: When the service worker is correctly installed, the service worker itself handles the request to the `partytown-sandbox-sw.html` file and provides the content. The network tab will show `partytown-sandbox-sw.html`, and the service worker provides the response, but the file itself is not in the distribution. If you receive a 404 for this file then it means the service worker is not installed correctly. Please try uninstalling any existing Partytown service workers and ensure the Partytown files are loading correctly.

### `lib/debug/`

The `lib/debug` directory has the same purpose as the `lib`, but instead will console log more information and the files themselves are not minified. Additionally, you'll notice there are more debug files than the production lib files, and that's because the production lib files inline many scripts. For example, the web worker script is inlined, rather than being a separate request.

The `lib/debug` files are not meant to be used in production. See the [Partytown Configuration](/configuration) docs on how to enable debug mode.

```bash
@qwik.dev/partytown/lib/debug/
├── partytown-atomics.js
├── partytown-media.js
├── partytown-sandbox-sw.js
├── partytown-sw.js
├── partytown-ww-atomics.js
├── partytown-ww-sw.js
└── partytown.js
```

## `@qwik.dev/partytown/integration`

The `integration` submodule provides functions that can be used for integrations.

| Export             | Description                                                                                                                             |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| partytownSnippet() | Function that returns the Partytown snippet as a string which can be used as the innerHTML of the inlined Partytown script in the head. |
| SCRIPT_TYPE        | The value for the script type attribute: `text/partytown`                                                                               |

```js
import { partytownSnippet } from "@qwik.dev/partytown/integration";

const snippetText = partytownSnippet();
```

## `@qwik.dev/partytown/react`

The `react` submodule is where you'll find the React specific components, which is just a wrapper around the `partytown.js` snippet code. Please see the [React](/react) docs for more information.

```js
import { Partytown } from "@qwik.dev/partytown/react";

export function Head() {
  return (
    <>
      <Partytown />
    </>
  );
}
```

## `@qwik.dev/partytown/services`

The `services` submodule provides some of the commonly used [forward events](/forwarding-events), such as Google Tag Manager or Facebook Pixel. Please see the [Common Services](/common-services) docs for more information.

## `@qwik.dev/partytown/utils`

The `utils` submodule provides some convenience utilities, such as the the [Copy Task CLI and API](/copy-library-files).

| Export                | Description                                      |
| --------------------- | ------------------------------------------------ |
| copyLibFiles(destDir) | Async copy the `lib` directory to the `destDir`. |
| libDirPath()          | Returns an absolute path to the `lib` directory. |
| partytownRollup()     | [Rollup plugin](/copy-library-files#rollup).     |
| partytownVite()       | [Vite plugin](/copy-library-files#vite).         |


================================================
FILE: docs/src/routes/drupal/index.mdx
================================================
---
title: Drupal
---

# Drupal

The [Drupal](https://drupal.org) integration relies on a contributed module called ["PartyTown"](https://drupal.org/project/partytown), which can either be installed manually, or by using composer.

## Install

### Using Composer

 1. Use composer to download the Drupal module

``` bash
composer require drupal/partytown
```

 2. Add the following code to your `composer.json` in the `repositories` section

``` json

partytown": {
    "type": "package",
    "package": {
        "name": "quikdev/partytown",
        "version": "0.11.0",
        "type": "drupal-library",
        "dist": {
            "url": "https://registry.npmjs.org/@qwik.dev/partytown/-/partytown-0.11.0.tgz",
            "type": "tar"
        },
        "license": "MIT"
    }
}

```

 3. Install the PartyTown JS library

``` bash
composer require quikdev/partytown
```

### Using The Composer Merge Plugin

 1. Use composer to download the Drupal module

``` bash
composer require drupal/partytown
```

 2. If not already installed, install Merge Plugin: 
 
``` bash
composer require wikimedia/composer-merge-plugin
```

 3. Merge the PartyTown library from the module's `composer.json`: 
 
 ``` bash
 composer config extra.merge-plugin.include --json '[ "web/modules/contrib/partytown/composer.libraries.json" ]'
 ```

### Manually

 > **Note**: this method does not install the PartyTown JS library for you and may be a little more difficult to manage. However, it is provided as a fallback because some Drupal web sites are not managed using composer but may still benefit from this module. You will need to refer to the [HTML](/html) integration instructions or that of your favorite JS framework in order to make use of these instructions. In this context, the Drupal module will simply act as a GUI for managing your integration settings. Furthermore, you will need to configure the "Lib Path" setting in the Drupal module to point at your installation location.

 1. Download and unzip the Drupal module from the [PartyTown release page](https://www.drupal.org/project/partytown/releases) 
 
 2. Install the `partytown` module in the Drupal `modules` directory (usually `<webroot>/modules` or `<webroot>/modules/contrib`)
 
 3. Visit the Admin > Extend page of your Drupal installation and enable the PartyTown module
 
 4. Install the PartyTown JS library in whatever method you deem appropriate
 
 5. Ensure that the "Lib Path" setting points to your PartyTown installation location

> **Note**: Because the Drupal module and PartyTown integration in this method are essentially de-coupled, you will need to ensure that the PartyTown JS library loads **after** the module-provided `partytown/config` library. This ensures that PartyTown can use the settings you set in the Drupal admin. You also may need to implement a Drupal hook that prevents the default `partytown/lib` library from being loaded by Drupal.
 
## Configure

All configuration for the PartyTown module takes place in the Drupal admin interface. You can manage most of the PartyTown API settings graphically at `/admin/config/development/partytown`.

## Managing Scripts With PartyTown

### Google Tag Manager

The PartyTown module for Drupal comes with a submodule called "PartyTown Google Tag" for PartyTown-ing Google Tag Manager. Once installed, you will probably want to configure the PartyTown module to forward `dataLayer.push`.

### Other scripts

Other scripts can be PartyTown-ed by setting the type to be `text\partytown`. Using a `*.libraries.yml` this can be achieved with something similar to:

``` yaml
foo:
  js:
    js/foo.js: { attributes: { type: "text/partytown"} }

```


================================================
FILE: docs/src/routes/facebook-pixel/index.mdx
================================================
---
title: Facebook Pixel
---

# Facebook Pixel

## Add the Pixel Script

- [Meta (Facebook) Pixel](https://www.facebook.com/business/learn/facebook-ads-pixel)
- [How to Set Up and Install a Meta Pixel](https://www.facebook.com/business/help/952192354843755?id=1205376682832142)

## Partytown Script

Set the script element's `type` attribute to `text/partytown`. For example:

```html
<script type="text/partytown">
  // insert pixel script here
</script>
```

## Proxy Requests

The `connect.facebook.net` response does not provide the correct CORS header, and a reverse proxy should be used. Below is an example of setting the `resolveUrl` config to proxy the `connect.facebook.net` requests. Please see [Proxying Requests](/proxying-requests) for more information.

## Proxying with Server Handlers

If you're using a server framework like Nuxt 3, you can handle proxying dynamically using API routes. Below is an example configuration that dynamically fetches resources based on the provided URL and returns the response with appropriate headers:

```js
export default defineEventHandler(async (event) => {
  const query = getQuery(event);
  const url = String(query?.url) || null;

  if (!url || !url.includes("connect.facebook.net")) {
    throw createError({
      status: 500,
      message: "Invalid URL",
    });
  }

  // Fetch the file content dynamically based on the URL
  const response = await $fetch(url).catch((error) => {
    throw createError({
      status: 500,
      message: `Failed to fetch resource: ${error.message}`,
    });
  });

  setResponseHeaders(event, {
    "Access-Control-Allow-Origin": "*", // Ensures proper CORS handling
    "Access-Control-Allow-Headers": "Content-Type, Authorization",
    "Access-Control-Allow-Methods": "POST, GET, OPTIONS, PUT, DELETE",
    "Content-Type": "application/x-javascript; charset=utf-8",
    "Cache-Control":
      "public, max-age=5, s-maxage=5, stale-if-error=2678400, stale-while-revalidate=86400", // Add necessary caching headers
  });

  return response;
});
```

## Forward Events

Facebook Pixel uses the [fbq()](https://www.facebook.com/business/help/402791146561655?id=1205376682832142) function to send events. In order for Partytown to forward the calls to `window.fbq({..})`, the forward config should add `"fbq"`. Please see [forwarding events and triggers](/forwarding-events) for more information.

## Example Config

```js
// https://partytown.qwik.dev/configuration
{
  resolveUrl: function(url) {
    if (url.hostname === "connect.facebook.net") {
      var proxyUrl = new URL('https://my-reverse-proxy.com/');
      proxyUrl.searchParams.append('url', url.href);
      return proxyUrl;
    }
    return url;
  },
  forward: [
    "fbq"
  ]
}
```

Please see the [integration docs](/integrations) for framework specific configuration.


================================================
FILE: docs/src/routes/faq/index.mdx
================================================
---
title: FAQs
---

# FAQs

## Can all scripts use Partytown?

Not necessarily. While Partytown covers many cases that allow it to work great in many cases, there are also scenarios where your script may hit an internal error and silently fail. We encourage you to thoroughly test when running any scripts first in a development environment, and then in production. Please also see the [Trade-Offs](/trade-offs) docs.

## How do I know when a script is not working with Partytown?

Test test test! There are endless scenarios in which a script could have been written, and the tricks they could be doing. While Partytown has worked to [test](/tests/) many of these scenarios, there's a good chance a certain example isn't being accounted for. We encourage you to thoroughly test when running any scripts first in a development environment, and then in production.

## What do I do if my script is not working with Partytown?

Please first search through the [Github issues](https://github.com/BuilderIO/partytown/issues) for a similar issue. If a similar issue exists, please add a comment with as much additional information as possible.

If a similar [issue](https://github.com/BuilderIO/partytown/issues) does not already exist, please [open an issue](https://github.com/BuilderIO/partytown/issues/new/choose) that includes:

- Minimal Reproduction Case: If maintainers and contributors are unable to reproduce the same error, then it makes it very difficult to debug and fix. Any issued opened without a minimal reproduction example will be closed.
- E2E Test: A good example of an End-to-end test is one where the test fails before the fix, and passes after the fix. But also, all the other tests pass too. Please see [Submitting Issues And Writing Tests](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#submitting-issues-and-writing-tests) for more details.

## Why do some scripts work, and others don't with Partytown?

Most of yesterday's and today's third-party scripts were built from the ground-up to work only on the main UI thread, rather than from a web worker which does not have access to the DOM or window. Partytown does its best to access the main thread from a web-worker, synchronously so the script continues to work as expected. However, because this architecture is different from what's the original designers expected, the script may have an internal error. For all these reasons we encourage you to first thoroughly test your scripts when using them with Partytown. Please also see the [Trade-Offs](/trade-offs) docs.

## Will you debug why my script is not working for me?

Unfortunately, the project contributors and maintainers don’t have the capacity to debug every single third-party script on external websites. As an Open-Source project, Partytown's goal is to help encourage the community to assist one another. Helping to improvement the project can come in many forms:

- [Opening issues](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#submitting-issues-and-writing-tests) with minimal reproduction cases
- Creating fixes with [Pull Requests](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#submitting-issues-and-writing-tests)
- Adding [End-to-end tests](/tests/)

Additionally, Github issues is a place to explain a problem in detail, along with a reproduction case for maintainers. However, Github issues is not the best place to ask how-to questions since project contributors and maintainers don’t have the capacity to debug external websites and the many third-party scripts. Any issues opened asking that are not following these guidelines will be closed.

## Is Partytown production ready?

Many sites are already successfully using Partytown in production. However, what's most important is testing your scripts first, as what works for one website using a certain third-party script, may not work for your site using a different script. If your scripts work in production that’s great, they shouldn't suddenly stop working (no different that a traditional third-party script).

However, if you're struggling with a certain scenario, please see the [Submitting Issues And Writing Tests](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#submitting-issues-and-writing-tests).


================================================
FILE: docs/src/routes/forwarding-events/index.mdx
================================================
---
title: Forwarding Events And Triggers
---

# Forwarding Events And Triggers

Many third-party scripts add a global variable to `window` which user code calls in order to send data to the service. For example, Google Tag Manager uses a [Data Layer](https://developers.google.com/tag-manager/devguide) array, and by pushing data to the array, the data is then sent on to GTM Servers. Because we're moving third-party scripts to a web worker, the main thread needs to know which variables to patch on `window`, and when these services are called, the data is correctly forwarded to the web worker. This includes queuing any events that may have happened before Partytown has even finished initializing.

For example, Google Tag Manager adds the `dataLayer` array to `window`, and Facebook Pixel adds the `fbq` function. Below is some quick pseudo code of what they're doing:

```js
// Google Tag Manager
window.dataLayer = [];

// Facebook Events
window.fbq = function(){...};
```

Because GTM and Facebook Pixel objects are added immediately in the `<head>` by each service, then anywhere within the webpage, your code and their code, can safely call `dataLayer.push(...)` or `fbq(...)`.

However, since GTM and Facebook Pixel were actually loaded in the web worker, then we need to forward these calls. The `forward` config is used to set which `window` variables should be patched and forwarded on. The forward string value is of the function to call, and since GTM is pushing to an array, the function to call is `dataLayer.push`.

```js
<script>
  partytown = {
    forward: ['dataLayer.push', 'fbq']
  };
</script>
```

Notice the forward configs are just strings, not actual objects. We're using strings here so we can easily serialize what service variable was called, along with the function argument values. When the web worker receives the information, it then knows how to correctly apply the call and arguments that were fired from the main thread.

If your script declares global functions or variables, make sure they are explicitly declared with `window` and forwarded to the web worker. This example shows the gtag function from Google Tag Manager. Note `window.gtag = function gtag()` instead of `function gtag()`.

```html
<script>
  window.dataLayer = window.dataLayer || [];
  window.gtag = function gtag() {
    dataLayer.push(arguments);
  };
  gtag("js", new Date());

  gtag("config", "YOUR-ID-HERE");
</script>
```

You can customize each forwarded variable with the following settings:

- ## preserveBehavior

  In addition to the `forward` config, we also provide a `preserveBehavior` property. This property allows you to customize each forwarded property, preserving the original behavior of the function.

  When `preserveBehavior` is set to `true`, the original function's behavior on the main thread is maintained, while also forwarding the calls to partytown. This is useful in cases where the function has side effects on the main thread that you want to keep.

  If `preserveBehavior` is not explicitly set, its default value is `false`. This means that, by default, calls will only be forwarded to partytown and won't execute on the main thread.

  Here's an example of how to use it:

  ```js
  <script>
    partytown = {
      forward: [
        ['dataLayer.push', { preserveBehavior: true }],
        ['fbq', { preserveBehavior: false }],
        'gtm.push'
      ]
    };
  </script>
  ```

  In this example, calls to `dataLayer.push` will execute as normal on the main thread and also be forwarded to partytown. Calls to `fbq` will only be forwarded to partytown, and won't execute on the main thread. For `gtm.push`, since preserveBehavior is not explicitly set, it will behave as if preserveBehavior was set to false, meaning it will only be forwarded to partytown.

## Integrations

Please see the [Integrations](/integrations) section for examples using the `forward` config.

## Common Services

Please see the [Common Services](/common-services) section for a list of known configs for various services.


================================================
FILE: docs/src/routes/gatsby/index.mdx
================================================
---
title: Gatsby
---

# Gatsby

The Gatsby setup is largely the same as the [React integration guide](/react), except it goes further into how to use the [Gatsby](https://gatsbyjs.com/) framework's `setHeadComponents` function, which is used to inject scripts and other common tags for websites.

For additional information, please see [How to Add Google Analytics gtag to Gatsby Using Partytown](https://www.gatsbyjs.com/blog/how-to-add-google-analytics-gtag-to-gatsby-using-partytown/).

## Install

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

## Configure

The `<Partytown/>` component is imported from the `@qwik.dev/partytown/react` submodule. The [config properties](/configuration) are JSX props.

The following is an example of including the `<Partytown/>` component in `gatsby-ssr.js`. Notice the `<Partytown/>` component is in `setHeadComponents`, and the example analytics script has the `type="text/partytown"` attribute.

```jsx
import React from "react";
import { Partytown } from "@qwik.dev/partytown/react";

export const onRenderBody = ({ setHeadComponents, setPreBodyComponents }) => {
  setHeadComponents([
    <Partytown key="partytown" debug={true} forward={["dataLayer.push"]} />,
    <script
      key="analytics"
      src="https://example.com/analytics.js"
      type="text/partytown"
    />,
  ]);

  // For GTM, we will need to add this noscript tag to the body of the HTML
  setPreBodyComponents([
    <noscript
      key="gtm"
      dangerouslySetInnerHTML={{
        __html: `
                  <iframe src="https://www.googletagmanager.com/ns.html?id=xxx-xxxxxxx" height="0" width="0"
                      style="display:none;visibility:hidden"></iframe>
                `,
      }}
    />,
  ]);
};
```

## Partytown Script

Add the `type="text/partytown"` [prop](/partytown-scripts) for each script that should run from a web worker. The example below is using the React specific way of inlining a script with [dangerouslySetInnerHTML](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml).

```jsx
<script
  type="text/partytown"
  dangerouslySetInnerHTML={{
    __html: "/* Inlined Third-Party Script */",
  }}
/>
```

## Copy Library Files

Copy library files to `static/~partytown`. How the files are copied or served from your site is up to each site's setup. A `partytown copylib` CLI [copy task](/copy-library-files) has been provided for convenience which helps copy the Partytown library files to the correct directory. Below is an example of using Gatsby's `onPreBuild` extension point. This can be added to `gatsby-node.js`.

```jsx
const path = require("path");
const { copyLibFiles } = require("@qwik.dev/partytown/utils");

exports.onPreBuild = async () => {
  await copyLibFiles(path.join(__dirname, "static", "~partytown"));
};
```

It's worth noting `onPreBuild` is only called during the build process. If you need to use `copyLibFiles` while in development you can use [onPreBootstrap](https://www.gatsbyjs.com/docs/reference/config-files/gatsby-node/#onPreBootstrap) which is called when running both `gatsby build` or `gatsby develop`.


================================================
FILE: docs/src/routes/getting-started/index.mdx
================================================
---
title: Getting Started
---

# Getting Started

Partytown is fairly different from most web development libraries in mainly what’s required for its setup and configuration. At the lowest level, Partytown can work with just vanilla HTML, meaning it doesn’t need to be a part of a build process, doesn’t need a bundler, doesn’t require a specific framework, etc. Because it can integrate with any HTML page, it also makes it much easier to then create wrapper components or plugins for almost any ecosystem, such as Shopify, WordPress, Nextjs, Gatsby and much more.

What's different from most web development libraries is that Partytown does _not_ get bundled with your existing site's JavaScript. Instead it purposely wants to stay separate from your code so that it can run within a web worker, and allow your code to run on the main thread. If the two were bundled we've already lost the battle.

## Install NPM package

```
npm install @qwik.dev/partytown
```

## Next Steps

1. [Add Partytown type attribute to Third-Party Scripts](/partytown-scripts)
2. [Add Partytown snippet to the `<head>`](/integrations)
3. [Copy Partytown library files](/copy-library-files)


================================================
FILE: docs/src/routes/google-tag-manager/index.mdx
================================================
---
title: Google Tag Manager
---

# Google Tag Manager

## Add the Google Tag Manager Script

- [Install Google Tag Manager for web pages](https://developers.google.com/tag-platform/tag-manager/web)

## Partytown Script

Set the script element's `type` attribute to `text/partytown`. For example:

```html
<script
  type="text/partytown"
  src="https://www.googletagmanager.com/gtag/js?id=YOUR-ID-HERE"
></script>
<script type="text/partytown">
  window.dataLayer = window.dataLayer || [];
  window.gtag = function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'YOUR-ID-HERE');
</script>
```

## Google Analytics 4 (GA4)

GA4 responses come with the correct CORS headers, so you will not have to [proxy](/proxying-requests) the requests to `www.google-analytics.com`. [Older versions of Google Analytics](https://support.google.com/analytics/answer/11583528?sjid=5512098847312629397-NA) required proxying, but have been sunset by Google and are no longer supported.

## Forward Events

Google Tag Manager uses the [dataLayer](https://developers.google.com/tag-platform/tag-manager/web/datalayer) array to send events. In order for Partytown to forward the calls to `window.dataLayer.push({..})`, the forward config should add `"dataLayer.push"`. Please see [forwarding events and triggers](/forwarding-events) for more information.

## Example Config

```json
{
  "forward": ["dataLayer.push"]
}
```

Please see the [integration docs](/integrations) for framework specific configuration.


================================================
FILE: docs/src/routes/how-does-partytown-work/index.mdx
================================================
---
title: How Does Partytown Work
---

# How Does Partytown Work

- [How Partytown's Service Worker Sync Communication Works](https://dev.to/adamdbradley/how-partytown-s-sync-communication-works-4244)

Traditionally, communicating between the main thread and worker thread _must_ be [asynchronous](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Concepts). Meaning that for the two threads to communicate, they cannot use blocking calls.

Partytown is different. It allows code executed from the web worker to access DOM _synchronously_. The benefit from this is that third-party scripts can continue to work exactly how they're coded.

For example, the code below works as expected within a web worker:

```javascript
const rect = element.getBoundingClientRect();
console.log(rect.x, rect.y);
```

First thing you'll notice is that there's no async/await, promise or callback. Instead, the call to `getBoundingClientRect()` is blocking, and the returned `rect` value contains the expected `x` and `y` properties.

Partytown relies on [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API), [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API), [JavaScript Proxies](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy), and a communication layer between them all.

There are currently two ways to communicate synchronously between the web worker and main thread, and that's sync xhr requests combined with Service Workers, and Atomics.

## Designating Web Worker Scripts

It's important to note that Partytown does not automatically move all scripts to the web worker, but prefers an opt-in approach. Meaning, it's best that the developer can pick and choose exactly which scripts should use Partytown, while all the others would go unchanged. Please see the [Partytown Scripts](/partytown-scripts) for more info.

Partytown is only enabled for specific scripts when they have the `type="text/partytown"` attribute. This `type` attribute does two things:

1. Prevent the main thread from executing the script.
2. Provides a selector for Partytown to query, such as `document.querySelectorAll('script[type="text/partytown"]')`

### Adding Partytown Attribute

Below is an example of adding the `type="text/partytown"` attribute to an existing `<script>`.

```diff
- <script>...</script>
+ <script type="text/partytown">...</script>
```

## Service Worker

1. Scripts are disabled from running on the main thread by using the `type="text/partytown"` attribute on the `<script/>` tag.
1. Service worker creates an `onfetch` handler to intercept specific requests.
1. Web worker is given the scripts to execute within the worker thread.
1. Web worker creates JavaScript Proxies to replicate and forward calls to the main thread APIs (such as DOM operations).
1. Any call to the JS proxy uses [_synchronous_ XHR](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests#example_http_synchronous_request) requests.
1. Service worker intercepts requests, then is able to asynchronously communicate with the main thread.
1. When the service worker receives the results from the main thread, it responds to the web worker's request.
1. From the point of view of code executing on the web worker, everything was synchronous, and each call to the document was blocking.

## Atomics

Please see the [Atomics communication layer docs](/atomics) on how to enable them. When Atomics are not enabled, the fallback is to use the Service Worker instead. In the end, Atomics are preferred because they're roughly 10x faster in transfering data between the web worker and main thread.

1. Scripts are disabled from running on the main thread by using the `type="text/partytown"` attribute on the `<script/>` tag.
1. Main thread detects Atomics communication can be used, and loads the Atomics build instead of the Service Worker build.
1. Web worker is given the scripts to execute within the worker thread.
1. Web worker creates JavaScript Proxies to replicate and forward calls to the main thread APIs (such as DOM operations).
1. Any call to the JS proxy will use [Atomics.store()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/store) and `postMessage()` to send the data to the main thread, and run [Atomics.wait()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/wait).
1. [Atomics.load()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Atomics/load) is used once the web worker receives the results data from the main thread.
1. From the point of view of code executing on the web worker, everything was synchronous, and each call to the document was blocking.

## Serialization

Data passed between the main thread and web worker must be [serializable](https://en.wikipedia.org/wiki/Serialization). Partytown automatically handles the serializing and deserializing of data passed between threads. This works for primitive values, such as a `string`, `boolean` or `number`, and also functions, which get unique IDs assigned that are passed to the opposite thread and can be called.


================================================
FILE: docs/src/routes/html/index.mdx
================================================
---
title: HTML
---

# HTML

At the lowest level, Partytown is not tied to one specific framework or build tool. Because of this, Partytown can be used in any webpage as long as the HTML is updated, and the [library scripts](/copy-library-files) are hosted from the origin.

While the `partytown.js` file _could_ be an external request, it's recommended to inline the script instead. How the Partytown snippet is inlined into the page depends on each site's setup and an [integration](/integrations) may already exist for your framework.

```html
<head>
  <script>
    /* Inlined Partytown Snippet */
  </script>
  <script type="text/partytown" src="https://example.com/analytics.js"></script>
</head>
```

One option to load the snippet is from the `partytownSnippet()` function, exported from the [@qwik.dev/partytown/integration](/distribution#builderiopartytownintegration) submodule.

```js
import { partytownSnippet } from "@qwik.dev/partytown/integration";

const snippetText = partytownSnippet();
```

## Configure

The [configuration](/configuration) should be added to `window` using the `partytown` global object.

Below is an HTML example of setting up the [forwarding](/forwarding-events) for [Google Tag Manager](/google-tag-manager). Note that the config is before the inlined partytown script.

```html
<head>
  <script>
    partytown = {
      forward: ["dataLayer.push"],
    };
  </script>
  <script>
    /* Inlined Partytown Snippet */
  </script>
</head>
```

## Partytown Script

Add the `type="text/partytown"` [attribute](/partytown-scripts) for each script that should run from a web worker.

```html
<script type="text/partytown">
  /* Inlined Third-Party Script */
</script>
```

## Copy Library Files

How the files are copied or served from your site is up to each site's setup. A `partytown copylib` CLI [copy task](/copy-library-files) has been provided for convenience which helps copy the Partytown library files to the public directory.


================================================
FILE: docs/src/routes/index.mdx
================================================
---
title: Introduction
description: Partytown - Run third-party scripts from a web worker
---

# Run third-party scripts from a web worker

Partytown is a lazy-loaded library to help relocate resource-intensive scripts into a [web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API), and off of the [main thread](https://developer.mozilla.org/en-US/docs/Glossary/Main_thread). Its goal is to help speed up sites by dedicating the main thread to your code, and offloading third-party scripts to a web worker.

> Note: Partytown is still in beta and not guaranteed to work in every scenario. Please see our [FAQ](/faq) and [Trade-Off](/trade-offs) sections for more info.

Even with a fast and highly tuned website following all of today's best practices, it's all too common for your performance wins to be erased the moment third-party scripts are added. By third-party scripts we mean code that is embedded within your site, but not directly under your control. A few examples include: analytics, metrics, ads, A/B testing, trackers, etc.

Partytown is maintained by [QwikDev](https://github.com/QwikDev) and is currently in Beta.

- [Partytown, Google Slides Presentation](https://docs.google.com/presentation/d/10aKHUokby6hQydL_xuOtct4CPwAkgay5l0-FqgO8-3g/edit?usp=sharing)
- [Smashing Magazine: How Partytown Eliminates Website Bloat From Third-Party Scripts](https://www.smashingmagazine.com/2022/04/partytown-eliminates-website-bloat-third-party-apps/)

## Goals

We set out to solve this situation, so that apps of all sizes will be able to continue to use third-party scripts without the performance hit. Some of Partytown's goals include:

- Free up main thread resources to be used only for the primary web app execution.
- Sandbox third-party scripts and allow or deny their access to main thread APIs.
- Isolate long-running tasks within the web worker thread.
- Reduce layout thrashing coming from third-party scripts by batching DOM setters/getter into group updates.
- Throttle third-party scripts' access to the main thread.
- Allow third-party scripts to run exactly how they're coded and without any alterations.
- Read and write main thread DOM operations _synchronously_ from within a web worker, allowing scripts running from the web worker to execute as expected.

## Web Workers

Partytown's philosophy is that the main thread should be dedicated to your code, and any scripts that are not required to be in the [critical path](https://developers.google.com/web/fundamentals/performance/critical-rendering-path) should be moved to a [web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API). Main thread performance is, without question, more important than web worker thread performance. Please see the [test pages](/tests/) for some live demos.

![Without Partytown and With Partytown: Your code and third-party code compete for main thread resources](https://user-images.githubusercontent.com/452425/152363590-89d3b9a5-35c7-4c12-8f3e-c8b5ce4bb267.png)

## Negative Impacts from Third-Party Scripts

Below is a summary of potential issues after adding third-party scripts, referenced from [Loading Third-Party JavaScript](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/loading-third-party-javascript):

- Firing too many network requests to multiple servers. The more requests a site has to make, the longer it can take to load.
- Sending too much JavaScript which keeps the main thread busy. Too much JavaScript can block DOM construction, delaying how quickly pages can render.
- CPU-intensive script parsing and execution can delay user interaction and cause battery drain.
- Third-party scripts that were loaded without care can be a single-point of failure (SPOF).
- Insufficient HTTP caching, forcing resources to be fetched from the network often.
- The use of legacy APIs (e.g `document.write()`), which are known to be harmful to the user experience.
- Excessive DOM elements or expensive CSS selectors.
- Including multiple third-party embeds that can lead to multiple frameworks and libraries being pulled in several times, which exacerbates the performance issues.
- Third-party scripts also often use embed techniques that can block `window.onload`, even if the embed is using async or defer.

## Use-Cases

While full webapps "can" run from within Partytown, it's actually best intended for code that doesn't need to be in the [critical rendering path](https://developer.mozilla.org/en-US/docs/Web/Performance/Critical_rendering_path). Most third-party scripts fall into this category, as they're not required for the first-paint. Additionally, the asynchronous nature of most third-party script works well with Partytown, as they can lazily receive user events and post data to their respective services.

Below are just a few examples of third-party scripts that might be a good candidate to run from within a web worker. The goal is to continue validating commonly used services to ensure Partytown has the correct API, but Partytown itself does not hardcode to any specific services. Help us test and contribute to this page in Github when you find good working scripts!

- [Google Tag Manager (GTM)](https://marketingplatform.google.com/about/tag-manager/)
- [Google Analytics (GA)](https://analytics.google.com/)
- [Facebook Pixel](https://www.facebook.com/business/learn/facebook-ads-pixel)
- [Mixpanel](https://mixpanel.com/)
- [Hubspot](https://www.hubspot.com/)
- [Segment](https://segment.com/)
- [Amplitude](https://amplitude.com/)

## "Ready to Party" Plugins / Libraries

We try and keep a list of all the plugins and libraries that we know of that work out-of-the-box in Partytown, but we would love your help as plugin & library authors and contributors to keep this list growing.

We have [some documentation](https://github.com/BuilderIO/partytown/blob/main/CONTRIBUTING.md#plugin-authors--developers) on how you could create and check-in an integration test that shows how your library / plugin works on Partytown. And if it works, then we would love to have the configuration needed (if any) on our [Common Services page](/common-services)

## Articles

- <a
    href="https://www.smashingmagazine.com/2022/04/partytown-eliminates-website-bloat-third-party-apps/"
    target="_blank"
    rel="noopener"
  >
    Smashing Magazine: How Partytown Eliminates Website Bloat From Third-Party
    Scripts
  </a>
- <a
    href="https://dev.to/adamdbradley/introducing-partytown-run-third-party-scripts-from-a-web-worker-2cnp"
    target="_blank"
    rel="noopener"
  >
    Introducing Partytown: Run Third-Party Scripts From a Web Worker
  </a>
- <a
    href="https://dev.to/adamdbradley/how-partytown-s-sync-communication-works-4244"
    target="_blank"
    rel="noopener"
  >
    How Partytown's Sync Communication Works
  </a>
- <a
    href="https://www.builder.io/blog/how-we-cut-99-percent-js-with-qwik-and-partytown"
    target="_blank"
    rel="noopener"
  >
    How we cut 99% of our JavaScript with Qwik + Partytown
  </a>
- <a
    href="https://www.builder.io/blog/partytown-is-now-in-beta"
    target="_blank"
    rel="noopener"
  >
    Partytown is now in Beta
  </a>
- <a
    href="https://www.patterns.dev/posts/third-party/"
    target="_blank"
    rel="noopener"
  >
    Patterns: Optimize loading third-parties
  </a>


================================================
FILE: docs/src/routes/integrations/index.mdx
================================================
---
title: Integration Guides
---

# Integration Guides

Partytown can work with any HTML page, and doesn't require a specific framework. However, to make it easier to use in various frameworks or services, plugins/wrappers can be made for their ecosystem. Below is a current list of integrations. Please help us add more!

- [Angular](/angular)
- [Astro](/astro)
- [Drupal](/drupal)
- [Gatsby](/gatsby)
- [HTML](/html)
- [NextJS](/nextjs)
- [Nuxt](/nuxt)
- [Qwik](https://qwik.builder.io/docs/integrations/partytown/)
- [React](/react)
- [Remix](/remix)
- [Shopify Hydrogen](/shopify-hydrogen)
- [Solid](/solid)
- [SvelteKit](/sveltekit)

See something missing and would like to contribute? Please [open an issue](https://github.com/BuilderIO/partytown/issues/new/choose) and we'd love to work with you to get your integration up and running and listed here. It may be as simple as just writing a doc, similar to the ones above, detailing how to best implement Partytown in the framework or service.


================================================
FILE: docs/src/routes/layout.tsx
================================================
import {
  Slot,
  component$,
  createContextId,
  useContextProvider,
  useStore,
  useVisibleTask$,
} from "@qwik.dev/core";
import { type RequestHandler, useContent } from "@qwik.dev/router";
import { Aside } from "~/components/Aside/Aside";
import { Footer } from "~/components/Footer/Footer";
import { Header } from "~/components/Header/Header";
import { Toc } from "~/components/Toc/Toc";

export const onGet: RequestHandler = async ({ cacheControl }) => {
  // Control caching for this request for best performance and to reduce hosting costs:
  // https://qwik.builder.io/docs/caching/
  cacheControl({
    // Always serve a cached response by default, up to a week stale
    staleWhileRevalidate: 60 * 60 * 24 * 7,
    // Max once every 5 seconds, revalidate on the server to get a fresh version of this page
    maxAge: 5,
  });
};

type Store = {
  theme: "light" | "dark";
};

export const StoreContext = createContextId<Store>("Store");

export default component$(() => {
  const store = useStore<Store>({ theme: "light" });
  const { headings } = useContent();
  useContextProvider(StoreContext, store);
  // eslint-disable-next-line qwik/no-use-visible-task
  useVisibleTask$(() => {
    const theme = localStorage.getItem("theme") as Store["theme"];
    store.theme = theme;
  });



  return (
    <div class="h-screen bg-[#F8F8FF] dark:bg-[#0D0F12]">
      <Header />
      <main class="flex min-h-[100%] bg-[#F8F8FF] dark:bg-[#0D0F12] lg:grid lg:grid-cols-content xl:grid-cols-[260px_1fr_240px]">
        <aside
          class={`hidden border-r-[2px] border-zinc-100 dark:border-zinc-900 lg:block`}
        >
          <Aside />
        </aside>
        <article class="docs w-full pb-10 pt-28">
          <Slot />
          <Footer />
        </article>
        <Toc headings={headings ?? []} />
      </main>
    </div>
  );
});


================================================
FILE: docs/src/routes/magento2/index.mdx
================================================
---
title: Magento 2
---

# Magento 2

To integrate the partytown library functionality into your Magento 2 project, you can use the integration module for Magento2 :

<a href="https://github.com/rostilos/perspective-partytown">
  Module for integrating BuilderIO/partytown library functionality into Magento
  2 project
</a>

## Requirements

<ul>
  <li>PHP 8.1 or higher</li>
  <li>Magento 2.4.4 or higher</li>
  <li>Node.js v16 or higher</li>
  <li>
    configured https for the domain ( for correct work of service wokers )
  </li>
  <li>
    Optional : configured reverse proxy for correct loading of some scripts (
    see below )
  </li>
</ul>

## Install

```bash
composer config repositories.perspective-magento2-partytown git git@github.com:rostilos/perspective-partytown.git
composer require perspective/magento2-partytown dev-master
php bin/magento setup:upgrade
bin/magento setup:di:compile
php bin/magento setup:static-content:deploy
```

Next, clear all the cache

## Updating partytown lib npm packages

The library files provided by the npm package @qwik.dev/partytown are already added to the module files, but in case you want to update them, it is recommended to do the following :

```bash
cd <magento-root>/vendor/perspective/magento2-partytown
npm install ( node v16+ required )
npm run partytown
```

## Configure

In order for scripts to be loaded and executed in a separate thread of the webworker - you need to set the appropriate type ( text/partytown ) when connecting them. Using the example of GMT :

```html
<!-- Google Tag Manager -->
<script type="text/partytown">
  (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
  new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
  j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
  'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
  })(window,document,'script','dataLayer','GTM-XXXXXXXX');
</script>
<!-- End Google Tag Manager -->
```

Configuration of the module is managed through the admin panel, where you can select the list of available analytics services that will be allocated for execution in the webworker, as well as specify other configurations that affect the functionality of the library

You can find the configurations at the following path :

Stores -> Configuration -> Perspective -> Partytown

## Optional: reverse-proxying scripts

Given the peculiarities of the partytown library, you may encounter CORS errors when using certain scripts whose resources do not give the required headers. To avoid this, use reverse-proxying, the peculiarities and possible implementations are described here:

<a href="https://partytown.qwik.dev/proxying-requests">Proxying Requests</a>

You can also try using a self-hosted reverse-proxy solution
( see example here <a href="https://github.com/rostilos/perspective-partytown/blob/2.0.0-alpha/docs/reverse-proxy.md">Node.js reverse-proxy example for partytown library</a> and here <a href="https://github.com/rostilos/perspective-partytown/blob/2.0.0-alpha/docs/reverse-proxy.md">Nginx reverse-proxy example for partytown library ( for warden ) </a> ).

## Troubleshooting

If you encounter errors when using the integration module for Magento 2 - you can also create an issue in the <a href="https://github.com/rostilos/perspective-partytown">source repository</a>


================================================
FILE: docs/src/routes/menu.md
================================================
# Docs Table Of Contents

## Introduction|/

- [How Does It Work?](/how-does-partytown-work)
- [FAQs](/faq)
- [Trade-Offs](/trade-offs)
- [Browser Support](/browser-support)

## Getting Started|/getting-started

- [Overview](/getting-started)
- [Partytown Scripts](/partytown-scripts)
- [Copy Library Files](/copy-library-files)
- [Atomics](/atomics)
- [Distribution](/distribution)

## Integrations|/integrations

- [Angular](/angular)
- [Astro](/astro)
- [Drupal](/drupal)
- [Gatsby](/gatsby)
- [HTML](/html)
- [Magento 2](/magento2)
- [Next.js](/nextjs)
- [Nuxt](/nuxt)
- [Qwik](https://qwik.dev/docs/integrations/partytown/)
- [React](/react)
- [Remix](/remix)
- [Shopify Hydrogen](/shopify-hydrogen)
- [Shopify OS 2.0](/shopify-os2)
- [Solid](/solid)
- [SvelteKit](/sveltekit)

## Configuration|/configuration

- [Overview](/configuration)
- [Proxying Requests](/proxying-requests)
- [Forwarding Events](/forwarding-events)
- [Sandboxing](/sandboxing)
- [Debugging](/debugging)

## Third-Party Services|/common-services

- [Common Services](/common-services)
- [Facebook Pixel](/facebook-pixel)
- [Google Tag Manager](/google-tag-manager)

## Community

- [Discord](https://discord.gg/aHKdpdWv7a)
- [@QwikDev](https://twitter.com/QwikDev)


================================================
FILE: docs/src/routes/nextjs/index.mdx
================================================
---
title: Next.js
---

# Next.js

The Next.js setup is largely the same as the [React integration guide](/react), except it goes further into how to add to the [NextJS](https://nextjs.org/) framework's `<Head/>` component.

## Worker Strategy

The Next.js `<Script/>` component provides an experimental `worker` strategy, which uses Partytown under-the-hood. Please see the Next.js [Script documentation](https://nextjs.org/docs/api-reference/next/script#worker) for more information.

> Note: The `worker` strategy is currently unsupported with the Next.js 13+ `app` directory.

---

> Below are the instructions if you are not using the experimental [Worker Strategy](#worker-strategy).

## Install

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

## Configure

The `<Partytown/>` component is imported from the `@qwik.dev/partytown/react` submodule. The [config properties](/configuration) are JSX props.

The following is an example of including the `<Partytown/>` component in a Nextjs page. Notice the `<Partytown/>` component is in the `<Head>`, and the example analytics script has the `type="text/partytown"` attribute.

```jsx
import Head from "next/head";
import { Partytown } from "@qwik.dev/partytown/react";

const Home = () => {
  return (
    <>
      <Head>
        <title>My App</title>
        <Partytown debug={true} forward={["dataLayer.push"]} />
        <script src="https://example.com/analytics.js" type="text/partytown" />
      </Head>
      <main>...</main>
    </>
  );
};

export default Home;
```

## Partytown Script

Add the `type="text/partytown"` [prop](/partytown-scripts) for each script that should run from a web worker. The example below is using the React specific way of inlining a script with [dangerouslySetInnerHTML](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml).

```jsx
<script
  type="text/partytown"
  dangerouslySetInnerHTML={{
    __html: "/* Inlined Third-Party Script */",
  }}
/>
```

## Copy Library Files

> Below are the instructions if you are not using the experimental [Worker Strategy](#worker-strategy).

Copy library files to `public/~partytown`. How the files are copied or served from your site is up to each site's setup. A `partytown copylib` CLI [copy task](/copy-library-files) has been provided for convenience which helps copy the Partytown library files to the public directory. Below is an example of creating a "partytown" NPM script which could run before the build:

```json
"scripts": {
  "build": "npm run partytown && next build",
  "partytown": "partytown copylib public/~partytown"
}
```


================================================
FILE: docs/src/routes/nuxt/index.mdx
================================================
---
title: Nuxt
---

# Nuxt

There is a first-class [Nuxt integration for partytown](https://github.com/nuxt-community/partytown-module).

## Install

Add `@nuxtjs/partytown` dependency to your project.

```bash
npm install --save-dev @nuxtjs/partytown
yarn add --dev @nuxtjs/partytown
pnpm install --save-dev @nuxtjs/partytown
```

## Configure

Add `@nuxtjs/partytown` to the `modules` section of `nuxt.config.ts`. Use the `partytown` property for the [configuration](/configuration).

```js
import { defineNuxtConfig } from "nuxt";

export default defineNuxtConfig({
  modules: ["@nuxtjs/partytown"],
  partytown: {
    /* any partytown-specific configuration */
  },
});
```

## Partytown Script

Add `type: 'text/partytown'` [attribute](/partytown-scripts) to any scripts you want to be handled by partytown.

```html
<template>
  <div>
    <script type="text/partytown" src="https://example.com/analytics.js" />
  </div>
</template>
```

Note that the [Nuxt Partytown](https://github.com/nuxt-community/partytown-module) module already handles copying the library files to the correct location.


================================================
FILE: docs/src/routes/partytown-scripts/index.mdx
================================================
---
title: Partytown Scripts
---

# Partytown Scripts

## Partytown Script Type

Add the `type="text/partytown"` attribute to each individual third-party script to run from a web worker. Note that each script is opt-in, meaning that the updated `type` attribute should only be added to scripts that should run with Partytown. Partytown will _not_ automatically upgrade any scripts unless this attribute is added.

```diff
- <script>...</script>
+ <script type="text/partytown">...</script>
```

## Why `type="text/partytown"`?

The `type="text/partytown"` attribute does two things:

1. Informs the browser to _not_ process the script. By giving the script a [type attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-type) which the browser does not recognize: "The embedded content is treated as a data block which won't be processed by the browser."
2. Provides a query selector so Partytown can find all the scripts to run from within the web worker. When the document is ready and Partytown has initialized, Partytown will then query selector for all of the `script[type="text/partytown"]` script elements. You'll notice that after a script has been executed in the web worker, it'll then get an updated type attribute of `type="text/partytown-x"`.

## Dynamically Appending Scripts

Commonly, scripts will already be a part of the DOM when the document loads, and once the document is ready and the window has loaded, Partytown will find the scripts and start executing them in the web worker. However, if a script is dynamically appended to the DOM, _after_ Partytown has initialized, you can still dispatch the `ptupdate` custom event on window to notify Partytown there are new scripts to find.

Below is an example of dynamically appending a script to the document, then notifying Partytown to run its update again. Notice that _before_ the script is appended, the `type` property (or attribute) is already set to `text/partytown`.

```js
const script = document.createElement("script");
script.type = "text/partytown";
script.innerHTML = `console.log("New partytown script!")`;
document.head.appendChild(script);

window.dispatchEvent(new CustomEvent("ptupdate"));
```

## Integrations

Please see the [integration guides](/integrations) for more information on how to setup Partytown.


================================================
FILE: docs/src/routes/proxying-requests/index.mdx
================================================
---
title: Proxying Requests
---

# Proxying Requests

Often third-party scripts are added to the page by appending a script tag, such as:

```javascript
var script = document.createElement("script");
script.url = "http://some-third-party-script.com/tracking.js";
document.head.appendChild(script);
```

When the `<script>` element is appended to the `<head>` using this traditional approach, the script's HTTP response _does not_ require [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) headers.

However, because Partytown requests the scripts within a web worker using [fetch()](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API), then the script's response _requires_ the correct CORS headers.

Many third-party scripts already provide the correct CORS headers, but not all do. For services that do not add the correct headers, then a [reverse proxy](#reverse-Proxy) to another domain must be used in order to provide the CORS headers.

## CORS Response Header

```
Access-Control-Allow-Origin: *
```

## Configuring URL Proxies

When executed from within Partytown, every URL is resolved by Partytown, which also gives users the ability to inspect and modify any and every URL being resolved. The `resolveUrl()` config can be used to check for a specific URL, and optionally return the proxied URL instead. For example, in the code below we're checking if the URL to be resolved is for Google Analytics, and if so, return a different URL that points to a [reverse proxy](#reverse-Proxy).

### Vanilla Config Example

```javascript
partytown = {
  resolveUrl: function (url, location, type) {
    if (type === "script") {
      var proxyUrl = new URL("https://my-reverse-proxy.com/");
      proxyUrl.searchParams.append("url", url.href);
      return proxyUrl;
    }
    return url;
  },
};
```

Please see the [integration guides](/integrations) and [configuration](/configuration) for more information.

## Reverse Proxy

Below are a few examples of [reverse proxies](https://en.wikipedia.org/wiki/Reverse_proxy) that could be used.

- [Apache](https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html)
- [AWS: Creating a Reverse Proxy for Partytown with AWS Cloudfront](https://nystudio107.com/blog/creating-a-reverse-proxy-for-partytown-with-aws-cloudfront)
- [Cloudflare](https://www.cloudflare.com/learning/cdn/glossary/reverse-proxy/)
- [Gatsby Cloud: Redirects and Rewrites](https://support.gatsbyjs.com/hc/en-us/articles/1500003051241-Working-with-Redirects)
- [Netlify: Proxy to another service](https://docs.netlify.com/routing/redirects/rewrites-proxies/#proxy-to-another-service)
- [NGINX](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/)
- [Vercel: Rewrites](https://vercel.com/docs/cli#project-configuration/rewrites)

## Serving Resources Locally

Another option to work around the `Access-Control-Allow-Origin` issue _without_ using a proxy is to serve your third-party JavaScript and other resources locally.

So instead of inserting something like this on your page for [Google Analytics](https://developers.google.com/analytics/devguides/collection/analyticsjs):

```html
<!-- Google Analytics -->
<script type="text/partytown">
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXX-Y', 'auto');
  ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
```

You instead download the `analytics.js` JavaScript resource, and serve it locally from your domain like this:

```html
<!-- Google Analytics -->
<script type="text/partytown">
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://example.com/analytics.js','ga');

  ga('create', 'UA-XXXXX-Y', 'auto');
  ga('send', 'pageview');
</script>
<!-- End Google Analytics -->
```

Since you are serving the resource from your own server, you control the headers that come along with it, including the `Access-Control-Allow-Origin` header that the proxy work-around is sometimes needed for.

As a bonus, serving these resources locally is one less DNS lookup that needs to happen before the client can load your site.

You can manually download these self-hosted third-party JavaScript resources, or you can use a webpack plugin like [save-remote-file-webpack-plugin](https://www.npmjs.com/package/save-remote-file-webpack-plugin) to do it as part of your build process:

```js
const SaveRemoteFilePlugin = require("save-remote-file-webpack-plugin");
module.exports = {
  plugins: [
    new SaveRemoteFilePlugin([
      {
        url: "https://google-analytics.com/analytics.js",
        filepath: "js/analytics.js",
      },
    ]),
  ],
};
```


================================================
FILE: docs/src/routes/react/index.mdx
================================================
---
title: React
---

# React

The Partytown NPM package already comes with a React component, which is a thin wrapper to the Partytown snippet. This React component should be usable from most React/Preact projects.

## Install

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

## Configure

The `<Partytown/>` component is imported from the `@qwik.dev/partytown/react` submodule. The [config properties](/configuration) are JSX props.

Below is an example of setting the `debug` config to `true`, and [forward](/forwarding-events) config for [Google Tag Manager](/google-tag-manager).

```jsx
import { Partytown } from "@qwik.dev/partytown/react";

export function Head() {
  return (
    <>
      <Partytown debug={true} forward={["dataLayer.push"]} />
    </>
  );
}
```

## Partytown Script

Add the `type="text/partytown"` [prop](/partytown-scripts) for each script that should run from a web worker. The example below is using the React specific way of inlining a script with [dangerouslySetInnerHTML](https://react.dev/reference/react-dom/components/common#dangerously-setting-the-inner-html).

```jsx
<script
  type="text/partytown"
  dangerouslySetInnerHTML={{
    __html: "/* Inlined Third-Party Script */",
  }}
/>
```

## Copy Library Files

Copy library files to `public/~partytown`. How the files are copied or served from your site is up to each site's setup. A `partytown copylib` CLI [copy task](/copy-library-files) has been provided for convenience which helps copy the Partytown library files to the public directory. Below is an example of creating a "partytown" NPM script which could run before the build:

```json
"scripts": {
  "partytown": "partytown copylib public/~partytown"
}
```


================================================
FILE: docs/src/routes/remix/index.mdx
================================================
---
title: Remix
---

# Remix

The Remix setup is largely the same as the [React integration guide](/react), except it goes further into how to add to the [Remix](https://remix.run/) framework's app root component.

## Install

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

## Configure

The `<Partytown/>` component is imported from the `@qwik.dev/partytown/react` submodule. The [config properties](/configuration) are JSX props.

The following is an example of including the `<Partytown/>` component in the app's root component. Notice the `<Partytown/>` component is in the `<head>` and before the `<Meta/>` component. The example below is setting the [forward](/forwarding-events) config for [Google Tag Manager](/google-tag-manager).

```jsx
import { Partytown } from "@qwik.dev/partytown/react";
import { Links, Meta, Outlet } from "@remix-run/react";

export default function App() {
  return (
    <html lang="en">
      <head>
        <meta charSet="utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1" />
        <Partytown debug={true} forward={["dataLayer.push"]} />
        <Meta />
        <Links />
      </head>
      <body>...</body>
    </html>
  );
}
```

## Partytown Script

Add the `type="text/partytown"` [prop](/partytown-scripts) for each script that should run from a web worker. The example below is using the React specific way of inlining a script with [dangerouslySetInnerHTML](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml).

```jsx
<Partytown debug={true} forward={['dataLayer.push']} />
<script
  type="text/partytown"
  dangerouslySetInnerHTML={{
    __html: '// inlined third-party script',
  }}
/>
```

## Copy Library Files

Copy library files to `public/~partytown`. How the files are copied or served from your site is up to each site's setup. A `partytown copylib` CLI [copy task](/copy-library-files) has been provided for convenience which helps copy the Partytown library files to the public directory. Below is an example of creating a "partytown" NPM script which could run before the build:

```json
"scripts": {
  "build": "npm run partytown && cross-env NODE_ENV=production remix build",
  "partytown": "partytown copylib public/~partytown"
}
```


================================================
FILE: docs/src/routes/sandboxing/index.mdx
================================================
---
title: Sandboxing
---

# Sandboxing

Third-party scripts are often a black-box with large amounts of code. What's buried within the obfuscated code is difficult to tell. It's minified for good reason, but regardless it becomes very difficult to understand what third-party scripts are executing on _your_ site and _your_ user's devices.

Partytown on the other hand, is able to isolate and sandbox third-party scripts within a web worker, and allow, or deny, access to main thread APIs. This includes cookies, localStorage, or the entire document. Because the code is executed within the worker, and their access to the main thread _must_ go through the proxy, Partytown is able to give developers control over what the scripts can execute.

Essentially, Partytown lets you:

- Isolate third-party scripts within a sandbox ([web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API)).
- Configure which browser APIs specific scripts can, and cannot, execute.
- Option to log API calls and passed in arguments in order to give better insight as to what the scripts are doing.


================================================
FILE: docs/src/routes/shopify-hydrogen/index.mdx
================================================
---
title: Shopify Hydrogen
---

# Shopify Hydrogen

The [Shopify Hydrogen](https://hydrogen.shopify.dev/) setup is largely the same as the [React integration guide](/react), except it goes further into how to add to the framework's app root component.

## Install

```bash
npm install @qwik.dev/partytown
yarn add @qwik.dev/partytown
pnpm install @qwik.dev/partytown
```

## Configure

The `<Partytown/>` component is imported from the `@qwik.dev/partytown/react` submodule. The [config properties](/configuration) are JSX props.

The following is an example of including the `<Partytown/>` component in a root [Shopify component](https://shopify.dev/). Notice the `<Partytown/>` component before the `<DefaultSeo/>` component.

```jsx
import { DefaultRoutes } from "@shopif
Download .txt
gitextract_d9ts_aht/

├── .changeset/
│   ├── README.md
│   ├── changelog-github-custom.cjs
│   ├── changelog-github-custom.ts
│   └── config.json
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug.yaml
│   │   ├── docs_suggestion.yml
│   │   └── feature.yaml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── linter.yml
│       ├── pr.yml
│       └── release.yml
├── .gitignore
├── .nvmrc
├── .prettierignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── bin/
│   └── partytown.cjs
├── docs/
│   ├── .eslintignore
│   ├── .eslintrc.cjs
│   ├── .gitignore
│   ├── .prettierignore
│   ├── .prettierrc.js
│   ├── .vscode/
│   │   ├── launch.json
│   │   ├── qwik-router.code-snippets
│   │   └── qwik.code-snippets
│   ├── README.md
│   ├── adapters/
│   │   └── cloudflare-pages/
│   │       └── vite.config.mts
│   ├── package.json
│   ├── postcss.config.cjs
│   ├── public/
│   │   ├── _headers
│   │   ├── _redirects
│   │   ├── manifest.json
│   │   └── robots.txt
│   ├── qwik.env.d.ts
│   ├── recma-provide-components.ts
│   ├── src/
│   │   ├── components/
│   │   │   ├── Aside/
│   │   │   │   └── Aside.tsx
│   │   │   ├── CodeSnippet/
│   │   │   │   └── CodeSnippet.tsx
│   │   │   ├── Footer/
│   │   │   │   └── Footer.tsx
│   │   │   ├── Header/
│   │   │   │   └── Header.tsx
│   │   │   ├── Highlight/
│   │   │   │   └── Highlight.tsx
│   │   │   ├── Icons/
│   │   │   │   ├── CloseIcon.tsx
│   │   │   │   ├── GitHubIcon.tsx
│   │   │   │   ├── MenuIcon.tsx
│   │   │   │   ├── ThemeDarkIcon.tsx
│   │   │   │   └── ThemeLightIcon.tsx
│   │   │   ├── MdxComponents/
│   │   │   │   └── MdxComponents.tsx
│   │   │   ├── RouterHead/
│   │   │   │   └── RouterHead.tsx
│   │   │   ├── ThemeSelector/
│   │   │   │   └── ThemeSelector.tsx
│   │   │   └── Toc/
│   │   │       └── Toc.tsx
│   │   ├── config.ts
│   │   ├── entry.cloudflare-pages.tsx
│   │   ├── entry.dev.tsx
│   │   ├── entry.preview.tsx
│   │   ├── entry.ssr.tsx
│   │   ├── global.scss
│   │   ├── root.tsx
│   │   ├── routes/
│   │   │   ├── 404.tsx
│   │   │   ├── angular/
│   │   │   │   └── index.mdx
│   │   │   ├── astro/
│   │   │   │   └── index.mdx
│   │   │   ├── atomics/
│   │   │   │   └── index.mdx
│   │   │   ├── browser-support/
│   │   │   │   └── index.mdx
│   │   │   ├── common-services/
│   │   │   │   └── index.mdx
│   │   │   ├── configuration/
│   │   │   │   └── index.mdx
│   │   │   ├── copy-library-files/
│   │   │   │   └── index.mdx
│   │   │   ├── cross-origin/
│   │   │   │   └── index.ts
│   │   │   ├── debugging/
│   │   │   │   └── index.mdx
│   │   │   ├── distribution/
│   │   │   │   └── index.mdx
│   │   │   ├── drupal/
│   │   │   │   └── index.mdx
│   │   │   ├── facebook-pixel/
│   │   │   │   └── index.mdx
│   │   │   ├── faq/
│   │   │   │   └── index.mdx
│   │   │   ├── forwarding-events/
│   │   │   │   └── index.mdx
│   │   │   ├── gatsby/
│   │   │   │   └── index.mdx
│   │   │   ├── getting-started/
│   │   │   │   └── index.mdx
│   │   │   ├── google-tag-manager/
│   │   │   │   └── index.mdx
│   │   │   ├── how-does-partytown-work/
│   │   │   │   └── index.mdx
│   │   │   ├── html/
│   │   │   │   └── index.mdx
│   │   │   ├── index.mdx
│   │   │   ├── integrations/
│   │   │   │   └── index.mdx
│   │   │   ├── layout.tsx
│   │   │   ├── magento2/
│   │   │   │   └── index.mdx
│   │   │   ├── menu.md
│   │   │   ├── nextjs/
│   │   │   │   └── index.mdx
│   │   │   ├── nuxt/
│   │   │   │   └── index.mdx
│   │   │   ├── partytown-scripts/
│   │   │   │   └── index.mdx
│   │   │   ├── proxying-requests/
│   │   │   │   └── index.mdx
│   │   │   ├── react/
│   │   │   │   └── index.mdx
│   │   │   ├── remix/
│   │   │   │   └── index.mdx
│   │   │   ├── sandboxing/
│   │   │   │   └── index.mdx
│   │   │   ├── shopify-hydrogen/
│   │   │   │   └── index.mdx
│   │   │   ├── shopify-os2/
│   │   │   │   └── index.mdx
│   │   │   ├── solid/
│   │   │   │   └── index.mdx
│   │   │   ├── sveltekit/
│   │   │   │   └── index.mdx
│   │   │   └── trade-offs/
│   │   │       └── index.mdx
│   │   ├── types.ts
│   │   └── utils/
│   │       └── cn.ts
│   ├── tailwind.config.js
│   ├── tsconfig.json
│   └── vite.config.mts
├── package.json
├── playwright.atomics.config.ts
├── playwright.config.ts
├── scripts/
│   ├── build-api.ts
│   ├── build-atomics.ts
│   ├── build-integration.ts
│   ├── build-main-snippet.ts
│   ├── build-media-implementations.ts
│   ├── build-react.ts
│   ├── build-service-worker.ts
│   ├── build-services.ts
│   ├── build-utils.ts
│   ├── build-web-worker.ts
│   ├── index.ts
│   ├── minify.ts
│   ├── rollup.config.js
│   ├── serve.cjs
│   ├── server.cjs
│   └── utils.ts
├── src/
│   ├── integration/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── snippet.ts
│   ├── lib/
│   │   ├── atomics/
│   │   │   ├── sync-create-messenger-atomics.ts
│   │   │   └── sync-send-message-to-main-atomics.ts
│   │   ├── build-modules/
│   │   │   ├── sync-create-messenger.ts
│   │   │   ├── sync-send-message-to-main.ts
│   │   │   ├── version.ts
│   │   │   ├── web-worker-blob.ts
│   │   │   └── web-worker-url.ts
│   │   ├── log.ts
│   │   ├── main/
│   │   │   ├── snippet-entry.ts
│   │   │   └── snippet.ts
│   │   ├── sandbox/
│   │   │   ├── index.ts
│   │   │   ├── main-access-handler.ts
│   │   │   ├── main-constants.ts
│   │   │   ├── main-custom-element.ts
│   │   │   ├── main-forward-trigger.ts
│   │   │   ├── main-globals.ts
│   │   │   ├── main-instances.ts
│   │   │   ├── main-register-window.ts
│   │   │   ├── main-serialization.ts
│   │   │   ├── on-messenge-from-worker.ts
│   │   │   ├── read-main-platform.ts
│   │   │   └── read-main-scripts.ts
│   │   ├── service-worker/
│   │   │   ├── fetch.ts
│   │   │   ├── index.ts
│   │   │   ├── sync-create-messenger-sw.ts
│   │   │   └── sync-send-message-to-main-sw.ts
│   │   ├── types.ts
│   │   ├── utils.ts
│   │   └── web-worker/
│   │       ├── index.ts
│   │       ├── init-web-worker.ts
│   │       ├── media/
│   │       │   ├── bridge.ts
│   │       │   ├── canvas.ts
│   │       │   ├── index.ts
│   │       │   ├── media.ts
│   │       │   └── utils.ts
│   │       ├── worker-anchor.ts
│   │       ├── worker-constants.ts
│   │       ├── worker-constructors.ts
│   │       ├── worker-css-style-declaration.ts
│   │       ├── worker-custom-elements.ts
│   │       ├── worker-document.ts
│   │       ├── worker-element.ts
│   │       ├── worker-environment.ts
│   │       ├── worker-exec.ts
│   │       ├── worker-form.ts
│   │       ├── worker-forwarded-trigger.ts
│   │       ├── worker-iframe.ts
│   │       ├── worker-image.ts
│   │       ├── worker-location.ts
│   │       ├── worker-media.ts
│   │       ├── worker-named-node-map.ts
│   │       ├── worker-navigator.ts
│   │       ├── worker-node.ts
│   │       ├── worker-performance.ts
│   │       ├── worker-proxy.ts
│   │       ├── worker-script.ts
│   │       ├── worker-serialization.ts
│   │       ├── worker-src-element.ts
│   │       ├── worker-state.ts
│   │       ├── worker-storage.ts
│   │       ├── worker-style.ts
│   │       ├── worker-svg.ts
│   │       └── worker-window.ts
│   ├── modules.d.ts
│   ├── react/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── index.ts
│   │   ├── package.json
│   │   └── snippet.tsx
│   ├── services/
│   │   ├── api-extractor.json
│   │   ├── api.md
│   │   ├── facebook-pixel.ts
│   │   ├── freshpaint.ts
│   │   ├── google-tag-manager.ts
│   │   ├── index.ts
│   │   └── package.json
│   └── utils/
│       ├── api-extractor.json
│       ├── api.md
│       ├── copy-lib-files.ts
│       ├── fs.ts
│       ├── index.ts
│       ├── package.json
│       ├── rollup.ts
│       └── vite.ts
├── tests/
│   ├── 404.html
│   ├── atomics/
│   │   └── index.html
│   ├── benchmarks/
│   │   ├── benchmark.js
│   │   ├── index.html
│   │   ├── run.cjs
│   │   └── services/
│   │       └── index.html
│   ├── index.html
│   ├── integrations/
│   │   ├── clarity/
│   │   │   ├── clarity.bundle.js
│   │   │   ├── clarity.spec.ts
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── config/
│   │   │   ├── config.spec.ts
│   │   │   └── index.html
│   │   ├── event-forwarding/
│   │   │   ├── event-forwarding.spec.ts
│   │   │   └── index.html
│   │   ├── facebook-pixel/
│   │   │   ├── facebook-pixel.spec.ts
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── full-story/
│   │   │   ├── full-story.spec.ts
│   │   │   ├── gtm-fullstory.html
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── gtm/
│   │   │   ├── gtag.js
│   │   │   ├── gtm.js
│   │   │   ├── gtm.spec.ts
│   │   │   ├── index.html
│   │   │   ├── preserve-behavior.html
│   │   │   └── standard.html
│   │   ├── hubspot/
│   │   │   ├── 20632911.js
│   │   │   ├── analytics-20632911.js
│   │   │   ├── banner-20632911.js
│   │   │   ├── collectedforms.js
│   │   │   ├── forms-standard.html
│   │   │   ├── forms.html
│   │   │   ├── hubspot.spec.ts
│   │   │   ├── leadflows.js
│   │   │   ├── scripts-20632911.js
│   │   │   └── shell.js
│   │   ├── intercom/
│   │   │   ├── app-modern.e4d2d085.js
│   │   │   ├── frame-modern.5069da72.js
│   │   │   ├── index.html
│   │   │   ├── shim.latest.js
│   │   │   ├── standard.html
│   │   │   ├── vendor-modern.d054d6ff.js
│   │   │   └── vendors~app-modern.c7bfd661.js
│   │   ├── javascript-request/
│   │   │   ├── execute.js
│   │   │   ├── index.html
│   │   │   ├── javascript-request.spec.ts
│   │   │   └── some-text.txt
│   │   ├── jquery/
│   │   │   ├── index.html
│   │   │   ├── jquery.js
│   │   │   ├── jquery.spec.ts
│   │   │   └── standard.html
│   │   ├── kiwisizing/
│   │   │   ├── index.html
│   │   │   ├── kiwisizing.SizingPlugin.js
│   │   │   ├── kiwisizing.spec.ts
│   │   │   ├── shopify-dynamic-checkout.js
│   │   │   └── standard.html
│   │   ├── load-scripts-on-main-thread/
│   │   │   ├── background-test-script.js
│   │   │   ├── index.html
│   │   │   ├── load-scripts-on-main-thread.spec.ts
│   │   │   ├── regex-test-script.js
│   │   │   ├── snippet.html
│   │   │   ├── test-script.js
│   │   │   └── wait-for-class.js
│   │   ├── main-window-accessors/
│   │   │   ├── index.html
│   │   │   └── main-window-accessors.spec.ts
│   │   ├── mermaid/
│   │   │   ├── index.html
│   │   │   ├── mermaid.js
│   │   │   ├── mermaid.spec.ts
│   │   │   └── standard.html
│   │   ├── twitter/
│   │   │   ├── index.html
│   │   │   ├── standard.html
│   │   │   ├── twitter.spec.ts
│   │   │   └── widgets.js
│   │   ├── underoutfit/
│   │   │   ├── index.html
│   │   │   └── standard.html
│   │   ├── underoutfit_kiwi/
│   │   │   ├── index.html
│   │   │   ├── kiwisizing.SizingPlugin.js
│   │   │   └── standard.html
│   │   └── wistia/
│   │       ├── E-v1.js
│   │       ├── assets/
│   │       │   └── external/
│   │       │       ├── airplay.js
│   │       │       ├── engines/
│   │       │       │   ├── hls_video.js
│   │       │       │   ├── manual_quality_video.js
│   │       │       │   └── native_hls_video.js
│   │       │       ├── playPauseLoadingControl.js
│   │       │       ├── vulcanV2Player/
│   │       │       │   └── video/
│   │       │       │       ├── controls/
│   │       │       │       │   └── VolumeSliderControl/
│   │       │       │       │       └── VolumeSliderControl.js
│   │       │       │       └── ui_components/
│   │       │       │           └── Storyboard.js
│   │       │       └── wistia-mux.js
│   │       ├── embed/
│   │       │   └── medias/
│   │       │       └── varrf62cw4.json
│   │       ├── index.html
│   │       ├── standard.html
│   │       └── varrf62cw4.jsonp
│   ├── nextjs/
│   │   ├── README.md
│   │   ├── next.config.js
│   │   ├── nextjs.spec.ts
│   │   ├── package.json
│   │   ├── pages/
│   │   │   ├── _app.js
│   │   │   └── index.js
│   │   └── playwright.nextjs.ts
│   ├── platform/
│   │   ├── anchor/
│   │   │   ├── anchor.spec.ts
│   │   │   └── index.html
│   │   ├── audio/
│   │   │   ├── audio-scripts.js
│   │   │   ├── audio.spec.ts
│   │   │   └── index.html
│   │   ├── canvas/
│   │   │   ├── canvas.spec.ts
│   │   │   └── index.html
│   │   ├── custom-element/
│   │   │   ├── custom-element.spec.ts
│   │   │   └── index.html
│   │   ├── document/
│   │   │   ├── current-script-src.js
│   │   │   ├── document.spec.ts
│   │   │   └── index.html
│   │   ├── document-prod/
│   │   │   ├── current-script-src.js
│   │   │   ├── document-prod.spec.ts
│   │   │   └── index.html
│   │   ├── element/
│   │   │   ├── element.spec.ts
│   │   │   └── index.html
│   │   ├── element-class/
│   │   │   ├── element-class.spec.ts
│   │   │   └── index.html
│   │   ├── element-style/
│   │   │   ├── element-style.spec.ts
│   │   │   └── index.html
│   │   ├── error/
│   │   │   ├── error.spec.ts
│   │   │   └── index.html
│   │   ├── event/
│   │   │   ├── event.spec.ts
│   │   │   └── index.html
│   │   ├── fetch/
│   │   │   ├── data.json
│   │   │   ├── fetch.spec.ts
│   │   │   ├── index.html
│   │   │   └── text.txt
│   │   ├── form/
│   │   │   ├── form.spec.ts
│   │   │   └── index.html
│   │   ├── history/
│   │   │   ├── history.spec.ts
│   │   │   ├── iframe-history.html
│   │   │   └── index.html
│   │   ├── iframe/
│   │   │   ├── call-fn-on-parent.js
│   │   │   ├── content.html
│   │   │   ├── cookie.html
│   │   │   ├── current-script.js
│   │   │   ├── external-js.html
│   │   │   ├── external.js
│   │   │   ├── fn-on-window.js
│   │   │   ├── global-var.html
│   │   │   ├── iframe-cookie-localstorage.spec.ts
│   │   │   ├── iframe1.spec.ts
│   │   │   ├── iframe2.spec.ts
│   │   │   ├── index-cookie-localstorage.html
│   │   │   ├── index.html
│   │   │   ├── index2.html
│   │   │   ├── localstorage.html
│   │   │   ├── location1.html
│   │   │   ├── location2.html
│   │   │   ├── location2.js
│   │   │   ├── no-deadlock.html
│   │   │   ├── no-deadlock.js
│   │   │   ├── no-global-share.html
│   │   │   ├── no-global-share.js
│   │   │   ├── onload.js
│   │   │   ├── parent-window.js
│   │   │   ├── post-message.html
│   │   │   ├── src-change1.html
│   │   │   └── src-change2.html
│   │   ├── image/
│   │   │   ├── image.spec.ts
│   │   │   └── index.html
│   │   ├── intersection-observer/
│   │   │   ├── index.html
│   │   │   └── intersection-observer.spec.ts
│   │   ├── klaviyo/
│   │   │   ├── current-script-src.js
│   │   │   ├── document.spec.ts
│   │   │   └── index.html
│   │   ├── multiple-tabs/
│   │   │   ├── index.html
│   │   │   └── multiple-tabs.spec.ts
│   │   ├── mutation-observer/
│   │   │   ├── index.html
│   │   │   └── mutation-observer.spec.ts
│   │   ├── navigator/
│   │   │   ├── api.js
│   │   │   ├── index.html
│   │   │   └── navigator.spec.ts
│   │   ├── no-partytown-script/
│   │   │   ├── index.html
│   │   │   └── no-partytown-script.spec.ts
│   │   ├── node/
│   │   │   ├── index.html
│   │   │   └── node.spec.ts
│   │   ├── node-list/
│   │   │   ├── index.html
│   │   │   └── node-list.spec.ts
│   │   ├── resize-observer/
│   │   │   ├── index.html
│   │   │   └── resize-observer.spec.ts
│   │   ├── screen/
│   │   │   ├── index.html
│   │   │   └── screen.spec.ts
│   │   ├── script/
│   │   │   ├── async-1.js
│   │   │   ├── async-2.js
│   │   │   ├── defer-1.js
│   │   │   ├── defer-2.js
│   │   │   ├── index.html
│   │   │   ├── jsonp-a.js
│   │   │   ├── jsonp-b.js
│   │   │   ├── jsonp-c.js
│   │   │   ├── script-1.js
│   │   │   ├── script.spec.ts
│   │   │   ├── set-get-attr.js
│   │   │   └── source-mapping-url.js
│   │   ├── storage/
│   │   │   ├── index.html
│   │   │   ├── storage-access.html
│   │   │   ├── storage-access.spec.ts
│   │   │   └── storage.spec.ts
│   │   ├── style/
│   │   │   ├── index.html
│   │   │   └── style.spec.ts
│   │   ├── svg/
│   │   │   ├── index.html
│   │   │   └── svg.spec.ts
│   │   ├── video/
│   │   │   ├── index.html
│   │   │   └── video.spec.__ts
│   │   └── window/
│   │       ├── index.html
│   │       └── window.spec.ts
│   ├── react-app/
│   │   ├── package.json
│   │   ├── public/
│   │   │   └── index.html
│   │   ├── src/
│   │   │   ├── App.css
│   │   │   ├── App.tsx
│   │   │   ├── index.css
│   │   │   ├── index.tsx
│   │   │   └── react-app-env.d.ts
│   │   └── tsconfig.json
│   └── unit/
│       ├── forward.spec.ts
│       ├── html-replace.spec.ts
│       ├── integration.spec.ts
│       ├── snippet.spec.ts
│       ├── utils.spec.ts
│       ├── utils.ts
│       ├── worker-exec.spec.ts
│       └── worker-image.spec.ts
└── tsconfig.json
Download .txt
Showing preview only (563K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (8766 symbols across 84 files)

FILE: .changeset/changelog-github-custom.cjs
  function adopt (line 19) | function adopt(value) {
  function fulfilled (line 27) | function fulfilled(value) {
  function rejected (line 34) | function rejected(value) {
  function step (line 41) | function step(result) {
  function verb (line 73) | function verb(n) {
  function step (line 78) | function step(op) {

FILE: bin/partytown.cjs
  function run (line 3) | async function run() {
  function copyLibTask (line 18) | async function copyLibTask(args) {
  function help (line 36) | function help() {
  function version (line 44) | function version() {
  function panic (line 48) | function panic(msg) {

FILE: docs/recma-provide-components.ts
  function isNamedFunction (line 12) | function isNamedFunction(node: FunctionDeclaration, name: string) {

FILE: docs/src/components/CodeSnippet/CodeSnippet.tsx
  type CodeSnippetProps (line 11) | type CodeSnippetProps = PropsOf<"div"> & {

FILE: docs/src/components/Header/Header.tsx
  type Props (line 10) | type Props = {

FILE: docs/src/components/Highlight/Highlight.tsx
  type HighlightProps (line 16) | type HighlightProps = PropsOf<"div"> & {

FILE: docs/src/components/Toc/Toc.tsx
  type TableOfContentsProps (line 21) | type TableOfContentsProps = { headings: ContentHeading[] };
  type Node (line 23) | interface Node extends ContentHeading {
  type Tree (line 27) | type Tree = Array<Node>;
  function deltaToStrg (line 47) | function deltaToStrg(
  function buildTree (line 70) | function buildTree(nodes: ContentHeading[]) {
  type RecursiveListProps (line 112) | type RecursiveListProps = {
  type AnchorProps (line 173) | type AnchorProps = {

FILE: docs/src/entry.cloudflare-pages.tsx
  type QwikRouterPlatform (line 19) | interface QwikRouterPlatform extends PlatformCloudflarePages {}

FILE: docs/src/routes/layout.tsx
  type Store (line 26) | type Store = {

FILE: docs/src/types.ts
  type OmitSignalClass (line 3) | type OmitSignalClass<T> = Omit<T, "class"> & { class?: ClassList };

FILE: docs/src/utils/cn.ts
  function cn (line 4) | function cn(...inputs: ClassValue[]) {

FILE: scripts/build-api.ts
  function buildApi (line 5) | function buildApi(opts: BuildOptions) {

FILE: scripts/build-atomics.ts
  function buildAtomics (line 14) | function buildAtomics(opts: BuildOptions): RollupOptions[] {
  function buildAtomicsDebug (line 25) | function buildAtomicsDebug(opts: BuildOptions): RollupOptions {
  function buildAtomicsMin (line 47) | function buildAtomicsMin(opts: BuildOptions): RollupOptions {

FILE: scripts/build-integration.ts
  function buildIntegration (line 8) | function buildIntegration(opts: BuildOptions): RollupOptions {

FILE: scripts/build-main-snippet.ts
  function buildMainSnippet (line 6) | function buildMainSnippet(opts: BuildOptions): RollupOptions {
  function fallbackTimeoutMsPlugin (line 62) | function fallbackTimeoutMsPlugin(opts: BuildOptions): Plugin {

FILE: scripts/build-media-implementations.ts
  function buildMediaImplementation (line 6) | function buildMediaImplementation(opts: BuildOptions): RollupOptions {

FILE: scripts/build-react.ts
  function buildReact (line 5) | function buildReact(opts: BuildOptions): RollupOptions {

FILE: scripts/build-service-worker.ts
  function buildServiceWorker (line 19) | function buildServiceWorker(opts: BuildOptions): RollupOptions {
  function buildSandboxServiceWorker (line 49) | async function buildSandboxServiceWorker(opts: BuildOptions, msgType: Me...
  function sandboxContentPlugin (line 82) | function sandboxContentPlugin(opts: BuildOptions, msgType: MessageType):...

FILE: scripts/build-services.ts
  function buildServices (line 5) | function buildServices(opts: BuildOptions): RollupOptions {

FILE: scripts/build-utils.ts
  function buildUtils (line 5) | function buildUtils(opts: BuildOptions): RollupOptions {

FILE: scripts/build-web-worker.ts
  function buildWebWorker (line 16) | async function buildWebWorker(opts: BuildOptions, msgType: MessageType, ...
  function webWorkerBlobUrlPlugin (line 42) | function webWorkerBlobUrlPlugin(

FILE: scripts/index.ts
  function runBuild (line 16) | async function runBuild(rootDir: string, isDev: boolean, isReleaseBuild:...
  function createRootPackage (line 37) | async function createRootPackage(opts: BuildOptions) {
  function createBuildOptions (line 62) | function createBuildOptions(rootDir: string, isDev: boolean, isReleaseBu...

FILE: scripts/minify.ts
  function minifyPlugin (line 5) | function minifyPlugin(opts: BuildOptions, debug: boolean) {
  function minifyOptions (line 12) | function minifyOptions(opts: BuildOptions, debug: boolean): Options {
  function managlePropsPlugin (line 58) | function managlePropsPlugin(): Plugin {

FILE: scripts/server.cjs
  method close (line 125) | close() {

FILE: scripts/utils.ts
  function syncCommunicationModulesPlugin (line 8) | function syncCommunicationModulesPlugin(opts: BuildOptions, msgType: Mes...
  function fileSize (line 33) | function fileSize(): Plugin {
  function submodulePath (line 48) | function submodulePath(moduleId: string, submodulePath: string): Plugin {
  function submodulePackageJson (line 72) | function submodulePackageJson(
  function watchDir (line 90) | function watchDir(opts: BuildOptions, dir: string): Plugin {
  function onwarn (line 109) | function onwarn(warning: RollupWarning) {
  function getJsBanner (line 114) | function getJsBanner(opts: BuildOptions, jsCode: string) {
  function jsBannerPlugin (line 118) | function jsBannerPlugin(opts: BuildOptions): Plugin {
  function versionPlugin (line 132) | function versionPlugin(opts: BuildOptions): Plugin {
  type BuildOptions (line 146) | interface BuildOptions {
  type PackageJson (line 173) | interface PackageJson {
  type MessageType (line 177) | type MessageType = 'sw' | 'atomics';

FILE: src/lib/build-modules/sync-send-message-to-main.ts
  function syncSendMessageToMainServiceWorker (line 3) | function syncSendMessageToMainServiceWorker(

FILE: src/lib/build-modules/version.ts
  constant VERSION (line 1) | const VERSION = '_VERSION_';

FILE: src/lib/build-modules/web-worker-blob.ts
  constant WEB_WORKER_BLOB (line 1) | const WEB_WORKER_BLOB = '';

FILE: src/lib/build-modules/web-worker-url.ts
  constant WEB_WORKER_URL (line 1) | const WEB_WORKER_URL = '';

FILE: src/lib/main/snippet.ts
  function snippet (line 9) | function snippet(

FILE: src/lib/service-worker/fetch.ts
  type MessageResolve (line 76) | type MessageResolve = [(data?: any) => void, any];

FILE: src/lib/types.ts
  type CreateWorker (line 1) | type CreateWorker = (workerName: string) => Worker;
  type Messenger (line 3) | type Messenger = (
  type MessengerRequestCallback (line 7) | type MessengerRequestCallback = (
  type MessengerHandler (line 12) | type MessengerHandler = (
  type MessengerResponseCallback (line 17) | type MessengerResponseCallback = (accessRsp: MainAccessResponse) => void;
  type WinId (line 19) | type WinId = string;
  type InstanceId (line 21) | type InstanceId = string;
  type RefId (line 23) | type RefId = string;
  type AssignWinInstanceId (line 25) | interface AssignWinInstanceId {
  type AssignInstanceId (line 29) | type AssignInstanceId = InstanceId | AssignWinInstanceId;
  type MessageFromWorkerToSandbox (line 31) | type MessageFromWorkerToSandbox =
  type MessageFromSandboxToWorker (line 45) | type MessageFromSandboxToWorker =
  type WorkerMessageType (line 63) | const enum WorkerMessageType {
  type LocationUpdateType (line 82) | const enum LocationUpdateType {
  type LocationUpdateData (line 89) | interface LocationUpdateData {
  type ForwardMainTriggerData (line 98) | interface ForwardMainTriggerData {
  type RefHandlerCallbackData (line 104) | interface RefHandlerCallbackData {
  type PostMessageToWorker (line 112) | type PostMessageToWorker = (msg: MessageFromSandboxToWorker) => void;
  type MainWindowContext (line 114) | interface MainWindowContext {
  type PartytownWebWorker (line 121) | interface PartytownWebWorker extends Worker {
  type InitWebWorkerData (line 125) | interface InitWebWorkerData {
  type InterfaceInfo (line 141) | type InterfaceInfo =
  type InterfaceMember (line 151) | type InterfaceMember =
  type WebWorkerContext (line 157) | interface WebWorkerContext {
  type InitializeEnvironmentData (line 173) | interface InitializeEnvironmentData {
  type WebWorkerEnvironment (line 180) | interface WebWorkerEnvironment {
  type MembersInterfaceTypeInfo (line 205) | interface MembersInterfaceTypeInfo {
  type InterfaceType (line 209) | const enum InterfaceType {
  type WinDocId (line 233) | const enum WinDocId {
  type InitializeScriptData (line 240) | interface InitializeScriptData {
  type MainAccessRequest (line 248) | interface MainAccessRequest {
  type MainAccessTask (line 253) | interface MainAccessTask {
  type MainAccessResponse (line 262) | interface MainAccessResponse {
  type ApplyPathType (line 269) | const enum ApplyPathType {
  type ApplyPath (line 274) | type ApplyPath = any[];
  type SerializedType (line 276) | const enum SerializedType {
  type SerializedArrayTransfer (line 294) | type SerializedArrayTransfer = [SerializedType.Array, (SerializedTransfe...
  type SerializedArrayBufferTransfer (line 296) | type SerializedArrayBufferTransfer = [SerializedType.ArrayBuffer, any];
  type SerializedArrayBufferViewTransfer (line 298) | type SerializedArrayBufferViewTransfer = [SerializedType.ArrayBufferView...
  type SerializedAttrTransfer (line 300) | type SerializedAttrTransfer = [SerializedType.Attr, SerializedAttr];
  type SerializedCSSRuleTransfer (line 302) | type SerializedCSSRuleTransfer = [SerializedType.CSSRule, SerializedCSSR...
  type SerializedCSSRuleListTransfer (line 304) | type SerializedCSSRuleListTransfer = [SerializedType.CSSRuleList, Serial...
  type SerializedCSSStyleDeclarationTransfer (line 306) | type SerializedCSSStyleDeclarationTransfer = [
  type SerializedErrorTransfer (line 311) | type SerializedErrorTransfer = [SerializedType.Error, Error];
  type SerializedEventTransfer (line 313) | type SerializedEventTransfer = [SerializedType.Event, SerializedObject];
  type SerializedFunctionTransfer (line 315) | type SerializedFunctionTransfer = [SerializedType.Function];
  type SerializedInstanceTransfer (line 317) | type SerializedInstanceTransfer = [SerializedType.Instance, SerializedIn...
  type SerializedNodeListTransfer (line 319) | type SerializedNodeListTransfer = [
  type SerializedObjectTransfer (line 324) | type SerializedObjectTransfer = [
  type SerializedAttr (line 329) | type SerializedAttr = [string, string];
  type SerializedCSSRule (line 331) | type SerializedCSSRule = { [key: string]: string };
  type SerializedPrimitiveTransfer (line 333) | type SerializedPrimitiveTransfer =
  type SerializedRefTransfer (line 337) | type SerializedRefTransfer = [SerializedType.Ref, SerializedRefTransferD...
  type SerializedRefTransferData (line 339) | interface SerializedRefTransferData {
  type SerializedTransfer (line 346) | type SerializedTransfer =
  type SerializedObject (line 364) | interface SerializedObject {
  type SerializedInstance (line 368) | type SerializedInstance =
  type ResolveUrlType (line 383) | type ResolveUrlType = 'fetch' | 'xhr' | 'script' | 'iframe' | 'image';
  type SendBeaconParameters (line 388) | type SendBeaconParameters = Pick<
  type PartytownConfig (line 398) | interface PartytownConfig {
  type PartytownInternalConfig (line 572) | type PartytownInternalConfig = Omit<PartytownConfig, 'loadScriptsOnMainT...
  type PartytownForwardPropertySettings (line 579) | type PartytownForwardPropertySettings = {
  type PartytownForwardPropertyWithSettings (line 586) | type PartytownForwardPropertyWithSettings = [string, PartytownForwardPro...
  type PartytownForwardProperty (line 596) | type PartytownForwardProperty = string | PartytownForwardPropertyWithSet...
  type GetHook (line 601) | type GetHook = (opts: GetHookOptions) => any;
  type SetHook (line 606) | type SetHook = (opts: SetHookOptions) => any;
  type ApplyHook (line 611) | type ApplyHook = (opts: ApplyHookOptions) => any;
  type HookOptions (line 613) | interface HookOptions {
  type GetHookOptions (line 625) | interface GetHookOptions extends HookOptions {}
  type SetHookOptions (line 630) | interface SetHookOptions extends HookOptions {
  type ApplyHookOptions (line 638) | interface ApplyHookOptions extends HookOptions {
  type StringIndexable (line 642) | type StringIndexable = {
  type MainWindow (line 646) | interface MainWindow extends Window, StringIndexable {
  type NodeName (line 652) | const enum NodeName {
  type StateProp (line 671) | const enum StateProp {
  type EventHandler (line 682) | type EventHandler = (ev: any) => void;
  type RefHandler (line 684) | type RefHandler = (...args: any[]) => void;
  type StateMap (line 686) | type StateMap = Record<number, StateRecord>;
  type StateRecord (line 688) | type StateRecord = Record<string | number, any>;
  type CallType (line 690) | const enum CallType {
  type Getter (line 696) | type Getter = (instance: any, applyPath: ApplyPath, groupedGetters?: str...
  type Setter (line 698) | type Setter = (instance: any, applyPath: ApplyPath, value: any) => void;
  type CallMethod (line 700) | type CallMethod = (
  type ConstructGlobal (line 709) | type ConstructGlobal = (instance: any, cstrName: string, args: any[]) =>...
  type DefinePrototypePropertyDescriptor (line 711) | type DefinePrototypePropertyDescriptor = (Cstr: any, propertyDescriptorM...
  type RandomId (line 713) | type RandomId = () => string;
  type LazyBridge (line 724) | type LazyBridge = [
  type InitWindowMedia (line 736) | type InitWindowMedia = (
  type MediaSelf (line 744) | interface MediaSelf {
  type PostMessageData (line 749) | interface PostMessageData {
  type WorkerConstructor (line 754) | interface WorkerConstructor {
  type WorkerInstance (line 764) | interface WorkerInstance {
  type WorkerNode (line 773) | interface WorkerNode extends WorkerInstance, Node {
  type WorkerWindow (line 778) | interface WorkerWindow extends WorkerInstance {
  type WorkerNodeConstructors (line 782) | interface WorkerNodeConstructors {
  type CustomElementData (line 786) | type CustomElementData = [cstrName: string, observedAttributes: string[]];

FILE: src/lib/utils.ts
  type ObjectWithConstructor (line 21) | type ObjectWithConstructor = { constructor?: Function };
  type ObjectWithZoneJsConstructor (line 22) | type ObjectWithZoneJsConstructor = { __zone_symbol__originalInstance?: O...
  constant EMPTY_ARRAY (line 61) | const EMPTY_ARRAY = [];
  constant SCRIPT_TYPE (line 77) | const SCRIPT_TYPE = `text/partytown`;
  constant SCRIPT_TYPE_EXEC (line 79) | const SCRIPT_TYPE_EXEC = `-x`;
  type GetOriginalBehaviorReturn (line 166) | type GetOriginalBehaviorReturn = {
  function escapeRegExp (line 211) | function escapeRegExp(input: string) {
  function testIfMustLoadScriptOnMainThread (line 215) | function testIfMustLoadScriptOnMainThread(
  function serializeConfig (line 226) | function serializeConfig(config: PartytownConfig) {

FILE: src/lib/web-worker/media/canvas.ts
  method value (line 21) | value(this: any, contextType: string, contextAttributes: any) {
  method addColorStop (line 39) | addColorStop(...args: any[]) {
  method setTransform (line 49) | setTransform(...args: any[]) {
  method get (line 80) | get(target: any, propName: string | symbol) {
  method set (line 118) | set(target: any, propName: string | symbol, value: any) {
  method get (line 154) | get(target: any, propName: string | symbol) {
  method set (line 171) | set(target: any, propName: string | symbol, value: any) {

FILE: src/lib/web-worker/media/media.ts
  method constructor (line 38) | constructor(src?: string) {
  method enabled (line 47) | get enabled() {
  method enabled (line 50) | set enabled(value: any) {
  method id (line 54) | get id() {
  method kind (line 58) | get kind() {
  method label (line 62) | get label() {
  method language (line 66) | get language() {
  method sourceBuffer (line 70) | get sourceBuffer() {
  method constructor (line 76) | constructor(mediaElm: any) {
  method constructor (line 123) | constructor(mediaSource: MediaSource) {
  method addEventListener (line 128) | addEventListener(...args: any[]) {
  method removeEventListener (line 137) | removeEventListener(...args: any[]) {
  method constructor (line 155) | constructor(mediaSource: any) {
  method abort (line 160) | abort() {
  method addEventListener (line 165) | addEventListener(...args: any[]) {
  method appendBuffer (line 170) | appendBuffer(buf: ArrayBuffer | ArrayBufferView) {
  method appendWindowStart (line 175) | get appendWindowStart() {
  method appendWindowStart (line 179) | set appendWindowStart(value: number) {
  method appendWindowEnd (line 184) | get appendWindowEnd() {
  method appendWindowEnd (line 188) | set appendWindowEnd(value: number) {
  method buffered (line 193) | get buffered() {
  method changeType (line 204) | changeType(mimeType: string) {
  method mode (line 209) | get mode() {
  method mode (line 213) | set mode(value: number) {
  method remove (line 218) | remove(start: number, end: number) {
  method removeEventListener (line 223) | removeEventListener(...args: any[]) {
  method timestampOffset (line 228) | get timestampOffset() {
  method timestampOffset (line 232) | set timestampOffset(value: number) {
  method updating (line 237) | get updating() {
  method start (line 248) | start(...args: any[]) {
  method end (line 252) | end(...args: any[]) {
  method length (line 256) | get length() {
  method get (line 294) | get() {
  method get (line 309) | get() {
  method constructor (line 331) | constructor() {
  method activeSourceBuffers (line 337) | get activeSourceBuffers() {
  method addSourceBuffer (line 341) | addSourceBuffer(mimeType: string) {
  method clearLiveSeekableRange (line 348) | clearLiveSeekableRange() {
  method duration (line 352) | get duration() {
  method duration (line 355) | set duration(value) {
  method endOfStream (line 359) | endOfStream(endOfStreamError?: string) {
  method readyState (line 363) | get readyState() {
  method removeSourceBuffer (line 367) | removeSourceBuffer(sourceBuffer: SourceBuffer) {
  method setLiveSeekableRange (line 375) | setLiveSeekableRange(start: number, end: number) {
  method sourceBuffers (line 379) | get sourceBuffers() {
  method isTypeSupported (line 383) | static isTypeSupported(mimeType: string) {
  method get (line 404) | get(this: any) {
  type SourceBufferTask (line 418) | type SourceBufferTask = ['appendBuffer', any[], any] | ['remove', any[]];

FILE: src/lib/web-worker/media/utils.ts
  constant EMPTY_ARRAY (line 10) | const EMPTY_ARRAY = [];

FILE: src/lib/web-worker/worker-anchor.ts
  method get (line 13) | get(this: any) {
  method set (line 33) | set(this: any, value) {

FILE: src/lib/web-worker/worker-constants.ts
  constant ABOUT_BLANK (line 34) | const ABOUT_BLANK = 'about:blank';
  constant IS_TAG_REG (line 80) | const IS_TAG_REG = /^[A-Z_]([A-Z0-9-]*[A-Z0-9])?$/;

FILE: src/lib/web-worker/worker-constructors.ts
  method get (line 43) | get(this: WorkerInstance) {
  method get (line 72) | get(this: WorkerInstance) {
  method set (line 78) | set(this: WorkerInstance, val) {
  method get (line 104) | get(this: WorkerNode) {

FILE: src/lib/web-worker/worker-css-style-declaration.ts
  method constructor (line 20) | constructor(winId: WinId, instanceId: InstanceId, applyPath: ApplyPath, ...
  method setProperty (line 46) | setProperty(...args: string[]) {
  method getPropertyValue (line 52) | getPropertyValue(propName: string) {
  method removeProperty (line 55) | removeProperty(propName: string) {

FILE: src/lib/web-worker/worker-custom-elements.ts
  method define (line 16) | define(tagName: string, Cstr: any, opts: any) {

FILE: src/lib/web-worker/worker-document.ts
  method get (line 30) | get() {
  method get (line 36) | get() {
  method set (line 44) | set(value) {
  method value (line 54) | value(tagName: string) {
  method value (line 98) | value(namespace: string, tagName: string) {
  method value (line 115) | value(text: string) {
  method get (line 131) | get() {
  method get (line 140) | get() {
  method get (line 146) | get() {
  method value (line 152) | value(tagName: string) {
  method get (line 165) | get() {
  method get (line 171) | get() {
  method get (line 177) | get() {
  method get (line 183) | get() {
  method get (line 189) | get() {
  method get (line 214) | get() {
  method set (line 217) | set(url) {
  method get (line 254) | get() {
  method get (line 259) | get() {
  method get (line 273) | get() {

FILE: src/lib/web-worker/worker-element.ts
  method get (line 19) | get() {
  method get (line 24) | get() {
  method get (line 32) | get() {

FILE: src/lib/web-worker/worker-iframe.ts
  method get (line 25) | get() {
  method get (line 31) | get() {
  method get (line 37) | get() {
  method set (line 45) | set(src: string) {
  constant ATTR_REGEXP_STR (line 93) | const ATTR_REGEXP_STR = `((?:\\w|-)+(?:=(?:(?:\\w|-)+|'[^']*'|"[^"]*")?)...
  constant SCRIPT_TAG_REGEXP (line 94) | const SCRIPT_TAG_REGEXP = new RegExp(`<script\\s*((${ATTR_REGEXP_STR}\\s...
  constant ATTR_REGEXP (line 95) | const ATTR_REGEXP = new RegExp(ATTR_REGEXP_STR, 'mg');
  function replaceScriptWithPartytownScript (line 96) | function replaceScriptWithPartytownScript(text: string): string {

FILE: src/lib/web-worker/worker-image.ts
  type HTMLImageElementEvents (line 7) | type HTMLImageElementEvents = 'load' | 'error';
  method constructor (line 17) | constructor() {
  method src (line 25) | get src() {
  method src (line 28) | set src(src: string) {
  method getAttribute (line 51) | getAttribute(name: string): string | null {
  method setAttribute (line 56) | setAttribute(name: string, value: string): void {
  method hasAttribute (line 63) | hasAttribute(name: string): boolean {
  method removeAttribute (line 67) | removeAttribute(name: string): void {
  method toggleAttribute (line 71) | toggleAttribute(name: string, force?: boolean): boolean {
  method addEventListener (line 96) | addEventListener(eventName: HTMLImageElementEvents, cb: EventHandler) {
  method removeEventListener (line 105) | removeEventListener(eventName: HTMLImageElementEvents, cb: EventHandler) {
  method onload (line 114) | get onload() {
  method onload (line 117) | set onload(cb: EventHandler) {
  method onerror (line 121) | get onerror() {
  method onerror (line 124) | set onerror(cb: EventHandler) {

FILE: src/lib/web-worker/worker-location.ts
  function forwardLocationChange (line 3) | function forwardLocationChange(

FILE: src/lib/web-worker/worker-named-node-map.ts
  method constructor (line 14) | constructor(winId: WinId, instanceId: InstanceId, applyPath: ApplyPath) {
  function method (line 41) | function method(this: WorkerInstance, applyPath: ApplyPath, ...args: any...
  constant NAMED_NODE_MAP_HANDLERS (line 45) | const NAMED_NODE_MAP_HANDLERS: Record<

FILE: src/lib/web-worker/worker-navigator.ts
  method set (line 43) | set(_, propName, propValue) {
  method get (line 47) | get(target, prop) {

FILE: src/lib/web-worker/worker-node.ts
  method appendChild (line 38) | appendChild(node: WorkerNode) {
  method href (line 42) | get href() {
  method href (line 47) | set href(_: any) {}
  method insertBefore (line 49) | insertBefore(newNode: WorkerNode, referenceNode: Node | null) {
  method nodeName (line 103) | get nodeName() {
  method nodeType (line 107) | get nodeType() {
  method ownerDocument (line 111) | get ownerDocument(): Document {

FILE: src/lib/web-worker/worker-performance.ts
  method now (line 11) | now() {

FILE: src/lib/web-worker/worker-script.ts
  method get (line 15) | get() {
  method set (line 18) | set(url: string) {
  method get (line 44) | get() {
  method set (line 47) | set(type: string) {
  method get (line 62) | get() {
  method set (line 74) | set(scriptContent: string) {

FILE: src/lib/web-worker/worker-serialization.ts
  class CustomError (line 281) | class CustomError extends Error {
    method constructor (line 282) | constructor(errorObject: Error) {
  class NodeList (line 290) | class NodeList {
    method constructor (line 293) | constructor(nodes: WorkerNode[]) {
    method entries (line 296) | entries() {
    method forEach (line 299) | forEach(cb: (value: Node, index: number) => void, thisArg?: any) {
    method item (line 302) | item(index: number) {
    method keys (line 305) | keys() {
    method length (line 308) | get length() {
    method values (line 311) | values() {
  method [Symbol.iterator] (line 314) | [Symbol.iterator]() {
  method constructor (line 327) | constructor(serializedAttr: SerializedAttr) {
  method nodeName (line 331) | get nodeName() {
  method nodeType (line 334) | get nodeType() {

FILE: src/lib/web-worker/worker-src-element.ts
  method value (line 9) | value(...args: any[]) {
  method get (line 25) | get() {
  method set (line 29) | set(cb) {
  method get (line 34) | get() {
  method set (line 38) | set(cb) {
  method value (line 44) | value(attrName: string) {
  method value (line 53) | value(attrName: string, attrValue: any) {

FILE: src/lib/web-worker/worker-storage.ts
  method getItem (line 12) | getItem(key) {
  method setItem (line 20) | setItem(key, value) {
  method removeItem (line 28) | removeItem(key) {
  method key (line 36) | key(index) {
  method clear (line 44) | clear() {
  method length (line 52) | get length() {
  method get (line 62) | get(target, key: string) {
  method set (line 69) | set(target, key: string, value: string): boolean {
  method has (line 73) | has(target, key: PropertyKey | string): boolean {
  method deleteProperty (line 82) | deleteProperty(target, key: string): boolean {

FILE: src/lib/web-worker/worker-style.ts
  method constructor (line 13) | constructor(ownerNode: WorkerNode) {
  method cssRules (line 17) | get cssRules() {
  method insertRule (line 39) | insertRule(ruleText: string, index: number | undefined) {
  method deleteRule (line 59) | deleteRule(index: number) {
  method type (line 66) | get type() {
  method get (line 75) | get() {

FILE: src/lib/web-worker/worker-window.ts
  method constructor (line 100) | constructor(
  method assign (line 119) | assign() {
  method reload (line 122) | reload() {
  method replace (line 125) | replace() {
  method constructor (line 156) | constructor() {
  method body (line 476) | get body() {
  method document (line 480) | get document() {
  method documentElement (line 484) | get documentElement() {
  method fetch (line 488) | fetch(input: string | URL | Request, init: any) {
  method frames (line 493) | get frames() {
  method frameElement (line 499) | get frameElement() {
  method globalThis (line 510) | get globalThis() {
  method head (line 514) | get head() {
  method length (line 518) | get length() {
  method location (line 523) | get location() {
  method location (line 526) | set location(loc: any) {
  method Image (line 530) | get Image() {
  method navigator (line 534) | get navigator() {
  method origin (line 538) | get origin() {
  method origin (line 541) | set origin(_) {}
  method parent (line 543) | get parent(): any {
  method postMessage (line 552) | postMessage(...args: any[]) {
  method self (line 566) | get self() {
  method top (line 570) | get top(): any {
  method window (line 579) | get window() {
  method XMLHttpRequest (line 583) | get XMLHttpRequest() {
  method constructor (line 612) | constructor(winId: WinId, instanceId: InstanceId, applyPath?: ApplyPath,...

FILE: src/react/snippet.tsx
  type PartytownProps (line 12) | interface PartytownProps extends PartytownConfig {}
  type PartytownDocument (line 61) | interface PartytownDocument extends Document {

FILE: src/utils/copy-lib-files.ts
  function libDirPath (line 12) | function libDirPath(opts?: LibDirOptions) {
  function copyLibFiles (line 36) | async function copyLibFiles(dest: string, opts?: CopyLibFilesOptions) {
  function copyLibDir (line 51) | async function copyLibDir(srcDir: string, destDir: string, opts: CopyLib...
  type CopyLibFilesOptions (line 80) | interface CopyLibFilesOptions {
  type LibDirOptions (line 91) | interface LibDirOptions {

FILE: src/utils/rollup.ts
  type PartytownRollupOptions (line 6) | interface PartytownRollupOptions {
  function partytownRollup (line 25) | function partytownRollup(opts?: PartytownRollupOptions) {

FILE: src/utils/vite.ts
  type PartytownViteOptions (line 9) | interface PartytownViteOptions extends PartytownRollupOptions {}
  function partytownVite (line 20) | function partytownVite(opts: PartytownViteOptions) {

FILE: tests/benchmarks/run.cjs
  function runBenchmark (line 21) | async function runBenchmark(browserType, isBaseline, label) {

FILE: tests/integrations/clarity/clarity.bundle.js
  method track (line 5) | get track () {
  method start (line 8) | get start () {
  method queue (line 11) | get queue () {
  method stop (line 14) | get stop () {
  method data (line 20) | get data () {
  method start (line 23) | get start () {
  method check (line 26) | get check () {
  method trigger (line 29) | get trigger () {
  method compute (line 32) | get compute () {
  method stop (line 35) | get stop () {
  method data (line 41) | get data () {
  method updates (line 44) | get updates () {
  method start (line 47) | get start () {
  method stop (line 50) | get stop () {
  method log (line 53) | get log () {
  method compute (line 56) | get compute () {
  method reset (line 59) | get reset () {
  method data (line 65) | get data () {
  method callback (line 68) | get callback () {
  method start (line 71) | get start () {
  method userAgentData (line 74) | get userAgentData () {
  method stop (line 77) | get stop () {
  method metadata (line 80) | get metadata () {
  method id (line 83) | get id () {
  method consent (line 86) | get consent () {
  method clear (line 89) | get clear () {
  method save (line 92) | get save () {
  method data (line 98) | get data () {
  method start (line 101) | get start () {
  method stop (line 104) | get stop () {
  method envelope (line 107) | get envelope () {
  function api (line 129) | function api (method) {
  function start$E (line 137) | function start$E () {
  function time (line 141) | function time (ts) {
  function stop$B (line 149) | function stop$B () {
  function hash (line 155) | function hash (input) {
  function start$D (line 175) | function start$D () {
  function reset$o (line 180) | function reset$o () {
  function track$7 (line 215) | function track$7 (event, x, y) {
  function activity (line 237) | function activity (t) {
  function visibility (line 241) | function visibility (t, visible) {
  function compute$c (line 249) | function compute$c () {
  function stop$A (line 255) | function stop$A () {
  method state (line 261) | get state () {
  function event (line 274) | function event (key, value) {
  function start$C (line 292) | function start$C () {
  function stop$z (line 298) | function stop$z () {
  function count$1 (line 303) | function count$1 (metric, increment) {
  function sum (line 317) | function sum (metric, value) {
  function max (line 330) | function max (metric, value) {
  function compute$b (line 342) | function compute$b () {
  function reset$n (line 346) | function reset$n () {
  function setTimeout (line 350) | function setTimeout (handler, timeout, event) {
  function clearTimeout (line 354) | function clearTimeout (handle) {
  function start$B (line 363) | function start$B () {
  function reset$m (line 368) | function reset$m () {
  function ping (line 376) | function ping () {
  function stop$y (line 387) | function stop$y () {
  method data (line 395) | get data () {
  function start$A (line 404) | function start$A () {
  function stop$x (line 408) | function stop$x () {
  function track$6 (line 412) | function track$6 (event, time) {
  function compute$a (line 426) | function compute$a () {
  function reset$l (line 430) | function reset$l () {
  method data (line 436) | get data () {
  function start$z (line 447) | function start$z () {
  function upgrade (line 454) | function upgrade (key) {
  function stop$w (line 466) | function stop$w () {
  method data (line 472) | get data () {
  function start$y (line 481) | function start$y () {
  function set (line 485) | function set (variable, value) {
  function identify (line 490) | function identify (userId, sessionId, pageId) {
  function log$2 (line 502) | function log$2 (variable, value) {
  function compute$9 (line 520) | function compute$9 () {
  function reset$k (line 524) | function reset$k () {
  function stop$v (line 528) | function stop$v () {
  method data (line 534) | get data () {
  function __awaiter (line 545) | function __awaiter (thisArg, _arguments, P, generator) {
  function __generator (line 581) | function __generator (thisArg, body) {
  function compress (line 684) | function compress (input) {
  function read (line 720) | function read (stream) {
  function start$x (line 762) | function start$x () {
  function stop$u (line 769) | function stop$u () {
  function compute$8 (line 776) | function compute$8 () {
  function scrub (line 785) | function scrub (value, hint, privacy, mangle) {
  function mangleText (line 826) | function mangleText (value) {
  function mask (line 840) | function mask (value) {
  function mangleToken (line 844) | function mangleToken (value) {
  function redact (line 853) | function redact (value) {
  function mutate (line 881) | function mutate (array, start, end) {
  function pause$1 (line 894) | function pause$1 () {
  function resume$1 (line 902) | function resume$1 () {
  function reset$j (line 912) | function reset$j () {
  function schedule$1 (line 919) | function schedule$1 (task, priority) {
  function run (line 948) | function run () {
  function state$8 (line 972) | function state$8 (timer) {
  function start$w (line 981) | function start$w (timer) {
  function restart$1 (line 985) | function restart$1 (timer) {
  function stop$t (line 996) | function stop$t (timer) {
  function suspend$1 (line 1007) | function suspend$1 (timer) {
  function key (line 1029) | function key (timer) {
  function wait (line 1033) | function wait () {
  function requestIdleCallbackPolyfill (line 1055) | function requestIdleCallbackPolyfill (callback, options) {
  function tokenize (line 1086) | function tokenize (tokens) {
  function reset$i (line 1119) | function reset$i () {
  function start$v (line 1123) | function start$v () {
  function compute$7 (line 1128) | function compute$7 () {
  function end (line 1169) | function end () {
  function encode$4 (line 1173) | function encode$4 (type, timer, ts) {
  function shouldMangle (line 1341) | function shouldMangle (value) {
  function str$1 (line 1346) | function str$1 (input) {
  function attribute (line 1350) | function attribute (key, value, privacy) {
  function start$u (line 1358) | function start$u () {
  function compute$6 (line 1364) | function compute$6 (id) {
  function handler$4 (line 1391) | function handler$4 (entries) {
  function reset$h (line 1423) | function reset$h () {
  function stop$s (line 1427) | function stop$s () {
  function start$t (line 1439) | function start$t () {
  function handler$3 (line 1444) | function handler$3 (error) {
  function encode$3 (line 1469) | function encode$3 (type) {
  function start$s (line 1502) | function start$s () {
  function log$1 (line 1506) | function log$1 (code, severity, name, message, stack) {
  function stop$r (line 1535) | function stop$r () {
  function regions$1 (line 1544) | function regions$1 (root, value) {
  function metrics (line 1571) | function metrics (root, value) {
  function dimensions (line 1601) | function dimensions (root, value) {
  function regex (line 1630) | function regex (match) {
  function evaluate (line 1636) | function evaluate (variable, type, base) {
  function str (line 1656) | function str (input) {
  function num$2 (line 1660) | function num$2 (text, scale, localize) {
  function selector (line 1690) | function selector (input, beta) {
  function getDomPrefix (line 1755) | function getDomPrefix (prefix) {
  function hasDigits (line 1768) | function hasDigits (value) {
  function start$r (line 1811) | function start$r () {
  function stop$q (line 1816) | function stop$q () {
  function reset$g (line 1820) | function reset$g () {
  function parse (line 1833) | function parse (root, init) {
  function getId (line 1865) | function getId (node, autogen) {
  function add (line 1880) | function add (node, parent, data, source) {
  function update (line 1921) | function update (node, parent, data, source) {
  function sameorigin (line 1967) | function sameorigin (node) {
  function iframe (line 1982) | function iframe (node) {
  function getPrivacy (line 1987) | function getPrivacy (node, data, parent, privacy) {
  function diff (line 2060) | function diff (a, b, field) {
  function position (line 2077) | function position (parent, child) {
  function updateSelector (line 2090) | function updateSelector (value) {
  function getNode (line 2111) | function getNode (id) {
  function getValue (line 2118) | function getValue (id) {
  function get (line 2125) | function get (node) {
  function lookup (line 2130) | function lookup (hash) {
  function has (line 2134) | function has (node) {
  function updates$2 (line 2138) | function updates$2 () {
  function remove (line 2150) | function remove (id, source) {
  function size (line 2159) | function size (value, parent) {
  function getPreviousId (line 2172) | function getPreviousId (node) {
  function track$5 (line 2181) | function track$5 (id, source, changed, parentChanged) {
  function start$q (line 2221) | function start$q () {
  function observe$b (line 2230) | function observe$b (node, name) {
  function exists (line 2245) | function exists (node) {
  function track$4 (line 2249) | function track$4 (id, event) {
  function compute$5 (line 2267) | function compute$5 () {
  function handler$2 (line 2288) | function handler$2 (entries) {
  function process$6 (line 2335) | function process$6 (n, d, s, v) {
  function clone (line 2349) | function clone (r) {
  function reset$f (line 2361) | function reset$f () {
  function stop$p (line 2365) | function stop$p () {
  function offset (line 2377) | function offset (element) {
  function start$p (line 2394) | function start$p () {
  function observe$a (line 2398) | function observe$a (root) {
  function handler$1 (line 2402) | function handler$1 (event, root, evt) {
  function text (line 2455) | function text (element) {
  function reaction (line 2466) | function reaction (element) {
  function layout$1 (line 2476) | function layout$1 (element) {
  function context (line 2499) | function context (a) {
  function reset$e (line 2513) | function reset$e () {
  function stop$o (line 2517) | function stop$o () {
  function start$o (line 2523) | function start$o () {
  function observe$9 (line 2527) | function observe$9 (root) {
  function recompute$7 (line 2533) | function recompute$7 (action, evt) {
  function reset$d (line 2542) | function reset$d () {
  function stop$n (line 2546) | function stop$n () {
  function start$n (line 2553) | function start$n () {
  function observe$8 (line 2557) | function observe$8 (root) {
  function recompute$6 (line 2561) | function recompute$6 (evt) {
  function process$5 (line 2591) | function process$5 (event) {
  function reset$c (line 2595) | function reset$c () {
  function stop$m (line 2599) | function stop$m () {
  function start$m (line 2607) | function start$m () {
  function observe$7 (line 2611) | function observe$7 (root) {
  function mouse (line 2623) | function mouse (event, root, evt) {
  function touch (line 2654) | function touch (event, root, evt) {
  function handler (line 2685) | function handler (current) {
  function process$4 (line 2706) | function process$4 (event) {
  function reset$b (line 2710) | function reset$b () {
  function similar$1 (line 2714) | function similar$1 (last, current) {
  function stop$l (line 2723) | function stop$l () {
  function start$l (line 2732) | function start$l () {
  function recompute$5 (line 2737) | function recompute$5 () {
  function reset$a (line 2752) | function reset$a () {
  function stop$k (line 2756) | function stop$k () {
  function start$k (line 2763) | function start$k () {
  function observe$6 (line 2768) | function observe$6 (root) {
  function recompute$4 (line 2774) | function recompute$4 (event) {
  function reset$9 (line 2812) | function reset$9 () {
  function process$3 (line 2816) | function process$3 (event) {
  function similar (line 2820) | function similar (last, current) {
  function stop$j (line 2826) | function stop$j () {
  function start$j (line 2835) | function start$j () {
  function observe$5 (line 2839) | function observe$5 (root) {
  function recompute$3 (line 2844) | function recompute$3 (root) {
  function process$2 (line 2877) | function process$2 (event) {
  function reset$8 (line 2881) | function reset$8 () {
  function stop$i (line 2886) | function stop$i () {
  function start$i (line 2893) | function start$i () {
  function observe$4 (line 2897) | function observe$4 (root) {
  function recompute$2 (line 2901) | function recompute$2 (evt) {
  function reset$7 (line 2906) | function reset$7 () {
  function stop$h (line 2910) | function stop$h () {
  function start$h (line 2916) | function start$h () {
  function recompute$1 (line 2920) | function recompute$1 (evt) {
  function reset$6 (line 2926) | function reset$6 () {
  function stop$g (line 2930) | function stop$g () {
  function start$g (line 2936) | function start$g () {
  function recompute (line 2941) | function recompute () {
  function reset$5 (line 2949) | function reset$5 () {
  function stop$f (line 2953) | function stop$f () {
  function start$f (line 2957) | function start$f () {
  function stop$e (line 2971) | function stop$e () {
  function observe$3 (line 2985) | function observe$3 (root) {
  function ld (line 3005) | function ld (json) {
  function num$1 (line 3060) | function num$1 (input, scale) {
  function processNode (line 3078) | function processNode (node, source) {
  function observe$2 (line 3256) | function observe$2 (root) {
  function getStyleValue (line 3264) | function getStyleValue (style) {
  function getCssRules (line 3273) | function getCssRules (sheet) {
  function getAttributes (line 3292) | function getAttributes (element) {
  function traverse (line 3309) | function traverse (root, timer, source) {
  function start$e (line 3357) | function start$e () {
  function observe$1 (line 3389) | function observe$1 (node) {
  function monitor (line 3407) | function monitor (frame) {
  function stop$d (line 3413) | function stop$d () {
  function active$2 (line 3440) | function active$2 () {
  function handle$1 (line 3444) | function handle$1 (m) {
  function process$1 (line 3454) | function process$1 () {
  function track$3 (line 3529) | function track$3 (m, timer) {
  function names (line 3560) | function names (nodes) {
  function processNodeList (line 3568) | function processNodeList (list, source, timer) {
  function schedule (line 3605) | function schedule (node) {
  function trigger$1 (line 3616) | function trigger$1 () {
  function generate (line 3630) | function generate (target, type) {
  function target (line 3646) | function target (evt) {
  function link (line 3653) | function link (node) {
  function metadata$2 (line 3666) | function metadata$2 (node, event) {
  function encode$2 (line 3682) | function encode$2 (type) {
  function start$d (line 3885) | function start$d () {
  function reset$4 (line 3890) | function reset$4 () {
  function track$2 (line 3894) | function track$2 (time, event, hash, x, y, reaction, context) {
  function compute$4 (line 3916) | function compute$4 () {
  function stop$c (line 3934) | function stop$c () {
  function start$c (line 3949) | function start$c () {
  function queue (line 3960) | function queue (tokens, transmit) {
  function stop$b (line 3997) | function stop$b () {
  function upload (line 4010) | function upload (final) {
  function stringify (line 4060) | function stringify (encoded) {
  function send (line 4068) | function send (payload, zipped, sequence, beacon) {
  function check$3 (line 4111) | function check$3 (xhr, sequence) {
  function done (line 4149) | function done (sequence) {
  function delay (line 4155) | function delay () {
  function response (line 4165) | function response (payload) {
  function encode$1 (line 4177) | function encode$1 (event) {
  function start$b (line 4294) | function start$b () {
  function check$2 (line 4298) | function check$2 (bytes) {
  function trigger (line 4310) | function trigger (reason) {
  function compute$3 (line 4316) | function compute$3 () {
  function stop$a (line 4322) | function stop$a () {
  function start$a (line 4329) | function start$a () {
  function stop$9 (line 4334) | function stop$9 () {
  function log (line 4339) | function log (dimension, value) {
  function compute$2 (line 4358) | function compute$2 () {
  function reset$3 (line 4362) | function reset$3 () {
  function start$9 (line 4370) | function start$9 () {
  function userAgentData (line 4421) | function userAgentData () {
  function stop$8 (line 4446) | function stop$8 () {
  function metadata (line 4452) | function metadata (cb, wait) {
  function id (line 4463) | function id () {
  function consent (line 4469) | function consent () {
  function clear (line 4476) | function clear () {
  function tab (line 4480) | function tab () {
  function save (line 4490) | function save () {
  function supported (line 4507) | function supported (target, api) {
  function track (line 4515) | function track (u, consent) {
  function shortid (line 4534) | function shortid () {
  function session (line 4547) | function session () {
  function num (line 4571) | function num (string, base) {
  function user (line 4578) | function user () {
  function getCookie (line 4608) | function getCookie (key) {
  function setCookie (line 4623) | function setCookie (key, value, time) {
  function start$8 (line 4665) | function start$8 () {
  function stop$7 (line 4681) | function stop$7 () {
  function envelope (line 4685) | function envelope (last) {
  function reset$2 (line 4707) | function reset$2 () {
  function report (line 4711) | function report (e) {
  function measure (line 4737) | function measure (method) {
  function bind (line 4756) | function bind (target, event, listener, capture) {
  function reset$1 (line 4772) | function reset$1 () {
  function start$7 (line 4791) | function start$7 () {
  function check$1 (line 4815) | function check$1 () {
  function compute$1 (line 4823) | function compute$1 () {
  function getCurrentUrl (line 4831) | function getCurrentUrl () {
  function stop$6 (line 4837) | function stop$6 () {
  function start$6 (line 4852) | function start$6 () {
  function stop$5 (line 4861) | function stop$5 () {
  function active (line 4870) | function active () {
  function check (line 4874) | function check () {
  function config (line 4890) | function config (override) {
  function suspend (line 4902) | function suspend () {
  function restart (line 4915) | function restart () {
  function start$5 (line 4920) | function start$5 () {
  function stop$4 (line 4925) | function stop$4 () {
  function start$4 (line 4935) | function start$4 () {
  function discover (line 4942) | function discover () {
  function start$3 (line 4964) | function start$3 () {
  function stop$3 (line 4973) | function stop$3 () {
  function encode (line 4983) | function encode (type) {
  function reset (line 5018) | function reset () {
  function compute (line 5022) | function compute (entry) {
  function start$2 (line 5054) | function start$2 () {
  function observe (line 5069) | function observe () {
  function handle (line 5093) | function handle (entries) {
  function process (line 5097) | function process (entries) {
  function stop$2 (line 5133) | function stop$2 () {
  function host (line 5140) | function host (url) {
  function start$1 (line 5146) | function start$1 () {
  function stop$1 (line 5151) | function stop$1 () {
  function start (line 5163) | function start (config$1) {
  function pause (line 5177) | function pause () {
  function resume (line 5184) | function resume () {
  function stop (line 5191) | function stop () {

FILE: tests/integrations/gtm/gtag.js
  function b (line 906) | function b(r) {
  function Nd (line 1336) | function Nd() {
  function Od (line 1350) | function Od(a, b, c, d, e, f) {
  function Pd (line 1372) | function Pd(a, b) {
  function Qd (line 1384) | function Qd(a, b) {
  function Sd (line 1387) | function Sd(a) {
  function Rd (line 1393) | function Rd(a) {
  function c (line 1429) | function c() {
  function c (line 1441) | function c() {
  function be (line 1456) | function be(a) {
  function b (line 1690) | function b(n) {
  function c (line 1694) | function c(n) {
  function Se (line 1740) | function Se(a) {
  function Te (line 1769) | function Te(a, b) {
  function Ue (line 1774) | function Ue(a) {
  function d (line 1986) | function d(t, v, x) {
  function e (line 1994) | function e(t, v, x, y) {
  function f (line 1998) | function f(t) {
  function b (line 2133) | function b(d) {
  function d (line 2144) | function d(h) {
  function jg (line 2349) | function jg(a, b, c) {
  function kg (line 2364) | function kg(a) {
  function rg (line 2394) | function rg(a, b, c, d) {
  function d (line 2402) | function d(u, t, v) {
  function e (line 2407) | function e(u, t) {
  function pg (line 2446) | function pg(a, b, c) {
  function og (line 2454) | function og(a, b, c) {
  function Hg (line 2520) | function Hg(a, b, c) {
  function Mg (line 2541) | function Mg(a, b, c) {
  function Lg (line 2547) | function Lg(a, b, c) {
  function Kg (line 2552) | function Kg(a) {
  function Pg (line 2572) | function Pg(a, b) {
  function Qg (line 2587) | function Qg() {
  function Sg (line 2591) | function Sg() {
  function Ug (line 2597) | function Ug(a) {
  function fh (line 2688) | function fh(a) {
  function lh (line 2805) | function lh(a, b, c, d) {
  function mh (line 2831) | function mh(a, b) {
  function oh (line 2863) | function oh(a, b, c, d) {
  function nh (line 2869) | function nh(a, b, c) {
  function Ch (line 3021) | function Ch(a, b) {
  function Eh (line 3026) | function Eh(a) {
  function Hh (line 3083) | function Hh(a, b, c, d, e) {
  function Bh (line 3159) | function Bh(a) {
  function Mh (line 3165) | function Mh(a) {
  function Ph (line 3217) | function Ph(a, b) {
  function b (line 3222) | function b(e, f, h) {
  function Rh (line 3243) | function Rh(a, b) {
  function Sh (line 3250) | function Sh(a) {
  function Uh (line 3258) | function Uh(a, b) {
  function Vh (line 3272) | function Vh(a) {
  function Wh (line 3280) | function Wh(a, b, c) {
  function Zh (line 3302) | function Zh(a) {
  function di (line 3371) | function di(a) {
  function hi (line 3408) | function hi(a) {
  function yi (line 3471) | function yi(a) {
  function zi (line 3483) | function zi() {
  function Ai (line 3488) | function Ai(a) {
  function Bi (line 3498) | function Bi() {
  function Mi (line 3618) | function Mi(a) {
  function Ni (line 3633) | function Ni() {
  function a (line 3697) | function a(d) {
  function jj (line 3734) | function jj() {
  function pk (line 3913) | function pk() {}
  function qk (line 3914) | function qk() {}
  function rk (line 3915) | function rk(a, b, c, d) {
  function sk (line 3931) | function sk(a, b, c, d) {
  function tk (line 4010) | function tk(a, b, c) {
  function uk (line 4025) | function uk(a, b, c) {
  function vk (line 4032) | function vk(a) {
  function wk (line 4035) | function wk(a, b) {
  function yk (line 4066) | function yk(a, b) {
  function xk (line 4080) | function xk(a, b) {
  function Bk (line 4135) | function Bk(a) {
  function Dk (line 4140) | function Dk(a, b) {
  function Ck (line 4146) | function Ck() {
  function Ek (line 4154) | function Ek(a) {
  function Fk (line 4158) | function Fk(a, b) {
  function Hk (line 4163) | function Hk(a, b) {
  function Ik (line 4171) | function Ik(a, b) {
  function Jk (line 4174) | function Jk() {
  function Ok (line 4209) | function Ok(a, b) {
  function gl (line 4419) | function gl() {
  function ml (line 4508) | function ml(a) {
  function ll (line 4513) | function ll() {
  function ol (line 4523) | function ol() {
  function nl (line 4529) | function nl(a) {
  function wl (line 4554) | function wl(a) {
  function xl (line 4578) | function xl(a) {
  function yl (line 4657) | function yl(a, b) {
  function Al (line 4662) | function Al(a, b, c, d) {
  function Bl (line 4672) | function Bl(a, b) {
  function Ll (line 4703) | function Ll() {
  function Ml (line 4713) | function Ml() {
  function sn (line 4757) | function sn() {
  function d (line 5091) | function d() {
  function Vn (line 5130) | function Vn() {
  function Xn (line 5139) | function Xn(a, b) {
  function Zn (line 5146) | function Zn(a, b, c) {
  function $n (line 5158) | function $n(a, b) {
  function ao (line 5173) | function ao(a) {
  function bo (line 5176) | function bo(a) {
  function lo (line 5260) | function lo(a, b) {
  function mo (line 5268) | function mo(a) {
  function no (line 5273) | function no() {
  function b (line 5313) | function b() {
  function Qo (line 5469) | function Qo(a) {
  function Ro (line 5480) | function Ro() {
  function So (line 5490) | function So() {
  function To (line 5578) | function To() {
  function Er (line 6004) | function Er() {
  function d (line 6281) | function d(y, w) {
  function e (line 6511) | function e(k) {
  function Ls (line 6914) | function Ls(a) {
  function Ss (line 6954) | function Ss(a, b) {
  function a (line 6974) | function a(l) {
  function b (line 6979) | function b(l, n) {
  function c (line 6985) | function c(l, n) {
  function d (line 6991) | function d(l, n, p) {
  function e (line 7004) | function e() {
  function f (line 7028) | function f(l, n) {
  function a (line 7079) | function a() {
  function b (line 7087) | function b(w) {
  function c (line 7095) | function c() {
  function d (line 7106) | function d() {
  function e (line 7112) | function e(w, z, B, C) {
  function f (line 7143) | function f() {
  function h (line 7155) | function h() {
  function k (line 7177) | function k(w, z, B) {
  function l (line 7195) | function l(w) {
  function n (line 7198) | function n(w) {
  function a (line 7358) | function a() {
  function b (line 7362) | function b(t, v) {
  function c (line 7367) | function c(t, v) {
  function d (line 7390) | function d(t, v) {
  function e (line 7416) | function e(t) {
  function f (line 7427) | function f(t, v) {
  function h (line 7557) | function h(t) {
  function k (line 7567) | function k(t) {
  function l (line 7577) | function l(t, v, x) {
  function n (line 7592) | function n(t) {
  function a (line 7660) | function a(u, t, v) {
  function b (line 7664) | function b(u, t, v, x, y) {
  function c (line 7678) | function c(u, t, v, x) {
  function d (line 7682) | function d(u, t) {
  function e (line 7712) | function e(u) {
  function f (line 7716) | function f(u, t, v, x) {
  function h (line 7739) | function h(u) {
  function k (line 7749) | function k(u) {
  function l (line 7755) | function l(u, t, v, x) {
  function a (line 7851) | function a(d) {
  function b (line 7860) | function b(d) {
  function c (line 7863) | function c(d) {
  function a (line 7945) | function a() {
  function b (line 8008) | function b(c, d, e) {
  function Xs (line 8063) | function Xs() {
  function Ys (line 8069) | function Ys() {

FILE: tests/integrations/gtm/gtm.js
  function n (line 93) | function n(h, m) {
  function n (line 251) | function n() {}
  function v (line 252) | function v(e) {
  function w (line 255) | function w(e, f, a) {
  function q (line 260) | function q(e, f, a) {
  function t (line 263) | function t(e, f) {
  function B (line 269) | function B(e, f) {
  function A (line 276) | function A(e) {
  function e (line 306) | function e(a, b, c) {
  function f (line 314) | function f(a, b) {
  function c (line 479) | function c() {
  function e (line 508) | function e() {
  function f (line 513) | function f(d, k, g) {
  function fb (line 773) | function fb() {
  function gb (line 781) | function gb(a) {
  function yb (line 855) | function yb(a, b, c) {
  function b (line 1167) | function b(u) {
  function ye (line 1667) | function ye() {
  function ze (line 1685) | function ze(a, b, c, d, e, f) {
  function Ae (line 1709) | function Ae(a, b) {
  function Be (line 1723) | function Be(a, b) {
  function De (line 1726) | function De(a) {
  function Ce (line 1732) | function Ce(a) {
  function c (line 1777) | function c() {
  function c (line 1789) | function c() {
  function Ne (line 1804) | function Ne() {}
  function Oe (line 1805) | function Oe() {}
  function Pe (line 1806) | function Pe(a) {
  function b (line 1953) | function b(d) {
  function d (line 1964) | function d(g) {
  function b (line 2125) | function b(n) {
  function c (line 2129) | function c(n) {
  function Hg (line 2188) | function Hg(a) {
  function Og (line 2218) | function Og(a, b, c, d) {
  function d (line 2226) | function d(t, p, v) {
  function e (line 2231) | function e(t, p) {
  function Mg (line 2270) | function Mg(a, b, c) {
  function Lg (line 2278) | function Lg(a, b, c) {
  function bh (line 2348) | function bh(a, b, c) {
  function hh (line 2370) | function hh(a, b, c, d) {
  function gh (line 2376) | function gh(a, b, c) {
  function fh (line 2388) | function fh(a) {
  function kh (line 2408) | function kh(a, b) {
  function lh (line 2423) | function lh() {
  function nh (line 2427) | function nh() {
  function ph (line 2433) | function ph(a) {
  function qh (line 2451) | function qh(a) {
  function wh (line 2547) | function wh() {
  function Fh (line 2558) | function Fh(a) {
  function Hh (line 2581) | function Hh(a, b) {
  function Kh (line 2600) | function Kh(a, b) {
  function Lh (line 2609) | function Lh(a, b) {
  function Mh (line 2622) | function Mh() {
  function Nh (line 2625) | function Nh() {
  function Qh (line 2723) | function Qh(a, b, c, d) {
  function Rh (line 2749) | function Rh(a, b) {
  function Th (line 2781) | function Th(a, b, c, d) {
  function Sh (line 2787) | function Sh(a, b, c) {
  function uh (line 2812) | function uh(a) {
  function vh (line 2833) | function vh(a) {
  function gi (line 2935) | function gi(a, b) {
  function ii (line 2940) | function ii(a) {
  function li (line 2997) | function li(a, b, c, d, e) {
  function fi (line 3073) | function fi(a) {
  function qi (line 3079) | function qi(a) {
  function ti (line 3131) | function ti(a, b) {
  function b (line 3136) | function b(e, f, g) {
  function vi (line 3157) | function vi(a, b) {
  function wi (line 3164) | function wi(a) {
  function Vi (line 3174) | function Vi(a) {
  function Wi (line 3189) | function Wi() {
  function a (line 3252) | function a(d) {
  function oj (line 3289) | function oj() {
  function tk (line 3453) | function tk(a, b, c, d) {
  function uk (line 3469) | function uk(a, b, c, d) {
  function vk (line 3547) | function vk(a, b, c) {
  function wk (line 3562) | function wk(a, b, c) {
  function xk (line 3569) | function xk(a) {
  function yk (line 3572) | function yk(a, b) {
  function Ak (line 3602) | function Ak(a, b) {
  function zk (line 3616) | function zk(a, b) {
  function Dk (line 3667) | function Dk(a) {
  function Fk (line 3672) | function Fk(a, b) {
  function Ek (line 3678) | function Ek() {
  function Gk (line 3686) | function Gk(a) {
  function Hk (line 3690) | function Hk(a, b) {
  function Jk (line 3695) | function Jk(a, b) {
  function Kk (line 3703) | function Kk(a, b) {
  function Lk (line 3706) | function Lk() {
  function Mk (line 3710) | function Mk() {
  function Sk (line 3746) | function Sk(a, b) {
  function Uk (line 3754) | function Uk() {
  function il (line 3948) | function il() {
  function kl (line 4025) | function kl(a) {
  function jl (line 4030) | function jl() {
  function ml (line 4035) | function ml() {
  function ll (line 4041) | function ll(a) {
  function Hl (line 4104) | function Hl(a) {
  function dm (line 4149) | function dm() {
  function em (line 4154) | function em(a, b) {
  function Wn (line 4185) | function Wn() {
  function so (line 4423) | function so(a, b) {
  function to (line 4431) | function to(a) {
  function uo (line 4436) | function uo() {
  function yo (line 4523) | function yo(a, b) {
  function Do (line 4547) | function Do() {
  function ep (line 4592) | function ep(a) {
  function fp (line 4603) | function fp(a) {
  function gp (line 4612) | function gp() {
  function ip (line 4699) | function ip() {
  function mp (line 4740) | function mp(a) {
  function Cq (line 4868) | function Cq(a, b) {
  function Eq (line 4875) | function Eq(a, b, c) {
  function Fq (line 4886) | function Fq(a, b) {
  function Gq (line 4901) | function Gq(a) {
  function Hq (line 4904) | function Hq(a) {
  function js (line 4984) | function js() {
  function it (line 5024) | function it(a) {
  function rt (line 5044) | function rt(a, b) {}
  function a (line 5166) | function a(d, e, f, g) {

FILE: tests/integrations/hubspot/analytics-20632911.js
  function n (line 368) | function n(t, e) {
  function i (line 1525) | function i(t) {
  function nt (line 1690) | function nt(t, e, n, r) {
  function rt (line 1750) | function rt() {
  function st (line 1758) | function st(t) {
  function ot (line 1762) | function ot(t) {
  function ct (line 1777) | function ct(t, e) {
  function at (line 1780) | function at(t, e) {
  function ht (line 1791) | function ht(t) {
  function ut (line 1796) | function ut(t) {
  function lt (line 1802) | function lt(t) {
  function gt (line 2343) | function gt() {}
  function pt (line 2346) | function pt(t, e) {
  function ft (line 2380) | function ft(t) {
  function dt (line 2384) | function dt(t, e, i) {
  function kt (line 2410) | function kt(t) {
  function mt (line 2418) | function mt(t, e, i, n, r) {
  function yt (line 2426) | function yt(t, e, i, n, r, s) {
  function vt (line 2463) | function vt(t) {
  function Ct (line 2516) | function Ct(t, e) {
  function Tt (line 2587) | function Tt(t, e, i) {
  function wt (line 2591) | function wt(t, e, n, s) {
  function xt (line 2664) | function xt(t) {
  function loadHstc (line 2837) | function loadHstc(t, e) {

FILE: tests/integrations/hubspot/banner-20632911.js
  function i (line 36) | function i(n) {
  function M (line 194) | function M(e, t) {
  function D (line 197) | function D(e, t) {
  function T (line 206) | function T(e, t, i) {
  function e (line 212) | function e(t, i, n, o, a, r, s) {
  function ee (line 364) | function ee(e, t, i) {
  function e (line 381) | function e(t, i, n) {
  function Ae (line 656) | function Ae(e) {
  function Ne (line 661) | function Ne(e) {
  function Se (line 665) | function Se(e) {
  function Ee (line 670) | function Ee(e) {
  function Be (line 673) | function Be(e, t) {
  function ze (line 677) | function ze(e, t) {
  function Le (line 686) | function Le(e) {
  function je (line 698) | function je(e, t, i, n) {
  function Pe (line 715) | function Pe(e, t, i) {
  function Oe (line 731) | function Oe(e, t, i) {
  function Ge (line 830) | function Ge(e) {
  function Ue (line 835) | function Ue(e, t, i, n) {
  function He (line 845) | function He(e, t, i, n) {
  function We (line 860) | function We(e, t) {
  function e (line 866) | function e(t) {
  function e (line 1075) | function e(t, i) {
  function e (line 1191) | function e(t, i) {
  function e (line 1232) | function e() {
  function e (line 1316) | function e(t, i) {
  function e (line 1387) | function e(t) {
  function e (line 1416) | function e(t, i) {
  function e (line 1467) | function e(t, i) {
  function e (line 1779) | function e(t) {
  function e (line 1953) | function e(t, i) {

FILE: tests/integrations/hubspot/collectedforms.js
  function E (line 112) | function E(t, e) {
  function n (line 860) | function n(r) {
  function n (line 1120) | function n() {}
  function r (line 1121) | function r(t, e) {
  function i (line 1126) | function i(t) {
  function o (line 1135) | function o(t, e) {
  function u (line 1154) | function u(t, e) {
  function a (line 1177) | function a(t, e) {
  function s (line 1182) | function s(t) {
  function c (line 1191) | function c(t, e, n) {
  function f (line 1196) | function f(t, e) {
  function r (line 1528) | function r(t, e) {
  function e (line 1547) | function e() {
  function r (line 1613) | function r(t, e) {
  function i (line 1622) | function i(t, e, n) {
  function e (line 1637) | function e() {
  function n (line 1640) | function n() {
  function r (line 1646) | function r(t) {
  function s (line 1688) | function s(t, e) {
  function c (line 1693) | function c(t, e, n) {
  function f (line 1709) | function f(t) {
  function l (line 1714) | function l(t, e) {
  function d (line 1718) | function d(t, e) {
  function i (line 1911) | function i() {
  function t (line 1954) | function t(e) {
  function e (line 1995) | function e(r) {
  function i (line 2008) | function i(t) {
  function r (line 2034) | function r(t) {
  function i (line 2037) | function i(t) {
  function o (line 2040) | function o(t) {
  function u (line 2043) | function u(t) {
  function a (line 2048) | function a(t) {
  function s (line 2051) | function s(t) {
  function c (line 2054) | function c(t) {
  function f (line 2057) | function f(t) {
  function l (line 2060) | function l(t) {
  function d (line 2063) | function d(t) {
  function h (line 2066) | function h(t) {
  function p (line 2069) | function p(t) {
  function b (line 2072) | function b(t) {
  function m (line 2075) | function m(t) {
  function v (line 2078) | function v(t) {
  function g (line 2081) | function g() {
  function y (line 2091) | function y(t, e) {
  function O (line 2099) | function O() {
  function j (line 2106) | function j() {
  function w (line 2115) | function w(t, e, n) {
  function i (line 2172) | function i(t) {
  function r (line 2218) | function r(t) {
  function r (line 2257) | function r() {
  function i (line 2276) | function i(t) {
  function i (line 2342) | function i(t, e) {
  function o (line 2345) | function o() {
  function t (line 2605) | function t(t) {
  function n (line 2730) | function n(t) {
  function i (line 2741) | function i(t) {
  function o (line 2785) | function o() {
  function u (line 2788) | function u() {
  function a (line 2803) | function a(t) {
  function s (line 2819) | function s(t) {
  function h (line 2839) | function h() {
  function p (line 2846) | function p() {
  function b (line 2868) | function b(t, e) {
  function m (line 2881) | function m() {}
  function e (line 2916) | function e() {
  function t (line 2986) | function t() {
  function t (line 3055) | function t() {
  function r (line 3141) | function r(t, e, n) {
  function e (line 3160) | function e() {
  function t (line 3249) | function t(e) {
  function e (line 3309) | function e() {
  function s (line 3398) | function s(t) {
  function c (line 3407) | function c(t) {
  function o (line 3459) | function o(t, e, n) {
  function u (line 3465) | function u(t) {
  function a (line 3473) | function a(t, e, n) {
  function s (line 3481) | function s(t) {
  function c (line 3496) | function c(t) {
  function f (line 3515) | function f(t, e) {
  function l (line 3522) | function l(t) {
  function d (line 3525) | function d(t) {
  function h (line 3541) | function h(t, e, n) {
  function p (line 3551) | function p(t) {
  function a (line 3568) | function a(t, e) {
  function i (line 3611) | function i(t) {
  function c (line 3633) | function c(t) {
  function f (line 3645) | function f(t) {
  function l (line 3648) | function l(t) {
  function s (line 3678) | function s(t, e) {
  function c (line 3685) | function c(t) {
  function e (line 3727) | function e() {
  function t (line 3944) | function t() {
  function t (line 4090) | function t() {
  function t (line 4164) | function t() {
  function t (line 4247) | function t() {
  function t (line 4315) | function t() {
  function t (line 4384) | function t() {
  function t (line 4458) | function t(e) {
  function c (line 4658) | function c(t) {
  function d (line 4667) | function d(t) {
  function m (line 4685) | function m(t) {
  function t (line 4693) | function t() {
  function p (line 4804) | function p(t) {
  function b (line 4808) | function b(t) {
  function m (line 4815) | function m(t) {
  function y (line 4839) | function y(t, e) {
  function h (line 4889) | function h(t) {
  function p (line 4902) | function p(t, e) {
  function b (line 4907) | function b(t) {
  function t (line 4923) | function t(e, n) {
  function t (line 5049) | function t(e, n) {
  function u (line 5116) | function u() {
  function t (line 5128) | function t() {
  function r (line 5250) | function r(t, e) {
  function i (line 5265) | function i(t, e) {

FILE: tests/integrations/hubspot/leadflows.js
  function a (line 459) | function a(e) {
  function a (line 494) | function a(e) {
  function a (line 749) | function a(e) {
  function bindToWindowOnError (line 925) | function bindToWindowOnError(e) {
  function t (line 936) | function t(e) {
  function i (line 939) | function i(i, l, o) {
  function l (line 946) | function l(e, a) {
  function o (line 1051) | function o(e) {
  function d (line 1062) | function d(e, a) {
  function s (line 1072) | function s(e) {
  function a (line 1091) | function a(e) {
  function n (line 1095) | function n(e) {
  function t (line 1102) | function t(a) {
  function i (line 1118) | function i(e, a) {
  function l (line 1132) | function l(e, a) {
  function o (line 1135) | function o(e, a) {
  function d (line 1138) | function d(a, n, i, l) {
  function s (line 1156) | function s(a, n, i, l) {
  function r (line 1257) | function r(e, a) {
  function f (line 1275) | function f(e) {
  function u (line 1288) | function u(e, a) {
  function m (line 1292) | function m(e, a) {
  function c (line 1296) | function c(e, a, n, t) {
  function defineProperties (line 1340) | function defineProperties(e, a) {
  function d (line 1399) | function d(e) {
  function s (line 1435) | function s(e) {
  function r (line 1463) | function r(e) {
  function f (line 1495) | function f(e) {
  function a (line 2310) | function a(e) {
  function succeed (line 3189) | function succeed(e) {
  function handleReadyState (line 3194) | function handleReadyState(e, a, n) {
  function setHeaders (line 3204) | function setHeaders(e, a) {
  function setCredentials (line 3213) | function setCredentials(e, a) {
  function urlappend (line 3218) | function urlappend(e, a) {
  function handleJsonp (line 3221) | function handleJsonp(e, a, n, t) {
  function getRequest (line 3265) | function getRequest(e, a) {
  function Reqwest (line 3297) | function Reqwest(e, a) {
  function setType (line 3302) | function setType(e) {
  function init (line 3313) | function init(o, fn) {
  function reqwest (line 3442) | function reqwest(e, a) {
  function normalize (line 3445) | function normalize(e) {
  function serial (line 3448) | function serial(e, a) {
  function eachFormElement (line 3479) | function eachFormElement() {
  function serializeQueryString (line 3496) | function serializeQueryString() {
  function serializeHash (line 3499) | function serializeHash() {
  function buildParams (line 3540) | function buildParams(e, a, n, t) {
  function a (line 3578) | function a(e) {
  function n (line 3582) | function n(e) {
  function t (line 3627) | function t(a) {
  function i (line 3642) | function i(e, a) {
  function o (line 3658) | function o(e, a) {
  function d (line 3661) | function d(e, a) {
  function r (line 3665) | function r(e, a, n, i) {
  function f (line 3685) | function f(a, n, i, l) {
  function u (line 3793) | function u(e, a) {
  function m (line 3815) | function m(e, a, n) {
  function h (line 3820) | function h(e) {
  function _ (line 3833) | function _(e, a) {
  function b (line 3837) | function b(e, a, n) {
  function g (line 3841) | function g(e, a, n, t) {
  function j (line 3845) | function j(a, n) {
  function M (line 3848) | function M(e) {
  function e (line 4073) | function e(e) {

FILE: tests/integrations/hubspot/shell.js
  function a (line 60) | function a(o, s) {
  function i (line 193) | function i() {
  function a (line 201) | function a(e) {
  function r (line 204) | function r(e) {
  function o (line 214) | function o(e, t) {
  function s (line 217) | function s(e, t) {
  function l (line 231) | function l(e) {
  function c (line 235) | function c(e, t, n, i) {
  function u (line 258) | function u(e, t) {
  function p (line 271) | function p(e, t) {
  function d (line 290) | function d(e, t, n, i) {
  function i (line 384) | function i(e, t) {
  function i (line 500) | function i() {
  function i (line 537) | function i(e) {
  function a (line 540) | function a(e) {
  function r (line 544) | function r(e) {
  function o (line 547) | function o(e, t) {
  function s (line 550) | function s() {
  function l (line 553) | function l(e, t, n) {
  function c (line 556) | function c(e, t, n) {
  function u (line 559) | function u(e, t) {
  function p (line 567) | function p() {
  function d (line 576) | function d(e) {
  function f (line 582) | function f(e, t, n) {
  function m (line 585) | function m(e, t, n) {
  function h (line 588) | function h(e, t, n) {
  function g (line 595) | function g(e) {
  function v (line 598) | function v(e, t, n) {
  function i (line 692) | function i(e, t, n) {
  function i (line 737) | function i(e, t) {
  function i (line 826) | function i(e, t) {
  function i (line 889) | function i(e) {
  function i (line 1191) | function i() {
  function a (line 1203) | function a(e, t, n) {
  function r (line 1216) | function r(e, t, n) {
  function i (line 1269) | function i(e) {
  function a (line 1272) | function a(e) {
  function r (line 1275) | function r(e) {
  function o (line 1278) | function o(e, t) {
  function s (line 1286) | function s(e, t, n) {
  function l (line 1291) | function l(e, t) {
  function c (line 1294) | function c(e) {
  function u (line 1303) | function u(e) {
  function p (line 1307) | function p(e) {
  function d (line 1314) | function d(e) {
  function i (line 1345) | function i(e, t, n) {
  function a (line 1349) | function a(e, t, n) {
  function r (line 1355) | function r(e) {
  function o (line 1360) | function o(e, t, n) {
  function s (line 1369) | function s(e) {
  function l (line 1372) | function l(e) {
  function c (line 1375) | function c(e, t, n, i) {
  function u (line 1378) | function u(e) {
  function i (line 1418) | function i(e) {
  function i (line 1613) | function i(e) {
  function a (line 1616) | function a(e) {
  function r (line 1619) | function r(e) {
  function o (line 1622) | function o(e) {
  function s (line 1625) | function s(e) {
  function i (line 1682) | function i(e) {
  function i (line 1727) | function i(e, t) {
  function i (line 1824) | function i(e) {
  function i (line 2015) | function i(e, t) {
  function a (line 2018) | function a(e, t, n, i) {
  function r (line 2022) | function r(e, t, n) {
  function o (line 2027) | function o(e, t, n) {
  function s (line 2030) | function s(e, t, n, i) {
  function l (line 2038) | function l(e, t, n) {
  function c (line 2044) | function c(e, t, n, i) {
  function u (line 2047) | function u(e, t) {
  function i (line 2064) | function i(e, t) {
  function a (line 2069) | function a(e, t) {
  function r (line 2097) | function r(e, t) {
  function o (line 2107) | function o(e, t) {
  function s (line 2112) | function s(e, t) {
  function l (line 2122) | function l(e, t) {
  function c (line 2127) | function c(e, t) {
  function u (line 2130) | function u(e) {
  function i (line 2263) | function i(e, t) {
  function i (line 2323) | function i(e) {
  function i (line 2680) | function i(e) {
  function i (line 2864) | function i(e) {
  function a (line 2874) | function a(e, t, n, i) {
  function r (line 2882) | function r(e) {
  function o (line 2885) | function o(e) {
  function i (line 3224) | function i() {
  function i (line 3333) | function i() {
  function a (line 3340) | function a(e, t, n) {
  function r (line 3356) | function r(e, t) {
  function i (line 3427) | function i(e, t, n, i) {
  function a (line 3430) | function a(e) {
  function r (line 3438) | function r(e) {
  function o (line 3460) | function o(e, t) {
  function s (line 3475) | function s(e, t) {
  function i (line 3549) | function i() {
  function i (line 3607) | function i() {
  function i (line 3642) | function i(e) {
  function a (line 3650) | function a() {
  function i (line 3838) | function i() {
  function a (line 3845) | function a(e) {
  function r (line 3852) | function r() {
  function o (line 3856) | function o(e, t) {
  function s (line 3862) | function s(e, t, n) {
  function l (line 3866) | function l(e, t, n) {
  function c (line 3878) | function c(e, t) {
  function u (line 3897) | function u(e, t, n, a) {
  function p (line 3909) | function p(e, t) {
  function d (line 3920) | function d(e, t) {
  function f (line 3923) | function f(e) {
  function m (line 3932) | function m(e) {
  function i (line 3979) | function i(e) {
  function a (line 3982) | function a(e) {
  function r (line 3985) | function r(e) {
  function i (line 4030) | function i(e) {
  function i (line 4046) | function i(e) {
  function a (line 4052) | function a(e, t) {
  function r (line 4055) | function r(e) {
  function o (line 4064) | function o(e) {
  function i (line 4191) | function i(e) {
  function i (line 4257) | function i(e) {
  function a (line 4260) | function a(e, t) {
  function r (line 4263) | function r(e) {
  function o (line 4266) | function o(e, t) {
  function s (line 4269) | function s(e) {
  function l (line 4272) | function l(e, t) {
  function c (line 4278) | function c(e, t) {
  function u (line 4287) | function u(e, t, n, i, a, r) {
  function i (line 4388) | function i(e, t) {
  function a (line 4393) | function a(e) {
  function r (line 4397) | function r(e) {
  function o (line 4406) | function o(e) {
  function s (line 4409) | function s(e, t) {
  function l (line 4413) | function l(e) {
  function c (line 4418) | function c(e) {
  function u (line 4425) | function u(e, t) {
  function p (line 4433) | function p(e) {
  function d (line 4436) | function d(e) {
  function f (line 4440) | function f(e) {
  function m (line 4445) | function m(e, t, n, i, a) {
  function h (line 4449) | function h(e, t, n, i) {
  function i (line 4643) | function i(e, t, n) {
  function a (line 4654) | function a(e, t, n) {
  function r (line 4665) | function r(e, t) {
  function o (line 4676) | function o(e, t) {
  function s (line 4687) | function s() {
  function l (line 4690) | function l() {
  function i (line 4810) | function i(e) {
  function a (line 4816) | function a(e) {
  function r (line 4819) | function r(e) {
  function o (line 4822) | function o(e) {
  function i (line 4882) | function i(e, t, n) {
  function i (line 4921) | function i(e) {
  function a (line 4936) | function a(e) {
  function r (line 4960) | function r() {
  function o (line 4963) | function o(e) {
  function s (line 4989) | function s() {
  function l (line 5007) | function l(e) {
  function c (line 5028) | function c(e) {
  function u (line 5049) | function u(e) {
  function p (line 5076) | function p(e) {
  function d (line 5086) | function d() {
  function f (line 5104) | function f(e) {
  function m (line 5133) | function m(e) {
  function h (line 5151) | function h(e) {
  function g (line 5155) | function g(e) {
  function i (line 5194) | function i() {
  function i (line 5224) | function i() {
  function i (line 5289) | function i() {
  function i (line 5323) | function i(e, t, n) {
  function a (line 5328) | function a(e, t, n) {
  function i (line 5367) | function i(e) {
  function a (line 5380) | function a(e) {
  function i (line 5406) | function i(e) {
  function i (line 5456) | function i(e) {
  function a (line 5459) | function a(e, t) {
  function i (line 5533) | function i() {
  function a (line 5536) | function a() {
  function r (line 5542) | function r(e, t, n, a, r) {
  function o (line 5545) | function o(e, t) {
  function s (line 5548) | function s(e) {
  function l (line 5563) | function l(e) {
  function c (line 5566) | function c(e, t) {
  function i (line 5740) | function i(e) {
  function a (line 5762) | function a(e) {
  function i (line 6206) | function i(e, t, n) {
  function i (line 6222) | function i(e, t, n) {
  function i (line 6234) | function i(e, t, n) {
  function i (line 6246) | function i(e, t, n) {
  function i (line 6317) | function i(e, t, n) {
  function i (line 6329) | function i(e, t, n) {
  function i (line 6341) | function i(e, t, n) {
  function i (line 6377) | function i(e, t, n) {
  function i (line 6417) | function i(e, t, n) {
  function i (line 6438) | function i(e, t, n) {
  function i (line 6462) | function i(e, t, n) {
  function i (line 6585) | function i(e, t) {
  function i (line 6605) | function i(e) {
  function i (line 6617) | function i(e) {
  function i (line 6630) | function i(e) {
  function i (line 6641) | function i(e, t) {
  function i (line 6660) | function i(e) {
  function a (line 6670) | function a(e) {
  function i (line 6681) | function i(e) {
  function i (line 6703) | function i(e) {
  function a (line 6707) | function a(e, t) {
  function i (line 6734) | function i(e, t) {
  function i (line 6748) | function i(e) {
  function a (line 6753) | function a() {}
  function i (line 6779) | function i(e) {
  function a (line 6782) | function a(e) {
  function i (line 6794) | function i(e) {
  function i (line 6815) | function i(e, t, n) {
  function a (line 6819) | function a(e) {
  function i (line 6833) | function i(e) {
  function i (line 6854) | function i() {
  function i (line 6868) | function i(e) {
  function i (line 6883) | function i(e) {
  function i (line 6956) | function i(e) {
  function a (line 6962) | function a(e) {
  function i (line 6973) | function i(e) {
  function i (line 6984) | function i(e) {
  function i (line 6996) | function i(e) {
  function i (line 7067) | function i(e) {
  function a (line 7071) | function a(e) {
  function r (line 7077) | function r(e, t) {
  function i (line 7094) | function i(e) {
  function i (line 7105) | function i() {
  function i (line 7122) | function i(e) {
  function i (line 7136) | function i(e) {
  function i (line 7147) | function i(e) {
  function i (line 7159) | function i(e) {
  function a (line 7167) | function a(e, t) {
  function i (line 7224) | function i(e, t) {
  function i (line 7253) | function i(e) {
  function i (line 7270) | function i(e) {
  function i (line 7296) | function i(e) {
  function i (line 7333) | function i(e, t, n) {
  function i (line 7347) | function i(e) {
  function i (line 7360) | function i(e) {
  function i (line 7372) | function i(e) {
  function i (line 7438) | function i(e, t) {
  function i (line 7453) | function i(e, t) {
  function i (line 7471) | function i(e) {
  function i (line 7493) | function i(e) {
  function a (line 7496) | function a(e, t) {
  function r (line 7499) | function r(e) {
  function o (line 7502) | function o(e) {
  function s (line 7505) | function s(e, t, n, i, r) {
  function l (line 7553) | function l(e, t, n) {
  function succeed (line 7638) | function succeed(e) {
  function handleReadyState (line 7643) | function handleReadyState(e, t, n) {
  function setHeaders (line 7653) | function setHeaders(e, t) {
  function setCredentials (line 7662) | function setCredentials(e, t) {
  function urlappend (line 7667) | function urlappend(e, t) {
  function handleJsonp (line 7670) | function handleJsonp(e, t, n, i) {
  function getRequest (line 7714) | function getRequest(e, t) {
  function Reqwest (line 7746) | function Reqwest(e, t) {
  function setType (line 7751) | function setType(e) {
  function init (line 7762) | function init(o, fn) {
  function reqwest (line 7887) | function reqwest(e, t) {
  function normalize (line 7890) | function normalize(e) {
  function serial (line 7893) | function serial(e, t) {
  function eachFormElement (line 7924) | function eachFormElement() {
  function serializeQueryString (line 7941) | function serializeQueryString() {
  function serializeHash (line 7944) | function serializeHash() {
  function buildParams (line 7985) | function buildParams(e, t, n, i) {
  function bindToWindowOnError (line 8019) | function bindToWindowOnError(e) {
  function i (line 8030) | function i(e) {
  function a (line 8033) | function a(a, r, o) {
  function r (line 8040) | function r(e, t) {
  function o (line 8146) | function o(e) {
  function s (line 8157) | function s(e, t) {
  function l (line 8166) | function l(e) {
  function a (line 8837) | function a(o, s) {
  function n (line 8874) | function n(t) {
  function i (line 8930) | function i() {
  function i (line 9011) | function i() {
  function a (line 9076) | function a(e) {
  function r (line 9079) | function r(e) {
  function o (line 9082) | function o(e) {
  function s (line 9085) | function s(e) {
  function o (line 9096) | function o() {
  function s (line 9118) | function s() {}
  function a (line 9145) | function a() {}
  function s (line 9148) | function s(e) {
  function l (line 9156) | function l(e, t) {
  function c (line 9164) | function c(e, t, n) {
  function u (line 9173) | function u(e) {
  function p (line 9188) | function p(e, t, n) {
  function d (line 9195) | function d(e, t) {
  function f (line 9207) | function f(e, t) {
  function m (line 9227) | function m(e, t) {
  function h (line 9232) | function h(e) {
  function g (line 9236) | function g(e, t, n) {
  function v (line 9241) | function v(e, t) {
  function u (line 9278) | function u(e) {
  function r (line 9308) | function r(o, s) {
  function s (line 9358) | function s() {
  function l (line 9362) | function l(e) {
  function c (line 9367) | function c() {
  function n (line 9392) | function n(e) {
  function s (line 9403) | function s() {
  function c (line 9422) | function c(e) {
  function u (line 9432) | function u(e) {
  function r (line 9464) | function r(e) {
  function u (line 9475) | function u() {
  function p (line 9491) | function p() {
  function n (line 17075) | function n() {}
  function a (line 17149) | function a() {}
  function e (line 17837) | function e(e, i, a, r) {
  function e (line 17894) | function e(e, n, a, o, s, l, c) {
  function e (line 17954) | function e(e) {

FILE: tests/integrations/intercom/app-modern.e4d2d085.js
  function c (line 28) | function c(e, t) {
  function d (line 40) | function d(e, t, n) {
  function p (line 53) | function p() {
  function s (line 253) | function s(e, t, n) {
  class Measure (line 266) | class Measure extends r.PureComponent {
    method constructor (line 267) | constructor(...e) {
    method componentDidMount (line 287) | componentDidMount() {
    method componentWillUnmount (line 290) | componentWillUnmount() {
    method render (line 293) | render() {
  function d (line 310) | function d(e) {
  function m (line 506) | function m(e, t, n) {
  class frame_Frame (line 543) | class frame_Frame extends a.Component {
    method constructor (line 544) | constructor(...e) {
    method componentDidMount (line 554) | componentDidMount() {
    method componentDidUpdate (line 562) | componentDidUpdate(e) {
    method componentWillUnmount (line 567) | componentWillUnmount() {
    method renderChildren (line 570) | renderChildren() {
    method render (line 591) | render() {
  function B (line 890) | function B(e, t, n) {
  class image_Image (line 903) | class image_Image extends o.Component {
    method constructor (line 904) | constructor(...e) {
    method getProgressStyle (line 937) | getProgressStyle() {
    method imageHasLoaded (line 941) | imageHasLoaded() {
    method getImageStyle (line 944) | getImageStyle() {
    method renderZoomedImage (line 947) | renderZoomedImage() {
    method renderProgress (line 956) | renderProgress() {
    method renderPlaceholderImage (line 959) | renderPlaceholderImage() {
    method renderImage (line 965) | renderImage() {
    method render (line 989) | render() {
  class image_ImageBlock (line 999) | class image_ImageBlock extends o.Component {
    method renderLinkedImage (line 1000) | renderLinkedImage() {
    method renderImage (line 1004) | renderImage() {
    method render (line 1025) | render() {
  function D (line 1130) | function D(e) {
  function H (line 1145) | function H(e) {
  function U (line 1215) | function U(e) {
  function G (line 1245) | function G(e) {
  function Y (line 1313) | function Y(e) {
  function J (line 1370) | function J(e) {
  function ne (line 1418) | function ne(e) {
  function ie (line 1501) | function ie(e) {
  function le (line 1541) | function le(e) {
  function de (line 1583) | function de(e) {
  function ve (line 1668) | function ve(e) {
  function ye (line 1709) | function ye(e) {
  function we (line 1720) | function we(e, t, n) {
  class video_file_VideoFileBlock (line 1733) | class video_file_VideoFileBlock extends o.Component {
    method constructor (line 1734) | constructor(...e) {
    method render (line 1758) | render() {
  class messenger_card_MessengerCardBlock (line 1783) | class messenger_card_MessengerCardBlock extends o.Component {
    method render (line 1784) | render() {
  function Ie (line 1848) | function Ie(e) {
  function Le (line 1876) | function Le() {
  class blocks_Blocks (line 1890) | class blocks_Blocks extends o.Component {
    method constructor (line 1891) | constructor(...e) {
    method renderBlock (line 1907) | renderBlock(e, t) {
    method render (line 1965) | render() {
  class loading_spinner_LoadingSpinner (line 2068) | class loading_spinner_LoadingSpinner extends r.PureComponent {
    method render (line 2069) | render() {
  function d (line 2260) | function d(e) {
  function m (line 2296) | function m(e) {
  class text_Text (line 2350) | class text_Text extends r.Component {
    method useNativeEmoji (line 2351) | useNativeEmoji() {
    method render (line 2355) | render() {
  class user_avatar_UserAvatar (line 2834) | class user_avatar_UserAvatar extends r.PureComponent {
    method getAvatarLabel (line 2835) | getAvatarLabel() {
    method render (line 2839) | render() {
  class author_avatar_AuthorAvatar (line 2860) | class author_avatar_AuthorAvatar extends r.PureComponent {
    method renderTeamAvatar (line 2861) | renderTeamAvatar(e) {
    method renderAdminAvatar (line 2864) | renderAdminAvatar(e) {
    method renderUserAvatar (line 2867) | renderUserAvatar(e) {
    method render (line 2870) | render() {
  function c (line 3092) | function c(e, t, n) {
  class CrossOriginFrame (line 3105) | class CrossOriginFrame extends r.Component {
    method constructor (line 3106) | constructor(...e) {
    method componentDidMount (line 3111) | componentDidMount() {
    method componentWillUnmount (line 3114) | componentWillUnmount() {
    method componentDidUpdate (line 3117) | componentDidUpdate(e) {
    method postCreateOrUpdateFrameMessage (line 3121) | postCreateOrUpdateFrameMessage() {
    method getFrameWindow (line 3127) | getFrameWindow() {
    method render (line 3136) | render() {
  function c (line 3168) | function c(e, t, n) {
  class Scrollable (line 3181) | class Scrollable extends r.Component {
    method constructor (line 3182) | constructor(...e) {
    method componentDidUpdate (line 3203) | componentDidUpdate(e) {
    method componentDidMount (line 3210) | componentDidMount() {
    method handleScrollable (line 3216) | handleScrollable() {
    method isScrollable (line 3223) | isScrollable() {
    method render (line 3226) | render() {
  class AuthoredContainer (line 3263) | class AuthoredContainer extends i.Component {
    method renderAuthorAvatarAndSummary (line 3264) | renderAuthorAvatarAndSummary() {
    method render (line 3287) | render() {
  function l (line 3316) | function l(e) {
  function s (line 3351) | function s(e, t, n) {
  class Avatar (line 3364) | class Avatar extends r.PureComponent {
    method constructor (line 3365) | constructor(...e) {
    method initialFromFirstName (line 3372) | initialFromFirstName() {
    method renderImage (line 3376) | renderImage() {
    method getAvatarLabel (line 3393) | getAvatarLabel() {
    method renderInitial (line 3397) | renderInitial() {
    method render (line 3406) | render() {
  function o (line 3436) | function o(e) {
  function i (line 3447) | function i(e) {
  function s (line 3468) | function s(e) {
  function l (line 3482) | function l(e) {
  function c (line 3499) | function c(e, t) {
  function p (line 3503) | function p(e) {
  function u (line 3513) | function u(e, t) {
  function m (line 3571) | function m(e, t, n) {
  function h (line 3611) | function h(e, t, n) {
  function b (line 3614) | function b(e, t, n) {
  function x (line 3620) | function x(e, t, n) {
  class user_presence_UserPresence (line 3633) | class user_presence_UserPresence extends a.Component {
    method constructor (line 3634) | constructor(...e) {
    method componentDidMount (line 3642) | componentDidMount() {
    method componentWillUnmount (line 3646) | componentWillUnmount() {
    method checkIfSessionHasChanged (line 3649) | checkIfSessionHasChanged() {
    method checkIfAnonymousSessionHasBeenChanged (line 3654) | checkIfAnonymousSessionHasBeenChanged() {
    method checkIfCookiesHasBeenDestroyed (line 3660) | checkIfCookiesHasBeenDestroyed() {
    method render (line 3668) | render() {
  function i (line 3811) | function i(e) {
  method subscribe (line 3977) | subscribe(e, t) {
  function a (line 4183) | function a(e, t, n) {
  class FocusTrap (line 4198) | class FocusTrap {
    method constructor (line 4199) | constructor({
    method recalculateFocusableElements (line 4246) | recalculateFocusableElements() {
    method restore (line 4249) | restore() {
  function a (line 4264) | function a(e) {
  function c (line 4285) | function c(e, t) {
  function d (line 4297) | function d(e) {
  function p (line 4312) | function p(e, t, n) {
  class TextComponent (line 4325) | class TextComponent extends r.PureComponent {
    method constructor (line 4326) | constructor(...e) {
    method getClassName (line 4350) | getClassName() {
    method render (line 4359) | render() {
  function s (line 4398) | function s(e, t, n) {
  class ReactionPicker (line 4411) | class ReactionPicker extends r.Component {
    method constructor (line 4412) | constructor(...e) {
    method componentDidMount (line 4415) | componentDidMount() {
    method handleHeightChange (line 4418) | handleHeightChange() {
    method render (line 4422) | render() {
  function l (line 5159) | function l(e, t) {
  function c (line 5171) | function c(e) {
  function d (line 5186) | function d(e, t, n) {
  function p (line 5310) | function p(e, t) {
  function u (line 5322) | function u(e) {
  function m (line 5337) | function m(e, t, n) {
  function O (line 5378) | function O(e, t) {
  function C (line 5390) | function C(e) {
  function w (line 5405) | function w(e, t, n) {
  function D (line 5608) | function D(e) {
  function de (line 5752) | function de(e, t) {
  function pe (line 5764) | function pe(e) {
  function ue (line 5779) | function ue(e, t, n) {
  class modal_ModalFrame (line 5893) | class modal_ModalFrame extends r.Component {
    method renderCSSTransition (line 5894) | renderCSSTransition(e) {
    method render (line 5903) | render() {
  class modal_CrossOriginModalFrame (line 5922) | class modal_CrossOriginModalFrame extends r.Component {
    method renderCSSTransition (line 5923) | renderCSSTransition(e) {
    method render (line 5932) | render() {
  function _ (line 5972) | function _(e, t, n) {
  class modal_content_ModalContent (line 5985) | class modal_content_ModalContent extends r.Component {
    method constructor (line 5986) | constructor(...e) {
    method componentDidMount (line 6001) | componentDidMount() {
    method componentWillUnmount (line 6012) | componentWillUnmount() {
    method render (line 6019) | render() {
  function B (line 6049) | function B() {
  function N (line 6060) | function N(e, t) {
  function p (line 6149) | function p() {
  function u (line 6160) | function u(e, t) {
  function m (line 6172) | function m(e) {
  function h (line 6187) | function h(e, t, n) {
  class input_Input (line 6200) | class input_Input extends o.PureComponent {
    method constructor (line 6201) | constructor(...e) {
    method render (line 6224) | render() {
  function v (line 6295) | function v() {
  function O (line 6310) | function O() {
  function C (line 6321) | function C(e, t) {
  function w (line 6333) | function w(e, t, n) {
  class submittable_input_SubmittableInput (line 6346) | class submittable_input_SubmittableInput extends o.PureComponent {
    method constructor (line 6347) | constructor(...e) {
    method isDisabled (line 6362) | isDisabled() {
    method renderLoadingSpinner (line 6366) | renderLoadingSpinner() {
    method render (line 6371) | render() {
  function S (line 6451) | function S() {
  function _ (line 6462) | function _(e, t, n) {
  class validating_input_ValidatingInput (line 6478) | class validating_input_ValidatingInput extends o.PureComponent {
    method constructor (line 6479) | constructor(...e) {
    method getDerivedStateFromProps (line 6497) | static getDerivedStateFromProps(e, t) {
    method autoFocus (line 6507) | autoFocus() {
    method buildInputProps (line 6511) | buildInputProps() {
    method render (line 6543) | render() {
  function i (line 6690) | function i(e) {
  class ConversationPartMetadata (line 6938) | class ConversationPartMetadata extends o.Component {
    method componentDidMount (line 6939) | componentDidMount() {
    method componentWillUnmount (line 6944) | componentWillUnmount() {
    method getAttribution (line 6947) | getAttribution() {
    method getSaveState (line 6953) | getSaveState() {
    method seenStateText (line 6976) | seenStateText(e) {
    method botStateText (line 6983) | botStateText(e) {
    method renderSaveState (line 6986) | renderSaveState() {
    method renderAttribution (line 6993) | renderAttribution() {
    method render (line 6999) | render() {
  function h (line 7452) | function h() {
  function b (line 7466) | function b({
  function c (line 7591) | function c({ onHeightChange: e, children: t }) {
  function o (line 7604) | function o() {
  function i (line 7615) | function i(e) {
  class AuthorSummary (line 7834) | class AuthorSummary extends o.Component {
    method renderReplyStyle (line 7835) | renderReplyStyle() {
    method activeOrAwayInWords (line 7847) | activeOrAwayInWords() {
    method renderWithAppName (line 7850) | renderWithAppName() {
    method render (line 7872) | render() {
  class EmailAttribute (line 7925) | class EmailAttribute extends i.Component {
    method render (line 7926) | render() {
  class ErrorBoundary (line 7988) | class ErrorBoundary extends r.Component {
    method constructor (line 7989) | constructor(...e) {
    method componentDidCatch (line 8002) | componentDidCatch(e) {
    method render (line 8005) | render() {
  function m (line 8028) | function m(e) {
  class string_StringAttribute (line 8031) | class string_StringAttribute extends s.Component {
    method render (line 8032) | render() {
  function b (line 8079) | function b(e) {
  class integer_IntegerAttribute (line 8082) | class integer_IntegerAttribute extends s.Component {
    method render (line 8083) | render() {
  function g (line 8109) | function g(e) {
  function f (line 8112) | function f(e) {
  class float_FloatAttribute (line 8119) | class float_FloatAttribute extends s.Component {
    method render (line 8120) | render() {
  class boolean_BooleanAttribute (line 8212) | class boolean_BooleanAttribute extends s.Component {
    method constructor (line 8213) | constructor(...e) {
    method createHandleSubmit (line 8226) | createHandleSubmit(e) {
    method render (line 8234) | render() {
  function A (line 8283) | function A(e, t, n) {
  class attribute_collector_card_attribute_AttributeCollectorCardAttribute (line 8296) | class attribute_collector_card_attribute_AttributeCollectorCardAttribute...
    method constructor (line 8297) | constructor(...e) {
    method fitsButtonGroupLayout (line 8307) | fitsButtonGroupLayout(e) {
    method renderAttribute (line 8312) | renderAttribute() {
    method renderArrayAttribute (line 8392) | renderArrayAttribute(e, t) {
    method render (line 8415) | render() {
  function V (line 8497) | function V(e, t, n) {
  function G (line 8510) | function G(e) {
  function $ (line 8519) | function $(e) {
  function X (line 8522) | function X(e) {
  class attribute_collector_card_AttributeCollectorCard (line 8525) | class attribute_collector_card_AttributeCollectorCard extends s.Component {
    method constructor (line 8526) | constructor(...e) {
    method componentDidMount (line 8568) | componentDidMount() {
    method componentDidUpdate (line 8576) | componentDidUpdate(e, t) {
    method renderAvatar (line 8584) | renderAvatar() {
    method renderForm (line 8591) | renderForm() {
    method renderHeader (line 8595) | renderHeader() {
    method renderPosition (line 8609) | renderPosition() {
    method render (line 8616) | render() {
  method onAttributeSubmit (line 8643) | onAttributeSubmit(t, n, r, a, o, i) {
  method onEmailAttributeMount (line 8646) | onEmailAttributeMount(t) {
  method onAttributeSubmit (line 8652) | onAttributeSubmit(r, a) {
  function h (line 8701) | function h(e) {
  function v (line 8733) | function v(e, t) {
  function x (line 8755) | function x(e, t) {
  function y (line 8767) | function y(e) {
  function j (line 8782) | function j(e, t, n) {
  function O (line 8795) | function O(e) {
  function k (line 8858) | function k(e, t) {
  function S (line 8870) | function S(e) {
  function _ (line 8885) | function _(e, t, n) {
  class conversation_suggestions_ConversationSuggestions (line 8898) | class conversation_suggestions_ConversationSuggestions extends i.Compone...
    method constructor (line 8899) | constructor(...e) {
    method componentDidMount (line 8955) | componentDidMount() {
    method componentDidUpdate (line 8958) | componentDidUpdate() {
    method executeCallbacksAndMetrics (line 8961) | executeCallbacksAndMetrics() {
    method shouldShowSuggestions (line 8985) | shouldShowSuggestions() {
    method suggestions (line 8993) | suggestions() {
    method prompt (line 8998) | prompt() {
    method render (line 9003) | render() {
    method getMetricNameForSuggestionType (line 9031) | getMetricNameForSuggestionType(e) {
  function p (line 9237) | function p(e, t, n) {
  class reply_to_button_ReplyToButton (line 9253) | class reply_to_button_ReplyToButton extends r.PureComponent {
    method constructor (line 9254) | constructor(...e) {
    method componentDidMount (line 9261) | componentDidMount() {
    method render (line 9266) | render() {
  class sticker_Sticker (line 9354) | class sticker_Sticker extends r.Component {
    method render (line 9355) | render() {
    method renderNative (line 9360) | renderNative(e) {
    method renderImage (line 9367) | renderImage(e) {
    method useNativeEmoji (line 9375) | useNativeEmoji() {
  function r (line 9416) | function r() {
  class OverlayAvatar (line 9493) | class OverlayAvatar extends i.Component {
    method renderActiveOrAwayState (line 9494) | renderActiveOrAwayState(e) {
    method render (line 9502) | render() {
  function i (line 9564) | function i(e, t, n) {
  class Button (line 9577) | class Button extends r.Component {
    method constructor (line 9578) | constructor(...e) {
    method componentDidMount (line 9585) | componentDidMount() {
    method render (line 9588) | render() {
  function o (line 9681) | function o(e) {
  function a (line 9729) | function a(e) {
  function o (line 9732) | function o(e) {
  class Reaction (line 9817) | class Reaction extends r.Component {
    method constructor (line 9818) | constructor(...e) {
    method render (line 9834) | render() {
  function i (line 9869) | function i({ disabled: e, loading: t }) {
  function f (line 10343) | function f() {
  function v (line 10354) | function v(e, t, n) {
  class Post (line 10367) | class Post extends r.Component {
    method constructor (line 10368) | constructor(...e) {
    method renderFooter (line 10394) | renderFooter(e) {
    method renderReactionPicker (line 10414) | renderReactionPicker() {
    method render (line 10418) | render() {
  function l (line 10498) | function l(e, t) {
  function c (line 10520) | function c(e, t, n) {
  class VideoPlayerAutosized (line 10533) | class VideoPlayerAutosized extends r.Component {
    method constructor (line 10534) | constructor(...e) {
    method getStyle (line 10541) | getStyle() {
    method render (line 10545) | render() {
  function a (line 11380) | function a(e) {
  function y (line 11566) | function y() {
  function j (line 11577) | function j(e, t) {
  function O (line 11589) | function O(e, t, n) {
  class button_ButtonComponent (line 11602) | class button_ButtonComponent extends a.PureComponent {
    method constructor (line 11603) | constructor(...e) {
    method isDisabled (line 11610) | isDisabled() {
    method render (line 11614) | render() {
  function R (line 11696) | function R(e, t, n) {
  class image_ImageComponent (line 11709) | class image_ImageComponent extends a.Component {
    method constructor (line 11710) | constructor(...e) {
    method hasUrlAction (line 11723) | hasUrlAction() {
    method calculateImageWidth (line 11727) | calculateImageWidth(e) {
    method calculateImageHeight (line 11730) | calculateImageHeight(e, t) {
    method getImageStyle (line 11733) | getImageStyle() {
    method render (line 11742) | render() {
  function q (line 11802) | function q(e, t, n) {
  class input_InputComponent (line 11815) | class input_InputComponent extends a.PureComponent {
    method constructor (line 11816) | constructor(...e) {
    method componentWillUnmount (line 11831) | componentWillUnmount() {
    method renderLabel (line 11834) | renderLabel() {
    method buildInputProps (line 11837) | buildInputProps() {
    method renderInput (line 11873) | renderInput() {
    method render (line 11877) | render() {
  function J (line 11931) | function J() {
  function Q (line 11942) | function Q(e, t) {
  function ee (line 11954) | function ee(e) {
  function te (line 11969) | function te(e, t, n) {
  class textarea_TextAreaComponent (line 11982) | class textarea_TextAreaComponent extends a.PureComponent {
    method constructor (line 11983) | constructor(...e) {
    method getDerivedStateFromProps (line 12009) | static getDerivedStateFromProps(e, t) {
    method buildTextAreaProps (line 12012) | buildTextAreaProps() {
    method render (line 12025) | render() {
  class spacer_SpacerComponent (line 12069) | class spacer_SpacerComponent extends a.PureComponent {
    method render (line 12070) | render() {
  class divider_DividerComponent (line 12090) | class divider_DividerComponent extends a.PureComponent {
    method render (line 12091) | render() {
  function ye (line 12180) | function ye(e, t, n) {
  class list_item_ListItemComponent (line 12193) | class list_item_ListItemComponent extends a.PureComponent {
    method constructor (line 12194) | constructor(...e) {
    method isDisabled (line 12201) | isDisabled() {
    method hasUrlAction (line 12205) | hasUrlAction() {
    method buildImageProps (line 12209) | buildImageProps() {
    method renderSubtitle (line 12220) | renderSubtitle() {
    method renderSpinner (line 12235) | renderSpinner() {
    method render (line 12240) | render() {
  function je (line 12277) | function je() {
  class list_ListComponent (line 12295) | class list_ListComponent extends a.PureComponent {
    method render (line 12296) | render() {
  function Se (line 12354) | function Se({ items: e, bottomMargin: t }) {
  function Ae (line 12392) | function Ae(e, t, n) {
  class dropdown_DropdownComponent (line 12405) | class dropdown_DropdownComponent extends a.PureComponent {
    method constructor (line 12406) | constructor(...e) {
    method getDefaultState (line 12413) | getDefaultState() {
    method renderLabel (line 12417) | renderLabel() {
    method mapOptions (line 12420) | mapOptions() {
    method render (line 12427) | render() {
  function De (line 12460) | function De(e, t, n) {
  class single_select_SingleSelectComponent (line 12473) | class single_select_SingleSelectComponent extends a.PureComponent {
    method constructor (line 12474) | constructor(...e) {
    method getDefaultState (line 12489) | getDefaultState() {
    method componentDidUpdate (line 12493) | componentDidUpdate() {
    method renderLabel (line 12496) | renderLabel() {
    method handleSaveCompletion (line 12499) | handleSaveCompletion() {
    method mapOptions (line 12502) | mapOptions() {
    method render (line 12509) | render() {
  class checkbox_group_option_CheckboxGroupOption (line 12543) | class checkbox_group_option_CheckboxGroupOption extends a.Component {
    method constructor (line 12544) | constructor(...e) {
    method render (line 12560) | render() {
  function Ge (line 12581) | function Ge(e, t, n) {
  class checkbox_group_CheckboxGroupAttribute (line 12594) | class checkbox_group_CheckboxGroupAttribute extends a.Component {
    method constructor (line 12595) | constructor(...e) {
    method renderOption (line 12609) | renderOption(e, t) {
    method renderOptions (line 12624) | renderOptions() {
    method render (line 12632) | render() {
  function Ke (line 12654) | function Ke(e, t, n) {
  class checkbox_CheckboxComponent (line 12667) | class checkbox_CheckboxComponent extends a.PureComponent {
    method constructor (line 12668) | constructor(...e) {
    method getDefaultState (line 12682) | getDefaultState() {
    method componentDidUpdate (line 12686) | componentDidUpdate() {
    method renderLabel (line 12689) | renderLabel() {
    method handleSaveCompletion (line 12692) | handleSaveCompletion() {
    method mapOptions (line 12695) | mapOptions() {
    method render (line 12702) | render() {
  function nt (line 12733) | function nt() {
  function rt (line 12744) | function rt(e, t, n) {
  class messenger_card_component_group_MessengerCardComponentGroup (line 12778) | class messenger_card_component_group_MessengerCardComponentGroup extends...
    method constructor (line 12779) | constructor(...e) {
    method getDerivedStateFromProps (line 12892) | static getDerivedStateFromProps(e, t) {
    method isDisabled (line 12899) | isDisabled(e) {
    method renderComponent (line 12903) | renderComponent(e, t) {
    method renderError (line 12979) | renderError() {
    method renderComponents (line 12992) | renderComponents() {
    method render (line 13016) | render() {
  function pt (line 13048) | function pt(e, t, n) {
  class messenger_card_body_MessengerCardBody (line 13062) | class messenger_card_body_MessengerCardBody extends a.PureComponent {
    method constructor (line 13063) | constructor(...e) {
    method componentDidUpdate (line 13070) | componentDidUpdate(e) {
    method render (line 13081) | render() {
  function mt (line 13129) | function mt(e, t, n) {
  class messenger_card_MessengerCard (line 13144) | class messenger_card_MessengerCard extends a.PureComponent {
    method constructor (line 13145) | constructor(...e) {
    method componentDidUpdate (line 13177) | componentDidUpdate(e, t) {
    method componentDidMount (line 13186) | componentDidMount() {
    method render (line 13189) | render() {
  function b (line 13312) | function b(e, t, n) {
  class post_card_PostCard (line 13325) | class post_card_PostCard extends o.Component {
    method constructor (line 13326) | constructor(...e) {
    method componentDidMount (line 13343) | componentDidMount() {
    method handleResize (line 13346) | handleResize() {
    method renderPost (line 13352) | renderPost() {
    method render (line 13373) | render() {
  class note_card_NoteCard (line 13423) | class note_card_NoteCard extends o.Component {
    method render (line 13424) | render() {
  function T (line 13453) | function T(e) {
  function B (line 13493) | function B() {
  function N (line 13504) | function N(e, t, n) {
  class article_Article (line 13517) | class article_Article extends o.Component {
    method constructor (line 13518) | constructor(...e) {
    method renderReactionPicker (line 13535) | renderReactionPicker() {
    method render (line 13545) | render() {
  function U (line 13662) | function U(e, t, n) {
  class article_card_ArticleCard (line 13675) | class article_card_ArticleCard extends o.Component {
    method constructor (line 13676) | constructor(...e) {
    method buildAuthor (line 13691) | buildAuthor(e) {
    method renderAuthor (line 13698) | renderAuthor(e) {
    method renderLinkCardTitle (line 13715) | renderLinkCardTitle(e) {
    method renderLinkCardFooter (line 13724) | renderLinkCardFooter(e) {
    method renderLinkCards (line 13732) | renderLinkCards() {
    method render (line 13762) | render() {
  function Q (line 13795) | function Q(e, t, n) {
  class notification_channels_input_NotificationChannelsInput (line 13808) | class notification_channels_input_NotificationChannelsInput extends o.Co...
    method constructor (line 13809) | constructor(...e) {
    method componentWillUnmount (line 13857) | componentWillUnmount() {
    method getDerivedStateFromProps (line 13860) | static getDerivedStateFromProps(e, t) {
    method valueHasChanged (line 13868) | valueHasChanged() {
    method valueIsEmpty (line 13871) | valueIsEmpty() {
    method isPhone (line 13874) | isPhone() {
    method shouldShowPlaceholder (line 13877) | shouldShowPlaceholder() {
    method isDisabled (line 13882) | isDisabled() {
    method getInputType (line 13885) | getInputType() {
    method getErrorMessage (line 13895) | getErrorMessage() {
    method showErrorMessage (line 13906) | showErrorMessage() {
    method renderFlag (line 13909) | renderFlag() {
    method renderPlaceholder (line 13914) | renderPlaceholder() {
    method render (line 13924) | render() {
  function ie (line 14010) | function ie(e, t, n) {
  class notification_channels_NotificationChannels (line 14029) | class notification_channels_NotificationChannels extends o.Component {
    method constructor (line 14030) | constructor(...e) {
    method componentDidMount (line 14072) | componentDidMount() {
    method getDerivedStateFromProps (line 14075) | static getDerivedStateFromProps(e, t) {
    method recordMetrics (line 14081) | recordMetrics() {
    method recordChannelMetrics (line 14088) | recordChannelMetrics() {
    method getEmailCollectorMetricName (line 14094) | getEmailCollectorMetricName() {
    method existingChannelText (line 14097) | existingChannelText() {
    method existingChannelValue (line 14106) | existingChannelValue() {
    method optionSelected (line 14111) | optionSelected() {
    method getTitle (line 14114) | getTitle() {
    method renderPhoneNumberCollector (line 14119) | renderPhoneNumberCollector() {
    method renderEmailCollector (line 14135) | renderEmailCollector() {
    method renderChannelsBody (line 14149) | renderChannelsBody() {
    method renderOption (line 14156) | renderOption(e, t, n) {
    method renderEmailOption (line 14159) | renderEmailOption() {
    method renderSmsOption (line 14162) | renderSmsOption() {
    method renderOptions (line 14165) | renderOptions() {
    method renderChannelOptions (line 14173) | renderChannelOptions() {
    method renderExistingValue (line 14187) | renderExistingValue() {
    method renderSuccessMessage (line 14190) | renderSuccessMessage() {
    method render (line 14198) | render() {
  class notification_channels_card_NotificationChannelsCard (line 14271) | class notification_channels_card_NotificationChannelsCard extends o.Comp...
    method renderAdminAvatar (line 14272) | renderAdminAvatar() {
    method render (line 14280) | render() {
  function Ce (line 14339) | function Ce(e, t, n) {
  class conversation_rating_remark_input_ConversationRatingRemarkInput (line 14352) | class conversation_rating_remark_input_ConversationRatingRemarkInput ext...
    method constructor (line 14353) | constructor(...e) {
    method componentWillUnmount (line 14380) | componentWillUnmount() {
    method handleSubmit (line 14383) | handleSubmit() {
    method render (line 14388) | render() {
  class conversation_rating_emoji_ConversationRatingEmoji (line 14500) | class conversation_rating_emoji_ConversationRatingEmoji extends o.Compon...
    method constructor (line 14501) | constructor(...e) {
    method getTooltip (line 14518) | getTooltip() {
    method renderEmojiImage (line 14522) | renderEmojiImage() {
    method render (line 14530) | render() {
  function Te (line 14544) | function Te(e) {
  function Ae (line 14559) | function Ae(e, t, n) {
  class conversation_rating_ConversationRating (line 14572) | class conversation_rating_ConversationRating extends o.Component {
    method constructor (line 14573) | constructor(...e) {
    method componentDidUpdate (line 14583) | componentDidUpdate(e) {
    method hasChosenFirstRating (line 14586) | hasChosenFirstRating(e) {
    method scrollConversationParts (line 14591) | scrollConversationParts() {
    method hasRating (line 14596) | hasRating() {
    method shouldShowThanks (line 14600) | shouldShowThanks() {
    method hasRemark (line 14604) | hasRemark() {
    method isChosen (line 14608) | isChosen(e) {
    method isOtherChosen (line 14611) | isOtherChosen(e) {
    method renderThanksMessage (line 14614) | renderThanksMessage() {
    method renderRemark (line 14633) | renderRemark() {
    method renderRatingForm (line 14636) | renderRatingForm() {
    method renderRatingOptions (line 14648) | renderRatingOptions() {
    method renderRemarkInput (line 14671) | renderRemarkInput() {
    method render (line 14678) | render() {
  function Ie (line 14708) | function Ie(e, t, n) {
  function ze (line 14715) | function ze(e, t) {
  function Le (line 14718) | function Le(e, t, n) {
  function Re (line 14725) | function Re(e, t) {
  class conversation_rating_card_ConversationRatingCard (line 14755) | class conversation_rating_card_ConversationRatingCard extends o.Component {
    method render (line 14756) | render() {
  class conversation_pointer_card_PointerCard (line 14783) | class conversation_pointer_card_PointerCard extends o.Component {
    method render (line 14784) | render() {
  function Xe (line 14817) | function Xe(e, t, n) {
  class notification_channel_collector_card_controls_NotificationChannelCollectorCardControls (line 14830) | class notification_channel_collector_card_controls_NotificationChannelCo...
    method constructor (line 14831) | constructor(...e) {
    method getClassName (line 14845) | getClassName() {
    method getChannelClassName (line 14851) | getChannelClassName(e) {
    method renderChannels (line 14859) | renderChannels() {
    method renderPrompt (line 14883) | renderPrompt() {
    method renderMessage (line 14892) | renderMessage() {
    method render (line 14901) | render() {
  function Ze (line 14913) | function Ze(e, t, n) {
  class notification_channel_collector_card_NotificationChannelCollectorCard (line 14926) | class notification_channel_collector_card_NotificationChannelCollectorCa...
    method constructor (line 14927) | constructor(...e) {
    method componentDidMount (line 14937) | componentDidMount() {
    method getDerivedStateFromProps (line 14953) | static getDerivedStateFromProps(e, t) {
    method renderAvatar (line 14963) | renderAvatar() {
    method renderControls (line 14970) | renderControls() {
    method renderAttribute (line 14989) | renderAttribute() {
    method isSaved (line 15022) | isSaved() {
    method render (line 15026) | render() {
  method onAttributeSubmit (line 15069) | onAttributeSubmit(t, n, r, a, o) {
  method onEmailSubmit (line 15076) | onEmailSubmit(r) {
  method onPhoneNumberSubmit (line 15079) | onPhoneNumberSubmit(r) {
  class attribute_collector_AttributeCollector (line 15084) | class attribute_collector_AttributeCollector extends o.PureComponent {
    method renderCollectorCard (line 15085) | renderCollectorCard() {
    method render (line 15116) | render() {
  class participant_event_ParticipantEvent (line 15149) | class participant_event_ParticipantEvent extends o.Component {
    method renderAvatar (line 15150) | renderAvatar() {
    method renderText (line 15157) | renderText() {
    method partTypeText (line 15163) | partTypeText() {
    method renderTimestamp (line 15166) | renderTimestamp() {
    method render (line 15170) | render() {
  function mt (line 15199) | function mt(e, t, n) {
  class conversation_part_ConversationPart (line 15212) | class conversation_part_ConversationPart extends o.PureComponent {
    method constructor (line 15213) | constructor(...e) {
    method handleLinkClick (line 15229) | handleLinkClick(e) {
    method isFailedPart (line 15236) | isFailedPart() {
    method isRichContentType (line 15239) | isRichContentType() {
    method shouldShowMetadata (line 15243) | shouldShowMetadata() {
    method shouldShowInlineMetadata (line 15247) | shouldShowInlineMetadata() {
    method renderComment (line 15251) | renderComment() {
    method renderEvent (line 15256) | renderEvent() {
    method renderCommentContainer (line 15266) | renderCommentContainer() {
    method renderChatCardGroup (line 15287) | renderChatCardGroup() {
    method renderConversationPart (line 15306) | renderConversationPart() {
    method renderMetadata (line 15378) | renderMetadata() {
    method renderReplyType (line 15391) | renderReplyType() {
    method render (line 15405) | render() {
  class typing_admin_TypingAdmin (line 15515) | class typing_admin_TypingAdmin extends o.Component {
    method render (line 15516) | render() {
  function At (line 15544) | function At(e, t, n) {
  class conversation_parts_ConversationParts (line 15560) | class conversation_parts_ConversationParts extends o.Component {
    method constructor (line 15561) | constructor(...e) {
    method componentDidMount (line 15575) | componentDidMount() {
    method componentDidUpdate (line 15581) | componentDidUpdate(e) {
    method componentWillUnmount (line 15586) | componentWillUnmount() {
    method handlePartsChange (line 15589) | handlePartsChange(e) {
    method isScrolling (line 15599) | isScrolling() {
    method getStyle (line 15603) | getStyle() {
    method getPartKey (line 15607) | getPartKey(e) {
    method getDividerKey (line 15610) | getDividerKey(e) {
    method conversationHasScrolled (line 15613) | conversationHasScrolled() {
    method renderDateDivider (line 15616) | renderDateDivider(e) {
    method renderPart (line 15627) | renderPart(e, t, n, r) {
    method fakeTemporaryExpectationsPart (line 15683) | fakeTemporaryExpectationsPart(e) {
    method renderParts (line 15698) | renderParts() {
    method checkIfAdminIsStillTyping (line 15714) | checkIfAdminIsStillTyping() {
    method stopCheckingIfAdminIsTyping (line 15718) | stopCheckingIfAdminIsTyping() {
    method renderTypingAdmin (line 15721) | renderTypingAdmin() {
    method shouldRenderTypingAdmin (line 15737) | shouldRenderTypingAdmin() {
    method enableTypingLeaveAnimation (line 15742) | enableTypingLeaveAnimation() {
    method render (line 15746) | render() {
  function w (line 15845) | function w(e, t, n) {
  class emoji_skintone_picker_EmojiSkintonePicker (line 15858) | class emoji_skintone_picker_EmojiSkintonePicker extends d.Component {
    method constructor (line 15859) | constructor(...e) {
    method renderEmoji (line 15869) | renderEmoji(e, t) {
    method render (line 15881) | render() {
  function _ (line 15905) | function _(e, t, n) {
  class emoji_Emoji (line 15918) | class emoji_Emoji extends d.Component {
    method constructor (line 15919) | constructor(...e) {
    method render (line 15929) | render() {
  class search_results_summary_SearchResultsSummary (line 15965) | class search_results_summary_SearchResultsSummary extends d.Component {
    method render (line 15966) | render() {
  function Q (line 16072) | function Q({ event: e, eventIdentifier: t, onClick: n }) {
  function ee (line 16086) | function ee(e, t, n) {
  function ne (line 16108) | function ne() {
  function re (line 16114) | function re(e) {
  class emoji_picker_EmojiPicker (line 16125) | class emoji_picker_EmojiPicker extends d.Component {
    method constructor (line 16126) | constructor(...e) {
    method hasSearchText (line 16217) | hasSearchText() {
    method filteredSearchEmoji (line 16220) | filteredSearchEmoji(e) {
    method renderEmoji (line 16230) | renderEmoji(e, t, n = e) {
    method renderImage (line 16244) | renderImage(e, t) {
    method renderGroup (line 16257) | renderGroup(e, t) {
    method renderMostRecent (line 16271) | renderMostRecent() {
    method renderFiltered (line 16280) | renderFiltered() {
    method renderGroups (line 16292) | renderGroups() {
    method renderEmojiPicker (line 16301) | renderEmojiPicker() {
    method renderSkinTonePicker (line 16330) | renderSkinTonePicker() {
    method renderWithoutNativeSupport (line 16339) | renderWithoutNativeSupport() {
    method renderWithNativeSupport (line 16347) | renderWithNativeSupport() {
    method render (line 16355) | render() {
  function pe (line 16382) | function pe(e, t, n) {
  class gif_picker_GifPicker (line 16395) | class gif_picker_GifPicker extends d.Component {
    method constructor (line 16396) | constructor(...e) {
    method componentDidMount (line 16410) | componentDidMount() {
    method createHandleGifClick (line 16413) | createHandleGifClick(e) {
    method renderGif (line 16424) | renderGif(e) {
    method renderFetching (line 16436) | renderFetching() {
    method renderResults (line 16439) | renderResults() {
    method render (line 16449) | render() {
  function me (line 16487) | function me(e, t = '') {
  function he (line 16505) | function he(e) {
  function be (line 16508) | function be(e, t) {
  function we (line 16560) | function we(e, t, n) {
  class composer_popover_ComposerPopover (line 16573) | class composer_popover_ComposerPopover extends d.Component {
    method constructor (line 16574) | constructor(...e) {
    method componentDidUpdate (line 16582) | componentDidUpdate() {
    method render (line 16590) | render() {
  function Le (line 16670) | function Le() {
  function Re (line 16681) | function Re(e, t, n) {
  class upfront_email_composer_UpfrontEmailComposer (line 16694) | class upfront_email_composer_UpfrontEmailComposer extends d.PureComponent {
    method constructor (line 16695) | constructor(...e) {
    method componentDidMount (line 16805) | componentDidMount() {
    method componentWillUnmount (line 16808) | componentWillUnmount() {
    method componentDidMount (line 16812) | componentDidMount() {
    method render (line 16817) | render() {
  function Ue (line 16850) | function Ue(e, t, n) {
  class composer_Composer (line 16863) | class composer_Composer extends d.PureComponent {
    method constructor (line 16864) | constructor(...e) {
    method componentDidMount (line 17072) | componentDidMount() {
    method componentDidUpdate (line 17085) | componentDidUpdate() {
    method componentWillUnmount (line 17088) | componentWillUnmount() {
    method getDerivedStateFromProps (line 17094) | static getDerivedStateFromProps(e, t) {
    method handleHeightChange (line 17102) | handleHeightChange(e) {
    method createAttachmentParts (line 17106) | createAttachmentParts(e) {
    method handleTextSubmit (line 17111) | handleTextSubmit() {
    method handleChange (line 17116) | handleChange() {
    method clearFileInput (line 17119) | clearFileInput() {
    method focus (line 17122) | focus() {
    method hasText (line 17126) | hasText() {
    method shouldShowUploadButton (line 17129) | shouldShowUploadButton() {
    method moveCaretToEndOfText (line 17132) | moveCaretToEndOfText() {
    method renderUploadButton (line 17135) | renderUploadButton() {
    method renderEmojiPickerButton (line 17155) | renderEmojiPickerButton() {
    method renderEmojiPicker (line 17171) | renderEmojiPicker() {
    method renderGifPickerButton (line 17187) | renderGifPickerButton() {
    method renderGifPicker (line 17203) | renderGifPicker() {
    method renderSendButton (line 17217) | renderSendButton() {
    method renderButtons (line 17233) | renderButtons() {
    method render (line 17248) | render() {
  function L (line 17500) | function L() {
  class list_option_ListAttributeOption (line 17542) | class list_option_ListAttributeOption extends o.Component {
    method constructor (line 17543) | constructor(...e) {
    method render (line 17559) | render() {
  function F (line 17578) | function F(e, t, n) {
  class list_options_ListOptions (line 17591) | class list_options_ListOptions extends o.Component {
    method constructor (line 17592) | constructor(...e) {
    method componentDidMount (line 17600) | componentDidMount() {
    method componentWillUnmount (line 17605) | componentWillUnmount() {
    method renderOption (line 17608) | renderOption(e, t) {
    method render (line 17619) | render() {
  function H (line 17629) | function H(e, t, n) {
  class list_options_modal_ListOptionsModal (line 17642) | class list_options_modal_ListOptionsModal extends o.Component {
    method constructor (line 17643) | constructor(...e) {
    method findDomElement (line 17650) | findDomElement(e) {
    method getListDimensionsWithinFrame (line 17653) | getListDimensionsWithinFrame() {
    method getListRefParentFrameDimensions (line 17658) | getListRefParentFrameDimensions() {
    method shouldOpenListOptionsUpwards (line 17662) | shouldOpenListOptionsUpwards() {
    method calculateModalPositionStyles (line 17669) | calculateModalPositionStyles() {
    method renderModalFrame (line 17680) | renderModalFrame() {
    method renderModal (line 17704) | renderModal() {
    method render (line 17711) | render() {
  function V (line 17721) | function V(e, t, n) {
  class mobile_list_MobileList (line 17734) | class mobile_list_MobileList extends o.Component {
    method constructor (line 17735) | constructor(...e) {
    method componentDidMount (line 17742) | componentDidMount() {
    method renderOptions (line 17745) | renderOptions() {
    method render (line 17751) | render() {
  function G (line 17775) | function G(e, t, n) {
  class list_ListAttribute (line 17792) | class list_ListAttribute extends o.Component {
    method constructor (line 17793) | constructor(...e) {
    method getDerivedStateFromProps (line 17820) | static getDerivedStateFromProps(e, t) {
    method componentDidMount (line 17825) | componentDidMount() {
    method componentWillUnmount (line 17836) | componentWillUnmount() {
    method getPlaceholder (line 17845) | getPlaceholder() {
    method renderIcon (line 17848) | renderIcon() {
    method renderErrorMessage (line 17854) | renderErrorMessage() {
    method renderOptionsModal (line 17857) | renderOptionsModal() {
    method renderList (line 17867) | renderList() {
    method renderMobileList (line 17887) | renderMobileList() {
    method renderUnsubmitted (line 17901) | renderUnsubmitted() {
    method renderSubmitted (line 17910) | renderSubmitted() {
    method render (line 17926) | render() {
  class video_player_captions_VideoPlayerCaptions (line 17945) | class video_player_captions_VideoPlayerCaptions extends r.Component {
    method splitCaptions (line 17946) | splitCaptions() {
    method getCurrentCaption (line 17949) | getCurrentCaption() {
    method render (line 17956) | render() {
  function y (line 17988) | function y(e, t, n) {
  class video_player_scrubber_VideoPlayerScrubber (line 18001) | class video_player_scrubber_VideoPlayerScrubber extends r.Component {
    method constructor (line 18002) | constructor(...e) {
    method getDerivedStateFromProps (line 18025) | static getDerivedStateFromProps(e, t) {
    method render (line 18032) | render() {
  function O (line 18052) | function O(e, t, n) {
  class video_player_controls_VideoPlayerControls (line 18065) | class video_player_controls_VideoPlayerControls extends r.PureComponent {
    method constructor (line 18066) | constructor(...e) {
    method getTimeRemaining (line 18075) | getTimeRemaining() {
    method render (line 18082) | render() {
  function S (line 18139) | function S(e, t, n) {
  class video_player_VideoPlayer (line 18170) | class video_player_VideoPlayer extends r.PureComponent {
    method constructor (line 18171) | constructor(...e) {
    method storeVideoInfo (line 18277) | storeVideoInfo() {
    method componentDidMount (line 18283) | componentDidMount() {
    method componentWillUnmount (line 18289) | componentWillUnmount() {
    method componentDidUpdate (line 18293) | componentDidUpdate(e, t) {
    method playVideo (line 18307) | playVideo() {
    method video (line 18310) | video() {
    method videoHasAudio (line 18313) | videoHasAudio() {
    method renderCaptions (line 18317) | renderCaptions() {
    method renderOverlay (line 18328) | renderOverlay() {
    method getButtonAriaLabel (line 18334) | getButtonAriaLabel() {
    method renderButton (line 18342) | renderButton() {
    method renderButtonIcon (line 18356) | renderButtonIcon() {
    method renderLoadingPanel (line 18360) | renderLoadingPanel() {
    method renderControls (line 18377) | renderControls() {
    method getStyle (line 18404) | getStyle() {
    method getVideoStyle (line 18410) | getVideoStyle() {
    method getSrc (line 18413) | getSrc() {
    method shouldShiftBottomOverlayUp (line 18418) | shouldShiftBottomOverlayUp() {
    method render (line 18425) | render() {
  class button_group_option_ButtonGroupOption (line 18545) | class button_group_option_ButtonGroupOption extends r.Component {
    method constructor (line 18546) | constructor(...e) {
    method renderText (line 18562) | renderText() {
    method render (line 18568) | render() {
  function u (line 18588) | function u(e, t, n) {
  class button_group_ButtonGroupAttribute (line 18604) | class button_group_ButtonGroupAttribute extends r.Component {
    method constructor (line 18605) | constructor(...e) {
    method renderOption (line 18616) | renderOption(e, t) {
    method renderOptions (line 18630) | renderOptions() {
    method render (line 18638) | render() {
  function p (line 18659) | function p(e, t, n) {
  class BlockGroup (line 18675) | class BlockGroup {
    method constructor (line 18676) | constructor() {
    method addBlock (line 18679) | addBlock(e) {
  class BlockGroups (line 18683) | class BlockGroups {
    method constructor (line 18684) | constructor() {
    method addBlock (line 18687) | addBlock(e) {
  class comment_body_CommentBody (line 18693) | class comment_body_CommentBody extends o.PureComponent {
    method getBlockGroups (line 18694) | getBlockGroups() {
    method renderBlockGroup (line 18698) | renderBlockGroup(e, t, n) {
    method render (line 18741) | render() {
  function y (line 18755) | function y() {
  class comment_Comment (line 18766) | class comment_Comment extends o.Component {
    method constructor (line 18767) | constructor(...e) {
    method isMessengerCard (line 18780) | isMessengerCard() {
    method shouldRenderCommentBody (line 18783) | shouldRenderCommentBody() {
    method shouldRenderInlineMetadata (line 18786) | shouldRenderInlineMetadata() {
    method renderTimestamp (line 18789) | renderTimestamp() {
    method renderBlocks (line 18796) | renderBlocks() {
    method renderSticker (line 18830) | renderSticker() {
    method renderBody (line 18833) | renderBody() {
    method render (line 18837) | render() {
  class comment_container_CommentContainer (line 18888) | class comment_container_CommentContainer extends o.Component {
    method renderAdminAvatar (line 18889) | renderAdminAvatar() {
    method renderComment (line 18896) | renderComment() {
    method render (line 18918) | render() {
  function g (line 18969) | function g(e, t, n) {
  class chat_card_ChatCard (line 18982) | class chat_card_ChatCard extends r.Component {
    method constructor (line 18983) | constructor(...e) {
    method renderAdminAvatar (line 18993) | renderAdminAvatar() {
    method renderInlineMetadata (line 19003) | renderInlineMetadata() {
    method renderStickerOrBlocks (line 19006) | renderStickerOrBlocks() {
    method renderSingleBody (line 19015) | renderSingleBody() {
    method renderAuthor (line 19018) | renderAuthor() {
    method renderFullBody (line 19031) | renderFullBody() {
    method render (line 19049) | render() {
  class chat_card_group_ChatCardGroup (line 19084) | class chat_card_group_ChatCardGroup extends r.Component {
    method buildNewPart (line 19085) | buildNewPart() {
    method cleanBlockWithPattern (line 19088) | cleanBlockWithPattern(e, t) {
    method cleanAdjacentBlocks (line 19091) | cleanAdjacentBlocks(e, t) {
    method cleanParts (line 19098) | cleanParts(e) {
    method splitPartByBlockType (line 19108) | splitPartByBlockType() {
    method renderCommentContainer (line 19122) | renderCommentContainer(e, t, n) {
    method renderChatCard (line 19141) | renderChatCard(e, t, n, r) {
    method renderPart (line 19163) | renderPart(e, t, n, r) {
    method renderParts (line 19168) | renderParts(e) {
    method render (line 19175) | render() {
  function v (line 19250) | function v(e, t, n) {
  class team_avatar_TeamAvatar (line 19266) | class team_avatar_TeamAvatar extends r.PureComponent {
    method constructor (line 19267) | constructor(...e) {
    method render (line 19286) | render() {
  function l (line 19317) | function l() {
  function c (line 19328) | function c(e, t) {
  function d (line 19340) | function d(e) {
  function p (line 19355) | function p(e, t, n) {
  method constructor (line 19372) | constructor(...e) {
  method componentDidUpdate (line 19381) | componentDidUpdate(e) {
  method componentWillUnmount (line 19393) | componentWillUnmount() {
  method render (line 19396) | render() {
  function d (line 19412) | function d() {
  function p (line 19423) | function p(e, t) {
  function u (line 19435) | function u(e, t, n) {
  class phone_number_input_PhoneNumberInput (line 19448) | class phone_number_input_PhoneNumberInput extends r.PureComponent {
    method constructor (line 19449) | constructor(...e) {
    method renderFlag (line 19462) | renderFlag() {
    method renderPlaceholder (line 19468) | renderPlaceholder() {
    method isDisabled (line 19483) | isDisabled() {
    method renderInput (line 19487) | renderInput() {
    method render (line 19504) | render() {
  function h (line 19542) | function h(e, t, n) {
  class phone_number_PhoneNumberAttribute (line 19558) | class phone_number_PhoneNumberAttribute extends r.Component {
    method constructor (line 19559) | constructor(...e) {
    method getPlaceholder (line 19573) | getPlaceholder() {
    method getErrorMessage (line 19576) | getErrorMessage() {
    method isInvalid (line 19583) | isInvalid() {
    method render (line 19586) | render() {
  function a (line 19757) | function a(e) {
  function o (line 19761) | function o(e) {
  function E (line 20010) | function E() {
  function S (line 20041) | function S() {
  function $ (line 20110) | function $(e, t, n) {
  class launcher_Launcher (line 20123) | class launcher_Launcher extends r.Component {
    method constructor (line 20124) | constructor(...e) {
    method componentDidMount (line 20139) | componentDidMount() {
    method componentWillUnmount (line 20147) | componentWillUnmount() {
    method renderSelfServeIcon (line 20150) | renderSelfServeIcon() {
    method renderLauncherIcon (line 20154) | renderLauncherIcon() {
    method render (line 20166) | render() {
  class launcher_CrossOriginLauncherFrame (line 20222) | class launcher_CrossOriginLauncherFrame extends r.Component {
    method render (line 20223) | render() {
  class launcher_LauncherFrame (line 20291) | class launcher_LauncherFrame extends r.Component {
    method render (line 20292) | render() {
  function ie (line 20309) | function ie(e, t, n) {
  function le (line 20323) | function le({
  class launcher_badge_LauncherBadge (line 20416) | class launcher_badge_LauncherBadge extends r.Component {
    method constructor (line 20417) | constructor(...e) {
    method componentDidMount (line 20432) | componentDidMount() {
    method componentDidUpdate (line 20438) | componentDidUpdate(e) {
    method render (line 20445) | render() {
  class launcher_badge_LauncherBadgeFrame (line 20483) | class launcher_badge_LauncherBadgeFrame extends r.Component {
    method render (line 20484) | render() {
  class cross_origin_frames_launcher_badge_LauncherBadgeFrame (line 20498) | class cross_origin_frames_launcher_badge_LauncherBadgeFrame extends r.Co...
    method render (line 20499) | render() {
  function Be (line 20535) | function Be() {
  function Le (line 20601) | function Le() {
  function We (line 20627) | function We(e) {
  function Ge (line 20677) | function Ge(e, t, n) {
  class progress_bar_ProgressBar (line 20690) | class progress_bar_ProgressBar extends r.PureComponent {
    method constructor (line 20691) | constructor(...e) {
    method componentDidMount (line 20696) | componentDidMount() {
    method componentDidUpdate (line 20699) | componentDidUpdate(e) {
    method componentWillUnmount (line 20704) | componentWillUnmount() {
    method startTrickleWork (line 20707) | startTrickleWork() {
    method finishLoading (line 20731) | finishLoading() {
    method resetBar (line 20738) | resetBar() {
    method clearInterval (line 20741) | clearInterval() {
    method getTransform (line 20744) | getTransform() {
    method getTransition (line 20749) | getTransition() {
    method render (line 20754) | render() {
  function Ke (line 20777) | function Ke(e, t, n) {
  class messenger_sheet_proxy_MessengerSheetProxy (line 20791) | class messenger_sheet_proxy_MessengerSheetProxy extends r.Component {
    method constructor (line 20792) | constructor(...e) {
    method componentDidMount (line 20798) | componentDidMount() {
    method setupSheetFrame (line 20805) | setupSheetFrame() {
    method componentWillUnmount (line 20812) | componentWillUnmount() {
    method render (line 20821) | render() {
  function tt (line 20847) | function tt(e, t, n) {
  class messenger_sheet_body_MessengerSheetBody (line 20860) | class messenger_sheet_body_MessengerSheetBody extends r.PureComponent {
    method constructor (line 20861) | constructor(...e) {
    method componentDidMount (line 20886) | componentDidMount() {
    method componentDidUpdate (line 20892) | componentDidUpdate() {
    method componentWillUnmount (line 20895) | componentWillUnmount() {
    method shouldSubmitForm (line 20899) | shouldSubmitForm() {
    method renderSheetForm (line 20903) | renderSheetForm() {
    method render (line 20924) | render() {
  function nt (line 20946) | function nt() {
  class messenger_sheet_MessengerSheet (line 20957) | class messenger_sheet_MessengerSheet extends r.PureComponent {
    method render (line 20958) | render() {
  function ct (line 21051) | function ct(e, t, n) {
  class messenger_alerts_MessengerAlerts (line 21064) | class messenger_alerts_MessengerAlerts extends r.PureComponent {
    method constructor (line 21065) | constructor(...e) {
    method isPageHomescreen (line 21078) | isPageHomescreen() {
    method getStyle (line 21081) | getStyle() {
    method render (line 21085) | render() {
  class booting_header_BootingHeader (line 21156) | class booting_header_BootingHeader extends r.PureComponent {
    method constructor (line 21157) | constructor(...e) {
    method componentDidMount (line 21170) | componentDidMount() {
    method render (line 21175) | render() {
  function wt (line 21179) | function wt() {
  function _t (line 21210) | function _t() {
  function Pt (line 21221) | function Pt(e) {
  function Tt (line 21253) | function Tt(e, t, n) {
  class messenger_header_buttons_MessengerHeaderButtons (line 21266) | class messenger_header_buttons_MessengerHeaderButtons extends r.Component {
    method constructor (line 21267) | constructor(...e) {
    method getDownloadTranscriptButtonOpacity (line 21283) | getDownloadTranscriptButtonOpacity() {
    method renderBackButton (line 21287) | renderBackButton() {
    method renderDownloadTranscriptButton (line 21298) | renderDownloadTranscriptButton() {
    method render (line 21306) | render() {
  function Ft (line 21355) | function Ft({ size: e }) {
  function $t (line 21403) | function $t({ compact: e, inHeader: t }) {
  function Xt (line 21419) | function Xt({ inHeader: e }) {
  function Yt (line 21440) | function Yt({ inHeader: e }) {
  class admin_avatar_stack_AdminAvatarStack (line 21471) | class admin_avatar_stack_AdminAvatarStack extends r.PureComponent {
    method renderAvatarWithTooltip (line 21472) | renderAvatarWithTooltip(e, t) {
    method renderAdminAvatars (line 21478) | renderAdminAvatars() {
    method render (line 21497) | render() {
  function sn (line 21518) | function sn({ compact: e, inHeader: t }) {
  function gn (line 21562) | function gn() {
  class team_profile_TeamProfile (line 21573) | class team_profile_TeamProfile extends r.Component {
    method getFullStyle (line 21574) | getFullStyle() {
    method getCompactStyle (line 21578) | getCompactStyle() {
    method renderFull (line 21582) | renderFull() {
    method renderCompact (line 21604) | renderCompact() {
    method renderCompactContents (line 21624) | renderCompactContents() {
    method render (line 21645) | render() {
  class conversation_participant_ConversationParticipant (line 21732) | class conversation_participant_ConversationParticipant extends r.Compone...
    method constructor (line 21733) | constructor(...e) {
    method getParticipantNameStyles (line 21746) | getParticipantNameStyles() {
    method render (line 21749) | render() {
  function ir (line 21981) | function ir() {
  class admin_profile_AdminProfile (line 21992) | class admin_profile_AdminProfile extends r.Component {
    method getFullStyle (line 21993) | getFullStyle() {
    method getCompactStyle (line 21997) | getCompactStyle() {
    method handleSocialAccountClick (line 22001) | handleSocialAccountClick(e) {
    method handleCalendarIconClick (line 22004) | handleCalendarIconClick(e) {
    method hasActiveOrAwayResponse (line 22007) | hasActiveOrAwayResponse() {
    method shouldRenderParticipants (line 22010) | shouldRenderParticipants() {
    method activeOrAwayInWords (line 22013) | activeOrAwayInWords() {
    method adminState (line 22018) | adminState() {
    method humanAdminState (line 22021) | humanAdminState() {
    method renderActiveOrAwayState (line 22028) | renderActiveOrAwayState() {
    method renderPublicLinks (line 22034) | renderPublicLinks() {
    method renderCalendarIcon (line 22046) | renderCalendarIcon() {
    method renderSocialAccountIcons (line 22062) | renderSocialAccountIcons() {
    method renderSocialAccountIcon (line 22081) | renderSocialAccountIcon(e) {
    method locationExists (line 22091) | locationExists() {
    method getLocationText (line 22097) | getLocationText(e) {
    method getTimeText (line 22101) | getTimeText(e) {
    method renderLocation (line 22104) | renderLocation() {
    method renderRemainingParticipantCount (line 22115) | renderRemainingParticipantCount(e) {
    method renderConversationParticipants (line 22120) | renderConversationParticipants() {
    method renderJobTitleAndLocation (line 22141) | renderJobTitleAndLocation() {
    method renderFull (line 22160) | renderFull() {
    method renderCompactBody (line 22197) | renderCompactBody() {
    method renderParticipantCompactBody (line 22216) | renderParticipantCompactBody() {
    method renderCompact (line 22239) | renderCompact() {
    method render (line 22261) | render() {
  function br (line 22403) | function br(e, t) {
  function gr (line 22415) | function gr(e) {
  function fr (line 22430) | function fr(e, t, n) {
  class conversation_header_ConversationHeader (line 22443) | class conversation_header_ConversationHeader extends r.PureComponent {
    method constructor (line 22444) | constructor(...e) {
    method componentDidMount (line 22447) | componentDidMount() {
    method componentDidUpdate (line 22450) | componentDidUpdate(e) {
    method calculateHeight (line 22455) | calculateHeight() {
    method render (line 22460) | render() {
  class conversations_header_ConversationsHeader (line 22616) | class conversations_header_ConversationsHeader extends r.Component {
    method constructor (line 22617) | constructor(...e) {
    method componentDidMount (line 22630) | componentDidMount() {
    method renderBody (line 22635) | renderBody() {
    method render (line 22638) | render() {
  function Ar (line 22661) | function Ar(e, t, n) {
  class fit_text_FitText (line 22674) | class fit_text_FitText extends r.PureComponent {
    method constructor (line 22675) | constructor(...e) {
    method componentDidMount (line 22691) | componentDidMount() {
    method componentDidUpdate (line 22694) | componentDidUpdate() {
    method getCanvasFontSize (line 22697) | getCanvasFontSize() {
    method fitTextSize (line 22701) | fitTextSize() {
    method getStyle (line 22719) | getStyle() {
    method render (line 22724) | render() {
  function Gr (line 22820) | function Gr(e, t, n) {
  class home_screen_header_HomeScreenHeader (line 22834) | class home_screen_header_HomeScreenHeader extends r.PureComponent {
    method constructor (line 22835) | constructor(...e) {
    method componentDidMount (line 22844) | componentDidMount() {
    method render (line 22847) | render() {
  class empty_header_EmptyHeader (line 22909) | class empty_header_EmptyHeader extends r.PureComponent {
    method render (line 22910) | render() {
  function Yr (line 22914) | function Yr() {
  class booting_Booting (line 23025) | class booting_Booting extends r.Component {
    method constructor (line 23026) | constructor(...e) {
    method componentDidMount (line 23039) | componentDidMount() {
    method componentWillUnmount (line 23044) | componentWillUnmount() {
    method renderError (line 23047) | renderError() {
    method render (line 23068) | render() {
  method onRetryClick (line 23103) | onRetryClick(t, n, r, a, o) {
  method onRetryClick (line 23109) | onRetryClick() {
  class blocking_loader_BlockingLoader (line 23121) | class blocking_loader_BlockingLoader extends r.Component {
    method render (line 23122) | render() {
  class messenger_trigger_screen_MessengerTriggerScreen (line 23130) | class messenger_trigger_screen_MessengerTriggerScreen extends r.PureComp...
    method renderError (line 23131) | renderError() {
    method renderLoading (line 23152) | renderLoading() {
    method render (line 23155) | render() {
  function oa (line 23162) | function oa() {
  class empty_screen_EmptyScreen (line 23187) | class empty_screen_EmptyScreen extends r.PureComponent {
    method render (line 23188) | render() {
  method handleCloseMessenger (line 23216) | handleCloseMessenger() {
  function xa (line 23324) | function xa({ variant: e }) {
  function ya (line 23337) | function ya(e, t, n) {
  class new_conversation_button_NewConversationButton (line 23350) | class new_conversation_button_NewConversationButton extends r.PureCompon...
    method constructor (line 23351) | constructor(...e) {
    method render (line 23367) | render() {
  function Ca (line 23438) | function Ca(e, t, n) {
  class new_message_button_NewMessageButton (line 23451) | class new_message_button_NewMessageButton extends r.PureComponent {
    method constructor (line 23452) | constructor(...e) {
    method render (line 23468) | render() {
  function wa (line 23478) | function wa() {
  function Ea (line 23489) | function Ea(e) {
  function Ba (line 23524) | function Ba() {
  function Va (line 23598) | function Va({ secondaryVariant: e }) {
  function Ga (line 23653) | function Ga({ variant: e }) {
  function $a (line 23662) | function $a({ secondaryVariant: e }) {
  function no (line 23718) | function no(e, t, n) {
  class conversation_summary_ConversationSummary (line 23731) | class conversation_summary_ConversationSummary extends r.Component {
    method constructor (line 23732) | constructor(...e) {
    method componentDidMount (line 23744) | componentDidMount() {
    method getConversationParts (line 23747) | getConversationParts() {
    method getFirstConversationPart (line 23750) | getFirstConversationPart() {
    method getAuthorName (line 23754) | getAuthorName(e) {
    method getTeamName (line 23757) | getTeamName() {
    method getTeamAdmins (line 23761) | getTeamAdmins() {
    method shouldComponentUpdate (line 23765) | shouldComponentUpdate(e, t) {
    method shouldRenderParticipants (line 23768) | shouldRenderParticipants() {
    method renderParticipantsAndAuthor (line 23771) | renderParticipantsAndAuthor(e) {
    method getAuthorNameForPrefix (line 23777) | getAuthorNameForPrefix(e, t) {
    method renderSummaryContentAuthorPrefix (line 23783) | renderSummaryContentAuthorPrefix(e) {
    method renderSummaryContent (line 23788) | renderSummaryContent(e) {
    method render (line 23798) | render() {
  function ro (line 23845) | function ro(e, t) {
  function ao (line 23857) | function ao(e, t, n) {
  function oo (line 23870) | function oo(e) {
  function so (line 23899) | function so({ conversations: e, onClickConversation: t, hasMoreConversat...
  function lo (line 23939) | function lo({ conversation: e, onClickConversation: t }) {
  function po (line 23946) | function po() {
  function ho (line 23974) | function ho() {
  function fo (line 24043) | function fo({ onClick: e }) {
  function ii (line 24392) | function ii({ inArticle: e = !1 }) {
  function si (line 24417) | function si() {
  function li (line 24429) | function li({ inArticle: e = !1, withBorderTop: t = !1, onlyShowAfterArt...
  function di (line 24445) | function di({ html: e }) {
  function pi (line 24449) | function pi(e, t) {
  function hi (line 24460) | function hi(e) {
  function bi (line 24475) | function bi(e) {
  function gi (line 24487) | function gi() {
  function Ci (line 24554) | function Ci({ text: e, subText: t, onClick: n, children: r, count: o }) {
  function Ei (line 24623) | function Ei() {
  function Pi (line 24728) | function Pi(e) {
  function Ti (line 24764) | function Ti() {
  function j (line 24821) | function j() {
  function zi (line 24892) | function zi(e) {
  function Ui (line 25146) | function Ui() {
  function js (line 25409) | function js() {
  function Cs (line 25431) | function Cs({
  function ws (line 25505) | function ws({ title: e, show: t, onHeightChange: n }) {
  function _s (line 25521) | function _s() {
  function Bs (line 25699) | function Bs({ showBody: e }) {
  function As (line 25725) | function As({ trackMetric: e = !0, index: t }) {
  function Ms (line 25818) | function Ms({ onClickButton: e }) {
  function Is (line 25830) | function Is({ onClickButton: e }) {
  function zs (line 25854) | function zs({ height: e }) {
  class home_screen_messenger_card_HomeScreenMessengerCard (line 26058) | class home_screen_messenger_card_HomeScreenMessengerCard extends r.PureC...
    method getClassName (line 26059) | getClassName() {
    method render (line 26065) | render() {
  function dl (line 26098) | function dl(e) {
  function pl (line 26145) | function pl(e, t, n) {
  class home_screen_HomeScreen (line 26158) | class home_screen_HomeScreen extends r.PureComponent {
    method constructor (line 26159) | constructor(...e) {
    method componentDidMount (line 26171) | componentDidMount() {
    method getBodyStyle (line 26174) | getBodyStyle() {
    method render (line 26178) | render() {
  function Ml (line 26350) | function Ml(e, t, n) {
  class conversations_Conversations (line 26364) | class conversations_Conversations extends r.Component {
    method constructor (line 26365) | constructor(...e) {
    method componentDidMount (line 26393) | componentDidMount() {
    method shouldPageConversations (line 26398) | shouldPageConversations() {
    method getSortedConversations (line 26402) | getSortedConversations() {
    method renderLoading (line 26412) | renderLoading() {
    method renderConversations (line 26415) | renderConversations() {
    method renderEmpty (line 26435) | renderEmpty() {
    method renderBody (line 26451) | renderBody() {
    method render (line 26459) | render() {
  function Wl (line 26579) | function Wl(e, t, n) {
  class intercom_link_IntercomLink (line 26592) | class intercom_link_IntercomLink extends r.Component {
    method constructor (line 26593) | constructor(...e) {
    method addMetric (line 26625) | addMetric(e) {
    method render (line 26630) | render() {
  function Kl (line 26690) | function Kl() {
  function Zl (line 26701) | function Zl(e, t, n) {
  class conversation_body_ConversationBody (line 26714) | class conversation_body_ConversationBody extends r.Component {
    method constructor (line 26715) | constructor(...e) {
    method componentDidMount (line 26782) | componentDidMount() {
    method componentDidUpdate (line 26788) | componentDidUpdate(e) {
    method didFetchingEnd (line 26794) | didFetchingEnd(e) {
    method didPartsLengthChange (line 26798) | didPartsLengthChange(e) {
    method didHeaderExpand (line 26801) | didHeaderExpand(e) {
    method scrollToTop (line 26804) | scrollToTop() {
    method getPartsStyle (line 26808) | getPartsStyle() {
    method getPartsRef (line 26811) | getPartsRef() {
    method renderParts (line 26814) | renderParts() {
    method renderBottomGroup (line 26850) | renderBottomGroup() {
    method render (line 26890) | render() {
  function ic (line 26955) | function ic(e, t, n) {
  class conversation_ended_ConversationEnded (line 26968) | class conversation_ended_ConversationEnded extends r.Component {
    method constructor (line 26969) | constructor(...e) {
    method componentDidMount (line 26972) | componentDidMount() {
    method handleHeightChange (line 26975) | handleHeightChange() {
    method render (line 26979) | render() {
  function cc (line 27031) | function cc(e, t, n) {
  class continue_on_whatsapp_button_ContinueOnWhatsappButton (line 27044) | class continue_on_whatsapp_button_ContinueOnWhatsappButton extends r.Pur...
    method constructor (line 27045) | constructor(...e) {
    method render (line 27059) | render() {
  class whatsapp_switched_footer_WhatsappSwitchedFooter (line 27103) | class whatsapp_switched_footer_WhatsappSwitchedFooter extends r.Component {
    method constructor (line 27104) | constructor(...e) {
    method componentDidMount (line 27117) | componentDidMount() {
    method handleHeightChange (line 27120) | handleHeightChange() {
    method render (line 27124) | render() {
  class conversation_footer_ConversationFooter (line 27139) | class conversation_footer_ConversationFooter extends r.Component {
    method componentWillUnmount (line 27140) | componentWillUnmount() {
    method shouldShowReactionPicker (line 27143) | shouldShowReactionPicker() {
    method shouldShowWhatsAppSwitch (line 27147) | shouldShowWhatsAppSwitch() {
    method renderComposer (line 27150) | renderComposer() {
    method renderReactionPicker (line 27183) | renderReactionPicker() {
    method renderConversationEnded (line 27194) | renderConversationEnded() {
    method renderComposerOrConversationEnded (line 27210) | renderComposerOrConversationEnded() {
    method renderWhatsappSwitchedFooter (line 27215) | renderWhatsappSwitchedFooter() {
    method render (line 27220) | render() {
  function kc (line 27376) | function kc(e, t, n) {
  class conversation_Conversation (line 27389) | class conversation_Conversation extends r.Component {
    method constructor (line 27390) | constructor(...e) {
    method componentDidMount (line 27480) | componentDidMount() {
    method maybeDeliverBotIntro (line 27486) | maybeDeliverBotIntro() {
    method shouldDeliverBotIntro (line 27490) | shouldDeliverBotIntro() {
    method addReplyMetric (line 27494) | addReplyMetric(e) {
    method addAdminReplyMetric (line 27498) | addAdminReplyMetric(e, t) {
    method addOperatorReplyMetric (line 27504) | addOperatorReplyMetric(e, t) {
    method addOperatorFormMetrics (line 27512) | addOperatorFormMetrics(e, t) {
    method componentDidUpdate (line 27531) | componentDidUpdate(e) {
    method handleConversationRead (line 27538) | handleConversationRead() {
    method isComposerDisabled (line 27541) | isComposerDisabled() {
    method isInboundBotWithDisabledComposer (line 27547) | isInboundBotWithDisabledComposer() {
    method isLastPartSending (line 27551) | isLastPartSending() {
    method isComposerHidden (line 27557) | isComposerHidden() {
    method shouldMarkConversationAsRead (line 27567) | shouldMarkConversationAsRead(e) {
    method shouldShowFooter (line 27572) | shouldShowFooter() {
    method renderBody (line 27583) | renderBody() {
    method renderFooter (line 27611) | renderFooter() {
    method render (line 27643) | render() {
  function Ic (line 27819) | function Ic(e) {
  function Fc (line 27890) | function Fc(e) {
  function qc (line 27907) | function qc(e, t, n) {
  class messenger_close_button_MessengerCloseButton (line 27920) | class messenger_close_button_MessengerCloseButton extends r.Component {
    method constructor (line 27921) | constructor(...e) {
    method getCloseButtonBodyStyle (line 27935) | getCloseButtonBodyStyle() {
    method render (line 27943) | render() {
  function $c (line 27986) | function $c() {
  function Xc (line 27997) | function Xc(e, t, n) {
  class messenger_Messenger (line 28010) | class messenger_Messenger extends r.Component {
    method constructor (line 28011) | constructor(...e) {
    method componentDidMount (line 28058) | componentDidMount() {
    method componentDidUpdate (line 28069) | componentDidUpdate(e) {
    method componentWillUnmount (line 28074) | componentWillUnmount() {
    method getDerivedStateFromProps (line 28079) | static getDerivedStateFromProps(e, t) {
    method focusMessenger (line 28088) | focusMessenger() {
    method getHeaderPercentageCollapsed (line 28095) | getHeaderPercentageCollapsed() {
    method addMobileTagsAndClasses (line 28099) | addMobileTagsAndClasses() {
    method removeMobileTagsAndClasses (line 28108) | removeMobileTagsAndClasses() {
    method restoreMobileScrollPosition (line 28117) | restoreMobileScrollPosition() {
    method getClassName (line 28129) | getClassName() {
    method renderLink (line 28138) | renderLink(e) {
    method render (line 28151) | render() {
  function Kc (line 28232) | function Kc(e) {
  function Qc (line 28297) | function Qc(e, t, n) {
  class messenger_MessengerFrame (line 28310) | class messenger_MessengerFrame extends r.Component {
    method constructor (line 28311) | constructor(...e) {
    method componentDidMount (line 28319) | componentDidMount() {
    method render (line 28322) | render() {
  function td (line 28357) | function td(e, t, n) {
  class messenger_MessengerCrossOriginFrame (line 28370) | class messenger_MessengerCrossOriginFrame extends r.Component {
    method constructor (line 28371) | constructor(...e) {
    method componentDidMount (line 28378) | componentDidMount() {
    method componentWillUnmount (line 28381) | componentWillUnmount() {
    method render (line 28384) | render() {
  class page_title_notification_PageTitleNotification (line 28404) | class page_title_notification_PageTitleNotification extends r.Component {
    method getTitle (line 28405) | getTitle() {
    method setTitle (line 28408) | setTitle(e) {
    method maybeToggleTitle (line 28415) | maybeToggleTitle() {
    method componentDidMount (line 28425) | componentDidMount() {
    method componentWillUnmount (line 28430) | componentWillUnmount() {
    method render (line 28433) | render() {
  class gradient_CrossOriginGradientFrame (line 28458) | class gradient_CrossOriginGradientFrame extends r.Component {
    method render (line 28459) | render() {
  function dd (line 28465) | function dd(e, t, n) {
  class app_App (line 28514) | class app_App extends r.Component {
    method constructor (line 28515) | constructor(...e) {
    method componentDidMount (line 28522) | componentDidMount() {
    method componentDidUpdate (line 28535) | componentDidUpdate(e) {
    method componentWillUnmount (line 28544) | componentWillUnmount() {
    method shouldShowPageTitleNotification (line 28547) | shouldShowPageTitleNotification() {
    method renderBoundEventCreator (line 28556) | renderBoundEventCreator() {
    method renderApp (line 28566) | renderApp() {
    method render (line 28653) | render() {

FILE: tests/integrations/intercom/frame-modern.5069da72.js
  function t (line 3) | function t(t) {
  function n (line 15) | function n() {
  function s (line 31) | function s(t) {
  function d (line 1195) | function d(e, t) {
  function l (line 1207) | function l(e) {
  function p (line 1220) | function p(e, t, n) {
  function w (line 1292) | function w(e, t) {
  function E (line 1295) | function E(e=!1) {
  function I (line 1318) | function I() {
  function C (line 1323) | function C(e, t, n, r, i, o={}, s="m4_metric") {
  function T (line 1328) | function T() {
  function A (line 1331) | function A(e, t, n, r, i, s={}, c="m4_metric") {
  function R (line 1351) | function R(e) {
  function P (line 1354) | function P(e) {
  function M (line 1360) | function M(e) {
  function D (line 1366) | function D(e, t) {
  function k (line 1372) | function k(e, t, n) {
  function N (line 1379) | function N(e, t, n) {
  function U (line 1386) | function U(e, t) {
  function L (line 1390) | function L(e, t) {
  function x (line 1395) | function x(e) {
  function B (line 1401) | function B(e, t={}) {
  function $ (line 1412) | function $(e, t, n=!1) {
  function F (line 1421) | function F(e) {
  function V (line 1424) | function V(e, t, n, r, i, o) {
  function g (line 1495) | function g(e, t) {
  function m (line 1507) | function m(e) {
  function v (line 1520) | function v(e, t, n) {
  function O (line 1529) | function O(e, t) {
  function S (line 1551) | function S(e) {
  function j (line 1558) | function j(e, t, n, r, i, o=null, s=!1, c=null, a=null, u=!1) {
  function w (line 1588) | function w(e, t, n, r) {
  function E (line 1596) | function E(e) {
  function I (line 1601) | function I(e) {
  function C (line 1606) | function C(e, t, n) {
  function T (line 1618) | function T(e) {
  function A (line 1624) | function A(e) {
  function R (line 1630) | function R(e) {
  function P (line 1637) | function P(e) {
  function M (line 1643) | function M(e) {
  function D (line 1646) | function D(e) {
  function k (line 1671) | function k(e) {
  function N (line 1679) | function N(e) {
  function U (line 1688) | function U(e) {
  function L (line 1714) | function L(e=[]) {
  function x (line 1717) | function x(e) {
  function B (line 1724) | function B(e) {
  function $ (line 1731) | function $(e) {
  function F (line 1753) | function F(e) {
  function V (line 1759) | function V(e) {
  function H (line 1789) | function H(e) {
  function G (line 1802) | function G(e) {
  function q (line 1808) | function q(e) {
  function z (line 1811) | function z(e=[]) {
  function W (line 1814) | function W(e) {
  function J (line 1821) | function J(e) {
  function Y (line 1832) | function Y(e) {
  function Q (line 1837) | function Q(e) {
  function K (line 1864) | function K(e) {
  function X (line 1870) | function X(e) {
  function ee (line 1906) | function ee(e) {
  function te (line 1922) | function te(e) {
  function ne (line 1983) | function ne(e) {
  function re (line 2000) | function re(e) {
  function ie (line 2004) | function ie(e) {
  function oe (line 2012) | function oe(e) {
  function se (line 2020) | function se(e) {
  function ce (line 2027) | function ce(e) {
  function ae (line 2030) | function ae(e, t) {
  function ue (line 2034) | function ue(e) {
  function de (line 2045) | function de(e, t) {
  function le (line 2049) | function le(e) {
  function pe (line 2055) | function pe(e, t) {
  function fe (line 2101) | function fe(e) {
  function be (line 2107) | function be(e) {
  function he (line 2113) | function he(e) {
  function ge (line 2122) | function ge(e) {
  function me (line 2133) | function me(e) {
  function ve (line 2143) | function ve(e) {
  function Oe (line 2148) | function Oe(e, t) {
  function _e (line 2166) | function _e(e) {
  function ye (line 2182) | function ye(e) {
  function Se (line 2189) | function Se(e) {
  function je (line 2193) | function je() {
  function c (line 3089) | function c(e) {
  function d (line 3098) | function d(e, t, n, i, o, s, d, l=!0) {
  function l (line 3137) | function l(e) {
  function p (line 3147) | function p(e) {
  function O (line 3293) | function O(e, t, n=!1, r=null) {
  function _ (line 3334) | function _(e, t, n, r) {
  function y (line 3347) | function y(e, t) {
  function S (line 3370) | function S(e) {
  function j (line 3376) | function j(e) {
  function w (line 3382) | function w(e, t, n, r) {
  function E (line 3409) | function E(e, t, n, r=!1, i=!1, o=null, s=null, c=!1, a) {
  function I (line 3453) | function I(e, t, n, r=Date.now()) {
  function C (line 3462) | function C(e, t, n, r, i) {
  function T (line 3472) | function T(e) {
  function A (line 3478) | function A(e, t, n, r) {
  function R (line 3487) | function R(e, t, n, r, i, o, s, c=!1) {
  function P (line 3500) | function P(e, t, n) {
  function M (line 3508) | function M(e, t, n) {
  function D (line 3520) | function D(e, t, n, r) {
  function k (line 3525) | function k(e, t, n) {
  function N (line 3533) | function N(e, t, n, r, i=new Date) {
  function U (line 3543) | function U(e) {
  function L (line 3549) | function L(e, t, n=new Date) {
  function x (line 3557) | function x(e, t, n, r, i, o, s, c, a) {
  function B (line 3598) | function B(e) {
  function $ (line 3608) | function $() {
  function F (line 3613) | function F(e) {
  function V (line 3619) | function V(e, t, n) {
  function l (line 3821) | function l(e, t, n) {
  function p (line 3830) | function p(e) {
  function f (line 3838) | function f(e, t) {
  class findAndValidateInputField (line 3842) | class findAndValidateInputField {
    method constructor (line 3843) | constructor(e, t) {
    method onChange (line 3866) | onChange(e) {
    method destroy (line 3869) | destroy() {
    method elementHasEmptyValue (line 3873) | elementHasEmptyValue(e) {
    method addListeners (line 3876) | addListeners() {
    method removeListeners (line 3882) | removeListeners() {
    method run (line 3888) | run() {
  class DelayedNodeVisibilityCheck (line 3898) | class DelayedNodeVisibilityCheck {
    method constructor (line 3899) | constructor(e, t, n, r) {
    method _initObserver (line 3923) | _initObserver() {
    method _check (line 3930) | _check() {
    method _startTimer (line 3935) | _startTimer() {
    method cancel (line 3942) | cancel() {
  function s (line 3999) | function s(e) {
  function c (line 4011) | function c() {
  function a (line 4014) | function a() {
  function u (line 4017) | function u() {
  function d (line 4021) | function d() {
  function l (line 4026) | function l(e=window) {
  function p (line 4031) | function p() {
  function f (line 4034) | function f(e=p().userAgent) {
  function b (line 4037) | function b() {
  function h (line 4051) | function h() {
  function g (line 4057) | function g() {
  function _ (line 4201) | function _() {
  function y (line 4209) | function y() {
  function S (line 4228) | function S(e=!1) {
  function j (line 4234) | function j(e=!1) {
  function w (line 4240) | function w(e="", t=!1, n=null) {
  function E (line 4248) | function E(e=!1) {
  function I (line 4254) | function I() {
  function C (line 4259) | function C() {
  function T (line 4264) | function T(e=!1) {
  function A (line 4270) | function A() {
  function R (line 4276) | function R() {
  function P (line 4281) | function P(e) {
  function M (line 4287) | function M(e) {
  function D (line 4294) | function D(e) {
  function k (line 4300) | function k(e) {
  function N (line 4303) | function N() {
  function U (line 4330) | function U(e, t="homescreen") {
  function L (line 4333) | function L(e, t) {
  function x (line 4344) | function x() {
  function B (line 4347) | function B() {
  function r (line 4576) | function r(e) {
  function i (line 4579) | function i(e) {
  function s (line 4746) | function s(e, t) {
  function c (line 4758) | function c(e) {
  function a (line 4771) | function a(e, t, n) {
  function y (line 4906) | function y(e, t) {
  function S (line 4920) | function S(e, t, n) {
  function S (line 5144) | function S(e, t, n) {
  function r (line 5198) | function r() {
  function r (line 5412) | function r(e) {
  function i (line 5416) | function i(e) {
  function h (line 5508) | function h(e, t, n) {
  class tour_progress_CheckIfTourReadyToProgress (line 5517) | class tour_progress_CheckIfTourReadyToProgress {
    method constructor (line 5518) | constructor(e, t) {
    method _check (line 5529) | _check() {
    method _evaluateProgressionByClick (line 5533) | _evaluateProgressionByClick() {
    method _pageNeedsRedirection (line 5542) | _pageNeedsRedirection() {
    method _nextStepIsPointer (line 5545) | _nextStepIsPointer() {
  function O (line 5600) | function O(e) {
  function _ (line 5603) | function _() {
  function y (line 5653) | function y() {
  function S (line 5674) | function S() {
  function j (line 5692) | function j(e, t) {
  function w (line 5700) | function w(e) {
  function E (line 5705) | function E() {
  function I (line 5717) | function I() {
  function C (line 5728) | function C() {
  function A (line 5761) | function A(e) {
  function R (line 5781) | function R(e, t) {
  function P (line 5788) | function P(e) {
  function M (line 5794) | function M(e) {
  function D (line 5836) | function D(e) {
  function k (line 5842) | function k(e) {
  function N (line 5861) | function N() {
  function U (line 5874) | function U(e) {
  method read (line 5885) | read(e, t) {
  method write (line 5892) | write(e, t, n={}) {
  method clear (line 5903) | clear(e, t={}) {
  function i (line 5949) | function i(e, t) {
  function o (line 5952) | function o(e, t={}) {
  function a (line 5976) | function a(e, t) {
  function u (line 5985) | function u(e) {
  function d (line 5988) | function d(e, t) {
  function l (line 5993) | function l(e, t) {
  function p (line 5998) | function p(e, t) {
  function f (line 6003) | function f(e) {
  function c (line 6273) | function c(e, t="unknown", n=1, o=10) {
  function a (line 6299) | function a() {
  function u (line 6304) | function u(e) {
  function d (line 6310) | function d(e) {
  function l (line 6316) | function l(e, t) {
  function p (line 6323) | function p(e) {
  function f (line 6329) | function f(e) {
  function b (line 6335) | function b(e) {
  function h (line 6341) | function h(e) {
  function g (line 6347) | function g(e) {
  function i (line 6364) | function i(e, t=!1) {
  function y (line 6430) | function y(e) {
  function j (line 6439) | function j(e, t) {
  function w (line 6451) | function w(e, t, n) {
  function a (line 6590) | function a(e) {
  function u (line 6596) | function u(e) {
  function d (line 6607) | function d(e, t, n) {
  function l (line 6620) | function l(e, t) {
  function p (line 6633) | function p(e, t, n) {
  function f (line 6646) | function f(e) {
  function d (line 6697) | function d(e, t, n=!1) {
  function l (line 6737) | function l(e) {
  function p (line 6743) | function p(e) {
  function f (line 6749) | function f(e) {
  function b (line 6755) | function b(e) {
  function r (line 6798) | function r(e) {
  function i (line 6812) | function i(e) {
  function h (line 6911) | function h(e, t) {
  function x (line 7022) | function x(e, t, n, r, u, f, b, v=!1, O, _="unknown", S, A) {
  function B (line 7099) | function B(e, t, n, r, i, o, s) {
  function $ (line 7111) | function $(e) {
  function F (line 7117) | function F(e, t=!1) {
  function V (line 7124) | function V() {
  function H (line 7129) | function H(e) {
  function G (line 7135) | function G(e) {
  function q (line 7141) | function q(e) {
  function z (line 7147) | function z() {
  function W (line 7152) | function W() {
  function J (line 7157) | function J(e, t, n) {
  function Y (line 7171) | function Y(e) {
  function Q (line 7174) | function Q(e, t, n) {
  function K (line 7182) | function K(e) {
  function X (line 7190) | function X(e, t, n={}) {
  function Z (line 7209) | function Z(e) {
  function i (line 7305) | function i(e) {
  function o (line 7308) | function o(e) {
  function i (line 7449) | function i(e, t) {
  function o (line 7456) | function o() {
  function s (line 7461) | function s(e, t) {
  function r (line 7475) | function r(e) {
  function i (line 7478) | function i(e) {
  function o (line 7484) | function o(e) {
  function s (line 7494) | function s(e, t) {
  function c (line 7499) | function c(e, t) {
  function l (line 7569) | function l(e, t, n) {
  function s (line 7590) | function s(e, t) {
  function c (line 7602) | function c(e) {
  function a (line 7615) | function a(e, t, n) {
  function O (line 7729) | function O(e, t) {
  function _ (line 7765) | function _(e) {
  function y (line 7787) | function y(e, t) {
  function S (line 7853) | function S(e, t) {
  function j (line 7861) | function j(e) {
  function w (line 7871) | function w(e, t) {
  function s (line 8050) | function s() {
  function c (line 8062) | function c() {
  function a (line 8066) | function a() {
  function d (line 8078) | function d() {
  function l (line 8083) | function l() {
  function d (line 8184) | function d(e, t, n=!1) {
  function l (line 8214) | function l(e) {
  function i (line 8411) | function i(e) {
  function o (line 8417) | function o(e) {
  function o (line 8443) | function o(e, t) {
  function i (line 8499) | function i(e, t) {
  function d (line 8537) | function d(e) {
  function l (line 8543) | function l(e, t, n=!1, i=!1, o=null, s="") {
  function p (line 8554) | function p(e, t, n=!1) {
  function f (line 8561) | function f(e, t, n=!1, r=!1) {
  function b (line 8569) | function b(e) {
  function h (line 8586) | function h(e) {
  function g (line 8599) | function g() {
  function m (line 8604) | function m() {
  function v (line 8609) | function v(e) {
  function O (line 8633) | function O(e, t, n, r) {
  function _ (line 8642) | function _(e, t, n, i, o="help_center", s=null) {
  function y (line 8653) | function y() {
  function o (line 8719) | function o(e) {
  function s (line 8730) | function s() {
  function c (line 8735) | function c() {
  function u (line 8765) | function u(e, t=!0) {
  function l (line 8802) | function l(e) {
  function p (line 8807) | function p(e) {
  function l (line 8973) | function l(e, t) {
  function p (line 8983) | function p(e) {
  function f (line 8998) | function f() {
  function b (line 9007) | function b() {
  function h (line 9021) | function h() {
  function g (line 9026) | function g() {
  function r (line 9034) | function r(e) {
  function i (line 9037) | function i(e) {
  function h (line 9079) | function h(e, t) {
  function m (line 9116) | function m(e, t, n, r=!1, i, o) {
  function v (line 9167) | function v(e, t, n=++p) {
  function O (line 9175) | function O(e, t) {
  function _ (line 9182) | function _(e) {
  function h (line 9235) | function h(e, t) {
  function g (line 9268) | function g(e, t, n, r, i) {
  function m (line 9291) | function m(e, t) {
  function v (line 9312) | function v(e) {
  function O (line 9335) | function O(e) {
  function _ (line 9341) | function _() {
  function y (line 9346) | function y() {
  function S (line 9351) | function S(e=!1) {
  function o (line 9479) | function o(e) {
  function s (line 9486) | function s(e, t) {
  function c (line 9493) | function c(e, t) {
  function a (line 9500) | function a(e) {
  function u (line 9506) | function u(e, t) {
  function d (line 9602) | function d(e, t, n, r, i=null, o=!1, d=!1, l, p) {
  function p (line 9637) | function p(e, t, n, s=!1, c, a, u) {
  function i (line 9688) | function i(e, t) {
  function o (line 9700) | function o(e) {
  function s (line 9713) | function s(e, t, n) {
  function u (line 9724) | function u() {
  function d (line 9734) | function d() {
  function l (line 9742) | function l() {
  function o (line 9771) | function o(e, t) {
  function s (line 9783) | function s(e, t) {
  function c (line 9790) | function c(e, t) {
  function a (line 9797) | function a(e, t) {
  function u (line 9824) | function u() {
  function i (line 9888) | function i(e) {
  function o (line 9892) | function o(e) {
  function s (line 9929) | function s(e) {
  function c (line 9935) | function c(e, t) {
  function a (line 9942) | function a(e) {
  function u (line 9948) | function u(e, t) {
  function d (line 9955) | function d(e, t, n) {
  function d (line 10114) | function d(e) {
  function i (line 10172) | function i(e) {
  class Predicate (line 10225) | class Predicate {
    method constructor (line 10226) | constructor(e) {
    method trigger (line 10230) | trigger() {
    method evaluate (line 10236) | evaluate() {
    method cancel (line 10239) | cancel() {}
  class composite_predicate_CompositePredicate (line 10241) | class composite_predicate_CompositePredicate extends Predicate {
    method constructor (line 10242) | constructor(e, t) {
    method cancel (line 10246) | cancel() {
  class and_predicate_AndPredicate (line 10250) | class and_predicate_AndPredicate extends composite_predicate_CompositePr...
    method evaluate (line 10251) | evaluate() {
  class duration_predicate_DurationPredicate (line 10255) | class duration_predicate_DurationPredicate extends Predicate {
    method constructor (line 10256) | constructor(e, t) {
    method cancel (line 10261) | cancel() {
  function _ (line 10266) | function _(e, t, n) {
  class time_on_page_predicate_TimeOnPagePredicate (line 10275) | class time_on_page_predicate_TimeOnPagePredicate extends Predicate {
    method constructor (line 10276) | constructor(e, t) {
    method _check (line 10287) | _check() {
    method _resetTimeOnPage (line 10290) | _resetTimeOnPage() {
    method _setTimeOnPageTimeout (line 10295) | _setTimeOnPageTimeout() {
    method evaluate (line 10300) | evaluate() {
    method cancel (line 10304) | cancel() {
  class duration_delta_predicate_DurationDeltaPredicate (line 10309) | class duration_delta_predicate_DurationDeltaPredicate extends Predicate {
    method constructor (line 10310) | constructor(e, t, n) {
    method _createDeltaTimer (line 10316) | _createDeltaTimer() {
    method _getInterval (line 10322) | _getInterval() {
    method _evaluateDeltaPredicate (line 10329) | _evaluateDeltaPredicate() {
    method getTimestamp (line 10333) | getTimestamp() {
    method cancel (line 10336) | cancel() {
  class periodic_predicate_PeriodicPredicate (line 10340) | class periodic_predicate_PeriodicPredicate extends Predicate {
    method constructor (line 10341) | constructor(e, t, n) {
    method _check (line 10350) | _check() {
    method evaluate (line 10353) | evaluate() {
    method cancel (line 10357) | cancel() {
  class duration_since_predicate_DurationSincePredicate (line 10361) | class duration_since_predicate_DurationSincePredicate extends periodic_p...
    method constructor (line 10362) | constructor(e, t, n, r) {
    method check (line 10366) | check() {
  class equals_predicate_EqualsPredicate (line 10371) | class equals_predicate_EqualsPredicate extends periodic_predicate_Period...
    method constructor (line 10372) | constructor(e, t, n, r, i) {
    method check (line 10378) | check() {
  class or_predicate_OrPredicate (line 10382) | class or_predicate_OrPredicate extends composite_predicate_CompositePred...
    method evaluate (line 10383) | evaluate() {
  class css_selector_predicate_CssSelectorPredicate (line 10390) | class css_selector_predicate_CssSelectorPredicate extends Predicate {
    method constructor (line 10391) | constructor(e, t) {
    method evaluate (line 10411) | evaluate() {
    method isNodeVisible (line 10430) | isNodeVisible(e) {
  class string_predicate_StringPredicate (line 10434) | class string_predicate_StringPredicate extends Predicate {
    method constructor (line 10435) | constructor(e, t, n, r) {
    method evaluate (line 10441) | evaluate() {
    method _check (line 10445) | _check() {
  class url_predicate_UrlPredicate (line 10466) | class url_predicate_UrlPredicate extends string_predicate_StringPredicate {
    method constructor (line 10467) | constructor(e, t, n) {
    method evaluate (line 10487) | evaluate() {
    method _check (line 10492) | _check() {
    method cancel (line 10500) | cancel() {
  class predicate_chain_PredicateChain (line 10504) | class predicate_chain_PredicateChain {
    method constructor (line 10505) | constructor(e, t) {
    method evaluate (line 10510) | evaluate() {
    method cancel (line 10520) | cancel() {
    method setContext (line 10523) | setContext(e) {
    method getAttribute (line 10526) | getAttribute(e) {
    method processPredicate (line 10530) | processPredicate(e) {
    method parseInterval (line 10554) | parseInterval(e) {
    method processSubpredicates (line 10557) | processSubpredicates(e) {
  class predicates_matcher_PredicatesMatcher (line 10561) | class predicates_matcher_PredicatesMatcher {
    method constructor (line 10562) | constructor(e) {
    method start (line 10567) | start(e) {
    method shutdown (line 10573) | shutdown() {
    method setContext (line 10577) | setContext(e) {
    method _setupPredicates (line 10580) | _setupPredicates(e) {
  function T (line 10588) | function T(e) {
  function x (line 10635) | function x(e) {
  function B (line 10639) | function B(e, t) {
  function G (line 10691) | function G(e, t) {
  function q (line 10703) | function q(e) {
  function z (line 10716) | function z(e, t, n) {
  function Y (line 10761) | function Y(e, t) {
  function Q (line 10769) | function Q(e) {
  function K (line 10774) | function K(e) {
  function re (line 10789) | function re(e, t) {
  function ie (line 10801) | function ie(e) {
  function oe (line 10814) | function oe(e, t, n) {
  function ue (line 10830) | function ue(e, t) {
  function de (line 10842) | function de(e) {
  function le (line 10855) | function le(e, t, n) {
  function ge (line 10868) | function ge(e, t) {
  function me (line 10880) | function me(e) {
  function ve (line 10893) | function ve(e, t, n) {
  function ye (line 10913) | function ye(e, t) {
  function Se (line 10925) | function Se(e) {
  function je (line 10938) | function je(e, t, n) {
  function Ee (line 10948) | function Ee(e, t) {
  function Ie (line 10960) | function Ie(e) {
  function Ce (line 10973) | function Ce(e, t, n) {
  function Ne (line 11024) | function Ne({createdAt: e, body: t, clientId: n, file: r, isMessage: i, ...
  function Be (line 11158) | function Be(e, t) {
  function $e (line 11170) | function $e(e) {
  function Fe (line 11183) | function Fe(e, t, n) {
  function Ge (line 11205) | function Ge(e, t) {
  function Je (line 11308) | function Je(e={}, t, n, r) {
  function Ye (line 11317) | function Ye(e={}, t) {
  function Qe (line 11439) | function Qe(e, t) {
  function Ke (line 11451) | function Ke(e) {
  function Xe (line 11464) | function Xe(e, t, n) {
  function ht (line 11538) | function ht(e) {
  function yt (line 11547) | function yt(e, t) {
  function St (line 11559) | function St(e) {
  function jt (line 11572) | function jt(e, t, n) {
  function It (line 11590) | function It(e, t) {
  function Ct (line 11602) | function Ct(e) {
  function Tt (line 11615) | function Tt(e, t, n) {
  function Rt (line 11635) | function Rt(e, t) {
  function Pt (line 11647) | function Pt(e) {
  function Mt (line 11660) | function Mt(e, t, n) {
  function kt (line 11679) | function kt(e, t) {
  function Nt (line 11691) | function Nt(e) {
  function Ut (line 11704) | function Ut(e, t, n) {
  function xt (line 11718) | function xt(e, t) {
  function Bt (line 11730) | function Bt(e) {
  function $t (line 11743) | function $t(e, t, n) {
  function Vt (line 11753) | function Vt(e, t) {
  function Ht (line 11765) | function Ht(e) {
  function Gt (line 11778) | function Gt(e, t, n) {
  function zt (line 11792) | function zt(e, t) {
  function Wt (line 11804) | function Wt(e) {
  function Jt (line 11817) | function Jt(e, t, n) {
  function Qt (line 11838) | function Qt(e, t) {
  function Kt (line 11850) | function Kt(e) {
  function Xt (line 11863) | function Xt(e, t, n) {
  function on (line 11881) | function on(e, t) {
  function sn (line 11893) | function sn(e) {
  function cn (line 11906) | function cn(e, t, n) {
  function dn (line 11922) | function dn(e, t) {
  function ln (line 11934) | function ln(e) {
  function pn (line 11947) | function pn(e, t, n) {
  function bn (line 11959) | function bn(e, t) {
  function hn (line 11971) | function hn(e) {
  function gn (line 11984) | function gn(e, t, n) {
  function vn (line 11996) | function vn(e, t) {
  function On (line 12008) | function On(e) {
  function _n (line 12021) | function _n(e, t, n) {
  function Sn (line 12033) | function Sn(e, t) {
  function jn (line 12045) | function jn(e) {
  function wn (line 12058) | function wn(e, t, n) {
  function In (line 12071) | function In(e, t) {
  function Cn (line 12083) | function Cn(e) {
  function Tn (line 12096) | function Tn(e, t, n) {
  function Pn (line 12125) | function Pn(e, t) {
  function Mn (line 12137) | function Mn(e) {
  function Dn (line 12150) | function Dn(e, t, n) {
  function $n (line 13599) | function $n(e, t) {
  function Fn (line 13611) | function Fn(e) {
  function Vn (line 13624) | function Vn(e, t, n) {
  function Xn (line 13796) | function Xn(e, t) {
  function Zn (line 13808) | function Zn(e) {
  function er (line 13821) | function er(e, t, n) {
  function tr (line 13830) | function tr(e, t) {
  function nr (line 13833) | function nr(e, t, n, r, i, o) {
  function rr (line 13842) | function rr(e, t) {
  function ir (line 13847) | function ir({domainSetting: e, originCookieDomain: t, meta: n={}}) {
  function hr (line 13880) | function hr(e, t, n, r, i) {
  function gr (line 13891) | function gr(e) {
  function mr (line 13899) | function mr(e, t, n, r, i, o, s, c, a, u) {
  function vr (line 13921) | function vr() {
  function Or (line 13926) | function Or() {
  function _r (line 13929) | function _r(e, t, n, r, i, o, s, c) {
  method play (line 14163) | play(e) {
  method playFile (line 14173) | playFile(e) {
  method load (line 14176) | load(e) {
  function bi (line 14457) | function bi(e) {
  function hi (line 14460) | function hi(e) {
  function gi (line 14463) | function gi(e) {
  function mi (line 14467) | function mi(e) {
  function vi (line 14477) | function vi(e) {
  function Oi (line 14482) | function Oi(e) {
  function _i (line 14501) | function _i(e) {
  function yi (line 14504) | function yi(e) {
  function Si (line 14507) | function Si(e) {
  function ji (line 14512) | function ji(e) {
  function wi (line 14515) | function wi(e) {
  function Ai (line 14530) | function Ai(e, t, n) {
  class base_BaseClientMatchObject (line 14540) | class base_BaseClientMatchObject {
    method constructor (line 14541) | constructor(e) {
    method getRuleset (line 14548) | getRuleset() {
    method getRulesetId (line 14551) | getRulesetId() {
    method getObjectType (line 14554) | getObjectType() {
    method getSerializedObject (line 14557) | getSerializedObject() {
    method isMatchableInLocation (line 14560) | isMatchableInLocation(e) {
    method evaluatePredicates (line 14563) | evaluatePredicates() {
    method canRematch (line 14566) | canRematch() {
    method matchOnMobileBrowser (line 14569) | matchOnMobileBrowser() {
    method refreshActiveMatch (line 14572) | refreshActiveMatch(e) {
    method match (line 14575) | async match(e, t) {
    method selectMatchObject (line 14590) | selectMatchObject(e) {
    method onPreMatch (line 14593) | onPreMatch(e) {}
    method onMatch (line 14594) | onMatch(e, t, n, r) {}
    method onRefreshActiveMatch (line 14595) | onRefreshActiveMatch(e, t) {}
    method unmatch (line 14596) | unmatch(e) {
    method onUnmatch (line 14600) | onUnmatch(e) {}
  class banner_BannerClientMatchObject (line 14602) | class banner_BannerClientMatchObject extends base_BaseClientMatchObject {
    method selectMatchObject (line 14603) | selectMatchObject(e) {
    method onMatch (line 14606) | onMatch(e, t) {
    method canRematch (line 14614) | canRematch() {
    method onUnmatch (line 14617) | onUnmatch(e) {
  class tour_TourClientMatchObject (line 14623) | class tour_TourClientMatchObject extends base_BaseClientMatchObject {
    method selectMatchObject (line 14624) | selectMatchObject(e) {
    method matchOnMobileBrowser (line 14627) | matchOnMobileBrowser() {
    method onPreMatch (line 14630) | onPreMatch() {
    method onMatch (line 14636) | onMatch(e, t, n) {
  class inbound_trigger_InboundTriggerClientMatchObject (line 14643) | class inbound_trigger_InboundTriggerClientMatchObject extends base_BaseC...
    method selectMatchObject (line 14644) | selectMatchObject(e) {
    method onMatch (line 14647) | onMatch(e, t) {
    method onUnmatch (line 14650) | onUnmatch(e) {
  class answerbot_predictive_context_AnswerbotPredictiveContextClientMatchObject (line 14655) | class answerbot_predictive_context_AnswerbotPredictiveContextClientMatch...
    method selectMatchObject (line 14656) | selectMatchObject(e) {
    method onMatch (line 14659) | onMatch(e, t) {
    method onUnmatch (line 14662) | onUnmatch(e) {
  class messenger_trigger_MessengerTriggerClientMatchObject (line 14667) | class messenger_trigger_MessengerTriggerClientMatchObject extends base_B...
    method constructor (line 14668) | constructor(...e) {
    method selectMatchObject (line 14679) | selectMatchObject() {
    method onMatch (line 14682) | onMatch(e, t) {
    method onUnmatch (line 14686) | onUnmatch(e) {
    method onRefreshActiveMatch (line 14689) | onRefreshActiveMatch(e, t) {
    method messengerTriggerId (line 14694) | messengerTriggerId() {
    method _shouldRefreshActiveMatch (line 14697) | _shouldRefreshActiveMatch() {
    method _findDOMNode (line 14700) | _findDOMNode(e) {
    method _documentContains (line 14703) | _documentContains(e) {
  class chat_ChatClientMatchObject (line 14707) | class chat_ChatClientMatchObject extends base_BaseClientMatchObject {
    method selectMatchObject (line 14708) | selectMatchObject(e) {
    method onMatch (line 14711) | onMatch(e, t) {
  class custom_bot_CustomBotClientMatchObject (line 14715) | class custom_bot_CustomBotClientMatchObject extends base_BaseClientMatch...
    method selectMatchObject (line 14716) | selectMatchObject(e) {
    method onMatch (line 14719) | onMatch(e, t) {
  class post_PostClientMatchObject (line 14723) | class post_PostClientMatchObject extends base_BaseClientMatchObject {
    method selectMatchObject (line 14724) | selectMatchObject(e) {
    method onMatch (line 14727) | onMatch(e, t) {
  class seriesCondition_SeriesConditionClientMatchObject (line 14731) | class seriesCondition_SeriesConditionClientMatchObject extends base_Base...
    method selectMatchObject (line 14732) | selectMatchObject(e) {
    method onMatch (line 14735) | onMatch(e, t, n, r) {
  function Di (line 14739) | function Di(e) {
  function ki (line 14765) | function ki(e, t, n) {
  class client_match_runner_ClientMatchRunner (line 14775) | class client_match_runner_ClientMatchRunner {
    method constructor (line 14776) | constructor(e, t) {
    method start (line 14785) | start() {
    method stop (line 14789) | stop() {
    method updateClientMatches (line 14794) | updateClientMatches(e, t) {
    method performClientMatching (line 14799) | performClientMatching() {
    method _evaluateClientMatches (line 14803) | _evaluateClientMatches() {
    method _processResults (line 14814) | _processResults(e) {
    method _addNewMatches (line 14829) | _addNewMatches(e) {
    method _removeMissingMatches (line 14834) | _removeMissingMatches(e, t) {
    method _removeClientMatch (line 14839) | _removeClientMatch(e) {
  function Vi (line 14862) | function Vi(e, t, n) {
  function Gi (line 14872) | function Gi(e, t, n) {
  function qi (line 14880) | function qi(e) {
  method constructor (line 14884) | constructor(e, t, n) {
  method createOrUpdateUser (line 14922) | createOrUpdateUser(e={}, t, n=!1) {
  method sendMessengerOpenRequest (line 14994) | sendMessengerOpenRequest() {
  method handleMessengerOpen (line 14997) | handleMessengerOpen(e) {
  method createCustomizationOverride (line 15002) | createCustomizationOverride(e) {
  method destroy (line 15006) | destroy(e=!0) {
  method openMessenger (line 15015) | openMessenger() {
  method openOnBoot (line 15023) | openOnBoot() {
  method openOnBootAfterUserLoaded (line 15048) | openOnBootAfterUserLoaded() {
  method openIntoSearchBrowseArticle (line 15057) | async openIntoSearchBrowseArticle(e) {
  method showConversation (line 15069) | async showConversation(e) {
  method closeMessenger (line 15075) | closeMessenger() {
  method toggleMessenger (line 15081) | toggleMessenger() {
  method showConversations (line 15087) | showConversations() {
  method showNewConversation (line 15093) | showNewConversation(e) {
  method startTour (line 15099) | startTour(e) {
  method createEvent (line 15105) | createEvent(e, t) {
  method createArticleReaction (line 15117) | createArticleReaction(e, t, n) {
  method previewInboundCustomBot (line 15125) | previewInboundCustomBot(e) {
  method previewOutboundCustomBot (line 15132) | previewOutboundCustomBot(e) {
  method createMetric (line 15135) | createMetric(e, t) {
  method trigger (line 15156) | trigger(e) {
  method getSettings (line 15159) | getSettings(e) {
  method getArticleReaction (line 15162) | getArticleReaction(e, t, n) {
  method enterTourPreviewMode (line 15169) | enterTourPreviewMode(e) {
  method exitTourPreviewMode (line 15175) | exitTourPreviewMode() {
  method getVisitorId (line 15181) | getVisitorId() {
  method onMessengerOpen (line 15188) | onMessengerOpen(e) {
  method onMessengerClose (line 15191) | onMessengerClose(e) {
  method onUnreadConversationCountChange (line 15194) | onUnreadConversationCountChange(e) {
  method enableCustomLauncher (line 15200) | enableCustomLauncher(e) {
  method disableCustomLauncher (line 15208) | disableCustomLauncher() {
  method whenReady (line 15215) | whenReady(e) {
  method executeReadyCallbacks (line 15220) | executeReadyCallbacks() {
  method addLauncherClickedMetric (line 15226) | addLauncherClickedMetric() {
  method handleUserCreateOrUpdate (line 15237) | handleUserCreateOrUpdate(e, t) {
  method shouldSendTrackingCookies (line 15259) | shouldSendTrackingCookies() {
  method startClientMatchRunner (line 15263) | startClientMatchRunner() {
  method st
Copy disabled (too large) Download .json
Condensed preview — 437 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (17,201K chars).
[
  {
    "path": ".changeset/README.md",
    "chars": 510,
    "preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
  },
  {
    "path": ".changeset/changelog-github-custom.cjs",
    "chars": 12582,
    "preview": "'use strict';\nvar __assign =\n  (this && this.__assign) ||\n  function () {\n    __assign =\n      Object.assign ||\n      fu"
  },
  {
    "path": ".changeset/changelog-github-custom.ts",
    "chars": 4038,
    "preview": "import { ChangelogFunctions } from '@changesets/types';\n// @ts-ignore\nimport { getInfo, getInfoFromPullRequest } from '@"
  },
  {
    "path": ".changeset/config.json",
    "chars": 310,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@3.0.4/schema.json\",\n  \"changelog\": [\"./changelog-github-custom.cjs\""
  },
  {
    "path": ".gitattributes",
    "chars": 27,
    "preview": "tests/** linguist-vendored\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug.yaml",
    "chars": 1972,
    "preview": "name: 🐞 Bug Report\ndescription: Something does not work or is flaky! Let us know!\nlabels: [bug, triage]\ntitle: '[🐞]'\nbod"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/docs_suggestion.yml",
    "chars": 638,
    "preview": "name: 📖 Documentation Suggestion\ndescription: Suggestions on how we can improve the documentation.\ntitle: '[📖]'\nlabels: "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature.yaml",
    "chars": 1057,
    "preview": "name: ✨ Feature Request\ndescription: Suggest an idea for this project.\nlabels: [enhancement, triage]\ntitle: '[✨]'\nbody:\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 690,
    "preview": "# What is it?\n\n- [ ] Feature / enhancement\n- [ ] Bug\n- [ ] Docs / tests\n\n# Description\n\nPlease include a summary of the "
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 3045,
    "preview": "name: Partytown CI\non: [push, pull_request]\n\njobs:\n  test-chromium:\n    name: Test Chromium (Ubuntu)\n    runs-on: ubuntu"
  },
  {
    "path": ".github/workflows/linter.yml",
    "chars": 787,
    "preview": "name: PR Prettier Check\n\non:\n  pull_request_target:\n    types:\n      - opened\n      - edited\n      - synchronize\n      -"
  },
  {
    "path": ".github/workflows/pr.yml",
    "chars": 434,
    "preview": "name: PR Title Check\n\non:\n  pull_request_target:\n    types:\n      - opened\n      - edited\n      - synchronize\n      - re"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1433,
    "preview": "name: Release\n\non:\n  pull_request:\n  push:\n    branches:\n      - main\n\npermissions:\n  id-token: write\n  contents: write\n"
  },
  {
    "path": ".gitignore",
    "chars": 469,
    "preview": ".cache/\n.next/\n.DS_Store\n/dist/\n/docs/site/dist/\n/docs/site/public/~partytown/\n/docs/site/src/table-of-contents.ts\n/docs"
  },
  {
    "path": ".nvmrc",
    "chars": 7,
    "preview": "20.10.0"
  },
  {
    "path": ".prettierignore",
    "chars": 88,
    "preview": ".cache\n/lib\n/node_modules\n/react\n/tsc\napi.md\ntests/platform/script/source-mapping-url.js"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 3740,
    "preview": "# @qwik.dev/partytown\n\n## 0.13.0\n\n### Minor Changes\n\n- ✨ add new documentation for Drupal integration (by [@OulipianSumm"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5216,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6019,
    "preview": "# Local Development\n\nWelcome 🎉!! If you've found a bug, or have an idea to add a feature we'd love to hear from you. It "
  },
  {
    "path": "LICENSE",
    "chars": 1067,
    "preview": "MIT License\n\nCopyright (c) 2021 Builder.io\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
  },
  {
    "path": "README.md",
    "chars": 3496,
    "preview": "# Partytown 🎉\n\n<img width=\"838\" alt=\"Partytown github fit 2x\" src=\"https://user-images.githubusercontent.com/452425/1345"
  },
  {
    "path": "bin/partytown.cjs",
    "chars": 1367,
    "preview": "#!/usr/bin/env node\n\nasync function run() {\n  const task = process.argv.slice(2).filter((a) => !a.startsWith('-'))[0];\n "
  },
  {
    "path": "docs/.eslintignore",
    "chars": 391,
    "preview": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist"
  },
  {
    "path": "docs/.eslintrc.cjs",
    "chars": 1261,
    "preview": "module.exports = {\n  root: true,\n  env: {\n    browser: true,\n    es2021: true,\n    node: true,\n  },\n  extends: [\n    \"es"
  },
  {
    "path": "docs/.gitignore",
    "chars": 416,
    "preview": "# Build\n/dist\n/lib\n/lib-types\n/server\n\n# Development\nnode_modules\n.env\n*.local\n\n# Cache\n.cache\n.mf\n.rollup.cache\ntsconfi"
  },
  {
    "path": "docs/.prettierignore",
    "chars": 386,
    "preview": "**/*.log\n**/.DS_Store\n*.\n.vscode/settings.json\n.history\n.yarn\nbazel-*\nbazel-bin\nbazel-out\nbazel-qwik\nbazel-testlogs\ndist"
  },
  {
    "path": "docs/.prettierrc.js",
    "chars": 64,
    "preview": "export default {\n  plugins: [\"prettier-plugin-tailwindcss\"],\n};\n"
  },
  {
    "path": "docs/.vscode/launch.json",
    "chars": 697,
    "preview": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  //"
  },
  {
    "path": "docs/.vscode/qwik-router.code-snippets",
    "chars": 963,
    "preview": "{\n  \"onRequest\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qonRequest\",\n    \"description\": \"onReq"
  },
  {
    "path": "docs/.vscode/qwik.code-snippets",
    "chars": 2200,
    "preview": "{\n  \"Qwik component (simple)\": {\n    \"scope\": \"javascriptreact,typescriptreact\",\n    \"prefix\": \"qcomponent$\",\n    \"descr"
  },
  {
    "path": "docs/README.md",
    "chars": 4875,
    "preview": "# Qwik App ⚡️\n\n- [Qwik Docs](https://qwik.dev/)\n- [Discord](https://qwik.dev/chat)\n- [Qwik GitHub](https://github.com/Qw"
  },
  {
    "path": "docs/adapters/cloudflare-pages/vite.config.mts",
    "chars": 568,
    "preview": "import { cloudflarePagesAdapter } from \"@qwik.dev/router/adapters/cloudflare-pages/vite\";\nimport { extendConfig } from \""
  },
  {
    "path": "docs/package.json",
    "chars": 1964,
    "preview": "{\n  \"name\": \"my-qwik-empty-starter\",\n  \"description\": \"Blank project with routing included\",\n  \"engines\": {\n    \"node\": "
  },
  {
    "path": "docs/postcss.config.cjs",
    "chars": 83,
    "preview": "module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  },\n};\n"
  },
  {
    "path": "docs/public/_headers",
    "chars": 262,
    "preview": "# https://developers.cloudflare.com/pages/platform/headers/\n\n/*service-worker.js\n  Cache-Control: no-store\n  Content-Typ"
  },
  {
    "path": "docs/public/_redirects",
    "chars": 62,
    "preview": "# https://developers.cloudflare.com/pages/platform/redirects/\n"
  },
  {
    "path": "docs/public/manifest.json",
    "chars": 258,
    "preview": "{\n  \"$schema\": \"https://json.schemastore.org/web-manifest-combined.json\",\n  \"name\": \"qwik-project-name\",\n  \"short_name\":"
  },
  {
    "path": "docs/public/robots.txt",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "docs/qwik.env.d.ts",
    "chars": 221,
    "preview": "// This file can be used to add references for global types like `vite/client`.\n\n// Add global `vite/client` types. For "
  },
  {
    "path": "docs/recma-provide-components.ts",
    "chars": 3214,
    "preview": "import type {\n  CallExpression,\n  FunctionDeclaration,\n  Literal,\n  Node,\n  Program,\n  VariableDeclaration,\n  VariableDe"
  },
  {
    "path": "docs/src/components/Aside/Aside.tsx",
    "chars": 1473,
    "preview": "import { component$ } from \"@qwik.dev/core\";\nimport { useContent } from \"@qwik.dev/router\";\n\nexport const Aside = compon"
  },
  {
    "path": "docs/src/components/CodeSnippet/CodeSnippet.tsx",
    "chars": 1024,
    "preview": "import type { PropsOf } from \"@qwik.dev/core\";\nimport { component$, useComputed$ } from \"@qwik.dev/core\";\nimport { useLo"
  },
  {
    "path": "docs/src/components/Footer/Footer.tsx",
    "chars": 757,
    "preview": "import { component$ } from \"@qwik.dev/core\";\nimport { GitHubIcon } from \"../Icons/GitHubIcon\";\n\nexport const Footer = co"
  },
  {
    "path": "docs/src/components/Header/Header.tsx",
    "chars": 3445,
    "preview": "/* eslint-disable qwik/jsx-img */\nimport { component$, useSignal } from \"@qwik.dev/core\";\nimport { ThemeSelector } from "
  },
  {
    "path": "docs/src/components/Highlight/Highlight.tsx",
    "chars": 2332,
    "preview": "import type { PropsOf } from \"@qwik.dev/core\";\nimport {\n  $,\n  component$,\n  useSignal,\n  useTask$,\n  useVisibleTask$,\n}"
  },
  {
    "path": "docs/src/components/Icons/CloseIcon.tsx",
    "chars": 464,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport const CloseIcon = component$(() => {\n  return (\n    <svg\n      xmln"
  },
  {
    "path": "docs/src/components/Icons/GitHubIcon.tsx",
    "chars": 1817,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport const GitHubIcon = component$<{ classes?: string }>(\n  ({ classes ="
  },
  {
    "path": "docs/src/components/Icons/MenuIcon.tsx",
    "chars": 1150,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport const MenuIcon = component$(() => {\n  return (\n    <svg\n      xmlns"
  },
  {
    "path": "docs/src/components/Icons/ThemeDarkIcon.tsx",
    "chars": 701,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport const ThemeDarkIcon = component$(() => {\n  return (\n    <svg\n      "
  },
  {
    "path": "docs/src/components/Icons/ThemeLightIcon.tsx",
    "chars": 1048,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport const ThemeLightIcon = component$(() => {\n  return (\n    <svg\n     "
  },
  {
    "path": "docs/src/components/MdxComponents/MdxComponents.tsx",
    "chars": 643,
    "preview": "import { type PropsOf, Slot, component$ } from \"@qwik.dev/core\";\nimport { CodeSnippet } from \"../CodeSnippet/CodeSnippet"
  },
  {
    "path": "docs/src/components/RouterHead/RouterHead.tsx",
    "chars": 2644,
    "preview": "import { useDocumentHead, useLocation } from \"@qwik.dev/router\";\nimport { component$ } from \"@qwik.dev/core\";\n\n/**\n * Th"
  },
  {
    "path": "docs/src/components/ThemeSelector/ThemeSelector.tsx",
    "chars": 841,
    "preview": "import { component$, useContext } from \"@qwik.dev/core\";\nimport { ThemeDarkIcon } from \"~/components/Icons/ThemeDarkIcon"
  },
  {
    "path": "docs/src/components/Toc/Toc.tsx",
    "chars": 5516,
    "preview": "import { cn } from \"~/utils/cn\";\nimport { component$, useSignal, $, useOnWindow } from \"@qwik.dev/core\";\nimport type { C"
  },
  {
    "path": "docs/src/config.ts",
    "chars": 99,
    "preview": "export const config = {\n  title: \"PartyTown\",\n  GitHub: \"https://github.com/QwikDev/partytown\",\n};\n"
  },
  {
    "path": "docs/src/entry.cloudflare-pages.tsx",
    "chars": 659,
    "preview": "/*\n * WHAT IS THIS FILE?\n *\n * It's the entry point for Cloudflare Pages when building for production.\n *\n * Learn more "
  },
  {
    "path": "docs/src/entry.dev.tsx",
    "chars": 586,
    "preview": "/*\n * WHAT IS THIS FILE?\n *\n * Development entry point using only client-side modules:\n * - Do not use this mode in prod"
  },
  {
    "path": "docs/src/entry.preview.tsx",
    "chars": 669,
    "preview": "/*\n * WHAT IS THIS FILE?\n *\n * It's the bundle entry point for `npm run preview`.\n * That is, serving your app built in "
  },
  {
    "path": "docs/src/entry.ssr.tsx",
    "chars": 763,
    "preview": "/**\n * WHAT IS THIS FILE?\n *\n * SSR entry point, in all cases the application is rendered outside the browser, this\n * e"
  },
  {
    "path": "docs/src/global.scss",
    "chars": 3697,
    "preview": "/**\n * Tailwind CSS imports\n * View the full documentation at https://tailwindcss.com\n */\n@tailwind base;\n@tailwind comp"
  },
  {
    "path": "docs/src/root.tsx",
    "chars": 905,
    "preview": "import { component$ } from \"@qwik.dev/core\";\nimport { isDev } from \"@qwik.dev/core/build\";\nimport { QwikRouterProvider, "
  },
  {
    "path": "docs/src/routes/404.tsx",
    "chars": 353,
    "preview": "import { component$ } from \"@qwik.dev/core\";\n\nexport default component$(() => {\n  return (\n    <>\n      <h1>Page Not Fou"
  },
  {
    "path": "docs/src/routes/angular/index.mdx",
    "chars": 1479,
    "preview": "---\ntitle: Angular\n---\n\n# Angular\n\nTo setup Partytown in an Angular project take the following steps.\n\n## Installation\n\n"
  },
  {
    "path": "docs/src/routes/astro/index.mdx",
    "chars": 838,
    "preview": "---\ntitle: Astro\n---\n\n# Astro\n\nThere is a first-class [Astro integration for partytown](https://github.com/withastro/ast"
  },
  {
    "path": "docs/src/routes/atomics/index.mdx",
    "chars": 4092,
    "preview": "---\ntitle: Atomics\n---\n\n# Atomics\n\nPartytown will use [Atomics](https://developer.mozilla.org/en-US/docs/Web/JavaScript/"
  },
  {
    "path": "docs/src/routes/browser-support/index.mdx",
    "chars": 1793,
    "preview": "---\ntitle: Browser Support\n---\n\n# Browser Support\n\nPartytown works to ensure that all browsers can still run third-party"
  },
  {
    "path": "docs/src/routes/common-services/index.mdx",
    "chars": 4091,
    "preview": "---\ntitle: Common Services\n---\n\n# Common Services\n\nPartytown is built with the goal that any third-party script can be r"
  },
  {
    "path": "docs/src/routes/configuration/index.mdx",
    "chars": 4233,
    "preview": "---\ntitle: Configuration\n---\n\n# Configuration\n\nPartytown does not require a config for it to work, however a config can "
  },
  {
    "path": "docs/src/routes/copy-library-files/index.mdx",
    "chars": 5104,
    "preview": "---\ntitle: Copy Library Files\n---\n\n# Copy Library Files\n\nThe [@qwik.dev/partytown](https://www.npmjs.com/package/@qwik.d"
  },
  {
    "path": "docs/src/routes/cross-origin/index.ts",
    "chars": 1155,
    "preview": "import { RequestHandler } from \"@qwik.dev/router\";\n\nexport const onGet: RequestHandler = async ({send}) => {\n  const pag"
  },
  {
    "path": "docs/src/routes/debugging/index.mdx",
    "chars": 1270,
    "preview": "---\ntitle: Debugging\n---\n\n# Debugging\n\nWith `debug` mode and logging enabled, below is an example of the Partytown logs "
  },
  {
    "path": "docs/src/routes/distribution/index.mdx",
    "chars": 4665,
    "preview": "---\ntitle: Distribution\n---\n\n# Distribution\n\nPartytown is distributed from [@qwik.dev/partytown](https://www.npmjs.com/p"
  },
  {
    "path": "docs/src/routes/drupal/index.mdx",
    "chars": 3676,
    "preview": "---\ntitle: Drupal\n---\n\n# Drupal\n\nThe [Drupal](https://drupal.org) integration relies on a contributed module called [\"Pa"
  },
  {
    "path": "docs/src/routes/facebook-pixel/index.mdx",
    "chars": 2830,
    "preview": "---\ntitle: Facebook Pixel\n---\n\n# Facebook Pixel\n\n## Add the Pixel Script\n\n- [Meta (Facebook) Pixel](https://www.facebook"
  },
  {
    "path": "docs/src/routes/faq/index.mdx",
    "chars": 4290,
    "preview": "---\ntitle: FAQs\n---\n\n# FAQs\n\n## Can all scripts use Partytown?\n\nNot necessarily. While Partytown covers many cases that "
  },
  {
    "path": "docs/src/routes/forwarding-events/index.mdx",
    "chars": 4054,
    "preview": "---\ntitle: Forwarding Events And Triggers\n---\n\n# Forwarding Events And Triggers\n\nMany third-party scripts add a global v"
  },
  {
    "path": "docs/src/routes/gatsby/index.mdx",
    "chars": 3169,
    "preview": "---\ntitle: Gatsby\n---\n\n# Gatsby\n\nThe Gatsby setup is largely the same as the [React integration guide](/react), except i"
  },
  {
    "path": "docs/src/routes/getting-started/index.mdx",
    "chars": 1172,
    "preview": "---\ntitle: Getting Started\n---\n\n# Getting Started\n\nPartytown is fairly different from most web development libraries in "
  },
  {
    "path": "docs/src/routes/google-tag-manager/index.mdx",
    "chars": 1522,
    "preview": "---\ntitle: Google Tag Manager\n---\n\n# Google Tag Manager\n\n## Add the Google Tag Manager Script\n\n- [Install Google Tag Man"
  },
  {
    "path": "docs/src/routes/how-does-partytown-work/index.mdx",
    "chars": 5249,
    "preview": "---\ntitle: How Does Partytown Work\n---\n\n# How Does Partytown Work\n\n- [How Partytown's Service Worker Sync Communication "
  },
  {
    "path": "docs/src/routes/html/index.mdx",
    "chars": 1971,
    "preview": "---\ntitle: HTML\n---\n\n# HTML\n\nAt the lowest level, Partytown is not tied to one specific framework or build tool. Because"
  },
  {
    "path": "docs/src/routes/index.mdx",
    "chars": 7372,
    "preview": "---\ntitle: Introduction\ndescription: Partytown - Run third-party scripts from a web worker\n---\n\n# Run third-party script"
  },
  {
    "path": "docs/src/routes/integrations/index.mdx",
    "chars": 1001,
    "preview": "---\ntitle: Integration Guides\n---\n\n# Integration Guides\n\nPartytown can work with any HTML page, and doesn't require a sp"
  },
  {
    "path": "docs/src/routes/layout.tsx",
    "chars": 1852,
    "preview": "import {\n  Slot,\n  component$,\n  createContextId,\n  useContextProvider,\n  useStore,\n  useVisibleTask$,\n} from \"@qwik.dev"
  },
  {
    "path": "docs/src/routes/magento2/index.mdx",
    "chars": 3383,
    "preview": "---\ntitle: Magento 2\n---\n\n# Magento 2\n\nTo integrate the partytown library functionality into your Magento 2 project, you"
  },
  {
    "path": "docs/src/routes/menu.md",
    "chars": 1244,
    "preview": "# Docs Table Of Contents\n\n## Introduction|/\n\n- [How Does It Work?](/how-does-partytown-work)\n- [FAQs](/faq)\n- [Trade-Off"
  },
  {
    "path": "docs/src/routes/nextjs/index.mdx",
    "chars": 2651,
    "preview": "---\ntitle: Next.js\n---\n\n# Next.js\n\nThe Next.js setup is largely the same as the [React integration guide](/react), excep"
  },
  {
    "path": "docs/src/routes/nuxt/index.mdx",
    "chars": 1101,
    "preview": "---\ntitle: Nuxt\n---\n\n# Nuxt\n\nThere is a first-class [Nuxt integration for partytown](https://github.com/nuxt-community/p"
  },
  {
    "path": "docs/src/routes/partytown-scripts/index.mdx",
    "chars": 2325,
    "preview": "---\ntitle: Partytown Scripts\n---\n\n# Partytown Scripts\n\n## Partytown Script Type\n\nAdd the `type=\"text/partytown\"` attribu"
  },
  {
    "path": "docs/src/routes/proxying-requests/index.mdx",
    "chars": 5130,
    "preview": "---\ntitle: Proxying Requests\n---\n\n# Proxying Requests\n\nOften third-party scripts are added to the page by appending a sc"
  },
  {
    "path": "docs/src/routes/react/index.mdx",
    "chars": 1768,
    "preview": "---\ntitle: React\n---\n\n# React\n\nThe Partytown NPM package already comes with a React component, which is a thin wrapper t"
  },
  {
    "path": "docs/src/routes/remix/index.mdx",
    "chars": 2310,
    "preview": "---\ntitle: Remix\n---\n\n# Remix\n\nThe Remix setup is largely the same as the [React integration guide](/react), except it g"
  },
  {
    "path": "docs/src/routes/sandboxing/index.mdx",
    "chars": 1099,
    "preview": "---\ntitle: Sandboxing\n---\n\n# Sandboxing\n\nThird-party scripts are often a black-box with large amounts of code. What's bu"
  },
  {
    "path": "docs/src/routes/shopify-hydrogen/index.mdx",
    "chars": 3014,
    "preview": "---\ntitle: Shopify Hydrogen\n---\n\n# Shopify Hydrogen\n\nThe [Shopify Hydrogen](https://hydrogen.shopify.dev/) setup is larg"
  },
  {
    "path": "docs/src/routes/shopify-os2/index.mdx",
    "chars": 5898,
    "preview": "---\ntitle: Shopify OS 2.0\n---\n\n# Shopify OS 2.0\n\nShopify OS 2.0 frontends are built with the Liquid templating language."
  },
  {
    "path": "docs/src/routes/solid/index.mdx",
    "chars": 1417,
    "preview": "---\ntitle: Solid\n---\n\n# Solid\n\nTo setup Partytown in an Solid project take the following steps.\n\n## Install\n\n```bash\nnpm"
  },
  {
    "path": "docs/src/routes/sveltekit/index.mdx",
    "chars": 2680,
    "preview": "---\ntitle: SvelteKit\n---\n\n# SvelteKit\n\nSvelteKit uses Vite to build, so we can use `partytownVite`.\n\n1. Copy the Partyto"
  },
  {
    "path": "docs/src/routes/trade-offs/index.mdx",
    "chars": 5390,
    "preview": "---\ntitle: Trade-Offs\n---\n\n# Trade-Offs\n\nNothing is without trade-offs. Using Partytown to orchestrate third-party scrip"
  },
  {
    "path": "docs/src/types.ts",
    "chars": 125,
    "preview": "import { type ClassList } from \"@qwik.dev/core\";\n\nexport type OmitSignalClass<T> = Omit<T, \"class\"> & { class?: ClassLis"
  },
  {
    "path": "docs/src/utils/cn.ts",
    "chars": 168,
    "preview": "import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: C"
  },
  {
    "path": "docs/tailwind.config.js",
    "chars": 401,
    "preview": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [\"./src/**/*.{js,ts,jsx,tsx,mdx}\"],\n  darkMode"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 675,
    "preview": "{\n  \"compilerOptions\": {\n    \"allowJs\": true,\n    \"target\": \"ES2017\",\n    \"module\": \"ES2022\",\n    \"lib\": [\"es2022\", \"DOM"
  },
  {
    "path": "docs/vite.config.mts",
    "chars": 6097,
    "preview": "/**\n * This is the base config for vite.\n * When building, the adapter config is used which loads this file and extends "
  },
  {
    "path": "package.json",
    "chars": 4896,
    "preview": "{\n  \"name\": \"@qwik.dev/partytown\",\n  \"version\": \"0.13.0\",\n  \"description\": \"Relocate resource intensive third-party scri"
  },
  {
    "path": "playwright.atomics.config.ts",
    "chars": 286,
    "preview": "import config from './playwright.config';\n\nconfig.use.launchOptions = {\n  args: ['--enable-features=SharedArrayBuffer'],"
  },
  {
    "path": "playwright.config.ts",
    "chars": 430,
    "preview": "import type { PlaywrightTestConfig } from '@playwright/test';\n\nconst config: PlaywrightTestConfig = {\n  use: {\n    viewp"
  },
  {
    "path": "scripts/build-api.ts",
    "chars": 650,
    "preview": "import type { BuildOptions } from './utils.js';\nimport { join } from 'node:path';\nimport { Extractor, ExtractorConfig } "
  },
  {
    "path": "scripts/build-atomics.ts",
    "chars": 1932,
    "preview": "import type { RollupOptions } from 'rollup';\nimport {\n  type BuildOptions,\n  fileSize,\n  jsBannerPlugin,\n  syncCommunica"
  },
  {
    "path": "scripts/build-integration.ts",
    "chars": 1645,
    "preview": "import { type BuildOptions, submodulePackageJson } from './utils.js';\nimport { join } from 'node:path';\nimport type { Ou"
  },
  {
    "path": "scripts/build-main-snippet.ts",
    "chars": 2164,
    "preview": "import { type BuildOptions, fileSize, jsBannerPlugin, versionPlugin } from './utils.js';\nimport { join } from 'node:path"
  },
  {
    "path": "scripts/build-media-implementations.ts",
    "chars": 1120,
    "preview": "import type { OutputOptions, RollupOptions } from 'rollup';\nimport { type BuildOptions, fileSize, jsBannerPlugin, versio"
  },
  {
    "path": "scripts/build-react.ts",
    "chars": 725,
    "preview": "import { type BuildOptions, submodulePackageJson, submodulePath } from './utils.js';\nimport { join } from 'node:path';\ni"
  },
  {
    "path": "scripts/build-service-worker.ts",
    "chars": 3189,
    "preview": "import { type OutputOptions, type Plugin, rollup, type RollupOptions } from 'rollup';\nimport {\n  type BuildOptions,\n  fi"
  },
  {
    "path": "scripts/build-services.ts",
    "chars": 698,
    "preview": "import { type BuildOptions, submodulePackageJson } from './utils.js';\nimport { join } from 'node:path';\nimport type { Ou"
  },
  {
    "path": "scripts/build-utils.ts",
    "chars": 650,
    "preview": "import { type BuildOptions, submodulePackageJson } from './utils.js';\nimport { join } from 'node:path';\nimport type { Ro"
  },
  {
    "path": "scripts/build-web-worker.ts",
    "chars": 2206,
    "preview": "import { type OutputOptions, type Plugin, rollup } from 'rollup';\nimport {\n  type BuildOptions,\n  getJsBanner,\n  type Me"
  },
  {
    "path": "scripts/index.ts",
    "chars": 3890,
    "preview": "import type { BuildOptions, PackageJson } from './utils.js';\nimport { buildApi } from './build-api.js';\nimport { buildAt"
  },
  {
    "path": "scripts/minify.ts",
    "chars": 3195,
    "preview": "import terser, { type Options } from '@rollup/plugin-terser';\nimport type { Plugin } from 'rollup';\nimport type { BuildO"
  },
  {
    "path": "scripts/rollup.config.js",
    "chars": 466,
    "preview": "// build scripts are generated after tsc runs\nimport { runBuild } from '../tsc/scripts/index.js';\nimport { dirname, join"
  },
  {
    "path": "scripts/serve.cjs",
    "chars": 327,
    "preview": "const { createServer } = require('./server.cjs');\n\nconst port = parseInt(process.argv[2], 10);\nconst enableAtomics = pro"
  },
  {
    "path": "scripts/server.cjs",
    "chars": 4254,
    "preview": "const path = require('path');\nconst http = require('http');\nconst fs = require('fs');\n\nexports.createServer = function ("
  },
  {
    "path": "scripts/utils.ts",
    "chars": 4769,
    "preview": "import gzipSize from 'gzip-size';\nimport { basename, join } from 'path';\nimport fsExtra from 'fs-extra';\nimport type { P"
  },
  {
    "path": "src/integration/api-extractor.json",
    "chars": 1008,
    "preview": "{\n  \"$schema\": \"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json\",\n  \"bundledPack"
  },
  {
    "path": "src/integration/api.md",
    "chars": 2562,
    "preview": "## API Report File for \"@qwik.dev/partytown-integration\"\r\n\r\n> Do not edit this file. It is a report generated by [API Ex"
  },
  {
    "path": "src/integration/index.ts",
    "chars": 667,
    "preview": "import PartytownSnippet from '@snippet';\nimport { createSnippet } from './snippet';\nimport type { PartytownConfig } from"
  },
  {
    "path": "src/integration/package.json",
    "chars": 121,
    "preview": "{\n  \"name\": \"@qwik.dev/partytown-integration\",\n  \"main\": \"index.cjs\",\n  \"module\": \"index.mjs\",\n  \"types\": \"index.d.ts\"\n}"
  },
  {
    "path": "src/integration/snippet.ts",
    "chars": 724,
    "preview": "import { serializeConfig } from '../lib/utils';\nimport type { PartytownConfig } from '../lib/types';\n\nexport const creat"
  },
  {
    "path": "src/lib/atomics/sync-create-messenger-atomics.ts",
    "chars": 1963,
    "preview": "import {\n  type MainAccessRequest,\n  type MessageFromWorkerToSandbox,\n  type Messenger,\n  type PartytownWebWorker,\n  Wor"
  },
  {
    "path": "src/lib/atomics/sync-send-message-to-main-atomics.ts",
    "chars": 927,
    "preview": "import {\n  type MainAccessRequest,\n  type MainAccessResponse,\n  type WebWorkerContext,\n  WorkerMessageType,\n} from '../t"
  },
  {
    "path": "src/lib/build-modules/sync-create-messenger.ts",
    "chars": 236,
    "preview": "import type { Messenger } from '../types';\n\nconst syncCreateMessenger: Messenger = async (receiveMessage) => {\n  // dyna"
  },
  {
    "path": "src/lib/build-modules/sync-send-message-to-main.ts",
    "chars": 273,
    "preview": "import type { MainAccessResponse } from '../types';\n\nexport default function syncSendMessageToMainServiceWorker(\n  webWo"
  },
  {
    "path": "src/lib/build-modules/version.ts",
    "chars": 36,
    "preview": "export const VERSION = '_VERSION_';\n"
  },
  {
    "path": "src/lib/build-modules/web-worker-blob.ts",
    "chars": 60,
    "preview": "const WEB_WORKER_BLOB = '';\nexport default WEB_WORKER_BLOB;\n"
  },
  {
    "path": "src/lib/build-modules/web-worker-url.ts",
    "chars": 58,
    "preview": "const WEB_WORKER_URL = '';\nexport default WEB_WORKER_URL;\n"
  },
  {
    "path": "src/lib/log.ts",
    "chars": 9565,
    "preview": "import {\n  type ApplyPath,\n  CallType,\n  type InstanceId,\n  InterfaceType,\n  NodeName,\n  type WebWorkerEnvironment,\n  ty"
  },
  {
    "path": "src/lib/main/snippet-entry.ts",
    "chars": 118,
    "preview": "import { snippet } from './snippet';\n\nsnippet(window as any, document, navigator, top!, window!.crossOriginIsolated);\n"
  },
  {
    "path": "src/lib/main/snippet.ts",
    "chars": 6301,
    "preview": "import {\n  debug,\n  emptyObjectValue,\n  getOriginalBehavior,\n  resolvePartytownForwardProperty,\n} from '../utils';\nimpor"
  },
  {
    "path": "src/lib/sandbox/index.ts",
    "chars": 1926,
    "preview": "import { debug } from '../utils';\nimport { getAndSetInstanceId } from './main-instances';\nimport { libPath, mainWindow }"
  },
  {
    "path": "src/lib/sandbox/main-access-handler.ts",
    "chars": 6306,
    "preview": "import {\n  type ApplyPath,\n  ApplyPathType,\n  type MainAccessRequest,\n  type MainAccessResponse,\n  type MainAccessTask,\n"
  },
  {
    "path": "src/lib/sandbox/main-constants.ts",
    "chars": 475,
    "preview": "import type { InstanceId, MainWindow, MainWindowContext, WinId } from '../types';\n\nexport const InstanceIdKey = /*#__PUR"
  },
  {
    "path": "src/lib/sandbox/main-custom-element.ts",
    "chars": 1027,
    "preview": "import {\n  type CustomElementData,\n  type PartytownWebWorker,\n  type WinId,\n  WorkerMessageType,\n} from '../types';\nimpo"
  },
  {
    "path": "src/lib/sandbox/main-forward-trigger.ts",
    "chars": 2053,
    "preview": "import {\n  emptyObjectValue,\n  getOriginalBehavior,\n  len,\n  resolvePartytownForwardProperty,\n} from '../utils';\nimport "
  },
  {
    "path": "src/lib/sandbox/main-globals.ts",
    "chars": 367,
    "preview": "import type { MainWindow, PartytownConfig } from '../types';\nimport { debug } from '../utils';\n\nexport const mainWindow:"
  },
  {
    "path": "src/lib/sandbox/main-instances.ts",
    "chars": 1852,
    "preview": "import { CreatedKey, InstanceIdKey, instances, winCtxs, windowIds } from './main-constants';\nimport { type InstanceId, t"
  },
  {
    "path": "src/lib/sandbox/main-register-window.ts",
    "chars": 3298,
    "preview": "import { debug } from '../utils';\nimport { logMain, normalizedWinId } from '../log';\nimport {\n  type MainWindow,\n  type "
  },
  {
    "path": "src/lib/sandbox/main-serialization.ts",
    "chars": 6990,
    "preview": "import { getConstructorName, getNodeName, isValidMemberName, startsWith } from '../utils';\nimport { getInstance, getAndS"
  },
  {
    "path": "src/lib/sandbox/on-messenge-from-worker.ts",
    "chars": 1334,
    "preview": "import { initializedWorkerScript, readNextScript } from './read-main-scripts';\nimport { mainWindow } from './main-global"
  },
  {
    "path": "src/lib/sandbox/read-main-platform.ts",
    "chars": 6682,
    "preview": "import {\n  createElementFromConstructor,\n  getConstructorName,\n  getNodeName,\n  isValidMemberName,\n  noop,\n  serializeCo"
  },
  {
    "path": "src/lib/sandbox/read-main-scripts.ts",
    "chars": 3264,
    "preview": "import { debug, SCRIPT_TYPE, SCRIPT_TYPE_EXEC } from '../utils';\nimport { getAndSetInstanceId } from './main-instances';"
  },
  {
    "path": "src/lib/service-worker/fetch.ts",
    "chars": 2912,
    "preview": "import Sandbox from '@sandbox';\nimport SandboxDebug from '@sandbox-debug';\nimport type { MainAccessRequest, MainAccessRe"
  },
  {
    "path": "src/lib/service-worker/index.ts",
    "chars": 519,
    "preview": "import { onFetchServiceWorkerRequest, receiveMessageFromSandboxToServiceWorker } from './fetch';\n\n(self as any as Servic"
  },
  {
    "path": "src/lib/service-worker/sync-create-messenger-sw.ts",
    "chars": 1599,
    "preview": "import {\n  type MainAccessRequest,\n  type MessageFromWorkerToSandbox,\n  type Messenger,\n  type PartytownWebWorker,\n  Wor"
  },
  {
    "path": "src/lib/service-worker/sync-send-message-to-main-sw.ts",
    "chars": 555,
    "preview": "import type { MainAccessRequest, MainAccessResponse, WebWorkerContext } from '../types';\nimport { partytownLibUrl } from"
  },
  {
    "path": "src/lib/types.ts",
    "chars": 21150,
    "preview": "export type CreateWorker = (workerName: string) => Worker;\n\nexport type Messenger = (\n  receiveMessage: MessengerRequest"
  },
  {
    "path": "src/lib/utils.ts",
    "chars": 7094,
    "preview": "import type {\n  ApplyPath,\n  MainWindow,\n  PartytownConfig,\n  PartytownForwardProperty,\n  PartytownForwardPropertySettin"
  },
  {
    "path": "src/lib/web-worker/index.ts",
    "chars": 3945,
    "preview": "import { callCustomElementCallback } from './worker-custom-elements';\nimport { callWorkerRefHandler } from './worker-ser"
  },
  {
    "path": "src/lib/web-worker/init-web-worker.ts",
    "chars": 1178,
    "preview": "import { commaSplit, webWorkerCtx } from './worker-constants';\nimport type { InitWebWorkerData, PartytownInternalConfig "
  },
  {
    "path": "src/lib/web-worker/media/bridge.ts",
    "chars": 298,
    "preview": "import type { MediaSelf } from '../../types';\n\nexport const [\n  getter,\n  setter,\n  callMethod,\n  constructGlobal,\n  def"
  },
  {
    "path": "src/lib/web-worker/media/canvas.ts",
    "chars": 6241,
    "preview": "import {\n  ApplyPathKey,\n  InstanceIdKey,\n  WinIdKey,\n  callMethod,\n  setter,\n  definePrototypePropertyDescriptor,\n  ran"
  },
  {
    "path": "src/lib/web-worker/media/index.ts",
    "chars": 538,
    "preview": "import type { MediaSelf } from '../../types';\nimport { initCanvas } from './canvas';\nimport { initMedia } from './media'"
  },
  {
    "path": "src/lib/web-worker/media/media.ts",
    "chars": 11734,
    "preview": "import {\n  CallType,\n  type MediaSelf,\n  type WebWorkerEnvironment,\n  type WorkerConstructor,\n  type WorkerWindow,\n} fro"
  },
  {
    "path": "src/lib/web-worker/media/utils.ts",
    "chars": 667,
    "preview": "import type { WorkerWindow } from '../../types';\n\nexport const ContextKey = Symbol();\nexport const MediaSourceKey = Symb"
  },
  {
    "path": "src/lib/web-worker/worker-anchor.ts",
    "chars": 1933,
    "preview": "import { commaSplit } from './worker-constants';\nimport { definePrototypePropertyDescriptor, isValidUrl } from '../utils"
  },
  {
    "path": "src/lib/web-worker/worker-constants.ts",
    "chars": 2962,
    "preview": "import type {\n  InstanceId,\n  InterfaceInfo,\n  PostMessageData,\n  RefHandler,\n  RefId,\n  WebWorkerContext,\n  WebWorkerEn"
  },
  {
    "path": "src/lib/web-worker/worker-constructors.ts",
    "chars": 4799,
    "preview": "import {\n  cachedDimensions,\n  cachedStructure,\n  commaSplit,\n  environments,\n  getterDimensionPropNames,\n  InstanceIdKe"
  },
  {
    "path": "src/lib/web-worker/worker-css-style-declaration.ts",
    "chars": 2240,
    "preview": "import {\n  type ApplyPath,\n  CallType,\n  type InstanceId,\n  type WinId,\n  type WorkerConstructor,\n} from '../types';\nimp"
  },
  {
    "path": "src/lib/web-worker/worker-custom-elements.ts",
    "chars": 1456,
    "preview": "import { callMethod } from './worker-proxy';\nimport type {\n  CustomElementData,\n  InstanceId,\n  WinId,\n  WorkerMessageTy"
  },
  {
    "path": "src/lib/web-worker/worker-document.ts",
    "chars": 7212,
    "preview": "import { callMethod, getter, setter } from './worker-proxy';\nimport {\n  CallType,\n  NodeName,\n  StateProp,\n  type WebWor"
  },
  {
    "path": "src/lib/web-worker/worker-element.ts",
    "chars": 1198,
    "preview": "import {\n  cachedDimensionMethods,\n  cachedDimensionProps,\n  cachedProps,\n  cachedTreeProps,\n} from './worker-constructo"
  },
  {
    "path": "src/lib/web-worker/worker-environment.ts",
    "chars": 1105,
    "preview": "import { createWindow } from './worker-window';\nimport { debug } from '../utils';\nimport { environments, webWorkerCtx } "
  },
  {
    "path": "src/lib/web-worker/worker-exec.ts",
    "chars": 8134,
    "preview": "import { VERSION } from '../build-modules/version';\nimport { logWorker } from '../log';\nimport {\n  type EventHandler,\n  "
  },
  {
    "path": "src/lib/web-worker/worker-form.ts",
    "chars": 449,
    "preview": "import { definePrototypePropertyDescriptor } from '../utils';\nimport type { WorkerNode } from '../types';\nimport { cache"
  },
  {
    "path": "src/lib/web-worker/worker-forwarded-trigger.ts",
    "chars": 751,
    "preview": "import { deserializeFromMain } from './worker-serialization';\nimport { environments } from './worker-constants';\nimport "
  },
  {
    "path": "src/lib/web-worker/worker-iframe.ts",
    "chars": 4100,
    "preview": "import { createEnvironment } from './worker-environment';\nimport { definePrototypePropertyDescriptor, SCRIPT_TYPE } from"
  },
  {
    "path": "src/lib/web-worker/worker-image.ts",
    "chars": 3260,
    "preview": "import { debug } from '../utils';\nimport type { EventHandler, WebWorkerEnvironment } from '../types';\nimport { logWorker"
  },
  {
    "path": "src/lib/web-worker/worker-location.ts",
    "chars": 766,
    "preview": "import { type LocationUpdateData, LocationUpdateType, type WebWorkerEnvironment } from '../types';\n\nexport function forw"
  },
  {
    "path": "src/lib/web-worker/worker-media.ts",
    "chars": 1419,
    "preview": "import {\n  ApplyPathKey,\n  commaSplit,\n  InstanceIdKey,\n  partytownLibUrl,\n  webWorkerCtx,\n  WinIdKey,\n} from './worker-"
  },
  {
    "path": "src/lib/web-worker/worker-named-node-map.ts",
    "chars": 1731,
    "preview": "import {\n  type ApplyPath,\n  CallType,\n  type InstanceId,\n  type WinId,\n  type WorkerConstructor,\n  type WorkerInstance,"
  },
  {
    "path": "src/lib/web-worker/worker-navigator.ts",
    "chars": 1591,
    "preview": "import type { WebWorkerEnvironment } from '../types';\nimport { debug } from '../utils';\nimport { logWorker } from '../lo"
  },
  {
    "path": "src/lib/web-worker/worker-node.ts",
    "chars": 3991,
    "preview": "import { cachedTreeProps } from './worker-constructors';\nimport { callMethod, setter, sendToMain } from './worker-proxy'"
  },
  {
    "path": "src/lib/web-worker/worker-performance.ts",
    "chars": 467,
    "preview": "import { defineConstructorName } from '../utils';\nimport type { WorkerConstructor } from '../types';\n\nexport const creat"
  },
  {
    "path": "src/lib/web-worker/worker-proxy.ts",
    "chars": 7348,
    "preview": "import {\n  type ApplyPath,\n  ApplyPathType,\n  type AssignInstanceId,\n  type CallMethod,\n  CallType,\n  type ConstructGlob"
  },
  {
    "path": "src/lib/web-worker/worker-script.ts",
    "chars": 2507,
    "preview": "import { definePrototypePropertyDescriptor, testIfMustLoadScriptOnMainThread } from '../utils';\nimport { getInstanceStat"
  },
  {
    "path": "src/lib/web-worker/worker-serialization.ts",
    "chars": 9021,
    "preview": "import {\n  type ApplyPath,\n  CallType,\n  type InstanceId,\n  type RefHandlerCallbackData,\n  type RefId,\n  type Serialized"
  },
  {
    "path": "src/lib/web-worker/worker-src-element.ts",
    "chars": 1802,
    "preview": "import { callMethod } from './worker-proxy';\nimport { commaSplit } from './worker-constants';\nimport { type EventHandler"
  },
  {
    "path": "src/lib/web-worker/worker-state.ts",
    "chars": 900,
    "preview": "import { InstanceStateKey, webWorkerRefIdsByRef, webWorkerRefsByRefId } from './worker-constants';\nimport { randomId } f"
  },
  {
    "path": "src/lib/web-worker/worker-storage.ts",
    "chars": 2330,
    "preview": "import { callMethod, getter } from './worker-proxy';\nimport { CallType, type WebWorkerEnvironment } from '../types';\nimp"
  },
  {
    "path": "src/lib/web-worker/worker-style.ts",
    "chars": 3308,
    "preview": "import { cachedDimensions } from './worker-constants';\nimport { callMethod, getter } from './worker-proxy';\nimport { Cal"
  },
  {
    "path": "src/lib/web-worker/worker-svg.ts",
    "chars": 1178,
    "preview": "import { definePrototypePropertyDescriptor, EMPTY_ARRAY } from '../utils';\nimport type { WorkerNode } from '../types';\ni"
  },
  {
    "path": "src/lib/web-worker/worker-window.ts",
    "chars": 22070,
    "preview": "import { addStorageApi } from './worker-storage';\nimport {\n  type ApplyPath,\n  CallType,\n  type InstanceId,\n  InterfaceT"
  },
  {
    "path": "src/modules.d.ts",
    "chars": 227,
    "preview": "declare module '@sandbox' {\n  const str: string;\n  export default str;\n}\n\ndeclare module '@sandbox-debug' {\n  const str:"
  },
  {
    "path": "src/react/api-extractor.json",
    "chars": 980,
    "preview": "{\n  \"$schema\": \"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json\",\n  \"bundledPack"
  },
  {
    "path": "src/react/api.md",
    "chars": 508,
    "preview": "## API Report File for \"@qwik.dev/partytown-react\"\r\n\r\n> Do not edit this file. It is a report generated by [API Extracto"
  },
  {
    "path": "src/react/index.ts",
    "chars": 88,
    "preview": "export { Partytown } from './snippet';\nexport type { PartytownProps } from './snippet';\n"
  },
  {
    "path": "src/react/package.json",
    "chars": 115,
    "preview": "{\n  \"name\": \"@qwik.dev/partytown-react\",\n  \"main\": \"index.cjs\",\n  \"module\": \"index.mjs\",\n  \"types\": \"index.d.ts\"\n}\n"
  },
  {
    "path": "src/react/snippet.tsx",
    "chars": 2487,
    "preview": "import React from 'react';\nimport type { PartytownConfig } from '../lib/types';\nimport { partytownSnippet } from '@qwik."
  },
  {
    "path": "src/services/api-extractor.json",
    "chars": 996,
    "preview": "{\n  \"$schema\": \"https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json\",\n  \"bundledPack"
  },
  {
    "path": "src/services/api.md",
    "chars": 592,
    "preview": "## API Report File for \"@qwik.dev/partytown-services\"\r\n\r\n> Do not edit this file. It is a report generated by [API Extra"
  },
  {
    "path": "src/services/facebook-pixel.ts",
    "chars": 304,
    "preview": "import type { PartytownForwardProperty } from '../lib/types';\n\n/**\n * Forwards Facebool Pixels main window calls to Part"
  },
  {
    "path": "src/services/freshpaint.ts",
    "chars": 343,
    "preview": "import type { PartytownForwardProperty } from '../lib/types';\n\n/**\n * Forwards Freshpaint.io main window calls to Partyt"
  }
]

// ... and 237 more files (download for full content)

About this extraction

This page contains the full source code of the QwikDev/partytown GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 437 files (18.3 MB), approximately 4.2M tokens, and a symbol index with 8766 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!