3131@ Controller
3232public 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 }
0 commit comments