@teambit/graphql 0.0.599 → 0.0.607

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,7 @@ export declare class GraphqlUI {
28
28
  client: GraphQLClient<any>;
29
29
  children: ReactNode;
30
30
  }) => JSX.Element;
31
- renderHooks: GraphqlRenderLifecycle;
31
+ readonly renderHooks: GraphqlRenderLifecycle;
32
32
  static runtime: import("@teambit/harmony").RuntimeDefinition;
33
33
  static dependencies: never[];
34
34
  static slots: never[];
@@ -1 +1 @@
1
- {"version":3,"sources":["graphql.ui.runtime.tsx"],"names":["GraphqlUI","client","children","GraphqlRenderLifecycle","createClient","uri","state","subscriptionUri","ApolloClient","link","createLink","cache","createCache","createSsrClient","serverUrl","headers","ApolloLink","from","logError","credentials","fetch","crossFetch","ssrMode","InMemoryCache","restore","httpLink","HttpLink","subsLink","WebSocketLink","options","reconnect","undefined","hybridLink","errorLogger","provider","graphqlUI","UIRuntime","GraphqlAspect","addRuntime"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport { UIRuntime } from '@teambit/ui';\n\nimport { InMemoryCache, ApolloClient, ApolloLink, HttpLink, createHttpLink } from '@apollo/client';\nimport type { NormalizedCacheObject } from '@apollo/client';\nimport { WebSocketLink } from '@apollo/client/link/ws';\nimport { onError } from '@apollo/client/link/error';\n\nimport crossFetch from 'cross-fetch';\n\nimport { createSplitLink } from './create-link';\nimport { GraphQLProvider } from './graphql-provider';\nimport { GraphqlAspect } from './graphql.aspect';\nimport { GraphqlRenderLifecycle } from './render-lifecycle';\nimport { logError } from './logging';\n\n/**\n * Type of gql client.\n * Used to abstract Apollo client, so consumers could import the type from graphql.ui, and not have to depend on @apollo/client directly\n * */\nexport type GraphQLClient<T> = ApolloClient<T>;\n\ntype ClientOptions = {\n /** Preset in-memory cache with state (e.g. continue state from SSR) */\n state?: NormalizedCacheObject;\n /** endpoint for websocket connections */\n subscriptionUri?: string;\n};\n\nexport class GraphqlUI {\n createClient(uri: string, { state, subscriptionUri }: ClientOptions = {}) {\n const client = new ApolloClient({\n link: this.createLink(uri, { subscriptionUri }),\n cache: this.createCache({ state }),\n });\n\n return client;\n }\n\n createSsrClient({ serverUrl, headers }: { serverUrl: string; headers: any }) {\n const link = ApolloLink.from([\n onError(logError),\n createHttpLink({\n credentials: 'include',\n uri: serverUrl,\n headers,\n fetch: crossFetch,\n }),\n ]);\n\n const client = new ApolloClient({\n ssrMode: true,\n link,\n cache: this.createCache(),\n });\n\n return client;\n }\n\n private createCache({ state }: { state?: NormalizedCacheObject } = {}) {\n const cache = new InMemoryCache();\n\n if (state) cache.restore(state);\n\n return cache;\n }\n\n private createLink(uri: string, { subscriptionUri }: { subscriptionUri?: string } = {}) {\n const httpLink = new HttpLink({ credentials: 'include', uri });\n const subsLink = subscriptionUri\n ? new WebSocketLink({\n uri: subscriptionUri,\n options: { reconnect: true },\n })\n : undefined;\n\n const hybridLink = subsLink ? createSplitLink(httpLink, subsLink) : httpLink;\n const errorLogger = onError(logError);\n\n return ApolloLink.from([errorLogger, hybridLink]);\n }\n\n /**\n * get the graphQL provider\n */\n getProvider = ({ client, children }: { client: GraphQLClient<any>; children: ReactNode }) => {\n return <GraphQLProvider client={client}>{children}</GraphQLProvider>;\n };\n\n renderHooks = new GraphqlRenderLifecycle(this);\n\n static runtime = UIRuntime;\n static dependencies = [];\n static slots = [];\n\n static async provider() {\n const graphqlUI = new GraphqlUI();\n\n return graphqlUI;\n }\n}\n\nGraphqlAspect.addRuntime(GraphqlUI);\n"]}
1
+ {"version":3,"sources":["graphql.ui.runtime.tsx"],"names":["GraphqlUI","client","children","GraphqlRenderLifecycle","createClient","uri","state","subscriptionUri","ApolloClient","link","createLink","cache","createCache","createSsrClient","serverUrl","headers","ApolloLink","from","logError","credentials","fetch","crossFetch","ssrMode","InMemoryCache","restore","httpLink","HttpLink","subsLink","WebSocketLink","options","reconnect","undefined","hybridLink","errorLogger","provider","graphqlUI","UIRuntime","GraphqlAspect","addRuntime"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport { UIRuntime } from '@teambit/ui';\n\nimport { InMemoryCache, ApolloClient, ApolloLink, HttpLink, createHttpLink } from '@apollo/client';\nimport type { NormalizedCacheObject } from '@apollo/client';\nimport { WebSocketLink } from '@apollo/client/link/ws';\nimport { onError } from '@apollo/client/link/error';\n\nimport crossFetch from 'cross-fetch';\n\nimport { createSplitLink } from './create-link';\nimport { GraphQLProvider } from './graphql-provider';\nimport { GraphqlAspect } from './graphql.aspect';\nimport { GraphqlRenderLifecycle } from './render-lifecycle';\nimport { logError } from './logging';\n\n/**\n * Type of gql client.\n * Used to abstract Apollo client, so consumers could import the type from graphql.ui, and not have to depend on @apollo/client directly\n * */\nexport type GraphQLClient<T> = ApolloClient<T>;\n\ntype ClientOptions = {\n /** Preset in-memory cache with state (e.g. continue state from SSR) */\n state?: NormalizedCacheObject;\n /** endpoint for websocket connections */\n subscriptionUri?: string;\n};\n\nexport class GraphqlUI {\n createClient(uri: string, { state, subscriptionUri }: ClientOptions = {}) {\n const client = new ApolloClient({\n link: this.createLink(uri, { subscriptionUri }),\n cache: this.createCache({ state }),\n });\n\n return client;\n }\n\n createSsrClient({ serverUrl, headers }: { serverUrl: string; headers: any }) {\n const link = ApolloLink.from([\n onError(logError),\n createHttpLink({\n credentials: 'include',\n uri: serverUrl,\n headers,\n fetch: crossFetch,\n }),\n ]);\n\n const client = new ApolloClient({\n ssrMode: true,\n link,\n cache: this.createCache(),\n });\n\n return client;\n }\n\n private createCache({ state }: { state?: NormalizedCacheObject } = {}) {\n const cache = new InMemoryCache();\n\n if (state) cache.restore(state);\n\n return cache;\n }\n\n private createLink(uri: string, { subscriptionUri }: { subscriptionUri?: string } = {}) {\n const httpLink = new HttpLink({ credentials: 'include', uri });\n const subsLink = subscriptionUri\n ? new WebSocketLink({\n uri: subscriptionUri,\n options: { reconnect: true },\n })\n : undefined;\n\n const hybridLink = subsLink ? createSplitLink(httpLink, subsLink) : httpLink;\n const errorLogger = onError(logError);\n\n return ApolloLink.from([errorLogger, hybridLink]);\n }\n\n /**\n * get the graphQL provider\n */\n getProvider = ({ client, children }: { client: GraphQLClient<any>; children: ReactNode }) => {\n return <GraphQLProvider client={client}>{children}</GraphQLProvider>;\n };\n\n readonly renderHooks = new GraphqlRenderLifecycle(this);\n\n static runtime = UIRuntime;\n static dependencies = [];\n static slots = [];\n\n static async provider() {\n const graphqlUI = new GraphqlUI();\n\n return graphqlUI;\n }\n}\n\nGraphqlAspect.addRuntime(GraphqlUI);\n"]}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import type { NormalizedCacheObject } from '@apollo/client';
2
+ import type { ApolloClient, NormalizedCacheObject } from '@apollo/client';
3
3
  import type { BrowserData, RenderLifecycle } from '@teambit/ui';
4
4
  import type { GraphqlUI, GraphQLClient } from './graphql.ui.runtime';
5
5
  declare type RenderContext = {
@@ -27,11 +27,13 @@ export declare class GraphqlRenderLifecycle implements RenderLifecycle<RenderCon
27
27
  deserialize: (raw?: string | undefined) => {
28
28
  state: NormalizedCacheObject | undefined;
29
29
  };
30
+ private _client;
30
31
  browserInit: ({ state }?: {
31
32
  state?: NormalizedCacheObject | undefined;
32
33
  }) => {
33
- client: import("@apollo/client").ApolloClient<NormalizedCacheObject>;
34
+ client: ApolloClient<NormalizedCacheObject>;
34
35
  };
36
+ getClient(): ApolloClient<NormalizedCacheObject>;
35
37
  private BrowserGqlProvider;
36
38
  reactContext: ({ renderCtx, children }: {
37
39
  renderCtx?: RenderContext | undefined;
@@ -117,6 +117,7 @@ class GraphqlRenderLifecycle {
117
117
  state
118
118
  };
119
119
  });
120
+ (0, _defineProperty2().default)(this, "_client", undefined);
120
121
  (0, _defineProperty2().default)(this, "browserInit", ({
121
122
  state
122
123
  } = {}) => {
@@ -129,6 +130,7 @@ class GraphqlRenderLifecycle {
129
130
  state,
130
131
  subscriptionUri: wsUrl
131
132
  });
133
+ this._client = client;
132
134
  return {
133
135
  client
134
136
  };
@@ -145,6 +147,11 @@ class GraphqlRenderLifecycle {
145
147
  (0, _defineProperty2().default)(this, "reactContext", _uiFoundationUi().isBrowser ? this.BrowserGqlProvider : ServerGqlProvider);
146
148
  }
147
149
 
150
+ getClient() {
151
+ if (!this._client) return this.browserInit().client;
152
+ return this._client;
153
+ }
154
+
148
155
  }
149
156
 
150
157
  exports.GraphqlRenderLifecycle = GraphqlRenderLifecycle;
@@ -1 +1 @@
1
- {"version":3,"sources":["render-lifecycle.tsx"],"names":["ALLOWED_HEADERS","GraphqlRenderLifecycle","constructor","graphqlUI","browser","server","undefined","port","serverUrl","client","createSsrClient","headers","connection","ctx","app","json","JSON","stringify","extract","raw","state","parse","e","console","error","location","window","isInsecure","protocol","wsUrl","host","createClient","subscriptionUri","renderCtx","children","TypeError","isBrowser","BrowserGqlProvider","ServerGqlProvider"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport type { NormalizedCacheObject } from '@apollo/client';\nimport pick from 'lodash.pick';\n\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport type { BrowserData, RenderLifecycle } from '@teambit/ui';\n\nimport type { GraphqlUI, GraphQLClient } from './graphql.ui.runtime';\nimport { GraphQLProvider } from './graphql-provider';\n\ntype RenderContext = {\n client: GraphQLClient<any>;\n};\n\nconst ALLOWED_HEADERS = ['cookie'];\n\nexport class GraphqlRenderLifecycle implements RenderLifecycle<RenderContext, { state?: NormalizedCacheObject }> {\n constructor(private graphqlUI: GraphqlUI) {}\n\n serverInit = ({ browser, server }: { browser?: BrowserData; server?: { port: number } } = {}) => {\n if (!browser) return undefined;\n\n const port = server?.port || 3000;\n const serverUrl = `http://localhost:${port}/graphql`;\n\n const client = this.graphqlUI.createSsrClient({\n serverUrl,\n headers: pick(browser.connection.headers, ALLOWED_HEADERS),\n });\n\n const ctx: RenderContext = { client };\n return ctx;\n };\n\n /**\n * Eagerly and recursively execute all gql queries in the app.\n * Data will be available in gqlClient.extract()\n */\n onBeforeRender = async (ctx: RenderContext, app: ReactNode) => {\n await getDataFromTree(app);\n };\n\n serialize = (ctx?: RenderContext) => {\n const client = ctx?.client;\n if (!client) return undefined;\n\n return {\n json: JSON.stringify(client.extract()),\n };\n };\n\n deserialize = (raw?: string) => {\n if (!raw) return { state: undefined };\n let state: NormalizedCacheObject | undefined;\n try {\n state = JSON.parse(raw);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('[GraphQL] failed deserializing state from DOM', e);\n }\n\n return { state };\n };\n\n browserInit = ({ state }: { state?: NormalizedCacheObject } = {}) => {\n const { location } = window;\n const isInsecure = location.protocol === 'http:';\n const wsUrl = `${isInsecure ? 'ws:' : 'wss:'}//${location.host}/subscriptions`;\n\n const client = this.graphqlUI.createClient('/graphql', { state, subscriptionUri: wsUrl });\n\n return { client };\n };\n\n private BrowserGqlProvider = ({ renderCtx, children }: { renderCtx?: RenderContext; children: ReactNode }) => {\n if (!renderCtx?.client) throw new TypeError('GQL client is not initialized, make sure `.browserInit()` executes');\n\n return <this.graphqlUI.getProvider client={renderCtx?.client}>{children}</this.graphqlUI.getProvider>;\n };\n\n reactContext = isBrowser ? this.BrowserGqlProvider : ServerGqlProvider;\n}\n\nfunction ServerGqlProvider({ renderCtx, children }: { renderCtx?: RenderContext; children: ReactNode }) {\n if (!renderCtx?.client)\n throw new TypeError('GQL client has not been initialized during SSR, make sure `.serverInit()` executes');\n\n const { client } = renderCtx;\n return <GraphQLProvider client={client}>{children}</GraphQLProvider>;\n}\n"]}
1
+ {"version":3,"sources":["render-lifecycle.tsx"],"names":["ALLOWED_HEADERS","GraphqlRenderLifecycle","constructor","graphqlUI","browser","server","undefined","port","serverUrl","client","createSsrClient","headers","connection","ctx","app","json","JSON","stringify","extract","raw","state","parse","e","console","error","location","window","isInsecure","protocol","wsUrl","host","createClient","subscriptionUri","_client","renderCtx","children","TypeError","isBrowser","BrowserGqlProvider","ServerGqlProvider","getClient","browserInit"],"mappings":"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","sourcesContent":["import React, { ReactNode } from 'react';\nimport { getDataFromTree } from '@apollo/client/react/ssr';\nimport type { ApolloClient, NormalizedCacheObject } from '@apollo/client';\nimport pick from 'lodash.pick';\n\nimport { isBrowser } from '@teambit/ui-foundation.ui.is-browser';\nimport type { BrowserData, RenderLifecycle } from '@teambit/ui';\n\nimport type { GraphqlUI, GraphQLClient } from './graphql.ui.runtime';\nimport { GraphQLProvider } from './graphql-provider';\n\ntype RenderContext = {\n client: GraphQLClient<any>;\n};\n\nconst ALLOWED_HEADERS = ['cookie'];\n\nexport class GraphqlRenderLifecycle implements RenderLifecycle<RenderContext, { state?: NormalizedCacheObject }> {\n constructor(private graphqlUI: GraphqlUI) {}\n\n serverInit = ({ browser, server }: { browser?: BrowserData; server?: { port: number } } = {}) => {\n if (!browser) return undefined;\n\n const port = server?.port || 3000;\n const serverUrl = `http://localhost:${port}/graphql`;\n\n const client = this.graphqlUI.createSsrClient({\n serverUrl,\n headers: pick(browser.connection.headers, ALLOWED_HEADERS),\n });\n\n const ctx: RenderContext = { client };\n return ctx;\n };\n\n /**\n * Eagerly and recursively execute all gql queries in the app.\n * Data will be available in gqlClient.extract()\n */\n onBeforeRender = async (ctx: RenderContext, app: ReactNode) => {\n await getDataFromTree(app);\n };\n\n serialize = (ctx?: RenderContext) => {\n const client = ctx?.client;\n if (!client) return undefined;\n\n return {\n json: JSON.stringify(client.extract()),\n };\n };\n\n deserialize = (raw?: string) => {\n if (!raw) return { state: undefined };\n let state: NormalizedCacheObject | undefined;\n try {\n state = JSON.parse(raw);\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('[GraphQL] failed deserializing state from DOM', e);\n }\n\n return { state };\n };\n\n private _client: ApolloClient<NormalizedCacheObject> | undefined = undefined;\n\n browserInit = ({ state }: { state?: NormalizedCacheObject } = {}) => {\n const { location } = window;\n const isInsecure = location.protocol === 'http:';\n const wsUrl = `${isInsecure ? 'ws:' : 'wss:'}//${location.host}/subscriptions`;\n\n const client = this.graphqlUI.createClient('/graphql', { state, subscriptionUri: wsUrl });\n this._client = client;\n\n return { client };\n };\n\n getClient() {\n if (!this._client) return this.browserInit().client;\n return this._client;\n }\n\n private BrowserGqlProvider = ({ renderCtx, children }: { renderCtx?: RenderContext; children: ReactNode }) => {\n if (!renderCtx?.client) throw new TypeError('GQL client is not initialized, make sure `.browserInit()` executes');\n\n return <this.graphqlUI.getProvider client={renderCtx?.client}>{children}</this.graphqlUI.getProvider>;\n };\n\n reactContext = isBrowser ? this.BrowserGqlProvider : ServerGqlProvider;\n}\n\nfunction ServerGqlProvider({ renderCtx, children }: { renderCtx?: RenderContext; children: ReactNode }) {\n if (!renderCtx?.client)\n throw new TypeError('GQL client has not been initialized during SSR, make sure `.serverInit()` executes');\n\n const { client } = renderCtx;\n return <GraphQLProvider client={client}>{children}</GraphQLProvider>;\n}\n"]}
@@ -87,7 +87,7 @@ export class GraphqlUI {
87
87
  return <GraphQLProvider client={client}>{children}</GraphQLProvider>;
88
88
  };
89
89
 
90
- renderHooks = new GraphqlRenderLifecycle(this);
90
+ readonly renderHooks = new GraphqlRenderLifecycle(this);
91
91
 
92
92
  static runtime = UIRuntime;
93
93
  static dependencies = [];
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/graphql",
3
- "version": "0.0.599",
3
+ "version": "0.0.607",
4
4
  "homepage": "https://bit.dev/teambit/harmony/graphql",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "graphql",
9
- "version": "0.0.599"
9
+ "version": "0.0.607"
10
10
  },
11
11
  "dependencies": {
12
12
  "@teambit/harmony": "0.2.11",
@@ -32,11 +32,11 @@
32
32
  "bufferutil": "4.0.3",
33
33
  "@babel/runtime": "7.12.18",
34
34
  "core-js": "^3.0.0",
35
- "@teambit/cli": "0.0.411",
36
- "@teambit/logger": "0.0.500",
35
+ "@teambit/cli": "0.0.419",
36
+ "@teambit/logger": "0.0.508",
37
37
  "@teambit/toolbox.network.get-port": "0.0.112",
38
- "@teambit/preview": "0.0.599",
39
- "@teambit/ui": "0.0.599",
38
+ "@teambit/preview": "0.0.607",
39
+ "@teambit/ui": "0.0.607",
40
40
  "@teambit/ui-foundation.ui.is-browser": "0.0.485"
41
41
  },
42
42
  "devDependencies": {
@@ -54,7 +54,7 @@
54
54
  "peerDependencies": {
55
55
  "@apollo/client": "^3.0.0",
56
56
  "graphql": "14.7.0",
57
- "@teambit/legacy": "1.0.198",
57
+ "@teambit/legacy": "1.0.202",
58
58
  "react-dom": "^16.8.0 || ^17.0.0",
59
59
  "react": "^16.8.0 || ^17.0.0"
60
60
  },
@@ -84,7 +84,7 @@
84
84
  "react": "-"
85
85
  },
86
86
  "peerDependencies": {
87
- "@teambit/legacy": "1.0.198",
87
+ "@teambit/legacy": "1.0.202",
88
88
  "react-dom": "^16.8.0 || ^17.0.0",
89
89
  "react": "^16.8.0 || ^17.0.0"
90
90
  }
@@ -1,6 +1,6 @@
1
1
  import React, { ReactNode } from 'react';
2
2
  import { getDataFromTree } from '@apollo/client/react/ssr';
3
- import type { NormalizedCacheObject } from '@apollo/client';
3
+ import type { ApolloClient, NormalizedCacheObject } from '@apollo/client';
4
4
  import pick from 'lodash.pick';
5
5
 
6
6
  import { isBrowser } from '@teambit/ui-foundation.ui.is-browser';
@@ -63,16 +63,24 @@ export class GraphqlRenderLifecycle implements RenderLifecycle<RenderContext, {
63
63
  return { state };
64
64
  };
65
65
 
66
+ private _client: ApolloClient<NormalizedCacheObject> | undefined = undefined;
67
+
66
68
  browserInit = ({ state }: { state?: NormalizedCacheObject } = {}) => {
67
69
  const { location } = window;
68
70
  const isInsecure = location.protocol === 'http:';
69
71
  const wsUrl = `${isInsecure ? 'ws:' : 'wss:'}//${location.host}/subscriptions`;
70
72
 
71
73
  const client = this.graphqlUI.createClient('/graphql', { state, subscriptionUri: wsUrl });
74
+ this._client = client;
72
75
 
73
76
  return { client };
74
77
  };
75
78
 
79
+ getClient() {
80
+ if (!this._client) return this.browserInit().client;
81
+ return this._client;
82
+ }
83
+
76
84
  private BrowserGqlProvider = ({ renderCtx, children }: { renderCtx?: RenderContext; children: ReactNode }) => {
77
85
  if (!renderCtx?.client) throw new TypeError('GQL client is not initialized, make sure `.browserInit()` executes');
78
86