🚨 Active Supply Chain Attack:node-ipc Package Compromised.Learn More
Socket
Book a DemoSign in
Socket

@micro-graphql/hooks

Package Overview
Dependencies
Maintainers
1
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@micro-graphql/hooks - npm Package Compare versions

Comparing version
1.0.1
to
1.0.2
+4
lib/use-client-query.d.ts
import { DocumentNode } from 'graphql/language/ast';
export declare type UseClientQueryResult<TData> = [TData, (data: TData) => void];
export declare function useClientQuery<TData, TVariables>(query: DocumentNode, variables: TVariables | undefined, initialData: TData): UseClientQueryResult<TData>;
//# sourceMappingURL=use-client-query.d.ts.map
{"version":3,"file":"use-client-query.d.ts","sourceRoot":"","sources":["../src/use-client-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,oBAAY,oBAAoB,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC;AAEzE,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAC/C,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,WAAW,EAAE,KAAK,GAChB,oBAAoB,CAAC,KAAK,CAAC,CA0C7B"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const context_1 = require("./context");
function useClientQuery(query, variables, initialData) {
const client = context_1.useClient();
const [, setRerender] = React.useState({});
const preparedQuery = React.useMemo(() => client.cache.prepareQuery(query), [client, query]);
const firstRenderRef = React.useRef(true);
if (firstRenderRef.current) {
firstRenderRef.current = false;
const data = client.cache.readQuery(preparedQuery, variables);
if (typeof data === 'undefined' && typeof initialData !== 'undefined') {
client.cache.writeQuery(preparedQuery, variables, initialData);
}
}
const dataRef = React.useRef(initialData);
const initialRenderRef = React.useRef(true);
initialRenderRef.current = true;
const unsubscribe = React.useMemo(() => client.cache.subscribe(preparedQuery, variables, (data) => {
dataRef.current = data;
if (!initialRenderRef.current) {
setRerender({});
}
}), [client, preparedQuery, variables, setRerender]);
initialRenderRef.current = false;
React.useEffect(() => unsubscribe, [unsubscribe]);
const writeQuery = React.useCallback((data) => {
client.cache.writeQuery(preparedQuery, variables, data);
}, [client, preparedQuery, variables]);
return [dataRef.current, writeQuery];
}
exports.useClientQuery = useClientQuery;
//# sourceMappingURL=use-client-query.js.map
{"version":3,"file":"use-client-query.js","sourceRoot":"","sources":["../src/use-client-query.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAG/B,uCAAsC;AAItC,SAAgB,cAAc,CAC7B,KAAmB,EACnB,SAAiC,EACjC,WAAkB;IAElB,MAAM,MAAM,GAAG,mBAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAK,EAAE,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7F,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,cAAc,CAAC,OAAO,EAAE;QAC3B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;QAE/B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAC9D,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE;YACtE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;SAC/D;KACD;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAQ,WAAW,CAAC,CAAC;IACjD,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,aAAa,EACb,SAAS,EACT,CAAC,IAAI,EAAE,EAAE;QACR,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9B,WAAW,CAAC,EAAE,CAAC,CAAC;SAChB;IACF,CAAC,CACD,EACD,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAC/C,CAAC;IAEF,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;IAEjC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAW,EAAQ,EAAE;QAC1D,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAEvC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC;AA9CD,wCA8CC"}
import * as React from 'react';
import { DocumentNode } from 'graphql/language/ast';
import { useClient } from './context';
export type UseClientQueryResult<TData> = [TData, (data: TData) => void];
export function useClientQuery<TData, TVariables>(
query: DocumentNode,
variables: TVariables | undefined,
initialData: TData
): UseClientQueryResult<TData> {
const client = useClient();
const [, setRerender] = React.useState<{}>({});
const preparedQuery = React.useMemo(() => client.cache.prepareQuery(query), [client, query]);
const firstRenderRef = React.useRef(true);
if (firstRenderRef.current) {
firstRenderRef.current = false;
const data = client.cache.readQuery(preparedQuery, variables);
if (typeof data === 'undefined' && typeof initialData !== 'undefined') {
client.cache.writeQuery(preparedQuery, variables, initialData);
}
}
const dataRef = React.useRef<TData>(initialData);
const initialRenderRef = React.useRef(true);
initialRenderRef.current = true;
const unsubscribe = React.useMemo(
() => client.cache.subscribe<TData, TVariables>(
preparedQuery,
variables,
(data) => {
dataRef.current = data;
if (!initialRenderRef.current) {
setRerender({});
}
}
),
[client, preparedQuery, variables, setRerender]
);
initialRenderRef.current = false;
React.useEffect(() => unsubscribe, [unsubscribe]);
const writeQuery = React.useCallback((data: TData): void => {
client.cache.writeQuery(preparedQuery, variables, data);
}, [client, preparedQuery, variables]);
return [dataRef.current, writeQuery];
}
/* eslint-disable import/no-extraneous-dependencies */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import * as React from 'react';
import { act, renderHook, RenderHookResult } from '@testing-library/react-hooks';
import 'jest-fetch-mock';
import gql from 'graphql-tag';
import * as merge from 'deepmerge';
import {
createCache,
createClient,
IMicroGraphQLClient
} from '@micro-graphql/core';
import {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
MicroGraphQLProvider,
useClientQuery,
UseClientQueryResult
} from '../src';
const query = gql`
query HomeClient {
home {
selectedEpisode
}
}
`;
interface IHomeClientQuery {
home: {
__typename: 'Home';
selectedEpisode: string;
};
}
const initialData: IHomeClientQuery = {
home: {
__typename: 'Home',
selectedEpisode: 'ZmlsbXM6MQ=='
}
};
// eslint-disable-next-line max-len
type RenderFunc = (d?: IHomeClientQuery | undefined) => RenderHookResult<unknown, UseClientQueryResult<IHomeClientQuery | undefined>>;
describe('use-client-query', () => {
describe('client', () => {
let client: IMicroGraphQLClient;
let render: RenderFunc;
beforeEach(() => {
global.fetch.resetMocks();
global.fetch.mockResponse('Some genaric error message');
client = createClient({
cache: createCache(),
fetch: global.fetch,
url: 'https://swapi-graphql.netlify.com/.netlify/functions/index'
});
// eslint-disable-next-line max-len
render = (d: IHomeClientQuery | undefined): RenderHookResult<unknown, UseClientQueryResult<IHomeClientQuery | undefined>> => renderHook(
() => useClientQuery(query, undefined, d),
{
wrapper: ({ children }) => (
<MicroGraphQLProvider client={client}>
{children}
</MicroGraphQLProvider>
)
}
);
});
it('does not set initial data for undefined', async () => {
const wrapper = render(undefined);
expect(wrapper.result.current[0]).toEqual(undefined);
wrapper.unmount();
});
it('get initial data', async () => {
const wrapper = render(initialData);
expect(wrapper.result.current[0]).toEqual(initialData);
wrapper.unmount();
});
it('receives updated data from cache', async () => {
const wrapper = render(initialData);
expect(wrapper.result.current[0]).toEqual(initialData);
const newData: IHomeClientQuery = merge(
initialData,
{
home: {
selectedEpisode: 'rofl'
}
}
);
act(() => wrapper.result.current[1](newData));
expect(wrapper.result.current[0]).toEqual(newData);
wrapper.unmount();
});
});
});
+1
-0
export * from './context';
export * from './react';
export * from './use-client-query';
export * from './use-mutation';
export * from './use-query';
//# sourceMappingURL=index.d.ts.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}

@@ -7,4 +7,5 @@ "use strict";

__export(require("./context"));
__export(require("./use-client-query"));
__export(require("./use-mutation"));
__export(require("./use-query"));
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,+BAA0B;AAE1B,oCAA+B;AAC/B,iCAA4B"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,+BAA0B;AAE1B,wCAAmC;AACnC,oCAA+B;AAC/B,iCAA4B"}

@@ -1,1 +0,1 @@

{"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../src/use-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,MAAM,qBAAqB,CAAC;AAK7B,MAAM,WAAW,eAAe,CAAC,KAAK,CAAE,SAAQ,mBAAmB,CAAC,KAAK,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,gBAChB,SAAQ,yBAAyB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EACzC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,OAAO,GAAE,gBAGR,GACC,eAAe,CAAC,KAAK,CAAC,CA2CxB"}
{"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../src/use-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACN,mBAAmB,EACnB,yBAAyB,EACzB,MAAM,qBAAqB,CAAC;AAK7B,MAAM,WAAW,eAAe,CAAC,KAAK,CAAE,SAAQ,mBAAmB,CAAC,KAAK,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,gBAChB,SAAQ,yBAAyB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EACzC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,OAAO,GAAE,gBAGR,GACC,eAAe,CAAC,KAAK,CAAC,CA8CxB"}

@@ -13,11 +13,13 @@ "use strict";

const initialRenderRef = React.useRef(true);
const preparedQuery = React.useMemo(() => client.cache.prepareQuery(query), [client, query]);
const { skip, skipCache } = options;
initialRenderRef.current = true;
const dataRef = React.useRef(undefined);
const unsubscribe = React.useMemo(() => client.cache.subscribe(query, variables, (data) => {
const unsubscribe = React.useMemo(() => client.cache.subscribe(preparedQuery, variables, (data) => {
dataRef.current = data;
/* istanbul ignore next */
if (!initialRenderRef.current) {
setRerender({});
}
}), [client, query, variables, setRerender]);
}), [client, preparedQuery, variables, setRerender]);
initialRenderRef.current = false;

@@ -24,0 +26,0 @@ React.useEffect(() => unsubscribe, [unsubscribe]);

@@ -1,1 +0,1 @@

{"version":3,"file":"use-query.js","sourceRoot":"","sources":["../src/use-query.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAQ/B,uCAAsC;AACtC,+CAA4D;AAY5D,SAAgB,QAAQ,CACvB,KAAmB,EACnB,SAAiC,EACjC,UAA4B;IAC3B,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,KAAK;CAChB;IAED,MAAM,MAAM,GAAG,mBAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAoB,SAAS,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,KAAK,EACL,SAAS,EACT,CAAC,IAAI,EAAE,EAAE;QACR,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9B,WAAW,CAAC,EAAE,CAAC,CAAC;SAChB;IACF,CAAC,CACD,EACD,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CACvC,CAAC;IAEF,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;IAEjC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SACjB;QAED,OAAO,MAAM,CAAC,KAAK,CAAoB,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAExC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,wBAAU,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9D,OAAO;QACN,GAAG,MAAM;QACT,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,OAAO,EAAE,KAAK,KAAK,6BAAe,CAAC,OAAO;QAC1C,YAAY,EAAE,KAAK;KACnB,CAAC;AACH,CAAC;AAlDD,4BAkDC"}
{"version":3,"file":"use-query.js","sourceRoot":"","sources":["../src/use-query.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAQ/B,uCAAsC;AACtC,+CAA4D;AAY5D,SAAgB,QAAQ,CACvB,KAAmB,EACnB,SAAiC,EACjC,UAA4B;IAC3B,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,KAAK;CAChB;IAED,MAAM,MAAM,GAAG,mBAAS,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7F,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEpC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAoB,SAAS,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAChC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAC3B,aAAa,EACb,SAAS,EACT,CAAC,IAAI,EAAE,EAAE;QACR,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,0BAA0B;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC9B,WAAW,CAAC,EAAE,CAAC,CAAC;SAChB;IACF,CAAC,CACD,EACD,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAC/C,CAAC;IAEF,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;IAEjC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,IAAI,EAAE;YACT,OAAO,SAAS,CAAC;SACjB;QAED,OAAO,MAAM,CAAC,KAAK,CAAoB,KAAK,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAExC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,wBAAU,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAE9D,OAAO;QACN,GAAG,MAAM;QACT,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,OAAO,EAAE,KAAK,KAAK,6BAAe,CAAC,OAAO;QAC1C,YAAY,EAAE,KAAK;KACnB,CAAC;AACH,CAAC;AArDD,4BAqDC"}
{
"name": "@micro-graphql/hooks",
"version": "1.0.1",
"version": "1.0.2",
"license": "MIT",

@@ -18,2 +18,3 @@ "main": "lib/index.js",

"@micro-graphql/core": "^1.0.0",
"deepmerge": "^4.2.2",
"graphql": "^14.6.0",

@@ -24,3 +25,3 @@ "react": "^16.12.0",

},
"gitHead": "0533bda560f049182e86dd952a2703ceb2f18d57"
"gitHead": "5e461fa5df1540285f958924e5ba1fb924269f46"
}
export * from './context';
export * from './react';
export * from './use-client-query';
export * from './use-mutation';
export * from './use-query';

@@ -34,2 +34,4 @@ import * as React from 'react';

const preparedQuery = React.useMemo(() => client.cache.prepareQuery(query), [client, query]);
const { skip, skipCache } = options;

@@ -41,6 +43,7 @@

() => client.cache.subscribe<TData, TVariables>(
query,
preparedQuery,
variables,
(data) => {
dataRef.current = data;
/* istanbul ignore next */
if (!initialRenderRef.current) {

@@ -51,3 +54,3 @@ setRerender({});

),
[client, query, variables, setRerender]
[client, preparedQuery, variables, setRerender]
);

@@ -54,0 +57,0 @@

Sorry, the diff of this file is not supported yet