Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 0ed62d3

Browse files
committed
feat(GraphiQL): Add get full static resources from CDNs
1 parent 1f93410 commit 0ed62d3

File tree

10 files changed

+765
-1461
lines changed

10 files changed

+765
-1461
lines changed

graphiql-spring-boot-autoconfigure/src/main/java/com/oembedler/moon/graphiql/boot/GraphiQLController.java

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,15 @@
3131
@Controller
3232
public class GraphiQLController {
3333

34-
private static final String CDNJS_CLOUDFLARE_COM_AJAX_LIBS_GRAPHIQL = "//cdnjs.cloudflare.com/ajax/libs/graphiql/";
34+
private static final String CDNJS_CLOUDFLARE_COM_AJAX_LIBS = "//cdnjs.cloudflare.com/ajax/libs/";
35+
private static final String CDN_JSDELIVR_NET_NPM = "//cdn.jsdelivr.net/npm/";
36+
private static final String FETCH = "fetch";
37+
private static final String GRAPHIQL = "graphiql";
38+
private static final String ES_6_PROMISE = "es6-promise";
39+
private static final String REACT = "react";
40+
private static final String REACT_DOM = "react-dom";
41+
private static final String SUBSCRIPTIONS_TRANSPORT_WS = "subscriptions-transport-*ws";
42+
private static final String GRAPHIQL_SUBSCRIPTIONS_FETCHER = "graphiql-subscriptions-fetcher";
3543

3644
@Value("${graphiql.endpoint.graphql:/graphql}")
3745
private String graphqlEndpoint;
@@ -48,7 +56,7 @@ public class GraphiQLController {
4856
@Value("${graphiql.cdn.enabled:false}")
4957
private Boolean graphiqlCdnEnabled;
5058

51-
@Value("${graphiql.cdn.version:0.11.11}")
59+
@Value("${graphiql.cdn.version:0.12.0}")
5260
private String graphiqlCdnVersion;
5361

5462
@Value("${graphiql.subscriptions.timeout:30}")
@@ -112,17 +120,42 @@ private Map<String, String> getReplacements(String graphqlEndpoint, String subsc
112120
replacements.put("subscriptionsEndpoint", subscriptionsEndpoint);
113121
replacements.put("staticBasePath", staticBasePath);
114122
replacements.put("pageTitle", pageTitle);
115-
replacements.put("graphiqlCssUrl", graphiqlUrl(staticBasePath, "graphiql.min.css"));
116-
replacements.put("graphiqlJsUrl", graphiqlUrl(staticBasePath, "graphiql.min.js"));
123+
replacements.put("es6PromiseJsUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, ES_6_PROMISE,
124+
"4.1.1", "es6-promise.auto.min.js"));
125+
replacements.put("fetchJsUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, FETCH,
126+
"3.0.0", "fetch.min.js"));
127+
replacements.put("reactJsUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, REACT,
128+
"16.8.3", "react.production.min.js"));
129+
replacements.put("reactDomJsUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, REACT_DOM,
130+
"16.8.3", "react-dom-server.browser.production.min.js"));
131+
replacements.put("graphiqlCssUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, GRAPHIQL,
132+
graphiqlCdnVersion, "graphiql.min.css"));
133+
replacements.put("graphiqlJsUrl", getCdnJsUrl(staticBasePath, graphiqlCdnEnabled, GRAPHIQL,
134+
graphiqlCdnVersion, "graphiql.min.js"));
135+
replacements.put("subscriptionsTransportWsBrowserClient", getJsDeliverUrl(staticBasePath, graphiqlCdnEnabled,
136+
SUBSCRIPTIONS_TRANSPORT_WS, "@0.9.15", "/browser/client.js",
137+
"subscriptions-transport-ws-browser-client-0.8.3.js"));
138+
replacements.put("graphiqlSubscriptionsFetcherBrowserClient", getJsDeliverUrl(staticBasePath, graphiqlCdnEnabled,
139+
GRAPHIQL_SUBSCRIPTIONS_FETCHER, "@0.0.2", "/browser/client.js",
140+
"graphiql-subscriptions-fetcher-browser-client-0.0.2.js"));
117141
replacements.put("props", props);
118142
replacements.put("headers", headers);
119143
replacements.put("subscriptionClientTimeout", String.valueOf(subscriptionsTimeout));
120144
return replacements;
121145
}
122146

123-
private String graphiqlUrl(String staticBasePath, String filename) {
124-
if (graphiqlCdnEnabled && StringUtils.isNotBlank(graphiqlCdnVersion)) {
125-
return CDNJS_CLOUDFLARE_COM_AJAX_LIBS_GRAPHIQL + graphiqlCdnVersion + "/" + filename;
147+
private String getCdnJsUrl(String staticBasePath, Boolean isCdnEnabled, String library,
148+
String cdnVersion, String filename) {
149+
if (isCdnEnabled && StringUtils.isNotBlank(cdnVersion)) {
150+
return CDNJS_CLOUDFLARE_COM_AJAX_LIBS + library + cdnVersion + "/" + filename;
151+
}
152+
return staticBasePath + "vendor/" + filename;
153+
}
154+
155+
private String getJsDeliverUrl(String staticBasePath, Boolean isCdnEnabled, String library,
156+
String cdnVersion, String cdnFileName, String filename) {
157+
if (isCdnEnabled && StringUtils.isNotBlank(cdnVersion)) {
158+
return CDN_JSDELIVR_NET_NPM + library + cdnVersion + "/" + cdnFileName;
126159
}
127160
return staticBasePath + "vendor/" + filename;
128161
}

graphiql-spring-boot-autoconfigure/src/main/resources/graphiql.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@
2424
}
2525
</style>
2626

27-
<script src="${staticBasePath}vendor/es6-promise.auto.min.js"></script>
28-
<script src="${staticBasePath}vendor/fetch.min.js"></script>
29-
<script src="${staticBasePath}vendor/react.min.js"></script>
30-
<script src="${staticBasePath}vendor/react-dom.min.js"></script>
27+
<script src="${es6PromiseJsUrl}"></script>
28+
<script src="${fetchJsUrl}"></script>
29+
<script src="${reactJsUrl}"></script>
30+
<script src="${reactDomJsUrl}"></script>
3131

3232
<link rel="stylesheet" href="${graphiqlCssUrl}"/>
3333
<script src="${graphiqlJsUrl}"></script>
34-
<script src="${staticBasePath}vendor/subscriptions-transport-ws-browser-client-0.8.3.js"></script>
35-
<script src="${staticBasePath}vendor/graphiql-subscriptions-fetcher-browser-client-0.0.2.js"></script>
34+
<script src="${subscriptionsTransportWsBrowserClient}"></script>
35+
<script src="${graphiqlSubscriptionsFetcherBrowserClient}"></script>
3636
</head>
3737
<body>
3838
<div id="splash">

graphiql-spring-boot-autoconfigure/src/main/resources/static/vendor/fetch.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

graphiql-spring-boot-autoconfigure/src/main/resources/static/vendor/graphiql.min.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

graphiql-spring-boot-autoconfigure/src/main/resources/static/vendor/graphiql.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)