diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index f93221c15..000000000
--- a/.babelrc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "presets": ["es2015", "react"],
- "plugins": [
- "transform-class-properties",
- "transform-exponentiation-operator"
- ]
-}
diff --git a/.changeset/README.md b/.changeset/README.md
new file mode 100644
index 000000000..e5b6d8d6a
--- /dev/null
+++ b/.changeset/README.md
@@ -0,0 +1,8 @@
+# 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)
diff --git a/.changeset/config.json b/.changeset/config.json
new file mode 100644
index 000000000..7548e41d9
--- /dev/null
+++ b/.changeset/config.json
@@ -0,0 +1,14 @@
+{
+ "$schema": "https://unpkg.com/@changesets/config@2.3.1/schema.json",
+ "changelog": [
+ "@changesets/changelog-github",
+ { "repo": "apollographql/apollo-client-devtools" }
+ ],
+ "commit": false,
+ "fixed": [["apollo-client-devtools", "@apollo/client-devtools-vscode"]],
+ "linked": [],
+ "access": "public",
+ "baseBranch": "main",
+ "updateInternalDependencies": "patch",
+ "ignore": []
+}
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 000000000..e1ed492a2
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,53 @@
+version: 2.1
+
+orbs:
+ secops: apollo/circleci-secops-orb@2.0.9
+
+jobs:
+ lint:
+ docker:
+ - image: cimg/node:23.11.1
+ steps:
+ - checkout
+ - run: npm ci
+ - run: npm run build -- --env TARGET=chrome
+ - run: npm run build -- --env TARGET=firefox
+ - run: npm run type-check
+ - run: npm run lint
+
+ formatting:
+ docker:
+ - image: cimg/node:23.11.1
+ steps:
+ - checkout
+ - run: npm ci
+ - run: npm run check:format
+
+ test:
+ docker:
+ - image: cimg/node:23.11.1
+ steps:
+ - checkout
+ - run: npm ci
+ - run: npm run test:circleci
+
+workflows:
+ lint-and-test:
+ jobs:
+ - lint
+ - test
+ - formatting
+ security-scans:
+ jobs:
+ - secops/gitleaks:
+ context:
+ - platform-docker-ro
+ - github-orb
+ - secops-oidc
+ git-base-revision: <<#pipeline.git.base_revision>><><>
+ git-revision: << pipeline.git.revision >>
+ - secops/semgrep:
+ context:
+ - secops-oidc
+ - github-orb
+ git-base-revision: <<#pipeline.git.base_revision>><><>
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 000000000..8516cfaf8
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+node_modules
+development
+dist
+build
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
new file mode 100644
index 000000000..7a273366d
--- /dev/null
+++ b/.git-blame-ignore-revs
@@ -0,0 +1,2 @@
+# Run prettier all files (#1051)
+e962930021a8f49f4670347650ce737b2d910eb5
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 000000000..be4c6242f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,42 @@
+---
+name: "\U0001F41B Bug report"
+about: Create a report to help us improve
+title: ""
+labels: ""
+assignees: ""
+---
+
+
+
+**Intended outcome:**
+
+
+
+**Actual outcome:**
+
+
+
+**How to reproduce the issue:**
+
+
+
+**Desktop (please complete the following information):**
+
+- OS: [e.g. iOS]
+- Browser [e.g. chrome, safari]
+- Browser version [e.g. 22]
+- Extension version [e.g. 3.0]
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 000000000..f9b0fff6d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,5 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Feature requests
+ url: https://github.com/apollographql/apollo-client-devtools/discussions
+ about: Feature requests are tracked via Discussions using the "Ideas" category.
diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml
new file mode 100644
index 000000000..ad7f327c6
--- /dev/null
+++ b/.github/workflows/build-pr.yml
@@ -0,0 +1,28 @@
+name: Build
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "24.x"
+
+ # Install dependencies
+ - run: npm ci
+
+ # Build and output bunle stats to webpack-stats.json
+ - run: yarn build --env TARGET=chrome
+
+ # Upload webpack-stats.json to use on relative-ci.yaml workflow
+ - name: Upload webpack stats artifact
+ uses: relative-ci/agent-upload-artifact-action@v2
+ with:
+ webpackStatsFile: ./webpack-stats.json
diff --git a/.github/workflows/fetch-access-token.yml b/.github/workflows/fetch-access-token.yml
new file mode 100644
index 000000000..6c7cff0f2
--- /dev/null
+++ b/.github/workflows/fetch-access-token.yml
@@ -0,0 +1,18 @@
+# The action fetches an access token from Google API.
+# It can be used to prevent your Refresh Token from being expired.
+# See https://github.com/cardinalby/google-api-fetch-token-action for more info.
+
+name: "fetch-access-token"
+on:
+ schedule:
+ - cron: "0 3 2 * *" # At 03:00 on day-of-month 2
+
+jobs:
+ fetchToken:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: cardinalby/google-api-fetch-token-action@v1
+ with:
+ clientId: ${{ secrets.CHROME_CLIENT_ID }}
+ clientSecret: ${{ secrets.CHROME_CLIENT_SECRET }}
+ refreshToken: ${{ secrets.CHROME_REFRESH_TOKEN }}
diff --git a/.github/workflows/issue-close-user-survey.yml b/.github/workflows/issue-close-user-survey.yml
new file mode 100644
index 000000000..2eed2223d
--- /dev/null
+++ b/.github/workflows/issue-close-user-survey.yml
@@ -0,0 +1,21 @@
+name: Issue Close User Survey
+
+on:
+ issues:
+ types: [closed]
+
+jobs:
+ user-survey-comment:
+ permissions:
+ issues: write
+ runs-on: ubuntu-latest
+ if: github.repository == 'apollographql/apollo-client-devtools'
+ steps:
+ - run: |
+ gh issue comment "$NUMBER" --body "$BODY"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ GH_REPO: ${{ github.repository }}
+ NUMBER: ${{ github.event.issue.number }}
+ BODY: >
+ Do you have any feedback for the maintainers? Please tell us by taking a [one-minute survey](https://docs.google.com/forms/d/e/1FAIpQLSczNDXfJne3ZUOXjk9Ursm9JYvhTh1_nFTDfdq3XBAFWCzplQ/viewform?usp=pp_url&entry.1170701325=Apollo+Client&entry.204965213=GitHub+Issue). Your responses will help us understand Apollo Client usage and allow us to serve you better.
diff --git a/.github/workflows/publish-pr-releases.yml b/.github/workflows/publish-pr-releases.yml
new file mode 100644
index 000000000..10b4ab14c
--- /dev/null
+++ b/.github/workflows/publish-pr-releases.yml
@@ -0,0 +1,27 @@
+name: Pull Request Prerelease
+
+on:
+ pull_request:
+ push:
+ branches:
+ - "**"
+ tags:
+ - "!**"
+
+jobs:
+ vscode-package:
+ name: "@apollo/client-devtools-vscode"
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v6
+
+ - name: Setup Node.js 20.x
+ uses: actions/setup-node@v4
+ with:
+ node-version: 24.x
+
+ - run: npm ci
+
+ - name: Publish to pkg.pr.new
+ run: npx pkg-pr-new publish --no-template ./packages/apollo-client-devtools ./packages/client-devtools-vscode
diff --git a/.github/workflows/relative-ci.yaml b/.github/workflows/relative-ci.yaml
new file mode 100644
index 000000000..92600e4de
--- /dev/null
+++ b/.github/workflows/relative-ci.yaml
@@ -0,0 +1,17 @@
+name: RelativeCI
+
+on:
+ workflow_run:
+ workflows: ["Build"]
+ types:
+ - completed
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Send bundle stats and build information to RelativeCI
+ uses: relative-ci/agent-action@v2
+ with:
+ key: ${{ secrets.RELATIVE_CI_KEY }}
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..e2b4be77b
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,128 @@
+name: Release
+
+on:
+ push:
+ branches:
+ - main
+
+concurrency: ${{ github.workflow }}-${{ github.ref }}
+
+jobs:
+ release:
+ name: Changesets Release
+ # Prevents action from creating a PR on forks
+ if: github.repository == 'apollographql/apollo-client-devtools'
+ runs-on: ubuntu-latest
+ # Permissions necessary for Changesets to push a new branch and open PRs
+ # (for automated Version Packages PRs), and request the JWT for provenance.
+ # More info: https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#adding-permissions-settings
+ permissions:
+ contents: write
+ pull-requests: write
+ id-token: write
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v6
+ with:
+ # Fetch entire git history so Changesets can generate changelogs
+ # with the correct commits
+ fetch-depth: 0
+
+ - name: Check for pre.json file existence
+ id: check_files
+ uses: andstor/file-existence-action@v3.1.0
+ with:
+ files: ".changeset/pre.json"
+
+ - name: Append NPM token to .npmrc
+ run: |
+ cat << EOF > "$HOME/.npmrc"
+ //registry.npmjs.org/:_authToken=$NPM_TOKEN
+ EOF
+ env:
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+
+ - name: Setup Node.js 26.x
+ uses: actions/setup-node@v4
+ with:
+ node-version: ">=26.3.0"
+
+ - name: Install dependencies
+ run: npm ci
+
+ # shim around npm to convert `npm publish` to `npm stage publish` for staged publishing until changesets adds direct support for staged publishing.
+ - run: echo "${{ github.workspace }}/scripts/changesets-wrapper" >> "$GITHUB_PATH"
+
+ # Publishes with manifest v2
+ - name: Create release PR or publish to npm + GitHub
+ id: changesets
+ if: steps.check_files.outputs.files_exists == 'false'
+ uses: changesets/action@v1
+ with:
+ publish: npx changeset publish
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
+
+ - name: Create chrome zip file
+ if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true'
+ run: |
+ jq --slurpfile package ./packages/apollo-client-devtools/package.json \
+ '.version=$package[0].version' ./src/extension/chrome/manifest.json \
+ > ./src/extension/chrome/manifest.json.updated
+ mv ./src/extension/chrome/manifest.json.updated ./src/extension/chrome/manifest.json
+ npm run dist:chrome
+
+ - name: Upload & release Chrome extension
+ if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true'
+ uses: mnao305/chrome-extension-upload@v5.0.0
+ with:
+ file-path: apollo-client-devtools-chrome.zip
+ extension-id: ${{ secrets.CHROME_EXTENSION_ID }}
+ client-id: ${{ secrets.CHROME_CLIENT_ID }}
+ client-secret: ${{ secrets.CHROME_CLIENT_SECRET }}
+ refresh-token: ${{ secrets.CHROME_REFRESH_TOKEN }}
+
+ - name: Create firefox zip files
+ if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true'
+ run: |
+ jq --slurpfile package ./packages/apollo-client-devtools/package.json \
+ '.version=$package[0].version' ./src/extension/firefox/manifest.json \
+ > ./src/extension/firefox/manifest.json.updated
+ mv ./src/extension/firefox/manifest.json.updated ./src/extension/firefox/manifest.json
+ npm run dist:firefox
+
+ - name: Publish the extension for Firefox
+ if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true'
+ uses: yayuyokitano/firefox-addon@v0.0.6-alpha
+ with:
+ xpi_path: apollo-client-devtools-firefox.zip
+ src_path: apollo-client-devtools-src.zip
+ api_key: ${{ secrets.FIREFOX_API_KEY }}
+ api_secret: ${{ secrets.FIREFOX_API_SECRET }}
+ guid: ${{ secrets.FIREFOX_ADDON_UUID }}
+
+ - name: Send a Slack notification on publish
+ if: steps.changesets.outcome == 'success' && steps.changesets.outputs.published == 'true'
+ id: slack
+ uses: slackapi/slack-github-action@v1.27.1
+ with:
+ # Slack channel id, channel name, or user id to post message
+ # See also: https://api.slack.com/methods/chat.postMessage#channels
+ # You can pass in multiple channels to post to by providing
+ # a comma-delimited list of channel IDs
+ channel-id: "C01GC140SUV"
+ payload: |
+ {
+ "blocks": [
+ {
+ "type": "section",
+ "text": {
+ "type": "mrkdwn",
+ "text": "A new version of `apollo-client-devtools` was released: :rocket:"
+ }
+ }
+ ]
+ }
+ env:
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
diff --git a/.github/workflows/update-errorcodes.yml b/.github/workflows/update-errorcodes.yml
new file mode 100644
index 000000000..691d53a1d
--- /dev/null
+++ b/.github/workflows/update-errorcodes.yml
@@ -0,0 +1,39 @@
+name: Create PR for new error codes
+
+on: [workflow_dispatch]
+
+jobs:
+ build:
+ defaults:
+ run:
+ working-directory: ./all-clients
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v6
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "24.x"
+ - run: |
+ npm run rebuild
+ npm install --force
+ npm run encode
+ if git diff --exit-code --quiet HEAD errorcodes.json; then
+ echo "No new error codes were added."
+ exit 0
+ fi
+ cat < ../.changeset/errorcodes.md
+ ---
+ "apollo-client-devtools": patch
+ "@apollo/client-devtools-vscode": patch
+ ---
+
+ add error codes for new Apollo Client version
+ EOF
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v8
+ with:
+ title: "[chore] add error codes for new Apollo Client version"
+ commit-message: "[chore] add error codes for new Apollo Client version"
+ branch: "pr/update-errorcodes"
+ delete-branch: true
diff --git a/.gitignore b/.gitignore
old mode 100644
new mode 100755
index b94707787..593e670d6
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,10 @@
node_modules/
-dist/
+dist
+build
+!./dist/.gitkeep
+*.zip
+.DS_Store
+development/server/db.json
+webpack-stats.json
+.yalc
+yalc.lock
\ No newline at end of file
diff --git a/.npmignore b/.npmignore
new file mode 100644
index 000000000..4ceeeb495
--- /dev/null
+++ b/.npmignore
@@ -0,0 +1,2 @@
+node_modules/
+*.zip
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 000000000..268c392d3
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+provenance=true
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 000000000..22264d291
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+all-clients/errorcodes.json
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 000000000..c21d01678
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,8 @@
+{
+ "bracketSpacing": true,
+ "printWidth": 80,
+ "semi": true,
+ "singleQuote": false,
+ "tabWidth": 2,
+ "trailingComma": "es5"
+}
diff --git a/.semgrepignore b/.semgrepignore
new file mode 100644
index 000000000..3a96b62dd
--- /dev/null
+++ b/.semgrepignore
@@ -0,0 +1,2 @@
+src/extension/vscode/client.ts
+src/application/components/Modals/ClientNotFoundModal.vscode.tsx
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..60c393d15
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "editor.formatOnSave": true,
+ "typescript.tsdk": "node_modules/typescript/lib",
+ "eslint.experimental.useFlatConfig": true,
+ "eslint.workingDirectories": ["./*"]
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 000000000..94a134798
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,751 @@
+# Changelog
+
+## 4.18.15
+
+### Patch Changes
+
+- [#1581](https://github.com/apollographql/apollo-client-devtools/pull/1581) [`3682b92`](https://github.com/apollographql/apollo-client-devtools/commit/3682b9298a8e2497f73b9f9a9cd4576a35b8e54b) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.14
+
+### Patch Changes
+
+- [#1573](https://github.com/apollographql/apollo-client-devtools/pull/1573) [`8a57f17`](https://github.com/apollographql/apollo-client-devtools/commit/8a57f171dc286701607e570ff076e38d2dbf292d) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.13
+
+### Patch Changes
+
+- [#1568](https://github.com/apollographql/apollo-client-devtools/pull/1568) [`79a08e9`](https://github.com/apollographql/apollo-client-devtools/commit/79a08e9ea71d718874fa86f09ead5f14bdeca799) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.12
+
+### Patch Changes
+
+- [#1566](https://github.com/apollographql/apollo-client-devtools/pull/1566) [`6ccc20e`](https://github.com/apollographql/apollo-client-devtools/commit/6ccc20ec3f72afba23f0b6f3cb605d0ef3ba1a33) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.11
+
+### Patch Changes
+
+- [#1560](https://github.com/apollographql/apollo-client-devtools/pull/1560) [`4af3744`](https://github.com/apollographql/apollo-client-devtools/commit/4af374445174b6a3901ca616fc815b149513931d) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.10
+
+### Patch Changes
+
+- [#1555](https://github.com/apollographql/apollo-client-devtools/pull/1555) [`6e01171`](https://github.com/apollographql/apollo-client-devtools/commit/6e01171948bdee740f6195de52f753129c5a2ec8) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.9
+
+### Patch Changes
+
+- [#1538](https://github.com/apollographql/apollo-client-devtools/pull/1538) [`c8a8f2f`](https://github.com/apollographql/apollo-client-devtools/commit/c8a8f2f386d3e75b39d204533e51e7e9dbe1bc80) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue when serializing an `ApolloError` where clientErrors or protocolErrors is undefined.
+
+- [#1538](https://github.com/apollographql/apollo-client-devtools/pull/1538) [`c8a8f2f`](https://github.com/apollographql/apollo-client-devtools/commit/c8a8f2f386d3e75b39d204533e51e7e9dbe1bc80) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue where a page refresh would sometimes cause an error to be displayed in the devtools related to store resets.
+
+## 4.18.8
+
+### Patch Changes
+
+- [#1536](https://github.com/apollographql/apollo-client-devtools/pull/1536) [`fe039a0`](https://github.com/apollographql/apollo-client-devtools/commit/fe039a071b02ee8155d185a1a511dc9d07e1339c) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where refreshing the page would sometimes cause client data to stop updating.
+
+## 4.18.7
+
+### Patch Changes
+
+- [#1508](https://github.com/apollographql/apollo-client-devtools/pull/1508) [`d408d7f`](https://github.com/apollographql/apollo-client-devtools/commit/d408d7fe902a049dce810a73c4c06a1e16192e6f) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.6
+
+### Patch Changes
+
+- [#1505](https://github.com/apollographql/apollo-client-devtools/pull/1505) [`4fc4f78`](https://github.com/apollographql/apollo-client-devtools/commit/4fc4f78d5be9edace8c77c3380158b9be95c5402) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.5
+
+### Patch Changes
+
+- [#1502](https://github.com/apollographql/apollo-client-devtools/pull/1502) [`220f57f`](https://github.com/apollographql/apollo-client-devtools/commit/220f57f6a8dde7d00a7fbbfcc9cd1d0359df45b3) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.4
+
+### Patch Changes
+
+- [#1494](https://github.com/apollographql/apollo-client-devtools/pull/1494) [`4474f85`](https://github.com/apollographql/apollo-client-devtools/commit/4474f85adc18276fbd292c4056a1b780e195792f) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.18.3
+
+### Patch Changes
+
+- [#1488](https://github.com/apollographql/apollo-client-devtools/pull/1488) [`3a26412`](https://github.com/apollographql/apollo-client-devtools/commit/3a264120cdd8f986d1c6382d2d67da57219b92af) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Always JSON serialize payloads sent from the injected script to avoid issues cloning irregular objects in client data.
+
+## 4.18.2
+
+### Patch Changes
+
+- [#1481](https://github.com/apollographql/apollo-client-devtools/pull/1481) [`d065fca`](https://github.com/apollographql/apollo-client-devtools/commit/d065fcac046b9967144bb532f8815006e7a20e85) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue serializing cache data for the queries tab when the cache contains irregular data.
+
+## 4.18.1
+
+### Patch Changes
+
+- [#1459](https://github.com/apollographql/apollo-client-devtools/pull/1459) [`b4a600b`](https://github.com/apollographql/apollo-client-devtools/commit/b4a600b6c6e300fa738adc96c8faeecc2b8981e6) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Show a loading indicator when the extension is loading client data.
+
+- [#1459](https://github.com/apollographql/apollo-client-devtools/pull/1459) [`b4a600b`](https://github.com/apollographql/apollo-client-devtools/commit/b4a600b6c6e300fa738adc96c8faeecc2b8981e6) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Show an error screen if an error occurs while getting client data. This will provide a helpful suggestion with a link to open a prefilled GitHub issue with the error that occurred.
+
+## 4.18.0
+
+### Minor Changes
+
+- [#1473](https://github.com/apollographql/apollo-client-devtools/pull/1473) [`1d622c4`](https://github.com/apollographql/apollo-client-devtools/commit/1d622c4818748351d548dc02c1ec5f0e75562b70) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add a search input to the "Queries" and "Mutations" tabs that filters the list of operations.
+
+## 4.17.6
+
+### Patch Changes
+
+- [#1470](https://github.com/apollographql/apollo-client-devtools/pull/1470) [`55a48f4`](https://github.com/apollographql/apollo-client-devtools/commit/55a48f45b1408c9e915fcd9c2a125adbb8800aa9) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.17.5
+
+### Patch Changes
+
+- [#1468](https://github.com/apollographql/apollo-client-devtools/pull/1468) [`6e5bd5d`](https://github.com/apollographql/apollo-client-devtools/commit/6e5bd5d6550bd01f4189f0d60881d41581234fda) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.17.4
+
+### Patch Changes
+
+- [#1466](https://github.com/apollographql/apollo-client-devtools/pull/1466) [`8fefdf9`](https://github.com/apollographql/apollo-client-devtools/commit/8fefdf9e92658eba71d3325a41628401f50df8ff) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.17.3
+
+### Patch Changes
+
+- [#1461](https://github.com/apollographql/apollo-client-devtools/pull/1461) [`36cd3bb`](https://github.com/apollographql/apollo-client-devtools/commit/36cd3bb30750401d52edcfd0baab506f26ed694a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Create a universal message bridge to handle both actor and rpc messages.
+
+- [#1460](https://github.com/apollographql/apollo-client-devtools/pull/1460) [`4a58340`](https://github.com/apollographql/apollo-client-devtools/commit/4a5834064e64724589b2922b72a1e72dcffdf196) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Remove unneeded initialization message to determine if page had a client instance.
+
+- [#1460](https://github.com/apollographql/apollo-client-devtools/pull/1460) [`4a58340`](https://github.com/apollographql/apollo-client-devtools/commit/4a5834064e64724589b2922b72a1e72dcffdf196) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue when disconnecting from the client that would show stale data until reconnected.
+
+## 4.17.2
+
+### Patch Changes
+
+- [#1456](https://github.com/apollographql/apollo-client-devtools/pull/1456) [`d49777f`](https://github.com/apollographql/apollo-client-devtools/commit/d49777fde348e8697fbf7ccb3f59e99bf2e01ce8) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+- [#1458](https://github.com/apollographql/apollo-client-devtools/pull/1458) [`7bebb72`](https://github.com/apollographql/apollo-client-devtools/commit/7bebb7214314c450cabf447f91855a9c8a4d9df9) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix serialization of functions in context
+
+## 4.17.1
+
+### Patch Changes
+
+- [#1454](https://github.com/apollographql/apollo-client-devtools/pull/1454) [`837779a`](https://github.com/apollographql/apollo-client-devtools/commit/837779a35f89834c657fce4f94cf163e7a19024b) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue where data would sometimes disappear a few seconds after refreshing the page with no way to recover the data afterward.
+
+## 4.17.0
+
+### Minor Changes
+
+- [#1418](https://github.com/apollographql/apollo-client-devtools/pull/1418) [`ce416bd`](https://github.com/apollographql/apollo-client-devtools/commit/ce416bdf7447bef75edca14a256e59bad8740cf8) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add support for inspecting multiple clients. When multiple clients connect to devtools, you can select which to inspect. When combined with Apollo Client [3.11](https://github.com/apollographql/apollo-client/releases/tag/v3.11.0), you can provide a custom name using the new `devtools` option.
+
+ ```js
+ new ApolloClient({
+ devtools: {
+ enabled: true,
+ name: "My Custom Client",
+ },
+ });
+ ```
+
+### Patch Changes
+
+- [#1447](https://github.com/apollographql/apollo-client-devtools/pull/1447) [`c223f14`](https://github.com/apollographql/apollo-client-devtools/commit/c223f140e79a479252cbc8ec60c74fcc08062d67) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.16.1
+
+### Patch Changes
+
+- [#1444](https://github.com/apollographql/apollo-client-devtools/pull/1444) [`e1214ff`](https://github.com/apollographql/apollo-client-devtools/commit/e1214ff16ece43f53669a32f4430c4588f0d8657) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.16.0
+
+### Minor Changes
+
+- [#1429](https://github.com/apollographql/apollo-client-devtools/pull/1429) [`267ab0d`](https://github.com/apollographql/apollo-client-devtools/commit/267ab0d1d946a2538532a08b6775030be6ecfdc2) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Show the loading status and any defined errors on queries and mutations both in the sidebar and the main panel.
+
+### Patch Changes
+
+- [#1429](https://github.com/apollographql/apollo-client-devtools/pull/1429) [`267ab0d`](https://github.com/apollographql/apollo-client-devtools/commit/267ab0d1d946a2538532a08b6775030be6ecfdc2) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Select the first query/mutation if the current query/mutation is no longer active.
+
+## 4.15.7
+
+### Patch Changes
+
+- [#1441](https://github.com/apollographql/apollo-client-devtools/pull/1441) [`553866d`](https://github.com/apollographql/apollo-client-devtools/commit/553866d325a73e7727434aada0f8517f6e360c34) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.15.6
+
+### Patch Changes
+
+- [#1433](https://github.com/apollographql/apollo-client-devtools/pull/1433) [`9e76075`](https://github.com/apollographql/apollo-client-devtools/commit/9e760759d5ac1297dd48484cc895667985b82254) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.15.5
+
+### Patch Changes
+
+- [#1430](https://github.com/apollographql/apollo-client-devtools/pull/1430) [`8fc5f3c`](https://github.com/apollographql/apollo-client-devtools/commit/8fc5f3c482c15a1df2d2a9bb8afc4e67eec87c31) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.15.4
+
+### Patch Changes
+
+- [#1426](https://github.com/apollographql/apollo-client-devtools/pull/1426) [`73e7755`](https://github.com/apollographql/apollo-client-devtools/commit/73e775584dfcd37ae479fbc5c0ffe4148ab6a203) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Make creating an issue more prominent in the client not found modal by adding a tertiary "Create an issue" button and adding a sentence linking to an issue in the intro paragraph.
+
+## 4.15.3
+
+### Patch Changes
+
+- [#1421](https://github.com/apollographql/apollo-client-devtools/pull/1421) [`7e4c871`](https://github.com/apollographql/apollo-client-devtools/commit/7e4c87117c1b74a7704fce4bde5e77860c68f071) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.15.2
+
+### Patch Changes
+
+- [#1415](https://github.com/apollographql/apollo-client-devtools/pull/1415) [`b2e96fd`](https://github.com/apollographql/apollo-client-devtools/commit/b2e96fdc1bf528afa670e59c749082fa9a76d38d) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.15.1
+
+### Patch Changes
+
+- [#1409](https://github.com/apollographql/apollo-client-devtools/pull/1409) [`2b4ffcf`](https://github.com/apollographql/apollo-client-devtools/commit/2b4ffcf6e1d456ebb509e54a5971dddb7685c7f9) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Refactor away some redundancy on starting/cancelling the request interval to get client data from the devtools scripts.
+
+- [#1409](https://github.com/apollographql/apollo-client-devtools/pull/1409) [`2b4ffcf`](https://github.com/apollographql/apollo-client-devtools/commit/2b4ffcf6e1d456ebb509e54a5971dddb7685c7f9) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Clear the data on screen when the client is no longer connected to the devtools.
+
+- [#1413](https://github.com/apollographql/apollo-client-devtools/pull/1413) [`9157cd2`](https://github.com/apollographql/apollo-client-devtools/commit/9157cd2eeb05976c21163ae74e2efbbcd4c60bdd) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue where messages sent via the `window` adapter could be echoed back to the sender.
+
+## 4.15.0
+
+### Minor Changes
+
+- [#1394](https://github.com/apollographql/apollo-client-devtools/pull/1394) [`84a9634`](https://github.com/apollographql/apollo-client-devtools/commit/84a963462291b78efc021620de58649c817ef194) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add forward and back buttons to the cache tab to navigate the history of cache entries you've visited.
+
+- [#1395](https://github.com/apollographql/apollo-client-devtools/pull/1395) [`59a4500`](https://github.com/apollographql/apollo-client-devtools/commit/59a450008d3562c17ad91ff1553fb8be2cdb50dd) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add an options tab when viewing a query to see the options set for that query.
+
+### Patch Changes
+
+- [#1407](https://github.com/apollographql/apollo-client-devtools/pull/1407) [`0e4600f`](https://github.com/apollographql/apollo-client-devtools/commit/0e4600f56c1736d75df59b972fd98048f333f809) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Make `window.__APOLLO_CLIENT__` configurable so it can be redefined.
+
+- [#1389](https://github.com/apollographql/apollo-client-devtools/pull/1389) [`526a5d2`](https://github.com/apollographql/apollo-client-devtools/commit/526a5d293c8901f12b9458687aeab25d145b8c20) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Remove unneeded setup/teardown of message forwarding in the panel and instead only setup the forwarding once.
+
+- [#1392](https://github.com/apollographql/apollo-client-devtools/pull/1392) [`c9764ea`](https://github.com/apollographql/apollo-client-devtools/commit/c9764ea3611d10299e85ffa13603b1875fdce08e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Remove some redundant logic for connecting to the client instance from the devtools.
+
+- [#1391](https://github.com/apollographql/apollo-client-devtools/pull/1391) [`6d880dd`](https://github.com/apollographql/apollo-client-devtools/commit/6d880dd6dc0d6f6fbb735bea53f592914e9ca113) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Use browser.devtools.network to detect page navigation
+
+## 4.14.2
+
+### Patch Changes
+
+- [#1404](https://github.com/apollographql/apollo-client-devtools/pull/1404) [`abf38d3`](https://github.com/apollographql/apollo-client-devtools/commit/abf38d34f2639f37b369d191504449e67c403f1b) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Reintroduce change to automatically reconnect the ports when they disconnect.
+
+## 4.14.1
+
+### Patch Changes
+
+- [#1397](https://github.com/apollographql/apollo-client-devtools/pull/1397) [`11a77fb`](https://github.com/apollographql/apollo-client-devtools/commit/11a77fb5d80a024c401c828c1dad2d972d105377) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Revert change to automatically reconnect ports from [#1390](https://github.com/apollographql/apollo-client-devtools/pull/1390)
+
+- [#1398](https://github.com/apollographql/apollo-client-devtools/pull/1398) [`bd5c0d0`](https://github.com/apollographql/apollo-client-devtools/commit/bd5c0d051c70f154f0f2acfdd768d77f1bb0d1a2) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Revert change that pushes events rather than polls for them. Reverts [#1379](https://github.com/apollographql/apollo-client-devtools/pull/1379)
+
+## 4.14.0
+
+### Minor Changes
+
+- [#1379](https://github.com/apollographql/apollo-client-devtools/pull/1379) [`eacfbef`](https://github.com/apollographql/apollo-client-devtools/commit/eacfbefe16021c0fa58e6df456405aba4c4f3fec) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Push data from the client to devtools instead of polling for changes.
+
+### Patch Changes
+
+- [#1390](https://github.com/apollographql/apollo-client-devtools/pull/1390) [`3b0f0ea`](https://github.com/apollographql/apollo-client-devtools/commit/3b0f0ea31fb1b9ed420b1730a233d9326fbcb7f3) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Automatically reconnect the ports when they disconnect.
+
+- [#1379](https://github.com/apollographql/apollo-client-devtools/pull/1379) [`eacfbef`](https://github.com/apollographql/apollo-client-devtools/commit/eacfbefe16021c0fa58e6df456405aba4c4f3fec) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Clear the data on screen when the client is no longer connected to the devtools.
+
+## 4.13.1
+
+### Patch Changes
+
+- [#1378](https://github.com/apollographql/apollo-client-devtools/pull/1378) [`02e6fba`](https://github.com/apollographql/apollo-client-devtools/commit/02e6fbac34f37e6a55978f3fb60f320f16d433ce) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix intermittent issue where data would not show up in the devtools after refreshing the page while the Apollo devtools panel is open.
+
+- [#1375](https://github.com/apollographql/apollo-client-devtools/pull/1375) [`7267351`](https://github.com/apollographql/apollo-client-devtools/commit/7267351b1537684b57bea95d9699890e7399e83d) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Use `Object.defineProperty` to register legacy clients to avoid the need to search for the client in a loop in initialization.
+
+## 4.13.0
+
+### Minor Changes
+
+- [#1373](https://github.com/apollographql/apollo-client-devtools/pull/1373) [`23a8cf6`](https://github.com/apollographql/apollo-client-devtools/commit/23a8cf655043468c941c144e226c5a0b44fe3b19) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Show connected Apollo Client version in the devtools. Hovering over the version gives you the release notes for that version, or the pull request information if its a snapshot release.
+
+## 4.12.4
+
+### Patch Changes
+
+- [#1370](https://github.com/apollographql/apollo-client-devtools/pull/1370) [`a51a5fb`](https://github.com/apollographql/apollo-client-devtools/commit/a51a5fbe24ce56045eabde0d4af01023754eb318) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.12.3
+
+### Patch Changes
+
+- [#1362](https://github.com/apollographql/apollo-client-devtools/pull/1362) [`72b181e`](https://github.com/apollographql/apollo-client-devtools/commit/72b181ea8c65d2e9e4e23a9e3e12f2178d8339d7) Thanks [@hehaijin](https://github.com/hehaijin)! - Remove schema data from client message to devtool
+
+## 4.12.2
+
+### Patch Changes
+
+- [#1360](https://github.com/apollographql/apollo-client-devtools/pull/1360) [`e922d83`](https://github.com/apollographql/apollo-client-devtools/commit/e922d8320d2712cef74b0d43702545a9b5880f61) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Revert some changes to the list styles that made the text feel huge
+
+## 4.12.1
+
+### Patch Changes
+
+- [`1a2c62a`](https://github.com/apollographql/apollo-client-devtools/commit/1a2c62a7e15969c808df63ae34d4cc9db44fc790) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - add error codes for new Apollo Client version
+
+## 4.12.0
+
+### Minor Changes
+
+- [#1348](https://github.com/apollographql/apollo-client-devtools/pull/1348) [`3aba499`](https://github.com/apollographql/apollo-client-devtools/commit/3aba499608743290edb6a9a80cebae7783218700) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Add a new button that makes it easier to report an issue in GitHub from the devtools.
+
+### Patch Changes
+
+- [#1349](https://github.com/apollographql/apollo-client-devtools/pull/1349) [`06a0b5a`](https://github.com/apollographql/apollo-client-devtools/commit/06a0b5ae8caafa33767327fb207e552e57dced59) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix some design issues to match latest design implementation
+
+- [#1352](https://github.com/apollographql/apollo-client-devtools/pull/1352) [`2761ff3`](https://github.com/apollographql/apollo-client-devtools/commit/2761ff3b21e14fea3da89fc588c7892b33e6e8eb) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Schedule next request to get client data only after the previous one had finished.
+
+- [#1353](https://github.com/apollographql/apollo-client-devtools/pull/1353) [`7da5963`](https://github.com/apollographql/apollo-client-devtools/commit/7da59635da78f3ef7eea9473c50e723735b8d17c) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Reduce bundle size of error codes by creating a lookup of unique error codes.
+
+## 4.11.6
+
+### Patch Changes
+
+- [#1346](https://github.com/apollographql/apollo-client-devtools/pull/1346) [`0d851a2`](https://github.com/apollographql/apollo-client-devtools/commit/0d851a2a924d524aed6f084b988ea70b3515a856) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.11.5
+
+### Patch Changes
+
+- [#1339](https://github.com/apollographql/apollo-client-devtools/pull/1339) [`6df9b7d`](https://github.com/apollographql/apollo-client-devtools/commit/6df9b7d2a1e4236eeabbc2e39f9db91da5e77193) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+- [#1335](https://github.com/apollographql/apollo-client-devtools/pull/1335) [`62e8bd6`](https://github.com/apollographql/apollo-client-devtools/commit/62e8bd6789f78b5c8b8ed962411677c2c8de53b6) Thanks [@hehaijin](https://github.com/hehaijin)! - Fixed a memory leak issue with devtools
+
+## 4.11.4
+
+### Patch Changes
+
+- [#1330](https://github.com/apollographql/apollo-client-devtools/pull/1330) [`4a60d00`](https://github.com/apollographql/apollo-client-devtools/commit/4a60d00b5549bb00899e28a0733fac82c7bd8d4c) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.11.3
+
+### Patch Changes
+
+- [#1321](https://github.com/apollographql/apollo-client-devtools/pull/1321) [`4a1fd6a`](https://github.com/apollographql/apollo-client-devtools/commit/4a1fd6a8431b7936c7aac0f69c9a04748fb1e37c) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.11.2
+
+### Patch Changes
+
+- [#1313](https://github.com/apollographql/apollo-client-devtools/pull/1313) [`84fb904`](https://github.com/apollographql/apollo-client-devtools/commit/84fb9041024bd16aa03bfb726404eac6c482f0f9) Thanks [@phryneas](https://github.com/phryneas)! - add error codes for new Apollo Client version
+
+## 4.11.1
+
+### Patch Changes
+
+- [#1303](https://github.com/apollographql/apollo-client-devtools/pull/1303) [`df0d242`](https://github.com/apollographql/apollo-client-devtools/commit/df0d242edb9d4eb7ae81eee1c47572e52afe44ff) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue where terminating the client by calling `.stop` would not disconnect it from devtools making it difficult to track newly created clients.
+
+## 4.11.0
+
+### Minor Changes
+
+- [#1286](https://github.com/apollographql/apollo-client-devtools/pull/1286) [`11309f3`](https://github.com/apollographql/apollo-client-devtools/commit/11309f341b28d3b51299ef4a23f1201d4613b3eb) Thanks [@phryneas](https://github.com/phryneas)! - Change transpilation target to create a smaller and more modern DevTools build.
+
+## 4.10.1
+
+### Patch Changes
+
+- [#1287](https://github.com/apollographql/apollo-client-devtools/pull/1287) [`052f242`](https://github.com/apollographql/apollo-client-devtools/commit/052f24239376987b31778999dc3d98036ba38cf0) Thanks [@phryneas](https://github.com/phryneas)! - Move access to the `gql` helper into the background worker to reduce size of injected JavaScript.
+
+## 4.10.0
+
+### Minor Changes
+
+- [#1281](https://github.com/apollographql/apollo-client-devtools/pull/1281) [`badb1f9`](https://github.com/apollographql/apollo-client-devtools/commit/badb1f9c72d05c1badebd94826064f810c21afb0) Thanks [@phryneas](https://github.com/phryneas)! - Add the ability for devtools to provide full error and log messages without the need to need to call `loadDevMessages` or `loadErrorMessages`.
+
+### Patch Changes
+
+- [#1293](https://github.com/apollographql/apollo-client-devtools/pull/1293) [`e417490`](https://github.com/apollographql/apollo-client-devtools/commit/e41749095dcc7a0a18b3ad1a672e0e593e9bc393) Thanks [@github-actions](https://github.com/apps/github-actions)! - add error codes for new Apollo Client version
+
+## 4.9.1
+
+### Patch Changes
+
+- [#1278](https://github.com/apollographql/apollo-client-devtools/pull/1278) [`e886145`](https://github.com/apollographql/apollo-client-devtools/commit/e8861451a854722cfe3983306597ee6e32e4b9ee) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix issue with error serialization when sending an error back through the message passing system. Unfortunately the raw error instance was lost in this process. This fix retains the error message when sending error messages in rpc calls.
+
+## 4.9.0
+
+### Minor Changes
+
+- [#1256](https://github.com/apollographql/apollo-client-devtools/pull/1256) [`28140d8`](https://github.com/apollographql/apollo-client-devtools/commit/28140d87bf0040a4d8d12f7ef1353e31657b0faf) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Introduce rpc utilities to communicate between the extension scripts. Migrate the call to get client data into the devtools to use the rpc utilities.
+
+## 4.8.3
+
+### Patch Changes
+
+- [#1264](https://github.com/apollographql/apollo-client-devtools/pull/1264) [`66c05ae`](https://github.com/apollographql/apollo-client-devtools/commit/66c05ae4cc7231000769e8269e2987ba48c7a779) Thanks [@phryneas](https://github.com/phryneas)! - Enable "@typescript-eslint/consistent-type-imports" lint rule
+
+- [#1265](https://github.com/apollographql/apollo-client-devtools/pull/1265) [`df5300f`](https://github.com/apollographql/apollo-client-devtools/commit/df5300f245b82e6efc15f616724874fbbb0b8a2d) Thanks [@phryneas](https://github.com/phryneas)! - Use relative-CI to monitor build artefact sizes
+
+- [#1268](https://github.com/apollographql/apollo-client-devtools/pull/1268) [`4c98879`](https://github.com/apollographql/apollo-client-devtools/commit/4c98879162c918c5b90652609991a5a357ee4f63) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Revert change that removed JSON stringify on the entire set of client data. This is a followup to [#1259](https://github.com/apollographql/apollo-client-devtools/pull/1259) which only partially fixed the issue.
+
+## 4.8.2
+
+### Patch Changes
+
+- [#1262](https://github.com/apollographql/apollo-client-devtools/pull/1262) [`122c3ee`](https://github.com/apollographql/apollo-client-devtools/commit/122c3ee883cf85078cee6efc31df63e5554c9147) Thanks [@phryneas](https://github.com/phryneas)! - prevent bundling Apollo Client in the hooks.js build
+
+- [#1259](https://github.com/apollographql/apollo-client-devtools/pull/1259) [`de55e20`](https://github.com/apollographql/apollo-client-devtools/commit/de55e2079d17de4e6bdc67582d0a22e577294dfd) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix an issue when sending cache data from the browser to the extension. This was particularly problematic when the cache contained `URL` instances which are not cloneable via the [structured clone algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm)
+
+## 4.8.1
+
+### Patch Changes
+
+- [#1245](https://github.com/apollographql/apollo-client-devtools/pull/1245) [`cb22c6f`](https://github.com/apollographql/apollo-client-devtools/commit/cb22c6f11b0a7bbd5dd997b9f9e846ae23c6cfbc) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Don't `JSON.stringify` the Apollo Client instance data before sending it in the message payload when communicating between the various parts of the devtools extension. This was mostly redundant since message passing already relies on the [structured clone algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm).
+
+- [#1249](https://github.com/apollographql/apollo-client-devtools/pull/1249) [`a36f59d`](https://github.com/apollographql/apollo-client-devtools/commit/a36f59dc5b2db8a17e1d21cac11139c6d3aa3736) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Merge the tabRelay script with the tab script by extracting the body of the Promise callback into tab.ts. This behavior was no longer needed.
+
+## 4.8.0
+
+### Minor Changes
+
+- [#1232](https://github.com/apollographql/apollo-client-devtools/pull/1232) [`8ce6fef`](https://github.com/apollographql/apollo-client-devtools/commit/8ce6fef50589f1e5c8d200c631c722772a692082) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Changes the tab injection mechanism for better compatibility with websites that might have issues with hydration mismatches when using the old injection mechanism.
+
+## 4.7.0
+
+### Minor Changes
+
+- [#1226](https://github.com/apollographql/apollo-client-devtools/pull/1226) [`7c89199`](https://github.com/apollographql/apollo-client-devtools/commit/7c8919966653a5ec894dc6bd3ae835c6a1eb49c6) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Rework the message passing between all areas of the devtools to provide more stability. In particular, the message passing has changed in the following ways:
+
+ - All messages now contain a `source` property set to `apollo-client-devtools`. This avoids potential clashes with events emitted from `window` that had nothing to do with the devtools. This also means that apps or other utilities that listen to messages on `window` know where the message originates.
+ - Strengthen the relationship in the background scripts between the tab and devtools ports.
+ - Add much better type safety for all messages sent through the various areas of the devtools.
+
+### Patch Changes
+
+- [#1228](https://github.com/apollographql/apollo-client-devtools/pull/1228) [`41db9be`](https://github.com/apollographql/apollo-client-devtools/commit/41db9be7a6bdedf2be42014ce52551aa58b7a47a) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Enable strict tsconfig
+
+## 4.6.0
+
+### Minor Changes
+
+- [#1225](https://github.com/apollographql/apollo-client-devtools/pull/1225) [`b63c467`](https://github.com/apollographql/apollo-client-devtools/commit/b63c467aa7751e69cffc5a9650c827d5271fe769) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Migrate the chrome extension to manifest v3.
+
+## 4.5.0
+
+### Minor Changes
+
+- [#1220](https://github.com/apollographql/apollo-client-devtools/pull/1220) [`efcd415`](https://github.com/apollographql/apollo-client-devtools/commit/efcd415d926911bc855ffd15d25a04d18febe396) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Change the devtools behavior to always create a panel regardless of whether an Apollo Client instance can be found. This ensures the panel can at least be reached even if the inter-extension communiation is flaky, or our client detection mechanism is buggy. This should help alleviate the large number of reports that the devtools is simply broken.
+
+ To provide more helpful feedback during usage, status messages are now displayed to show that the devtools is acively trying to locate the client. When a client instance is not found, a helpful dialog is now shown with troubleshooting steps to try and help resolve the issue.
+
+## 4.4.3
+
+### Patch Changes
+
+- [#1202](https://github.com/apollographql/apollo-client-devtools/pull/1202) [`a36a3b7`](https://github.com/apollographql/apollo-client-devtools/commit/a36a3b77b98ccfc3024ef862182df18391f5cb2e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Remove action-hook-fired event that was triggered with nothing listening. This change meant that the `__actionHookForDevTools` callback did nothing. This has now been disabled to avoid adding an extra `onBroadcast` listener on the client.
+
+## 4.4.2
+
+### Patch Changes
+
+- [#1198](https://github.com/apollographql/apollo-client-devtools/pull/1198) [`5d75744`](https://github.com/apollographql/apollo-client-devtools/commit/5d7574411f08da4605d3b53c16747adaaa13562c) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Stop broadcasting messages that aren't listened to by the extension.
+
+ - `client-found`
+ - `panel-open`
+ - `panel-closed`
+
+- [#1197](https://github.com/apollographql/apollo-client-devtools/pull/1197) [`7e9f4ec`](https://github.com/apollographql/apollo-client-devtools/commit/7e9f4ec48a82d78507e8f5b68672e65f4b03fded) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Fix font size of code blocks to match new Apollo design system.
+
+## 4.4.1
+
+### Patch Changes
+
+- [#1194](https://github.com/apollographql/apollo-client-devtools/pull/1194) [`e3118d1`](https://github.com/apollographql/apollo-client-devtools/commit/e3118d1604c6e298118eadfd0de0eca3e530ad8e) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Use icons from new `@apollo/icons` package.
+
+## 4.4.0
+
+### Minor Changes
+
+- [#1180](https://github.com/apollographql/apollo-client-devtools/pull/1180) [`3a5d8dd`](https://github.com/apollographql/apollo-client-devtools/commit/3a5d8dd3f688b452cefed66ee8d44dff4d8dfc00) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Update to new Apollo branding and color scheme. Includes layout improvements and reduces some information redundancy.
+
+## 4.3.1
+
+### Patch Changes
+
+- [#1169](https://github.com/apollographql/apollo-client-devtools/pull/1169) [`5a36ab4`](https://github.com/apollographql/apollo-client-devtools/commit/5a36ab42c534ff750e1bbd697538b3c4f4925dfc) Thanks [@alessbell](https://github.com/alessbell)! - Revert change to script injection approach
+
+## 4.3.0
+
+### Minor Changes
+
+- [#1164](https://github.com/apollographql/apollo-client-devtools/pull/1164) [`f57d124`](https://github.com/apollographql/apollo-client-devtools/commit/f57d124a7627cbdff25f4772416aee2dcefd8249) Thanks [@phryneas](https://github.com/phryneas)! - Change the tab script injection mechanism for better compatibility with websites that might see hydration mismatches with the old injection mechanism.
+
+## 4.2.3
+
+### Patch Changes
+
+- [#1128](https://github.com/apollographql/apollo-client-devtools/pull/1128) [`576efe6`](https://github.com/apollographql/apollo-client-devtools/commit/576efe6f83f21b60af4ea2fbb3cd314fb677d283) Thanks [@alessbell](https://github.com/alessbell)! - Adds settings modal that displays the current devtools version with a link to the GitHub release page
+
+- [#1097](https://github.com/apollographql/apollo-client-devtools/pull/1097) [`0c3e8ec`](https://github.com/apollographql/apollo-client-devtools/commit/0c3e8ec6f1a84a0e07995a55ca4d4f880576c600) Thanks [@alessbell](https://github.com/alessbell)! - Remove unused files `broadcastQueries.js` and `link.js`.
+
+## 4.2.2
+
+### Patch Changes
+
+- [#1057](https://github.com/apollographql/apollo-client-devtools/pull/1057) [`4de261c`](https://github.com/apollographql/apollo-client-devtools/commit/4de261c1cba2b3fc9320d494db1156a27bb13f07) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Introduce Tailwind and begin migrating existing CSS.
+
+## 4.2.1
+
+### Patch Changes
+
+- [#1091](https://github.com/apollographql/apollo-client-devtools/pull/1091) [`873cf88`](https://github.com/apollographql/apollo-client-devtools/commit/873cf88f72631d725c2bff914a9bb0ae6f90353d) Thanks [@alessbell](https://github.com/alessbell)! - Fixes [#817](https://github.com/apollographql/apollo-client-devtools/issues/817): icon for Apollo Client Devtools is missing in Firefox.
+
+## 4.2.0
+
+### Minor Changes
+
+- [#1070](https://github.com/apollographql/apollo-client-devtools/pull/1070) [`8ff6f05`](https://github.com/apollographql/apollo-client-devtools/commit/8ff6f0578ae8ccc124601436ed8fb04b91837626) Thanks [@alessbell](https://github.com/alessbell)! - Removes [`apollo-link-state`](https://github.com/apollographql/apollo-link-state) support, which was deprecated in 2019.
+
+### Patch Changes
+
+- [#1072](https://github.com/apollographql/apollo-client-devtools/pull/1072) [`0d16b8e`](https://github.com/apollographql/apollo-client-devtools/commit/0d16b8e993b6905614b917920a9af39a90f84181) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Upgrade `@emotion/react` to v11.11.1 to get access to updated TypeScript types
+
+- [#1073](https://github.com/apollographql/apollo-client-devtools/pull/1073) [`bc0cd51`](https://github.com/apollographql/apollo-client-devtools/commit/bc0cd51225d99b70e02dea6b67f50adfc3271371) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Upgrade to TypeScript v5
+
+- [#1056](https://github.com/apollographql/apollo-client-devtools/pull/1056) [`ddaec3d`](https://github.com/apollographql/apollo-client-devtools/commit/ddaec3dbdbc8ede12dadca66a3c212cdd56dfca3) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Improve searching the cache by filtering the list of cache ids that match the search term and highlight the matched substring. This change removes the matching against the cache values as that was difficult to determine why a match occurred.
+
+- [#1085](https://github.com/apollographql/apollo-client-devtools/pull/1085) [`61540a8`](https://github.com/apollographql/apollo-client-devtools/commit/61540a8f175de102102bf019c5ebce3eda99e212) Thanks [@alessbell](https://github.com/alessbell)! - Fix scrolling bug introduced when making sidebar expandable.
+
+## 4.1.6
+
+### Patch Changes
+
+- [#947](https://github.com/apollographql/apollo-client-devtools/pull/947) [`41c5fa2`](https://github.com/apollographql/apollo-client-devtools/commit/41c5fa258e5998e03370cb1347b96017f4c0667f) Thanks [@MrDoomBringer](https://github.com/MrDoomBringer)! - Makes the sidebar resizable.
+
+- [#1054](https://github.com/apollographql/apollo-client-devtools/pull/1054) [`ecb25f8`](https://github.com/apollographql/apollo-client-devtools/commit/ecb25f834a2482ac0a490d6305c0c4dd8fcab48c) Thanks [@jerelmiller](https://github.com/jerelmiller)! - Update color theme of areas that display JSON data such as variables and cache data to match the theme used to display GraphQL queries.
+
+## 4.1.5
+
+### Patch Changes
+
+- [#745](https://github.com/apollographql/apollo-client-devtools/pull/745) [`d6cb6f4`](https://github.com/apollographql/apollo-client-devtools/commit/d6cb6f4bae183ed9320e6ee206c602a9e66b4c1a) Thanks [@renovate](https://github.com/apps/renovate)! - Bumps graphql dependency to v16
+
+- [#1038](https://github.com/apollographql/apollo-client-devtools/pull/1038) [`72292ca`](https://github.com/apollographql/apollo-client-devtools/commit/72292ca7b0546266f2968837d815dfbf6c23ef42) Thanks [@phryneas](https://github.com/phryneas)! - Make the devtools <> client registration mechanism more robust. Also lays the groundwork for registering multiple Apollo Client instances in the future.
+
+## 4.0.0 (2021-10-15)
+
+- This release introduces a significant functionality change: [GraphiQL](https://github.com/graphql/graphiql) and [GraphiQL Explorer](https://github.com/OneGraph/graphiql-explorer) have been removed and replaced with an embedded version of [Apollo Studio's Explorer](https://www.apollographql.com/studio/develop). This means many of the more advanced features of Apollo Studio's Explorer are now available to run against your application's defined GraphQL endpoint, all from the comfort of a browser devtools panel. This change does not require you to have a Studio account and all existing GraphiQL / GraphiQL Explorer functionality has been replicated.
+ [@mayakoneval](https://github.com/mayakoneval) in [#660](https://github.com/apollographql/apollo-client-devtools/pull/660)
+
+## 3.0.5 (2021-04-29)
+
+- Fix issues caused by auto-prettying graphiql operations, which can lead to the cursor jumping around in the graphiql editor.
+ [@hwillson](https://github.com/hwillson) in [#541](https://github.com/apollographql/apollo-client-devtools/pull/541)
+- Make sure fragment imports are properly resolved.
+ [@hwillson](https://github.com/hwillson) in [#542](https://github.com/apollographql/apollo-client-devtools/pull/542)
+
+## 3.0.4 (2021-04-04)
+
+- Fix an issue where removing a field in graphiql caused a panel crash.
+ [@hwillson](https://github.com/hwillson) in [#508](https://github.com/apollographql/apollo-client-devtools/pull/508)
+
+## 3.0.3 (2021-04-03)
+
+- Make sure null and boolean values are rendered properly in the Cache tree.
+ [@alexTayanovsky](https://github.com/alexTayanovsky) in [#446](https://github.com/apollographql/apollo-client-devtools/pull/446)
+- Delay the loading / initialization of Apollo Client on each browser tab until it is really needed.
+ [@hwillson](https://github.com/hwillson) in [#479](https://github.com/apollographql/apollo-client-devtools/pull/479)
+- Make sure variables are copied to the GraphiQL panel when using the "Run in GraphiQL" button.
+ [@hwillson](https://github.com/hwillson) in [#491](https://github.com/apollographql/apollo-client-devtools/pull/491)
+- Make sure queries missing document details aren't attempted to be used.
+ [@yrambler2001](https://github.com/yrambler2001) in [#500](https://github.com/apollographql/apollo-client-devtools/pull/500)
+
+## 3.0.2 (2021-03-17)
+
+- Update the `@apollo/client` dep to make sure >= 0.7.0 of `ts-invariant` is
+ used, to pull in a fix that makes sure `window.process` remains writable.
+ [@hwillson](https://github.com/hwillson) in [#463](https://github.com/apollographql/apollo-client-devtools/pull/463)
+
+## 3.0.1 (2021-03-15)
+
+- Update the `@apollo/client` dep to make sure >= 0.6.2 of `ts-invariant` is
+ used, to pull in a fix that makes sure `window.process` remains writable.
+ [@hwillson](https://github.com/hwillson) in [#460](https://github.com/apollographql/apollo-client-devtools/pull/460)
+
+## 3.0.0 (2021-03-02)
+
+- Apollo Client Devtools 3.0 is a ground up behind the scenes re-write that is focused on modernizing the codebase, making it easier to maintain and add new features to moving forward. It includes a new UI that aligns more closely with other Apollo tools like [Apollo Studio](https://www.apollographql.com/studio/develop/), and numerous integration/performance enhancements to better communicate with Apollo Client. The specific changes in this release are too numerous to list here, and are mostly internal, but for those interested in the details the majority of the changes can be seen in [#292](https://github.com/apollographql/apollo-client-devtools/pull/292).
+
+## 2.3.5 (2020-12-18)
+
+- Guard against uninitialized client race condition [@jeffhertzler]() in [#329](https://github.com/apollographql/apollo-client-devtools/pull/329)
+
+## 2.3.4 (2020-12-14)
+
+- Add interval to check for updates; resolves non-updating cache issue [@jcreighton]() in [#321](https://github.com/apollographql/apollo-client-devtools/pull/321)
+
+## 2.3.3 (2020-10-30)
+
+- Fix for undefined schemas error [@jcreighton]() in [#307](https://github.com/apollographql/apollo-client-devtools/pull/307)
+
+## 2.3.2 (2020-10-29)
+
+- Fix for local schema discovery [@micmro]() in [#286](https://github.com/apollographql/apollo-client-devtools/pull/286)
+
+- Compatability with Apollo Client 3.3+ [@jcreighton]() in [#302](https://github.com/apollographql/apollo-client-devtools/pull/302)
+
+- Fix queries not updating [@jcreighton]() in [#302](https://github.com/apollographql/apollo-client-devtools/pull/302)
+
+## 2.3.1 (2020-06-02)
+
+- Check for value before extracting \_\_typename [@jcreighton](https://github.com/jcreighton) in [#267](https://github.com/apollographql/apollo-client-devtools/pull/267)
+
+- Fix to disable saving InspectionQuery results in the cache [@jcreighton](https://github.com/jcreighton) in [#273](https://github.com/apollographql/apollo-client-devtools/pull/273)
+
+## 2.3.0 (2020-05-28)
+
+- Support for Apollo Client 3 🎉 + fixes local state detection
+ [@hwillson](https://github.com/hwillson) in [#263](https://github.com/apollographql/apollo-client-devtools/pull/263)
+
+## 2.2.5 (2019-09-13)
+
+- More fixes for sidebar scrolling.
+ [@sagarhani](https://github.com/sagarhani) in [#225](https://github.com/apollographql/apollo-client-devtools/pull/225)
+
+## 2.2.4
+
+- Fix to enable scrolling on the explorer sidebar.
+ [@RIP21](https://github.com/RIP21) in [#217](https://github.com/apollographql/apollo-client-devtools/pull/217)
+
+## 2.2.3
+
+- Integrate OneGraph's GraphiQL Explorer.
+ [@sgrove](https://github.com/sgrove) in [#199](https://github.com/apollographql/apollo-client-devtools/pull/199)
+- Make sure devtools can be used when the transport layer is websockets
+ only.
+ [@kamerontanseli](https://github.com/kamerontanseli) in [#163](https://github.com/apollographql/apollo-client-devtools/pull/163)
+- Debounce broadcast messages to improve devtools responsiveness and
+ memory usage.
+ [@thomassuckow](https://github.com/thomassuckow) in [#173](https://github.com/apollographql/apollo-client-devtools/pull/173)
+- Gracefully handle a failed version compatibility check.
+ [@mjlyons](https://github.com/mjlyons) in [#201](https://github.com/apollographql/apollo-client-devtools/pull/201)
+- Increase timeout when checking whether to display the devtools panel.
+ [@Gongreg](https://github.com/Gongreg) in [#203](https://github.com/apollographql/apollo-client-devtools/pull/203)
+- Fully reload devtools when a page reload happens, to make sure it is
+ reconnected to the current Apollo Client instance properly.
+ [@hwillson](https://github.com/hwillson) in [#205](https://github.com/apollographql/apollo-client-devtools/pull/205)
+
+## 2.2.1 & 2.2.2
+
+- Fixes an issue preventing scrolling from working properly in Chrome 72 and
+ up.
+ [@scfoxcode](https://github.com/scfoxcode) in [#193](https://github.com/apollographql/apollo-client-devtools/pull/193)
+
+## 2.2.0
+
+- Include local fields and types in GraphiQL ([#172](https://github.com/apollographql/apollo-client-devtools/issues/172), [#159](https://github.com/apollographql/apollo-client-devtools/issues/159))
+ [@justinanastos](https://github.com/justinanastos) in [#188](https://github.com/apollographql/apollo-client-devtools/pull/188)
+
+- Use Apollo Client v2.5 local state 🎉 ([#apollographql/apollo-client#4361](https://github.com/apollographql/apollo-client/pull/4361))
+ [@cheapsteak](https://github.com/cheapsteak) and [@hwillson](https://github.com/hwillson) in [#166](https://github.com/apollographql/apollo-client-devtools/pull/166)
+
+## 2.1.9
+
+- Eliminate use of `window.localStorage`, removing the need for 3rd party cookies ([#118](https://github.com/apollographql/apollo-client-devtools/issues/118), [#142](https://github.com/apollographql/apollo-client-devtools/issues/142))
+ [@justinanastos](https://github.com/justinanastos) in [#185](https://github.com/apollographql/apollo-client-devtools/pull/185)
+
+## 2.1.8
+
+- Fix mutations tab crashing devtools ([#182](https://github.com/apollographql/apollo-client-devtools/issues/182))
+ [@justinanastos](https://github.com/justinanastos) in [#184](https://github.com/apollographql/apollo-client-devtools/pull/184)
+
+## 2.1.7
+
+- Removed https://devtools.apollodata.com/graphql from the content security
+ policy section of `manifest.json`, since it doesn't need to be referenced
+ based on how that endpoint is being used. Removing it helps with
+ Firefox's security review process.
+ [@hwillson](https://github.com/hwillson) in [#156](https://github.com/apollographql/apollo-client-devtools/pull/156)
+- Fix to address issues caused by internal initial state not being set
+ properly, due to trying to access the Apollo Client `queryManager` when
+ it hasn't finished initializing.
+ [@adampetrie](https://github.com/adampetrie) in [#139](https://github.com/apollographql/apollo-client-devtools/pull/139)
+- Fix outdated client message
+
+ [@jonas-arkulpa](https://github.com/jonas-arkulpa)
+ in [#157](https://github.com/apollographql/apollo-client-devtools/pull/157)
+- Prepare to publish to npm (add README for npm and add version to package.json) ([#160](https://github.com/apollographql/apollo-client-devtools/issues/160))
+
+ [@cheapsteak](https://github.com/cheapsteak)
+ in [#167](https://github.com/apollographql/apollo-client-devtools/pull/167)
+- Adding code necessary for React Native support ([#160](https://github.com/apollographql/apollo-client-devtools/issues/160))
+
+ [@Gongreg](https://github.com/Gongreg)
+ in [#165](https://github.com/apollographql/apollo-client-devtools/pull/165)
+- Publish built extension (dist/) ([#169](https://github.com/apollographql/apollo-client-devtools/issues/169))
+
+ [@cheapsteak](https://github.com/cheapsteak)
+ in [#170](https://github.com/apollographql/apollo-client-devtools/pull/170)
+- Make prettier more developer-friendly
+
+ [@justinanastos](https://github.com/justinanastos)
+ in [#178](https://github.com/apollographql/apollo-client-devtools/pull/178)
+- Add sourcemaps to build
+
+ [@justinanastos](https://github.com/justinanastos)
+ in [#179](https://github.com/apollographql/apollo-client-devtools/pull/179)
+- Fix empty cache crashing cache inspector ([#107](https://github.com/apollographql/apollo-client-devtools/issues/107))
+
+ [@justinanastos](https://github.com/justinanastos)
+ in [#177](https://github.com/apollographql/apollo-client-devtools/pull/177)
+- Fix GraphiQL Documentation Explorer crashing with client schema extensions ([#107](https://github.com/apollographql/apollo-client-devtools/issues/107))
+
+ [@justinanastos](https://github.com/justinanastos)
+ in [#180](https://github.com/apollographql/apollo-client-devtools/pull/180)
+
+## 2.1.5
+
+- Fixes a query name parsing issue that lead to a blank page showing when
+ viewing the queries panel.
+ [@hwillson](https://github.com/hwillson) in [#149](https://github.com/apollographql/apollo-client-devtools/pull/149)
+
+## 2.1.4
+
+- Removed all Google Analytics tracking.
+ [@hwillson](https://github.com/hwillson) in [#143](https://github.com/apollographql/apollo-client-devtools/pull/143)
+- Change cursor in dark theme to white
+ [@islam3zzat](https://github.com/islam3zzat) in [#131](https://github.com/apollographql/apollo-client-devtools/pull/131)
+- Fix issue where "Run in GraphiQL" does not include fragments
+ [@henryqdineen](https://github.com/henryqdineen) in [#133](https://github.com/apollographql/apollo-client-devtools/pull/133)
+
+## 2.1.3
+
+- fixed styling of mutation list
+- Allow to use `query.metadata.component.displayName` ([#126](https://github.com/apollographql/apollo-client-devtools/pull/126))
+- Fixed mutation run in GraphiQL button ([#127](https://github.com/apollographql/apollo-client-devtools/pull/127))
+- Fixed bug where query.queryString did not exist ([#125](https://github.com/apollographql/apollo-client-devtools/pull/125))
+- Update vendor GraphiQL styles & fix autocomplete styling ([#123](https://github.com/apollographql/apollo-client-devtools/pull/123))
+
+## 2.1.0
+
+- rebuilt with new architecture
+- initial local schema support (when using cache)
+- initial subscription support
+- improved dark theme
+
+# < 2.1.0
+
+- We didn't keep a changelog :-(
diff --git a/CODEOWNERS b/CODEOWNERS
new file mode 100644
index 000000000..1a131a82e
--- /dev/null
+++ b/CODEOWNERS
@@ -0,0 +1,4 @@
+# This file was automatically generated by the Apollo SecOps team
+# Please customize this file as needed prior to merging.
+
+* @apollographql/client-typescript
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100755
index 000000000..2d14586c4
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,89 @@
+# Apollo Contributor Guide
+
+Excited about Apollo and want to make it better? We’re excited too!
+
+Apollo is a community of developers just like you, striving to create the best tools and libraries around GraphQL. We welcome anyone who wants to contribute or provide constructive feedback, no matter the age or level of experience. If you want to help but don't know where to start, let us know, and we'll find something for you.
+
+Oh, and if you haven't already, check out [Apollo's Community Forum](https://community.apollographql.com/).
+
+Here are some ways to contribute to the project, from easiest to most difficult:
+
+- [Reporting bugs](#reporting-bugs)
+- [Improving the documentation](#improving-the-documentation)
+- [Responding to issues](#responding-to-issues)
+- [Small bug fixes](#small-bug-fixes)
+- [Changesets](#changesets)
+- [Suggesting features](#suggesting-features)
+- [Big pull requests](#big-prs)
+
+## Issues
+
+### Reporting bugs
+
+If you encounter a bug, please file an issue on GitHub via the repository of the sub-project you think contains the bug. If an issue you have is already reported, please add additional information or add a 👍 reaction to indicate your agreement.
+
+While we will try to be as helpful as we can on any issue reported, please include the following to maximize the chances of a quick fix:
+
+1. **Intended outcome:** What you were trying to accomplish when the bug occurred, and as much code as possible related to the source of the problem.
+2. **Actual outcome:** A description of what actually happened, including a screenshot or copy-paste of any related error messages, logs, or other output that might be related. Places to look for information include your browser console, server console, and network logs. Please avoid non-specific phrases like “didn’t work” or “broke”.
+3. **How to reproduce the issue:** Instructions for how the issue can be reproduced by a maintainer or contributor. Be as specific as possible, and only mention what is necessary to reproduce the bug. If possible, build a reproduction with our [error template](https://github.com/apollographql/react-apollo-error-template) to isolate the exact circumstances in which the bug occurs. Avoid speculation over what the cause might be.
+
+Creating a good reproduction really helps contributors investigate and resolve your issue quickly. In many cases, the act of creating a minimal reproduction illuminates that the source of the bug was somewhere outside the library in question, saving time and effort for everyone.
+
+### Improving the documentation
+
+Improving the documentation, examples, and other open source content can be the easiest way to contribute to the library. If you see a piece of content that can be better, open a PR with an improvement, no matter how small! If you would like to suggest a big change or major rewrite, we’d love to hear your ideas but please open an issue for discussion before writing the PR.
+
+### Responding to issues
+
+In addition to reporting issues, a great way to contribute to Apollo is to respond to other peoples' issues and try to identify the problem or help them work around it. If you’re interested in taking a more active role in this process, please go ahead and respond to issues. And don't forget to say "Hi" on Apollo Slack!
+
+### Changesets
+
+Apollo Client Devtools uses [changesets](https://github.com/changesets/changesets) to automate its versioning and release process. When contributing, your PR should contain a "changeset" that can be generated by running `npx changeset` from your branch locally.
+
+The changeset CLI will ask you to enter the corresponding [semver bump type](https://semver.org/) and a description of your changes: feel free to enter a brief description via the command line and continue editing the generated Markdown file found inside of `.changeset` in your editor of choice. When editing your changeset's Markdown file, you can leverage any of the features of GitHub flavored markdown! The description you provide in your changeset will be used to generate an entry in `CHANGELOG.md` and the release notes in a future release, so the more complete and descriptive the better.
+
+### Small bug fixes
+
+For a small bug fix change (less than 20 lines of code changed), feel free to open a pull request. We’ll try to merge it as fast as possible and ideally publish a new release on the same day. The only requirement is, make sure you also add a test that verifies the bug you are trying to fix.
+
+### Suggesting features
+
+Most of the features in Apollo came from suggestions by you, the community! We welcome any ideas about how to make Apollo better for your use case. Unless there is overwhelming demand for a feature, it might not get implemented immediately, but please include as much information as possible that will help people have a discussion about your proposal:
+
+1. **Use case:** What are you trying to accomplish, in specific terms? Often, there might already be a good way to do what you need and a new feature is unnecessary, but it’s hard to know without information about the specific use case.
+2. **Could this be a plugin?** In many cases, a feature might be too niche to be included in the core of a library, and is better implemented as a companion package. If there isn’t a way to extend the library to do what you want, could we add additional plugin APIs? It’s important to make the case for why a feature should be part of the core functionality of the library.
+3. **Is there a workaround?** Is this a more convenient way to do something that is already possible, or is there some blocker that makes a workaround unfeasible?
+
+Feature requests will be labeled as such, and we encourage using GitHub issues as a place to discuss new features and possible implementation designs. Please refrain from submitting a pull request to implement a proposed feature until there is consensus that it should be included. This way, you can avoid putting in work that can’t be merged in.
+
+Once there is a consensus on the need for a new feature, proceed as listed below under “Big PRs”.
+
+## Big PRs
+
+This includes:
+
+- Big bug fixes
+- New features
+
+For significant changes to a repository, it’s important to settle on a design before starting on the implementation. This way, we can make sure that major improvements get the care and attention they deserve. Since big changes can be risky and might not always get merged, it’s good to reduce the amount of possible wasted effort by agreeing on an implementation design/plan first.
+
+1. **Open an issue.** Open an issue about your bug or feature, as described above.
+2. **Reach consensus.** Some contributors and community members should reach an agreement that this feature or bug is important, and that someone should work on implementing or fixing it.
+3. **Agree on intended behavior.** On the issue, reach an agreement about the desired behavior. In the case of a bug fix, it should be clear what it means for the bug to be fixed, and in the case of a feature, it should be clear what it will be like for developers to use the new feature.
+4. **Agree on implementation plan.** Write a plan for how this feature or bug fix should be implemented. What modules need to be added or rewritten? Should this be one pull request or multiple incremental improvements? Who is going to do each part?
+5. **Submit PR.** In the case where multiple dependent patches need to be made to implement the change, only submit one at a time. Otherwise, the others might get stale while the first is reviewed and merged. Make sure to avoid “while we’re here” type changes - if something isn’t relevant to the improvement at hand, it should be in a separate PR; this especially includes code style changes of unrelated code.
+6. **Review.** At least one core contributor should sign off on the change before it’s merged. Look at the “code review” section below to learn about factors are important in the code review. If you want to expedite the code being merged, try to review your own code first!
+7. **Merge and release!**
+
+### Code review guidelines
+
+It’s important that every piece of code in Apollo packages is reviewed by at least one core contributor familiar with that codebase. Here are some things we look for:
+
+1. **Required CI checks pass.** This is a prerequisite for the review, and it is the PR author's responsibility. As long as the tests don’t pass, the PR won't get reviewed.
+2. **Simplicity.** Is this the simplest way to achieve the intended goal? If there are too many files, redundant functions, or complex lines of code, suggest a simpler way to do the same thing. In particular, avoid implementing an overly general solution when a simple, small, and pragmatic fix will do.
+3. **Testing.** Do the tests ensure this code won’t break when other stuff changes around it? When it does break, will the tests added help us identify which part of the library has the problem? Did we cover an appropriate set of edge cases? Look at the test coverage report if there is one. Are all significant code paths in the new code exercised at least once?
+4. **No unnecessary or unrelated changes.** PRs shouldn’t come with random formatting changes, especially in unrelated parts of the code. If there is some refactoring that needs to be done, it should be in a separate PR from a bug fix or feature, if possible.
+5. **Code has appropriate comments.** Code should be commented, or written in a clear “self-documenting” way.
+6. **Idiomatic use of the language.** In TypeScript, make sure the typings are specific and correct. In ES2015, make sure to use imports rather than require and const instead of var, etc. Ideally a linter enforces a lot of this, but use your common sense and follow the style of the surrounding code.
diff --git a/LICENSE b/LICENSE
new file mode 100755
index 000000000..35bf1481b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2021 Apollo Graph, Inc. (Formerly Meteor Development Group, Inc.)
+
+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.
diff --git a/README.md b/README.md
old mode 100644
new mode 100755
index eb3eb72f0..90f6761ad
--- a/README.md
+++ b/README.md
@@ -1,114 +1,155 @@
-Apollo Client Devtools
-===
+
-This repository contains the [Apollo Client Devtools](https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm) Chrome extension and React component.
+
+
+
+
Apollo Client Devtools
-The dev tools require at least `apollo-client@0.5.18`. To see component names in the query inspector, you need at least `react-apollo@0.7.1`.
+[![Chrome Web Store][ChromeWebStoreBadge]][WebStore] [![Addons.mozilla.org][FirefoxAddonBadge]][Amo] [](https://circleci.com/gh/apollographql/apollo-client-devtools)
-Features
-===
+
-The devtools appear as an "Apollo" tab in your Chrome inspector, along side the "Elements" and "Console" tabs. There are currently 3 main features of the devtools:
+This repository contains the Apollo Client Browser Devtools extension for Chrome & Firefox.
- * GraphiQL: Send queries to your server through the Apollo network interface, or query the Apollo cache to see what data is loaded.
- * Normalized store inspector: Visualize your GraphQL store the way Apollo Client sees it, and search by field names or values.
- * Watched query inspector: View active queries and variables, and locate the associated UI components.
+| ☑️ Apollo Client User Survey |
+| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| What do you like best about Apollo Client? What needs to be improved? Please tell us by taking a [one-minute survey](https://docs.google.com/forms/d/e/1FAIpQLSczNDXfJne3ZUOXjk9Ursm9JYvhTh1_nFTDfdq3XBAFWCzplQ/viewform?usp=pp_url&entry.1170701325=Apollo+Client&entry.204965213=Readme). Your responses will help us understand Apollo Client usage and allow us to serve you better. |
-
+## Installation
-Make requests against either your app’s GraphQL server or the Apollo Client cache through the Chrome developer console. This version of GraphiQL leverages your app’s network interface, so there’s no configuration necessary — it automatically passes along the proper HTTP headers, etc. the same way your Apollo Client app does.
+### Chrome Web Store
-
+Chrome users can install the extension by visiting the [Chrome Web Store](https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm).
-View the state of your client-side cache as a tree and inspect every object inside. Visualize the [mental model](https://dev-blog.apollodata.com/the-concepts-of-graphql-bc68bd819be3) of the Apollo cache. Search for specific keys and values in the store and see the path to those keys highlighted.
+Opera users can install the extension from Chrome Web Store using the [Download Chrome Extension](https://addons.opera.com/extensions/details/app_id/kipjbhgniklcnglfaldilecjomjaddfi) addon for Opera.
-
+### Firefox
-View the queries being actively watched on any given page. See when they're loading, what variables they're using, and, if you’re using React, which React component they’re attached to. Angular support coming soon.
+Firefox users can install the addon via [Firefox Browser Add-ons](https://addons.mozilla.org/firefox/addon/apollo-developer-tools/).
-Installation
-===
+### Install local version
-You can install the extension via the [Chrome Webstore](https://chrome.google.com/webstore/detail/apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm).
-If you want to install a local version of the extension instead, skip ahead to the __Developing__ section.
+If you want to install a local version of the extension instead, skip ahead to the [Developing](#Developing) section.
-### Configuration
+## Features
-While your app is in dev mode, the devtools will appear as an "Apollo" tab in your chrome inspector. To enable the devtools in your app even in production, pass `connectToDevTools: true` to the ApolloClient constructor in your app. Pass `connectToDevTools: false` if want to manually disable this functionality.
+The Apollo Client Browser Devtools appear as an "Apollo" tab in your web browser inspector, alongside other tabs like "Elements" and "Console". The devtools currently have four main features:
-The "Apollo" tab will appear in the Chrome console iff there exists a global `window.__APOLLO_CLIENT__` object in your app. Apollo Client adds this hook to the window automatically unless `process.env.NODE_ENV === 'production'`. If you would like to use the devtools in production, just manually attach your Apollo Client instance to `window.__APOLLO_CLIENT__` or pass `connectToDevTools: true` to the constructor.
+- **Explorer:** A built-in version of the Apollo Studio Explorer that allows you to make queries against your GraphQL server using your app's network interface directly (no configuration necessary).
+- **Watched query inspector:** View active queries, variables, cached results, and re-run individual queries.
+- **Mutation inspector:** View fired mutations, variables, and re-run individual mutations.
+- **Cache inspector:** Visualize the Apollo Client cache and search through it by field names and/or values.
-If you're seeing the "Apollo" tab but still having issues, skip ahead to the __Developing: Debugging__ section.
+
-Developing
-===
+## Apollo Client version support
-### Installation
+> if you are using an older version of Apollo Client and have issues with our Client Browser Devtools we recommend you upgrade to the latest version of Apollo Client.
-After cloning this repo, compile the extension bundle:
+- We provide active support for the current minor release of [Apollo Client](https://github.com/apollographql/apollo-client) for use with our Client Browser DevTools.
+- We do our best to support older `3.x` versions of [Apollo Client](https://github.com/apollographql/apollo-client/releases) for use with our Client Browser DevTools.
+- We do not offer support of `2.x` versions of [Apollo Client](https://github.com/apollographql/apollo-client/releases) for use with our Client Browser DevTools.
-```bash
-cd apollo-client-devtools
-npm install
-webpack
-```
+### Configuration
-Install the extension in Chrome:
+While your application is in dev mode, the devtools will appear as an "Apollo" tab in your web browser inspector. To enable the devtools for your application in production, pass `connectToDevTools: true` to the ApolloClient constructor in your application. Pass `connectToDevTools: false` if want to manually disable this functionality.
- * Open [chrome://extensions](chrome://extensions)
- * Enable the 'Developer Mode' checkbox
- * Click 'Load unpacked extensions...'
- * Select the `apollo-client-devtools/extension` folder
+The "Apollo" tab will appear in your web browser inspector if a global `window.__APOLLO_CLIENT__` object exists in your application. Apollo Client adds this hook to the window automatically unless `process.env.NODE_ENV === 'production'`. If you would like to use the devtools in production, manually attach your Apollo Client instance to `window.__APOLLO_CLIENT__` or pass `connectToDevTools: true` to the constructor.
-Now, while on any page, open the chrome inspector. If you're inspecting a page that is using Apollo Client, there will be a global `window.__APOLLO_CLIENT__` object on that page. If that object exists, you will see an "Apollo" tab in the inspector menu. This tab will contain the Apollo Client devtools.
+If you are seeing the "Apollo" tab but are still having issues, skip ahead to the [Debugging](#Debugging) section.
-### Folder structure
+## Developing
+
+### Build the extension
+
+Before building the extension you should install dependencies:
-The extension is built using React and ES6. All the main source code for the devtools exists in the `/app`
-folder, with `components/Panel.js` being the container component, and `index.js` attatching the
-`Panel` to the document itself. If you're interested in editing the current code or adding a new feature,
-you would do so here.
+```sh
+# Install dependencies
+> npm install
-Wepback bundles the code from `/app` into `/extension/dist`. Thus the `/extension` folder contains
-the chrome extension itself, and has the necessary manifest.json file and image resources. To load the
-extension locally, you would load from this folder. Likewise, to upload the extension to the Chrome Webstore,
-you would upload a zip of this folder.
+# (Optional) build the extension for local use
+> npm run build -- --env TARGET=chrome
+# or
+> npm run build -- --env TARGET=firefox
-The root of the repo contains the .bablerc file, webpack config file, and necessary package.json and
-index.js files to make the repo bundle correctly and export as a node module (see the next section).
+# Or generate zipped distributables (already includes the above build step)
+> npm run dist:chrome
+# or
+> npm run dist:firefox
+```
+
+### Running the sample application
-### Reloading the Chrome extension
+[Read more](https://github.com/apollographql/apollo-client-devtools/wiki/Running-the-sample-application).
-Unfortunately, there is no way to hot-reload a Chrome extension in the inspector while developing it.
+### Development with web-ext & WebExtWebpackPlugin
-While actively working on the devtools, you should run `webpack -w` in the devtools repo. This will have webpack watch your files, and rebundle them automatically whenever you make a change. With `webpack -w` running, you'll simply have to close the chrome inspector and open it again to see your changes in effect (no need to hit reload on the [chrome://extensions](chrome://extensions) page unless you make a change to the extension manifest).
+[Read more](https://github.com/apollographql/apollo-client-devtools/wiki/Development-with-web%E2%80%90ext-&-WebExtWebpackPlugin).
-### Developing with hot reload in an app
+### Tests
-For faster development with hot reloading, we have also created a way for you to insert the devtools panel into an apollo client app as a React component, and thus have it hot reload using your app's own reloading configuration.
+We use [Jest](https://jestjs.io/) and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro) to write and run our tests.
-To do this, first link the apollo-client-devtools to your app's node modules.
+To run tests for both `src` and `development`, run the following command:
```bash
-cd /path/to/your/apollo-client/app
-npm link /path/to/apollo-client-devtools
+npm run test
```
-Then in your app, import the apollo-client-devtools `Panel` component:
+You can also run with `--watch` to watch and re-run tests automatically:
-```js
-const Panel = require('apollo-client-devtools').Panel;
+```bash
+npm run test:watch
```
-Now you can insert the `` component into your app. This will overlay the contents of the Apollo dev tools tab onto your app, allowing you to work on code in the extension at the same speed with which you'd work on code for your app.
-
-We've been developing internally against [Githunt-React](https://github.com/apollostack/GitHunt-React). If you checkout and run the `devtools` branch on Githunt-React, you can develop against the same configuration we've been using.
+### Folder structure
-*Note: While great for expedited development of layout and CSS, this method doesn't allow you to simulate the environment of a chrome extension perfectly. Thus, we recommend you use a combination of both this process and the one described in the previous section while working on the extension. Make sure to test any major changes in the final environment.*
+[Read more](https://github.com/apollographql/apollo-client-devtools/wiki/Folder-structure).
### Debugging
-If there is an error in the devtools panel, you can inspect it just like you would inspect a normal webpage. Detach the inspector console from the window (if it's not already detached) by clicking the button with three vertical dots in the upper right corner of the console and selecting the detach option. With the detached console in focus, press `opt-cmd-I` again to open an inspector
-for the detached console (inspector inception). In this new inspector, you will be able to inspect elements in the first inspector, including the Apollo dev tools panel.
+[Read more](https://github.com/apollographql/apollo-client-devtools/wiki/Debugging).
+
+### Testing locally
+
+[Read more](https://github.com/apollographql/apollo-client-devtools/wiki/Testing-locally).
+
+## Code of Conduct
+
+This project is governed by the [Apollo Code of Conduct](https://www.apollographql.com/docs/community/code-of-conduct/).
+
+## Who is Apollo?
+
+[Apollo](https://apollographql.com/) builds open-source software and a graph platform to unify GraphQL across your apps and services. We help you ship faster with:
+
+- [Apollo Studio](https://www.apollographql.com/studio/develop/) – A free, end-to-end platform for managing your GraphQL lifecycle. Track your GraphQL schemas in a hosted registry to create a source of truth for everything in your graph. Studio provides an IDE (Apollo Explorer) so you can explore data, collaborate on queries, observe usage, and safely make schema changes.
+- [Apollo Federation](https://www.apollographql.com/apollo-federation) – The industry-standard open architecture for building a distributed graph. Use Apollo’s gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services.
+- [Apollo Client](https://www.apollographql.com/apollo-client/) – The most popular GraphQL client for the web. Apollo also builds and maintains [Apollo iOS](https://github.com/apollographql/apollo-ios) and [Apollo Kotlin](https://github.com/apollographql/apollo-kotlin).
+- [Apollo Server](https://www.apollographql.com/docs/apollo-server/) – A production-ready JavaScript GraphQL server that connects to any microservice, API, or database. Compatible with all popular JavaScript frameworks and deployable in serverless environments.
+
+## Learn how to build with Apollo
+
+Check out the [Odyssey](https://odyssey.apollographql.com/) learning platform, the perfect place to start your GraphQL journey with videos and interactive code challenges. Join the [Apollo Community](https://community.apollographql.com/) to interact with and get technical help from the GraphQL community.
+
+## Maintainers
+
+| Name | Username |
+| ----------------- | ---------------------------------------------- |
+| Jeff Auriemma | [@bignimbus](https://github.com/bignimbus) |
+| Jerel Miller | [@jerelmiller](https://github.com/jerelmiller) |
+| Lenz Weber-Tronic | [@phryneas](https://github.com/phryneas) |
+
+
+
+[FirefoxAddonBadge]: https://img.shields.io/amo/v/apollo-developer-tools.svg?label=firefox&logo=firefox-browser&logoColor=white
+[ChromeWebStoreBadge]: https://img.shields.io/chrome-web-store/v/jdkknkkbebbapilgoeccciglkfbmbnfm.svg?label=chrome&logo=google-chrome&logoColor=white
+
+
+
+[Amo]: https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/
+[WebStore]: https://chrome.google.com/webstore/detail/apollo-client-devtools/jdkknkkbebbapilgoeccciglkfbmbnfm
+
+
-If you're seeing an error that's being caused by the devtools, please open an Issue on this repository with a detailed explanation of the problem and steps that we can take to replicate the error.
+[Apollo Community Forum]: https://community.apollographql.com/
diff --git a/all-clients/.gitignore b/all-clients/.gitignore
new file mode 100644
index 000000000..483a9c42c
--- /dev/null
+++ b/all-clients/.gitignore
@@ -0,0 +1 @@
+package-lock.json
\ No newline at end of file
diff --git a/all-clients/encode-errorcodes.mjs b/all-clients/encode-errorcodes.mjs
new file mode 100644
index 000000000..329875aa3
--- /dev/null
+++ b/all-clients/encode-errorcodes.mjs
@@ -0,0 +1,106 @@
+import { registerHooks } from "node:module";
+import pkg from "./package.json" with { type: "json" };
+import { writeFile } from "node:fs/promises";
+import { restoreErrorCodes } from "./restore-errorcodes.mjs";
+import assert from "node:assert";
+import { gt } from "semver";
+
+registerHooks({
+ resolve(specifier, context, nextResolve) {
+ const regex = /^@apollo-client\/(.*?)\/invariantErrorCodes\.js$/;
+ const match = regex.exec(specifier);
+ const version = match?.[1];
+
+ return nextResolve(
+ version
+ ? `./node_modules/@apollo-client/${version}/invariantErrorCodes.js`
+ : specifier,
+ context
+ );
+ },
+});
+
+function getLookupArray() {
+ const map = new Map();
+ const array = [null];
+ function lookup(value) {
+ if (map.has(value)) {
+ return map.get(value);
+ } else {
+ const index = array.push(value) - 1;
+ map.set(value, index);
+ return index;
+ }
+ }
+ return [array, lookup];
+}
+
+let nextErrorId = 0;
+const [allMessages, getMessageIndex] = getLookupArray();
+const [allFiles, getFileIndex] = getLookupArray();
+const [allConditions, getConditionIndex] = getLookupArray();
+const byVersion = {};
+const errors = {};
+
+const prefix = "@apollo-client/";
+for (const partialPath of Object.keys(pkg.dependencies).sort((a, b) =>
+ gt(a.substring(prefix.length), b.substring(prefix.length)) ? 1 : -1
+)) {
+ const match = new RegExp("/([^/]*)$").exec(partialPath);
+ if (!match) continue;
+ const version = match[1];
+ const from = import.meta.resolve(`${partialPath}/invariantErrorCodes.js`);
+
+ const { devDebug, devLog, devWarn, devError, errorCodes } = await import(
+ from
+ );
+ const combinedEntries = Object.entries({
+ ...devDebug,
+ ...devLog,
+ ...devWarn,
+ ...devError,
+ ...errorCodes,
+ });
+
+ const collected = new Uint16Array(
+ (Math.max(...Object.keys(combinedEntries)) + 1) * 3
+ );
+
+ for (const entry of combinedEntries) {
+ const code = entry[0] - 1;
+ /** @type {{file: string, condition?: string, message: string}} */
+ const { file, condition, message } = entry[1];
+
+ collected[code * 3] = getMessageIndex(message);
+ collected[code * 3 + 1] = getFileIndex(file);
+ collected[code * 3 + 2] = getConditionIndex(condition);
+ }
+ const encoded = Buffer.from(collected).toString("base64");
+ const errorId = String(
+ Object.keys(errors).find((id) => errors[id] === encoded) ?? ++nextErrorId
+ );
+ errors[errorId] = encoded;
+ byVersion[version] = errorId;
+
+ // we immediately restore to verify a full roundtrip
+ assert.deepStrictEqual(
+ restoreErrorCodes(
+ { allMessages, allConditions, allFiles, byVersion, errors },
+ version
+ ),
+ Object.fromEntries(combinedEntries)
+ );
+}
+const encoded = JSON.stringify(
+ {
+ allMessages,
+ allConditions,
+ allFiles,
+ byVersion,
+ errors,
+ },
+ undefined,
+ 2
+);
+
+writeFile("errorcodes.json", encoded, "utf-8");
diff --git a/all-clients/errorcodes.json b/all-clients/errorcodes.json
new file mode 100644
index 000000000..209b82e66
--- /dev/null
+++ b/all-clients/errorcodes.json
@@ -0,0 +1,598 @@
+{
+ "allMessages": [
+ null,
+ "store.merge expects a string ID",
+ "Missing field '%s' while extracting keyFields from %s",
+ "Cannot change root %s __typename more than once",
+ "Inferring subtype %s of supertype %s",
+ "Undefined 'from' passed to readField with arguments %s",
+ "Cannot automatically merge arrays",
+ "No fragment named %s",
+ "Missing selection set for object of type %s returned for query field %s",
+ "Could not identify object %s",
+ "Missing field '%s' while writing result %o",
+ "Cache data may be lost when replacing the %s field of a %s object.\n\nTo address this problem (which is not a bug in Apollo Client), %sdefine a custom merge function for the %s field, so InMemoryCache can safely merge these objects:\n\n existing: %s\n incoming: %s\n\nFor more information about these options, please refer to the documentation:\n\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\n",
+ "To initialize Apollo Client, you must specify a 'cache' property in the options object. \nFor more information, please visit: https://go.apollo.dev/c/docs",
+ "Download the Apollo DevTools for a better development experience: %s",
+ "The cache-and-network fetchPolicy does not work with client.query, because client.query can only return a single result. Please use client.watchQuery to receive multiple results from the cache and the network, or consider using a different fetchPolicy, such as cache-first or network-only.",
+ "In client.refetchQueries, Promise.all promise rejected with error %o",
+ "`getCacheKey` must return an array or undefined",
+ "Called refetch(%o) for query %o, which does not declare a $variables variable.\nDid you mean to call refetch(variables) instead of refetch({ variables })?",
+ "Unhandled GraphQL subscription error",
+ "Attempted to start a polling query without a polling interval.",
+ "Unhandled error",
+ "Missing cache result fields: %o",
+ "QueryManager stopped while query was in flight",
+ "mutation option is required. You must specify your GraphQL document in the mutation option.",
+ "Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.",
+ "query option is required. You must specify your GraphQL document in the query option.",
+ "You must wrap the query string in a \"gql\" tag.",
+ "returnPartialData option only supported on watchQuery.",
+ "pollInterval option only supported on watchQuery.",
+ "Store reset while query was in flight (not completed in link chain)",
+ "Unknown query named \"%s\" requested in refetchQueries options.include array",
+ "Unknown query %s requested in refetchQueries options.include array",
+ "You are calling concat on a terminating link, which will have no effect %o",
+ "request is not implemented",
+ "\n\"fetch\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\n\nimport fetch from 'cross-fetch';\nimport { ApolloClient, HttpLink } from '@apollo/client';\nconst client = new ApolloClient({\n link: new HttpLink({ uri: '/graphql', fetch })\n});\n ",
+ "Multipart-subscriptions do not support @defer",
+ "Network request failed. %s is not serializable: %s",
+ "Missing/invalid \"sha256\" or \"generateHash\" function. Please configure one using the \"createPersistedQueryLink(options)\" options parameter.",
+ "PersistedQueryLink cannot be the last link in the chain.",
+ "Promise Wrapper does not support multiple results from Observable",
+ "illegal argument: %s",
+ "Could not find \"client\" in the context of ApolloConsumer. Wrap the root component in an .",
+ "Invoking `getApolloContext` in an environment where `React.createContext` is not available.\nThe Apollo Client functionality you are trying to use is only available in React Client Components.\nPlease make sure to add \"use client\" at the top of your file.\nFor more information, see https://nextjs.org/docs/getting-started/react-essentials#client-components",
+ "ApolloProvider was not passed a client instance. Make sure you pass in your client via the \"client\" prop.",
+ "To access the wrapped instance, you need to specify { withRef: true } in the options",
+ "Could not find \"client\" in the context or passed in as an option. Wrap the root component in an , or pass an ApolloClient instance in via options.",
+ "It appears that `useReadQuery` was used outside of `useBackgroundQuery`. `useReadQuery` is only supported for use with `useBackgroundQuery`. Please ensure you are passing the `queryRef` returned from `useBackgroundQuery`.",
+ "Calling default no-op implementation of InternalState#forceUpdate",
+ "'useSubscription' supports only the 'onSubscriptionData' or 'onData' option, but not both. Only the 'onData' option will be used.",
+ "'onSubscriptionData' is deprecated and will be removed in a future major version. Please use the 'onData' option instead.",
+ "'useSubscription' supports only the 'onSubscriptionComplete' or 'onComplete' option, but not both. Only the 'onComplete' option will be used.",
+ "'onSubscriptionComplete' is deprecated and will be removed in a future major version. Please use the 'onComplete' option instead.",
+ "Could not find a \"suspenseCache\" in the context or passed in as an option. Wrap the root component in an and provide a suspenseCache, or pass a SuspenseCache instance in via options.",
+ "The fetch policy `%s` is not supported with suspense.",
+ "Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.",
+ "The result of getSnapshot should be cached to avoid an infinite loop",
+ "Argument of %s passed to parser was not a valid GraphQL DocumentNode. You may need to use 'graphql-tag' or another method to convert your operation into a document",
+ "Passing only a fragment to 'graphql' is not yet supported. You must include a query, subscription or mutation as well",
+ "react-apollo only supports a query, subscription, or a mutation per HOC. %s had %s queries, %s subscriptions and %s mutations. You can use 'compose' to join multiple operation types to a component",
+ "react-apollo only supports one definition per HOC. %s had %s definitions. You can use 'compose' to join multiple operation types to a component",
+ "Running a %s requires a graphql %s, but a %s was used instead.",
+ "query is required",
+ "Invalid variable referenced in @%s directive.",
+ "Incorrect number of arguments for the @%s directive.",
+ "Invalid argument for the @%s directive.",
+ "Argument for the @%s directive must be a variable or a boolean value.",
+ "Found a %s operation%s. No operations are allowed when using a fragment as a query. Only fragments are allowed.",
+ "Found %s fragments. `fragmentName` must be provided when there is not exactly 1 fragment.",
+ "Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \"gql\" tag? http://docs.apollostack.com/apollo-client/core.html#gql",
+ "Schema type definitions not allowed in queries. Found: \"%s\"",
+ "Ambiguous GraphQL document: contains %s operations",
+ "Must contain a query definition.",
+ "Fragment must have exactly one definition.",
+ "Must be a fragment definition.",
+ "Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.",
+ "The inline argument \"%s\" of kind \"%s\"is not supported. Use variables instead of inline arguments to overcome this limitation.",
+ "Could not find operation or fragment",
+ "Removing an @connection directive even though it does not have a key. You may want to use the key parameter to specify a store key.",
+ "Cache data may be lost when replacing the %s field of a %s object.\n\nThis could cause additional (usually avoidable) network requests to fetch data that were otherwise cached.\n\nTo address this problem (which is not a bug in Apollo Client), %sdefine a custom merge function for the %s field, so InMemoryCache can safely merge these objects:\n\n existing: %s\n incoming: %s\n\nFor more information about these options, please refer to the documentation:\n\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\n",
+ "cache.modify: You are trying to write a Reference that is not part of the store: %o\nPlease make sure to set the `mergeIntoStore` parameter to `true` when creating a Reference that is not part of the store yet:\n`toReference(object, true)`",
+ "cache.modify: Writing an array with a mix of both References and Objects will not result in the Objects being normalized correctly.\nPlease convert the object instance %o to a Reference before writing it to the cache by calling `toReference(object, true)`.",
+ "Cache data may be lost when replacing the %s field of a %s object.\n\nThis could cause additional (usually avoidable) network requests to fetch data that were otherwise cached.\n\nTo address this problem (which is not a bug in Apollo Client), %sdefine a custom merge function for the %s field, so InMemoryCache can safely merge these objects:\n\n existing: %o\n incoming: %o\n\nFor more information about these options, please refer to the documentation:\n\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\n",
+ "Mock response maxUsageCount must be greater than 0, %s given",
+ "useLoadableQuery: 'loadQuery' should not be called during render. To start a query during render, use the 'useBackgroundQuery' hook.",
+ "Unknown query %o requested in refetchQueries options.include array",
+ "Expected a QueryRef object, but got something else instead.",
+ "The query has not been loaded. Please load the query.",
+ "A subscription that is skipped cannot be restarted.",
+ "You must provide an `updateQuery` function when using `fetchMore` with a `no-cache` fetch policy.",
+ "Could not identify object passed to `from` for '%s' fragment, either because the object is non-normalized or the key fields are missing. If you are masking this object, please ensure the key fields are requested by the parent object.",
+ "[%s]: Fragments masked by data masking are inaccessible when using fetch policy \"no-cache\". Please add `@unmask` to each fragment spread to access the data.",
+ "Expected a parsed GraphQL document with a query, mutation, or subscription.",
+ "Could not find fragment with name \"%s\".",
+ "Could not find fragment with name '%s'.",
+ "Accessing unmasked field on %s at path '%s'. This field will not be available when masking is enabled. Please read the field from the fragment instead.",
+ "The configured cache does not support data masking which effectively disables it. Please use a cache that supports data masking or disable data masking to silence this warning.",
+ "@unmask 'mode' argument does not support variables.",
+ "@unmask 'mode' argument must be of type string.",
+ "@unmask 'mode' argument does not recognize value '%s'.",
+ "Unknown anonymous query requested in refetchQueries options.include array",
+ "[ApolloClient]: Apollo Client 4.0 will require a `link` option and will not create a default link when not provided. Please provide a `link` option.",
+ "[Mutation]: The `` component is deprecated and will be removed in Apollo Client 4.0. Please use the `useMutation` React hook instead.",
+ "[Query]: The `` component is deprecated and will be removed in Apollo Client 4.0. Please use an available React hook such as `useQuery` instead.",
+ "[Subscription]: The `` component is deprecated and will be removed in Apollo Client 4.0. Please use the `useSubscription` React hook instead.",
+ "[resetApolloContext]: `resetApolloContext` is deprecated and will be removed in Apollo Client 4.0. Please use `getApolloContext` instead.",
+ "[graphql]: The `graphql` higher order component is deprecated and will be removed in Apollo Client 4.0. Please switch to an available React hook such as `useQuery`, `useMutation`, or `useSubscription`.",
+ "[withMutation]: The `withMutation` higher order component is deprecated and will be removed in Apollo Client 4.0. Please switch to an available React hook such as `useQuery`.",
+ "[withQuery]: The `withQuery` higher order component is deprecated and will be removed in Apollo Client 4.0. Please switch to an available React hook such as `useQuery`.",
+ "[withSubscription]: The `withSubscription` higher order component is deprecated and will be removed in Apollo Client 4.0. Please switch to an available React hook such as `useSubscription`.",
+ "[%s]: `%s` is a deprecated hook option and will be removed in Apollo Client 4.0. %s",
+ "[useLazyQuery]: `reobserve` is deprecated and will removed in Apollo Client 4.0. Please change options by rerendering `useLazyQuery` with new options.",
+ "[useLazyQuery]: Calling `execute` in render will throw in Apollo Client 4.0. Either switch to `useQuery` to run the query during render or move the `execute` call inside of `useEffect`.",
+ "[useQuery]: `reobserve` is deprecated and will removed in Apollo Client 4.0. Please change options by rerendering `useQuery` with new options.",
+ "[useSubscription]: `onSubscriptionData` is deprecated and will be removed in Apollo Client 4.0. Please use the 'onData' option instead.",
+ "[useSubscription]: `onSubscriptionComplete` is deprecated and will be removed in Apollo Client 4.0. Please use the 'onComplete' option instead.",
+ "[parser]: `parser` is deprecated and will be removed in Apollo Client 4.0. Please remove all usages of `parser`.",
+ "[%s]: `%s` is deprecated and will be removed in Apollo Client 4.0. %s",
+ "[client.query]: Apollo Client 4.0 will no longer support the `standby` fetch policy with `client.query`. Please use a different fetch policy.",
+ "[observableQuery.result]: `result` is deprecated and will be removed with Apollo Client 4.0.",
+ "[ObservableQuery]: `getLastResult` is deprecated and will be removed in Apollo Client 4.0. Please discontinue using this method.",
+ "[observableQuery.resetQueryStoreErrors]: `resetQueryStoreErrors` is deprecated and will be removed with Apollo Client 4.0. Please discontinue using this method.",
+ "[observableQuery.setOptions] `setOptions` is deprecated and will be removed in Apollo Client 4.0. Please use `observableQuery.reobserve(newOptions)` instead.",
+ "[BatchHttpLink]: Apollo Client 4.0 will no longer remove `@client` fields from queries sent through the link chain. Please open an issue if this warning is displayed under standard usage.",
+ "[ApolloLink] `onError` is deprecated and will be removed with Apollo Client 4.0. Please discontinue using it.",
+ "[ApolloLink] `setOnError` is deprecated and will be removed with Apollo Client 4.0. Please discontinue using it.",
+ "[HttpLink]: Apollo Client 4.0 will no longer remove `@client` fields from queries sent through the link chain. Please open an issue if this warning is displayed under standard usage.",
+ "The configured cache does not support data masking which effectively disables it. Please use a cache that supports data masking or disable data masking to silence this warning. Caches will be required to support the necessary data masking APIs in Apollo Client 4.0.",
+ "[MockLink]: `newData` is deprecated and will be removed in Apollo Client 4.0. Please use the `result` option with a callback function and set the `maxUsageCount` option to `Number.POSITIVE_INFINITY`.\n\nFound `newData` on response:\n%o",
+ "[MockLink]: Apollo Client 4.0 will throw when mocking client-only query '%s'. Please ensure the query has at least 1 non-client field.",
+ "useLazyQuery: '%s' cannot be called before executing the query.",
+ "useLazyQuery: 'execute' should not be called during render. To start a query during render, use the 'useQuery' hook.",
+ "Unknown type for `response.body`. Please use a `fetch` implementation that is WhatWG-compliant and that uses WhatWG ReadableStreams for `body`.",
+ "Exceeded maximum rerender count of %d.\nThis either means you have very deep `useQuery` waterfalls in your application\nand need to increase the `maxRerender` option to `prerenderStatic`, or that\nyou have an infinite render loop in your application.",
+ "The operation was aborted before it could be attempted.",
+ "The link chain completed without emitting a value. This is likely unintentional and should be updated to emit a value before completing.",
+ "realisticDelay: `min` must be less than `max`",
+ "Cannot mock a client-only query. Mocked responses should contain at least one non-client field.",
+ "Mocked response `maxUsageCount` must be greater than 0. Given %s",
+ "The standby fetchPolicy does not work with client.query, because standby does not fetch. Consider using a different fetchPolicy, such as cache-first or network-only.",
+ "notifyOnNetworkStatusChange option only supported on watchQuery.",
+ "To initialize Apollo Client, you must specify a 'link' property in the options object. \nFor more information, please visit: https://go.apollo.dev/c/docs",
+ "Expected document to contain `@client` fields.",
+ "Could not find a resolver for the '%s' field. The field value has been set to `null`.",
+ "The '%s' resolver returned `undefined` instead of a value. This is likely a bug in the resolver. If you didn't mean to return a value, return `null` instead.",
+ "The '%s' field had no cached value and only forced resolvers were run. The value was set to `null`.",
+ "The '%s' field on object %o returned `undefined` instead of a value. The parent resolver did not include the property in the returned value and there was no resolver defined for the field.",
+ "Could not resolve __typename on object %o returned from resolver '%s'. '__typename' needs to be returned to properly resolve child fields.",
+ "The configured cache does not support fragment matching which will lead to incorrect results when executing local resolvers. Please use a cache that implements `fragmetMatches`.",
+ "Mutation '%s' contains `@client` fields with variables provided by `@export` but local state has not been configured.",
+ "Subscription '%s' contains `@client` fields with variables provided by `@export` but local state has not been configured.",
+ "%s '%s' contains `@client` fields but local state has not been configured.",
+ "Query '%s' contains `@client` fields with variables provided by `@export` but local state has not been configured.",
+ "Query '%s' contains `@client` fields but local state has not been configured.",
+ "`%s` is a forbidden field alias name in the selection set for field `%s` in %s \"%s\".",
+ "The `mutation` option is required. Please provide a GraphQL document in the `mutation` option.",
+ "Mutations only support 'network-only' or 'no-cache' fetch policies. The default 'network-only' behavior automatically writes mutation results to the cache. Passing 'no-cache' skips the cache write.",
+ "`@defer` is not supported without specifying an incremental handler. Please pass a handler as the `incrementalHandler` option to the `ApolloClient` constructor.",
+ "Cannot execute `fetchMore` for 'cache-only' query '%s'. Please use a different fetch policy.",
+ "Cannot poll on 'cache-only' query '%s' and as such, polling is disabled. Please use a different fetch policy.",
+ "%s '%s' contains `@client` and `@defer` directives. These cannot be used together.",
+ "[ApolloLink.split]: The test function returned a non-boolean value which could result in subtle bugs (e.g. such as using an `async` function which always returns a truthy value). Got `%o`.",
+ "The terminating link provided to `ApolloLink.execute` called `forward` instead of handling the request. This results in an observable that immediately completes and does not emit a value. Please provide a terminating link that properly handles the request.\n\nIf you are using a split link, ensure each branch contains a terminating link that handles the request.",
+ "`WebSocketLink` uses the deprecated and unmaintained `subscriptions-transport-ws` library. This link is no longer maintained and will be removed in a future major version of Apollo Client. We recommend switching to `GraphQLWsLink` which uses the `graphql-ws` library to send GraphQL operations through WebSocket connections (https://the-guild.dev/graphql/ws).",
+ "The `variablesUnknown` option can only be used together with a `standby` fetch policy.",
+ "The '%s' field resolves the value from the cache, for example from a 'read' function, but a 'no-cache' fetch policy was used. The field value has been set to `null`. Either define a local resolver or use a fetch policy that uses the cache to ensure the field is resolved correctly.",
+ "Could not find a resolver for the '%s' field nor does the cache resolve the field. The field value has been set to `null`. Either define a resolver for the field or ensure the cache can resolve the value, for example, by adding a 'read' function to a field policy in 'InMemoryCache'.",
+ "Could not find pending chunk for incremental value. Please file an issue for the Apollo Client team to investigate.",
+ "`@defer` and `@stream` are not supported without specifying an incremental handler. Please pass a handler as the `incrementalHandler` option to the `ApolloClient` constructor.",
+ "`refetchOn` was set on query '%s' but no `RefetchEventManager` is configured on this `ApolloClient` instance. This option has no effect. Pass a `RefetchEventManager` instance to the `refetchEventManager` option on the `ApolloClient` constructor.",
+ "`refetchOn` references the '%s' event on query '%s' but no source is configured for it on the `RefetchEventManager`. This event will never fire. Add a source for the event to the `sources` option or call `setEventSource` on the refetch event manager.",
+ "Connected an `ApolloClient` instance to a `RefetchEventManager` that was already connected to a different `ApolloClient`. The previous client has been disconnected and will no longer receive refetch events from this manager.",
+ "Received '%s' event but an `ApolloClient` instance is not connected to the `RefetchEventManager`. No queries will refetch. Pass the manager to the `refetchEventManager` option on the `ApolloClient` constructor.",
+ "Received '%s' event but no source is configured for it on the `RefetchEventManager`. No queries will refetch. Add the event to the `sources` option or call `setEventSource`.",
+ "`refetchOn` was set on query '%s' but no `RefetchEventManager` is configured on this `ApolloClient` instance. This option has no effect until a RefetchEventManager is connected to this client. Pass a `RefetchEventManager` instance to the `refetchEventManager` option on the `ApolloClient` constructor."
+ ],
+ "allConditions": [
+ null,
+ "typeof dataId === \"string\"",
+ "extracted !== void 0",
+ "!old || old === which",
+ null,
+ "!isReference(value)",
+ "options.fetchPolicy !== 'cache-and-network'",
+ "Array.isArray(cacheKeys)",
+ "fragment",
+ "pollInterval",
+ "mutation",
+ "fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache'",
+ "options.query",
+ "options.query.kind === 'Document'",
+ "!options.returnPartialData",
+ "!options.pollInterval",
+ "options && (typeof options.sha256 === 'function' ||\n typeof options.generateHash === 'function')",
+ "forward",
+ "context && context.client",
+ "'createContext' in React",
+ "context.client",
+ "this.withRef",
+ "operationOptions.withRef",
+ "!!client",
+ "queryRef.promiseCache",
+ "suspenseCache",
+ "supportedFetchPolicies.includes(fetchPolicy)",
+ "!!document && !!document.kind",
+ "!fragments.length ||\n (queries.length || mutations.length || subscriptions.length)",
+ "queries.length + mutations.length + subscriptions.length <= 1",
+ "definitions.length === 1",
+ "operation.type === type",
+ "queryWithoutConnection",
+ "evaledValue !== void 0",
+ "directiveArguments && directiveArguments.length === 1",
+ "ifArgument.name && ifArgument.name.value === 'if'",
+ "ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue')",
+ "fragments.length === 1",
+ "doc && doc.kind === 'Document'",
+ "operations.length <= 1",
+ "queryDef && queryDef.operation === 'query'",
+ "doc.kind === 'Document'",
+ "doc.definitions.length <= 1",
+ "fragmentDef.kind === 'FragmentDefinition'",
+ "internalQueryRef.promiseCache",
+ "\"createContext\" in React",
+ "!fragments.length ||\n queries.length ||\n mutations.length ||\n subscriptions.length",
+ "options.fetchPolicy !== \"cache-and-network\"",
+ "fetchPolicy === \"network-only\" || fetchPolicy === \"no-cache\"",
+ "options.query.kind === \"Document\"",
+ "options &&\n (typeof options.sha256 === \"function\" ||\n typeof options.generateHash === \"function\")",
+ "ifArgument.name && ifArgument.name.value === \"if\"",
+ "ifValue &&\n (ifValue.kind === \"Variable\" || ifValue.kind === \"BooleanValue\")",
+ "doc && doc.kind === \"Document\"",
+ "queryDef && queryDef.operation === \"query\"",
+ "doc.kind === \"Document\"",
+ "fragmentDef.kind === \"FragmentDefinition\"",
+ "mockedResponse.maxUsageCount > 0",
+ "!calledDuringRender()",
+ "!queryRef || QUERY_REFERENCE_SYMBOL in queryRef",
+ "queryWithoutClientOnlyDirectives",
+ "internalQueryRef",
+ "!optionsRef.current.skip",
+ "updateQuery",
+ "definition",
+ "!!fragment",
+ "resultRef.current",
+ "fetcher || typeof fetch !== \"undefined\"",
+ "response.body && typeof response.body.getReader === \"function\"",
+ "renderCount <= maxRerenders",
+ "!signal?.aborted",
+ "didEmitValue",
+ "operations.length == 1 && operations[0].operation === expectedType",
+ "max > min",
+ "serverQuery",
+ "(mock.maxUsageCount ?? 1) > 0",
+ "options.fetchPolicy !== \"standby\"",
+ "!options.notifyOnNetworkStatusChange",
+ "options.cache",
+ "options.link",
+ "hasDirectives([\"client\"], document)",
+ "cache.fragmentMatches",
+ "this.localState",
+ "!this.getDocumentInfo(query).hasClientExports || this.localState",
+ "optionsWithDefaults.mutation",
+ "optionsWithDefaults.fetchPolicy === \"network-only\" ||\n optionsWithDefaults.fetchPolicy === \"no-cache\"",
+ "!hasDirectives([\"defer\"], request.query)",
+ "this.options.fetchPolicy !== \"cache-only\"",
+ "!hasIncrementalDirective",
+ "fetchPolicy === \"standby\"",
+ "pending",
+ "!hasDirectives([\"defer\", \"stream\"], request.query)"
+ ],
+ "allFiles": [
+ null,
+ "@apollo/client/cache/inmemory/entityStore.js",
+ "@apollo/client/cache/inmemory/key-extractor.js",
+ "@apollo/client/cache/inmemory/policies.js",
+ "@apollo/client/cache/inmemory/readFromStore.js",
+ "@apollo/client/cache/inmemory/writeToStore.js",
+ "@apollo/client/core/ApolloClient.js",
+ "@apollo/client/core/DocumentTransform.js",
+ "@apollo/client/core/LocalState.js",
+ "@apollo/client/core/ObservableQuery.js",
+ "@apollo/client/core/QueryManager.js",
+ "@apollo/client/link/core/ApolloLink.js",
+ "@apollo/client/link/http/checkFetcher.js",
+ "@apollo/client/link/http/createHttpLink.js",
+ "@apollo/client/link/http/serializeFetchParameter.js",
+ "@apollo/client/link/persisted-queries/index.js",
+ "@apollo/client/link/utils/toPromise.js",
+ "@apollo/client/link/utils/validateOperation.js",
+ "@apollo/client/react/context/ApolloConsumer.js",
+ "@apollo/client/react/context/ApolloContext.js",
+ "@apollo/client/react/context/ApolloProvider.js",
+ "@apollo/client/react/hoc/hoc-utils.js",
+ "@apollo/client/react/hoc/withApollo.js",
+ "@apollo/client/react/hooks/useApolloClient.js",
+ "@apollo/client/react/hooks/useBackgroundQuery.js",
+ "@apollo/client/react/hooks/useQuery.js",
+ "@apollo/client/react/hooks/useSubscription.js",
+ "@apollo/client/react/hooks/useSuspenseCache.js",
+ "@apollo/client/react/hooks/useSuspenseQuery.js",
+ "@apollo/client/react/hooks/useSyncExternalStore.js",
+ "@apollo/client/react/parser/index.js",
+ "@apollo/client/testing/core/mocking/mockLink.js",
+ "@apollo/client/utilities/graphql/directives.js",
+ "@apollo/client/utilities/graphql/fragments.js",
+ "@apollo/client/utilities/graphql/getFromAST.js",
+ "@apollo/client/utilities/graphql/storeUtils.js",
+ "@apollo/client/utilities/graphql/transform.js",
+ "@apollo/client/utilities/graphql/DocumentTransform.js",
+ "@apollo/client/react/hooks/useReadQuery.js",
+ "@apollo/client/react/hooks/useLoadableQuery.js",
+ "@apollo/client/react/internal/cache/QueryReference.js",
+ "@apollo/client/cache/core/cache.js",
+ "@apollo/client/core/masking.js",
+ "@apollo/client/masking/maskDefinition.js",
+ "@apollo/client/masking/maskFragment.js",
+ "@apollo/client/masking/maskOperation.js",
+ "@apollo/client/masking/utils.js",
+ "@apollo/client/react/components/Mutation.js",
+ "@apollo/client/react/components/Query.js",
+ "@apollo/client/react/components/Subscription.js",
+ "@apollo/client/react/hoc/graphql.js",
+ "@apollo/client/react/hoc/mutation-hoc.js",
+ "@apollo/client/react/hoc/query-hoc.js",
+ "@apollo/client/react/hoc/subscription-hoc.js",
+ "@apollo/client/react/hooks/internal/useWarnRemovedOption.js",
+ "@apollo/client/react/hooks/useLazyQuery.js",
+ "@apollo/client/utilities/deprecation/index.js",
+ "@apollo/client/link/batch-http/batchHttpLink.js",
+ "@apollo/client/link/http/parseAndCheckHttpResponse.js",
+ "@apollo/client/react/ssr/prerenderStatic.js",
+ "@apollo/client/react/hooks/internal/validateSuspenseHookOptions.js",
+ "@apollo/client/utilities/internal/checkDocument.js",
+ "@apollo/client/utilities/internal/getFragmentDefinition.js",
+ "@apollo/client/utilities/internal/getFragmentFromSelection.js",
+ "@apollo/client/utilities/internal/getFragmentQueryDocument.js",
+ "@apollo/client/utilities/internal/getMainDefinition.js",
+ "@apollo/client/utilities/internal/getQueryDefinition.js",
+ "@apollo/client/utilities/internal/removeDirectivesFromDocument.js",
+ "@apollo/client/utilities/internal/shouldInclude.js",
+ "@apollo/client/utilities/internal/valueToObjectRepresentation.js",
+ "@apollo/client/local-state/LocalState.js",
+ "@apollo/client/incremental/handlers/notImplemented.js",
+ "@apollo/client/link/ws/index.js",
+ "@apollo/client/incremental/handlers/graphql17Alpha9.js",
+ "@apollo/client/core/RefetchEventManager.js"
+ ],
+ "byVersion": {
+ "3.8.0-beta.0": "1",
+ "3.8.0-beta.1": "2",
+ "3.8.0-beta.2": "2",
+ "3.8.0-beta.3": "2",
+ "3.8.0-beta.4": "2",
+ "3.8.0-beta.5": "3",
+ "3.8.0-beta.6": "4",
+ "3.8.0-beta.7": "4",
+ "3.8.0-rc.0": "5",
+ "3.8.0-rc.1": "5",
+ "3.8.0-rc.2": "6",
+ "3.8.0": "6",
+ "3.8.1": "6",
+ "3.8.2": "7",
+ "3.8.3": "7",
+ "3.8.4": "7",
+ "3.8.5": "7",
+ "3.8.6": "8",
+ "3.8.7": "8",
+ "3.8.8": "8",
+ "3.8.9": "8",
+ "3.8.10": "9",
+ "3.9.0-alpha.0": "7",
+ "3.9.0-alpha.1": "10",
+ "3.9.0-alpha.2": "10",
+ "3.9.0-alpha.3": "11",
+ "3.9.0-alpha.4": "11",
+ "3.9.0-alpha.5": "12",
+ "3.9.0-beta.0": "12",
+ "3.9.0-beta.1": "12",
+ "3.9.0-rc.0": "12",
+ "3.9.0-rc.1": "13",
+ "3.9.0": "13",
+ "3.9.1": "14",
+ "3.9.2": "14",
+ "3.9.3": "14",
+ "3.9.4": "14",
+ "3.9.5": "14",
+ "3.9.6": "14",
+ "3.9.7": "14",
+ "3.9.8": "14",
+ "3.9.9": "14",
+ "3.9.10": "14",
+ "3.9.11": "14",
+ "3.10.0-alpha.1": "14",
+ "3.10.0-rc.0": "14",
+ "3.10.0-rc.1": "14",
+ "3.10.0": "14",
+ "3.10.1": "14",
+ "3.10.2": "14",
+ "3.10.3": "14",
+ "3.10.4": "15",
+ "3.10.5": "15",
+ "3.10.6": "15",
+ "3.10.7": "15",
+ "3.10.8": "15",
+ "3.11.0-rc.0": "16",
+ "3.11.0-rc.1": "16",
+ "3.11.0-rc.2": "16",
+ "3.11.0": "16",
+ "3.11.1": "16",
+ "3.11.2": "16",
+ "3.11.3": "17",
+ "3.11.4": "17",
+ "3.11.5": "17",
+ "3.11.6": "17",
+ "3.11.7": "17",
+ "3.11.8": "17",
+ "3.11.9": "17",
+ "3.11.10": "17",
+ "3.11.11-rc.0": "18",
+ "3.12.0-alpha.0": "19",
+ "3.12.0-rc.0": "18",
+ "3.12.0-rc.1": "18",
+ "3.12.0-rc.2": "18",
+ "3.12.0-rc.3": "18",
+ "3.12.0-rc.4": "20",
+ "3.12.0": "20",
+ "3.12.1": "20",
+ "3.12.2": "20",
+ "3.12.3": "20",
+ "3.12.4": "21",
+ "3.12.5": "21",
+ "3.12.6": "21",
+ "3.12.7": "21",
+ "3.12.8": "21",
+ "3.12.9": "21",
+ "3.12.10": "21",
+ "3.12.11": "21",
+ "3.13.0-rc.0": "21",
+ "3.13.0": "21",
+ "3.13.1": "21",
+ "3.13.2": "21",
+ "3.13.3": "21",
+ "3.13.4": "21",
+ "3.13.5": "21",
+ "3.13.6": "21",
+ "3.13.7": "21",
+ "3.13.8": "21",
+ "3.13.9": "21",
+ "3.14.0-alpha.0": "22",
+ "3.14.0-alpha.1": "23",
+ "3.14.0-rc.0": "23",
+ "3.14.0": "23",
+ "3.14.1": "24",
+ "4.0.0-alpha.0": "25",
+ "4.0.0-alpha.1": "26",
+ "4.0.0-alpha.2": "26",
+ "4.0.0-alpha.3": "26",
+ "4.0.0-alpha.4": "26",
+ "4.0.0-alpha.5": "27",
+ "4.0.0-alpha.6": "28",
+ "4.0.0-alpha.7": "29",
+ "4.0.0-alpha.8": "30",
+ "4.0.0-alpha.9": "30",
+ "4.0.0-alpha.10": "31",
+ "4.0.0-alpha.11": "31",
+ "4.0.0-alpha.12": "32",
+ "4.0.0-alpha.13": "33",
+ "4.0.0-alpha.14": "34",
+ "4.0.0-alpha.15": "34",
+ "4.0.0-alpha.16": "34",
+ "4.0.0-alpha.17": "34",
+ "4.0.0-alpha.18": "34",
+ "4.0.0-alpha.19": "35",
+ "4.0.0-alpha.20": "35",
+ "4.0.0-alpha.21": "36",
+ "4.0.0-alpha.22": "37",
+ "4.0.0-alpha.23": "38",
+ "4.0.0-rc.0": "38",
+ "4.0.0-rc.1": "39",
+ "4.0.0-rc.2": "39",
+ "4.0.0-rc.3": "39",
+ "4.0.0-rc.4": "39",
+ "4.0.0-rc.5": "39",
+ "4.0.0-rc.6": "40",
+ "4.0.0-rc.7": "41",
+ "4.0.0-rc.8": "42",
+ "4.0.0-rc.9": "42",
+ "4.0.0-rc.10": "42",
+ "4.0.0-rc.11": "42",
+ "4.0.0-rc.12": "42",
+ "4.0.0-rc.13": "42",
+ "4.0.0": "42",
+ "4.0.1": "42",
+ "4.0.2": "42",
+ "4.0.3": "42",
+ "4.0.4": "42",
+ "4.0.5": "42",
+ "4.0.6": "42",
+ "4.0.7": "42",
+ "4.0.8": "42",
+ "4.0.9": "42",
+ "4.0.10": "42",
+ "4.0.11": "43",
+ "4.0.12-beta.0": "44",
+ "4.0.12": "43",
+ "4.0.13": "43",
+ "4.1.0-alpha.0": "45",
+ "4.1.0-alpha.1": "46",
+ "4.1.0-alpha.2": "47",
+ "4.1.0-alpha.3": "47",
+ "4.1.0-alpha.4": "47",
+ "4.1.0-alpha.5": "47",
+ "4.1.0-alpha.6": "47",
+ "4.1.0-alpha.7": "47",
+ "4.1.0-alpha.8": "47",
+ "4.1.0-alpha.9": "44",
+ "4.1.0-rc.0": "44",
+ "4.1.0-rc.1": "44",
+ "4.1.0": "44",
+ "4.1.1": "44",
+ "4.1.2": "44",
+ "4.1.3": "44",
+ "4.1.4": "44",
+ "4.1.5": "44",
+ "4.1.6": "44",
+ "4.1.7": "44",
+ "4.1.8": "44",
+ "4.1.9": "44",
+ "4.2.0-alpha.0": "44",
+ "4.2.0-alpha.1": "44",
+ "4.2.0-alpha.2": "44",
+ "4.2.0-alpha.3": "44",
+ "4.2.0-alpha.4": "48",
+ "4.2.0-alpha.5": "48",
+ "4.2.0-alpha.6": "48",
+ "4.2.0-alpha.7": "48",
+ "4.2.0-alpha.8": "49",
+ "4.2.0-rc.0": "49",
+ "4.2.0": "49",
+ "4.2.1": "49",
+ "4.2.2": "49",
+ "4.2.3": "49",
+ "4.3.0-alpha.0": "49",
+ "4.3.0-alpha.1": "49"
+ },
+ "errors": {
+ "1": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUECwUEDAYEDQYEDgYGDwYEEAcHBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMTKxQULBUVLBYWLRcXLhgYLxkEMBoEMRoEMhoEMxoENBsZNRwaNhwENx0EOB4bOR4cOh4dOx4ePB4fPR8gPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "2": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUECwUEDAYEDQYEDgYGDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMTKxQULBUVLBYWLRcXLhgYLxkEMBoEMRoEMhoEMxoENBsZNRwaNhwENx0EOB4bOR4cOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "3": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUECwUEDAYEDQYEDgYGDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMTKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENBsZNRwaNhwENx0EOB4bOR4cOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "4": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYGDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMTKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENBsZNRwaNhwENx0EOB4bOR4cOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "5": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYGDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMTKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4cOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "6": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYGDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAoLGQoMGgoNGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8QJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAjQSAkQiEEQyElByEIRCImRSIERiInRyIoRCIpSCIqSSIrSiIESyMETCQETSQE",
+ "7": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "8": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "9": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "10": "AQEBAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gUh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "11": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXLxkELiYsMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gUh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "12": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUETgUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6LxkEMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gUh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "13": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEHwoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6LxkEMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gUh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "14": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6LxkEMBoEMRoEMhoEMxoENRwaNhwENx0EOB4bOR4uOh4dOx4ePB4fPR8gUh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "15": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6LxkEMBoEMRoEMhoEMxoENRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "16": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEEgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "17": "AQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0QiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "18": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEWgoEWypAQyolXCpBXSoIXioEXyoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "19": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEWypAQyolXCpBXSoIXioEXyoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "20": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEVAoEWgoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEXSsIXisEQywlXCxBWy1AXy4EKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "21": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEXSsIXisEQywlXCxBWy1AXy4EKRISKhMtKxQULBUVLBYWLRcXUyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EVSg7OB4bOR4uOh4dOx4ePB4fPR88Uh85ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "22": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEZAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEIAsEIQsEIgwEIw0EJA4EJQ8yJg8RJxAEKBEEXSsIXisEQywlXCxBWy1AXy4EZS8EZjAEZzEEKRISKhMtaBMEKxQUaTIELBUVajMEazQEbDUELBYWbTYELRcXbjcEbzcEUyc6Vic9cBkEMBoEcRoEMhoEchoEVxo+NRwaNhwENx0EVSg7cx4EOB4bOR4uOh4dOx4ePB4fPR88Uh85dDgEECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "23": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEZAYEDgYvdQYEDwYEBwgIBwgIdgkEdwkEdwkEdwkEeAkEEQkEWAk/EgkEeQkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEejkEIAsEIQsEewsEfAsEIgwEfQ0EIw0EJA4EJQ8yJg8RJxAEKBEEXSsIXisEQywlXCxBWy1Afi4EZS8EZjAEZzEEKRISKhMtaBMEKxQUaTIELBUVajMEazQEbDUELBYWbTYELRcXbjcEbzcEUyc6Vic9cBkEMBoEcRoEMhoEchoEVxo+NRwaNhwENx0EVSg7cx4EOB4bOR4uOh4dOx4ePB4ffx8EgB8EPR88Uh85dDgEECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "24": "WSkEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEDAYEZAYEDgYvdQYEDwYEBwgIBwgIdgkEdwkEdwkEdwkEeAkEEQkEWAk/EgkEeQkEEwkJFAkEFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEejkEIAsEIQsEewsEfAsEIgwEfQ0EIw0EJA4EJQ8yJg8RJxAEKBEEXSsIXisEQywlXCxBWy1Afi4EZS8EZjAEZzEEKRISKhMtaBMEKxQUaTIELBUVajMEazQEbDUELBYWLRcXbjcEbzcEUyc6Vic9cBkEMBoEcRoEMhoEchoEVxo+NRwaNhwENx0EVSg7cx4EOB4bOR4uOh4dOx4ePB4ffx8EgB8EPR88Uh85dDgEECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQE",
+ "25": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQEPR88Uh85OB4bOR4uOh4dOx4ePB4fVSg7LRcXgTdCgjc6Uyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EJA4EIAsEIQsEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "26": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQEPR88Uh85OB4bOR4uOh4dOx4ePB4fVSg7LRcXgTdCgjc6Uyc6Vic9MBoEMRoEMhoEMxoEVxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "27": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQEPR88Uh85OB4bOR4uOh4dOx4ePB4fVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowGQoMGgoxGwoOHAoPHQoEHgoEYwoEWgoEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "28": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInRyI2RCI3SCIqSSI4SiIESyMETCQETSQEPR88Uh85hDtFhTtGOB4bOR4uOh4dOx4ePB4fVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvGQYMGgYxGwYOHAYPDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "29": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInPCJIRyI2RCI3SCIqSSI4SiIESyMETCQETSQEPR88Uh85hDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvGQYMGgYxGwYOHAYPDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "30": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInPCJIRyI2RCI3SCIqSSI4SiIESyMETCQETSQEhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+NRwaNhwENx0EKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvGQYMGgYxGwYOHAYPDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "31": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInPCJIRyI2RCI3SCIqSSI4SiIESyMETCQETSQEhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAYEDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "32": "ECUHPiAhPyAiQCAzQSA0YCAEYSAEYiAEQiEEQyElByEIRCI1RSIERiInPCJIRyI2RCI3SCIqSSI4SiIESyMETCQETSQEhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "33": "RD01RT0ERj0nPD1IRD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EYC4EYS4EYi4EKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEBwgIBwgIEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowHQoEHgoEYwoEWgoEhgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "34": "RD01RT0ERj0nPD1IRD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EYC4EYS4EYi4EjUZQjUZQB0YIjkYEj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowlApSHQoEHgoEYwoElQpSlgpSlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "35": "RD01RT0ERj0nPD1IRD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AXy4EYC4EYS4EYi4EjUZQjUZQB0YIjkYEj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowlApSHQoEHgoEYwoElQpTlgpSlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "36": "RD01RT0ERj0nPD1IRD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIjkYEj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDIw0EgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNDwYEEQkEWAk/EgkEEwkJFQkEFgoEFwoKGAowlApSHQoEHgoEYwoElQpTlgpSlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "37": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIjkYEj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDgzpEJA4EIAsEIQsEDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEWAk/EgkEEwkJFQkEFgoElApSHQoEHgoEYwoElQpTlgpSlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "38": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIjkYEj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDgzpEJA4EIAsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "39": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKRISKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDgzpEJA4EIAsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "40": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRKBEEJQ8yJg8RIgxDgzpEJA4EIAsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "41": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRJQ8yJg8RIgxDgzpEJA4EoAsEoQsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "42": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "43": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEnEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEowlZEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "44": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIpEYEpUYEj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklap0dbDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEowlZEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "45": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklanEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "46": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIpEYEpUYEj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklanEdWDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "47": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIpEYEpUYEj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklap0dbDAZOjAZPDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "48": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIpEYEpUYEj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklap0dbDAZOjAZPqAYEqQYEDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEowlZEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHqkoEq0oErEoEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE",
+ "49": "RD01RT0ERj0nPD1ImT0ERD43SD4qST44Bz8IQkAEQ0AlSkEER0I2TEMEPkQhP0QiQEQzQUQ0S0UEECUHhx9JPR88iB9KiR9LhDtFhTtGVSg7LRcXgTdCgjc6Uyc6Vic9Vxo+Nx0ENTwaNjwEKhMtKxQUXSsIXisEQywlXCxBWy1AYC4EYS4EYi4EjUZQjUZQB0YIpEYEpUYEj0YEkEYEkUYEkkYEB0YIk0ZRokgEJQ8yJg8RIgxDgzpEoAsEoQsEIQsEpklap0dbDAZOjAZPrQYEqQYEDgYvigZMGQYMGgYxGwYOHAYPiwZNmgZUmwZVDwYEowlZEQkEnQlXWAk/EgkEngkEFQkEFgoElApSHQoEHgoEYwoElQpTlgpSnwpYlwpSWgoEmApShgpHqkoEq0oErEoEAQEBTwEEUAEEAgICAwMDBAMEBQMEBgMEBwQECAQFCQUECgUEBwUEUQUEWSkE"
+ }
+}
\ No newline at end of file
diff --git a/all-clients/package.jq b/all-clients/package.jq
new file mode 100644
index 000000000..780ea1b77
--- /dev/null
+++ b/all-clients/package.jq
@@ -0,0 +1,30 @@
+.versions |
+map(
+ select(
+ (
+ . | match("^(\\d+)\\.(\\d+)") |
+ (
+ # versions >= 3.8 < 4.0
+ ((.captures[0].string | tonumber == 3) and (.captures[1].string | tonumber >= 8))
+ or
+ # versions >= 4.0
+ (.captures[0].string | tonumber >= 4)
+ )
+ )
+ and
+ # skip 3.8 alphas (error codes were only introduced in beta)
+ (. | contains("3.8.0-alpha") | not)
+ and
+ # skip accidental 3.13.9-rc.0
+ (. | contains("3.13.9-rc.0") | not)
+ and
+ # skip some weird versions on npm
+ (. | test("^\\d\\.\\d+\\.\\d+(-(alpha|beta|rc)\\.\\d+)?$"))
+ )
+ | { key: ("@apollo-client/"+.), value: ("npm:@apollo/client@"+.) }
+)
+| from_entries
+| . as $dependencies
+| . = $package[0]
+| .["dependencies"] = $dependencies
+| .
diff --git a/all-clients/package.json b/all-clients/package.json
new file mode 100644
index 000000000..af7a2a295
--- /dev/null
+++ b/all-clients/package.json
@@ -0,0 +1,210 @@
+{
+ "name": "all-clients",
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "rebuild": "cp package.json package.json.bak; npm info @apollo/client --json | jq --slurpfile package package.json.bak --from-file package.jq | tee package.json && rm package.json.bak",
+ "encode": "node ./encode-errorcodes.mjs"
+ },
+ "dependencies": {
+ "@apollo-client/3.8.0-beta.0": "npm:@apollo/client@3.8.0-beta.0",
+ "@apollo-client/3.8.0-beta.1": "npm:@apollo/client@3.8.0-beta.1",
+ "@apollo-client/3.8.0-beta.2": "npm:@apollo/client@3.8.0-beta.2",
+ "@apollo-client/3.8.0-beta.3": "npm:@apollo/client@3.8.0-beta.3",
+ "@apollo-client/3.8.0-beta.4": "npm:@apollo/client@3.8.0-beta.4",
+ "@apollo-client/3.8.0-beta.5": "npm:@apollo/client@3.8.0-beta.5",
+ "@apollo-client/3.8.0-beta.6": "npm:@apollo/client@3.8.0-beta.6",
+ "@apollo-client/3.8.0-beta.7": "npm:@apollo/client@3.8.0-beta.7",
+ "@apollo-client/3.8.0-rc.0": "npm:@apollo/client@3.8.0-rc.0",
+ "@apollo-client/3.8.0-rc.1": "npm:@apollo/client@3.8.0-rc.1",
+ "@apollo-client/3.8.0-rc.2": "npm:@apollo/client@3.8.0-rc.2",
+ "@apollo-client/3.8.0": "npm:@apollo/client@3.8.0",
+ "@apollo-client/3.8.1": "npm:@apollo/client@3.8.1",
+ "@apollo-client/3.8.2": "npm:@apollo/client@3.8.2",
+ "@apollo-client/3.8.3": "npm:@apollo/client@3.8.3",
+ "@apollo-client/3.8.4": "npm:@apollo/client@3.8.4",
+ "@apollo-client/3.8.5": "npm:@apollo/client@3.8.5",
+ "@apollo-client/3.8.6": "npm:@apollo/client@3.8.6",
+ "@apollo-client/3.8.7": "npm:@apollo/client@3.8.7",
+ "@apollo-client/3.8.8": "npm:@apollo/client@3.8.8",
+ "@apollo-client/3.8.9": "npm:@apollo/client@3.8.9",
+ "@apollo-client/3.8.10": "npm:@apollo/client@3.8.10",
+ "@apollo-client/3.9.0-alpha.0": "npm:@apollo/client@3.9.0-alpha.0",
+ "@apollo-client/3.9.0-alpha.1": "npm:@apollo/client@3.9.0-alpha.1",
+ "@apollo-client/3.9.0-alpha.2": "npm:@apollo/client@3.9.0-alpha.2",
+ "@apollo-client/3.9.0-alpha.3": "npm:@apollo/client@3.9.0-alpha.3",
+ "@apollo-client/3.9.0-alpha.4": "npm:@apollo/client@3.9.0-alpha.4",
+ "@apollo-client/3.9.0-alpha.5": "npm:@apollo/client@3.9.0-alpha.5",
+ "@apollo-client/3.9.0-beta.0": "npm:@apollo/client@3.9.0-beta.0",
+ "@apollo-client/3.9.0-beta.1": "npm:@apollo/client@3.9.0-beta.1",
+ "@apollo-client/3.9.0-rc.0": "npm:@apollo/client@3.9.0-rc.0",
+ "@apollo-client/3.9.0-rc.1": "npm:@apollo/client@3.9.0-rc.1",
+ "@apollo-client/3.9.0": "npm:@apollo/client@3.9.0",
+ "@apollo-client/3.9.1": "npm:@apollo/client@3.9.1",
+ "@apollo-client/3.9.2": "npm:@apollo/client@3.9.2",
+ "@apollo-client/3.9.3": "npm:@apollo/client@3.9.3",
+ "@apollo-client/3.9.4": "npm:@apollo/client@3.9.4",
+ "@apollo-client/3.9.5": "npm:@apollo/client@3.9.5",
+ "@apollo-client/3.9.6": "npm:@apollo/client@3.9.6",
+ "@apollo-client/3.9.7": "npm:@apollo/client@3.9.7",
+ "@apollo-client/3.9.8": "npm:@apollo/client@3.9.8",
+ "@apollo-client/3.9.9": "npm:@apollo/client@3.9.9",
+ "@apollo-client/3.9.10": "npm:@apollo/client@3.9.10",
+ "@apollo-client/3.9.11": "npm:@apollo/client@3.9.11",
+ "@apollo-client/3.10.0-alpha.1": "npm:@apollo/client@3.10.0-alpha.1",
+ "@apollo-client/3.10.0-rc.0": "npm:@apollo/client@3.10.0-rc.0",
+ "@apollo-client/3.10.0-rc.1": "npm:@apollo/client@3.10.0-rc.1",
+ "@apollo-client/3.10.0": "npm:@apollo/client@3.10.0",
+ "@apollo-client/3.10.1": "npm:@apollo/client@3.10.1",
+ "@apollo-client/3.10.2": "npm:@apollo/client@3.10.2",
+ "@apollo-client/3.10.3": "npm:@apollo/client@3.10.3",
+ "@apollo-client/3.10.4": "npm:@apollo/client@3.10.4",
+ "@apollo-client/3.10.5": "npm:@apollo/client@3.10.5",
+ "@apollo-client/3.10.6": "npm:@apollo/client@3.10.6",
+ "@apollo-client/3.10.7": "npm:@apollo/client@3.10.7",
+ "@apollo-client/3.10.8": "npm:@apollo/client@3.10.8",
+ "@apollo-client/3.11.0-rc.0": "npm:@apollo/client@3.11.0-rc.0",
+ "@apollo-client/3.11.0-rc.1": "npm:@apollo/client@3.11.0-rc.1",
+ "@apollo-client/3.11.0-rc.2": "npm:@apollo/client@3.11.0-rc.2",
+ "@apollo-client/3.11.0": "npm:@apollo/client@3.11.0",
+ "@apollo-client/3.11.1": "npm:@apollo/client@3.11.1",
+ "@apollo-client/3.11.2": "npm:@apollo/client@3.11.2",
+ "@apollo-client/3.11.3": "npm:@apollo/client@3.11.3",
+ "@apollo-client/3.11.4": "npm:@apollo/client@3.11.4",
+ "@apollo-client/3.11.5": "npm:@apollo/client@3.11.5",
+ "@apollo-client/3.11.6": "npm:@apollo/client@3.11.6",
+ "@apollo-client/3.11.7": "npm:@apollo/client@3.11.7",
+ "@apollo-client/3.11.8": "npm:@apollo/client@3.11.8",
+ "@apollo-client/3.11.9": "npm:@apollo/client@3.11.9",
+ "@apollo-client/3.11.10": "npm:@apollo/client@3.11.10",
+ "@apollo-client/3.11.11-rc.0": "npm:@apollo/client@3.11.11-rc.0",
+ "@apollo-client/3.12.0-alpha.0": "npm:@apollo/client@3.12.0-alpha.0",
+ "@apollo-client/3.12.0-rc.0": "npm:@apollo/client@3.12.0-rc.0",
+ "@apollo-client/3.12.0-rc.1": "npm:@apollo/client@3.12.0-rc.1",
+ "@apollo-client/3.12.0-rc.2": "npm:@apollo/client@3.12.0-rc.2",
+ "@apollo-client/3.12.0-rc.3": "npm:@apollo/client@3.12.0-rc.3",
+ "@apollo-client/3.12.0-rc.4": "npm:@apollo/client@3.12.0-rc.4",
+ "@apollo-client/3.12.0": "npm:@apollo/client@3.12.0",
+ "@apollo-client/3.12.1": "npm:@apollo/client@3.12.1",
+ "@apollo-client/3.12.2": "npm:@apollo/client@3.12.2",
+ "@apollo-client/3.12.3": "npm:@apollo/client@3.12.3",
+ "@apollo-client/3.12.4": "npm:@apollo/client@3.12.4",
+ "@apollo-client/3.12.5": "npm:@apollo/client@3.12.5",
+ "@apollo-client/3.12.6": "npm:@apollo/client@3.12.6",
+ "@apollo-client/3.12.7": "npm:@apollo/client@3.12.7",
+ "@apollo-client/3.12.8": "npm:@apollo/client@3.12.8",
+ "@apollo-client/3.12.9": "npm:@apollo/client@3.12.9",
+ "@apollo-client/3.12.10": "npm:@apollo/client@3.12.10",
+ "@apollo-client/3.12.11": "npm:@apollo/client@3.12.11",
+ "@apollo-client/3.13.0-rc.0": "npm:@apollo/client@3.13.0-rc.0",
+ "@apollo-client/3.13.0": "npm:@apollo/client@3.13.0",
+ "@apollo-client/3.13.1": "npm:@apollo/client@3.13.1",
+ "@apollo-client/3.13.2": "npm:@apollo/client@3.13.2",
+ "@apollo-client/3.13.3": "npm:@apollo/client@3.13.3",
+ "@apollo-client/3.13.4": "npm:@apollo/client@3.13.4",
+ "@apollo-client/3.13.5": "npm:@apollo/client@3.13.5",
+ "@apollo-client/3.13.6": "npm:@apollo/client@3.13.6",
+ "@apollo-client/3.13.7": "npm:@apollo/client@3.13.7",
+ "@apollo-client/3.13.8": "npm:@apollo/client@3.13.8",
+ "@apollo-client/3.13.9": "npm:@apollo/client@3.13.9",
+ "@apollo-client/3.14.0-alpha.0": "npm:@apollo/client@3.14.0-alpha.0",
+ "@apollo-client/3.14.0-alpha.1": "npm:@apollo/client@3.14.0-alpha.1",
+ "@apollo-client/3.14.0-rc.0": "npm:@apollo/client@3.14.0-rc.0",
+ "@apollo-client/3.14.0": "npm:@apollo/client@3.14.0",
+ "@apollo-client/3.14.1": "npm:@apollo/client@3.14.1",
+ "@apollo-client/4.0.0-alpha.0": "npm:@apollo/client@4.0.0-alpha.0",
+ "@apollo-client/4.0.0-alpha.1": "npm:@apollo/client@4.0.0-alpha.1",
+ "@apollo-client/4.0.0-alpha.2": "npm:@apollo/client@4.0.0-alpha.2",
+ "@apollo-client/4.0.0-alpha.3": "npm:@apollo/client@4.0.0-alpha.3",
+ "@apollo-client/4.0.0-alpha.4": "npm:@apollo/client@4.0.0-alpha.4",
+ "@apollo-client/4.0.0-alpha.5": "npm:@apollo/client@4.0.0-alpha.5",
+ "@apollo-client/4.0.0-alpha.6": "npm:@apollo/client@4.0.0-alpha.6",
+ "@apollo-client/4.0.0-alpha.7": "npm:@apollo/client@4.0.0-alpha.7",
+ "@apollo-client/4.0.0-alpha.8": "npm:@apollo/client@4.0.0-alpha.8",
+ "@apollo-client/4.0.0-alpha.9": "npm:@apollo/client@4.0.0-alpha.9",
+ "@apollo-client/4.0.0-alpha.10": "npm:@apollo/client@4.0.0-alpha.10",
+ "@apollo-client/4.0.0-alpha.11": "npm:@apollo/client@4.0.0-alpha.11",
+ "@apollo-client/4.0.0-alpha.12": "npm:@apollo/client@4.0.0-alpha.12",
+ "@apollo-client/4.0.0-alpha.13": "npm:@apollo/client@4.0.0-alpha.13",
+ "@apollo-client/4.0.0-alpha.14": "npm:@apollo/client@4.0.0-alpha.14",
+ "@apollo-client/4.0.0-alpha.15": "npm:@apollo/client@4.0.0-alpha.15",
+ "@apollo-client/4.0.0-alpha.16": "npm:@apollo/client@4.0.0-alpha.16",
+ "@apollo-client/4.0.0-alpha.17": "npm:@apollo/client@4.0.0-alpha.17",
+ "@apollo-client/4.0.0-alpha.18": "npm:@apollo/client@4.0.0-alpha.18",
+ "@apollo-client/4.0.0-alpha.19": "npm:@apollo/client@4.0.0-alpha.19",
+ "@apollo-client/4.0.0-alpha.20": "npm:@apollo/client@4.0.0-alpha.20",
+ "@apollo-client/4.0.0-alpha.21": "npm:@apollo/client@4.0.0-alpha.21",
+ "@apollo-client/4.0.0-alpha.22": "npm:@apollo/client@4.0.0-alpha.22",
+ "@apollo-client/4.0.0-alpha.23": "npm:@apollo/client@4.0.0-alpha.23",
+ "@apollo-client/4.0.0-rc.0": "npm:@apollo/client@4.0.0-rc.0",
+ "@apollo-client/4.0.0-rc.1": "npm:@apollo/client@4.0.0-rc.1",
+ "@apollo-client/4.0.0-rc.2": "npm:@apollo/client@4.0.0-rc.2",
+ "@apollo-client/4.0.0-rc.3": "npm:@apollo/client@4.0.0-rc.3",
+ "@apollo-client/4.0.0-rc.4": "npm:@apollo/client@4.0.0-rc.4",
+ "@apollo-client/4.0.0-rc.5": "npm:@apollo/client@4.0.0-rc.5",
+ "@apollo-client/4.0.0-rc.6": "npm:@apollo/client@4.0.0-rc.6",
+ "@apollo-client/4.0.0-rc.7": "npm:@apollo/client@4.0.0-rc.7",
+ "@apollo-client/4.0.0-rc.8": "npm:@apollo/client@4.0.0-rc.8",
+ "@apollo-client/4.0.0-rc.9": "npm:@apollo/client@4.0.0-rc.9",
+ "@apollo-client/4.0.0-rc.10": "npm:@apollo/client@4.0.0-rc.10",
+ "@apollo-client/4.0.0-rc.11": "npm:@apollo/client@4.0.0-rc.11",
+ "@apollo-client/4.0.0-rc.12": "npm:@apollo/client@4.0.0-rc.12",
+ "@apollo-client/4.0.0-rc.13": "npm:@apollo/client@4.0.0-rc.13",
+ "@apollo-client/4.0.0": "npm:@apollo/client@4.0.0",
+ "@apollo-client/4.0.1": "npm:@apollo/client@4.0.1",
+ "@apollo-client/4.0.2": "npm:@apollo/client@4.0.2",
+ "@apollo-client/4.0.3": "npm:@apollo/client@4.0.3",
+ "@apollo-client/4.0.4": "npm:@apollo/client@4.0.4",
+ "@apollo-client/4.0.5": "npm:@apollo/client@4.0.5",
+ "@apollo-client/4.0.6": "npm:@apollo/client@4.0.6",
+ "@apollo-client/4.0.7": "npm:@apollo/client@4.0.7",
+ "@apollo-client/4.0.8": "npm:@apollo/client@4.0.8",
+ "@apollo-client/4.0.9": "npm:@apollo/client@4.0.9",
+ "@apollo-client/4.0.10": "npm:@apollo/client@4.0.10",
+ "@apollo-client/4.0.11": "npm:@apollo/client@4.0.11",
+ "@apollo-client/4.0.12-beta.0": "npm:@apollo/client@4.0.12-beta.0",
+ "@apollo-client/4.0.12": "npm:@apollo/client@4.0.12",
+ "@apollo-client/4.0.13": "npm:@apollo/client@4.0.13",
+ "@apollo-client/4.1.0-alpha.0": "npm:@apollo/client@4.1.0-alpha.0",
+ "@apollo-client/4.1.0-alpha.1": "npm:@apollo/client@4.1.0-alpha.1",
+ "@apollo-client/4.1.0-alpha.2": "npm:@apollo/client@4.1.0-alpha.2",
+ "@apollo-client/4.1.0-alpha.3": "npm:@apollo/client@4.1.0-alpha.3",
+ "@apollo-client/4.1.0-alpha.4": "npm:@apollo/client@4.1.0-alpha.4",
+ "@apollo-client/4.1.0-alpha.5": "npm:@apollo/client@4.1.0-alpha.5",
+ "@apollo-client/4.1.0-alpha.6": "npm:@apollo/client@4.1.0-alpha.6",
+ "@apollo-client/4.1.0-alpha.7": "npm:@apollo/client@4.1.0-alpha.7",
+ "@apollo-client/4.1.0-alpha.8": "npm:@apollo/client@4.1.0-alpha.8",
+ "@apollo-client/4.1.0-alpha.9": "npm:@apollo/client@4.1.0-alpha.9",
+ "@apollo-client/4.1.0-rc.0": "npm:@apollo/client@4.1.0-rc.0",
+ "@apollo-client/4.1.0-rc.1": "npm:@apollo/client@4.1.0-rc.1",
+ "@apollo-client/4.1.0": "npm:@apollo/client@4.1.0",
+ "@apollo-client/4.1.1": "npm:@apollo/client@4.1.1",
+ "@apollo-client/4.1.2": "npm:@apollo/client@4.1.2",
+ "@apollo-client/4.1.3": "npm:@apollo/client@4.1.3",
+ "@apollo-client/4.1.4": "npm:@apollo/client@4.1.4",
+ "@apollo-client/4.1.5": "npm:@apollo/client@4.1.5",
+ "@apollo-client/4.1.6": "npm:@apollo/client@4.1.6",
+ "@apollo-client/4.1.7": "npm:@apollo/client@4.1.7",
+ "@apollo-client/4.1.8": "npm:@apollo/client@4.1.8",
+ "@apollo-client/4.1.9": "npm:@apollo/client@4.1.9",
+ "@apollo-client/4.2.0-alpha.0": "npm:@apollo/client@4.2.0-alpha.0",
+ "@apollo-client/4.2.0-alpha.1": "npm:@apollo/client@4.2.0-alpha.1",
+ "@apollo-client/4.2.0-alpha.2": "npm:@apollo/client@4.2.0-alpha.2",
+ "@apollo-client/4.2.0-alpha.3": "npm:@apollo/client@4.2.0-alpha.3",
+ "@apollo-client/4.2.0-alpha.4": "npm:@apollo/client@4.2.0-alpha.4",
+ "@apollo-client/4.2.0-alpha.5": "npm:@apollo/client@4.2.0-alpha.5",
+ "@apollo-client/4.2.0-alpha.6": "npm:@apollo/client@4.2.0-alpha.6",
+ "@apollo-client/4.2.0-alpha.7": "npm:@apollo/client@4.2.0-alpha.7",
+ "@apollo-client/4.2.0-alpha.8": "npm:@apollo/client@4.2.0-alpha.8",
+ "@apollo-client/4.2.0-rc.0": "npm:@apollo/client@4.2.0-rc.0",
+ "@apollo-client/4.2.0": "npm:@apollo/client@4.2.0",
+ "@apollo-client/4.2.1": "npm:@apollo/client@4.2.1",
+ "@apollo-client/4.2.2": "npm:@apollo/client@4.2.2",
+ "@apollo-client/4.2.3": "npm:@apollo/client@4.2.3",
+ "@apollo-client/4.3.0-alpha.0": "npm:@apollo/client@4.3.0-alpha.0",
+ "@apollo-client/4.3.0-alpha.1": "npm:@apollo/client@4.3.0-alpha.1"
+ },
+ "devDependencies": {
+ "semver": "7.6.0"
+ }
+}
diff --git a/all-clients/restore-errorcodes.mjs b/all-clients/restore-errorcodes.mjs
new file mode 100644
index 000000000..abf8fa2f7
--- /dev/null
+++ b/all-clients/restore-errorcodes.mjs
@@ -0,0 +1,30 @@
+export function restoreErrorCodes(
+ { allMessages, allConditions, allFiles, byVersion, errors },
+ version
+) {
+ /** @type {import("@apollo/client/invariantErrorCodes.js").ErrorCodes} */
+ const result = {};
+
+ const id = byVersion[version];
+ const array = decodeBase64(errors[id]);
+ for (let i = 0; i < array.length / 3; i++) {
+ const entry = (result[i + 1] = {});
+
+ const file = allFiles[array[i * 3 + 1]];
+ if (file !== undefined) entry.file = file;
+ const condition = allConditions[array[i * 3 + 2]];
+ if (condition !== undefined) entry.condition = condition;
+ const message = allMessages[array[i * 3]];
+ if (message !== undefined) entry.message = message;
+ }
+ return result;
+}
+
+function decodeBase64(input) {
+ const binary = atob(input);
+ const bytes = new Uint16Array(binary.length);
+ for (let i = 0; i < binary.length; i++) {
+ bytes[i] = binary.charCodeAt(i);
+ }
+ return bytes;
+}
diff --git a/app/checkVersions.js b/app/checkVersions.js
deleted file mode 100644
index 3f23553b0..000000000
--- a/app/checkVersions.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import genUuid from 'uuid/v1';
-import evalInPage from './evalInPage';
-import { version as devToolsVersion } from '../extension/manifest.json';
-
-let uuid = localStorage.getItem('uuid');
-
-if (!uuid) {
- uuid = genUuid();
- localStorage.setItem('uuid', uuid);
-}
-
-export default function runVersionCheck() {
- let hasSeenApollo = false;
- setInterval(() => {
- evalInPage(`!!window.__APOLLO_CLIENT__`, (result) => {
- if (result) {
- if (!hasSeenApollo) {
- hasSeenApollo = true;
-
- // It just appeared, check versions
- checkVersions();
- }
- } else {
- if (hasSeenApollo) {
- // We lost it, perhaps switched pages
- hasSeenApollo = false;
- }
- }
- });
- }, 1000);
-}
-
-function checkVersions() {
- evalInPage(`
- (function(){
- var versions = [];
-
- if (window.__APOLLO_CLIENT__) {
- versions.push({ packageName: 'apollo-client', version: window.__APOLLO_CLIENT__.version });
- }
-
- return versions;
- })()
- `,
- (versions) => {
- const graphQLParams = {
- query: `
- query CompatibilityMessages(
- $uuid: String
- $devToolsVersion: String!
- $versions: [VersionInput]
- ) {
- compatibilityMessages(
- uuid: $uuid,
- devToolsVersion: $devToolsVersion,
- versions: $versions
- ) {
- message
- }
- }
- `,
- variables: {
- uuid,
- devToolsVersion,
- versions,
- }
- }
-
- return fetch('https://devtools.apollodata.com/graphql', {
- method: 'post',
- mode: 'cors',
- headers: {
- 'Accept': 'application/json',
- 'Content-Type': 'application/json',
- },
- body: JSON.stringify(graphQLParams),
- }).then(function (response) {
- return response.json();
- }).then(function (response) {
- response.data.compatibilityMessages.forEach((cm) => {
- evalInPage(`console.info('Apollo devtools message:', "${cm.message}")`);
- });
- });
- })
-}
diff --git a/app/components/Explorer/Explorer.js b/app/components/Explorer/Explorer.js
deleted file mode 100644
index 32a65bd8c..000000000
--- a/app/components/Explorer/Explorer.js
+++ /dev/null
@@ -1,145 +0,0 @@
-import React, { Component, PropTypes } from 'react';
-import GraphiQL from 'graphiql';
-import { parse } from 'graphql';
-import evalInPage from '../../evalInPage.js';
-
-import './graphiql.less';
-import './graphiql-overrides.less';
-
-let id = 0;
-const createPromise = (code) => {
- return new Promise((resolve, reject) => {
- const currId = id; id ++;
-
- const promiseCode = `
- (function() {
- window.__chromePromises = window.__chromePromises || {};
- var p = (${code})
-
- p.then(function(r) {
- window.__chromePromises[${currId}] = { result: r };
- }).catch(function (e) {
- window.__chromePromises[${currId}] = { error: e };
- });
- })()
- `;
-
- evalInPage(
- promiseCode,
- (result, isException) => {
- if (isException) console.warn('isException1', isException);
- }
- );
-
- const pollCode = `
- (function () {
- var result = window.__chromePromises[${currId}];
- if (result) {
- delete window.__chromePromises[${currId}];
- }
- return result;
- })()
- `;
-
- const poll = () => {
- setTimeout(() => {
- evalInPage(
- pollCode,
- (result, isException) => {
- if (!result) {
- poll();
- } else if (result.result) {
- resolve(result.result);
- } else {
- reject(result.error);
- }
- }
- );
- }, 100)
- };
- poll();
- });
-};
-
-export default class Explorer extends Component {
- constructor(props, context) {
- super(props, context);
-
- this.state = {
- noFetch: false,
- query: this.props.query,
- variables: this.props.variables,
- };
-
- try {
- evalInPage(
- `
- window.__APOLLO_CLIENT__.makeGraphiqlQuery = (payload, noFetch) => {
- if (noFetch) {
- return window.__APOLLO_CLIENT__.query({
- query: payload.query,
- variables: payload.variables,
- noFetch: true,
- }).catch(e => ({
- errors: e.graphQLErrors,
- }));
- }
- return window.__APOLLO_CLIENT__.networkInterface.query(payload);
- };
- `, (result, isException) => {}
- );
- } catch(e) {
- console.warn(e);
- }
-
- this.graphQLFetcher = (graphQLParams) => {
- const { noFetch } = this.state;
-
- return createPromise(
- "window.__APOLLO_CLIENT__.makeGraphiqlQuery(" + JSON.stringify({
- operationName: graphQLParams.operationName,
- query: parse(graphQLParams.query),
- variables: graphQLParams.variables,
- }) + ", " + noFetch + ")"
- );
- };
- }
-
- componentDidMount() {
- if (ga) ga('send', 'pageview', 'GraphiQL');
- if (this.props.query) {
- this.graphiql.handleRunQuery();
- }
- }
-
- clearDefaultQueryState() {
- this.setState({ query: undefined, variables: undefined });
- }
-
- render() {
- const { noFetch } = this.state;
- const graphiql = (
- { this.clearDefaultQueryState() }}
- onEditVariables={() => { this.clearDefaultQueryState() }}
- variables={this.state.variables}
- ref={r => {this.graphiql = r}}
- >
-
-
-
-
- );
-
- return
+ This page embeds the Color App in an iframe. With
+ all_frames: true in the manifest, Apollo Client DevTools
+ should detect the Apollo Client instance running inside this iframe.
+
+ Cache size for the findFragmentSpreads method of
+
+ FragmentRegistry
+
+ .
+
+
+ This function is called with transformed DocumentNodes, as
+ well as recursively with every fragment spread referenced within that,
+ or a fragment referenced by a fragment spread.
+
+ >
+ ),
+ "fragmentRegistry.transform": (
+ <>
+
+ A cache inside of
+
+ FragmentRegistry
+
+ .
+
+
+ Can be called with user-defined or already-transformed{" "}
+ DocumentNodes.
+
+ {wasTriggeredByIntrospectionFailure
+ ? "Would you like to use a schema registered in Apollo Studio to populate Explorer? "
+ : ""}
+ To continue, log in and authorize to use your Studio account.{" "}
+
+ You must enable popups on your browser to use this feature.
+
+