@jetshop/core 6.3.7 → 6.3.8-alpha-6
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.
- package/ChannelHandler/channelUtils.js +1 -1
- package/ChannelHandler/channelUtils.js.map +1 -1
- package/boot/apollo.js +3 -39
- package/boot/apollo.js.map +1 -1
- package/boot/client/startClient.js +1 -16
- package/boot/client/startClient.js.map +1 -1
- package/boot/server/createApolloServer.js +0 -6
- package/boot/server/createApolloServer.js.map +1 -1
- package/boot/server/createRenderer.d.ts +2 -2
- package/boot/server/createRenderer.js +12 -25
- package/boot/server/createRenderer.js.map +1 -1
- package/boot/server/createServer.js +0 -11
- package/boot/server/createServer.js.map +1 -1
- package/boot/server/index.d.ts +0 -2
- package/boot/server/index.js +4 -16
- package/boot/server/index.js.map +1 -1
- package/boot/worker/createApolloServerWorker.d.ts +18 -0
- package/boot/worker/createApolloServerWorker.js +119 -0
- package/boot/worker/createApolloServerWorker.js.map +1 -0
- package/boot/worker/createRenderer.d.ts +23 -0
- package/boot/worker/createRenderer.js +242 -0
- package/boot/worker/createRenderer.js.map +1 -0
- package/boot/worker/getPrefetchFiles.d.ts +10 -0
- package/boot/worker/getPrefetchFiles.js +20 -0
- package/boot/worker/getPrefetchFiles.js.map +1 -0
- package/boot/worker/getPreloadAssets.d.ts +10 -0
- package/boot/worker/getPreloadAssets.js +18 -0
- package/boot/worker/getPreloadAssets.js.map +1 -0
- package/boot/worker/index.d.ts +6 -0
- package/boot/worker/index.js +98 -0
- package/boot/worker/index.js.map +1 -0
- package/components/Auth/formFieldsFromSettings.d.ts +1 -1
- package/components/ConfigProvider.d.ts +3 -15
- package/components/ConfigProvider.js.map +1 -1
- package/components/DynamicRoute/GenericError.js +0 -4
- package/components/DynamicRoute/GenericError.js.map +1 -1
- package/components/Pagination/PaginationProvider.d.ts +0 -2
- package/components/Pagination/PaginationProvider.js +1 -10
- package/components/Pagination/PaginationProvider.js.map +1 -1
- package/global.d.ts +0 -1
- package/hooks/usePreconnectLinks.js +1 -5
- package/hooks/usePreconnectLinks.js.map +1 -1
- package/hooks/usePreconnectLinks.test.js +0 -4
- package/package.json +5 -6
- package/analytics/integrations/gtm/README.md +0 -3
- package/boot/server/IntervalQuery.d.ts +0 -32
- package/boot/server/IntervalQuery.js +0 -95
- package/boot/server/IntervalQuery.js.map +0 -1
- package/boot/server/IntervalQuery.test.js +0 -276
- package/boot/server/PersistedApolloClient.d.ts +0 -20
- package/boot/server/PersistedApolloClient.js +0 -40
- package/boot/server/PersistedApolloClient.js.map +0 -1
- package/boot/server/PersistedApolloClient.test.js +0 -234
- package/boot/server/createApolloServer.test.js +0 -114
- package/boot/server/getPreloadAssets.test.js +0 -133
- package/boot/server/persistedQueries/PersistedClient.d.ts +0 -22
- package/boot/server/persistedQueries/PersistedClient.js +0 -58
- package/boot/server/persistedQueries/PersistedClient.js.map +0 -1
- package/boot/server/persistedQueries/__tests__/getPersistedQueriesForRequest.test.js +0 -201
- package/boot/server/persistedQueries/__tests__/mockQuery.gql +0 -6
- package/boot/server/persistedQueries/getPersistedQueriesForRequest.d.ts +0 -3
- package/boot/server/persistedQueries/getPersistedQueriesForRequest.js +0 -27
- package/boot/server/persistedQueries/getPersistedQueriesForRequest.js.map +0 -1
- package/boot/server/saleSource.test.js +0 -39
- package/boot/server/salesSource.d.ts +0 -8
- package/boot/server/salesSource.js +0 -16
- package/boot/server/salesSource.js.map +0 -1
- package/errorReporting.browser.d.ts +0 -3
- package/errorReporting.browser.js +0 -17
- package/errorReporting.browser.js.map +0 -1
- package/errorReporting.d.ts +0 -4
- package/errorReporting.js +0 -24
- package/errorReporting.js.map +0 -1
- package/errorReporting.server.d.ts +0 -3
- package/errorReporting.server.js +0 -12
- package/errorReporting.server.js.map +0 -1
- package/errorReporting.shared.d.ts +0 -5
- package/errorReporting.shared.js +0 -17
- package/errorReporting.shared.js.map +0 -1
- package/polyfills.d.ts +0 -1
- package/polyfills.js +0 -58
- package/polyfills.js.map +0 -1
- package/sentry/client.d.ts +0 -1
- package/sentry/client.js +0 -30
- package/sentry/client.js.map +0 -1
- package/sentry/common.d.ts +0 -1
- package/sentry/common.js +0 -5
- package/sentry/common.js.map +0 -1
- package/sentry/server.d.ts +0 -1
- package/sentry/server.js +0 -20
- package/sentry/server.js.map +0 -1
- package/sentry/utils.d.ts +0 -1
- package/sentry/utils.js +0 -2
- package/sentry/utils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["ConfigProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAgB,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigProvider.js","sourceRoot":"","sources":["ConfigProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAgB,MAAM,OAAO,CAAC;AAM3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAkH5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,SAAS,CACV,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,EAO9B;QAP8B,EAC7B,MAAM,EAAE,UAAU,EAClB,QAAQ,OAKT,EAJI,IAAI,cAHsB,sBAI9B,CADQ;IAKP,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,CACL,oBAAC,iBAAiB,CAAC,QAAQ,kBAAC,KAAK,EAAE,MAAM,IAAM,IAAI,GAChD,QAAQ,CACkB,CAC9B,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import report from '@jetshop/core/errorReporting';
|
|
3
2
|
export const DefaultError = ({ error, info }) => (React.createElement("section", { style: {
|
|
4
3
|
width: '57ch',
|
|
5
4
|
maxWidth: '100%',
|
|
@@ -41,9 +40,6 @@ class ErrorBoundary extends React.Component {
|
|
|
41
40
|
};
|
|
42
41
|
}
|
|
43
42
|
componentDidCatch(error, info) {
|
|
44
|
-
const { extraInfo = {} } = this.props;
|
|
45
|
-
// Report to Sentry
|
|
46
|
-
report(error, Object.assign(Object.assign({}, extraInfo), { reactInfo: info }));
|
|
47
43
|
this.setState({ error, info });
|
|
48
44
|
}
|
|
49
45
|
render() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericError.js","sourceRoot":"","sources":["GenericError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"GenericError.js","sourceRoot":"","sources":["GenericError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAsB,EAAE,EAAE,CAAC,CACnE,iCACE,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,MAAM;KAChB;IAED,4BACE,KAAK,EAAE;YACL,QAAQ,EAAE,QAAQ;YAClB,YAAY,EAAE,MAAM;SACrB,4BAGE;IACL,2EAAgD;IAChD;QACE,2BACE,IAAI,EAAC,GAAG,EACR,KAAK,EAAE;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,eAAe;gBACvB,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,QAAQ;gBACjB,cAAc,EAAE,MAAM;gBACtB,UAAU,EAAE,GAAG;gBACf,UAAU,EAAE,SAAS;gBACrB,MAAM,EAAE,mBAAmB;gBAC3B,KAAK,EAAE,MAAM;aACd,gCAGC,CACA;IACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,CACxC;QACG,KAAK,IAAI;;YAAW,KAAK,CAAC,OAAO,CAAK;QACtC,IAAI,IAAI,CACP,6BACE,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,UAAU,EAAE,GAAG;gBACf,KAAK,EAAE,SAAS;aACjB,IAEA,IAAI,CAAC,cAAc,CAChB,CACP,CACG,CACP,CACO,CACX,CAAC;AAEF,MAAM,aAAc,SAAQ,KAAK,CAAC,SAGjC;IAHD;;QAIE,UAAK,GAAuB;YAC1B,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,SAAS;SAChB,CAAC;IAmBJ,CAAC;IAbC,iBAAiB,CAAC,KAAY,EAAE,IAAqB;QACnD,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAyC,CAAC;QAElE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACrB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC5B;QAED,OAAO,oBAAC,IAAI,oBAAK,IAAI,CAAC,KAAK,EAAI,CAAC;IAClC,CAAC;;AAhBM,0BAAY,GAAgC;IACjD,SAAS,EAAE,YAAY;CACxB,CAAC;AAiBJ,eAAe,aAAa,CAAC"}
|
|
@@ -8,12 +8,10 @@ export type IPaginationProps = {
|
|
|
8
8
|
defaultProductsPerPage?: number;
|
|
9
9
|
/** The query param to use for pagination. @default 'page' */
|
|
10
10
|
queryParam?: string;
|
|
11
|
-
errorReportingEnabled?: boolean;
|
|
12
11
|
} & ReactCookieProps;
|
|
13
12
|
export declare function usePagination(): import("@jetshop/core/components/Pagination/PaginationContext").PaginationState;
|
|
14
13
|
declare const _default: React.ComponentType<{
|
|
15
14
|
defaultProductsPerPage?: number;
|
|
16
15
|
queryParam?: string;
|
|
17
|
-
errorReportingEnabled?: boolean;
|
|
18
16
|
}>;
|
|
19
17
|
export default _default;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { pushHistory, replaceHistory } from '@jetshop/core/components/Filters/utils/updateHistory';
|
|
2
2
|
import PaginationContext from '@jetshop/core/components/Pagination/PaginationContext';
|
|
3
|
-
import report from '@jetshop/core/errorReporting';
|
|
4
3
|
import qs from 'qs';
|
|
5
4
|
import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
6
5
|
import { withCookies } from 'react-cookie';
|
|
@@ -46,7 +45,7 @@ const calculateOffset = (page, perPage) => {
|
|
|
46
45
|
return 0;
|
|
47
46
|
}
|
|
48
47
|
};
|
|
49
|
-
const PaginationProvider = ({ cookies, defaultProductsPerPage = 16, children, queryParam = 'page'
|
|
48
|
+
const PaginationProvider = ({ cookies, defaultProductsPerPage = 16, children, queryParam = 'page' }) => {
|
|
50
49
|
const history = useHistory();
|
|
51
50
|
const location = useLocation();
|
|
52
51
|
const [currentPage, setCurrentPage] = useState(getPageFromSearch(location, queryParam) || 1);
|
|
@@ -70,14 +69,6 @@ const PaginationProvider = ({ cookies, defaultProductsPerPage = 16, children, qu
|
|
|
70
69
|
}, [cookies]);
|
|
71
70
|
const cookieProductsPerPage = parseInt(cookies.get('perPage'), 10);
|
|
72
71
|
const perPage = cookieProductsPerPage || defaultProductsPerPage;
|
|
73
|
-
if (errorReportingEnabled && currentPage >= 1000) {
|
|
74
|
-
report(new Error('Page number is too nigh'), {
|
|
75
|
-
currentPage,
|
|
76
|
-
perPage,
|
|
77
|
-
location,
|
|
78
|
-
history
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
72
|
const value = useMemo(() => ({
|
|
82
73
|
currentPage,
|
|
83
74
|
offset: calculateOffset(currentPage, perPage),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaginationProvider.js","sourceRoot":"","sources":["PaginationProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,cAAc,EACf,MAAM,sDAAsD,CAAC;AAC9D,OAAO,iBAEN,MAAM,uDAAuD,CAAC;AAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"PaginationProvider.js","sourceRoot":"","sources":["PaginationProvider.tsx"],"names":[],"mappings":"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"}
|
package/global.d.ts
CHANGED
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { useShopConfig } from './useShopConfig';
|
|
2
2
|
export function usePreconnectLinks({ ga = false, gtm = false } = {}) {
|
|
3
|
-
const { apolloConfig
|
|
3
|
+
const { apolloConfig } = useShopConfig();
|
|
4
4
|
// These links are used with every store
|
|
5
5
|
const staticLinks = [
|
|
6
|
-
usePolyfilling && {
|
|
7
|
-
href: 'https://cdnjs.cloudflare.com',
|
|
8
|
-
crossOrigin: null
|
|
9
|
-
},
|
|
10
6
|
(apolloConfig === null || apolloConfig === void 0 ? void 0 : apolloConfig.graphQLURI) && {
|
|
11
7
|
href: apolloConfig === null || apolloConfig === void 0 ? void 0 : apolloConfig.graphQLURI,
|
|
12
8
|
crossOrigin: null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePreconnectLinks.js","sourceRoot":"","sources":["usePreconnectLinks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAYhD,MAAM,UAAU,kBAAkB,CAAC,EACjC,EAAE,GAAG,KAAK,EACV,GAAG,GAAG,KAAK,KACc,EAAE;IAC3B,MAAM,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"usePreconnectLinks.js","sourceRoot":"","sources":["usePreconnectLinks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAYhD,MAAM,UAAU,kBAAkB,CAAC,EACjC,EAAE,GAAG,KAAK,EACV,GAAG,GAAG,KAAK,KACc,EAAE;IAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;IAEzC,wCAAwC;IACxC,MAAM,WAAW,GAAG;QAClB,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU,KAAI;YAC1B,IAAI,EAAE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,UAAU;YAC9B,WAAW,EAAE,IAAI;SAClB;KACF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,+DAA+D;IAC/D,MAAM,OAAO,GAAG,EAAE;QAChB,CAAC,CAAC;YACE,kCAAkC;YAClC,wBAAwB;YACxB,iCAAiC;SAClC;QACH,CAAC,CAAC,EAAE,CAAC;IAEP,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjE,OAAO;QACL,GAAG,WAAW;QACd,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;KACzE,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jetshop/core",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.8-alpha-6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -32,19 +32,17 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"@apollo/client": "~3.13.9",
|
|
35
|
+
"@apollo/server": "^4.11.0",
|
|
36
|
+
"@as-integrations/cloudflare-workers": "^1.1.1",
|
|
35
37
|
"@graphql-tools/delegate": "^7.1.2",
|
|
36
38
|
"@graphql-tools/stitch": "^7.5.1",
|
|
37
39
|
"@graphql-tools/wrap": "^7.0.5",
|
|
38
40
|
"@loadable/component": "^5.11.0",
|
|
39
41
|
"@loadable/server": "^5.16.0",
|
|
40
|
-
"@sentry/browser": "^6.15.0",
|
|
41
|
-
"@sentry/core": "^6.15.0",
|
|
42
|
-
"@sentry/node": "^6.15.0",
|
|
43
42
|
"@tanem/react-nprogress": "^5.0.44",
|
|
44
43
|
"@xstate/react": "^0.8.1",
|
|
45
44
|
"accept-language-parser": "^1.5.0",
|
|
46
45
|
"apollo-server": "~2.6.9",
|
|
47
|
-
"apollo-server-caching": "^0.4.0",
|
|
48
46
|
"apollo-server-express": "~2.6.9",
|
|
49
47
|
"compression": "^1.7.2",
|
|
50
48
|
"dnscache": "^1.0.2",
|
|
@@ -76,6 +74,7 @@
|
|
|
76
74
|
"xstate": "^4.13.0"
|
|
77
75
|
},
|
|
78
76
|
"devDependencies": {
|
|
77
|
+
"@cloudflare/workers-types": "^4.20241127.0",
|
|
79
78
|
"@graphql-codegen/typescript": "^1.21.0",
|
|
80
79
|
"@react-mock/localstorage": "^0.1.2",
|
|
81
80
|
"@types/accept-language-parser": "^1.5.1",
|
|
@@ -112,5 +111,5 @@
|
|
|
112
111
|
"react": "^18",
|
|
113
112
|
"react-dom": "^18"
|
|
114
113
|
},
|
|
115
|
-
"gitHead": "
|
|
114
|
+
"gitHead": "4cb9237f7c70e7fc05119c191f1c039ea0248670"
|
|
116
115
|
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
# Generating `template.json`
|
|
2
|
-
|
|
3
|
-
This file is created from the container `GTM-M4Q6MBN` (test.demostore.se). If you want to make a new export, make your changes in the workspace and make a new export under Administrator -> Export container, and then commit the file to this repository.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { OperationVariables } from '@apollo/client';
|
|
2
|
-
import { DocumentNode } from 'graphql';
|
|
3
|
-
import { CreateClientOpts } from '../apollo';
|
|
4
|
-
import { ChannelHeaders } from './persistedQueries/PersistedClient';
|
|
5
|
-
export type ErrorCallback = (err: Error) => void;
|
|
6
|
-
export interface IntervalQueryOptions {
|
|
7
|
-
query: DocumentNode;
|
|
8
|
-
pollInterval: number;
|
|
9
|
-
createClientOpts: CreateClientOpts;
|
|
10
|
-
variables?: OperationVariables;
|
|
11
|
-
onError?: ErrorCallback;
|
|
12
|
-
}
|
|
13
|
-
export declare class IntervalQuery<ResponseShape> {
|
|
14
|
-
private pendingResponse?;
|
|
15
|
-
private lastResponse?;
|
|
16
|
-
private query;
|
|
17
|
-
private client?;
|
|
18
|
-
private createClientOpts;
|
|
19
|
-
private variables?;
|
|
20
|
-
private timeout;
|
|
21
|
-
private onError?;
|
|
22
|
-
private pollInterval;
|
|
23
|
-
private channelHeaders?;
|
|
24
|
-
constructor({ query, variables, createClientOpts, pollInterval, onError, headers }: IntervalQueryOptions & {
|
|
25
|
-
headers?: ChannelHeaders;
|
|
26
|
-
});
|
|
27
|
-
private scheduleNext;
|
|
28
|
-
private executeQuery;
|
|
29
|
-
results(): Promise<ResponseShape>;
|
|
30
|
-
getPendingResponse(): Promise<ResponseShape | undefined>;
|
|
31
|
-
extractCache(): any;
|
|
32
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { createClient } from '../apollo';
|
|
11
|
-
export class IntervalQuery {
|
|
12
|
-
constructor({ query, variables, createClientOpts, pollInterval, onError, headers }) {
|
|
13
|
-
this.query = query;
|
|
14
|
-
this.createClientOpts = createClientOpts;
|
|
15
|
-
this.client = createClient(createClientOpts).client;
|
|
16
|
-
this.variables = variables;
|
|
17
|
-
this.onError = onError;
|
|
18
|
-
this.pollInterval = pollInterval;
|
|
19
|
-
this.channelHeaders = headers;
|
|
20
|
-
this.executeQuery();
|
|
21
|
-
this.scheduleNext();
|
|
22
|
-
if (typeof process !== 'undefined' && process.on) {
|
|
23
|
-
process.on('SIGTERM', () => {
|
|
24
|
-
clearTimeout(this.timeout);
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
scheduleNext() {
|
|
29
|
-
this.timeout = setTimeout(() => {
|
|
30
|
-
this.scheduleNext();
|
|
31
|
-
this.executeQuery();
|
|
32
|
-
}, this.pollInterval);
|
|
33
|
-
}
|
|
34
|
-
executeQuery() {
|
|
35
|
-
const { client } = createClient(this.createClientOpts);
|
|
36
|
-
const pendingResponse = client
|
|
37
|
-
.query({
|
|
38
|
-
query: this.query,
|
|
39
|
-
variables: this.variables,
|
|
40
|
-
fetchPolicy: 'network-only',
|
|
41
|
-
context: {
|
|
42
|
-
headers: this.channelHeaders
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
.then((resp) => {
|
|
46
|
-
const { data } = resp;
|
|
47
|
-
if (pendingResponse !== this.pendingResponse) {
|
|
48
|
-
// response expired
|
|
49
|
-
return data;
|
|
50
|
-
}
|
|
51
|
-
this.pendingResponse = undefined;
|
|
52
|
-
this.lastResponse = data;
|
|
53
|
-
// https://www.apollographql.com/docs/react/api/apollo-client/#ApolloClient.stop
|
|
54
|
-
// Stop any active client processes
|
|
55
|
-
this.client.stop();
|
|
56
|
-
this.client = client;
|
|
57
|
-
return data;
|
|
58
|
-
});
|
|
59
|
-
pendingResponse.catch((err) => {
|
|
60
|
-
if (pendingResponse !== this.pendingResponse) {
|
|
61
|
-
// response expired
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
this.pendingResponse = undefined;
|
|
65
|
-
if (this.onError) {
|
|
66
|
-
this.onError(err);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
this.pendingResponse = pendingResponse;
|
|
70
|
-
return this.pendingResponse;
|
|
71
|
-
}
|
|
72
|
-
results() {
|
|
73
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
-
if (this.lastResponse) {
|
|
75
|
-
return this.lastResponse;
|
|
76
|
-
}
|
|
77
|
-
if (this.pendingResponse) {
|
|
78
|
-
return this.pendingResponse;
|
|
79
|
-
}
|
|
80
|
-
return this.executeQuery();
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
getPendingResponse() {
|
|
84
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
85
|
-
return this.pendingResponse;
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
extractCache() {
|
|
89
|
-
if (!this.client) {
|
|
90
|
-
throw new Error('No queries has succeeded yet');
|
|
91
|
-
}
|
|
92
|
-
return this.client.extract();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=IntervalQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"IntervalQuery.js","sourceRoot":"","sources":["IntervalQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ApolloClient,
|
|
3
|
-
ApolloError,
|
|
4
|
-
InMemoryCache,
|
|
5
|
-
HttpLink,
|
|
6
|
-
gql
|
|
7
|
-
} from '@apollo/client';
|
|
8
|
-
import { IntervalQuery } from './IntervalQuery';
|
|
9
|
-
import nock from 'nock';
|
|
10
|
-
beforeAll(() => {
|
|
11
|
-
jest.useFakeTimers();
|
|
12
|
-
nock.disableNetConnect();
|
|
13
|
-
});
|
|
14
|
-
afterAll(() => {
|
|
15
|
-
jest.useRealTimers();
|
|
16
|
-
nock.enableNetConnect();
|
|
17
|
-
});
|
|
18
|
-
afterEach(() => {
|
|
19
|
-
jest.restoreAllMocks();
|
|
20
|
-
jest.clearAllTimers();
|
|
21
|
-
nock.enableNetConnect();
|
|
22
|
-
});
|
|
23
|
-
const query = gql`
|
|
24
|
-
query ChannelsQuery {
|
|
25
|
-
channels {
|
|
26
|
-
id
|
|
27
|
-
name
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
`;
|
|
31
|
-
const apolloConfig = {
|
|
32
|
-
shopid: '...',
|
|
33
|
-
graphQLURI: 'http://localhost/graphql',
|
|
34
|
-
token: '...',
|
|
35
|
-
enableGateway: false
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Mocks response for `/graphql`
|
|
40
|
-
* Only for **one** request, it resets on each call.
|
|
41
|
-
*/
|
|
42
|
-
function mockResponse({ channels = null, statusCode = 200, errors }) {
|
|
43
|
-
const data = {
|
|
44
|
-
errors,
|
|
45
|
-
data: {
|
|
46
|
-
channels: Array.isArray(channels)
|
|
47
|
-
? channels.map((channel) =>
|
|
48
|
-
Object.assign({ __typename: 'Channel' }, channel)
|
|
49
|
-
)
|
|
50
|
-
: null
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
const res = jest.fn(() => data);
|
|
54
|
-
nock('http://localhost').post('/graphql').reply(statusCode, res);
|
|
55
|
-
return res;
|
|
56
|
-
}
|
|
57
|
-
test('does request on init', async () => {
|
|
58
|
-
const firstCall = mockResponse({
|
|
59
|
-
channels: [
|
|
60
|
-
{
|
|
61
|
-
id: 1,
|
|
62
|
-
name: 'test'
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
});
|
|
66
|
-
const intervalQuery = new IntervalQuery({
|
|
67
|
-
createClientOpts: { apolloConfig },
|
|
68
|
-
query,
|
|
69
|
-
pollInterval: 60e3
|
|
70
|
-
});
|
|
71
|
-
await intervalQuery.getPendingResponse();
|
|
72
|
-
expect(firstCall).toHaveBeenCalled();
|
|
73
|
-
const res = await intervalQuery.results();
|
|
74
|
-
expect(res.channels).toHaveLength(1);
|
|
75
|
-
expect(res.channels[0].id).toBe(1);
|
|
76
|
-
});
|
|
77
|
-
test('does request on intervals', async () => {
|
|
78
|
-
mockResponse({
|
|
79
|
-
channels: [
|
|
80
|
-
{
|
|
81
|
-
id: 1,
|
|
82
|
-
name: 'test1'
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
});
|
|
86
|
-
const pollInterval = 60e3;
|
|
87
|
-
const intervalQuery = new IntervalQuery({
|
|
88
|
-
createClientOpts: { apolloConfig },
|
|
89
|
-
query,
|
|
90
|
-
pollInterval
|
|
91
|
-
});
|
|
92
|
-
{
|
|
93
|
-
const res = await intervalQuery.results();
|
|
94
|
-
expect(res.channels[0].name).toBe('test1');
|
|
95
|
-
nock.cleanAll();
|
|
96
|
-
}
|
|
97
|
-
{
|
|
98
|
-
const mock = mockResponse({
|
|
99
|
-
channels: [
|
|
100
|
-
{
|
|
101
|
-
id: 2,
|
|
102
|
-
name: 'test2'
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
});
|
|
106
|
-
jest.advanceTimersByTime(pollInterval);
|
|
107
|
-
await intervalQuery.getPendingResponse();
|
|
108
|
-
const res = await intervalQuery.results();
|
|
109
|
-
expect(mock).toHaveBeenCalled();
|
|
110
|
-
expect(res.channels[0].name).toBe('test2');
|
|
111
|
-
}
|
|
112
|
-
{
|
|
113
|
-
mockResponse({
|
|
114
|
-
channels: [
|
|
115
|
-
{
|
|
116
|
-
id: 3,
|
|
117
|
-
name: 'test3'
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
});
|
|
121
|
-
jest.advanceTimersByTime(pollInterval);
|
|
122
|
-
await intervalQuery.getPendingResponse();
|
|
123
|
-
const res = await intervalQuery.results();
|
|
124
|
-
expect(res.channels[0].name).toBe('test3');
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
test('propagates bad statusCodes', async () => {
|
|
128
|
-
mockResponse({ statusCode: 500 });
|
|
129
|
-
const onError = jest.fn();
|
|
130
|
-
const pollInterval = 60e3;
|
|
131
|
-
const intervalQuery = new IntervalQuery({
|
|
132
|
-
createClientOpts: { apolloConfig },
|
|
133
|
-
query,
|
|
134
|
-
pollInterval,
|
|
135
|
-
onError
|
|
136
|
-
});
|
|
137
|
-
expect.assertions(3);
|
|
138
|
-
try {
|
|
139
|
-
await intervalQuery.getPendingResponse();
|
|
140
|
-
} catch (err) {
|
|
141
|
-
expect(err.networkError.statusCode).toBe(500);
|
|
142
|
-
expect(onError).toHaveBeenCalledTimes(1);
|
|
143
|
-
}
|
|
144
|
-
// successful response after
|
|
145
|
-
mockResponse({ channels: [] });
|
|
146
|
-
const res = await intervalQuery.results();
|
|
147
|
-
expect(res.channels).toEqual([]);
|
|
148
|
-
});
|
|
149
|
-
test('propagates when response contains GraphQL-errors', async () => {
|
|
150
|
-
const errorMessage = 'Something went wrong';
|
|
151
|
-
mockResponse({
|
|
152
|
-
errors: [
|
|
153
|
-
{
|
|
154
|
-
message: errorMessage,
|
|
155
|
-
locations: null
|
|
156
|
-
}
|
|
157
|
-
]
|
|
158
|
-
});
|
|
159
|
-
const pollInterval = 60e3;
|
|
160
|
-
const intervalQuery = new IntervalQuery({
|
|
161
|
-
createClientOpts: { apolloConfig },
|
|
162
|
-
query,
|
|
163
|
-
pollInterval
|
|
164
|
-
});
|
|
165
|
-
expect.assertions(2);
|
|
166
|
-
try {
|
|
167
|
-
await intervalQuery.getPendingResponse();
|
|
168
|
-
} catch (_err) {
|
|
169
|
-
const err = _err;
|
|
170
|
-
expect(err).toBeInstanceOf(ApolloError);
|
|
171
|
-
expect(err.message).toBe(`GraphQL error: ${errorMessage}`);
|
|
172
|
-
}
|
|
173
|
-
});
|
|
174
|
-
test('extracting and using cache in new client', async () => {
|
|
175
|
-
mockResponse({
|
|
176
|
-
channels: [
|
|
177
|
-
{
|
|
178
|
-
id: 1,
|
|
179
|
-
name: 'test1'
|
|
180
|
-
}
|
|
181
|
-
]
|
|
182
|
-
});
|
|
183
|
-
const pollInterval = 60e3;
|
|
184
|
-
const intervalQuery = new IntervalQuery({
|
|
185
|
-
createClientOpts: { apolloConfig },
|
|
186
|
-
query,
|
|
187
|
-
pollInterval
|
|
188
|
-
});
|
|
189
|
-
await intervalQuery.getPendingResponse();
|
|
190
|
-
{
|
|
191
|
-
const cache = intervalQuery.extractCache();
|
|
192
|
-
expect(cache).toHaveProperty('Channel:1');
|
|
193
|
-
expect(cache['Channel:1'].name).toBe('test1');
|
|
194
|
-
const newClient = new ApolloClient({
|
|
195
|
-
link: new HttpLink(),
|
|
196
|
-
cache: new InMemoryCache().restore(cache)
|
|
197
|
-
});
|
|
198
|
-
const res = newClient.readQuery({
|
|
199
|
-
query
|
|
200
|
-
});
|
|
201
|
-
expect(res.channels).toHaveLength(1);
|
|
202
|
-
expect(res.channels[0].name).toBe('test1');
|
|
203
|
-
}
|
|
204
|
-
// update data in new request
|
|
205
|
-
{
|
|
206
|
-
const mock = mockResponse({
|
|
207
|
-
channels: [
|
|
208
|
-
{
|
|
209
|
-
id: 1,
|
|
210
|
-
name: 'test1--updated'
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
id: 2,
|
|
214
|
-
name: 'test2'
|
|
215
|
-
}
|
|
216
|
-
]
|
|
217
|
-
});
|
|
218
|
-
jest.advanceTimersByTime(pollInterval);
|
|
219
|
-
await intervalQuery.getPendingResponse();
|
|
220
|
-
expect(mock).toHaveBeenCalled();
|
|
221
|
-
const cache = intervalQuery.extractCache();
|
|
222
|
-
const newClient = new ApolloClient({
|
|
223
|
-
link: new HttpLink(),
|
|
224
|
-
cache: new InMemoryCache().restore(cache)
|
|
225
|
-
});
|
|
226
|
-
const res = newClient.readQuery({
|
|
227
|
-
query
|
|
228
|
-
});
|
|
229
|
-
expect(res.channels).toHaveLength(2);
|
|
230
|
-
expect(res.channels[0].name).toBe('test1--updated');
|
|
231
|
-
expect(res.channels[1].name).toBe('test2');
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
test(`internal state doesn't get overridden by erroneous requests`, async () => {
|
|
236
|
-
mockResponse({
|
|
237
|
-
channels: [
|
|
238
|
-
{
|
|
239
|
-
id: 1,
|
|
240
|
-
name: 'test1'
|
|
241
|
-
}
|
|
242
|
-
]
|
|
243
|
-
});
|
|
244
|
-
const pollInterval = 60e3;
|
|
245
|
-
const intervalQuery = new IntervalQuery({
|
|
246
|
-
createClientOpts: { apolloConfig },
|
|
247
|
-
query,
|
|
248
|
-
pollInterval
|
|
249
|
-
});
|
|
250
|
-
await intervalQuery.getPendingResponse();
|
|
251
|
-
|
|
252
|
-
mockResponse({
|
|
253
|
-
errors: [
|
|
254
|
-
{
|
|
255
|
-
message: 'Something went wrong',
|
|
256
|
-
locations: null
|
|
257
|
-
}
|
|
258
|
-
]
|
|
259
|
-
});
|
|
260
|
-
jest.advanceTimersByTime(pollInterval);
|
|
261
|
-
let err;
|
|
262
|
-
try {
|
|
263
|
-
await intervalQuery.getPendingResponse();
|
|
264
|
-
} catch (_err) {
|
|
265
|
-
err = _err;
|
|
266
|
-
}
|
|
267
|
-
expect(err).toBeInstanceOf(Error);
|
|
268
|
-
|
|
269
|
-
const cache = intervalQuery.extractCache();
|
|
270
|
-
expect(cache['Channel:1']).toBeTruthy();
|
|
271
|
-
expect(cache['Channel:1'].name).toBe('test1');
|
|
272
|
-
|
|
273
|
-
const res = await intervalQuery.results();
|
|
274
|
-
|
|
275
|
-
expect(res.channels[0].name).toBe('test1');
|
|
276
|
-
});
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Channel } from '@jetshop/core/types';
|
|
2
|
-
import { CreateClientOpts } from '../apollo';
|
|
3
|
-
/**
|
|
4
|
-
* Persisted Apollo Client that's shared across all requests on the server
|
|
5
|
-
*/
|
|
6
|
-
export declare class PersistedApolloClient {
|
|
7
|
-
/**
|
|
8
|
-
* **⚠️ WARNING ⚠️**
|
|
9
|
-
*
|
|
10
|
-
* Use this client with care as it's cache will be shared amongst **all** requests
|
|
11
|
-
* It's private in this class for us to be able to expose only specific queries
|
|
12
|
-
*/
|
|
13
|
-
private channelsIntervalQuery;
|
|
14
|
-
constructor({ createClientOpts, channelsPollInterval }: {
|
|
15
|
-
createClientOpts: CreateClientOpts;
|
|
16
|
-
channelsPollInterval?: number;
|
|
17
|
-
});
|
|
18
|
-
extractCache(): any;
|
|
19
|
-
getChannels(): Promise<Channel[]>;
|
|
20
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import logWarningInDev from '../../helpers/logWarningInDev';
|
|
11
|
-
import channelsQueryDefault from '../ChannelsQuery.gql';
|
|
12
|
-
import { IntervalQuery } from './IntervalQuery';
|
|
13
|
-
/**
|
|
14
|
-
* Persisted Apollo Client that's shared across all requests on the server
|
|
15
|
-
*/
|
|
16
|
-
export class PersistedApolloClient {
|
|
17
|
-
constructor({ createClientOpts, channelsPollInterval = 60e3 }) {
|
|
18
|
-
const { apolloConfig } = createClientOpts;
|
|
19
|
-
if (!apolloConfig.channelsQuery) {
|
|
20
|
-
logWarningInDev(true, `Using PersistedApolloClient without supplying the channelsQuery is deprecated and will break in the next major release.`);
|
|
21
|
-
apolloConfig.channelsQuery = channelsQueryDefault;
|
|
22
|
-
}
|
|
23
|
-
this.channelsIntervalQuery = new IntervalQuery({
|
|
24
|
-
query: apolloConfig.channelsQuery,
|
|
25
|
-
createClientOpts,
|
|
26
|
-
pollInterval: channelsPollInterval
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
extractCache() {
|
|
30
|
-
return this.channelsIntervalQuery.extractCache();
|
|
31
|
-
}
|
|
32
|
-
getChannels() {
|
|
33
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
-
const res = yield this.channelsIntervalQuery.results();
|
|
35
|
-
const channels = res.channels;
|
|
36
|
-
return channels;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=PersistedApolloClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PersistedApolloClient.js","sourceRoot":"","sources":["PersistedApolloClient.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,OAAO,oBAAoB,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMhD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAShC,YAAY,EACV,gBAAgB,EAChB,oBAAoB,GAAG,IAAI,EAI5B;QACC,MAAM,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;YAC/B,eAAe,CACb,IAAI,EACJ,yHAAyH,CAC1H,CAAC;YACF,YAAY,CAAC,aAAa,GAAG,oBAAoB,CAAC;SACnD;QAED,IAAI,CAAC,qBAAqB,GAAG,IAAI,aAAa,CAAC;YAC7C,KAAK,EAAE,YAAY,CAAC,aAAa;YACjC,gBAAgB;YAChB,YAAY,EAAE,oBAAoB;SACnC,CAAC,CAAC;IACL,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,CAAC;IACnD,CAAC;IAEY,WAAW;;YACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAEvD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAE9B,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF"}
|