diff --git a/.circleci/config.yml b/.circleci/config.yml index 36eadd3c62b..3d722d65051 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -15,7 +15,7 @@ jobs: Lint: docker: - - image: cimg/node:21.5.0 + - image: cimg/node:21.6.1 steps: - checkout - run: npm version @@ -24,7 +24,7 @@ jobs: Formatting: docker: - - image: cimg/node:21.5.0 + - image: cimg/node:21.6.1 steps: - checkout - run: npm ci @@ -32,7 +32,7 @@ jobs: Tests: docker: - - image: cimg/node:21.5.0 + - image: cimg/node:21.6.1 steps: - checkout - run: npm run ci:precheck @@ -50,7 +50,7 @@ jobs: BuildTarball: docker: - - image: cimg/node:21.5.0 + - image: cimg/node:21.6.1 steps: - checkout - run: npm run ci:precheck @@ -67,7 +67,7 @@ jobs: framework: type: string docker: - - image: cimg/node:21.5.0 + - image: cimg/node:21.6.1 steps: - checkout - attach_workspace: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fd44e4c9fc9..866b0e4ba26 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1,3 @@ +* @apollographql/client-typescript + /docs/ @apollographql/docs diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index d2e1bc647dc..618626d418f 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -22,3 +22,10 @@ body: description: Please provide any additional non-trivial steps required to reproduce the issue. validations: required: false + - type: input + attributes: + label: "`@apollo/client` version" + description: "What version of Apollo Client are you running?" + placeholder: "ex: 3.8.10" + validations: + required: true diff --git a/.github/workflows/api-extractor.yml b/.github/workflows/api-extractor.yml index aa23fc958a5..d9d3cb5bc45 100644 --- a/.github/workflows/api-extractor.yml +++ b/.github/workflows/api-extractor.yml @@ -11,10 +11,10 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 diff --git a/.github/workflows/arethetypeswrong.yml b/.github/workflows/arethetypeswrong.yml index fb9c4768c32..c83c623241f 100644 --- a/.github/workflows/arethetypeswrong.yml +++ b/.github/workflows/arethetypeswrong.yml @@ -14,10 +14,10 @@ jobs: steps: - name: Checkout repo uses: actions/checkout@v4 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 diff --git a/.github/workflows/cleanup-checks.yml b/.github/workflows/cleanup-checks.yml index f2024175bd7..132f64ab792 100644 --- a/.github/workflows/cleanup-checks.yml +++ b/.github/workflows/cleanup-checks.yml @@ -30,10 +30,10 @@ jobs: - name: Checkout repo uses: actions/checkout@v4 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 diff --git a/.github/workflows/compare-build-output.yml b/.github/workflows/compare-build-output.yml index dedf208c41e..7b97c556665 100644 --- a/.github/workflows/compare-build-output.yml +++ b/.github/workflows/compare-build-output.yml @@ -17,10 +17,10 @@ jobs: with: # Fetch entire git history so we have the parent commit to compare against fetch-depth: 0 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 diff --git a/.github/workflows/exit-prerelease.yml b/.github/workflows/exit-prerelease.yml index f683c605a7e..c97c86efac0 100644 --- a/.github/workflows/exit-prerelease.yml +++ b/.github/workflows/exit-prerelease.yml @@ -27,10 +27,10 @@ jobs: # with the correct commits fetch-depth: 0 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Get latest tagged version id: previoustag diff --git a/.github/workflows/issue-close-user-survey.yml b/.github/workflows/issue-close-user-survey.yml new file mode 100644 index 00000000000..36b18773fc6 --- /dev/null +++ b/.github/workflows/issue-close-user-survey.yml @@ -0,0 +1,27 @@ +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' + steps: + - run: | + if [ "$STATE_REASON" == "completed" ] || [ "$SENDER" != "github-actions" ]; then + gh issue comment "$NUMBER" --body "$BODY" + else + echo "Issue was closed as not planned, skipping comment." + fi + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_REPO: ${{ github.repository }} + NUMBER: ${{ github.event.issue.number }} + STATE_REASON: ${{ github.event.issue.state_reason }} + SENDER: ${{ github.event.sender.login }} + 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/prerelease.yml b/.github/workflows/prerelease.yml index c2907fae17a..109e1bc2e8b 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -38,17 +38,17 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies with cache uses: bahmutov/npm-install@v1 - name: Check for pre.json file existence id: check_files - uses: andstor/file-existence-action@v2.0.0 + uses: andstor/file-existence-action@v3.0.0 with: files: ".changeset/pre.json" @@ -85,7 +85,7 @@ jobs: - name: Send a Slack notification on publish if: steps.changesets.outcome == 'success' id: slack - uses: slackapi/slack-github-action@v1.24.0 + uses: slackapi/slack-github-action@v1.25.0 with: # Slack channel id, channel name, or user id to post message # See also: https://api.slack.com/methods/chat.postMessage#channels diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e71d47e5a7d..c4c6c97bc98 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -30,7 +30,7 @@ jobs: - name: Check for pre.json file existence id: check_files - uses: andstor/file-existence-action@v2.0.0 + uses: andstor/file-existence-action@v3.0.0 with: files: ".changeset/pre.json" @@ -43,10 +43,10 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 @@ -65,7 +65,7 @@ jobs: - 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.24.0 + uses: slackapi/slack-github-action@v1.25.0 with: # Slack channel id, channel name, or user id to post message # See also: https://api.slack.com/methods/chat.postMessage#channels diff --git a/.github/workflows/size-limit.yml b/.github/workflows/size-limit.yml index 249c61c98ff..2295fc46951 100644 --- a/.github/workflows/size-limit.yml +++ b/.github/workflows/size-limit.yml @@ -11,10 +11,10 @@ jobs: steps: - name: Checkout repo uses: actions/checkout@v4 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 - name: Run size-limit diff --git a/.github/workflows/snapshot-release.yml b/.github/workflows/snapshot-release.yml index 894421db6c7..a255f285d78 100644 --- a/.github/workflows/snapshot-release.yml +++ b/.github/workflows/snapshot-release.yml @@ -56,17 +56,17 @@ jobs: env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x - name: Install dependencies (with cache) uses: bahmutov/npm-install@v1 - name: Check for pre.json file existence id: check_files - uses: andstor/file-existence-action@v2.0.0 + uses: andstor/file-existence-action@v3.0.0 with: files: ".changeset/pre.json" @@ -80,7 +80,7 @@ jobs: - name: Add comment if no new changesets exist if: ${{ steps.added-files.outputs.changesets == '' }} - uses: peter-evans/create-or-update-comment@v3.1.0 + uses: peter-evans/create-or-update-comment@v4.0.0 with: issue-number: ${{ github.event.issue.number }} body: | @@ -106,7 +106,7 @@ jobs: - name: Create comment if: ${{ steps.added-files.outputs.changesets != '' }} - uses: peter-evans/create-or-update-comment@v3.1.0 + uses: peter-evans/create-or-update-comment@v4.0.0 with: issue-number: ${{ github.event.issue.number }} body: | diff --git a/.size-limits.json b/.size-limits.json index 395aea47c38..96d031aaf5d 100644 --- a/.size-limits.json +++ b/.size-limits.json @@ -1,4 +1,4 @@ { "dist/apollo-client.min.cjs": 37930, - "import { ApolloClient, InMemoryCache, HttpLink } from \"dist/index.js\" (production)": 31972 + "import { ApolloClient, InMemoryCache, HttpLink } from \"dist/index.js\" (production)": 31974 } diff --git a/README.md b/README.md index ffeecf275fb..8340c856e8d 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,10 @@ Apollo Client is a fully-featured caching GraphQL client with integrations for React, Angular, and more. It allows you to easily build UI components that fetch data via GraphQL. +| ☑️ 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. | + ## Documentation All Apollo Client documentation, including React integration articles and helpful recipes, can be found at:
diff --git a/ROADMAP.md b/ROADMAP.md index 893372e60d6..7b298d45a21 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,6 +1,6 @@ # 🔮 Apollo Client Roadmap -**Last updated: 2024-01-16** +**Last updated: 2024-01-29** For up to date release notes, refer to the project's [Changelog](https://github.com/apollographql/apollo-client/blob/main/CHANGELOG.md). @@ -15,9 +15,9 @@ For up to date release notes, refer to the project's [Changelog](https://github. ## [3.9.0](https://github.com/apollographql/apollo-client/milestone/32) -_Currently in beta phase_ +_Currently in RC phase_ - Tentative rc date: Jan 17, 2024 + Tentative date: Jan 31, 2024 Features include: diff --git a/docs/source/api/cache/InMemoryCache.mdx b/docs/source/api/cache/InMemoryCache.mdx index 0bd104013ee..2e33c0a3348 100644 --- a/docs/source/api/cache/InMemoryCache.mdx +++ b/docs/source/api/cache/InMemoryCache.mdx @@ -1092,7 +1092,7 @@ The full key for the field used internally, including serialized key arguments. -A helper function for reading other fields within the current object. +A helper function for reading other fields on the object passed to the modifier function as the first parameter. diff --git a/docs/source/caching/cache-interaction.mdx b/docs/source/caching/cache-interaction.mdx index 240c891e437..33baca6a11a 100644 --- a/docs/source/caching/cache-interaction.mdx +++ b/docs/source/caching/cache-interaction.mdx @@ -12,7 +12,9 @@ Apollo Client supports multiple strategies for interacting with cached data: | [Using GraphQL fragments](#using-graphql-fragments) | `readFragment` / `writeFragment` / `updateFragment` / `useFragment` | Access the fields of any cached object without composing an entire query to reach that object. | | [Directly modifying cached fields](#using-cachemodify) | `cache.modify` | Manipulate cached data without using GraphQL at all. | - You can use whichever combination of strategies and methods are most helpful for your use case. +You can use whichever combination of strategies and methods are most helpful for your use case. + +Bear in mind the difference between fields that contain references to other objects in the cache and fields that contain literal values. References are objects that contain a `__ref` field—see the [example](./overview/#example) in the caching overview. Modifying a reference will not change the values contained in the object to which the reference points. So avoid updating an object from something like `{__ref: '5'}` to `{__ref: '5', completed: true}`. > All code samples below assume that you have initialized an instance of `ApolloClient` and that you have imported the `gql` function from `@apollo/client`. If you haven't, [get started](../get-started). > @@ -338,7 +340,7 @@ cache.modify({ When you define a modifier function for a field that contains a scalar, an enum, or a list of these base types, the modifier function is passed the exact existing value for the field. For example, if you define a modifier function for an object's `quantity` field that has current value `5`, your modifier function is passed the value `5`. -**However**, when you define a modifier function for a field that contains an object type or a list of objects, those objects are represented as **references**. Each reference points to its corresponding object in the cache by its cache ID. If you return a _different_ reference in your modifier function, you change _which_ other cached object is contained in this field. You _don't_ modify the original cached object's data. +**However**, when you define a modifier function for a field that contains an object type or a list of objects, those objects are represented as **references**. Each reference points to its corresponding object in the cache by its cache ID. If you return a _different_ reference in your modifier function, you change _which_ other cached object is contained in this field. You _don't_ modify the original cached object's data. Additionally, modifying a field (or adding a new one) in a reference will only take effect for the location you're modifying. ### Modifier function utilities diff --git a/docs/source/data/error-handling.mdx b/docs/source/data/error-handling.mdx index a6d25f9d08e..aee785d116f 100644 --- a/docs/source/data/error-handling.mdx +++ b/docs/source/data/error-handling.mdx @@ -154,7 +154,7 @@ const errorLink = onError(({ graphQLErrors, networkError }) => { `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}` ) ); - if (networkError) console.log(`[Network error]: ${networkError}`); + if (networkError) console.error(`[Network error]: ${networkError}`); }); const httpLink = new HttpLink({ uri: 'http://localhost:4000/graphql' }) diff --git a/docs/source/integrations/react-native.md b/docs/source/integrations/react-native.md index b98605641d9..3990bdffde4 100644 --- a/docs/source/integrations/react-native.md +++ b/docs/source/integrations/react-native.md @@ -54,15 +54,16 @@ A community plugin called [React Native Apollo devtools](https://github.com/razo 2. Go to add plugin and search for `react-native-apollo-devtools` and install it 3. Add `react-native-flipper` and `react-native-apollo-devtools-client` as dev dependecy to react native app. 4. Initialize the plugin with flipper on client side - - ``` + + ```ts import { apolloDevToolsInit } from 'react-native-apollo-devtools-client'; + const client = new ApolloClient({ - // ... - }) - - if(__DEV__){ - apolloDevToolsInit(client); + // ... + }); + + if (__DEV__) { + apolloDevToolsInit(client); } ``` diff --git a/package-lock.json b/package-lock.json index 7f9e78be5f5..3df14da6ad9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,16 +24,16 @@ "zen-observable-ts": "^1.2.5" }, "devDependencies": { - "@arethetypeswrong/cli": "0.13.5", - "@babel/parser": "7.23.6", + "@arethetypeswrong/cli": "0.13.6", + "@babel/parser": "7.23.9", "@changesets/changelog-github": "0.5.0", "@changesets/cli": "2.27.1", "@graphql-tools/schema": "10.0.2", - "@microsoft/api-extractor": "7.39.1", + "@microsoft/api-extractor": "7.39.4", "@rollup/plugin-node-resolve": "11.2.1", "@size-limit/esbuild-why": "11.0.2", "@size-limit/preset-small-lib": "11.0.2", - "@testing-library/jest-dom": "6.2.0", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/react-12": "npm:@testing-library/react@^12", "@testing-library/user-event": "14.5.2", @@ -44,16 +44,16 @@ "@types/hoist-non-react-statics": "3.3.5", "@types/jest": "29.5.11", "@types/lodash": "4.14.202", - "@types/node": "20.11.5", + "@types/node": "20.11.10", "@types/node-fetch": "2.6.11", "@types/react": "18.2.48", "@types/react-dom": "18.2.18", "@types/use-sync-external-store": "0.0.6", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0", - "@typescript-eslint/rule-tester": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/eslint-plugin": "6.19.1", + "@typescript-eslint/parser": "6.19.1", + "@typescript-eslint/rule-tester": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "acorn": "8.11.3", "blob-polyfill": "7.0.20220408", "bytes": "3.1.2", @@ -90,7 +90,7 @@ "subscriptions-transport-ws": "0.11.0", "terser": "5.27.0", "ts-api-utils": "1.0.3", - "ts-jest": "29.1.1", + "ts-jest": "29.1.2", "ts-jest-resolver": "2.0.1", "ts-morph": "21.0.1", "ts-node": "10.9.2", @@ -160,12 +160,12 @@ "dev": true }, "node_modules/@arethetypeswrong/cli": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/@arethetypeswrong/cli/-/cli-0.13.5.tgz", - "integrity": "sha512-S5vPcInsCwt6QJlPi1CxxkVfemVrapeeySv5a1jeodwUzfkG/rLjZTYd1uhwgqDMCgQK4sR8z+W9GZITdqLIew==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/cli/-/cli-0.13.6.tgz", + "integrity": "sha512-rNiAcz/kLdqqfA3NvUjtLCPV933MEo+K5dMJDA7afdOPmH5iS13pCiZyeZ21MDBQrxMpx6t5G/7OyRf+OcsoPA==", "dev": true, "dependencies": { - "@arethetypeswrong/core": "0.13.5", + "@arethetypeswrong/core": "0.13.6", "chalk": "^4.1.2", "cli-table3": "^0.6.3", "commander": "^10.0.1", @@ -217,9 +217,9 @@ } }, "node_modules/@arethetypeswrong/core": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/@arethetypeswrong/core/-/core-0.13.5.tgz", - "integrity": "sha512-Ahk+vBUK9RBBx4zle2Y1imrbl68GCtLEl0/UBxsJeDd2j5HkbWcgGtgE2tEPMy4qAgWxj2JEptDPl6Jucbov2w==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/@arethetypeswrong/core/-/core-0.13.6.tgz", + "integrity": "sha512-e3CHQUK1aIIk8VOUavXPu3aVie3ZpxSGQHQoeBabzy81T4xWfQDrc68CqFmfGIEr8Apug47Yq+pYkCG2lsS10w==", "dev": true, "dependencies": { "@andrewbranch/untar.js": "^1.0.3", @@ -586,9 +586,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2515,15 +2515,15 @@ } }, "node_modules/@microsoft/api-extractor": { - "version": "7.39.1", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.39.1.tgz", - "integrity": "sha512-V0HtCufWa8hZZvSmlEzQZfINcJkHAU/bmpyJQj6w+zpI87EkR8DuBOW6RWrO9c7mUYFZoDaNgUTyKo83ytv+QQ==", + "version": "7.39.4", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.39.4.tgz", + "integrity": "sha512-6YvfkpbEqRQ0UPdVBc+lOiq7VlXi9kw8U3w+RcXCFDVc/UljlXU5l9fHEyuBAW1GGO2opUe+yf9OscWhoHANhg==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.28.4", + "@microsoft/api-extractor-model": "7.28.7", "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.63.0", + "@rushstack/node-core-library": "3.64.2", "@rushstack/rig-package": "0.5.1", "@rushstack/ts-command-line": "4.17.1", "colors": "~1.2.1", @@ -2538,14 +2538,14 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.4.tgz", - "integrity": "sha512-vucgyPmgHrJ/D4/xQywAmjTmSfxAx2/aDmD6TkIoLu51FdsAfuWRbijWA48AePy60OO+l+mmy9p2P/CEeBZqig==", + "version": "7.28.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.28.7.tgz", + "integrity": "sha512-4gCGGEQGHmbQmarnDcEWS2cjj0LtNuD3D6rh3ZcAyAYTkceAugAk2eyQHGdTcGX8w3qMjWCTU1TPb8xHnMM+Kg==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.63.0" + "@rushstack/node-core-library": "3.64.2" } }, "node_modules/@microsoft/api-extractor/node_modules/semver": { @@ -2683,9 +2683,9 @@ "dev": true }, "node_modules/@rushstack/node-core-library": { - "version": "3.63.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.63.0.tgz", - "integrity": "sha512-Q7B3dVpBQF1v+mUfxNcNZh5uHVR8ntcnkN5GYjbBLrxUYHBGKbnCM+OdcN+hzCpFlLBH6Ob0dEHhZ0spQwf24A==", + "version": "3.64.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.64.2.tgz", + "integrity": "sha512-n1S2VYEklONiwKpUyBq/Fym6yAsfsCXrqFabuOMcCuj4C+zW+HyaspSHXJCKqkMxfjviwe/c9+DUqvRWIvSN9Q==", "dev": true, "dependencies": { "colors": "~1.2.1", @@ -2901,9 +2901,9 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.2.0.tgz", - "integrity": "sha512-+BVQlJ9cmEn5RDMUS8c2+TU6giLvzaHZ8sU/x0Jj7fk+6/46wPdwlgOPcpxS17CjcanBi/3VmGMqVr2rmbUmNw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.3.0.tgz", + "integrity": "sha512-hJVIrkFizEQxoWsGBlycTcQhrpoCH4DhXfrnHFFXgkx3Xdm15zycsq5Ep+vpw4W8S0NJa8cxDHcuJib+1tEbhg==", "dev": true, "dependencies": { "@adobe/css-tools": "^4.3.2", @@ -2922,6 +2922,7 @@ }, "peerDependencies": { "@jest/globals": ">= 28", + "@types/bun": "latest", "@types/jest": ">= 28", "jest": ">= 28", "vitest": ">= 0.32" @@ -2930,6 +2931,9 @@ "@jest/globals": { "optional": true }, + "@types/bun": { + "optional": true + }, "@types/jest": { "optional": true }, @@ -3380,9 +3384,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.5.tgz", - "integrity": "sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==", + "version": "20.11.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.10.tgz", + "integrity": "sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -3485,16 +3489,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.0.tgz", - "integrity": "sha512-DUCUkQNklCQYnrBSSikjVChdc84/vMPDQSgJTHBZ64G9bA9w0Crc0rd2diujKbTdp6w2J47qkeHQLoi0rpLCdg==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz", + "integrity": "sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/type-utils": "6.19.0", - "@typescript-eslint/utils": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/type-utils": "6.19.1", + "@typescript-eslint/utils": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3535,15 +3539,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.0.tgz", - "integrity": "sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.19.1.tgz", + "integrity": "sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4" }, "engines": { @@ -3563,13 +3567,13 @@ } }, "node_modules/@typescript-eslint/rule-tester": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-6.19.0.tgz", - "integrity": "sha512-4/nUf0k1LYIxdEoNZBIvk3k4iXecV03mzKbHZQcB2TeyFuPUOnJGDQI8rrfbP7jbE2a6K7h5zU0ai0uG1ytO6g==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-6.19.1.tgz", + "integrity": "sha512-1qvOSO9kjtjP66UimQ06tnZC/XVhb2s5hVi2Cn33efnzM3m+j8rwcGJJ9xwKacUWe7U50iHrY9xrakmF7SPWbg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "ajv": "^6.10.0", "lodash.merge": "4.6.2", "semver": "^7.5.4" @@ -3602,13 +3606,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.0.tgz", - "integrity": "sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz", + "integrity": "sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0" + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3619,13 +3623,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.0.tgz", - "integrity": "sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz", + "integrity": "sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/typescript-estree": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3646,9 +3650,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.0.tgz", - "integrity": "sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz", + "integrity": "sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3659,13 +3663,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.0.tgz", - "integrity": "sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz", + "integrity": "sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/visitor-keys": "6.19.0", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/visitor-keys": "6.19.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3726,17 +3730,17 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.0.tgz", - "integrity": "sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz", + "integrity": "sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/typescript-estree": "6.19.0", + "@typescript-eslint/scope-manager": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/typescript-estree": "6.19.1", "semver": "^7.5.4" }, "engines": { @@ -3766,12 +3770,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.19.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.0.tgz", - "integrity": "sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==", + "version": "6.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz", + "integrity": "sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.19.0", + "@typescript-eslint/types": "6.19.1", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -11906,9 +11910,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "version": "29.1.2", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", + "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -11924,7 +11928,7 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", @@ -11958,9 +11962,9 @@ } }, "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" diff --git a/package.json b/package.json index 8892f4de328..144590fcee7 100644 --- a/package.json +++ b/package.json @@ -105,16 +105,16 @@ "zen-observable-ts": "^1.2.5" }, "devDependencies": { - "@arethetypeswrong/cli": "0.13.5", - "@babel/parser": "7.23.6", + "@arethetypeswrong/cli": "0.13.6", + "@babel/parser": "7.23.9", "@changesets/changelog-github": "0.5.0", "@changesets/cli": "2.27.1", "@graphql-tools/schema": "10.0.2", - "@microsoft/api-extractor": "7.39.1", + "@microsoft/api-extractor": "7.39.4", "@rollup/plugin-node-resolve": "11.2.1", "@size-limit/esbuild-why": "11.0.2", "@size-limit/preset-small-lib": "11.0.2", - "@testing-library/jest-dom": "6.2.0", + "@testing-library/jest-dom": "6.3.0", "@testing-library/react": "14.1.2", "@testing-library/react-12": "npm:@testing-library/react@^12", "@testing-library/user-event": "14.5.2", @@ -125,16 +125,16 @@ "@types/hoist-non-react-statics": "3.3.5", "@types/jest": "29.5.11", "@types/lodash": "4.14.202", - "@types/node": "20.11.5", + "@types/node": "20.11.10", "@types/node-fetch": "2.6.11", "@types/react": "18.2.48", "@types/react-dom": "18.2.18", "@types/use-sync-external-store": "0.0.6", - "@typescript-eslint/eslint-plugin": "6.19.0", - "@typescript-eslint/parser": "6.19.0", - "@typescript-eslint/rule-tester": "6.19.0", - "@typescript-eslint/types": "6.19.0", - "@typescript-eslint/utils": "6.19.0", + "@typescript-eslint/eslint-plugin": "6.19.1", + "@typescript-eslint/parser": "6.19.1", + "@typescript-eslint/rule-tester": "6.19.1", + "@typescript-eslint/types": "6.19.1", + "@typescript-eslint/utils": "6.19.1", "acorn": "8.11.3", "blob-polyfill": "7.0.20220408", "bytes": "3.1.2", @@ -171,7 +171,7 @@ "subscriptions-transport-ws": "0.11.0", "terser": "5.27.0", "ts-api-utils": "1.0.3", - "ts-jest": "29.1.1", + "ts-jest": "29.1.2", "ts-jest-resolver": "2.0.1", "ts-morph": "21.0.1", "ts-node": "10.9.2",