@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
|
@@ -0,0 +1,119 @@
|
|
|
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 { ApolloServer } from '@apollo/server';
|
|
11
|
+
import { startServerAndCreateCloudflareWorkersHandler } from '@as-integrations/cloudflare-workers';
|
|
12
|
+
import { stitchSchemas } from '@graphql-tools/stitch';
|
|
13
|
+
import { introspectSchema, RenameTypes, RenameRootFields, defaultCreateProxyingResolver } from '@graphql-tools/wrap';
|
|
14
|
+
import { print } from 'graphql';
|
|
15
|
+
import { delegateToSchema } from '@graphql-tools/delegate';
|
|
16
|
+
export function createGraphqlServerWorker({ extensions }) {
|
|
17
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
+
const subschemas = yield Promise.all(extensions);
|
|
19
|
+
const schema = stitchSchemas({
|
|
20
|
+
subschemas
|
|
21
|
+
});
|
|
22
|
+
const server = new ApolloServer({
|
|
23
|
+
schema,
|
|
24
|
+
introspection: process.env.NODE_ENV !== 'production'
|
|
25
|
+
});
|
|
26
|
+
yield server.start();
|
|
27
|
+
const handler = startServerAndCreateCloudflareWorkersHandler(server);
|
|
28
|
+
// Wrap handler to check for auth errors and match full Workers signature
|
|
29
|
+
return (request, env, ctx) => __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const response = yield handler(request, env, ctx);
|
|
31
|
+
// Check for authentication errors in response
|
|
32
|
+
if (response.status === 200) {
|
|
33
|
+
try {
|
|
34
|
+
const clonedResponse = response.clone();
|
|
35
|
+
const body = yield clonedResponse.json();
|
|
36
|
+
if (body && body.errors && !body.data) {
|
|
37
|
+
if (body.errors.find((err) => { var _a; return ((_a = err.extensions) === null || _a === void 0 ? void 0 : _a.code) === 'ChannelRequiresAuthorization'; })) {
|
|
38
|
+
return new Response(JSON.stringify(body), {
|
|
39
|
+
status: 401,
|
|
40
|
+
headers: response.headers
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (e) {
|
|
46
|
+
// If parsing fails, return original response
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return response;
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// Skip validation for proxying resolver to handle Store API type conflicts
|
|
54
|
+
function createProxyingResolverWithoutValidation({ subschemaConfig, operation, transformedSchema }) {
|
|
55
|
+
return (_parent, _args, context, info) => delegateToSchema({
|
|
56
|
+
schema: subschemaConfig,
|
|
57
|
+
operation,
|
|
58
|
+
context,
|
|
59
|
+
info,
|
|
60
|
+
transformedSchema,
|
|
61
|
+
skipValidation: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function createExtensionWorker({ endpoint, getHeaders, prefix = null, transforms = [], skipValidation = false }) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const executor = function ({ document, variables, context }) {
|
|
67
|
+
const query = print(document);
|
|
68
|
+
return fetch(endpoint, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers: Object.assign({ 'Content-Type': 'application/json' }, getHeaders(context)),
|
|
71
|
+
body: JSON.stringify({ query, variables })
|
|
72
|
+
}).then((res) => res.json());
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
schema: yield introspectSchema(executor),
|
|
76
|
+
executor,
|
|
77
|
+
transforms: prefix
|
|
78
|
+
? [
|
|
79
|
+
new RenameTypes((name) => `${prefix.slice(0, 1).toUpperCase() + prefix.slice(1)}${name}`),
|
|
80
|
+
new RenameRootFields((_operationName, fieldName, _fieldConfig) => `${prefix}${fieldName.slice(0, 1).toUpperCase() + fieldName.slice(1)}`)
|
|
81
|
+
]
|
|
82
|
+
: transforms,
|
|
83
|
+
createProxyingResolver: skipValidation
|
|
84
|
+
? createProxyingResolverWithoutValidation
|
|
85
|
+
: defaultCreateProxyingResolver
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const forwardHeaders = [
|
|
90
|
+
'channelid',
|
|
91
|
+
'culture',
|
|
92
|
+
'fallbackculture',
|
|
93
|
+
'currency',
|
|
94
|
+
'country',
|
|
95
|
+
'preview',
|
|
96
|
+
'authorization',
|
|
97
|
+
'storeid'
|
|
98
|
+
];
|
|
99
|
+
function forwardRequestHeaders(req) {
|
|
100
|
+
const headers = {};
|
|
101
|
+
forwardHeaders.forEach((key) => {
|
|
102
|
+
const value = req.headers.get(key);
|
|
103
|
+
if (value) {
|
|
104
|
+
headers[key] = value;
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
return headers;
|
|
108
|
+
}
|
|
109
|
+
export const storeapiExtensionWorker = ({ endpoint = 'https://storeapi.jetshop.io', prefix = null, token, shopid, getHeaders = forwardRequestHeaders }) => createExtensionWorker({
|
|
110
|
+
endpoint,
|
|
111
|
+
prefix,
|
|
112
|
+
getHeaders: (req) => {
|
|
113
|
+
const headers = Object.assign({ 'Content-Type': 'application/json', shopid,
|
|
114
|
+
token }, getHeaders(req));
|
|
115
|
+
return headers;
|
|
116
|
+
},
|
|
117
|
+
skipValidation: true
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=createApolloServerWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApolloServerWorker.js","sourceRoot":"","sources":["createApolloServerWorker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ApolloClient } from '@apollo/client';
|
|
2
|
+
import { GraphQLSchema } from 'graphql';
|
|
3
|
+
import { ReactElement } from 'react';
|
|
4
|
+
import { Tracker } from '../../analytics/tracking';
|
|
5
|
+
import { BootOptions, OptimizeConfig } from '../../components/ConfigProvider';
|
|
6
|
+
export interface SlotData {
|
|
7
|
+
[key: string]: string;
|
|
8
|
+
}
|
|
9
|
+
export interface PreloadScripts {
|
|
10
|
+
src: string;
|
|
11
|
+
attrs: SlotData;
|
|
12
|
+
}
|
|
13
|
+
export interface RendererOptions extends BootOptions {
|
|
14
|
+
loadableStats?: any;
|
|
15
|
+
schema?: GraphQLSchema;
|
|
16
|
+
disableGeoRedirect: boolean;
|
|
17
|
+
singleDomainMode: boolean;
|
|
18
|
+
trackers?: Tracker[];
|
|
19
|
+
optimize?: OptimizeConfig;
|
|
20
|
+
globalClient?: ApolloClient<any>;
|
|
21
|
+
}
|
|
22
|
+
declare const createRenderer: (template: string, tree: ReactElement<any>, options: RendererOptions) => (request: Request) => Promise<Response>;
|
|
23
|
+
export default createRenderer;
|
|
@@ -0,0 +1,242 @@
|
|
|
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 { getDataFromTree } from '@apollo/client/react/ssr';
|
|
11
|
+
import { getSelectedAndRecommendedChannel } from '@jetshop/core/ChannelHandler/channelUtils';
|
|
12
|
+
import { setupIntl } from '@jetshop/intl/config';
|
|
13
|
+
import IntlContext from '@jetshop/intl/context';
|
|
14
|
+
import React from 'react';
|
|
15
|
+
import { Cookies } from 'react-cookie';
|
|
16
|
+
import { renderToString } from 'react-dom/server';
|
|
17
|
+
import { ChunkExtractor, ChunkExtractorManager } from '@loadable/server';
|
|
18
|
+
import { StaticRouter } from 'react-router-dom';
|
|
19
|
+
import { getActiveFiltersFromSearch } from '../../resolvers/filters/filterParams';
|
|
20
|
+
import { createClient } from '../apollo';
|
|
21
|
+
import SharedTree from '../SharedTree';
|
|
22
|
+
import createIntlOptions from '../utils/createIntOptions';
|
|
23
|
+
import selectExperimentVariant from '../../experiments/selectExperimentVariant';
|
|
24
|
+
import { ChannelHandler } from '../../ChannelHandler/ChannelHandler';
|
|
25
|
+
import { AuthHandler } from '../AuthHandler';
|
|
26
|
+
import { PreviewHandler } from '../PreviewHandler';
|
|
27
|
+
import isBot from 'isbot';
|
|
28
|
+
import { getPreloadLinkHeaderString } from './getPreloadAssets';
|
|
29
|
+
import { primaryRouteForPathFetcher } from '../../../core/ChannelHandler/redirectUtils';
|
|
30
|
+
import ActiveFiltersQuery from '@jetshop/core/components/DynamicRoute/ActiveFiltersQuery.gql';
|
|
31
|
+
import AuthProvider from '@jetshop/core/components/AuthContext/AuthProvider';
|
|
32
|
+
const injectDataIntoSlots = (template, data) => Object.keys(data).reduce((output, key) => key !== 'htmlAttributes'
|
|
33
|
+
? output.replace(`<slot name="${key}"/>`, data[key])
|
|
34
|
+
: output.replace('<html lang="en">', `<html ${data[key]}>`), template);
|
|
35
|
+
const wrapTree = (tree, req, renderOptions, client, channelHandler, authHandler, previewHandler, translator, config, extractor) => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
var _a;
|
|
37
|
+
const modules = [];
|
|
38
|
+
const routerContext = { url: null, statusCode: 200 };
|
|
39
|
+
const helmetContext = { helmet: null };
|
|
40
|
+
const selectedChannel = channelHandler === null || channelHandler === void 0 ? void 0 : channelHandler.selectedChannel;
|
|
41
|
+
const channelOverrides = (renderOptions === null || renderOptions === void 0 ? void 0 : renderOptions.channelOverrides) && (selectedChannel === null || selectedChannel === void 0 ? void 0 : selectedChannel.id)
|
|
42
|
+
? renderOptions.channelOverrides[selectedChannel.id]
|
|
43
|
+
: {};
|
|
44
|
+
const wrappedTree = (React.createElement(ChunkExtractorManager, { extractor: extractor },
|
|
45
|
+
React.createElement(IntlContext.Provider, { value: translator },
|
|
46
|
+
React.createElement(SharedTree, { activeBreakpoint: req.breakpoint, config: Object.assign(Object.assign({}, renderOptions), channelOverrides), cookies: req.universalCookies, helmetContext: helmetContext, client: client, channelHandler: channelHandler, previewHandler: previewHandler, Router: StaticRouter, routerProps: {
|
|
47
|
+
location: new URL(req.url).pathname + new URL(req.url).search,
|
|
48
|
+
context: routerContext
|
|
49
|
+
} },
|
|
50
|
+
React.createElement(AuthProvider, { auth: authHandler }, tree)))));
|
|
51
|
+
try {
|
|
52
|
+
yield getDataFromTree(wrappedTree);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
if (e.message ===
|
|
56
|
+
'GraphQL error: This channel requires you to be logged in.' ||
|
|
57
|
+
((_a = e.networkError) === null || _a === void 0 ? void 0 : _a.statusCode) === 401) {
|
|
58
|
+
const base = channelHandler.getChannelBasename() || '';
|
|
59
|
+
const loginPathWithBase = base + config.loginPath;
|
|
60
|
+
const routesAllowedWithoutAuth = config.pathsWithNoAuthRequired.map((path) => base + path);
|
|
61
|
+
const url = new URL(req.url);
|
|
62
|
+
const matches = routesAllowedWithoutAuth.filter((route) => url.pathname.startsWith(route)).length > 0;
|
|
63
|
+
if (!matches) {
|
|
64
|
+
routerContext.statusCode = 302;
|
|
65
|
+
routerContext.url = loginPathWithBase + url.search;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.error('Apollo data fetch failed:', e);
|
|
70
|
+
routerContext.statusCode = 500;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const apolloState = `<script>/*<!--*/
|
|
74
|
+
window.__APOLLO_STATE__=JSON.parse(${JSON.stringify(JSON.stringify(client.extract()))});
|
|
75
|
+
/*-->*/</script>`;
|
|
76
|
+
return {
|
|
77
|
+
wrappedTree,
|
|
78
|
+
modules,
|
|
79
|
+
routerUrl: routerContext.url,
|
|
80
|
+
statusCode: routerContext.statusCode,
|
|
81
|
+
helmet: helmetContext.helmet,
|
|
82
|
+
apolloState
|
|
83
|
+
};
|
|
84
|
+
});
|
|
85
|
+
const createRenderer = (template, tree, options) => {
|
|
86
|
+
return (request) => __awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
+
const { apolloConfig, loadableStats, intl, schema, globalClient, disableGeoRedirect, singleDomainMode } = options;
|
|
88
|
+
const url = new URL(request.url);
|
|
89
|
+
// Parse cookies from Cookie header
|
|
90
|
+
const cookieHeader = request.headers.get('Cookie') || '';
|
|
91
|
+
const cookies = new Cookies(cookieHeader);
|
|
92
|
+
// Simple mobile detection from User-Agent
|
|
93
|
+
const userAgent = request.headers.get('User-Agent') || '';
|
|
94
|
+
const isMobile = userAgent.includes('Mobile');
|
|
95
|
+
const breakpoint = isMobile ? 'sm' : 'lg';
|
|
96
|
+
// Get geoIP from Cloudflare headers
|
|
97
|
+
const geoipCountry = request.headers.get('CF-IPCountry') ||
|
|
98
|
+
request.headers.get('x-geoip-country');
|
|
99
|
+
const acceptedLanguages = request.headers.get('Accept-Language') || '';
|
|
100
|
+
const response = yield globalClient.query({
|
|
101
|
+
query: apolloConfig.channelsQuery
|
|
102
|
+
});
|
|
103
|
+
const channels = response.data.channels;
|
|
104
|
+
const { selectedChannel, recommendedChannel, redirect, group } = getSelectedAndRecommendedChannel({
|
|
105
|
+
url: request.url,
|
|
106
|
+
singleDomainMode,
|
|
107
|
+
channels,
|
|
108
|
+
cookies,
|
|
109
|
+
geoipCountry,
|
|
110
|
+
acceptedLanguages,
|
|
111
|
+
disableGeoRedirect
|
|
112
|
+
});
|
|
113
|
+
const authHandler = new AuthHandler({
|
|
114
|
+
cookies
|
|
115
|
+
});
|
|
116
|
+
const previewHandler = new PreviewHandler();
|
|
117
|
+
const channelHandler = new ChannelHandler({
|
|
118
|
+
selectedChannel,
|
|
119
|
+
recommendedChannel,
|
|
120
|
+
channels
|
|
121
|
+
});
|
|
122
|
+
channelHandler.setChannelGroup(group);
|
|
123
|
+
const createClientOpts = {
|
|
124
|
+
apolloConfig,
|
|
125
|
+
schema,
|
|
126
|
+
authHandler,
|
|
127
|
+
previewHandler,
|
|
128
|
+
req: {
|
|
129
|
+
headers: request.headers,
|
|
130
|
+
url: request.url
|
|
131
|
+
},
|
|
132
|
+
channelHandler
|
|
133
|
+
};
|
|
134
|
+
const { client } = createClient(createClientOpts);
|
|
135
|
+
channelHandler.setGetPrimaryRoutePath(primaryRouteForPathFetcher(client));
|
|
136
|
+
if (redirect && !isBot(userAgent)) {
|
|
137
|
+
const redirectUrl = yield channelHandler.getRedirectUrl({
|
|
138
|
+
url: request.url,
|
|
139
|
+
newChannel: channelHandler.recommendedChannel,
|
|
140
|
+
preserveRedirect: true,
|
|
141
|
+
routes: options.routes
|
|
142
|
+
});
|
|
143
|
+
return Response.redirect(redirectUrl, 302);
|
|
144
|
+
}
|
|
145
|
+
const cachedChannels = client.extract();
|
|
146
|
+
client.cache.restore(cachedChannels);
|
|
147
|
+
// Parse query parameters from URL
|
|
148
|
+
const queryParams = {};
|
|
149
|
+
url.searchParams.forEach((value, key) => {
|
|
150
|
+
queryParams[key] = value;
|
|
151
|
+
});
|
|
152
|
+
client.cache.writeQuery({
|
|
153
|
+
query: ActiveFiltersQuery,
|
|
154
|
+
data: {
|
|
155
|
+
activeFilters: getActiveFiltersFromSearch(queryParams)
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
const intlOptions = createIntlOptions({
|
|
159
|
+
selectedChannel,
|
|
160
|
+
options: intl.options
|
|
161
|
+
});
|
|
162
|
+
const { translator } = yield setupIntl({
|
|
163
|
+
translations: intl.translations,
|
|
164
|
+
locale: selectedChannel.language.culture,
|
|
165
|
+
defaultLocale: intl.defaultLocale,
|
|
166
|
+
options: intlOptions
|
|
167
|
+
});
|
|
168
|
+
if (options.optimize) {
|
|
169
|
+
const selectedVariant = cookies.get('optimizeExperiment');
|
|
170
|
+
const newVariant = selectExperimentVariant(options.optimize, selectedVariant);
|
|
171
|
+
if (newVariant) {
|
|
172
|
+
cookies.set('optimizeExperiment', newVariant, {
|
|
173
|
+
path: '/',
|
|
174
|
+
maxAge: 60 * 60 * 24 * 90
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
const chunkExtractor = new ChunkExtractor({
|
|
179
|
+
stats: loadableStats,
|
|
180
|
+
entrypoints: ['client']
|
|
181
|
+
});
|
|
182
|
+
const workerReq = {
|
|
183
|
+
url: request.url,
|
|
184
|
+
method: request.method,
|
|
185
|
+
headers: request.headers,
|
|
186
|
+
breakpoint,
|
|
187
|
+
universalCookies: cookies
|
|
188
|
+
};
|
|
189
|
+
const { wrappedTree, routerUrl, statusCode, helmet: { htmlAttributes, title, meta, style, link }, apolloState } = yield wrapTree(tree, workerReq, options, client, channelHandler, authHandler, previewHandler, translator, {
|
|
190
|
+
loginPath: options.loginPath,
|
|
191
|
+
pathsWithNoAuthRequired: options.pathsWithNoAuthRequired
|
|
192
|
+
}, chunkExtractor);
|
|
193
|
+
if (routerUrl) {
|
|
194
|
+
const redirectStatus = !statusCode || statusCode < 300 || statusCode >= 400 ? 302 : statusCode;
|
|
195
|
+
return Response.redirect(routerUrl, redirectStatus);
|
|
196
|
+
}
|
|
197
|
+
const responseHeaders = new Headers({
|
|
198
|
+
'Content-Type': 'text/html'
|
|
199
|
+
});
|
|
200
|
+
// Set Link header for preloading assets
|
|
201
|
+
const preLoadAssets = chunkExtractor.getPreAssets();
|
|
202
|
+
if (preLoadAssets.length > 0) {
|
|
203
|
+
responseHeaders.set('Link', getPreloadLinkHeaderString(preLoadAssets));
|
|
204
|
+
}
|
|
205
|
+
// Get link, style, and script tags
|
|
206
|
+
const preloadLinks = chunkExtractor.getLinkTags();
|
|
207
|
+
const preloadStyles = chunkExtractor.getStyleTags();
|
|
208
|
+
const preloadScripts = chunkExtractor.getScriptTags();
|
|
209
|
+
const breakpointScript = `<script>window.__ACTIVE_BREAKPOINT__ = "${breakpoint}";</script>`;
|
|
210
|
+
const geoipCountryScript = `<script>window.__GEOIP_COUNTRY__ = "${geoipCountry}";</script>`;
|
|
211
|
+
const acceptedLanguagesScript = `<script>window.__ACCEPTED_LANGUAGES__ = '${JSON.stringify(acceptedLanguages)}';</script>`;
|
|
212
|
+
const statusCodeScript = `<script>window.__STATUS_CODE__ = '${statusCode}';</script>`;
|
|
213
|
+
const data = {
|
|
214
|
+
apolloState: apolloState,
|
|
215
|
+
preloadLinks,
|
|
216
|
+
preloadScripts: geoipCountryScript +
|
|
217
|
+
acceptedLanguagesScript +
|
|
218
|
+
statusCodeScript +
|
|
219
|
+
preloadScripts,
|
|
220
|
+
title: title.toString(),
|
|
221
|
+
meta: meta.toString() + link.toString(),
|
|
222
|
+
style: style.toString() + breakpointScript + preloadStyles,
|
|
223
|
+
htmlAttributes: htmlAttributes.toString()
|
|
224
|
+
};
|
|
225
|
+
const html = injectDataIntoSlots(template, data);
|
|
226
|
+
const [head, foot] = html.split('<slot name="html"/>');
|
|
227
|
+
// Build complete HTML
|
|
228
|
+
const completeHtml = head + renderToString(wrappedTree) + foot;
|
|
229
|
+
// Handle Set-Cookie headers from cookies
|
|
230
|
+
const allCookies = cookies.getAll();
|
|
231
|
+
Object.keys(allCookies).forEach((name) => {
|
|
232
|
+
// Note: This is a simplified approach, production would need proper cookie serialization
|
|
233
|
+
responseHeaders.append('Set-Cookie', `${name}=${allCookies[name]}; Path=/`);
|
|
234
|
+
});
|
|
235
|
+
return new Response(completeHtml, {
|
|
236
|
+
status: statusCode,
|
|
237
|
+
headers: responseHeaders
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
};
|
|
241
|
+
export default createRenderer;
|
|
242
|
+
//# sourceMappingURL=createRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["createRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const getPrefetchHeader = (prefetchFiles) => {
|
|
2
|
+
if (prefetchFiles.length < 1) {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const prefetchHeaderValue = prefetchFiles
|
|
6
|
+
.map(({ url }) => {
|
|
7
|
+
const script = url.endsWith('.js');
|
|
8
|
+
const style = url.endsWith('.css');
|
|
9
|
+
if (script) {
|
|
10
|
+
return `<${url}>; as=script; rel=preload`;
|
|
11
|
+
}
|
|
12
|
+
else if (style) {
|
|
13
|
+
return `<${url}>; as=style; rel=preload`;
|
|
14
|
+
}
|
|
15
|
+
return '';
|
|
16
|
+
})
|
|
17
|
+
.join(', ');
|
|
18
|
+
return prefetchHeaderValue;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=getPrefetchFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPrefetchFiles.js","sourceRoot":"","sources":["getPrefetchFiles.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAA8B,EAAE,EAAE;IAClE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,mBAAmB,GAAG,aAAa;SACtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEnC,IAAI,MAAM,EAAE;YACV,OAAO,IAAI,GAAG,2BAA2B,CAAC;SAC3C;aAAM,IAAI,KAAK,EAAE;YAChB,OAAO,IAAI,GAAG,0BAA0B,CAAC;SAC1C;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const getPreloadLinkHeaderString = (preloadAssets) => {
|
|
2
|
+
if (!preloadAssets || preloadAssets.length < 1) {
|
|
3
|
+
return '';
|
|
4
|
+
}
|
|
5
|
+
const preloadLinkHeaderString = preloadAssets
|
|
6
|
+
.map(({ url, scriptType, linkType }) => {
|
|
7
|
+
if (scriptType === 'script') {
|
|
8
|
+
return `<${url}>; as=${scriptType}; rel=${linkType}`;
|
|
9
|
+
}
|
|
10
|
+
else if (scriptType === 'style') {
|
|
11
|
+
return `<${url}>; as=${scriptType}; rel=${linkType}`;
|
|
12
|
+
}
|
|
13
|
+
return '';
|
|
14
|
+
})
|
|
15
|
+
.join(', ');
|
|
16
|
+
return preloadLinkHeaderString;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=getPreloadAssets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPreloadAssets.js","sourceRoot":"","sources":["getPreloadAssets.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,aAA8B,EAAE,EAAE;IAC3E,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC9C,OAAO,EAAE,CAAC;KACX;IAED,MAAM,uBAAuB,GAAG,aAAa;SAC1C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrC,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC3B,OAAO,IAAI,GAAG,SAAS,UAAU,SAAS,QAAQ,EAAE,CAAC;SACtD;aAAM,IAAI,UAAU,KAAK,OAAO,EAAE;YACjC,OAAO,IAAI,GAAG,SAAS,UAAU,SAAS,QAAQ,EAAE,CAAC;SACtD;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,uBAAuB,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { BootOptions } from '../../components/ConfigProvider';
|
|
3
|
+
export interface TranslationsPromises {
|
|
4
|
+
[locale: string]: () => Promise<any>;
|
|
5
|
+
}
|
|
6
|
+
export declare const createWorkerApp: (Component: React.ReactElement<any>, userConfig: BootOptions) => Promise<(request: Request, _: any, __: any) => Promise<Response>>;
|
|
@@ -0,0 +1,98 @@
|
|
|
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 { addMissingConfig } from '../addMissingConfig';
|
|
11
|
+
import { createGraphqlServerWorker, storeapiExtensionWorker } from './createApolloServerWorker';
|
|
12
|
+
import { createClient } from '../apollo';
|
|
13
|
+
import createRenderer from './createRenderer';
|
|
14
|
+
// Import HTML template and loadable stats as inline strings/objects
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
import template from '@jetshop/react-scripts/config/paths/appBuild/index.html';
|
|
17
|
+
import loadableStats from '@jetshop/react-scripts/config/paths/appBuildPublic/loadable-stats.json';
|
|
18
|
+
function validateBootOptions(opts) {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
const errors = [];
|
|
21
|
+
if ((_b = (_a = opts.server) === null || _a === void 0 ? void 0 : _a.graphql) === null || _b === void 0 ? void 0 : _b.extensions.length) {
|
|
22
|
+
if (opts.schemaExtensions.length || opts.apolloConfig.enableGateway) {
|
|
23
|
+
errors.push(`It looks like you're trying to use both the deprecated and the supported Graphql Gateway configuration. Please remove the legacy implementation that is using "apolloConfig.enableGateway" and "schemaExtensions"`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (opts.schemaExtensions &&
|
|
27
|
+
opts.schemaExtensions.length > 0 &&
|
|
28
|
+
!opts.apolloConfig.enableGateway) {
|
|
29
|
+
errors.push(`We have specified ${opts.schemaExtensions.length} schema extensions but "apolloConfig.enableGateway" is falsy. Remove schema extensions or disable gateway.`);
|
|
30
|
+
}
|
|
31
|
+
if (opts.optimize) {
|
|
32
|
+
if (!opts.optimize.container)
|
|
33
|
+
errors.push('You need to provide a optimize container id in `shop.config.js`.');
|
|
34
|
+
if (!opts.optimize.experimentId)
|
|
35
|
+
errors.push('You need to provide an experiment id in `shop.config.js`.');
|
|
36
|
+
if (!opts.optimize.variantWeights ||
|
|
37
|
+
opts.optimize.variantWeights.length < 2)
|
|
38
|
+
errors.push('You need at least two variants in an experiment. Add at least two `variantWeights` in `shop.config.js`.');
|
|
39
|
+
}
|
|
40
|
+
if (errors.length > 0) {
|
|
41
|
+
throw new Error(`Boot options invalid, check your "shop.config.js". Errors:\n${errors
|
|
42
|
+
.map((str) => `- ${str}`)
|
|
43
|
+
.join('\n')}`);
|
|
44
|
+
}
|
|
45
|
+
return addMissingConfig(opts);
|
|
46
|
+
}
|
|
47
|
+
export const createWorkerApp = (Component, userConfig) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
var _a, _b;
|
|
49
|
+
const config = validateBootOptions(userConfig);
|
|
50
|
+
const { apolloConfig, server } = config;
|
|
51
|
+
// Initialize GraphQL server with modern approach
|
|
52
|
+
let graphqlHandler = null;
|
|
53
|
+
if ((_b = (_a = server === null || server === void 0 ? void 0 : server.graphql) === null || _a === void 0 ? void 0 : _a.extensions) === null || _b === void 0 ? void 0 : _b.length) {
|
|
54
|
+
graphqlHandler = yield createGraphqlServerWorker({
|
|
55
|
+
extensions: [
|
|
56
|
+
storeapiExtensionWorker({
|
|
57
|
+
token: apolloConfig.token,
|
|
58
|
+
shopid: apolloConfig.shopid,
|
|
59
|
+
endpoint: apolloConfig.graphQLURI
|
|
60
|
+
})
|
|
61
|
+
].concat(server.graphql.extensions)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const { client } = createClient({ apolloConfig });
|
|
65
|
+
const renderer = createRenderer(template, Component, Object.assign({ loadableStats, globalClient: client, trackers: config.trackers || [] }, config));
|
|
66
|
+
// Return Cloudflare Workers fetch handler
|
|
67
|
+
return (request, _, __) => __awaiter(void 0, void 0, void 0, function* () {
|
|
68
|
+
try {
|
|
69
|
+
const url = new URL(request.url);
|
|
70
|
+
// Route: GraphQL endpoint
|
|
71
|
+
if (url.pathname === '/graphql' && graphqlHandler) {
|
|
72
|
+
return yield graphqlHandler(request);
|
|
73
|
+
}
|
|
74
|
+
// Route: Debug headers
|
|
75
|
+
if (url.pathname === '/debug/headers') {
|
|
76
|
+
const headersObj = {};
|
|
77
|
+
request.headers.forEach((value, key) => {
|
|
78
|
+
headersObj[key] = value;
|
|
79
|
+
});
|
|
80
|
+
return new Response(JSON.stringify(headersObj), {
|
|
81
|
+
status: 200,
|
|
82
|
+
headers: { 'Content-Type': 'application/json' }
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Route: Tracking endpoint (not implemented - return 501)
|
|
86
|
+
if (url.pathname === '/_event') {
|
|
87
|
+
return new Response('Not Implemented', { status: 501 });
|
|
88
|
+
}
|
|
89
|
+
// Route: All other requests to SSR renderer
|
|
90
|
+
return yield renderer(request);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('Worker error:', error);
|
|
94
|
+
return new Response('Internal Server Error', { status: 500 });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CountrySettings } from '@jetshop/core/types';
|
|
2
2
|
import { CustomerField } from '@jetshop/core/types';
|
|
3
|
-
export declare const getFieldType: (name: string) => "text" | "
|
|
3
|
+
export declare const getFieldType: (name: string) => "text" | "email" | "tel" | "password";
|
|
4
4
|
export declare function formFieldsFromSettings(selectedCountrySettings: CountrySettings, isUserTypeBusiness?: boolean): {
|
|
5
5
|
allFields: {
|
|
6
6
|
type: string;
|
|
@@ -20,13 +20,10 @@ export interface ApolloConfig {
|
|
|
20
20
|
engineApiKey?: string;
|
|
21
21
|
enableGateway?: boolean;
|
|
22
22
|
channelsQuery?: DocumentNode;
|
|
23
|
-
persistedQueries?:
|
|
24
|
-
query: DocumentNode;
|
|
25
|
-
variables?: Record<string, any>;
|
|
26
|
-
}[];
|
|
23
|
+
persistedQueries?: any;
|
|
27
24
|
}
|
|
28
25
|
export interface ChannelOverrides {
|
|
29
|
-
[id: number]: Omit<BootOptions, '
|
|
26
|
+
[id: number]: Omit<BootOptions, 'apolloConfig' | 'intl' | 'disableGeoRedirect' | 'singleDomainMode' | 'optimize' | 'routes' | 'loginPath' | 'pathsWithNoAuthRequired'>;
|
|
30
27
|
}
|
|
31
28
|
export interface OptimizeConfig {
|
|
32
29
|
container: string;
|
|
@@ -82,24 +79,15 @@ export interface BootOptions {
|
|
|
82
79
|
optimize?: OptimizeConfig;
|
|
83
80
|
routes?: Routes;
|
|
84
81
|
preload?: PreLoaderProviderConfig;
|
|
85
|
-
sentry?:
|
|
82
|
+
sentry?: any;
|
|
86
83
|
/** Server specific configuration */
|
|
87
84
|
server?: Server;
|
|
88
85
|
usePrimaryRouteForProducts?: boolean;
|
|
89
86
|
useTrackingConsentAPI?: boolean;
|
|
90
87
|
useIndefinitelySavedCart?: boolean;
|
|
91
|
-
/** Enable this if you want to use Polyfill.io service before booting shop on client */
|
|
92
88
|
usePolyfilling?: boolean;
|
|
93
89
|
useMobileImageSizes?: boolean;
|
|
94
90
|
}
|
|
95
|
-
interface Sentry {
|
|
96
|
-
/** DSN used to track client side errors */
|
|
97
|
-
clientDSN?: string;
|
|
98
|
-
/** DSN used to track server side errors */
|
|
99
|
-
serverDSN?: string;
|
|
100
|
-
/** A list of strings or RegExps to filter errors to ignore */
|
|
101
|
-
ignoreErrors?: (string | RegExp)[];
|
|
102
|
-
}
|
|
103
91
|
interface Server {
|
|
104
92
|
/** GraphQL proxy server configuration */
|
|
105
93
|
graphql?: GraphQL;
|