From 5eb70f9bd06a90a53891c9360fa1279ff8987bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Zl=C3=A1mal?= Date: Tue, 14 Jan 2025 10:42:30 +0100 Subject: [PATCH] Relay: remove --- scripts/publishedPackages.json | 1 - .../config/__tests__/relay.test.js | 16 - src/monorepo-shipit/config/relay.js | 14 - src/relay/.babelrc.js | 5 - src/relay/.gitignore | 2 - src/relay/.npmignore | 4 - src/relay/CHANGELOG.md | 342 ----------------- src/relay/LICENSE | 23 -- src/relay/README.md | 152 -------- src/relay/bin/compiler.js | 10 - src/relay/package.json | 36 -- src/relay/relay-logger.png | Bin 223929 -> 0 bytes src/relay/src/RelayLogger.js | 113 ------ .../src/RelayRehydratePreloadedQueries.js | 94 ----- src/relay/src/__flowtests__/Environment.js | 116 ------ .../src/__flowtests__/createEnvironment.js | 36 -- .../src/__flowtests__/createNetworkFetcher.js | 30 -- .../src/__flowtests__/useLazyLoadQuery.js | 33 -- src/relay/src/__flowtests__/useMutation.js | 48 --- .../src/__tests__/RelayLogger.node.test.js | 64 ---- src/relay/src/__tests__/RelayLogger.test.js | 126 ------ .../__tests__/createNetworkFetcher.test.js | 87 ----- src/relay/src/__tests__/publicExports.test.js | 45 --- src/relay/src/createEnvironment.js | 52 --- src/relay/src/createNetworkFetcher.js | 55 --- src/relay/src/index.js | 67 ---- src/relay/src/internal/QueryResponseCache.js | 9 - .../__tests__/createRequestHandler.test.js | 281 -------------- .../__tests__/helpers.getHeaders.test.js | 17 - .../__tests__/helpers.getRequestBody.test.js | 86 ----- .../__tests__/helpers.handleData.test.js | 57 --- src/relay/src/internal/createRelayStore.js | 20 - .../src/internal/createRequestHandler.js | 71 ---- src/relay/src/internal/helpers.js | 85 ----- src/relay/src/useLazyLoadQuery.js | 19 - src/relay/src/useMutation.js | 53 --- yarn.lock | 361 +----------------- 37 files changed, 9 insertions(+), 2621 deletions(-) delete mode 100644 src/monorepo-shipit/config/__tests__/relay.test.js delete mode 100644 src/monorepo-shipit/config/relay.js delete mode 100644 src/relay/.babelrc.js delete mode 100644 src/relay/.gitignore delete mode 100644 src/relay/.npmignore delete mode 100644 src/relay/CHANGELOG.md delete mode 100644 src/relay/LICENSE delete mode 100644 src/relay/README.md delete mode 100755 src/relay/bin/compiler.js delete mode 100644 src/relay/package.json delete mode 100644 src/relay/relay-logger.png delete mode 100644 src/relay/src/RelayLogger.js delete mode 100644 src/relay/src/RelayRehydratePreloadedQueries.js delete mode 100644 src/relay/src/__flowtests__/Environment.js delete mode 100644 src/relay/src/__flowtests__/createEnvironment.js delete mode 100644 src/relay/src/__flowtests__/createNetworkFetcher.js delete mode 100644 src/relay/src/__flowtests__/useLazyLoadQuery.js delete mode 100644 src/relay/src/__flowtests__/useMutation.js delete mode 100644 src/relay/src/__tests__/RelayLogger.node.test.js delete mode 100644 src/relay/src/__tests__/RelayLogger.test.js delete mode 100644 src/relay/src/__tests__/createNetworkFetcher.test.js delete mode 100644 src/relay/src/__tests__/publicExports.test.js delete mode 100644 src/relay/src/createEnvironment.js delete mode 100644 src/relay/src/createNetworkFetcher.js delete mode 100644 src/relay/src/index.js delete mode 100644 src/relay/src/internal/QueryResponseCache.js delete mode 100644 src/relay/src/internal/__tests__/createRequestHandler.test.js delete mode 100644 src/relay/src/internal/__tests__/helpers.getHeaders.test.js delete mode 100644 src/relay/src/internal/__tests__/helpers.getRequestBody.test.js delete mode 100644 src/relay/src/internal/__tests__/helpers.handleData.test.js delete mode 100644 src/relay/src/internal/createRelayStore.js delete mode 100644 src/relay/src/internal/createRequestHandler.js delete mode 100644 src/relay/src/internal/helpers.js delete mode 100644 src/relay/src/useLazyLoadQuery.js delete mode 100644 src/relay/src/useMutation.js diff --git a/scripts/publishedPackages.json b/scripts/publishedPackages.json index 1066d2d8a5..2a5c1e3396 100644 --- a/scripts/publishedPackages.json +++ b/scripts/publishedPackages.json @@ -11,7 +11,6 @@ "@adeira/monorepo-shipit", "@adeira/monorepo-utils", "@adeira/murmur-hash", - "@adeira/relay", "@adeira/shell-command", "eslint-plugin-adeira" ] diff --git a/src/monorepo-shipit/config/__tests__/relay.test.js b/src/monorepo-shipit/config/__tests__/relay.test.js deleted file mode 100644 index 4a937cdbea..0000000000 --- a/src/monorepo-shipit/config/__tests__/relay.test.js +++ /dev/null @@ -1,16 +0,0 @@ -// @flow strict-local - -import path from 'path'; - -import testExportedPaths from './testExportedPaths'; - -testExportedPaths(path.join(__dirname, '..', 'relay.js'), [ - ['src/relay/src/__flowtests__/QueryRenderer.js', 'src/__flowtests__/QueryRenderer.js'], - ['src/relay/src/__tests__/QueryRenderer.test.js', 'src/__tests__/QueryRenderer.test.js'], - ['src/relay/src/index.js', 'src/index.js'], - ['src/relay/package.json', 'package.json'], - - // invalid cases: - ['src/packages/monorepo/outsideScope.js', undefined], // correctly deleted - ['package.json', undefined], // correctly deleted -]); diff --git a/src/monorepo-shipit/config/relay.js b/src/monorepo-shipit/config/relay.js deleted file mode 100644 index 21fab9fe8f..0000000000 --- a/src/monorepo-shipit/config/relay.js +++ /dev/null @@ -1,14 +0,0 @@ -// @flow strict - -import type { ConfigType } from '../ConfigType.flow'; - -module.exports = ({ - getStaticConfig() { - return { - repository: 'git@github.com:adeira/relay.git', - }; - }, - getPathMappings() { - return new Map([['src/relay/', '']]); - }, -}: ConfigType); diff --git a/src/relay/.babelrc.js b/src/relay/.babelrc.js deleted file mode 100644 index b9020d6655..0000000000 --- a/src/relay/.babelrc.js +++ /dev/null @@ -1,5 +0,0 @@ -// @flow strict - -module.exports = { - plugins: ['relay'], -}; diff --git a/src/relay/.gitignore b/src/relay/.gitignore deleted file mode 100644 index 23d67fc104..0000000000 --- a/src/relay/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -yarn.lock diff --git a/src/relay/.npmignore b/src/relay/.npmignore deleted file mode 100644 index fcce350237..0000000000 --- a/src/relay/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -__flowtests__ -__github__ -__tests__ -.eslintrc.js diff --git a/src/relay/CHANGELOG.md b/src/relay/CHANGELOG.md deleted file mode 100644 index 5f106ba6cc..0000000000 --- a/src/relay/CHANGELOG.md +++ /dev/null @@ -1,342 +0,0 @@ -# Unreleased - -# 9.0.0 - -- Relay 16.2.0, see: - - https://github.com/facebook/relay/releases/tag/v16.0.0 - - https://github.com/facebook/relay/releases/tag/v16.1.0 - - https://github.com/facebook/relay/releases/tag/v16.2.0 - -# 8.0.0 - -- Relay 15.0.0, see: https://github.com/facebook/relay/releases/tag/v15.0.0 - -# 7.0.0 - -- The deprecated `QueryRenderer` has been removed. You should use appropriate Relay hooks alternatives. -- Dependency on `@adeira/fetch` has been removed which means: - - errors `FetchResponseError` and `FetchTimeoutError` are no longer being exported from the package - - function `createNetworkFetcher` no longer accepts `fetchTimeout` and `retryDelays` config options - -# 6.2.0 - -- Relay 14.1.0, see: https://github.com/facebook/relay/releases/tag/v14.1.0 - -# 6.1.0 - -- The network layer now takes `QueryResponseCache` into account. -- Add experimental `RelayRehydratePreloadedQueries` query to allow usage of `usePreloadedQuery` in Next.js applications. - -# 6.0.0 - -- Use Relay 14.0.0, see: https://github.com/facebook/relay/releases/tag/v14.0.0 -- Removed old `LocalQueryRenderer`, `createLocalEnvironment` and `getDataFromRequest` - -# 5.2.0 - -- Use Relay 13.1.0, see: https://github.com/facebook/relay/releases/tag/v13.1.0 -- Use Relay 13.1.1, see: https://github.com/facebook/relay/releases/tag/v13.1.1 -- Use Relay 13.2.0, see: https://github.com/facebook/relay/releases/tag/v13.2.0 -- Added support for `@live_query` directive. - -# 5.1.0 - -- Use Relay 13.0.2, see: https://github.com/facebook/relay/releases/tag/v13.0.2 - -# 5.0.0 - -- Relay 13, see: https://github.com/facebook/relay/releases/tag/v13.0.0 -- The old Relay Compiler wrapper has been replaced with the new Rust Compiler. This is the only compiler available in Relay 13+ and you can read more about this change here: https://relay.dev/blog/2021/12/08/introducing-the-new-relay-compiler/ -- Binary `adeira-fetch-schema` has been removed. Fetching of the GraphQL schema is not responsibility of this package anymore. -- Added logging of required fields (`@required(action:LOG)` directive). - -# 4.0.0 - -- **Breaking**: Relay version upgraded to 12.0.0, for more information please visit: https://github.com/facebook/relay/releases/tag/v12.0.0 -- **Breaking**: All previous loggers (`RelayEagerLogger`, `RelayLazyLogger` and `RelayDebugLogger`) were replaced with one simple `RelayLogger`. This allows us to focus better on one solution that is more friendly with the new Relay Hooks development workflow. -- **Breaking**: function `commitMutationAsync` has been removed. You can still use legacy `commitMutation` or preferably `useMutation` hook which is much better replacement for these functions. -- **Breaking**: types `PaginationRelayProp` and `RefetchRelayProp` were renamed to `RelayPaginationProp` and `RelayRefetchProp` respectively. Additionally, they now expect component instead of props type in the generic type (that applies to `RelayProp` type as well). Migration example: - - ```diff - - }): FragmentContainerType); - + }): RelayFragmentContainer); - - - ): PaginationContainerType); - + ): RelayPaginationContainer); - - - ): RefetchContainerType); - + ): RelayRefetchContainer); - ``` - -- **Breaking**: new version of `fetchQuery` from Relay 11 (returns observable instead of promise). For more information please visit: https://github.com/facebook/relay/releases/tag/v11.0.0. Easiest migration path (BUT be aware of [the limitations](https://relay.dev/docs/api-reference/fetch-query/#behavior-with-topromise)): - - ```diff - - await fetchQuery(environment, query, variables); - + await fetchQuery(environment, query, variables).toPromise(); - ``` - -# 3.3.0 - -- Added support for GraphQL errors with `CRICITAL` severity: you can mark any error to be critical by adding this value to `errors[*].extensions.severity`. Such errors will be propagated to any available `ErrorBoundary` when using `useLazyLoadQuery` or to `onError` callback when calling a mutation. -- Removed forgotten dependency `relay-compiler-experimental` (followup after 3.2.4) -- Bump commander from from 7.2.0 to 8.0.0 -- Export type `PreloadedQuery` that is handy when using [`usePreloadedQuery`](https://relay.dev/docs/api-reference/use-preloaded-query/) hook for example. - -# 3.2.4 - -- Removed experimental bin `adeira-relay-compiler-experimental` because it was causing issues when installing `@adeira/relay` via NPM (see https://github.com/adeira/universe/issues/2328). If you want to use the new Relay Rust Compiler please install it directly via `relay-compiler-experimental` (https://www.npmjs.com/package/relay-compiler-experimental). - -# 3.2.3 - -Note for all Flow users: all projects in [`adeira/universe`](https://github.com/adeira/universe) now use implicit exact Flow types (`{}` for strict objects and `{ ... }` for open objects, syntax `{||}` is deprecated). We do not expect any issues as long as you are using `exact_by_default=true` Flow option. - -- Relay dependencies upgraded to version 11.0.2, see: https://github.com/facebook/relay/releases/tag/v11.0.2 -- experimental Relay Rust compiler upgraded to the latest `master` version - -# 3.2.2 - -- Added experimental bin `adeira-relay-compiler-experimental` which directly calls official `relay-compiler-experimental` bin. This new Relay compiler written in Rust is unstable (as the name suggests) but eventually will be the default. For now, you can start experimenting with it and report any issues to [`facebook/relay`](https://github.com/facebook/relay) repo. - -# 3.2.1 - -- Relay dependencies upgraded to version 11.0.1, see: https://github.com/facebook/relay/releases/tag/v11.0.1 - -# 3.2.0 - -This minor release is focused on cleaning old internal code and removing some legacy parts of the library. The goal is to have a clean and stable version before eventually removing the container API (and keeping only hooks API). But don't worry yet - we follow [upcoming Relay releases](https://github.com/facebook/relay/issues/3371). - -- removed required `X-Client` HTTP header from `createNetworkFetcher` (you can still use it but it's no longer mandatory) -- relax signature verification when using `adeira-relay-compiler` - it no longer requires the signature but still verifies it if it exists -- script `adeira-fetch-schema` now reads schema path from `relay.config.js` file (it still supports `--filename` for backward compatibility but that will be eventually removed) -- removed dependency on `@adeira/logger` - -# 3.1.1 - -- fixes a Flow issue when using `@refetchable` (`useRefetchableFragment` hook), see: https://github.com/adeira/universe/issues/1975 - -# 3.1.0 - -This release introduces Relay Hooks in a backward compatible fashion. Next major version of `@adeira/relay` will focus on phasing out legacy parts of Relay Modern (containers API), so it's highly encouraged to upgrade as soon as possible, see: [https://github.com/facebook/relay/issues/3371](https://github.com/facebook/relay/issues/3371) - -- Relay dependencies upgraded to version `11.0.0`, see: https://github.com/facebook/relay/releases/tag/v11.0.0 -- Additional Relay hooks were exposed: `useEntryPointLoader`, `useFragment`, `useLazyLoadQuery`, `usePaginationFragment`, `usePreloadedQuery`, `useQueryLoader`, `useRefetchableFragment`, `useSubscribeToInvalidationState` and `useSubscription` (+ some other hooks specific functions) -- Packages `@adeira/relay-runtime` and `@adeira/relay-utils` merged to this package. Everything should work without any extra changes (except for updating the exports). Please, let us know in case we missed something. - -For more information about Relay Hooks evolution please visit the following links: - -- https://github.com/facebook/relay/releases/tag/v11.0.0 -- https://relay.dev/blog/2021/03/09/introducing-relay-hooks/ -- https://relay.dev/docs/ _(new)_ -- https://github.com/facebook/relay/issues/3371 - -# 3.0.1 - -- `adeira-fetch-schema` script fixed - -# 3.0.0 - -- Support for Node.js 12 has been removed. This package might continue working on older Node.js versions, however, it's highly recommended upgrading to Node.js version 14 or newer. For more details, see: https://nodejs.org/en/about/releases/, or discuss here: https://github.com/adeira/universe/discussions/1588 -- Use `RelayLazyLogger` instead of `RelayEagerLogger` by default. - -# 2.2.0 - -- Upgraded Relay to version 10.1.0, see: https://github.com/facebook/relay/releases/tag/v10.1.0 -- Change to use the new [JSX transforms](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) - -# 2.1.0 - -- Added new Flow utils `FragmentContainerType`, `RefetchContainerType` and `PaginationContainerType` which will help you to migrate to the new `types-first` Flow architecture (https://medium.com/flow-type/types-first-a-scalable-new-architecture-for-flow-3d8c7ba1d4eb). Example: - - ```js - import { createFragmentContainer, graphql, type FragmentContainerType } from '@adeira/relay'; - - // ... - - export default (createFragmentContainer(Location, { - location: graphql` - fragment Location_location on Location { - name - country - } - `, - }): FragmentContainerType); - ``` - -# 2.0.2 - -- Upgrade relay to 10.0.1 - -# 2.0.1 - -- Remove `handlerProvider` from `createEnvironment`, leaving the default from `react-relay` to be used if the consumer doesn't add one. - -# 2.0.0 - -- Upgrade relay to 10.0.0 - -# 1.3.2 - -- `QueryRenderer` types defined as generic - -# 1.3.1 - -- Replace `readInline` function with `react-relay` implementation. - -# 1.3.0 - -- Upgrade relay packages to 9.1.0 - -# 1.2.0 - -- Remove record proxy type -- Import record proxy type from `@adeira/relay-runtime` - -# 1.1.3 - -- Upgrade `babel-plugin-relay` dependency - -# 1.1.0 - -- Export `useMutation` from index.js - -# 1.0.0 - -- Relay upgraded to the latest version 7.0.0 (see: https://github.com/facebook/relay/releases/tag/v7.0.0) -- Old Relay logger has been replaced with new event-based logger. -- Removed all custom Relay Compiler validations. -- Improve `RefetchOptions` type - -# 0.4.7.0 - -- Improved flow type coverage of Relay store. -- Compiler: added `include` and `exclude` arg options. - -# 0.4.6.0 - -- Fixed Flow types for `createFragmentContainer`, `createPaginationContainer` and `createRefetchContainer`. This may yield many new errors especially if you didn't type your React components correctly. But don't worry, the upgrade can be very simple and automated - contact us directly. :) -- Compiler: added support for experimental FS persist mode (see Relay Example project). - -# 0.4.5.0 - -- Function `commitMutation` is now defined with generic Flow type. You can now use types generated by Relay compiler: `commitMutation(...)`. -- New experimental function `commitMutationAsync` added - this function is the same like `commitMutation` except it returns Promise. - -# 0.4.4.0 - -- Burst cache timeout changed to 2 seconds. - -# 0.4.3.0 - -- Added invariant check for correct container factories usages. -- Added support for `readInlineData` (should be combined with `@inline`, see: https://relay.dev/docs/en/graphql-in-relay.html#inline). -- Export `DeclarativeMutationConfig` Flow type. - -# 0.4.2.0 - -- Expose new experimental `RelayEnvironmentProvider` component and `useRelayEnvironment` hook. - -# 0.4.1.0 - -- Added typed `fetchQuery` to the public interface (see: https://relay.dev/docs/en/fetch-query) - -# 0.4.0.0 - -- **Breaking**: Relay upgraded to the latest version 6.0.0 (see: https://github.com/facebook/relay/releases/tag/v6.0.0). We also added Flow interface for the new `LocalQueryRenderer` (with new `createLocalEnvironment`) but please remember that this interface is currently experimental and doesn't have the same capabilities like our `QueryRenderer`. The interface is not finished yet and it may change in the future. -- **Breaking**: Direct usage of `relay-compiler` is no longer officially supported. Use `kiwicom-relay-compiler` instead. - -# 0.3.6.0 - -- Enable `--watch` mode in our experimental Relay compiler. -- Enable `--validate` mode in our experimental Relay compiler. This mode returns code `101` in case of outdated generated files. -- Relay compiler now outputs ES6 modules. -- Added support for official Relay package `relay-config` which allows you to centralize Relay configuration in files like `relay.config.js`. Example: - -```js -module.exports = { - // ... - // Configuration options accepted by the `relay-compiler` command-line tool and `babel-plugin-relay`. - src: './src', - schema: './data/schema.graphql', - exclude: ['**/node_modules/**', '**/__mocks__/**', '**/__generated__/**'], -}; -``` - -# 0.3.5.0 - -- Experimental Relay compiler now shows warnings when you access deprecated field in your application code. -- Script `kiwicom-fetch-schema` now signs the generated files and sorts fields lexicographically. -- Experimental Relay compiler now verifies the signature generated by `kiwicom-fetch-schema`. - -# 0.3.4.0 - -- This version contains upgraded dependencies and more accurate Flow types. - -# 0.3.3.0 - -- New QueryRenderer property `dataFrom` with values `STORE_THEN_NETWORK` and `NETWORK_ONLY` (more info here: https://relay.dev/docs/en/next/query-renderer#props). -- Many internal updates mostly targeting OSS development experience. - -# 0.3.2.0 - -- New bin script `kiwicom-fetch-schema` available. This little script helps you with the download of your remote schema. Please, read README file to see how to use it. - -# 0.3.1.0 - -- Flow types of some object types are now more accurate -- Reverted breaking change enforcing correct Environment usage from version 3.0.0 - -# 0.3.0.0 - -- _(reverted in 0.3.1.0)_ Breaking: functions `commitMutation`, `requestSubscription` and `commitLocalUpdate` now require correct usage of Relay environment which is being passed down from props. Example of how to properly use mutations: - -```js -import { - type RelayProp, // or `PaginationRelayProp` or `RefetchRelayProp` types -} from '@adeira/relay'; - -type Props = {| +relay: RelayProp |}; - -function Component(props: Props) { - useEffect(() => { - commitMutation( - props.relay.environment, // <<< this Environment is not being imported but rather reused from `props.relay` - { mutation: graphql` ... ` }, - ); - }); -} -``` - -- Relay updated to version 5.0, see: https://github.com/facebook/relay/releases/tag/v5.0.0 -- This release also contains new _experimental_ Relay Compiler with support for persistent queries. This is currently undocumented feature and you should not use it. Expect breaking changes without any announcements. - -# 0.2.3.0 - -- You can now pass custom GraphiQL Printer into Relay environment factory. There is a default printer enabled for https://graphql.kiwi.com/ - you can just click on the GraphiQL link in your dev console and it will open current query with variables so you can debug it easily. - -# 0.2.2.0 - -- Experimental Flow support for operation loader (needed for `@match` and `@module`). - -# 0.2.1.0 - -- Babel Relay preset is now part of this package. Removed from `@adeira/babel-preset-adeira` in version 3.0.0. Please, edit your Babel configuration files (example for Next.js applications): - -```js -module.exports = { - presets: ['@adeira/babel-preset-adeira', 'next/babel'], - plugins: ['relay'], -}; -``` - -# 0.2.0.0 - -- Upgraded to Relay version 4.0.0 (see: https://github.com/facebook/relay/releases/tag/v4.0.0). Our previous versions 1.x disallowed some deprecated usages of Relay so this upgrade should be relatively straightforward. Check new testing tools in this release - especially `MockPayloadGenerator` and `RelayMockEnvironment`. There is also an improved support for `@match`/`@module` directives (available from `@adeira/relay` version 1.0) which works well with `@adeira/babel-preset-adeira` from version 3.0. Please give it a try and give us your feedback. - -# 0.1.2.0 - -- Network fetcher now accepts optional `refetchConfig` to be able to adjust `fetchTimeout` and `retryDelays` (see for more details: https://github.com/kiwicom/fetch) - -# 0.1.1.0 - -- `Disposable` Flow type exposed publicly -- `Environment` (incomplete) Flow type exposed publicly diff --git a/src/relay/LICENSE b/src/relay/LICENSE deleted file mode 100644 index 617684bbdf..0000000000 --- a/src/relay/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -MIT License - -Copyright (c) 2019-present, Adeira -Copyright (c) 2018-present, Kiwi.com -Copyright (c) 2013-present, Facebook, 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/src/relay/README.md b/src/relay/README.md deleted file mode 100644 index 45b4b4fbc9..0000000000 --- a/src/relay/README.md +++ /dev/null @@ -1,152 +0,0 @@ -`@adeira/relay` is an opinionated wrapper around [`facebook/relay`](https://github.com/facebook/relay) - a JavaScript framework for building data-driven React applications. Goal of this package is to create powerful yet simple to use Relay wrapper with great DX and additional useful features. - -# Installation and Setup - -In case you are migrating from `facebook/relay`: uninstall _all_ the Relay related packages you installed manually (`babel-plugin-relay`, `react-relay`, `relay-compiler`, `relay-config` and `relay-runtime`). You should also remove custom `flow-typed` definitions for Relay. This package takes care about everything you need (only one dependency needed). - -## Installation - -```bash -yarn add react react-dom @adeira/relay -``` - -## Set up Relay with a single config file - -Create a new file `relay.config.js` in your project root and configure where is your source code and GraphQL schema: - -```js -module.exports = { - // Configuration options accepted by the `relay-compiler` command-line tool and `babel-plugin-relay`. - src: './src', - schema: './data/schema.graphql', -}; -``` - -## Set up babel-plugin-relay - -Add "relay" to the list of plugins in your `.babelrc` file: - -```json -{ - "plugins": ["relay"] -} -``` - -## Set up Relay Compiler - -TKTK - -# Usage - -First, you should set up Relay Environment somewhere in the root of your application. We provide useful functions `createEnvironment` and `createNetworkFetcher` which will set up everything for you: - -```js -import React from 'react'; -import { createEnvironment, createNetworkFetcher } from '@adeira/relay'; - -const Environment = createEnvironment({ - fetchFn: createNetworkFetcher('https://graphql.example.com', { - // … additional HTTP headers if you want … - }), -}); - -function render() { - return ( - - {/* your React application here */} - - ); -} -``` - -Now, you can start fetching data in your React application: - -```js -import React from 'react'; -import { graphql, useLazyLoadQuery } from '@adeira/relay'; - -export default function App(props) { - const data = useLazyLoadQuery(graphql` - query AppQuery { - allLocations(first: 20) { - id - name - } - } - `); - - return data.allLocations?.map((location) => { - return
{location?.name}
; - }); -} -``` - -For more information on how to use Relay please follow the official Relay Guided Tour: [https://relay.dev/docs/guided-tour/](https://relay.dev/docs/guided-tour/) - -Everything you find in the Relay Guided Tour should work with our drop-in replacement `@adeira/relay` (except you import everything from `@adeira/relay` package). Additionally, you can observe Relay logs in your dev console: - -![Relay Logger](./relay-logger.png) - -# Error handling - -`@adeira/relay` forwards all successful responses (even when they are partial with errors) to the application code. This allows you to render the layout partially by getting the data via `useLazyLoadQuery` or in a callback `onCompleted` when calling a mutation. - -Optionally, server can also specify whether the error is critical or not by sending a severity in the [error's `extensions` entry](https://spec.graphql.org/June2018/#sec-Response-Format): - -```json5 -{ - data: '…', - errors: [ - { - message: 'some critical server error message', - locations: [{ line: 5, column: 5 }], - path: ['commerce', 'products'], - extensions: { - severity: 'CRITICAL', // <<< - }, - }, - ], -} -``` - -In this case, `@adeira/relay` will try to halt the application by throwing the error via `useLazyLoadQuery` (you should use an [ErrorBoundary](https://reactjs.org/docs/error-boundaries.html) to catch it) or by calling a callback `onError` when calling a mutation. - -This is particularly useful in situations when server would return a partial response, however, the error is so severe that we should not even attempt to partially render it. - -# Tips and tricks - -## Tip 1: do not expose global Relay Environment - -You should never import your custom environment directly when working with mutations or subscriptions. Try to prefer [`useMutation`](https://relay.dev/docs/api-reference/use-mutation/) hook if possible or get the environment via [`useRelayEnvironment`](https://relay.dev/docs/api-reference/use-relay-environment/) hook: - -```js -import { useRelayEnvironment } from '@adeira/relay'; - -function Component() { - const environment = useRelayEnvironment(); - - const handler = useCallback(() => { - // For example, can be used to pass the environment to functions that - // require a Relay environment (not needed with `useMutation` hook). - commitMutation(environment, …); - }, [environment]) - - return (…); -} -``` - -Only this way you can be sure that your mutation/subscription is using the correct environment. - -## Tip 2: file uploading via GraphQL mutations - -Apart from the actual mutation and variables, [`useMutation`](https://relay.dev/docs/api-reference/use-mutation/) hook accepts also `uploadables`. Uploadables is a [`UploadableMap`](https://relay.dev/docs/api-reference/commit-mutation/#type-uploadablemap) which is an object of [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) -or [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob). - -`@adeira/relay` will automatically send the request as `multipart/form-data` instead of `application/json` when it detects uploadables, so you don't have to worry about anything. - -# More info about Relay, prior art - -- [Relay Docs](https://relay.dev/docs/) -- [Relay Modern Network Deep Dive](https://medium.com/entria/relay-modern-network-deep-dive-ec187629dfd3) -- [Advanced Relay topics](https://mrtnzlml.com/docs/relay) -- [Relay Example](https://github.com/adeira/relay-example) diff --git a/src/relay/bin/compiler.js b/src/relay/bin/compiler.js deleted file mode 100755 index 315e9884c3..0000000000 --- a/src/relay/bin/compiler.js +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env node - -/* eslint-disable no-var,ft-flow/require-valid-file-annotation */ - -var bin = require('relay-compiler'); -var spawn = require('child_process').spawn; - -var input = process.argv.slice(2); - -spawn(bin, input, { stdio: 'inherit' }).on('exit', process.exit); diff --git a/src/relay/package.json b/src/relay/package.json deleted file mode 100644 index a8976eb6af..0000000000 --- a/src/relay/package.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "name": "@adeira/relay", - "version": "9.0.0", - "main": "./src/index.js", - "bin": { - "adeira-relay-compiler": "./bin/compiler.js" - }, - "type": "commonjs", - "sideEffects": false, - "homepage": "https://github.com/adeira/relay", - "bugs": "https://github.com/adeira/universe/issues", - "repository": { - "type": "git", - "url": "git@github.com:adeira/universe.git", - "directory": "src/relay" - }, - "description": "Opinionated wrapper around Relay - a JavaScript framework for building data-driven React applications", - "license": "MIT", - "dependencies": { - "@adeira/js": "^2.1.1", - "@babel/runtime": "^7.26.0", - "babel-plugin-relay": "^16.2.0", - "react-relay": "^16.2.0", - "relay-compiler": "^16.2.0", - "relay-runtime": "^16.2.0" - }, - "devDependencies": { - "react": "^18.3.1", - "react-test-renderer": "^18.3.1", - "relay-test-utils": "^16.2.0" - }, - "peerDependencies": { - "graphql": "^16.9.0", - "react": "^18.3.1" - } -} diff --git a/src/relay/relay-logger.png b/src/relay/relay-logger.png deleted file mode 100644 index 7b1cc8da957dd12f3b89a121b0365da2c8b0b2fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223929 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

cUejy;LW&WxSc%VMFdrqS@2>_Q~1L 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 SeA0;leB@ - * ``` - * - * Additionally, it should be combined with Next.js like so: - * - * ``` - * const MenuQuery = graphql` - * query MenuQuery { - * ...MenuFragment - * } - * `; - * - * type Props = { - * +relayPreloadedQueryRefs: { - * +menuQuery: PreloadedQuery, // from __generated__ - * } - * } - * - * export default function MenuPage(props: Props): React.Node { - * const data = usePreloadedQuery(MenuQuery, props.relayPreloadedQueryRefs.menuQuery); - * return

; - * } - * - * export async function getServerSideProps(context): Promise<…> { - * return { - * props: { - * relayPreloadedQueries: { - * menuQuery: await relayPreloadQuery(MenuQuery, {}), - * }, - * }, - * }; - * } - * ``` - * - * Note: `relayPreloadQuery` is a custom function fetching the GraphQL data server-side. - */ -export default function RelayRehydratePreloadedQueries({ Component, pageProps }: Props): Node { - const environment = useRelayEnvironment(); - - const transformedProps = useMemo(() => { - if (pageProps == null) { - return pageProps; - } - const { relayPreloadedQueries, ...otherProps } = pageProps; - if (relayPreloadedQueries == null) { - return pageProps; - } - - const relayPreloadedQueryRefs = {}; - for (const [queryName, { params, variables, response }] of Object.entries( - relayPreloadedQueries, - )) { - // $FlowFixMe[prop-missing]: property responseCache is missing in INetwork - environment.getNetwork().responseCache.set(params.cacheID, variables, response); - - /* $FlowFixMe[prop-missing] This comment suppresses an error when - * upgrading Flow to version 0.191.0. To see the error delete this - * comment and run Flow. */ - relayPreloadedQueryRefs[queryName] = { - environment, - fetchKey: params.id, - fetchPolicy: 'store-or-network', - isDisposed: false, - name: params.name, - kind: 'PreloadedQuery', - variables, - }; - } - - return { ...otherProps, relayPreloadedQueryRefs }; - }, [pageProps, environment]); - - return ( - Loading…}> - - - ); -} diff --git a/src/relay/src/__flowtests__/Environment.js b/src/relay/src/__flowtests__/Environment.js deleted file mode 100644 index 3f16b62d1c..0000000000 --- a/src/relay/src/__flowtests__/Environment.js +++ /dev/null @@ -1,116 +0,0 @@ -// @flow - -import type { RecordSourceProxy } from 'relay-runtime'; - -import { - graphql, - commitMutation, - requestSubscription, - commitLocalUpdate, - createEnvironment, - type Disposable, - type RelayPaginationProp, - type RelayProp, - type RelayRefetchProp, -} from '../index'; - -type PropsA = { +relay: RelayProp }; -type PropsB = { +relay: RelayRefetchProp }; -type PropsC = { +relay: RelayPaginationProp }; - -type PropsInvalid = { - +relay: { environment: number }, -}; - -// this returns Environment which should never be used directly -const ManuallyCreatedEnvironment = createEnvironment({ - fetchFn: () => {}, -}); - -const mutationConfig = { - mutation: graphql` - mutation EnvironmentMutation { - __typename - } - `, - variables: {}, -}; - -const subscriptionConfig = { - subscription: graphql` - subscription EnvironmentSubscription { - __typename - } - `, - variables: {}, -}; - -const localUpdater = (store: RecordSourceProxy) => { - const favorite = store.get('unique:ID'); - if (favorite) { - favorite.setValue(false, 'isNew'); - } -}; - -module.exports = ({ - commitMutation: { - correctUsageA(props: PropsA): Disposable { - return commitMutation(props.relay.environment, mutationConfig); - }, - correctUsageB(props: PropsB): Disposable { - return commitMutation(props.relay.environment, mutationConfig); - }, - correctUsageC(props: PropsC): Disposable { - return commitMutation(props.relay.environment, mutationConfig); - }, - incorrectUsageA(props: PropsInvalid): Disposable { - // $FlowExpectedError[incompatible-type]: this environment is invalid and should not be accepted - return commitMutation(props.relay.environment, mutationConfig); - }, - incorrectUsageB(): Disposable { - // environment _should_ be passed down from props (currently no error) - return commitMutation(ManuallyCreatedEnvironment, mutationConfig); - }, - }, - requestSubscription: { - correctUsageA(props: PropsA) { - return requestSubscription(props.relay.environment, subscriptionConfig); - }, - correctUsageB(props: PropsB) { - return requestSubscription(props.relay.environment, subscriptionConfig); - }, - correctUsageC(props: PropsC) { - return requestSubscription(props.relay.environment, subscriptionConfig); - }, - incorrectUsageA(props: PropsInvalid) { - // $FlowExpectedError[incompatible-type]: this environment is invalid and should not be accepted - return requestSubscription(props.relay.environment, subscriptionConfig); - }, - incorrectUsageB() { - return requestSubscription( - // environment _should_ be passed down from props (currently no error) - ManuallyCreatedEnvironment, - subscriptionConfig, - ); - }, - }, - commitLocalUpdate: { - correctUsageA(props: PropsA): void { - return commitLocalUpdate(props.relay.environment, localUpdater); - }, - correctUsageB(props: PropsB): void { - return commitLocalUpdate(props.relay.environment, localUpdater); - }, - correctUsageC(props: PropsC): void { - return commitLocalUpdate(props.relay.environment, localUpdater); - }, - incorrectUsageA(props: PropsInvalid): void { - // $FlowExpectedError[incompatible-type]: this environment is invalid and should not be accepted - return commitLocalUpdate(props.relay.environment, localUpdater); - }, - incorrectUsageB(): void { - // environment _should_ be passed down from props (currently no error) - return commitLocalUpdate(ManuallyCreatedEnvironment, localUpdater); - }, - }, -}: $FlowFixMe); diff --git a/src/relay/src/__flowtests__/createEnvironment.js b/src/relay/src/__flowtests__/createEnvironment.js deleted file mode 100644 index f70267760e..0000000000 --- a/src/relay/src/__flowtests__/createEnvironment.js +++ /dev/null @@ -1,36 +0,0 @@ -// @flow - -import { createEnvironment } from '../index'; - -const getOperation = (reference: mixed) => { - return import(`./src/__generated__/${reference}`); -}; - -module.exports = ({ - validMinimalUsage: () => { - return createEnvironment({ - fetchFn: () => false, - }); - }, - withOperationLoader: () => { - return createEnvironment({ - fetchFn: () => false, - operationLoader: { - get(reference) { - return getOperation(reference); - }, - load(reference) { - return getOperation(reference); - }, - }, - }); - }, - - // Invalid usages: - invalidUsage: () => { - // $FlowExpectedError[prop-missing]: property 'fetcherFn' should be in fact 'fetchFn' - return createEnvironment({ - fetcherFn: () => false, - }); - }, -}: $FlowFixMe); diff --git a/src/relay/src/__flowtests__/createNetworkFetcher.js b/src/relay/src/__flowtests__/createNetworkFetcher.js deleted file mode 100644 index 4828ec106e..0000000000 --- a/src/relay/src/__flowtests__/createNetworkFetcher.js +++ /dev/null @@ -1,30 +0,0 @@ -// @flow - -import { createNetworkFetcher } from '../index'; - -module.exports = ({ - validUsage: () => { - return { - case_1: createNetworkFetcher('//localhost', { - 'X-Client': 'ok', - }), - case_2: createNetworkFetcher('//localhost', { - 'X-Client': 'ok', - 'Additional-Header': 'ok', - }), - case_3: createNetworkFetcher('//localhost', { - 'Different-Header': 'err', - }), - case_4: createNetworkFetcher('//localhost'), - case_5: createNetworkFetcher('//localhost', {}, { credentials: 'include' }), - }; - }, - - // Invalid usages: - invalidHTTPHeader: () => { - // $FlowExpectedError[incompatible-call]: HTTP header values should be string, not number - return createNetworkFetcher('//localhost', { - 'my-awesome-header': 1, - }); - }, -}: $FlowFixMe); diff --git a/src/relay/src/__flowtests__/useLazyLoadQuery.js b/src/relay/src/__flowtests__/useLazyLoadQuery.js deleted file mode 100644 index 90bcb21530..0000000000 --- a/src/relay/src/__flowtests__/useLazyLoadQuery.js +++ /dev/null @@ -1,33 +0,0 @@ -// @flow - -import { useLazyLoadQuery, graphql } from '../index'; - -const query = graphql` - query useLazyLoadQuery { - __typename - } -`; - -type QueryVariables = {}; - -type QueryTypeMock = { - +variables: {}, - +response: {}, -}; - -module.exports = { - validUsage: (): (() => void) => { - return function TestComponent() { - useLazyLoadQuery(query); - useLazyLoadQuery(query, Object.freeze({})); - }; - }, - - // Invalid usages: - invalidUsage: (): (() => void) => { - return function TestComponent() { - // $FlowExpectedError[incompatible-call]: should be an object - useLazyLoadQuery(query, 'invalid'); - }; - }, -}; diff --git a/src/relay/src/__flowtests__/useMutation.js b/src/relay/src/__flowtests__/useMutation.js deleted file mode 100644 index 43b4c1dc3d..0000000000 --- a/src/relay/src/__flowtests__/useMutation.js +++ /dev/null @@ -1,48 +0,0 @@ -// @flow - -import { useMutation, graphql, type Disposable } from '../index'; - -const mutation = graphql` - mutation useMutation { - __typename - } -`; - -module.exports = { - validUsage: (): (() => void) => { - return function TestComponent() { - const [executeMutation, isMutationPending] = useMutation(mutation); - (executeMutation: ({ - onCompleted: () => void, - }) => Disposable); - (isMutationPending: boolean); - - executeMutation({ - onCompleted: () => {}, - }); - - executeMutation({ - variables: {}, - onCompleted: () => {}, - onUnsubscribe: () => {}, - }); - }; - }, - - // Invalid usages: - invalidUsage: (): (() => void) => { - return function TestComponent() { - const [executeMutation] = useMutation(mutation); - - // $FlowExpectedError[prop-missing]: property onCompleted is missing - executeMutation({ - variables: {}, - }); - - // $FlowExpectedError[prop-missing]: property onCompleted is missing, property wtfIsThis is missing in HookMutationConfig - executeMutation({ - wtfIsThis: {}, - }); - }; - }, -}; diff --git a/src/relay/src/__tests__/RelayLogger.node.test.js b/src/relay/src/__tests__/RelayLogger.node.test.js deleted file mode 100644 index 968ddf40dd..0000000000 --- a/src/relay/src/__tests__/RelayLogger.node.test.js +++ /dev/null @@ -1,64 +0,0 @@ -/** - * @flow - * @jest-environment node - */ - -import { RelayLogger, RelayFieldLogger } from '../RelayLogger'; - -let consoleLogSpy; -let consoleErrorSpy; -let consoleWarnSpy; - -beforeEach(() => { - consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(jest.fn()); - consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(jest.fn()); - consoleWarnSpy = jest.spyOn(console, 'warn').mockImplementation(jest.fn()); -}); - -afterEach(() => { - consoleErrorSpy.mockRestore(); - consoleLogSpy.mockRestore(); - consoleWarnSpy.mockRestore(); -}); - -describe('Relay Logger', () => { - it('does not log in Node.js environment', () => { - RelayLogger({ - name: 'execute.start', - executeId: 100_000, - params: { - id: null, - name: 'MyAwesomeQuery', - operationKind: 'query', - text: 'query MyAwesomeQuery{id}', - metadata: {}, - cacheID: '', - }, - variables: {}, - cacheConfig: {}, - }); - - RelayLogger({ - name: 'execute.complete', - executeId: 100_000, - }); - - expect(consoleErrorSpy).not.toHaveBeenCalled(); - expect(consoleLogSpy).not.toHaveBeenCalled(); - expect(consoleWarnSpy).not.toHaveBeenCalled(); - }); -}); - -describe('Relay Required Field Logger', () => { - it('does not log in Node.js environment', () => { - RelayFieldLogger({ - kind: 'missing_field.log', - owner: 'mock', - fieldPath: 'mock', - }); - - expect(consoleErrorSpy).not.toHaveBeenCalled(); - expect(consoleLogSpy).not.toHaveBeenCalled(); - expect(consoleWarnSpy).not.toHaveBeenCalled(); - }); -}); diff --git a/src/relay/src/__tests__/RelayLogger.test.js b/src/relay/src/__tests__/RelayLogger.test.js deleted file mode 100644 index 74124e38e9..0000000000 --- a/src/relay/src/__tests__/RelayLogger.test.js +++ /dev/null @@ -1,126 +0,0 @@ -/** - * @flow - * @jest-environment jsdom - */ - -import { RelayLogger, RelayFieldLogger } from '../RelayLogger'; - -let consoleErrorSpy; -let consoleLogSpy; -let consoleGroupCollapsedSpy; - -beforeEach(() => { - consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(jest.fn()); - consoleLogSpy = jest.spyOn(console, 'log').mockImplementation(jest.fn()); - consoleGroupCollapsedSpy = jest.spyOn(console, 'groupCollapsed').mockImplementation(jest.fn()); -}); - -afterEach(() => { - consoleErrorSpy.mockRestore(); - consoleLogSpy.mockRestore(); - consoleGroupCollapsedSpy.mockRestore(); -}); - -describe('Relay Logger', () => { - it('logs network.complete as expected', () => { - RelayLogger({ - name: 'execute.start', - executeId: 100_000, - params: { - id: null, - name: 'MyAwesomeQuery', - operationKind: 'query', - text: 'query MyAwesomeQuery{id}', - metadata: {}, - cacheID: '', - }, - variables: {}, - cacheConfig: {}, - }); - - RelayLogger({ - name: 'execute.complete', - executeId: 100_000, - }); - - expect(consoleErrorSpy).not.toHaveBeenCalled(); - expect(consoleGroupCollapsedSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "%s%s%s", - "[Relay] ", - "execute.start ", - "MyAwesomeQuery", - ], - [ - "%s%s", - "[Relay] ", - "execute.complete", - ], - ] - `); - expect(consoleLogSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - { - "cacheConfig": {}, - "executeId": 100000, - "params": { - "cacheID": "", - "id": null, - "metadata": {}, - "name": "MyAwesomeQuery", - "operationKind": "query", - "text": "query MyAwesomeQuery{id}", - }, - "variables": {}, - }, - ], - [ - { - "executeId": 100000, - }, - ], - ] - `); - }); -}); - -describe('Relay Required Field Logger', () => { - it('logs missing_field.log as expected', () => { - RelayFieldLogger({ - kind: 'missing_field.log', - owner: 'mock', - fieldPath: 'mock', - }); - - expect(consoleErrorSpy).not.toHaveBeenCalled(); - expect(consoleGroupCollapsedSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "%s%c%s%c%s", - "[Relay ", - "color:orange", - "!", - "color:unset", - "] ", - "missing required field", - ], - ] - `); - expect(consoleLogSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - { - "fieldPath": "mock", - "kind": "missing_field.log", - "owner": "mock", - }, - ], - [ - "Directive @required(action: LOG) was used somewhere in the code to mark one of the fields required. Unfortunately, server didn't return this field resulting in this message.", - ], - ] - `); - }); -}); diff --git a/src/relay/src/__tests__/createNetworkFetcher.test.js b/src/relay/src/__tests__/createNetworkFetcher.test.js deleted file mode 100644 index e18dee732a..0000000000 --- a/src/relay/src/__tests__/createNetworkFetcher.test.js +++ /dev/null @@ -1,87 +0,0 @@ -// @flow - -import createNetworkFetcher from '../createNetworkFetcher'; - -const originalFetch = globalThis.fetch; -beforeEach(() => { - globalThis.fetch = jest.fn().mockImplementation(() => ({ - headers: { - get: () => 'application/json', - }, - json: () => ({ mock: 'ok' }), - text: () => {}, - })); -}); - -afterEach(() => { - globalThis.fetch = originalFetch; -}); - -const request = { text: 'mocked request.text' }; -const variables = { mock: true }; -const expectedBody = '{"query":"mocked request.text","variables":{"mock":true}}'; - -it('works with additional headers', async () => { - const fetcher = createNetworkFetcher('//localhost', { - 'X-Custom': 'Bearer 123', - 'X-Client': 'https://github.com/adeira/relay-example', - }); - - await expect(fetcher(request, variables)).resolves.toEqual({ mock: 'ok' }); - expect(fetch).toHaveBeenCalledWith('//localhost', { - body: expectedBody, - headers: { - 'Accept': 'application/json', - 'Content-type': 'application/json', - 'X-Custom': 'Bearer 123', - 'X-Client': 'https://github.com/adeira/relay-example', - }, - method: 'POST', - }); -}); - -it('works with promised headers', async () => { - const headers = new Promise<{ +[key: string]: string }>((resolve) => { - // simulates somehow difficult and async way how to get headers (real-world example) - resolve({ - 'X-Client': 'https://github.com/adeira/relay-example', - }); - }); - - const fetcher = createNetworkFetcher('//localhost', headers); - - await expect(fetcher(request, variables)).resolves.toEqual({ mock: 'ok' }); - expect(fetch).toHaveBeenCalledWith('//localhost', { - body: expectedBody, - headers: { - 'Accept': 'application/json', - 'Content-type': 'application/json', - 'X-Client': 'https://github.com/adeira/relay-example', - }, - method: 'POST', - }); -}); - -it('accepts fetchConfig', async () => { - const fetcher = createNetworkFetcher( - '//localhost', - { - 'X-Client': 'https://github.com/adeira/relay-example', - }, - { - credentials: 'include', - }, - ); - - await expect(fetcher(request, variables)).resolves.toEqual({ mock: 'ok' }); - expect(fetch).toHaveBeenCalledWith('//localhost', { - body: expectedBody, - headers: { - 'Accept': 'application/json', - 'Content-type': 'application/json', - 'X-Client': 'https://github.com/adeira/relay-example', - }, - method: 'POST', - credentials: 'include', - }); -}); diff --git a/src/relay/src/__tests__/publicExports.test.js b/src/relay/src/__tests__/publicExports.test.js deleted file mode 100644 index 1e10b18999..0000000000 --- a/src/relay/src/__tests__/publicExports.test.js +++ /dev/null @@ -1,45 +0,0 @@ -// @flow - -import * as publicExports from '../index'; - -it('exports only what we want to export', () => { - // this is to make sure we are always exporting the subset we want to - expect( - Object.keys(publicExports).sort((a, b) => { - return a.localeCompare(b); - }), - ).toMatchInlineSnapshot(` - [ - "commitLocalUpdate", - "commitMutation", - "ConnectionHandler", - "createEnvironment", - "createFragmentContainer", - "createNetworkFetcher", - "createPaginationContainer", - "createRefetchContainer", - "EntryPointContainer", - "fetchQuery", - "graphql", - "loadEntryPoint", - "loadQuery", - "readInlineData", - "RelayEnvironmentProvider", - "RelayFieldLogger", - "RelayLogger", - "RelayRehydratePreloadedQueries", - "requestSubscription", - "useEntryPointLoader", - "useFragment", - "useLazyLoadQuery", - "useMutation", - "usePaginationFragment", - "usePreloadedQuery", - "useQueryLoader", - "useRefetchableFragment", - "useRelayEnvironment", - "useSubscribeToInvalidationState", - "useSubscription", - ] - `); -}); diff --git a/src/relay/src/createEnvironment.js b/src/relay/src/createEnvironment.js deleted file mode 100644 index 6958fcd103..0000000000 --- a/src/relay/src/createEnvironment.js +++ /dev/null @@ -1,52 +0,0 @@ -// @flow - -import { - Network, - Environment as RelayEnvironment, - type Environment, - type LogFunction, - type OperationLoader, -} from 'relay-runtime'; -import type { RecordSourceJSON } from 'relay-runtime/store/RelayStoreTypes'; - -import createRelayStore from './internal/createRelayStore'; -import createRequestHandler from './internal/createRequestHandler'; -import relayQueryResponseCache from './internal/QueryResponseCache'; -import { RelayLogger, RelayFieldLogger } from './RelayLogger'; - -type Options = { - +fetchFn: (...args: $ReadOnlyArray) => any, - +subscribeFn?: (...args: $ReadOnlyArray) => any, - +handlerProvider?: (string) => void, - +operationLoader?: OperationLoader, - +records?: ?RecordSourceJSON, - +gcReleaseBufferSize?: ?number, - +log?: LogFunction, -}; - -function createNetwork( - fetchFn: (...args: $ReadOnlyArray) => any, - subscribeFn?: (...args: $ReadOnlyArray) => any, -) { - const fetch = createRequestHandler(fetchFn); - return Network.create(fetch, subscribeFn); -} - -export default function createEnvironment(options: Options): Environment { - const { fetchFn, subscribeFn, records, gcReleaseBufferSize, ...rest } = options; - const network = createNetwork(fetchFn, subscribeFn); - - const environment = new RelayEnvironment({ - network: network, - log: RelayLogger, - relayFieldLogger: RelayFieldLogger, - store: createRelayStore(records, { - gcReleaseBufferSize: gcReleaseBufferSize, - }), - ...rest, - }); - - // $FlowFixMe[prop-missing]: property responseCache is missing in INetwork - environment.getNetwork().responseCache = relayQueryResponseCache; - return environment; -} diff --git a/src/relay/src/createNetworkFetcher.js b/src/relay/src/createNetworkFetcher.js deleted file mode 100644 index 7b836a6b17..0000000000 --- a/src/relay/src/createNetworkFetcher.js +++ /dev/null @@ -1,55 +0,0 @@ -// @flow strict-local - -import { type UploadableMap, type Variables } from 'relay-runtime'; - -import relayQueryResponseCache from './internal/QueryResponseCache'; -import { handleData, getRequestBody, getHeaders, isQuery } from './internal/helpers'; - -type Headers = { - +[key: string]: string, -}; - -type AdditionalHeaders = Headers | Promise; -type FetchConfig = { - +credentials?: 'omit' | 'same-origin' | 'include', -}; - -export default function createNetworkFetcher( - graphQLServerURL: string, - additionalHeaders?: AdditionalHeaders, - fetchConfig?: FetchConfig, -): ( - request: $FlowFixMe, - variables: Variables, - uploadables: ?UploadableMap, -) => Promise<$FlowFixMe | string> { - return async function networkFetcher(request, variables, uploadables) { - if (isQuery(request)) { - // TODO: take into account `cacheConfig.force` - const fromCache = relayQueryResponseCache.get(request.cacheID, variables); - if (fromCache != null) { - return Promise.resolve(fromCache); - } - } - - const body = getRequestBody(request, variables, uploadables); - - // sometimes it's necessary to get headers asynchronously (while refreshing authorization - // token for example) - for this reason we accept object or promise here and we always - // resolve it as a promise (see tests) - const resolvedAdditionalHeaders: Headers = (await additionalHeaders) ?? {}; - const headers = { - ...getHeaders(uploadables), - ...resolvedAdditionalHeaders, - }; - - const response = await fetch(graphQLServerURL, { - method: 'POST', - headers, - body, - ...fetchConfig, - }); - - return handleData(response); - }; -} diff --git a/src/relay/src/index.js b/src/relay/src/index.js deleted file mode 100644 index 53ad350492..0000000000 --- a/src/relay/src/index.js +++ /dev/null @@ -1,67 +0,0 @@ -// @flow - -// Our `@adeira/relay` additions: -export { default as createEnvironment } from './createEnvironment'; -export { default as createNetworkFetcher } from './createNetworkFetcher'; -export { RelayLogger, RelayFieldLogger } from './RelayLogger'; -export { default as RelayRehydratePreloadedQueries } from './RelayRehydratePreloadedQueries'; - -// Relay Modern (wrapped): -export { default as useLazyLoadQuery } from './useLazyLoadQuery'; - -// Relay Modern (re-exported): -export { - commitLocalUpdate, - commitMutation, - ConnectionHandler, - createFragmentContainer, - createPaginationContainer, - createRefetchContainer, - graphql, - readInlineData, - requestSubscription, -} from 'react-relay/legacy'; -export type { - RelayFragmentContainer, - RelayPaginationContainer, - RelayPaginationProp, - RelayProp, - RelayRefetchContainer, - RelayRefetchProp, -} from 'react-relay/legacy'; -export type { Environment } from 'react-relay'; -export type { - CacheConfig, - DeclarativeMutationConfig, - Disposable, - GraphQLTaggedNode, // TODO: deprecated in favor of `Query<_, _>` type (precisely typed GraphQL strings) - OperationType, - PayloadError, - Snapshot, - UploadableMap, - Variables, -} from 'relay-runtime'; -// eslint-disable-next-line import/no-unresolved -export type { RecordSourceJSON } from 'relay-runtime/store/RelayStoreTypes'; - -// Relay Hooks (wrapped) -export { default as useMutation } from './useMutation'; - -// Relay Hooks (re-exported): -export { - EntryPointContainer, - fetchQuery, - loadEntryPoint, - loadQuery, - RelayEnvironmentProvider, - useEntryPointLoader, - useFragment, - usePaginationFragment, - usePreloadedQuery, - useQueryLoader, - useRefetchableFragment, - useRelayEnvironment, - useSubscribeToInvalidationState, - useSubscription, -} from 'react-relay'; -export type { PreloadedQuery } from 'react-relay'; diff --git a/src/relay/src/internal/QueryResponseCache.js b/src/relay/src/internal/QueryResponseCache.js deleted file mode 100644 index 49b19d4b31..0000000000 --- a/src/relay/src/internal/QueryResponseCache.js +++ /dev/null @@ -1,9 +0,0 @@ -// @flow - -import { QueryResponseCache } from 'relay-runtime'; - -const ONE_MINUTE_IN_MS = 60 * 1000; -export default (new QueryResponseCache({ - size: 10, - ttl: ONE_MINUTE_IN_MS, -}): QueryResponseCache); diff --git a/src/relay/src/internal/__tests__/createRequestHandler.test.js b/src/relay/src/internal/__tests__/createRequestHandler.test.js deleted file mode 100644 index db7aa631ce..0000000000 --- a/src/relay/src/internal/__tests__/createRequestHandler.test.js +++ /dev/null @@ -1,281 +0,0 @@ -// @flow - -import type { GraphQLResponse } from 'relay-runtime'; - -import createRequestHandler from '../createRequestHandler'; - -let list: Array; -beforeEach(() => { - list = []; - jest.resetModules(); -}); - -const observer = { - start: () => list.push('start'), - next: (val: GraphQLResponse) => { - return list.push(`next:${typeof val === 'object' ? JSON.stringify(val) : val}`); - }, - error: (err: Error) => list.push(err), - complete: () => list.push('complete'), - unsubscribe: () => list.push('unsubscribe'), -}; - -it('works as expected with query success', (done) => { - expect.assertions(4); - - const requestNode = { operationKind: 'query' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve('data'); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual(['start', 'next:data', 'complete']); - done(); - }) - .subscribe(observer); -}); - -it('works as expected with query error', (done) => { - expect.assertions(5); - const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); - - const requestNode = { operationKind: 'query' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve({ - data: null, - errors: [{ message: 'error 1' }, { message: 'error 2' }], - }); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual([ - 'start', - 'next:{"data":null,"errors":[{"message":"error 1"},{"message":"error 2"}]}', - 'complete', - ]); - expect(consoleSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "error 1", - { - "message": "error 1", - }, - ], - [ - "error 2", - { - "message": "error 2", - }, - ], - ] - `); - consoleSpy.mockRestore(); - done(); - }) - .subscribe(observer); -}); - -it('works as expected with CRITICAL query error', (done) => { - expect.assertions(5); - const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); - - const requestNode = { operationKind: 'query' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve({ - data: null, - errors: [ - { message: 'error 1' }, - { message: 'error 2', extensions: { severity: 'CRITICAL' } }, - ], - }); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual(['start', new Error('error 2')]); - expect(consoleSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "error 1", - { - "message": "error 1", - }, - ], - ] - `); - consoleSpy.mockRestore(); - done(); - }) - .subscribe(observer); -}); - -it('works as expected with mutation', (done) => { - expect.assertions(4); - - const requestNode = { operationKind: 'mutation' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve('data'); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual(['start', 'next:data', 'complete']); - done(); - }) - .subscribe(observer); -}); - -it('works as expected with mutation error', (done) => { - expect.assertions(5); - const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); - - const requestNode = { operationKind: 'mutation' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve({ - data: null, - errors: [{ message: 'error 1' }, { message: 'error 2' }], - }); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual([ - 'start', - 'next:{"data":null,"errors":[{"message":"error 1"},{"message":"error 2"}]}', - 'complete', - ]); - expect(consoleSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "error 1", - { - "message": "error 1", - }, - ], - [ - "error 2", - { - "message": "error 2", - }, - ], - ] - `); - consoleSpy.mockRestore(); - done(); - }) - .subscribe(observer); -}); - -it('works as expected with CRITICAL mutation error', (done) => { - expect.assertions(5); - const consoleSpy = jest.spyOn(console, 'warn').mockImplementation(() => {}); - - const requestNode = { operationKind: 'mutation' }; - const variables = { aaa: 111 }; - const uploadables = {}; - - const requestHandler = createRequestHandler((a, b, c) => { - expect(a).toStrictEqual(requestNode); - expect(b).toStrictEqual(variables); - expect(c).toStrictEqual(uploadables); - return Promise.resolve({ - data: null, - errors: [ - { message: 'error 1' }, - { message: 'error 2', extensions: { severity: 'CRITICAL' } }, - ], - }); - }); - - const observable = requestHandler( - requestNode, - variables, - {}, // cacheConfig - uploadables, - ); - - observable - .finally(() => { - expect(list).toStrictEqual(['start', new Error('error 2')]); - expect(consoleSpy.mock.calls).toMatchInlineSnapshot(` - [ - [ - "error 1", - { - "message": "error 1", - }, - ], - ] - `); - consoleSpy.mockRestore(); - done(); - }) - .subscribe(observer); -}); diff --git a/src/relay/src/internal/__tests__/helpers.getHeaders.test.js b/src/relay/src/internal/__tests__/helpers.getHeaders.test.js deleted file mode 100644 index 1a8fc0f2b3..0000000000 --- a/src/relay/src/internal/__tests__/helpers.getHeaders.test.js +++ /dev/null @@ -1,17 +0,0 @@ -// @flow - -import { getHeaders } from '../helpers'; - -it('returns correct headers for request without uploadables', () => { - expect(getHeaders()).toEqual({ - 'Accept': 'application/json', - 'Content-type': 'application/json', - }); -}); - -it('returns correct headers for request with uploadables', () => { - // $FlowExpectedError[incompatible-call]: 'value' literal is not valid uploadable File or Blob - expect(getHeaders({ key: 'value' })).toEqual({ - Accept: '*/*', - }); -}); diff --git a/src/relay/src/internal/__tests__/helpers.getRequestBody.test.js b/src/relay/src/internal/__tests__/helpers.getRequestBody.test.js deleted file mode 100644 index 9754a3e119..0000000000 --- a/src/relay/src/internal/__tests__/helpers.getRequestBody.test.js +++ /dev/null @@ -1,86 +0,0 @@ -/** - * @flow - * @jest-environment jsdom - */ - -import { getRequestBody } from '../helpers'; - -it('returns request body without uploadables', () => { - expect( - getRequestBody( - { - text: '{__typename}', - }, - {}, // variables - ), - ).toMatchInlineSnapshot(`"{"query":"{__typename}","variables":{}}"`); -}); - -it('returns request body without uploadables - persistent queries', () => { - expect( - getRequestBody( - { - id: '1234567890', - }, - { aaa: 111 }, // variables - ), - ).toMatchInlineSnapshot(`"{"documentId":"1234567890","variables":{"aaa":111}}"`); -}); - -function serializeFormData(formData: FormData) { - const object: { [string]: FormDataEntryValue } = {}; - for (const [key, value] of formData.entries()) { - object[key] = value; - } - return object; -} - -it('returns request body with uploadables', () => { - const formData = getRequestBody( - { - text: '{__typename}', - }, - { bbb: 222 }, // variables - { - foo: new File(['foo'], 'foo.txt'), - bar: new File(['bar'], 'bar.txt'), - }, - ); - - expect(formData).toBeInstanceOf(FormData); - - // $FlowExpectedError[incompatible-call]: Flow knows it could be a string as well but we know it's a FormData type - expect(serializeFormData(formData)).toMatchInlineSnapshot(` -{ - "bar": File {}, - "foo": File {}, - "query": "{__typename}", - "variables": "{"bbb":222}", -} -`); -}); - -it('returns request body with uploadables - persistent queries', () => { - const formData = getRequestBody( - { - id: '1234567890', - }, - {}, // variables - { - foo: new File(['foo'], 'foo.txt'), - bar: new File(['bar'], 'bar.txt'), - }, - ); - - expect(formData).toBeInstanceOf(FormData); - - // $FlowExpectedError[incompatible-call]: Flow knows it could be a string as well but we know it's a FormData type - expect(serializeFormData(formData)).toMatchInlineSnapshot(` -{ - "bar": File {}, - "documentId": "1234567890", - "foo": File {}, - "variables": "{}", -} -`); -}); diff --git a/src/relay/src/internal/__tests__/helpers.handleData.test.js b/src/relay/src/internal/__tests__/helpers.handleData.test.js deleted file mode 100644 index 2b412a9f39..0000000000 --- a/src/relay/src/internal/__tests__/helpers.handleData.test.js +++ /dev/null @@ -1,57 +0,0 @@ -// @flow strict-local - -import { handleData } from '../helpers'; - -/* $FlowFixMe[underconstrained-implicit-instantiation] This comment suppresses - * an error when upgrading Flow to version 0.204.1. To see the error delete - * this comment and run Flow. */ -const jsonMock = jest.fn(); -/* $FlowFixMe[underconstrained-implicit-instantiation] This comment suppresses - * an error when upgrading Flow to version 0.204.1. To see the error delete - * this comment and run Flow. */ -const textMock = jest.fn(); - -const createResponse = (getMockFunction: JestMockFn<$FlowFixMe, $FlowFixMe>) => ({ - headers: { - get: getMockFunction, - }, - json: jsonMock, - text: textMock, -}); - -beforeEach(() => { - jest.resetAllMocks(); -}); - -it('calls "text" method by default', () => { - /* $FlowFixMe[underconstrained-implicit-instantiation] This comment - * suppresses an error when upgrading Flow to version 0.204.1. To see the - * error delete this comment and run Flow. */ - const headersGetMock = jest.fn(); - const response = createResponse(headersGetMock); - - // $FlowExpectedError[incompatible-call]: incomplete Response object for testing purposes only - /* $FlowFixMe[unused-promise] This comment suppresses an error when upgrading - * Flow to version 0.201.0. To see the error delete this comment and run - * Flow. */ - handleData(response); - - expect(headersGetMock).toHaveBeenCalledWith('content-type'); - expect(jsonMock).not.toHaveBeenCalled(); - expect(textMock).toHaveBeenCalledTimes(1); -}); - -it('calls "json" method when header "content-type" with value "application/json" has been returned', () => { - const headersGetMock = jest.fn().mockImplementation(() => 'application/json'); - const response = createResponse(headersGetMock); - - // $FlowExpectedError[incompatible-call]: incomplete Response object for testing purposes only - /* $FlowFixMe[unused-promise] This comment suppresses an error when upgrading - * Flow to version 0.201.0. To see the error delete this comment and run - * Flow. */ - handleData(response); - - expect(headersGetMock).toHaveBeenCalledWith('content-type'); - expect(jsonMock).toHaveBeenCalledTimes(1); - expect(textMock).not.toHaveBeenCalled(); -}); diff --git a/src/relay/src/internal/createRelayStore.js b/src/relay/src/internal/createRelayStore.js deleted file mode 100644 index 47613e9ed4..0000000000 --- a/src/relay/src/internal/createRelayStore.js +++ /dev/null @@ -1,20 +0,0 @@ -// @flow - -import { RecordSource, Store, type LogFunction, type OperationLoader } from 'relay-runtime'; -import type { GetDataID } from 'relay-runtime/store/RelayResponseNormalizer'; -import type { RecordSourceJSON, Scheduler } from 'relay-runtime/store/RelayStoreTypes'; - -type Options = { - gcScheduler?: ?Scheduler, - log?: ?LogFunction, - operationLoader?: ?OperationLoader, - getDataID?: ?GetDataID, - gcReleaseBufferSize?: ?number, - queryCacheExpirationTime?: ?number, - shouldProcessClientComponents?: ?boolean, -}; - -export default function createRelayStore(records: ?RecordSourceJSON, options?: Options): Store { - const source = records == null ? new RecordSource() : new RecordSource(records); - return new Store(source, options); -} diff --git a/src/relay/src/internal/createRequestHandler.js b/src/relay/src/internal/createRequestHandler.js deleted file mode 100644 index 19ad730bbe..0000000000 --- a/src/relay/src/internal/createRequestHandler.js +++ /dev/null @@ -1,71 +0,0 @@ -// @flow - -import { - Observable, - type CacheConfig, - type GraphQLResponse, - type UploadableMap, - type Variables, -} from 'relay-runtime'; - -/** - * A Sink is an object of methods provided by Observable during construction. - * The methods are to be called to trigger each event. It also contains a closed - * field to see if the resulting subscription has closed. - */ -type Sink = { - +next: (GraphQLResponse) => void, - +error: (Error, isUncaughtThrownError?: boolean) => void, - +complete: () => void, - +closed: boolean, -}; - -export default function createRequestHandler( - customFetcher: (...args: $ReadOnlyArray) => any, -): ( - requestNode: $FlowFixMe, - variables: Variables, - cacheConfig: CacheConfig, - uploadables: ?UploadableMap, -) => Observable { - return function handleRequest(requestNode, variables, cacheConfig, uploadables) { - let observable = Observable.create((sink: Sink) => { - customFetcher(requestNode, variables, uploadables) - .then((response) => { - if (response.errors) { - // There are several ways how to deal with the errors. We choose to always forward the - // response if possible (via `sink.next`). However, servers can also mark the error as - // being CRITICAL via `error.extensions.severity` in which case we try to halt the - // application by propagating the error via `sink.error`. - response.errors.forEach((error) => { - // See: https://github.com/facebook/relay/blob/db73f60fd42826c154353874e4bb1c54f0df1867/packages/relay-runtime/network/RelayNetworkTypes.js#L39 - if (error.extensions?.severity === 'CRITICAL') { - sink.error(new Error(error.message)); - } else { - // eslint-disable-next-line no-console - console.warn(error.message, error); - } - }); - } - sink.next(response); - }) - .catch((error) => { - sink.error(error); - }) - .then(() => { - sink.complete(); - }); - - return function cleanup() { - // noop, do anything here (called after sink.complete or when Relay unsubscribes) - }; - }); - - // Support for `@live_query(polling_interval: 500)` directive: - if (requestNode?.metadata?.live != null) { - observable = observable.poll(requestNode.metadata.live.polling_interval); - } - - return observable; - }; -} diff --git a/src/relay/src/internal/helpers.js b/src/relay/src/internal/helpers.js deleted file mode 100644 index 90166e92cd..0000000000 --- a/src/relay/src/internal/helpers.js +++ /dev/null @@ -1,85 +0,0 @@ -// @flow strict-local - -import type { UploadableMap, Variables } from 'relay-runtime'; - -export const isMutation = (request: $FlowFixMe): boolean => { - return request.operationKind === 'mutation'; -}; - -export const isQuery = (request: $FlowFixMe): boolean => { - return request.operationKind === 'query'; -}; - -export const forceFetch = (cacheConfig: { +force?: ?boolean }): boolean => { - return !!(cacheConfig && cacheConfig.force); -}; - -export const handleData = (response: Response): Promise<$FlowFixMe> | Promise => { - const contentType = response.headers.get('content-type'); - if (contentType != null && contentType.indexOf('application/json') !== -1) { - return response.json(); - } - return response.text(); -}; - -function getRequestBodyWithUploadables( - request: $FlowFixMe, - variables: Variables, - uploadables: UploadableMap, -): FormData { - const formData = new FormData(); - if (__DEV__ && request.text != null) { - formData.append('query', request.text); - } else if (request.id != null) { - formData.append('documentId', request.id); - } else { - formData.append('query', request.text); - } - formData.append('variables', JSON.stringify(variables)); - - Object.keys(uploadables).forEach((key) => { - /* $FlowFixMe[method-unbinding] This comment suppresses an error when - * upgrading Flow to version 0.153.0. To see the error delete this comment - * and run Flow. */ - if (Object.prototype.hasOwnProperty.call(uploadables, key)) { - formData.append(key, uploadables[key]); - } - }); - - return formData; -} - -function getRequestBodyWithoutUplodables(request: $FlowFixMe, variables: Variables): string { - let body = {}; - if (__DEV__ && request.text != null) { - body = { query: request.text, variables }; - } else if (request.id != null) { - body = { documentId: request.id, variables }; - } else { - body = { query: request.text, variables }; - } - return JSON.stringify(body); -} - -export function getRequestBody( - request: $FlowFixMe, - variables: Variables, - uploadables: ?UploadableMap, -): string | FormData { - if (uploadables) { - return getRequestBodyWithUploadables(request, variables, uploadables); - } - return getRequestBodyWithoutUplodables(request, variables); -} - -export const getHeaders = (uploadables: ?UploadableMap): { +[string]: string } => { - if (uploadables) { - return { - Accept: '*/*', - }; - } - return { - 'Accept': 'application/json', - 'Content-type': 'application/json', - }; -}; diff --git a/src/relay/src/useLazyLoadQuery.js b/src/relay/src/useLazyLoadQuery.js deleted file mode 100644 index 041ce838ac..0000000000 --- a/src/relay/src/useLazyLoadQuery.js +++ /dev/null @@ -1,19 +0,0 @@ -// @flow - -import { useLazyLoadQuery as _useLazyLoadQuery } from 'react-relay'; -import type { CacheConfig, FetchPolicy, Query, RenderPolicy, Variables } from 'relay-runtime'; - -// The Flow types should be almost identical except we allow skipping variables. -export default function useLazyLoadQuery( - gqlQuery: Query, - variables?: TVariables, - options?: { - fetchKey?: string | number, - fetchPolicy?: FetchPolicy, - networkCacheConfig?: CacheConfig, - UNSTABLE_renderPolicy?: RenderPolicy, - }, -): TData { - const emptyVariables = (({}: any): TVariables); // TODO: how to do this properly? - return _useLazyLoadQuery(gqlQuery, variables ?? emptyVariables, options); -} diff --git a/src/relay/src/useMutation.js b/src/relay/src/useMutation.js deleted file mode 100644 index cf0fa1605c..0000000000 --- a/src/relay/src/useMutation.js +++ /dev/null @@ -1,53 +0,0 @@ -// @flow - -import { useMutation as _useMutation } from 'react-relay'; -import type { - DeclarativeMutationConfig, - Disposable, - Mutation, - PayloadError, - SelectorStoreUpdater, - UploadableMap, - Variables, -} from 'relay-runtime'; - -type HookMutationConfig = { - // This config is essentially `MutationConfig` type except there are some small differences - // to make the hook interface more friendly. Feel free to expand it as needed. - +onCompleted: (response: TData, errors: ?$ReadOnlyArray) => void, - +variables?: TVariables, - +onError?: (error: Error) => void, - +onUnsubscribe?: ?() => void, - +optimisticResponse?: TRawResponse, - +optimisticUpdater?: ?SelectorStoreUpdater, - +updater?: ?SelectorStoreUpdater, - +configs?: Array, - +uploadables?: UploadableMap, -}; - -/** - * Usage: - * - * ```js - * const AddCommentMutation = graphql`mutation { ... }`; - * const [addComment, isCommentPending] = useMutation(AddCommentMutation); - * - * const disposable = addComment({ variables: { ... } }); - * ``` - */ -export default function useMutation( - mutation: Mutation, -): [(HookMutationConfig) => Disposable, boolean] { - const [commit, isMutationInFlight] = _useMutation(mutation); - - // this makes the commit more friendly in terms of DX - const modifiedCommit = (config: HookMutationConfig) => { - const emptyVariables = (({}: any): TVariables); // TODO: how to do this properly? - return commit({ - ...config, - variables: config.variables ?? emptyVariables, - }); - }; - - return [modifiedCommit, isMutationInFlight]; -} diff --git a/yarn.lock b/yarn.lock index acfe541c42..73520de7d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -211,27 +211,6 @@ __metadata: languageName: unknown linkType: soft -"@adeira/relay@workspace:src/relay": - version: 0.0.0-use.local - resolution: "@adeira/relay@workspace:src/relay" - dependencies: - "@adeira/js": "npm:^2.1.1" - "@babel/runtime": "npm:^7.26.0" - babel-plugin-relay: "npm:^16.2.0" - react: "npm:^18.3.1" - react-relay: "npm:^16.2.0" - react-test-renderer: "npm:^18.3.1" - relay-compiler: "npm:^16.2.0" - relay-runtime: "npm:^16.2.0" - relay-test-utils: "npm:^16.2.0" - peerDependencies: - graphql: ^16.9.0 - react: ^18.3.1 - bin: - adeira-relay-compiler: ./bin/compiler.js - languageName: unknown - linkType: soft - "@adeira/rossum-sa-extension@workspace:src/rossum-sa-extension": version: 0.0.0-use.local resolution: "@adeira/rossum-sa-extension@workspace:src/rossum-sa-extension" @@ -1657,7 +1636,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.4": +"@babel/runtime@npm:^7.16.3, @babel/runtime@npm:^7.26.0, @babel/runtime@npm:^7.8.4": version: 7.26.0 resolution: "@babel/runtime@npm:7.26.0" dependencies: @@ -2753,13 +2732,6 @@ __metadata: languageName: node linkType: hard -"@types/parse-json@npm:^4.0.0": - version: 4.0.0 - resolution: "@types/parse-json@npm:4.0.0" - checksum: 10c0/1d3012ab2fcdad1ba313e1d065b737578f6506c8958e2a7a5bdbdef517c7e930796cb1599ee067d5dee942fb3a764df64b5eef7e9ae98548d776e86dcffba985 - languageName: node - linkType: hard - "@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.8": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" @@ -3361,13 +3333,6 @@ __metadata: languageName: node linkType: hard -"asap@npm:~2.0.3": - version: 2.0.6 - resolution: "asap@npm:2.0.6" - checksum: 10c0/c6d5e39fe1f15e4b87677460bd66b66050cd14c772269cee6688824c1410a08ab20254bb6784f9afb75af9144a9f9a7692d49547f4d19d715aeb7c0318f3136d - languageName: node - linkType: hard - "asn1@npm:~0.2.3": version: 0.2.4 resolution: "asn1@npm:0.2.4" @@ -3490,17 +3455,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-macros@npm:^2.0.0": - version: 2.8.0 - resolution: "babel-plugin-macros@npm:2.8.0" - dependencies: - "@babel/runtime": "npm:^7.7.2" - cosmiconfig: "npm:^6.0.0" - resolve: "npm:^1.12.0" - checksum: 10c0/9a101e2844a800e65662b2a8d0758bdbbe500ae02d68ef6f3466ead7eaa1350e3872b97014b20bf6f3a1a46b3c9613dfac7578af6f6ae6d4eccbd68ad7b6f228 - languageName: node - linkType: hard - "babel-plugin-polyfill-corejs2@npm:^0.4.10": version: 0.4.10 resolution: "babel-plugin-polyfill-corejs2@npm:0.4.10" @@ -3537,17 +3491,6 @@ __metadata: languageName: node linkType: hard -"babel-plugin-relay@npm:^16.2.0": - version: 16.2.0 - resolution: "babel-plugin-relay@npm:16.2.0" - dependencies: - babel-plugin-macros: "npm:^2.0.0" - cosmiconfig: "npm:^5.0.5" - graphql: "npm:15.3.0" - checksum: 10c0/4b19921e9d418e1609ad839a4f1bbe590084f0052f4d94f910894d4fad4755133d38077cfaa294933463119027d02d4635d43ac9d4a85e97f845239f913c7d8d - languageName: node - linkType: hard - "babel-plugin-syntax-hermes-parser@npm:^0.25.1": version: 0.25.1 resolution: "babel-plugin-syntax-hermes-parser@npm:0.25.1" @@ -3782,31 +3725,6 @@ __metadata: languageName: node linkType: hard -"caller-callsite@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-callsite@npm:2.0.0" - dependencies: - callsites: "npm:^2.0.0" - checksum: 10c0/a00ca91280e10ee2321de21dda6c168e427df7a63aeaca027ea45e3e466ac5e1a5054199f6547ba1d5a513d3b6b5933457266daaa47f8857fb532a343ee6b5e1 - languageName: node - linkType: hard - -"caller-path@npm:^2.0.0": - version: 2.0.0 - resolution: "caller-path@npm:2.0.0" - dependencies: - caller-callsite: "npm:^2.0.0" - checksum: 10c0/029b5b2c557d831216305c3218e9ff30fa668be31d58dd08088f74c8eabc8362c303e0908b3a93abb25ba10e3a5bfc9cff5eb7fab6ab9cf820e3b160ccb67581 - languageName: node - linkType: hard - -"callsites@npm:^2.0.0": - version: 2.0.0 - resolution: "callsites@npm:2.0.0" - checksum: 10c0/13bff4fee946e6020b37e76284e95e24aa239c9e34ac4f3451e4c5330fca6f2f962e1d1ab69e4da7940e1fce135107a2b2b98c01d62ea33144350fc89dc5494e - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -4176,31 +4094,6 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^5.0.5": - version: 5.2.1 - resolution: "cosmiconfig@npm:5.2.1" - dependencies: - import-fresh: "npm:^2.0.0" - is-directory: "npm:^0.3.1" - js-yaml: "npm:^3.13.1" - parse-json: "npm:^4.0.0" - checksum: 10c0/ae9ba309cdbb42d0c9d63dad5c1dfa1c56bb8f818cb8633eea14fd2dbdc9f33393b77658ba96fdabda497bc943afed8c3371d1222afe613c518ba676fa624645 - languageName: node - linkType: hard - -"cosmiconfig@npm:^6.0.0": - version: 6.0.0 - resolution: "cosmiconfig@npm:6.0.0" - dependencies: - "@types/parse-json": "npm:^4.0.0" - import-fresh: "npm:^3.1.0" - parse-json: "npm:^5.0.0" - path-type: "npm:^4.0.0" - yaml: "npm:^1.7.2" - checksum: 10c0/666ed8732d0bf7d7fe6f8516c8ee6041e0622032e8fa26201577b883d2767ad105d03f38b34b93d1f02f26b22a89e7bab4443b9d2e7f931f48d0e944ffa038b5 - languageName: node - linkType: hard - "cosmiconfig@npm:^8.1.3": version: 8.3.6 resolution: "cosmiconfig@npm:8.3.6" @@ -4235,15 +4128,6 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.5": - version: 3.1.5 - resolution: "cross-fetch@npm:3.1.5" - dependencies: - node-fetch: "npm:2.6.7" - checksum: 10c0/29b457f8df11b46b8388a53c947de80bfe04e6466a59c1628c9870b48505b90ec1d28a05b543a0247416a99f1cfe147d1efe373afdeb46a192334ba5fe91b871 - languageName: node - linkType: hard - "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.5 resolution: "cross-spawn@npm:7.0.5" @@ -5513,28 +5397,6 @@ __metadata: languageName: node linkType: hard -"fbjs-css-vars@npm:^1.0.0": - version: 1.0.2 - resolution: "fbjs-css-vars@npm:1.0.2" - checksum: 10c0/dfb64116b125a64abecca9e31477b5edb9a2332c5ffe74326fe36e0a72eef7fc8a49b86adf36c2c293078d79f4524f35e80f5e62546395f53fb7c9e69821f54f - languageName: node - linkType: hard - -"fbjs@npm:^3.0.2": - version: 3.0.4 - resolution: "fbjs@npm:3.0.4" - dependencies: - cross-fetch: "npm:^3.1.5" - fbjs-css-vars: "npm:^1.0.0" - loose-envify: "npm:^1.0.0" - object-assign: "npm:^4.1.0" - promise: "npm:^7.1.1" - setimmediate: "npm:^1.0.5" - ua-parser-js: "npm:^0.7.30" - checksum: 10c0/6c605d038d6852f0199a333e0b7f1f3e2602eebd0b815fba505f641912610007a0a8419222909e17ad0e07365d3b8a0bf45cacf9b43366dde0e95e5ced251632 - languageName: node - linkType: hard - "file-entry-cache@npm:^6.0.1": version: 6.0.1 resolution: "file-entry-cache@npm:6.0.1" @@ -6052,13 +5914,6 @@ __metadata: languageName: node linkType: hard -"graphql@npm:15.3.0": - version: 15.3.0 - resolution: "graphql@npm:15.3.0" - checksum: 10c0/b75622aad9aa5436154d5c6b7a082cf3266654d779fb4f7ba3919f1b96626bf89426307e682cb9b88a0427c13cfd0d10ac0e12315719703e431297184fdd67aa - languageName: node - linkType: hard - "graphql@npm:^14.0.0 || ^15.0.0": version: 15.8.0 resolution: "graphql@npm:15.8.0" @@ -6339,17 +6194,7 @@ __metadata: languageName: node linkType: hard -"import-fresh@npm:^2.0.0": - version: 2.0.0 - resolution: "import-fresh@npm:2.0.0" - dependencies: - caller-path: "npm:^2.0.0" - resolve-from: "npm:^3.0.0" - checksum: 10c0/116c55ee5215a7839062285b60df85dbedde084c02111dc58c1b9d03ff7876627059f4beb16cdc090a3db21fea9022003402aa782139dc8d6302589038030504 - languageName: node - linkType: hard - -"import-fresh@npm:^3.1.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": +"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" dependencies: @@ -6420,15 +6265,6 @@ __metadata: languageName: node linkType: hard -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc - languageName: node - linkType: hard - "ip@npm:^2.0.0": version: 2.0.1 resolution: "ip@npm:2.0.1" @@ -6532,13 +6368,6 @@ __metadata: languageName: node linkType: hard -"is-directory@npm:^0.3.1": - version: 0.3.1 - resolution: "is-directory@npm:0.3.1" - checksum: 10c0/1c39c7d1753b04e9483b89fb88908b8137ab4743b6f481947e97ccf93ecb384a814c8d3f0b95b082b149c5aa19c3e9e4464e2791d95174bce95998c26bb1974b - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -7704,7 +7533,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.4.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -8131,20 +7960,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:2.6.7": - version: 2.6.7 - resolution: "node-fetch@npm:2.6.7" - dependencies: - whatwg-url: "npm:^5.0.0" - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - checksum: 10c0/fcae80f5ac52fbf5012f5e19df2bd3915e67d3b3ad51cb5942943df2238d32ba15890fecabd0e166876a9f98a581ab50f3f10eb942b09405c49ef8da36b826c7 - languageName: node - linkType: hard - "node-gyp@npm:^10.0.0": version: 10.0.0 resolution: "node-gyp@npm:10.0.0" @@ -8403,13 +8218,6 @@ __metadata: languageName: node linkType: hard -"nullthrows@npm:^1.1.1": - version: 1.1.1 - resolution: "nullthrows@npm:1.1.1" - checksum: 10c0/56f34bd7c3dcb3bd23481a277fa22918120459d3e9d95ca72976c72e9cac33a97483f0b95fc420e2eb546b9fe6db398273aba9a938650cdb8c98ee8f159dcb30 - languageName: node - linkType: hard - "number-is-nan@npm:^1.0.0": version: 1.0.1 resolution: "number-is-nan@npm:1.0.1" @@ -8718,7 +8526,7 @@ __metadata: languageName: node linkType: hard -"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0": +"parse-json@npm:^5.2.0": version: 5.2.0 resolution: "parse-json@npm:5.2.0" dependencies: @@ -9032,15 +8840,6 @@ __metadata: languageName: node linkType: hard -"promise@npm:^7.1.1": - version: 7.3.1 - resolution: "promise@npm:7.3.1" - dependencies: - asap: "npm:~2.0.3" - checksum: 10c0/742e5c0cc646af1f0746963b8776299701ad561ce2c70b49365d62c8db8ea3681b0a1bf0d4e2fe07910bf72f02d39e51e8e73dc8d7503c3501206ac908be107f - languageName: node - linkType: hard - "prompts@npm:^2.0.1": version: 2.4.2 resolution: "prompts@npm:2.4.2" @@ -9097,13 +8896,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0 || ^17.0.0 || ^18.0.0, react-is@npm:^18.0.0, react-is@npm:^18.3.1": - version: 18.3.1 - resolution: "react-is@npm:18.3.1" - checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 - languageName: node - linkType: hard - "react-is@npm:^16.13.1": version: 16.13.1 resolution: "react-is@npm:16.13.1" @@ -9111,52 +8903,10 @@ __metadata: languageName: node linkType: hard -"react-relay@npm:^16.2.0": - version: 16.2.0 - resolution: "react-relay@npm:16.2.0" - dependencies: - "@babel/runtime": "npm:^7.0.0" - fbjs: "npm:^3.0.2" - invariant: "npm:^2.2.4" - nullthrows: "npm:^1.1.1" - relay-runtime: "npm:16.2.0" - peerDependencies: - react: ^16.9.0 || ^17 || ^18 - checksum: 10c0/d68f2626d71ab1486644b7bfdf73d0bcac6e06e37e5b3f57eac273ebb7c560d9d936ca54aa9f18677b10f54fe541d060d9a0d93cc96cef0a9cd11ea6ed409ff0 - languageName: node - linkType: hard - -"react-shallow-renderer@npm:^16.15.0": - version: 16.15.0 - resolution: "react-shallow-renderer@npm:16.15.0" - dependencies: - object-assign: "npm:^4.1.1" - react-is: "npm:^16.12.0 || ^17.0.0 || ^18.0.0" - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/c194d741792e86043a4ae272f7353c1cb9412bc649945c4220c6a101a6ea5410cceb3d65d5a4d750f11a24f7426e8eec7977e8a4e3ad5d3ee235ca2b18166fa8 - languageName: node - linkType: hard - -"react-test-renderer@npm:^18.3.1": +"react-is@npm:^18.0.0": version: 18.3.1 - resolution: "react-test-renderer@npm:18.3.1" - dependencies: - react-is: "npm:^18.3.1" - react-shallow-renderer: "npm:^16.15.0" - scheduler: "npm:^0.23.2" - peerDependencies: - react: ^18.3.1 - checksum: 10c0/c633558ef9af33bc68f0c4dbb5163a004c4fb9eade7bd0a7cfc0355fb367f36bd9d96533c90b7e85a146be6c525113a15f58683d269e0177ad77e2b04d4fe51c - languageName: node - linkType: hard - -"react@npm:^18.3.1": - version: 18.3.1 - resolution: "react@npm:18.3.1" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/283e8c5efcf37802c9d1ce767f302dd569dd97a70d9bb8c7be79a789b9902451e0d16334b05d73299b20f048cbc3c7d288bbbde10b701fa194e2089c237dbea3 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 languageName: node linkType: hard @@ -9302,38 +9052,6 @@ __metadata: languageName: node linkType: hard -"relay-compiler@npm:^16.2.0": - version: 16.2.0 - resolution: "relay-compiler@npm:16.2.0" - bin: - relay-compiler: cli.js - checksum: 10c0/8d7a681dc0e8113f347fd38d6834893dd2e24f502dc480f0239c50122eac0029dbe2b947d3f8d655804df70a87a8a676df090508ee378b50a6b8d9ff75727d33 - languageName: node - linkType: hard - -"relay-runtime@npm:16.2.0, relay-runtime@npm:^16.2.0": - version: 16.2.0 - resolution: "relay-runtime@npm:16.2.0" - dependencies: - "@babel/runtime": "npm:^7.0.0" - fbjs: "npm:^3.0.2" - invariant: "npm:^2.2.4" - checksum: 10c0/770dc36203a3d0a7c285ac446ac601cfa8a87da2af8ee9a9cc3c5533c506655e457b276bc40c6e0f274556dce258b2407a5d17e6582bbc9902af5f1dd9081c3a - languageName: node - linkType: hard - -"relay-test-utils@npm:^16.2.0": - version: 16.2.0 - resolution: "relay-test-utils@npm:16.2.0" - dependencies: - "@babel/runtime": "npm:^7.0.0" - fbjs: "npm:^3.0.2" - invariant: "npm:^2.2.4" - relay-runtime: "npm:16.2.0" - checksum: 10c0/8a5c258dd363158eda608256b78261cb359c4038c3140b327ea9ba06d9f184616e849818b7264c6338eeaedeaffe1d1339738d84f1bfda49a96c87e0eed64617 - languageName: node - linkType: hard - "request@npm:^2.74.0": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -9392,13 +9110,6 @@ __metadata: languageName: node linkType: hard -"resolve-from@npm:^3.0.0": - version: 3.0.0 - resolution: "resolve-from@npm:3.0.0" - checksum: 10c0/24affcf8e81f4c62f0dcabc774afe0e19c1f38e34e43daac0ddb409d79435fc3037f612b0cc129178b8c220442c3babd673e88e870d27215c99454566e770ebc - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -9427,7 +9138,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.10.0, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": +"resolve@npm:^1.10.0, resolve@npm:^1.14.2, resolve@npm:^1.20.0, resolve@npm:^1.22.4": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -9453,7 +9164,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.12.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -9606,15 +9317,6 @@ __metadata: languageName: node linkType: hard -"scheduler@npm:^0.23.2": - version: 0.23.2 - resolution: "scheduler@npm:0.23.2" - dependencies: - loose-envify: "npm:^1.1.0" - checksum: 10c0/26383305e249651d4c58e6705d5f8425f153211aef95f15161c151f7b8de885f24751b377e4a0b3dd42cce09aad3f87a61dab7636859c0d89b7daf1a1e2a5c78 - languageName: node - linkType: hard - "schema-utils@npm:^4.0.0": version: 4.2.0 resolution: "schema-utils@npm:4.2.0" @@ -9698,13 +9400,6 @@ __metadata: languageName: node linkType: hard -"setimmediate@npm:^1.0.5": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: 10c0/5bae81bfdbfbd0ce992893286d49c9693c82b1bcc00dcaaf3a09c8f428fdeacf4190c013598b81875dfac2b08a572422db7df779a99332d0fce186d15a3e4d49 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -10361,13 +10056,6 @@ __metadata: languageName: node linkType: hard -"tr46@npm:~0.0.3": - version: 0.0.3 - resolution: "tr46@npm:0.0.3" - checksum: 10c0/047cb209a6b60c742f05c9d3ace8fa510bff609995c129a37ace03476a9b12db4dbf975e74600830ef0796e18882b2381fb5fb1f6b4f96b832c374de3ab91a11 - languageName: node - linkType: hard - "treeverse@npm:^3.0.0": version: 3.0.0 resolution: "treeverse@npm:3.0.0" @@ -10537,13 +10225,6 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:^0.7.30": - version: 0.7.33 - resolution: "ua-parser-js@npm:0.7.33" - checksum: 10c0/d58bf54c91e3e80e6e086b6215fa15266791e23e6e403039179c020129940168634a5b931f65ce70c6550b05d0d62c7c944bf7378b6b42133cd4a7ccb07f1948 - languageName: node - linkType: hard - "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -10778,13 +10459,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^3.0.0": - version: 3.0.1 - resolution: "webidl-conversions@npm:3.0.1" - checksum: 10c0/5612d5f3e54760a797052eb4927f0ddc01383550f542ccd33d5238cfd65aeed392a45ad38364970d0a0f4fea32e1f4d231b3d8dac4a3bdd385e5cf802ae097db - languageName: node - linkType: hard - "webidl-conversions@npm:^7.0.0": version: 7.0.0 resolution: "webidl-conversions@npm:7.0.0" @@ -10818,16 +10492,6 @@ __metadata: languageName: node linkType: hard -"whatwg-url@npm:^5.0.0": - version: 5.0.0 - resolution: "whatwg-url@npm:5.0.0" - dependencies: - tr46: "npm:~0.0.3" - webidl-conversions: "npm:^3.0.0" - checksum: 10c0/1588bed84d10b72d5eec1d0faa0722ba1962f1821e7539c535558fb5398d223b0c50d8acab950b8c488b4ba69043fd833cc2697056b167d8ad46fac3995a55d5 - languageName: node - linkType: hard - "which-boxed-primitive@npm:^1.0.2": version: 1.0.2 resolution: "which-boxed-primitive@npm:1.0.2" @@ -11023,13 +10687,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^1.7.2": - version: 1.10.2 - resolution: "yaml@npm:1.10.2" - checksum: 10c0/5c28b9eb7adc46544f28d9a8d20c5b3cb1215a886609a2fd41f51628d8aaa5878ccd628b755dbcd29f6bb4921bd04ffbc6dcc370689bb96e594e2f9813d2605f - languageName: node - linkType: hard - "yargs-parser@npm:^21.0.0": version: 21.0.0 resolution: "yargs-parser@npm:21.0.0"