@jetshop/core 1.1.13-no-proxy.4 → 1.1.13-no-proxy.5
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/boot/server/createApolloServer.js +7 -6
- package/boot/server/createApolloServer.js.map +1 -1
- package/boot/server/createDevServer.js +0 -1
- package/boot/server/createDevServer.js.map +1 -1
- package/boot/server/createRenderer.d.ts +1 -1
- package/boot/server/createRenderer.js +57 -42
- package/boot/server/createRenderer.js.map +1 -1
- package/boot/server/index.js +1 -1
- package/boot/server/index.js.map +1 -1
- package/boot/server/listen.d.ts +0 -3
- package/boot/server/listen.js +0 -1
- package/boot/server/listen.js.map +1 -1
- package/package.json +2 -3
- package/polyfills.js +5 -1
- package/polyfills.js.map +1 -1
- package/boot/server/renderToStream.d.ts +0 -17
- package/boot/server/renderToStream.js +0 -105
- package/boot/server/renderToStream.js.map +0 -1
@@ -79,6 +79,11 @@ export default function createApolloServer({ apolloConfig, extensions = [] }) {
|
|
79
79
|
schemas,
|
80
80
|
resolvers
|
81
81
|
});
|
82
|
+
const engine = apolloConfig.engineApiKey
|
83
|
+
? {
|
84
|
+
apiKey: apolloConfig.engineApiKey
|
85
|
+
}
|
86
|
+
: false;
|
82
87
|
const apolloServer = new ApolloServer({
|
83
88
|
schema,
|
84
89
|
// Disable introspection in production
|
@@ -93,13 +98,9 @@ export default function createApolloServer({ apolloConfig, extensions = [] }) {
|
|
93
98
|
persistedQueries: {
|
94
99
|
cache: new InMemoryLRUCache()
|
95
100
|
},
|
96
|
-
|
97
|
-
tracing: !!apolloConfig.engineApiKey,
|
101
|
+
tracing: false,
|
98
102
|
cacheControl: true,
|
99
|
-
|
100
|
-
// integrated metric reporting and fall-back to using the Apollo
|
101
|
-
// Engine Proxy (running separately) for metric collection.
|
102
|
-
engine: false
|
103
|
+
engine
|
103
104
|
});
|
104
105
|
return { apolloServer, schema };
|
105
106
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createApolloServer.js","sourceRoot":"","sources":["createApolloServer.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"createApolloServer.js","sourceRoot":"","sources":["createApolloServer.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createDevServer.js","sourceRoot":"","sources":["createDevServer.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,kBAAwC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,EACpC,YAAY,EACZ,IAAI,EACJ,gBAAgB,EACO,EAAE,EAAE;IAC3B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAAC;QAChD,YAAY;QACZ,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAC;IAEH,YAAY,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC;QACxC,
|
1
|
+
{"version":3,"file":"createDevServer.js","sourceRoot":"","sources":["createDevServer.ts"],"names":[],"mappings":";;;;;;;;AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,kBAAwC,MAAM,sBAAsB,CAAC;AAC5E,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAQ7B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAO,EACpC,YAAY,EACZ,IAAI,EACJ,gBAAgB,EACO,EAAE,EAAE;IAC3B,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAEhB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,kBAAkB,CAAC;QAChD,YAAY;QACZ,UAAU,EAAE,gBAAgB;KAC7B,CAAC,CAAC;IAEH,YAAY,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE3C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC;QACxC,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
@@ -21,5 +21,5 @@ export interface RendererOptions {
|
|
21
21
|
declare const createRenderer: (template: string, tree: React.ReactElement<any>, options: RendererOptions) => (req: Request & {
|
22
22
|
universalCookies: any;
|
23
23
|
breakpoint: string;
|
24
|
-
}, res: Response) => Promise<void>;
|
24
|
+
}, res: Response) => Promise<void | Response>;
|
25
25
|
export default createRenderer;
|
@@ -13,22 +13,23 @@ import { getSelectedChannel, getGeoRedirect } from '@jetshop/core/components/Cha
|
|
13
13
|
import { channelsQuery } from '@jetshop/core/data/queries';
|
14
14
|
import { setupIntl } from '@jetshop/intl/config';
|
15
15
|
import IntlContext from '@jetshop/intl/context';
|
16
|
-
import {
|
16
|
+
import { renderStylesToNodeStream } from 'emotion-server';
|
17
17
|
import get from 'lodash.get';
|
18
18
|
import React from 'react';
|
19
|
-
import { ApolloProvider,
|
19
|
+
import { ApolloProvider, getDataFromTree } from 'react-apollo';
|
20
20
|
import { CookiesProvider } from 'react-cookie';
|
21
|
+
import { renderToNodeStream } from 'react-dom/server';
|
21
22
|
import { HelmetProvider } from 'react-helmet-async';
|
22
23
|
import Loadable from 'react-loadable';
|
23
24
|
import { MediaProvider } from 'react-media-universal';
|
24
25
|
import { StaticRouter } from 'react-router-dom';
|
26
|
+
import report from '../../errorReporting';
|
25
27
|
import { createPolyfill } from '../../polyfills';
|
26
28
|
import { createClient } from '../apollo';
|
27
29
|
import AuthProvider from '../../components/AuthContext/AuthProvider';
|
28
30
|
import { getPrefetchFiles, getPrefetchHeader, getPreloadLinksAndScripts } from './getPrefetchFiles';
|
29
|
-
import { renderToString } from 'react-dom/server';
|
30
31
|
const injectDataIntoSlots = (template, data) => Object.keys(data).reduce((output, key) => output.replace(`<slot name="${key}"/>`, data[key]), template);
|
31
|
-
const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, translator, locale) => {
|
32
|
+
const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, translator, locale) => __awaiter(this, void 0, void 0, function* () {
|
32
33
|
const modules = [];
|
33
34
|
const routerContext = { url: null, statusCode: 200 };
|
34
35
|
const helmetContext = { helmet: null };
|
@@ -53,30 +54,53 @@ const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, t
|
|
53
54
|
React.createElement(ChannelProvider, { channels: channels, selectedChannel: selectedChannel },
|
54
55
|
React.createElement(StaticRouter, { location: req.originalUrl, context: routerContext },
|
55
56
|
React.createElement(AuthProvider, null, tree))))))))))));
|
57
|
+
try {
|
58
|
+
yield getDataFromTree(wrappedTree);
|
59
|
+
}
|
60
|
+
catch (e) {
|
61
|
+
// Don't log to Sentry here as we're already logging query errors in a
|
62
|
+
// middleware and JS errors further down in `handleError` and then
|
63
|
+
// again on the client if it fails to recover
|
64
|
+
console.error('Apollo data fetch failed:', e);
|
65
|
+
routerContext.statusCode = 500;
|
66
|
+
}
|
67
|
+
// Serialize the apollo state for client side rehydration. The html comment
|
68
|
+
// (inside js comments) is intentional and prevents inline script tags
|
69
|
+
// inside the extracted state from closing this script tag prematurely
|
70
|
+
const apolloState = `<script>/*<!--*/
|
71
|
+
window.__APOLLO_STATE__=${JSON.stringify(client.extract())};
|
72
|
+
/*-->*/</script>`;
|
56
73
|
return {
|
57
74
|
wrappedTree,
|
58
75
|
modules,
|
59
|
-
|
60
|
-
|
76
|
+
routerUrl: routerContext.url,
|
77
|
+
statusCode: routerContext.statusCode,
|
78
|
+
helmet: helmetContext.helmet,
|
79
|
+
apolloState,
|
61
80
|
polyfill: createPolyfill(locale)
|
62
81
|
};
|
63
|
-
};
|
82
|
+
});
|
64
83
|
const startResponse = ({ res, head, statusCode }) => {
|
65
84
|
res.status(statusCode);
|
66
85
|
// write head and don't end response
|
67
86
|
res.write(head);
|
68
87
|
};
|
69
|
-
const endResponse = ({ res,
|
70
|
-
// Serialize the apollo state for client side rehydration. The html comment
|
71
|
-
// (inside js comments) is intentional and prevents inline script tags
|
72
|
-
// inside the extracted state from closing this script tag prematurely
|
73
|
-
const apolloState = `<script>/*<!--*/
|
74
|
-
window.__APOLLO_STATE__=${JSON.stringify(client.extract())};
|
75
|
-
/*-->*/</script>`;
|
76
|
-
res.write(apolloState);
|
88
|
+
const endResponse = ({ res, foot }) => {
|
77
89
|
res.write(foot);
|
78
90
|
res.end();
|
79
91
|
};
|
92
|
+
const handleError = ({ streamName, res, foot }) => (error) => {
|
93
|
+
report(error, { reason: streamName });
|
94
|
+
console.error(`Error in stream "${streamName}":`, error);
|
95
|
+
// we need to make sure that res.write gets a string
|
96
|
+
// cause if it does not get a string/buffer it will cause
|
97
|
+
// the server to crash
|
98
|
+
// error can be literally anything, not limited to Error,
|
99
|
+
// which means the key message could be missing
|
100
|
+
const chunk = (error && error.message) || '' + error;
|
101
|
+
res.write(chunk);
|
102
|
+
endResponse({ res, foot });
|
103
|
+
};
|
80
104
|
const createRenderer = (template, tree, options) => (req, res) => __awaiter(this, void 0, void 0, function* () {
|
81
105
|
const { apolloConfig, preloadStats, intl } = options;
|
82
106
|
// Set response headers immediately
|
@@ -98,25 +122,9 @@ const createRenderer = (template, tree, options) => (req, res) => __awaiter(this
|
|
98
122
|
defaultLocale: intl.defaultLocale,
|
99
123
|
options: intl.options
|
100
124
|
});
|
101
|
-
const { wrappedTree, modules,
|
102
|
-
|
103
|
-
|
104
|
-
try {
|
105
|
-
response = yield getMarkupFromTree({
|
106
|
-
tree: wrappedTree,
|
107
|
-
renderFunction: tree => renderStylesToString(renderToString(tree))
|
108
|
-
});
|
109
|
-
}
|
110
|
-
catch (e) {
|
111
|
-
// Don't log to Sentry here as we're already logging query errors in a
|
112
|
-
// middleware and JS errors further down in `handleError` and then
|
113
|
-
// again on the client if it fails to recover
|
114
|
-
console.error('Apollo data fetch failed:', e);
|
115
|
-
response = e;
|
116
|
-
statusCode = 500;
|
117
|
-
}
|
118
|
-
if (routerContext.url) {
|
119
|
-
return res.redirect(301, routerContext.url);
|
125
|
+
const { wrappedTree, modules, routerUrl, statusCode, helmet: { title, meta }, apolloState, polyfill } = yield wrapTree(tree, req, options, client, selectedChannel, channels, translator, locale);
|
126
|
+
if (routerUrl) {
|
127
|
+
return res.redirect(301, routerUrl);
|
120
128
|
}
|
121
129
|
const prefetchFiles = getPrefetchFiles({
|
122
130
|
locale,
|
@@ -129,21 +137,28 @@ const createRenderer = (template, tree, options) => (req, res) => __awaiter(this
|
|
129
137
|
}
|
130
138
|
const { preloadLinks, preloadScripts } = getPreloadLinksAndScripts(prefetchFiles);
|
131
139
|
const data = {
|
140
|
+
apolloState,
|
132
141
|
polyfill,
|
133
142
|
preloadLinks,
|
134
143
|
preloadScripts,
|
135
|
-
title:
|
136
|
-
meta:
|
144
|
+
title: title.toString(),
|
145
|
+
meta: meta.toString()
|
137
146
|
};
|
138
147
|
const html = injectDataIntoSlots(template, data);
|
139
148
|
const [head, foot] = html.split('<slot name="html"/>');
|
140
|
-
startResponse({
|
141
|
-
|
142
|
-
|
143
|
-
|
149
|
+
startResponse({ res, head, statusCode });
|
150
|
+
// create node stream
|
151
|
+
const stream = renderToNodeStream(wrappedTree)
|
152
|
+
.on('error', handleError({ streamName: 'React NodeStream', res, foot }))
|
153
|
+
// pipe it to emotion-server node stream
|
154
|
+
.pipe(renderStylesToNodeStream())
|
155
|
+
.on('error', handleError({ streamName: 'Styles', res, foot }))
|
156
|
+
// on node stream end, write the foot part of the html and end the response
|
157
|
+
.on('end', () => {
|
158
|
+
endResponse({ res, foot });
|
144
159
|
});
|
145
|
-
|
146
|
-
|
160
|
+
// then pipe it to response, and tell it to not end the response
|
161
|
+
return stream.pipe(res, { end: false });
|
147
162
|
});
|
148
163
|
export default createRenderer;
|
149
164
|
//# sourceMappingURL=createRenderer.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["createRenderer.tsx"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,iBAAiB,MAAM,2CAA2C,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACf,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,WAAW,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"createRenderer.js","sourceRoot":"","sources":["createRenderer.tsx"],"names":[],"mappings":"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"}
|
package/boot/server/index.js
CHANGED
@@ -44,7 +44,7 @@ const boot = (Component, { apolloConfig, trackingID, tagManagerID, sentryServerD
|
|
44
44
|
});
|
45
45
|
app.use(asyncErrorHandler(renderer));
|
46
46
|
const port = parseInt(process.env.PORT, 10) || 3000;
|
47
|
-
yield listen({ app, port
|
47
|
+
yield listen({ app, port });
|
48
48
|
console.log(`🚀 App ready at http://localhost:${port}`);
|
49
49
|
});
|
50
50
|
export default boot;
|
package/boot/server/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,MAAM,qCAAqC,CAAC;AAExD,8EAA8E;AAC9E,iGAAiG;AACjG,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC;AAEtE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AACpD,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,GAAG,sBAAsB,CAAC;AA2BlE,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAEhE,MAAM,IAAI,GAAG,CACX,SAA4B,EAC5B,EACE,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,gBAAgB,EACJ,EACd,EAAE;IACF,IAAI,CAAC,kBAAkB,CAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,EAAE;QAC1D,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,IAAI,cAAc,CAAC,eAAe,CAAC,KAAK,KAAK,EAAE;QAC7C,OAAO,CAAC,KAAK,CACX,kDAAkD;YAChD,+CAA+C,CAClD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5E,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;QACnD,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,gBAAgB;KACjB,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAEpD,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAEpE,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,MAAM,MAAM,UAAU,CAAC;AAG9B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,OAAO,KAAK,MAAM,qCAAqC,CAAC;AAExD,8EAA8E;AAC9E,iGAAiG;AACjG,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC;AAEtE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC;AACpD,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,GAAG,sBAAsB,CAAC;AA2BlE,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;AAEhE,MAAM,IAAI,GAAG,CACX,SAA4B,EAC5B,EACE,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,IAAI,EACJ,gBAAgB,EACJ,EACd,EAAE;IACF,IAAI,CAAC,kBAAkB,CAAC,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,EAAE;QAC1D,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,IAAI,cAAc,CAAC,eAAe,CAAC,KAAK,KAAK,EAAE;QAC7C,OAAO,CAAC,KAAK,CACX,kDAAkD;YAChD,+CAA+C,CAClD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAE5E,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;IAErC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;QACnD,YAAY;QACZ,YAAY;QACZ,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,gBAAgB;KACjB,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IAEpD,MAAM,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAA,CAAC;AAEF,eAAe,IAAI,CAAC"}
|
package/boot/server/listen.d.ts
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
import { ApolloConfig } from '@jetshop/core/boot/apollo';
|
2
1
|
import { Application as ExpressApp } from 'express';
|
3
2
|
export interface ListenOptions {
|
4
3
|
app: ExpressApp;
|
5
4
|
port: number;
|
6
|
-
apolloConfig: ApolloConfig;
|
7
5
|
}
|
8
6
|
/**
|
9
7
|
* - Starts listening to `port`
|
10
|
-
* - Wraps Express server in Apollo Engine if `apolloConfig.engineApiKey` is set
|
11
8
|
*/
|
12
9
|
declare const listen: ({ app, port }: ListenOptions) => Promise<{
|
13
10
|
port: number;
|
package/boot/server/listen.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"listen.js","sourceRoot":"","sources":["listen.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"listen.js","sourceRoot":"","sources":["listen.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAiB,EAA6B,EAAE,CACzE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,GAAW,EAAE,EAAE;QAChD,GAAG;YACD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,OAAO,CAAC;gBACN,IAAI,EAAG,IAAI,CAAC,OAAO,EAAoB,CAAC,IAAI;aAC7C,CAAC,CAAC;IACT,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,eAAe,MAAM,CAAC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jetshop/core",
|
3
|
-
"version": "1.1.13-no-proxy.
|
3
|
+
"version": "1.1.13-no-proxy.5",
|
4
4
|
"main": "index.js",
|
5
5
|
"license": "MIT",
|
6
6
|
"dependencies": {
|
@@ -10,7 +10,7 @@
|
|
10
10
|
"@types/lodash.get": "^4.4.4",
|
11
11
|
"@types/lodash.merge": "^4.6.4",
|
12
12
|
"@types/lodash.pick": "^4.4.4",
|
13
|
-
"@types/node": "^
|
13
|
+
"@types/node": "^10.12.12",
|
14
14
|
"@types/node-fetch": "^2.1.2",
|
15
15
|
"@types/qs": "^6.5.1",
|
16
16
|
"@types/react": "^16.4.18",
|
@@ -19,7 +19,6 @@
|
|
19
19
|
"@types/react-loadable": "^5.4.1",
|
20
20
|
"apollo-cache-inmemory": "^1.3.9",
|
21
21
|
"apollo-client": "^2.4.5",
|
22
|
-
"apollo-engine": "^1.1.2",
|
23
22
|
"apollo-link": "^1.2.3",
|
24
23
|
"apollo-link-context": "^1.0.9",
|
25
24
|
"apollo-link-error": "^1.1.1",
|
package/polyfills.js
CHANGED
@@ -11,7 +11,11 @@ const polyfills = (locale) => [
|
|
11
11
|
'String.prototype.endsWith',
|
12
12
|
'String.prototype.startsWith',
|
13
13
|
'Object.keys',
|
14
|
+
'IntersectionObserver',
|
14
15
|
`Intl.~locale.${locale}`
|
15
16
|
];
|
16
|
-
export const createPolyfill = (locale) =>
|
17
|
+
export const createPolyfill = (locale) => {
|
18
|
+
const features = polyfills(locale).join(',');
|
19
|
+
return `<script async defer src="//cdn.polyfill.io/v2/polyfill${process.env.NODE_ENV === 'production' ? '.min' : ''}.js?features=${features}&flags=gated&callback=bootShop"></script>`;
|
20
|
+
};
|
17
21
|
//# sourceMappingURL=polyfills.js.map
|
package/polyfills.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"polyfills.js","sourceRoot":"","sources":["polyfills.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC;IACpC,KAAK;IACL,YAAY;IACZ,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,0BAA0B;IAC1B,sBAAsB;IACtB,2BAA2B;IAC3B,6BAA6B;IAC7B,aAAa;IACb,gBAAgB,MAAM,EAAE;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE
|
1
|
+
{"version":3,"file":"polyfills.js","sourceRoot":"","sources":["polyfills.ts"],"names":[],"mappings":"AAAA,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC;IACpC,KAAK;IACL,YAAY;IACZ,sBAAsB;IACtB,eAAe;IACf,gBAAgB;IAChB,sBAAsB;IACtB,2BAA2B;IAC3B,0BAA0B;IAC1B,sBAAsB;IACtB,2BAA2B;IAC3B,6BAA6B;IAC7B,aAAa;IACb,sBAAsB;IACtB,gBAAgB,MAAM,EAAE;CACzB,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,yDACL,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,gBAAgB,QAAQ,2CAA2C,CAAC;AACtE,CAAC,CAAC"}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { Query } from 'react-apollo';
|
3
|
-
export declare class RenderPromises {
|
4
|
-
private queryPromises;
|
5
|
-
private queryGraveyard;
|
6
|
-
addQueryPromise<TData, TVariables>(queryInstance: Query<TData, TVariables>, finish: () => React.ReactNode): React.ReactNode;
|
7
|
-
hasPromises(): boolean;
|
8
|
-
consumeAndAwaitPromises(): Promise<any[]>;
|
9
|
-
}
|
10
|
-
export declare type GetMarkupFromTreeOptions = {
|
11
|
-
tree: React.ReactNode;
|
12
|
-
context?: {
|
13
|
-
[key: string]: any;
|
14
|
-
};
|
15
|
-
renderFunction?: (tree: React.ReactElement<any>) => NodeJS.ReadableStream;
|
16
|
-
};
|
17
|
-
export default function renderToStream({ tree, context, renderFunction }: GetMarkupFromTreeOptions): Promise<NodeJS.ReadableStream>;
|
@@ -1,105 +0,0 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import { renderToNodeStream } from 'react-dom/server';
|
3
|
-
import * as PropTypes from 'prop-types';
|
4
|
-
// Like a Set, but for tuples. In practice, this class is used to store
|
5
|
-
// (query, JSON.stringify(variables)) tuples.
|
6
|
-
class Trie {
|
7
|
-
constructor() {
|
8
|
-
this.children = null;
|
9
|
-
this.added = false;
|
10
|
-
}
|
11
|
-
has(...keys) {
|
12
|
-
let node = this;
|
13
|
-
return (keys.every(key => {
|
14
|
-
const child = node.children && node.children.get(key);
|
15
|
-
return !!(child && (node = child));
|
16
|
-
}) && node.added);
|
17
|
-
}
|
18
|
-
add(...keys) {
|
19
|
-
let node = this;
|
20
|
-
keys.forEach(key => {
|
21
|
-
const map = node.children || (node.children = new Map());
|
22
|
-
const child = map.get(key);
|
23
|
-
if (child) {
|
24
|
-
node = child;
|
25
|
-
}
|
26
|
-
else {
|
27
|
-
map.set(key, (node = new Trie()));
|
28
|
-
}
|
29
|
-
});
|
30
|
-
node.added = true;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
export class RenderPromises {
|
34
|
-
constructor() {
|
35
|
-
// Map from Query component instances to pending fetchData promises.
|
36
|
-
this.queryPromises = new Map();
|
37
|
-
// A way of remembering queries we've seen during previous renderings,
|
38
|
-
// so that we never attempt to fetch them again in future renderings.
|
39
|
-
this.queryGraveyard = new Trie();
|
40
|
-
}
|
41
|
-
addQueryPromise(queryInstance, finish) {
|
42
|
-
const { query, variables } = queryInstance.props;
|
43
|
-
if (!this.queryGraveyard.has(query, JSON.stringify(variables))) {
|
44
|
-
this.queryPromises.set(queryInstance, new Promise(resolve => {
|
45
|
-
resolve(queryInstance.fetchData());
|
46
|
-
}));
|
47
|
-
// Render null to abandon this subtree for this rendering, so that we
|
48
|
-
// can wait for the data to arrive.
|
49
|
-
return null;
|
50
|
-
}
|
51
|
-
return finish();
|
52
|
-
}
|
53
|
-
hasPromises() {
|
54
|
-
return this.queryPromises.size > 0;
|
55
|
-
}
|
56
|
-
consumeAndAwaitPromises() {
|
57
|
-
const promises = [];
|
58
|
-
this.queryPromises.forEach((promise, queryInstance) => {
|
59
|
-
const { query, variables } = queryInstance.props;
|
60
|
-
// Make sure we never try to call fetchData for this query document and
|
61
|
-
// these variables again. Since the queryInstance objects change with
|
62
|
-
// every rendering, deduplicating them by query and variables is the
|
63
|
-
// best we can do. If a different Query component happens to have the
|
64
|
-
// same query document and variables, it will be immediately rendered
|
65
|
-
// by calling finish() in addQueryPromise, which could result in the
|
66
|
-
// rendering of an unwanted loading state, but that's not nearly as bad
|
67
|
-
// as getting stuck in an infinite rendering loop because we kept calling
|
68
|
-
// queryInstance.fetchData for the same Query component indefinitely.
|
69
|
-
this.queryGraveyard.add(query, JSON.stringify(variables));
|
70
|
-
promises.push(promise);
|
71
|
-
});
|
72
|
-
this.queryPromises.clear();
|
73
|
-
return Promise.all(promises);
|
74
|
-
}
|
75
|
-
}
|
76
|
-
export default function renderToStream({ tree, context = {}, renderFunction = renderToNodeStream }) {
|
77
|
-
const renderPromises = new RenderPromises();
|
78
|
-
class RenderPromisesProvider extends React.Component {
|
79
|
-
getChildContext() {
|
80
|
-
return Object.assign({}, context, { renderPromises });
|
81
|
-
}
|
82
|
-
render() {
|
83
|
-
// Always re-render from the rootElement, even though it might seem
|
84
|
-
// better to render the children of the component responsible for the
|
85
|
-
// promise, because it is not possible to reconstruct the full context
|
86
|
-
// of the original rendering (including all unknown context provider
|
87
|
-
// elements) for a subtree of the orginal component tree.
|
88
|
-
return tree;
|
89
|
-
}
|
90
|
-
}
|
91
|
-
RenderPromisesProvider.childContextTypes = {
|
92
|
-
renderPromises: PropTypes.object
|
93
|
-
};
|
94
|
-
Object.keys(context).forEach(key => {
|
95
|
-
RenderPromisesProvider.childContextTypes[key] = PropTypes.any;
|
96
|
-
});
|
97
|
-
function process() {
|
98
|
-
const stream = renderFunction(React.createElement(RenderPromisesProvider));
|
99
|
-
return renderPromises.hasPromises()
|
100
|
-
? renderPromises.consumeAndAwaitPromises().then(process)
|
101
|
-
: stream;
|
102
|
-
}
|
103
|
-
return Promise.resolve().then(process);
|
104
|
-
}
|
105
|
-
//# sourceMappingURL=renderToStream.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"renderToStream.js","sourceRoot":"","sources":["renderToStream.ts"],"names":[],"mappings":"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"}
|