diff --git a/CHANGELOG.md b/CHANGELOG.md
index aa6d8e6332b..32ed065312c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -53,8 +53,11 @@
- `QueryManager#startQuery`
- `ObservableQuery#currentResult`
-- `ApolloClient` is now only available as a named export. The default
- `ApolloClient` export has been removed.
+- `ApolloClient` is now only available as a named export. The default `ApolloClient` export has been removed.
+ [@hwillson](https://github.com/hwillson) in [#5425](https://github.com/apollographql/apollo-client/pull/5425)
+
+- Utilities that were previously externally available through the `apollo-utilities` package, are now internal only.
+ [@hwillson](https://github.com/hwillson) in [#TODO](https://github.com/apollographql/apollo-client/pull/TODO)
## Apollo Client (2.6.4)
diff --git a/config/jest.config.js b/config/jest.config.js
index 366fb5b1fe1..94c8fa784c9 100644
--- a/config/jest.config.js
+++ b/config/jest.config.js
@@ -12,7 +12,8 @@ module.exports = {
testURL: 'http://localhost',
testPathIgnorePatterns: [
'/node_modules/',
- '/dist/'
+ '/dist/',
+ 'src/__tests__/utils'
],
modulePathIgnorePatterns: ['/dist/'],
setupFiles: ['/src/config/jest/setup.ts'],
diff --git a/config/rollup.config.js b/config/rollup.config.js
index 68b3ad8d549..fa6d55685cd 100644
--- a/config/rollup.config.js
+++ b/config/rollup.config.js
@@ -38,6 +38,12 @@ function prepareESM() {
format: 'esm',
sourcemap: true,
},
+ // The purpose of this job is to ensure each `./dist` ESM file is run
+ // through the `invariantPlugin`, with any resulting changes added
+ // directly back into each ESM file. By setting `preserveModules`
+ // to `true`, we're making sure Rollup doesn't attempt to create a single
+ // combined ESM bundle with the final result of running this job.
+ preserveModules: true,
plugins: [
nodeResolve(),
invariantPlugin({
diff --git a/package.json b/package.json
index 8c6ccdcbca8..56aca5ae6e4 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
{
"name": "apollo-client",
"path": "./dist/apollo-client.cjs.min.js",
- "maxSize": "24 kB"
+ "maxSize": "22.75 kB"
}
],
"peerDependencies": {
diff --git a/src/ApolloClient.ts b/src/ApolloClient.ts
index a8e4197e2de..e4da59452dd 100644
--- a/src/ApolloClient.ts
+++ b/src/ApolloClient.ts
@@ -1,13 +1,11 @@
import { ExecutionResult, DocumentNode } from 'graphql';
import { invariant, InvariantError } from 'ts-invariant';
-import {
- ApolloLink,
- FetchResult,
- GraphQLRequest,
- execute,
-} from './link/core';
-import { ApolloCache, DataProxy } from './cache/core';
+import { ApolloLink } from './link/core/ApolloLink';
+import { FetchResult, GraphQLRequest } from './link/core/types';
+import { execute } from './link/core/execute';
+import { ApolloCache } from './cache/core/cache';
+import { DataProxy } from './cache/core/types/DataProxy';
import { QueryManager } from './core/QueryManager';
import {
ApolloQueryResult,
@@ -16,7 +14,7 @@ import {
} from './core/types';
import { ObservableQuery } from './core/ObservableQuery';
import { LocalState, FragmentMatcher } from './core/LocalState';
-import { Observable } from './util/Observable';
+import { Observable } from './utilities/observables/Observable';
import {
QueryOptions,
WatchQueryOptions,
@@ -26,7 +24,8 @@ import {
} from './core/watchQueryOptions';
import { DataStore } from './data/store';
import { version } from './version';
-import { UriFunction, HttpLink } from './link/http';
+import { HttpLink } from './link/http/HttpLink';
+import { UriFunction } from './link/http/selectHttpOptionsAndBody';
export interface DefaultOptions {
watchQuery?: Partial;
diff --git a/src/__mocks__/mockLinks.ts b/src/__mocks__/mockLinks.ts
index 46a05a82537..dc3c271b15f 100644
--- a/src/__mocks__/mockLinks.ts
+++ b/src/__mocks__/mockLinks.ts
@@ -1,12 +1,12 @@
import { print } from 'graphql/language/printer';
-import { Observable } from '../util/Observable';
+import { Observable } from '../utilities/observables/Observable';
+import { ApolloLink } from '../link/core/ApolloLink';
import {
Operation,
- ApolloLink,
FetchResult,
GraphQLRequest,
-} from '../link/core';
+} from '../link/core/types';
interface MockApolloLink extends ApolloLink {
operation?: Operation;
diff --git a/src/__mocks__/mockQueryManager.ts b/src/__mocks__/mockQueryManager.ts
index 646d2fafbf1..69fa7316f37 100644
--- a/src/__mocks__/mockQueryManager.ts
+++ b/src/__mocks__/mockQueryManager.ts
@@ -3,7 +3,7 @@ import { QueryManager } from '../core/QueryManager';
import { mockSingleLink, MockedResponse } from './mockLinks';
import { DataStore } from '../data/store';
-import { InMemoryCache } from '../cache/inmemory';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
// Helper method for the tests that construct a query manager out of a
// a list of mocked responses for a mocked network interface.
diff --git a/src/__tests__/ApolloClient.ts b/src/__tests__/ApolloClient.ts
index ca61dd25c5e..88ac0633b7e 100644
--- a/src/__tests__/ApolloClient.ts
+++ b/src/__tests__/ApolloClient.ts
@@ -1,11 +1,12 @@
import gql from 'graphql-tag';
-import { Observable } from '../util/Observable';
-import { ApolloLink } from '../link/core';
-import { HttpLink } from '../link/http';
-import { InMemoryCache, makeReference } from '../cache/inmemory';
-import { stripSymbols } from '../utilities';
-import { withWarning } from '../util/wrap';
+import { Observable } from '../utilities/observables/Observable';
+import { ApolloLink } from '../link/core/ApolloLink';
+import { HttpLink } from '../link/http/HttpLink';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
+import { makeReference } from '../cache/inmemory/helpers';
+import { stripSymbols } from './utils/stripSymbols';
+import { withWarning } from './utils/wrap';
import { ApolloClient } from '../';
import { DefaultOptions } from '../ApolloClient';
import { FetchPolicy, QueryOptions } from '../core/watchQueryOptions';
diff --git a/src/__tests__/client.ts b/src/__tests__/client.ts
index 1c850151269..5d84e40c56c 100644
--- a/src/__tests__/client.ts
+++ b/src/__tests__/client.ts
@@ -2,15 +2,16 @@ import { cloneDeep, assign } from 'lodash';
import { GraphQLError, ExecutionResult, DocumentNode } from 'graphql';
import gql from 'graphql-tag';
-import { Observable } from '../util/Observable';
-import { ApolloLink } from '../link/core';
-import { InMemoryCache, PossibleTypesMap } from '../cache/inmemory';
-import { stripSymbols } from '../utilities';
+import { Observable } from '../utilities/observables/Observable';
+import { ApolloLink } from '../link/core/ApolloLink';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
+import { PossibleTypesMap } from '../cache/inmemory/types';
+import { stripSymbols } from './utils/stripSymbols';
import { WatchQueryOptions, FetchPolicy } from '../core/watchQueryOptions';
import { ApolloError } from '../errors/ApolloError';
import { ApolloClient } from '..';
-import subscribeAndCount from '../util/subscribeAndCount';
-import { withWarning } from '../util/wrap';
+import subscribeAndCount from './utils/subscribeAndCount';
+import { withWarning } from './utils/wrap';
import { mockSingleLink } from '../__mocks__/mockLinks';
describe('client', () => {
diff --git a/src/__tests__/fetchMore.ts b/src/__tests__/fetchMore.ts
index 7a0198321c1..b07f95ae893 100644
--- a/src/__tests__/fetchMore.ts
+++ b/src/__tests__/fetchMore.ts
@@ -2,7 +2,7 @@ import { assign, cloneDeep } from 'lodash';
import gql from 'graphql-tag';
import { mockSingleLink } from '../__mocks__/mockLinks';
-import { InMemoryCache } from '../cache/inmemory';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
import { ApolloClient, NetworkStatus, ObservableQuery } from '../';
describe('updateQuery on a simple query', () => {
diff --git a/src/__tests__/graphqlSubscriptions.ts b/src/__tests__/graphqlSubscriptions.ts
index a07cfd8fd55..17dcc2c5215 100644
--- a/src/__tests__/graphqlSubscriptions.ts
+++ b/src/__tests__/graphqlSubscriptions.ts
@@ -1,7 +1,7 @@
import gql from 'graphql-tag';
import { mockObservableLink, MockedSubscription } from '../__mocks__/mockLinks';
-import { InMemoryCache } from '../cache/inmemory';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
import { ApolloClient } from '../';
import { QueryManager } from '../core/QueryManager';
import { DataStore } from '../data/store';
diff --git a/src/__tests__/local-state/export.ts b/src/__tests__/local-state/export.ts
index 80edce5cdf9..0238226bb4a 100644
--- a/src/__tests__/local-state/export.ts
+++ b/src/__tests__/local-state/export.ts
@@ -1,10 +1,10 @@
import gql from 'graphql-tag';
import { print } from 'graphql/language/printer';
-import { Observable } from '../../util/Observable';
-import { ApolloLink } from '../../link/core';
+import { Observable } from '../../utilities/observables/Observable';
+import { ApolloLink } from '../../link/core/ApolloLink';
import { ApolloClient } from '../..';
-import { InMemoryCache } from '../../cache/inmemory';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
describe('@client @export tests', () => {
it(
diff --git a/src/__tests__/local-state/general.ts b/src/__tests__/local-state/general.ts
index 9e081a23364..2cb016f66e0 100644
--- a/src/__tests__/local-state/general.ts
+++ b/src/__tests__/local-state/general.ts
@@ -2,12 +2,13 @@ import gql from 'graphql-tag';
import { DocumentNode, GraphQLError } from 'graphql';
import { introspectionQuery } from 'graphql/utilities';
-import { Observable } from '../../util/Observable';
-import { ApolloLink, Operation } from '../../link/core';
+import { Observable } from '../../utilities/observables/Observable';
+import { ApolloLink } from '../../link/core/ApolloLink';
+import { Operation } from '../../link/core/types';
import { ApolloClient } from '../..';
-import { ApolloCache } from '../../cache/core';
-import { InMemoryCache } from '../../cache/inmemory';
-import { hasDirectives } from '../../utilities';
+import { ApolloCache } from '../../cache/core/cache';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
+import { hasDirectives } from '../../utilities/graphql/directives';
describe('General functionality', () => {
it('should not impact normal non-@client use', () => {
diff --git a/src/__tests__/local-state/resolvers.ts b/src/__tests__/local-state/resolvers.ts
index 921d44cd06c..0ac027c72de 100644
--- a/src/__tests__/local-state/resolvers.ts
+++ b/src/__tests__/local-state/resolvers.ts
@@ -2,16 +2,15 @@ import gql from 'graphql-tag';
import { DocumentNode, ExecutionResult } from 'graphql';
import { assign } from 'lodash';
-import { Observable } from '../../util/Observable';
-import { ApolloLink } from '../../link/core';
+import { Observable, Observer } from '../../utilities/observables/Observable';
+import { ApolloLink } from '../../link/core/ApolloLink';
import { ApolloClient } from '../..';
import mockQueryManager from '../../__mocks__/mockQueryManager';
-import { Observer } from '../../util/Observable';
-import wrap from '../../util/wrap';
+import wrap from '../../__tests__/utils/wrap';
import { ApolloQueryResult, Resolvers } from '../../core/types';
import { WatchQueryOptions } from '../../core/watchQueryOptions';
import { LocalState } from '../../core/LocalState';
-import { InMemoryCache } from '../../cache/inmemory';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
// Helper method that sets up a mockQueryManager and then passes on the
// results to an observer.
diff --git a/src/__tests__/local-state/subscriptions.ts b/src/__tests__/local-state/subscriptions.ts
index 59b10b3d4fa..e7e18b8ed22 100644
--- a/src/__tests__/local-state/subscriptions.ts
+++ b/src/__tests__/local-state/subscriptions.ts
@@ -1,9 +1,9 @@
import gql from 'graphql-tag';
-import { Observable } from '../../util/Observable';
-import { ApolloLink } from '../../link/core';
+import { Observable } from '../../utilities/observables/Observable';
+import { ApolloLink } from '../../link/core/ApolloLink';
import { ApolloClient } from '../..';
-import { InMemoryCache } from '../../cache/inmemory';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
describe('Basic functionality', () => {
it('should not break subscriptions', done => {
diff --git a/src/__tests__/mutationResults.ts b/src/__tests__/mutationResults.ts
index fd443263232..24351bd9f9f 100644
--- a/src/__tests__/mutationResults.ts
+++ b/src/__tests__/mutationResults.ts
@@ -1,13 +1,12 @@
import { cloneDeep } from 'lodash';
import gql from 'graphql-tag';
-import { Observable } from '../util/Observable';
-import { ApolloLink } from '../link/core';
+import { Observable, Subscription } from '../utilities/observables/Observable';
+import { ApolloLink } from '../link/core/ApolloLink';
import { mockSingleLink } from '../__mocks__/mockLinks';
import { ApolloClient } from '..';
-import { InMemoryCache } from '../cache/inmemory';
-import { Subscription } from '../util/Observable';
-import { withWarning } from '../util/wrap';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
+import { withWarning } from './utils/wrap';
describe('mutation results', () => {
const query = gql`
diff --git a/src/__tests__/optimistic.ts b/src/__tests__/optimistic.ts
index 1ea3be3c1c7..ccb12a384ec 100644
--- a/src/__tests__/optimistic.ts
+++ b/src/__tests__/optimistic.ts
@@ -5,10 +5,12 @@ import gql from 'graphql-tag';
import { mockSingleLink } from '../__mocks__/mockLinks';
import { MutationQueryReducersMap } from '../core/types';
-import { Subscription } from '../util/Observable';
+import { Subscription } from '../utilities/observables/Observable';
import { ApolloClient } from '../';
-import { addTypenameToDocument, stripSymbols } from '../utilities';
-import { InMemoryCache, makeReference } from '../cache/inmemory';
+import { addTypenameToDocument } from '../utilities/graphql/transform';
+import { stripSymbols } from './utils/stripSymbols';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
+import { makeReference } from '../cache/inmemory/helpers';
describe('optimistic mutation results', () => {
const query = gql`
diff --git a/src/utilities/util/__tests__/stripSymbols.ts b/src/__tests__/stripSymbols.ts
similarity index 86%
rename from src/utilities/util/__tests__/stripSymbols.ts
rename to src/__tests__/stripSymbols.ts
index fd5594b89ef..7db611c1018 100644
--- a/src/utilities/util/__tests__/stripSymbols.ts
+++ b/src/__tests__/stripSymbols.ts
@@ -1,4 +1,4 @@
-import { stripSymbols } from '../stripSymbols';
+import { stripSymbols } from './utils/stripSymbols';
interface SymbolConstructor {
(description?: string | number): symbol;
diff --git a/src/__tests__/subscribeToMore.ts b/src/__tests__/subscribeToMore.ts
index e495bfdd6fc..b0056257e6f 100644
--- a/src/__tests__/subscribeToMore.ts
+++ b/src/__tests__/subscribeToMore.ts
@@ -1,11 +1,12 @@
import gql from 'graphql-tag';
import { DocumentNode, OperationDefinitionNode } from 'graphql';
-import { ApolloLink, Operation } from '../link/core';
+import { ApolloLink } from '../link/core/ApolloLink';
+import { Operation } from '../link/core/types';
import { mockSingleLink, mockObservableLink } from '../__mocks__/mockLinks';
import { ApolloClient } from '../';
-import { InMemoryCache } from '../cache/inmemory';
-import { stripSymbols } from '../utilities';
+import { InMemoryCache } from '../cache/inmemory/inMemoryCache';
+import { stripSymbols } from './utils/stripSymbols';
const isSub = (operation: Operation) =>
(operation.query as DocumentNode).definitions
diff --git a/src/util/observableToPromise.ts b/src/__tests__/utils/observableToPromise.ts
similarity index 93%
rename from src/util/observableToPromise.ts
rename to src/__tests__/utils/observableToPromise.ts
index 857f11c9455..6847ae29591 100644
--- a/src/util/observableToPromise.ts
+++ b/src/__tests__/utils/observableToPromise.ts
@@ -1,6 +1,6 @@
-import { ObservableQuery } from '../core/ObservableQuery';
-import { ApolloQueryResult } from '../core/types';
-import { Subscription } from '../util/Observable';
+import { ObservableQuery } from '../../core/ObservableQuery';
+import { ApolloQueryResult } from '../../core/types';
+import { Subscription } from '../../utilities/observables/Observable';
/**
*
diff --git a/src/utilities/util/stripSymbols.ts b/src/__tests__/utils/stripSymbols.ts
similarity index 100%
rename from src/utilities/util/stripSymbols.ts
rename to src/__tests__/utils/stripSymbols.ts
diff --git a/src/util/subscribeAndCount.ts b/src/__tests__/utils/subscribeAndCount.ts
similarity index 74%
rename from src/util/subscribeAndCount.ts
rename to src/__tests__/utils/subscribeAndCount.ts
index a68f589d545..22990d44bf4 100644
--- a/src/util/subscribeAndCount.ts
+++ b/src/__tests__/utils/subscribeAndCount.ts
@@ -1,7 +1,7 @@
-import { ObservableQuery } from '../core/ObservableQuery';
-import { ApolloQueryResult } from '../core/types';
-import { Subscription } from '../util/Observable';
-import { asyncMap } from './observables';
+import { ObservableQuery } from '../../core/ObservableQuery';
+import { ApolloQueryResult } from '../../core/types';
+import { Subscription } from '../../utilities/observables/Observable';
+import { asyncMap } from '../../utilities/observables/observables';
export default function subscribeAndCount(
done: jest.DoneCallback,
diff --git a/src/util/wrap.ts b/src/__tests__/utils/wrap.ts
similarity index 100%
rename from src/util/wrap.ts
rename to src/__tests__/utils/wrap.ts
diff --git a/src/cache/core/cache.ts b/src/cache/core/cache.ts
index 064fb31848a..bfb6512a442 100644
--- a/src/cache/core/cache.ts
+++ b/src/cache/core/cache.ts
@@ -1,7 +1,8 @@
import { DocumentNode } from 'graphql';
-import { getFragmentQueryDocument } from '../../utilities';
-import { DataProxy, Cache } from './types';
+import { getFragmentQueryDocument } from '../../utilities/graphql/fragments';
+import { DataProxy } from './types/DataProxy';
+import { Cache } from './types/Cache';
import { justTypenameQuery, queryFromPojo, fragmentFromPojo } from './utils';
export type Transaction = (c: ApolloCache) => void;
diff --git a/src/cache/core/index.ts b/src/cache/core/index.ts
deleted file mode 100644
index 18273b71d33..00000000000
--- a/src/cache/core/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './cache';
-export * from './types';
diff --git a/src/cache/core/types/index.ts b/src/cache/core/types/index.ts
deleted file mode 100644
index c44054d676f..00000000000
--- a/src/cache/core/types/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './DataProxy';
-export * from './Cache';
diff --git a/src/cache/inmemory/__tests__/cache.ts b/src/cache/inmemory/__tests__/cache.ts
index b7766b02926..f606dab4c4f 100644
--- a/src/cache/inmemory/__tests__/cache.ts
+++ b/src/cache/inmemory/__tests__/cache.ts
@@ -1,7 +1,8 @@
import gql, { disableFragmentWarnings } from 'graphql-tag';
-import { stripSymbols, cloneDeep } from '../../../utilities';
-import { InMemoryCache, InMemoryCacheConfig } from '..';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
+import { cloneDeep } from '../../../utilities/common/cloneDeep';
+import { InMemoryCache, InMemoryCacheConfig } from '../inMemoryCache';
import { makeReference } from '../helpers';
disableFragmentWarnings();
diff --git a/src/cache/inmemory/__tests__/readFromStore.ts b/src/cache/inmemory/__tests__/readFromStore.ts
index 641a6ac930b..73581240b03 100644
--- a/src/cache/inmemory/__tests__/readFromStore.ts
+++ b/src/cache/inmemory/__tests__/readFromStore.ts
@@ -1,8 +1,8 @@
import { assign, omit } from 'lodash';
import gql from 'graphql-tag';
-import { stripSymbols } from '../../../utilities';
-import { StoreObject } from '../';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
+import { StoreObject } from '../types';
import { StoreReader } from '../readFromStore';
import { defaultNormalizedCacheFactory } from '../entityCache';
import { withError } from './diffAgainstStore';
diff --git a/src/cache/inmemory/__tests__/roundtrip.ts b/src/cache/inmemory/__tests__/roundtrip.ts
index 7a6868e37e7..1044403ca12 100644
--- a/src/cache/inmemory/__tests__/roundtrip.ts
+++ b/src/cache/inmemory/__tests__/roundtrip.ts
@@ -4,7 +4,8 @@ import gql from 'graphql-tag';
import { withError } from './diffAgainstStore';
import { withWarning } from './writeToStore';
import { EntityCache } from '../entityCache';
-import { StoreReader, StoreWriter } from '../';
+import { StoreReader } from '../readFromStore';
+import { StoreWriter } from '../writeToStore';
function assertDeeplyFrozen(value: any, stack: any[] = []) {
if (value !== null && typeof value === 'object' && stack.indexOf(value) < 0) {
diff --git a/src/cache/inmemory/__tests__/writeToStore.ts b/src/cache/inmemory/__tests__/writeToStore.ts
index a2d3220f2a0..992b1442ee4 100644
--- a/src/cache/inmemory/__tests__/writeToStore.ts
+++ b/src/cache/inmemory/__tests__/writeToStore.ts
@@ -9,11 +9,9 @@ import {
} from 'graphql';
import gql from 'graphql-tag';
-import {
- storeKeyNameFromField,
- addTypenameToDocument,
- cloneDeep,
-} from '../../../utilities';
+import { storeKeyNameFromField } from '../../../utilities/graphql/storeUtils';
+import { addTypenameToDocument } from '../../../utilities/graphql/transform';
+import { cloneDeep } from '../../../utilities/common/cloneDeep';
import { StoreWriter } from '../writeToStore';
import { defaultNormalizedCacheFactory } from '../entityCache';
import { makeReference } from '../helpers';
diff --git a/src/cache/inmemory/inMemoryCache.ts b/src/cache/inmemory/inMemoryCache.ts
index 6db3cacfc6b..237bf38415a 100644
--- a/src/cache/inmemory/inMemoryCache.ts
+++ b/src/cache/inmemory/inMemoryCache.ts
@@ -5,8 +5,10 @@ import { DocumentNode } from 'graphql';
import { wrap } from 'optimism';
import { KeyTrie } from 'optimism';
-import { Cache, ApolloCache, Transaction } from '../core';
-import { addTypenameToDocument, canUseWeakMap } from '../../utilities';
+import { ApolloCache, Transaction } from '../core/cache';
+import { Cache } from '../core/types/Cache';
+import { addTypenameToDocument } from '../../utilities/graphql/transform';
+import { canUseWeakMap } from '../../utilities/common/canUse';
import {
ApolloReducerConfig,
NormalizedCacheObject,
diff --git a/src/cache/inmemory/index.ts b/src/cache/inmemory/index.ts
deleted file mode 100644
index 8852f12e962..00000000000
--- a/src/cache/inmemory/index.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-export {
- InMemoryCache,
- InMemoryCacheConfig,
- defaultDataIdFromObject,
-} from './inMemoryCache';
-
-export * from './readFromStore';
-export * from './writeToStore';
-export * from './entityCache';
-export * from './types';
-export {
- Reference,
- makeReference,
- isReference,
-} from './helpers';
diff --git a/src/cache/inmemory/readFromStore.ts b/src/cache/inmemory/readFromStore.ts
index 0ad20cc8e08..5c86f6b8cf6 100644
--- a/src/cache/inmemory/readFromStore.ts
+++ b/src/cache/inmemory/readFromStore.ts
@@ -10,26 +10,29 @@ import { InvariantError } from 'ts-invariant';
import {
argumentsObjectFromField,
- canUseWeakMap,
- createFragmentMap,
- DirectiveInfo,
- FragmentMap,
- getDefaultValues,
- getDirectiveInfoFromField,
- getFragmentDefinitions,
- getMainDefinition,
- getQueryDefinition,
getStoreKeyName,
- isEqual,
isField,
isInlineFragment,
- maybeDeepFreeze,
- mergeDeepArray,
resultKeyNameFromField,
- shouldInclude,
StoreValue,
-} from '../../utilities';
-import { Cache } from '../core';
+} from '../../utilities/graphql/storeUtils';
+import { canUseWeakMap } from '../../utilities/common/canUse';
+import { createFragmentMap, FragmentMap } from '../../utilities/graphql/fragments';
+import {
+ DirectiveInfo,
+ getDirectiveInfoFromField,
+ shouldInclude,
+} from '../../utilities/graphql/directives';
+import {
+ getDefaultValues,
+ getFragmentDefinitions,
+ getMainDefinition,
+ getQueryDefinition,
+} from '../../utilities/graphql/getFromAST';
+import { isEqual } from '../../utilities/common/isEqual';
+import { maybeDeepFreeze } from '../../utilities/common/maybeDeepFreeze';
+import { mergeDeepArray } from '../../utilities/common/mergeDeep';
+import { Cache } from '../core/types/Cache';
import {
ReadStoreContext,
DiffQueryAgainstStoreOptions,
diff --git a/src/cache/inmemory/types.ts b/src/cache/inmemory/types.ts
index ab5e5102d82..f2e8b2c920f 100644
--- a/src/cache/inmemory/types.ts
+++ b/src/cache/inmemory/types.ts
@@ -1,7 +1,7 @@
import { DocumentNode } from 'graphql';
-import { Transaction } from '../core';
-import { StoreValue } from '../../utilities';
+import { Transaction } from '../core/cache';
+import { StoreValue } from '../../utilities/graphql/storeUtils';
export interface IdGetterObj extends Object {
__typename?: string;
diff --git a/src/cache/inmemory/writeToStore.ts b/src/cache/inmemory/writeToStore.ts
index a8f3c8f6c2b..38358b27fda 100644
--- a/src/cache/inmemory/writeToStore.ts
+++ b/src/cache/inmemory/writeToStore.ts
@@ -4,19 +4,23 @@ import { invariant, InvariantError } from 'ts-invariant';
import {
createFragmentMap,
FragmentMap,
+ getFragmentFromSelection,
+} from '../../utilities/graphql/fragments';
+import {
getDefaultValues,
getFragmentDefinitions,
- getFragmentFromSelection,
getOperationDefinition,
+} from '../../utilities/graphql/getFromAST';
+import {
isField,
resultKeyNameFromField,
- shouldInclude,
storeKeyNameFromField,
StoreValue,
- DeepMerger,
getTypenameFromResult,
- cloneDeep,
-} from '../../utilities';
+} from '../../utilities/graphql/storeUtils';
+import { shouldInclude } from '../../utilities/graphql/directives';
+import { DeepMerger } from '../../utilities/common/mergeDeep';
+import { cloneDeep } from '../../utilities/common/cloneDeep';
import { defaultNormalizedCacheFactory } from './entityCache';
import { IdGetter, NormalizedCache, StoreObject } from './types';
import { fragmentMatches } from './fragments';
diff --git a/src/core/LocalState.ts b/src/core/LocalState.ts
index 167100b637a..8b88e0ca928 100644
--- a/src/core/LocalState.ts
+++ b/src/core/LocalState.ts
@@ -12,26 +12,27 @@ import {
import { visit, BREAK } from 'graphql/language/visitor';
import { invariant } from 'ts-invariant';
-import { ApolloCache } from '../cache/core';
+import { ApolloCache } from '../cache/core/cache';
import {
getMainDefinition,
+ getFragmentDefinitions,
+} from '../utilities/graphql/getFromAST';
+import { hasDirectives, shouldInclude } from '../utilities/graphql/directives';
+import { FragmentMap, createFragmentMap } from '../utilities/graphql/fragments';
+import {
buildQueryFromSelectionSet,
- hasDirectives,
removeClientSetsFromDocument,
- mergeDeep,
- mergeDeepArray,
- FragmentMap,
+} from '../utilities/graphql/transform';
+import { mergeDeep, mergeDeepArray } from '../utilities/common/mergeDeep';
+import {
argumentsObjectFromField,
resultKeyNameFromField,
- getFragmentDefinitions,
- createFragmentMap,
- shouldInclude,
isField,
isInlineFragment,
-} from '../utilities';
+} from '../utilities/graphql/storeUtils';
import { ApolloClient } from '../ApolloClient';
import { Resolvers, OperationVariables } from './types';
-import { capitalizeFirstLetter } from '../util/capitalizeFirstLetter';
+import { capitalizeFirstLetter } from '../utilities/common/capitalizeFirstLetter';
export type Resolver = (
rootValue?: any,
diff --git a/src/core/ObservableQuery.ts b/src/core/ObservableQuery.ts
index 19d55cc96a0..41a0a458b0c 100644
--- a/src/core/ObservableQuery.ts
+++ b/src/core/ObservableQuery.ts
@@ -1,14 +1,12 @@
import { GraphQLError } from 'graphql';
import { invariant, InvariantError } from 'ts-invariant';
-import {
- isEqual,
- tryFunctionOrLogError,
- cloneDeep,
- getOperationDefinition,
-} from '../utilities';
+import { isEqual } from '../utilities/common/isEqual';
+import { tryFunctionOrLogError } from '../utilities/common/errorHandling';
+import { cloneDeep } from '../utilities/common/cloneDeep';
+import { getOperationDefinition } from '../utilities/graphql/getFromAST';
import { NetworkStatus, isNetworkRequestInFlight } from './networkStatus';
-import { Observable, Observer, Subscription } from '../util/Observable';
+import { Observable, Observer, Subscription } from '../utilities/observables/Observable';
import { ApolloError } from '../errors/ApolloError';
import { QueryManager } from './QueryManager';
import { ApolloQueryResult, FetchType, OperationVariables } from './types';
@@ -19,7 +17,7 @@ import {
ErrorPolicy,
} from './watchQueryOptions';
import { QueryStoreValue } from '../data/queries';
-import { isNonEmptyArray } from '../util/arrays';
+import { isNonEmptyArray } from '../utilities/common/arrays';
export type ApolloCurrentQueryResult = {
data: T | undefined;
diff --git a/src/core/QueryManager.ts b/src/core/QueryManager.ts
index ecd1c0437e7..38a66685de4 100644
--- a/src/core/QueryManager.ts
+++ b/src/core/QueryManager.ts
@@ -1,20 +1,24 @@
import { ExecutionResult, DocumentNode } from 'graphql';
import { invariant, InvariantError } from 'ts-invariant';
-import { execute, ApolloLink, FetchResult } from '../link/core';
-import { Cache } from '../cache/core';
+import { ApolloLink } from '../link/core/ApolloLink';
+import { execute } from '../link/core/execute';
+import { FetchResult } from '../link/core/types';
+import { Cache } from '../cache/core/types/Cache';
import {
getDefaultValues,
getOperationDefinition,
getOperationName,
+} from '../utilities/graphql/getFromAST';
+import {
hasDirectives,
- graphQLResultHasError,
hasClientExports,
- removeConnectionDirectiveFromDocument,
- canUseWeakMap,
-} from '../utilities';
+} from '../utilities/graphql/directives';
+import { graphQLResultHasError } from '../utilities/common/errorHandling';
+import { removeConnectionDirectiveFromDocument } from '../utilities/graphql/transform';
+import { canUseWeakMap } from '../utilities/common/canUse';
import { isApolloError, ApolloError } from '../errors/ApolloError';
-import { Observer, Subscription, Observable } from '../util/Observable';
+import { Observer, Subscription, Observable } from '../utilities/observables/Observable';
import { QueryWithUpdater, DataStore } from '../data/store';
import { MutationStore } from '../data/mutations';
import { QueryStore, QueryStoreValue } from '../data/queries';
@@ -34,8 +38,8 @@ import {
OperationVariables,
} from './types';
import { LocalState } from './LocalState';
-import { asyncMap, multiplex } from '../util/observables';
-import { isNonEmptyArray } from '../util/arrays';
+import { asyncMap, multiplex } from '../utilities/observables/observables';
+import { isNonEmptyArray } from '../utilities/common/arrays';
const { hasOwnProperty } = Object.prototype;
diff --git a/src/core/__tests__/ObservableQuery.ts b/src/core/__tests__/ObservableQuery.ts
index 153c1095605..6e375024758 100644
--- a/src/core/__tests__/ObservableQuery.ts
+++ b/src/core/__tests__/ObservableQuery.ts
@@ -1,9 +1,9 @@
import gql from 'graphql-tag';
import { GraphQLError } from 'graphql';
-import { Observable } from '../../util/Observable';
-import { ApolloLink } from '../../link/core';
-import { InMemoryCache } from '../../cache/inmemory';
+import { Observable } from '../../utilities/observables/Observable';
+import { ApolloLink } from '../../link/core/ApolloLink';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
import mockQueryManager from '../../__mocks__/mockQueryManager';
import mockWatchQuery from '../../__mocks__/mockWatchQuery';
import { mockSingleLink } from '../../__mocks__/mockLinks';
@@ -14,9 +14,9 @@ import { QueryManager } from '../QueryManager';
import { DataStore } from '../../data/store';
import { ApolloClient } from '../../';
-import wrap from '../../util/wrap';
-import subscribeAndCount from '../../util/subscribeAndCount';
-import { stripSymbols } from '../../utilities';
+import wrap from '../../__tests__/utils/wrap';
+import subscribeAndCount from '../../__tests__/utils/subscribeAndCount';
+import { stripSymbols } from '../../__tests__/utils/stripSymbols';
import { ApolloError } from '../../errors/ApolloError';
describe('ObservableQuery', () => {
diff --git a/src/core/__tests__/QueryManager/index.ts b/src/core/__tests__/QueryManager/index.ts
index 44f09941289..6fd0e65753f 100644
--- a/src/core/__tests__/QueryManager/index.ts
+++ b/src/core/__tests__/QueryManager/index.ts
@@ -5,13 +5,14 @@ import { assign } from 'lodash';
import gql from 'graphql-tag';
import { DocumentNode, ExecutionResult, GraphQLError } from 'graphql';
-import { Observable } from '../../../util/Observable';
-import { ApolloLink, Operation } from '../../../link/core';
+import { Observable, Observer } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../../link/core/ApolloLink';
+import { Operation } from '../../../link/core/types';
+import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
import {
- InMemoryCache,
ApolloReducerConfig,
- NormalizedCacheObject,
-} from '../../../cache/inmemory';
+ NormalizedCacheObject
+} from '../../../cache/inmemory/types';
// mocks
import mockQueryManager from '../../../__mocks__/mockQueryManager';
@@ -29,14 +30,13 @@ import { QueryManager } from '../../QueryManager';
import { ApolloError } from '../../../errors/ApolloError';
import { DataStore } from '../../../data/store';
-import { Observer } from '../../../util/Observable';
// testing utils
-import wrap from '../../../util/wrap';
+import wrap from '../../../__tests__/utils/wrap';
import observableToPromise, {
observableToPromiseAndSubscription,
-} from '../../../util/observableToPromise';
-import { stripSymbols } from '../../../utilities';
+} from '../../../__tests__/utils/observableToPromise';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
describe('QueryManager', () => {
// Standard "get id from object" method.
diff --git a/src/core/__tests__/QueryManager/links.ts b/src/core/__tests__/QueryManager/links.ts
index 465598641ab..7cbc308a09f 100644
--- a/src/core/__tests__/QueryManager/links.ts
+++ b/src/core/__tests__/QueryManager/links.ts
@@ -1,10 +1,10 @@
// externals
import gql from 'graphql-tag';
-import { Observable } from '../../../util/Observable';
-import { ApolloLink } from '../../../link/core';
-import { InMemoryCache } from '../../../cache/inmemory';
-import { stripSymbols } from '../../../utilities';
+import { Observable } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../../link/core/ApolloLink';
+import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
// mocks
import { MockSubscriptionLink } from '../../../__mocks__/mockLinks';
diff --git a/src/core/__tests__/QueryManager/live.ts b/src/core/__tests__/QueryManager/live.ts
index 9f47f682df2..dd3e5014a12 100644
--- a/src/core/__tests__/QueryManager/live.ts
+++ b/src/core/__tests__/QueryManager/live.ts
@@ -6,8 +6,8 @@
// externals
import gql from 'graphql-tag';
-import { InMemoryCache } from '../../../cache/inmemory';
-import { stripSymbols } from '../../../utilities';
+import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
import { MockSubscriptionLink } from '../../../__mocks__/mockLinks';
// core
diff --git a/src/core/__tests__/QueryManager/multiple-results.ts b/src/core/__tests__/QueryManager/multiple-results.ts
index d7c41a01618..91deec8689d 100644
--- a/src/core/__tests__/QueryManager/multiple-results.ts
+++ b/src/core/__tests__/QueryManager/multiple-results.ts
@@ -1,7 +1,7 @@
// externals
import gql from 'graphql-tag';
-import { InMemoryCache } from '../../../cache/inmemory';
-import { stripSymbols } from '../../../utilities';
+import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
// mocks
import { MockSubscriptionLink } from '../../../__mocks__/mockLinks';
diff --git a/src/core/__tests__/QueryManager/recycler.ts b/src/core/__tests__/QueryManager/recycler.ts
index c2c00196f7a..846549deee7 100644
--- a/src/core/__tests__/QueryManager/recycler.ts
+++ b/src/core/__tests__/QueryManager/recycler.ts
@@ -6,8 +6,8 @@
// externals
import gql from 'graphql-tag';
-import { InMemoryCache } from '../../../cache/inmemory';
-import { stripSymbols } from '../../../utilities';
+import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../../__tests__/utils/stripSymbols';
import { MockSubscriptionLink } from '../../../__mocks__/mockLinks';
// core
diff --git a/src/core/__tests__/fetchPolicies.ts b/src/core/__tests__/fetchPolicies.ts
index 673c89104a5..4902da83772 100644
--- a/src/core/__tests__/fetchPolicies.ts
+++ b/src/core/__tests__/fetchPolicies.ts
@@ -1,10 +1,10 @@
import gql from 'graphql-tag';
-import { ApolloLink } from '../../link/core';
-import { InMemoryCache } from '../../cache/inmemory';
-import { stripSymbols } from '../../utilities';
+import { ApolloLink } from '../../link/core/ApolloLink';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../__tests__/utils/stripSymbols';
import { ApolloClient } from '../..';
-import subscribeAndCount from '../../util/subscribeAndCount';
+import subscribeAndCount from '../../__tests__/utils/subscribeAndCount';
import { mockSingleLink } from '../../__mocks__/mockLinks';
import { NetworkStatus } from '../networkStatus';
diff --git a/src/core/__tests__/scheduler.ts b/src/core/__tests__/scheduler.ts
index b9702b4d48d..758714a37ca 100644
--- a/src/core/__tests__/scheduler.ts
+++ b/src/core/__tests__/scheduler.ts
@@ -1,7 +1,7 @@
import gql from 'graphql-tag';
-import { InMemoryCache } from '../../cache/inmemory';
-import { stripSymbols } from '../../utilities';
+import { InMemoryCache } from '../../cache/inmemory/inMemoryCache';
+import { stripSymbols } from '../../__tests__/utils/stripSymbols';
import { QueryManager } from '../QueryManager';
import { WatchQueryOptions } from '../../core/watchQueryOptions';
diff --git a/src/core/types.ts b/src/core/types.ts
index 6c18fe9f51a..1dc2aa71e04 100644
--- a/src/core/types.ts
+++ b/src/core/types.ts
@@ -1,6 +1,6 @@
import { DocumentNode, GraphQLError } from 'graphql';
-import { FetchResult } from '../link/core';
+import { FetchResult } from '../link/core/types';
import { QueryStoreValue } from '../data/queries';
import { NetworkStatus } from './networkStatus';
import { Resolver } from './LocalState';
diff --git a/src/core/watchQueryOptions.ts b/src/core/watchQueryOptions.ts
index 5cc5762297a..1b370d608e9 100644
--- a/src/core/watchQueryOptions.ts
+++ b/src/core/watchQueryOptions.ts
@@ -1,7 +1,7 @@
import { DocumentNode, ExecutionResult } from 'graphql';
-import { FetchResult } from '../link/core';
-import { DataProxy } from '../cache/core';
+import { FetchResult } from '../link/core/types';
+import { DataProxy } from '../cache/core/types/DataProxy';
import { MutationQueryReducersMap } from './types';
import { PureQueryOptions, OperationVariables } from './types';
diff --git a/src/data/queries.ts b/src/data/queries.ts
index 41c37dd4fa6..5a67d0c9ead 100644
--- a/src/data/queries.ts
+++ b/src/data/queries.ts
@@ -1,9 +1,9 @@
import { DocumentNode, GraphQLError, ExecutionResult } from 'graphql';
import { invariant } from 'ts-invariant';
-import { isEqual } from '../utilities';
+import { isEqual } from '../utilities/common/isEqual';
import { NetworkStatus } from '../core/networkStatus';
-import { isNonEmptyArray } from '../util/arrays';
+import { isNonEmptyArray } from '../utilities/common/arrays';
export type QueryStoreValue = {
document: DocumentNode;
diff --git a/src/data/store.ts b/src/data/store.ts
index c7051d288cc..4f5b45d8fd9 100644
--- a/src/data/store.ts
+++ b/src/data/store.ts
@@ -1,12 +1,14 @@
import { ExecutionResult, DocumentNode } from 'graphql';
-import { ApolloCache, Cache, DataProxy } from '../cache/core';
+import { ApolloCache } from '../cache/core/cache';
+import { Cache } from '../cache/core/types/Cache';
+import { DataProxy } from '../cache/core/types/DataProxy';
import { QueryStoreValue } from '../data/queries';
+import { getOperationName } from '../utilities/graphql/getFromAST';
import {
- getOperationName,
tryFunctionOrLogError,
graphQLResultHasError,
-} from '../utilities';
+} from '../utilities/common/errorHandling';
import { MutationQueryReducer } from '../core/types';
export type QueryWithUpdater = {
diff --git a/src/errors/ApolloError.ts b/src/errors/ApolloError.ts
index 622bfd30456..f378e2f21bc 100644
--- a/src/errors/ApolloError.ts
+++ b/src/errors/ApolloError.ts
@@ -1,6 +1,6 @@
import { GraphQLError } from 'graphql';
-import { isNonEmptyArray } from '../util/arrays';
+import { isNonEmptyArray } from '../utilities/common/arrays';
export function isApolloError(err: Error): err is ApolloError {
return err.hasOwnProperty('graphQLErrors');
diff --git a/src/index.ts b/src/index.ts
index 0ce6258eea3..e6243234906 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,16 +1,16 @@
+/* Core */
+
export {
ApolloClient,
ApolloClientOptions,
DefaultOptions
} from './ApolloClient';
-
export {
ObservableQuery,
FetchMoreOptions,
UpdateQueryOptions,
ApolloCurrentQueryResult,
} from './core/ObservableQuery';
-
export {
QueryBaseOptions,
QueryOptions,
@@ -24,27 +24,80 @@ export {
SubscribeToMoreOptions,
MutationUpdaterFn,
} from './core/watchQueryOptions';
-
export { NetworkStatus } from './core/networkStatus';
-
export * from './core/types';
-
export {
Resolver,
FragmentMatcher as LocalStateFragmentMatcher,
} from './core/LocalState';
-
export { isApolloError, ApolloError } from './errors/ApolloError';
-export * from './cache/core';
-export * from './cache/inmemory';
+/* Cache */
+
+export { Transaction, ApolloCache } from './cache/core/cache';
+export { Cache } from './cache/core/types/Cache';
+export { DataProxy } from './cache/core/types/DataProxy';
+export {
+ InMemoryCache,
+ InMemoryCacheConfig,
+ defaultDataIdFromObject,
+} from './cache/inmemory/inMemoryCache';
+export * from './cache/inmemory/types';
+export {
+ Reference,
+ makeReference,
+ isReference,
+} from './cache/inmemory/helpers';
+
+/* React */
+
+export { ApolloProvider } from './react/context/ApolloProvider';
+export { ApolloConsumer } from './react/context/ApolloConsumer';
+export {
+ getApolloContext,
+ resetApolloContext,
+ ApolloContextValue
+} from './react/context/ApolloContext';
+export { useQuery } from './react/hooks/useQuery';
+export { useLazyQuery } from './react/hooks/useLazyQuery';
+export { useMutation } from './react/hooks/useMutation';
+export { useSubscription } from './react/hooks/useSubscription';
+export { useApolloClient } from './react/hooks/useApolloClient';
+export { RenderPromises } from './react/ssr/RenderPromises';
+export * from './react/types/types';
+export * from './react/parser/parser';
-export * from './react';
+/* Link */
-export * from './link/core';
-export * from './link/http';
-export * from './link/utils';
+export { empty } from './link/core/empty';
+export { from } from './link/core/from';
+export { split } from './link/core/split';
+export { concat } from './link/core/concat';
+export { execute } from './link/core/execute';
+export { ApolloLink } from './link/core/ApolloLink';
+export * from './link/core/types';
+export {
+ parseAndCheckHttpResponse,
+ ServerParseError
+} from './link/http/parseAndCheckHttpResponse';
+export {
+ serializeFetchParameter,
+ ClientParseError
+} from './link/http/serializeFetchParameter';
+export {
+ HttpOptions,
+ fallbackHttpConfig,
+ selectHttpOptionsAndBody,
+ UriFunction
+} from './link/http/selectHttpOptionsAndBody';
+export { checkFetcher } from './link/http/checkFetcher';
+export { createSignalIfSupported } from './link/http/createSignalIfSupported';
+export { selectURI } from './link/http/selectURI';
+export { createHttpLink } from './link/http/createHttpLink';
+export { HttpLink } from './link/http/HttpLink';
+export { fromError } from './link/utils/fromError';
+export { ServerError, throwServerError } from './link/utils/throwServerError';
-export { Observable } from './util/Observable';
+/* Utilities */
-export * from './utilities';
+export { Observable } from './utilities/observables/Observable';
diff --git a/src/link/core/ApolloLink.ts b/src/link/core/ApolloLink.ts
index dfa8debc758..3025b1374e5 100644
--- a/src/link/core/ApolloLink.ts
+++ b/src/link/core/ApolloLink.ts
@@ -1,6 +1,6 @@
import { InvariantError, invariant } from 'ts-invariant';
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
import {
NextLink,
Operation,
diff --git a/src/link/core/__tests__/ApolloLink.ts b/src/link/core/__tests__/ApolloLink.ts
index eed1a9bb04c..fe769655154 100644
--- a/src/link/core/__tests__/ApolloLink.ts
+++ b/src/link/core/__tests__/ApolloLink.ts
@@ -1,7 +1,7 @@
import gql from 'graphql-tag';
import { print } from 'graphql/language/printer';
-import { Observable } from '../../../util/Observable';
+import { Observable } from '../../../utilities/observables/Observable';
import { FetchResult, Operation, NextLink, GraphQLRequest } from '../types';
import { ApolloLink } from '../ApolloLink';
diff --git a/src/link/core/index.ts b/src/link/core/index.ts
deleted file mode 100644
index 8093e7c6cd2..00000000000
--- a/src/link/core/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export { empty } from './empty';
-export { from } from './from';
-export { split } from './split';
-export { concat } from './concat';
-export { execute } from './execute';
-export { ApolloLink } from './ApolloLink';
-
-export * from './types';
diff --git a/src/link/core/types.ts b/src/link/core/types.ts
index 4a15f5035c2..6c79d41d045 100644
--- a/src/link/core/types.ts
+++ b/src/link/core/types.ts
@@ -2,7 +2,7 @@ import { DocumentNode } from 'graphql/language/ast';
import { ExecutionResult } from 'graphql/execution/execute';
export { ExecutionResult, DocumentNode };
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
export interface GraphQLRequest {
query: DocumentNode;
diff --git a/src/link/http/HttpLink.ts b/src/link/http/HttpLink.ts
index cc2a8d5fa14..31cac386cce 100644
--- a/src/link/http/HttpLink.ts
+++ b/src/link/http/HttpLink.ts
@@ -1,4 +1,5 @@
-import { ApolloLink, RequestHandler } from '../core';
+import { ApolloLink } from '../core/ApolloLink';
+import { RequestHandler } from '../core/types';
import { HttpOptions } from './selectHttpOptionsAndBody';
import { createHttpLink } from './createHttpLink';
diff --git a/src/link/http/__tests__/HttpLink.ts b/src/link/http/__tests__/HttpLink.ts
index 981ebb23925..4f31d57c64f 100644
--- a/src/link/http/__tests__/HttpLink.ts
+++ b/src/link/http/__tests__/HttpLink.ts
@@ -2,8 +2,9 @@ import gql from 'graphql-tag';
import fetchMock from 'fetch-mock';
import { print } from 'graphql';
-import { Observable } from '../../../util/Observable';
-import { ApolloLink, execute } from '../../core';
+import { Observable } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../core/ApolloLink';
+import { execute } from '../../core/execute';
import { HttpLink } from '../HttpLink';
import { createHttpLink } from '../createHttpLink';
diff --git a/src/link/http/createHttpLink.ts b/src/link/http/createHttpLink.ts
index 42281dc69af..80f8321a69a 100644
--- a/src/link/http/createHttpLink.ts
+++ b/src/link/http/createHttpLink.ts
@@ -1,6 +1,6 @@
import { DefinitionNode } from 'graphql';
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
import { serializeFetchParameter } from './serializeFetchParameter';
import { selectURI } from './selectURI';
import { parseAndCheckHttpResponse } from './parseAndCheckHttpResponse';
@@ -12,7 +12,7 @@ import {
} from './selectHttpOptionsAndBody';
import { createSignalIfSupported } from './createSignalIfSupported';
import { rewriteURIForGET } from './rewriteURIForGET';
-import { ApolloLink } from '../core';
+import { ApolloLink } from '../core/ApolloLink';
import { fromError } from '../utils/fromError';
export const createHttpLink = (linkOptions: HttpOptions = {}) => {
diff --git a/src/link/http/index.ts b/src/link/http/index.ts
deleted file mode 100644
index 2dde558a321..00000000000
--- a/src/link/http/index.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-export {
- parseAndCheckHttpResponse,
- ServerParseError
-} from './parseAndCheckHttpResponse';
-
-export {
- serializeFetchParameter,
- ClientParseError
-} from './serializeFetchParameter';
-
-export {
- HttpOptions,
- fallbackHttpConfig,
- selectHttpOptionsAndBody,
- UriFunction
-} from './selectHttpOptionsAndBody';
-
-export { checkFetcher } from './checkFetcher';
-
-export { createSignalIfSupported } from './createSignalIfSupported';
-
-export { selectURI } from './selectURI';
-
-export { createHttpLink } from './createHttpLink';
-
-export { HttpLink } from './HttpLink';
diff --git a/src/link/http/parseAndCheckHttpResponse.ts b/src/link/http/parseAndCheckHttpResponse.ts
index 96910eecd74..2528e0624e3 100644
--- a/src/link/http/parseAndCheckHttpResponse.ts
+++ b/src/link/http/parseAndCheckHttpResponse.ts
@@ -1,4 +1,4 @@
-import { Operation } from '../core';
+import { Operation } from '../core/types';
import { throwServerError } from '../utils/throwServerError';
const { hasOwnProperty } = Object.prototype;
diff --git a/src/link/http/selectHttpOptionsAndBody.ts b/src/link/http/selectHttpOptionsAndBody.ts
index 77b3e1641c3..18aaffcfce0 100644
--- a/src/link/http/selectHttpOptionsAndBody.ts
+++ b/src/link/http/selectHttpOptionsAndBody.ts
@@ -1,6 +1,6 @@
import { print } from 'graphql/language/printer';
-import { Operation } from '../core';
+import { Operation } from '../core/types';
export interface UriFunction {
(operation: Operation): string;
diff --git a/src/link/http/selectURI.ts b/src/link/http/selectURI.ts
index 461098f2e2e..9412f2fba47 100644
--- a/src/link/http/selectURI.ts
+++ b/src/link/http/selectURI.ts
@@ -1,4 +1,4 @@
-import { Operation } from '../core';
+import { Operation } from '../core/types';
export const selectURI = (
operation: Operation,
diff --git a/src/link/utils/__tests__/toPromise.ts b/src/link/utils/__tests__/toPromise.ts
index 9fc6a5a842d..aec407e3ac9 100644
--- a/src/link/utils/__tests__/toPromise.ts
+++ b/src/link/utils/__tests__/toPromise.ts
@@ -1,4 +1,4 @@
-import { Observable } from '../../../util/Observable';
+import { Observable } from '../../../utilities/observables/Observable';
import { toPromise } from '../toPromise';
import { fromError } from '../fromError';
diff --git a/src/link/utils/fromError.ts b/src/link/utils/fromError.ts
index e6d2c52ece3..7d0a6ef0340 100644
--- a/src/link/utils/fromError.ts
+++ b/src/link/utils/fromError.ts
@@ -1,4 +1,4 @@
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
export function fromError(errorValue: any): Observable {
return new Observable(observer => {
diff --git a/src/link/utils/fromPromise.ts b/src/link/utils/fromPromise.ts
index 9ec31fd675f..8485c5d6364 100644
--- a/src/link/utils/fromPromise.ts
+++ b/src/link/utils/fromPromise.ts
@@ -1,4 +1,4 @@
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
export function fromPromise(promise: Promise): Observable {
return new Observable(observer => {
diff --git a/src/link/utils/index.ts b/src/link/utils/index.ts
deleted file mode 100644
index d7998382661..00000000000
--- a/src/link/utils/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { fromError } from './fromError';
-export { ServerError, throwServerError } from './throwServerError';
diff --git a/src/link/utils/toPromise.ts b/src/link/utils/toPromise.ts
index 13d9fcc5353..6ed43d5207a 100644
--- a/src/link/utils/toPromise.ts
+++ b/src/link/utils/toPromise.ts
@@ -1,6 +1,6 @@
import { invariant } from 'ts-invariant';
-import { Observable } from '../../util/Observable';
+import { Observable } from '../../utilities/observables/Observable';
export function toPromise(observable: Observable): Promise {
let completed = false;
diff --git a/src/link/utils/transformOperation.ts b/src/link/utils/transformOperation.ts
index 7fde936c120..c085fe3c910 100644
--- a/src/link/utils/transformOperation.ts
+++ b/src/link/utils/transformOperation.ts
@@ -1,5 +1,5 @@
import { GraphQLRequest, Operation } from '../core/types';
-import { getOperationName } from '../../utilities/getFromAST';
+import { getOperationName } from '../../utilities/graphql/getFromAST';
export function transformOperation(operation: GraphQLRequest): GraphQLRequest {
const transformedOperation: GraphQLRequest = {
diff --git a/src/react/context/__tests__/ApolloConsumer.test.tsx b/src/react/context/__tests__/ApolloConsumer.test.tsx
index a7511cc34e2..27d3d96320b 100644
--- a/src/react/context/__tests__/ApolloConsumer.test.tsx
+++ b/src/react/context/__tests__/ApolloConsumer.test.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import { render, cleanup } from '@testing-library/react';
-import { ApolloLink } from '../../../link/core';
+import { ApolloLink } from '../../../link/core/ApolloLink';
import { ApolloClient } from '../../../ApolloClient';
import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
import { ApolloProvider } from '../ApolloProvider';
diff --git a/src/react/context/__tests__/ApolloProvider.test.tsx b/src/react/context/__tests__/ApolloProvider.test.tsx
index a3fee0ab80e..ab95f96df5c 100644
--- a/src/react/context/__tests__/ApolloProvider.test.tsx
+++ b/src/react/context/__tests__/ApolloProvider.test.tsx
@@ -1,7 +1,7 @@
import React, { useContext } from 'react';
import { render, cleanup } from '@testing-library/react';
-import { ApolloLink } from '../../../link/core';
+import { ApolloLink } from '../../../link/core/ApolloLink';
import { ApolloClient } from '../../../ApolloClient';
import { InMemoryCache as Cache } from '../../../cache/inmemory/inMemoryCache';
import { ApolloProvider } from '../ApolloProvider';
diff --git a/src/react/data/MutationData.ts b/src/react/data/MutationData.ts
index ca8d512b000..950456d33bb 100644
--- a/src/react/data/MutationData.ts
+++ b/src/react/data/MutationData.ts
@@ -11,7 +11,7 @@ import {
} from '../types/types';
import { OperationData } from './OperationData';
import { OperationVariables } from '../../core/types';
-import { FetchResult } from '../../link/core';
+import { FetchResult } from '../../link/core/types';
export class MutationData<
TData = any,
diff --git a/src/react/hooks/__tests__/useApolloClient.test.tsx b/src/react/hooks/__tests__/useApolloClient.test.tsx
index b663babdba5..7c7ab1c4b90 100644
--- a/src/react/hooks/__tests__/useApolloClient.test.tsx
+++ b/src/react/hooks/__tests__/useApolloClient.test.tsx
@@ -2,7 +2,7 @@ import React from 'react';
import { render, cleanup } from '@testing-library/react';
import { InvariantError } from 'ts-invariant';
-import { ApolloLink } from '../../../link/core';
+import { ApolloLink } from '../../../link/core/ApolloLink';
import { ApolloProvider } from '../../context/ApolloProvider';
import { resetApolloContext } from '../../context/ApolloContext';
import { ApolloClient } from '../../../ApolloClient';
diff --git a/src/react/hooks/__tests__/useQuery.test.tsx b/src/react/hooks/__tests__/useQuery.test.tsx
index b594c1b7e67..389488f2a07 100644
--- a/src/react/hooks/__tests__/useQuery.test.tsx
+++ b/src/react/hooks/__tests__/useQuery.test.tsx
@@ -3,8 +3,8 @@ import { DocumentNode, GraphQLError } from 'graphql';
import gql from 'graphql-tag';
import { render, cleanup, wait } from '@testing-library/react';
-import { Observable } from '../../../util/Observable';
-import { ApolloLink } from '../../../link/core';
+import { Observable } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../../link/core/ApolloLink';
import { MockedProvider, MockLink } from '../../testing';
import { ApolloClient } from '../../../ApolloClient';
import { InMemoryCache } from '../../../cache/inmemory/inMemoryCache';
diff --git a/src/react/index.ts b/src/react/index.ts
deleted file mode 100644
index 92b4fb080f1..00000000000
--- a/src/react/index.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-export { ApolloProvider } from './context/ApolloProvider';
-export { ApolloConsumer } from './context/ApolloConsumer';
-export {
- getApolloContext,
- resetApolloContext,
- ApolloContextValue
-} from './context/ApolloContext';
-
-export { useQuery } from './hooks/useQuery';
-export { useLazyQuery } from './hooks/useLazyQuery';
-export { useMutation } from './hooks/useMutation';
-export { useSubscription } from './hooks/useSubscription';
-export { useApolloClient } from './hooks/useApolloClient';
-
-export { RenderPromises } from './ssr/RenderPromises';
-
-export * from './types/types';
-export * from './parser/parser';
diff --git a/src/react/testing/index.ts b/src/react/testing/index.ts
index 5c311957c9e..55f2b111036 100644
--- a/src/react/testing/index.ts
+++ b/src/react/testing/index.ts
@@ -6,7 +6,7 @@ export {
} from './mocks/mockSubscriptionLink';
export { createClient } from './utils/createClient';
-export { stripSymbols } from './utils/stripSymbols';
+export { stripSymbols } from '../../__tests__/utils/stripSymbols';
export { wait } from './utils/wait';
export * from './mocks/types';
diff --git a/src/react/testing/mocks/mockLink.ts b/src/react/testing/mocks/mockLink.ts
index 82390cdabd9..1fc7ffee594 100644
--- a/src/react/testing/mocks/mockLink.ts
+++ b/src/react/testing/mocks/mockLink.ts
@@ -1,20 +1,20 @@
import { print } from 'graphql/language/printer';
import stringify from 'fast-json-stable-stringify';
-import { Observable } from '../../../util/Observable';
+import { Observable } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../../link/core/ApolloLink';
import {
Operation,
GraphQLRequest,
- ApolloLink,
FetchResult,
-} from '../../../link/core';
+} from '../../../link/core/types';
import {
addTypenameToDocument,
removeClientSetsFromDocument,
removeConnectionDirectiveFromDocument,
- cloneDeep,
- isEqual
-} from '../../../utilities';
+} from '../../../utilities/graphql/transform';
+import { cloneDeep } from '../../../utilities/common/cloneDeep';
+import { isEqual } from '../../../utilities/common/isEqual';
import { MockedResponse, ResultFunction } from './types';
function requestToKey(request: GraphQLRequest, addTypename: Boolean): string {
diff --git a/src/react/testing/mocks/mockSubscriptionLink.ts b/src/react/testing/mocks/mockSubscriptionLink.ts
index 77901105c66..bbeeedecf7f 100644
--- a/src/react/testing/mocks/mockSubscriptionLink.ts
+++ b/src/react/testing/mocks/mockSubscriptionLink.ts
@@ -1,5 +1,6 @@
-import { Observable } from '../../../util/Observable';
-import { ApolloLink, FetchResult } from '../../../link/core';
+import { Observable } from '../../../utilities/observables/Observable';
+import { ApolloLink } from '../../../link/core/ApolloLink';
+import { FetchResult } from '../../../link/core/types';
import { MockedSubscriptionResult } from './types';
export class MockSubscriptionLink extends ApolloLink {
diff --git a/src/react/testing/mocks/types.ts b/src/react/testing/mocks/types.ts
index 585b8554f4f..54f85018a9a 100644
--- a/src/react/testing/mocks/types.ts
+++ b/src/react/testing/mocks/types.ts
@@ -1,4 +1,5 @@
-import { ApolloLink, GraphQLRequest, FetchResult } from '../../../link/core';
+import { ApolloLink } from '../../../link/core/ApolloLink';
+import { GraphQLRequest, FetchResult } from '../../../link/core/types';
import { ApolloClient, DefaultOptions } from '../../../ApolloClient';
import { Resolvers } from '../../../core/types';
import { ApolloCache } from '../../../cache/core/cache';
diff --git a/src/react/testing/utils/stripSymbols.ts b/src/react/testing/utils/stripSymbols.ts
deleted file mode 100644
index 1d2d6c0a27f..00000000000
--- a/src/react/testing/utils/stripSymbols.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * Apollo-client adds Symbols to the data in the store. In order to make
- * assertions in our tests easier we strip these Symbols from the data.
- */
-export function stripSymbols(data: T): T {
- return JSON.parse(JSON.stringify(data));
-}
diff --git a/src/react/types/types.ts b/src/react/types/types.ts
index 799b9d490c8..3e082c5ed37 100644
--- a/src/react/types/types.ts
+++ b/src/react/types/types.ts
@@ -1,8 +1,8 @@
import { ReactNode } from 'react';
import { DocumentNode } from 'graphql';
-import { Observable } from '../../util/Observable';
-import { FetchResult } from '../../link/core';
+import { Observable } from '../../utilities/observables/Observable';
+import { FetchResult } from '../../link/core/types';
import { ApolloClient } from '../../ApolloClient';
import {
ApolloQueryResult,
diff --git a/src/utilities/util/__tests__/assign.ts b/src/utilities/common/__tests__/assign.ts
similarity index 100%
rename from src/utilities/util/__tests__/assign.ts
rename to src/utilities/common/__tests__/assign.ts
diff --git a/src/utilities/util/__tests__/cloneDeep.ts b/src/utilities/common/__tests__/cloneDeep.ts
similarity index 100%
rename from src/utilities/util/__tests__/cloneDeep.ts
rename to src/utilities/common/__tests__/cloneDeep.ts
diff --git a/src/utilities/util/__tests__/environment.ts b/src/utilities/common/__tests__/environment.ts
similarity index 100%
rename from src/utilities/util/__tests__/environment.ts
rename to src/utilities/common/__tests__/environment.ts
diff --git a/src/utilities/util/__tests__/isEqual.ts b/src/utilities/common/__tests__/isEqual.ts
similarity index 100%
rename from src/utilities/util/__tests__/isEqual.ts
rename to src/utilities/common/__tests__/isEqual.ts
diff --git a/src/utilities/util/__tests__/maybeDeepFeeze.ts b/src/utilities/common/__tests__/maybeDeepFeeze.ts
similarity index 100%
rename from src/utilities/util/__tests__/maybeDeepFeeze.ts
rename to src/utilities/common/__tests__/maybeDeepFeeze.ts
diff --git a/src/utilities/util/__tests__/mergeDeep.ts b/src/utilities/common/__tests__/mergeDeep.ts
similarity index 100%
rename from src/utilities/util/__tests__/mergeDeep.ts
rename to src/utilities/common/__tests__/mergeDeep.ts
diff --git a/src/util/arrays.ts b/src/utilities/common/arrays.ts
similarity index 100%
rename from src/util/arrays.ts
rename to src/utilities/common/arrays.ts
diff --git a/src/utilities/util/assign.ts b/src/utilities/common/assign.ts
similarity index 100%
rename from src/utilities/util/assign.ts
rename to src/utilities/common/assign.ts
diff --git a/src/utilities/util/canUse.ts b/src/utilities/common/canUse.ts
similarity index 100%
rename from src/utilities/util/canUse.ts
rename to src/utilities/common/canUse.ts
diff --git a/src/util/capitalizeFirstLetter.ts b/src/utilities/common/capitalizeFirstLetter.ts
similarity index 100%
rename from src/util/capitalizeFirstLetter.ts
rename to src/utilities/common/capitalizeFirstLetter.ts
diff --git a/src/utilities/util/cloneDeep.ts b/src/utilities/common/cloneDeep.ts
similarity index 100%
rename from src/utilities/util/cloneDeep.ts
rename to src/utilities/common/cloneDeep.ts
diff --git a/src/utilities/util/environment.ts b/src/utilities/common/environment.ts
similarity index 100%
rename from src/utilities/util/environment.ts
rename to src/utilities/common/environment.ts
diff --git a/src/utilities/util/errorHandling.ts b/src/utilities/common/errorHandling.ts
similarity index 100%
rename from src/utilities/util/errorHandling.ts
rename to src/utilities/common/errorHandling.ts
diff --git a/src/utilities/util/filterInPlace.ts b/src/utilities/common/filterInPlace.ts
similarity index 100%
rename from src/utilities/util/filterInPlace.ts
rename to src/utilities/common/filterInPlace.ts
diff --git a/src/utilities/util/isEqual.ts b/src/utilities/common/isEqual.ts
similarity index 100%
rename from src/utilities/util/isEqual.ts
rename to src/utilities/common/isEqual.ts
diff --git a/src/utilities/util/maybeDeepFreeze.ts b/src/utilities/common/maybeDeepFreeze.ts
similarity index 100%
rename from src/utilities/util/maybeDeepFreeze.ts
rename to src/utilities/common/maybeDeepFreeze.ts
diff --git a/src/utilities/util/mergeDeep.ts b/src/utilities/common/mergeDeep.ts
similarity index 100%
rename from src/utilities/util/mergeDeep.ts
rename to src/utilities/common/mergeDeep.ts
diff --git a/src/utilities/declarations.d.ts b/src/utilities/declarations.d.ts
deleted file mode 100644
index 695466556df..00000000000
--- a/src/utilities/declarations.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-declare module 'fast-json-stable-stringify';
diff --git a/src/utilities/__tests__/directives.ts b/src/utilities/graphql/__tests__/directives.ts
similarity index 100%
rename from src/utilities/__tests__/directives.ts
rename to src/utilities/graphql/__tests__/directives.ts
diff --git a/src/utilities/__tests__/fragments.ts b/src/utilities/graphql/__tests__/fragments.ts
similarity index 100%
rename from src/utilities/__tests__/fragments.ts
rename to src/utilities/graphql/__tests__/fragments.ts
diff --git a/src/utilities/__tests__/getFromAST.ts b/src/utilities/graphql/__tests__/getFromAST.ts
similarity index 100%
rename from src/utilities/__tests__/getFromAST.ts
rename to src/utilities/graphql/__tests__/getFromAST.ts
diff --git a/src/utilities/__tests__/storeUtils.ts b/src/utilities/graphql/__tests__/storeUtils.ts
similarity index 100%
rename from src/utilities/__tests__/storeUtils.ts
rename to src/utilities/graphql/__tests__/storeUtils.ts
diff --git a/src/utilities/__tests__/transform.ts b/src/utilities/graphql/__tests__/transform.ts
similarity index 100%
rename from src/utilities/__tests__/transform.ts
rename to src/utilities/graphql/__tests__/transform.ts
diff --git a/src/utilities/directives.ts b/src/utilities/graphql/directives.ts
similarity index 100%
rename from src/utilities/directives.ts
rename to src/utilities/graphql/directives.ts
diff --git a/src/utilities/fragments.ts b/src/utilities/graphql/fragments.ts
similarity index 100%
rename from src/utilities/fragments.ts
rename to src/utilities/graphql/fragments.ts
diff --git a/src/utilities/getFromAST.ts b/src/utilities/graphql/getFromAST.ts
similarity index 99%
rename from src/utilities/getFromAST.ts
rename to src/utilities/graphql/getFromAST.ts
index 84cc034ee72..906ec3f8098 100644
--- a/src/utilities/getFromAST.ts
+++ b/src/utilities/graphql/getFromAST.ts
@@ -7,7 +7,7 @@ import {
import { invariant, InvariantError } from 'ts-invariant';
-import { assign } from './util/assign';
+import { assign } from '../common/assign';
import { valueToObjectRepresentation, JsonValue } from './storeUtils';
diff --git a/src/utilities/storeUtils.ts b/src/utilities/graphql/storeUtils.ts
similarity index 100%
rename from src/utilities/storeUtils.ts
rename to src/utilities/graphql/storeUtils.ts
diff --git a/src/utilities/transform.ts b/src/utilities/graphql/transform.ts
similarity index 99%
rename from src/utilities/transform.ts
rename to src/utilities/graphql/transform.ts
index 65d6fffcdc2..b63ed2680d6 100644
--- a/src/utilities/transform.ts
+++ b/src/utilities/graphql/transform.ts
@@ -21,7 +21,7 @@ import {
getFragmentDefinitions,
getMainDefinition,
} from './getFromAST';
-import { filterInPlace } from './util/filterInPlace';
+import { filterInPlace } from '../common/filterInPlace';
import { isField, isInlineFragment } from './storeUtils';
import {
createFragmentMap,
diff --git a/src/utilities/index.ts b/src/utilities/index.ts
deleted file mode 100644
index 210b36e167d..00000000000
--- a/src/utilities/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export * from './directives';
-export * from './fragments';
-export * from './getFromAST';
-export * from './transform';
-export * from './storeUtils';
-export * from './util/assign';
-export * from './util/canUse';
-export * from './util/cloneDeep';
-export * from './util/environment';
-export * from './util/errorHandling';
-export * from './util/isEqual';
-export * from './util/maybeDeepFreeze';
-export * from './util/mergeDeep';
-export * from './util/stripSymbols';
diff --git a/src/util/Observable.ts b/src/utilities/observables/Observable.ts
similarity index 100%
rename from src/util/Observable.ts
rename to src/utilities/observables/Observable.ts
diff --git a/src/util/observables.ts b/src/utilities/observables/observables.ts
similarity index 100%
rename from src/util/observables.ts
rename to src/utilities/observables/observables.ts