@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.
Files changed (94) hide show
  1. package/ChannelHandler/channelUtils.js +1 -1
  2. package/ChannelHandler/channelUtils.js.map +1 -1
  3. package/boot/apollo.js +3 -39
  4. package/boot/apollo.js.map +1 -1
  5. package/boot/client/startClient.js +1 -16
  6. package/boot/client/startClient.js.map +1 -1
  7. package/boot/server/createApolloServer.js +0 -6
  8. package/boot/server/createApolloServer.js.map +1 -1
  9. package/boot/server/createRenderer.d.ts +2 -2
  10. package/boot/server/createRenderer.js +12 -25
  11. package/boot/server/createRenderer.js.map +1 -1
  12. package/boot/server/createServer.js +0 -11
  13. package/boot/server/createServer.js.map +1 -1
  14. package/boot/server/index.d.ts +0 -2
  15. package/boot/server/index.js +4 -16
  16. package/boot/server/index.js.map +1 -1
  17. package/boot/worker/createApolloServerWorker.d.ts +18 -0
  18. package/boot/worker/createApolloServerWorker.js +119 -0
  19. package/boot/worker/createApolloServerWorker.js.map +1 -0
  20. package/boot/worker/createRenderer.d.ts +23 -0
  21. package/boot/worker/createRenderer.js +242 -0
  22. package/boot/worker/createRenderer.js.map +1 -0
  23. package/boot/worker/getPrefetchFiles.d.ts +10 -0
  24. package/boot/worker/getPrefetchFiles.js +20 -0
  25. package/boot/worker/getPrefetchFiles.js.map +1 -0
  26. package/boot/worker/getPreloadAssets.d.ts +10 -0
  27. package/boot/worker/getPreloadAssets.js +18 -0
  28. package/boot/worker/getPreloadAssets.js.map +1 -0
  29. package/boot/worker/index.d.ts +6 -0
  30. package/boot/worker/index.js +98 -0
  31. package/boot/worker/index.js.map +1 -0
  32. package/components/Auth/formFieldsFromSettings.d.ts +1 -1
  33. package/components/ConfigProvider.d.ts +3 -15
  34. package/components/ConfigProvider.js.map +1 -1
  35. package/components/DynamicRoute/GenericError.js +0 -4
  36. package/components/DynamicRoute/GenericError.js.map +1 -1
  37. package/components/Pagination/PaginationProvider.d.ts +0 -2
  38. package/components/Pagination/PaginationProvider.js +1 -10
  39. package/components/Pagination/PaginationProvider.js.map +1 -1
  40. package/global.d.ts +0 -1
  41. package/hooks/usePreconnectLinks.js +1 -5
  42. package/hooks/usePreconnectLinks.js.map +1 -1
  43. package/hooks/usePreconnectLinks.test.js +0 -4
  44. package/package.json +5 -6
  45. package/analytics/integrations/gtm/README.md +0 -3
  46. package/boot/server/IntervalQuery.d.ts +0 -32
  47. package/boot/server/IntervalQuery.js +0 -95
  48. package/boot/server/IntervalQuery.js.map +0 -1
  49. package/boot/server/IntervalQuery.test.js +0 -276
  50. package/boot/server/PersistedApolloClient.d.ts +0 -20
  51. package/boot/server/PersistedApolloClient.js +0 -40
  52. package/boot/server/PersistedApolloClient.js.map +0 -1
  53. package/boot/server/PersistedApolloClient.test.js +0 -234
  54. package/boot/server/createApolloServer.test.js +0 -114
  55. package/boot/server/getPreloadAssets.test.js +0 -133
  56. package/boot/server/persistedQueries/PersistedClient.d.ts +0 -22
  57. package/boot/server/persistedQueries/PersistedClient.js +0 -58
  58. package/boot/server/persistedQueries/PersistedClient.js.map +0 -1
  59. package/boot/server/persistedQueries/__tests__/getPersistedQueriesForRequest.test.js +0 -201
  60. package/boot/server/persistedQueries/__tests__/mockQuery.gql +0 -6
  61. package/boot/server/persistedQueries/getPersistedQueriesForRequest.d.ts +0 -3
  62. package/boot/server/persistedQueries/getPersistedQueriesForRequest.js +0 -27
  63. package/boot/server/persistedQueries/getPersistedQueriesForRequest.js.map +0 -1
  64. package/boot/server/saleSource.test.js +0 -39
  65. package/boot/server/salesSource.d.ts +0 -8
  66. package/boot/server/salesSource.js +0 -16
  67. package/boot/server/salesSource.js.map +0 -1
  68. package/errorReporting.browser.d.ts +0 -3
  69. package/errorReporting.browser.js +0 -17
  70. package/errorReporting.browser.js.map +0 -1
  71. package/errorReporting.d.ts +0 -4
  72. package/errorReporting.js +0 -24
  73. package/errorReporting.js.map +0 -1
  74. package/errorReporting.server.d.ts +0 -3
  75. package/errorReporting.server.js +0 -12
  76. package/errorReporting.server.js.map +0 -1
  77. package/errorReporting.shared.d.ts +0 -5
  78. package/errorReporting.shared.js +0 -17
  79. package/errorReporting.shared.js.map +0 -1
  80. package/polyfills.d.ts +0 -1
  81. package/polyfills.js +0 -58
  82. package/polyfills.js.map +0 -1
  83. package/sentry/client.d.ts +0 -1
  84. package/sentry/client.js +0 -30
  85. package/sentry/client.js.map +0 -1
  86. package/sentry/common.d.ts +0 -1
  87. package/sentry/common.js +0 -5
  88. package/sentry/common.js.map +0 -1
  89. package/sentry/server.d.ts +0 -1
  90. package/sentry/server.js +0 -20
  91. package/sentry/server.js.map +0 -1
  92. package/sentry/utils.d.ts +0 -1
  93. package/sentry/utils.js +0 -2
  94. 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":";;;;;;;;;AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAGhD,OAAO,KAAuB,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,iBAAiB,MAAM,2BAA2B,CAAC;AAC1D,OAAO,uBAAuB,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAiB,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,kBAAkB,MAAM,8DAA8D,CAAC;AAC9F,OAAO,YAAY,MAAM,mDAAmD,CAAC;AAkC7E,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,IAAc,EAAE,EAAE,CAC/D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CACtB,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CACd,GAAG,KAAK,gBAAgB;IACtB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAC/D,QAAQ,CACT,CAAC;AAEJ,MAAM,QAAQ,GAAG,CACf,IAAuB,EACvB,GAAkB,EAClB,aAA8B,EAC9B,MAAyB,EACzB,cAA8B,EAC9B,WAAwB,EACxB,cAA8B,EAC9B,UAAe,EACf,MAGC,EACD,SAAc,EACd,EAAE;;IACF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAkB,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACpE,MAAM,aAAa,GAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAEtD,MAAM,eAAe,GAAG,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,eAAe,CAAC;IACxD,MAAM,gBAAgB,GACpB,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,gBAAgB,MAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,EAAE,CAAA;QACpD,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,WAAW,GAAG,CAClB,oBAAC,qBAAqB,IAAC,SAAS,EAAE,SAAS;QACzC,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU;YACrC,oBAAC,UAAU,IACT,gBAAgB,EAAE,GAAG,CAAC,UAAU,EAChC,MAAM,kCAAO,aAAa,GAAK,gBAAgB,GAC/C,OAAO,EAAE,GAAG,CAAC,gBAAgB,EAC7B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE;oBACX,QAAQ,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM;oBAC7D,OAAO,EAAE,aAAa;iBACvB;gBAED,oBAAC,YAAY,IAAC,IAAI,EAAE,WAAW,IAAG,IAAI,CAAgB,CAC3C,CACQ,CACD,CACzB,CAAC;IAEF,IAAI;QACF,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;KACpC;IAAC,OAAO,CAAC,EAAE;QACV,IACE,CAAC,CAAC,OAAO;YACP,2DAA2D;YAC7D,CAAA,MAAA,CAAC,CAAC,YAAY,0CAAE,UAAU,MAAK,GAAG,EAClC;YACA,MAAM,IAAI,GAAG,cAAc,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;YACvD,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;YAElD,MAAM,wBAAwB,GAAG,MAAM,CAAC,uBAAuB,CAAC,GAAG,CACjE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,CACtB,CAAC;YAEF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,OAAO,GACX,wBAAwB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CACxC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAC/B,CAAC,MAAM,GAAG,CAAC,CAAC;YAEf,IAAI,CAAC,OAAO,EAAE;gBACZ,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC;gBAC/B,aAAa,CAAC,GAAG,GAAG,iBAAiB,GAAG,GAAG,CAAC,MAAM,CAAC;aACpD;SACF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;YAC9C,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC;SAChC;KACF;IAED,MAAM,WAAW,GAAG;uCACiB,IAAI,CAAC,SAAS,CACjD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CACjC;mBACgB,CAAC;IAElB,OAAO;QACL,WAAW;QACX,OAAO;QACP,SAAS,EAAE,aAAa,CAAC,GAAG;QAC5B,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,MAAM,EAAE,aAAa,CAAC,MAAM;QAC5B,WAAW;KACZ,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,QAAgB,EAChB,IAAuB,EACvB,OAAwB,EACxB,EAAE;IACF,OAAO,CAAO,OAAgB,EAAqB,EAAE;QACnD,MAAM,EACJ,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,MAAM,EACN,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EACjB,GAAG,OAAO,CAAC;QAEZ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,mCAAmC;QACnC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;QAE1C,0CAA0C;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAE1C,oCAAoC;QACpC,MAAM,YAAY,GAChB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACnC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEvE,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC;YACxC,KAAK,EAAE,YAAY,CAAC,aAAa;SAClC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;QAExC,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,GAC5D,gCAAgC,CAAC;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,gBAAgB;YAChB,QAAQ;YACR,OAAO;YACP,YAAY;YACZ,iBAAiB;YACjB,kBAAkB;SACnB,CAAC,CAAC;QAEL,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;YAClC,OAAO;SACR,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAE5C,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;YACxC,eAAe;YACf,kBAAkB;YAClB,QAAQ;SACT,CAAC,CAAC;QAEH,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,gBAAgB,GAAG;YACvB,YAAY;YACZ,MAAM;YACN,WAAW;YACX,cAAc;YACd,GAAG,EAAE;gBACH,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,EAAE,OAAO,CAAC,GAAG;aACV;YACR,cAAc;SACf,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAClD,cAAc,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;QAE1E,IAAI,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC;gBACtD,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,UAAU,EAAE,cAAc,CAAC,kBAAkB;gBAC7C,gBAAgB,EAAE,IAAI;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;SAC5C;QAED,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAErC,kCAAkC;QAClC,MAAM,WAAW,GAAQ,EAAE,CAAC;QAC5B,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACtC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE;gBACJ,aAAa,EAAE,0BAA0B,CAAC,WAAW,CAAC;aACvD;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,iBAAiB,CAAC;YACpC,eAAe;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,OAAO;YACxC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC1D,MAAM,UAAU,GAAG,uBAAuB,CACxC,OAAO,CAAC,QAAQ,EAChB,eAAe,CAChB,CAAC;YAEF,IAAI,UAAU,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,EAAE;oBAC5C,IAAI,EAAE,GAAG;oBACT,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;iBAC1B,CAAC,CAAC;aACJ;SACF;QAED,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC;YACxC,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,CAAC,QAAQ,CAAC;SACxB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAkB;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU;YACV,gBAAgB,EAAE,OAAO;SAC1B,CAAC;QAEF,MAAM,EACJ,WAAW,EACX,SAAS,EACT,UAAU,EACV,MAAM,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EACpD,WAAW,EACZ,GAAG,MAAM,QAAQ,CAChB,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,cAAc,EACd,WAAW,EACX,cAAc,EACd,UAAU,EACV;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;SACzD,EACD,cAAc,CACf,CAAC;QAEF,IAAI,SAAS,EAAE;YACb,MAAM,cAAc,GAClB,CAAC,UAAU,IAAI,UAAU,GAAG,GAAG,IAAI,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1E,OAAO,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;SACrD;QAED,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC;YAClC,cAAc,EAAE,WAAW;SAC5B,CAAC,CAAC;QAEH,wCAAwC;QACxC,MAAM,aAAa,GACjB,cACD,CAAC,YAAY,EAAE,CAAC;QACjB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,aAAa,CAAC,CAAC,CAAC;SACxE;QAED,mCAAmC;QACnC,MAAM,YAAY,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,cAAc,GAAG,cAAc,CAAC,aAAa,EAAE,CAAC;QAEtD,MAAM,gBAAgB,GAAG,2CAA2C,UAAU,aAAa,CAAC;QAC5F,MAAM,kBAAkB,GAAG,uCAAuC,YAAY,aAAa,CAAC;QAC5F,MAAM,uBAAuB,GAAG,4CAA4C,IAAI,CAAC,SAAS,CACxF,iBAAiB,CAClB,aAAa,CAAC;QACf,MAAM,gBAAgB,GAAG,qCAAqC,UAAU,aAAa,CAAC;QAEtF,MAAM,IAAI,GAAG;YACX,WAAW,EAAE,WAAW;YACxB,YAAY;YACZ,cAAc,EACZ,kBAAkB;gBAClB,uBAAuB;gBACvB,gBAAgB;gBAChB,cAAc;YAChB,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,gBAAgB,GAAG,aAAa;YAC1D,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE;SAC1C,CAAC;QAEF,MAAM,IAAI,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAEvD,sBAAsB;QACtB,MAAM,YAAY,GAAG,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;QAE/D,yCAAyC;QACzC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACvC,yFAAyF;YACzF,eAAe,CAAC,MAAM,CACpB,YAAY,EACZ,GAAG,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;YAChC,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;IACL,CAAC,CAAA,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ export interface PreloadAssets {
2
+ filename: string;
3
+ scriptType: string;
4
+ chunk: string;
5
+ url: string;
6
+ path: string;
7
+ type: string;
8
+ linkType: string;
9
+ }
10
+ export declare const getPrefetchHeader: (prefetchFiles: PreloadAssets[]) => string;
@@ -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,10 @@
1
+ export interface PreloadAssets {
2
+ filename: string;
3
+ scriptType: string;
4
+ chunk: string;
5
+ url: string;
6
+ path: string;
7
+ type: string;
8
+ linkType: string;
9
+ }
10
+ export declare const getPreloadLinkHeaderString: (preloadAssets: PreloadAssets[]) => string;
@@ -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" | "tel" | "email" | "password";
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, 'usePolyfilling' | 'apolloConfig' | 'intl' | 'disableGeoRedirect' | 'singleDomainMode' | 'optimize' | 'routes' | 'loginPath' | 'pathsWithNoAuthRequired'>;
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?: 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;