@jetshop/core 1.1.13-no-proxy.5 → 1.1.13-no-proxy.4
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 +6 -7
- package/boot/server/createApolloServer.js.map +1 -1
- package/boot/server/createDevServer.js +1 -0
- package/boot/server/createDevServer.js.map +1 -1
- package/boot/server/createRenderer.d.ts +1 -1
- package/boot/server/createRenderer.js +42 -57
- 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 +3 -0
- package/boot/server/listen.js +1 -0
- package/boot/server/listen.js.map +1 -1
- package/boot/server/renderToStream.d.ts +17 -0
- package/boot/server/renderToStream.js +105 -0
- package/boot/server/renderToStream.js.map +1 -0
- package/package.json +3 -2
- package/polyfills.js +1 -5
- package/polyfills.js.map +1 -1
@@ -79,11 +79,6 @@ 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;
|
87
82
|
const apolloServer = new ApolloServer({
|
88
83
|
schema,
|
89
84
|
// Disable introspection in production
|
@@ -98,9 +93,13 @@ export default function createApolloServer({ apolloConfig, extensions = [] }) {
|
|
98
93
|
persistedQueries: {
|
99
94
|
cache: new InMemoryLRUCache()
|
100
95
|
},
|
101
|
-
tracing
|
96
|
+
// Enable tracing if Apollo Engine is configured
|
97
|
+
tracing: !!apolloConfig.engineApiKey,
|
102
98
|
cacheControl: true,
|
103
|
-
|
99
|
+
// By setting this to "false", we avoid using Apollo Server 2's
|
100
|
+
// integrated metric reporting and fall-back to using the Apollo
|
101
|
+
// Engine Proxy (running separately) for metric collection.
|
102
|
+
engine: false
|
104
103
|
});
|
105
104
|
return { apolloServer, schema };
|
106
105
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createApolloServer.js","sourceRoot":"","sources":["createApolloServer.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,0BAA0B,EAC1B,YAAY,EAEb,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uDAAuD,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AAClC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AACpC,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEtC,OAAO;AACP,8EAA8E;AAC9E,2EAA2E;AAC3E,2DAA2D;AAC3D,8DAA8D;AAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CACpC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,4BAA4B,CAC9C,CAAC;AACF,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC,QAAQ;AAER,MAAM,gBAAgB,GAAG;IACvB,eAAe;IACf,WAAW;IACX,SAAS;IACT,SAAS;IACT,UAAU;CACX,CAAC;AA4BF,SAAe,eAAe,CAAC,EAC7B,YAAY,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAG5C;;QACC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC;YACxB,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,KAAY;SACpB,CAAC,CAAC;QAEH,2CAA2C;QAC3C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE;gBACP,KAAK;gBACL,MAAM;aACP;SACF,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEjB,8CAA8C;QAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,OAAO,CAAC,cAAyB,CAAC;YAE9C,OAAO;gBACL,OAAO,kBACL,KAAK;oBACL,MAAM,IACH,GAAG,CAAC,OAAO,CACf;aACF,CAAC;QACJ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;YAClD,MAAM;YACN,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QAEH,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CAAA;AAED,MAAM,CAAC,OAAO,UAAgB,kBAAkB,CAAC,EAC/C,YAAY,EACZ,UAAU,GAAG,EAAE,EACW;;QAC1B,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAkC,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,SAAS,GAAwB,EAAE,CAAC;QAExC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAEjD,IAAI,MAAM,CAAC,MAAM,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC7B;YACD,IAAI,MAAM,CAAC,SAAS,EAAE;gBACpB,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;aACpC;SACF;QAED,MAAM,MAAM,GAAG,YAAY,CAAC;YAC1B,OAAO;YACP,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,
|
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,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;AAC5C,CAAC,CAAA,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
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,YAAY;QACZ,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>;
|
25
25
|
export default createRenderer;
|
@@ -13,23 +13,22 @@ 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 { renderStylesToString } from 'emotion-server';
|
17
17
|
import get from 'lodash.get';
|
18
18
|
import React from 'react';
|
19
|
-
import { ApolloProvider,
|
19
|
+
import { ApolloProvider, getMarkupFromTree } from 'react-apollo';
|
20
20
|
import { CookiesProvider } from 'react-cookie';
|
21
|
-
import { renderToNodeStream } from 'react-dom/server';
|
22
21
|
import { HelmetProvider } from 'react-helmet-async';
|
23
22
|
import Loadable from 'react-loadable';
|
24
23
|
import { MediaProvider } from 'react-media-universal';
|
25
24
|
import { StaticRouter } from 'react-router-dom';
|
26
|
-
import report from '../../errorReporting';
|
27
25
|
import { createPolyfill } from '../../polyfills';
|
28
26
|
import { createClient } from '../apollo';
|
29
27
|
import AuthProvider from '../../components/AuthContext/AuthProvider';
|
30
28
|
import { getPrefetchFiles, getPrefetchHeader, getPreloadLinksAndScripts } from './getPrefetchFiles';
|
29
|
+
import { renderToString } from 'react-dom/server';
|
31
30
|
const injectDataIntoSlots = (template, data) => Object.keys(data).reduce((output, key) => output.replace(`<slot name="${key}"/>`, data[key]), template);
|
32
|
-
const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, translator, locale) =>
|
31
|
+
const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, translator, locale) => {
|
33
32
|
const modules = [];
|
34
33
|
const routerContext = { url: null, statusCode: 200 };
|
35
34
|
const helmetContext = { helmet: null };
|
@@ -54,53 +53,30 @@ const wrapTree = (tree, req, renderOptions, client, selectedChannel, channels, t
|
|
54
53
|
React.createElement(ChannelProvider, { channels: channels, selectedChannel: selectedChannel },
|
55
54
|
React.createElement(StaticRouter, { location: req.originalUrl, context: routerContext },
|
56
55
|
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>`;
|
73
56
|
return {
|
74
57
|
wrappedTree,
|
75
58
|
modules,
|
76
|
-
|
77
|
-
|
78
|
-
helmet: helmetContext.helmet,
|
79
|
-
apolloState,
|
59
|
+
routerContext: routerContext,
|
60
|
+
helmetContext: helmetContext,
|
80
61
|
polyfill: createPolyfill(locale)
|
81
62
|
};
|
82
|
-
}
|
63
|
+
};
|
83
64
|
const startResponse = ({ res, head, statusCode }) => {
|
84
65
|
res.status(statusCode);
|
85
66
|
// write head and don't end response
|
86
67
|
res.write(head);
|
87
68
|
};
|
88
|
-
const endResponse = ({ res, foot }) => {
|
69
|
+
const endResponse = ({ res, client, foot }) => {
|
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);
|
89
77
|
res.write(foot);
|
90
78
|
res.end();
|
91
79
|
};
|
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
|
-
};
|
104
80
|
const createRenderer = (template, tree, options) => (req, res) => __awaiter(this, void 0, void 0, function* () {
|
105
81
|
const { apolloConfig, preloadStats, intl } = options;
|
106
82
|
// Set response headers immediately
|
@@ -122,9 +98,25 @@ const createRenderer = (template, tree, options) => (req, res) => __awaiter(this
|
|
122
98
|
defaultLocale: intl.defaultLocale,
|
123
99
|
options: intl.options
|
124
100
|
});
|
125
|
-
const { wrappedTree, modules,
|
126
|
-
|
127
|
-
|
101
|
+
const { wrappedTree, modules, routerContext, helmetContext, polyfill } = wrapTree(tree, req, options, client, selectedChannel, channels, translator, locale);
|
102
|
+
let statusCode;
|
103
|
+
let response;
|
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);
|
128
120
|
}
|
129
121
|
const prefetchFiles = getPrefetchFiles({
|
130
122
|
locale,
|
@@ -137,28 +129,21 @@ const createRenderer = (template, tree, options) => (req, res) => __awaiter(this
|
|
137
129
|
}
|
138
130
|
const { preloadLinks, preloadScripts } = getPreloadLinksAndScripts(prefetchFiles);
|
139
131
|
const data = {
|
140
|
-
apolloState,
|
141
132
|
polyfill,
|
142
133
|
preloadLinks,
|
143
134
|
preloadScripts,
|
144
|
-
title: title.toString(),
|
145
|
-
meta: meta.toString()
|
135
|
+
title: helmetContext.helmet.title.toString(),
|
136
|
+
meta: helmetContext.helmet.meta.toString()
|
146
137
|
};
|
147
138
|
const html = injectDataIntoSlots(template, data);
|
148
139
|
const [head, foot] = html.split('<slot name="html"/>');
|
149
|
-
startResponse({
|
150
|
-
|
151
|
-
|
152
|
-
|
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 });
|
140
|
+
startResponse({
|
141
|
+
res,
|
142
|
+
head,
|
143
|
+
statusCode: statusCode || routerContext.statusCode
|
159
144
|
});
|
160
|
-
|
161
|
-
|
145
|
+
res.write(response);
|
146
|
+
endResponse({ res, client, foot });
|
162
147
|
});
|
163
148
|
export default createRenderer;
|
164
149
|
//# 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, apolloConfig });
|
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,CAAC,CAAC;
|
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,YAAY,EAAE,CAAC,CAAC;IAE1C,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,10 +1,13 @@
|
|
1
|
+
import { ApolloConfig } from '@jetshop/core/boot/apollo';
|
1
2
|
import { Application as ExpressApp } from 'express';
|
2
3
|
export interface ListenOptions {
|
3
4
|
app: ExpressApp;
|
4
5
|
port: number;
|
6
|
+
apolloConfig: ApolloConfig;
|
5
7
|
}
|
6
8
|
/**
|
7
9
|
* - Starts listening to `port`
|
10
|
+
* - Wraps Express server in Apollo Engine if `apolloConfig.engineApiKey` is set
|
8
11
|
*/
|
9
12
|
declare const listen: ({ app, port }: ListenOptions) => Promise<{
|
10
13
|
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":"AASA;;;GAGG;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"}
|
@@ -0,0 +1,17 @@
|
|
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>;
|
@@ -0,0 +1,105 @@
|
|
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
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"renderToStream.js","sourceRoot":"","sources":["renderToStream.ts"],"names":[],"mappings":"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"}
|
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.4",
|
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": "^8.0.53",
|
14
14
|
"@types/node-fetch": "^2.1.2",
|
15
15
|
"@types/qs": "^6.5.1",
|
16
16
|
"@types/react": "^16.4.18",
|
@@ -19,6 +19,7 @@
|
|
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",
|
22
23
|
"apollo-link": "^1.2.3",
|
23
24
|
"apollo-link-context": "^1.0.9",
|
24
25
|
"apollo-link-error": "^1.1.1",
|
package/polyfills.js
CHANGED
@@ -11,11 +11,7 @@ const polyfills = (locale) => [
|
|
11
11
|
'String.prototype.endsWith',
|
12
12
|
'String.prototype.startsWith',
|
13
13
|
'Object.keys',
|
14
|
-
'IntersectionObserver',
|
15
14
|
`Intl.~locale.${locale}`
|
16
15
|
];
|
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
|
-
};
|
16
|
+
export const createPolyfill = (locale) => `<script src="//cdn.polyfill.io/v2/polyfill${process.env.NODE_ENV === 'production' ? '.min' : ''}.js?features=${polyfills(locale).join(',')}&flags=gated"></script>`;
|
21
17
|
//# 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,
|
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,CAC/C,6CACE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,gBAAgB,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC"}
|