@@ -6,13 +6,26 @@ var _ = require( "underscore" ),
6
6
http = require ( "http" ) ;
7
7
8
8
grunt . loadNpmTasks ( "grunt-jquery-content" ) ;
9
+ grunt . loadNpmTasks ( "grunt-sri" ) ;
9
10
10
11
grunt . initConfig ( {
11
12
wordpress : ( function ( ) {
12
13
var config = require ( "./config" ) ;
13
14
config . dir = "dist/wordpress" ;
14
15
return config ;
15
- } ) ( )
16
+ } ) ( ) ,
17
+ sri : {
18
+ generate : {
19
+ src : [
20
+ "cdn/**/*.js" ,
21
+ "cdn/**/*.css"
22
+ ] ,
23
+ options : {
24
+ algorithms : [ "sha256" ] ,
25
+ dest : "dist/resources/sri-directives.json"
26
+ }
27
+ }
28
+ }
16
29
} ) ;
17
30
18
31
grunt . registerTask ( "build-index" , function ( ) {
@@ -265,15 +278,19 @@ grunt.registerTask( "build-index", function() {
265
278
} ;
266
279
}
267
280
268
- Handlebars . registerHelper ( "release" , function ( prefix , release ) {
269
- var html = prefix + " " + release . version + " - " +
270
- "<a href='/" + release . filename + "'>uncompressed</a>" ;
281
+ var sriHashes = require ( "./dist/resources/sri-directives.json" ) ;
282
+ function href ( file , label ) {
283
+ var sri = "sha256-" + sriHashes [ "@cdn/" + file ] [ "hashes" ] [ "sha256" ] ;
284
+ return "<a class='open-sri-modal' href='/" + file + "' data-hash='" + sri + "'>" + label + "</a>" ;
285
+ }
271
286
287
+ Handlebars . registerHelper ( "release" , function ( prefix , release ) {
288
+ var html = prefix + " " + release . version + " - " + href ( release . filename , "uncompressed" ) ;
272
289
if ( release . minified ) {
273
- html += ", <a href='/ " + release . minified + "'> minified</a>" ;
290
+ html += ", " + href ( release . minified , " minified" ) ;
274
291
}
275
292
if ( release . packed ) {
276
- html += ", <a href='/ " + release . packed + "'> packed</a>" ;
293
+ html += ", " + href ( release . packed , " packed" ) ;
277
294
}
278
295
279
296
return new Handlebars . SafeString ( html ) ;
@@ -360,7 +377,12 @@ grunt.registerTask( "reload-listings", function() {
360
377
} ) ;
361
378
} ) ;
362
379
363
- grunt . registerTask ( "build" , [ "build-index" ] ) ;
380
+ grunt . registerTask ( "ensure-dist-resources" , function ( ) {
381
+ grunt . file . mkdir ( "dist/resources" ) ;
382
+ } ) ;
383
+
384
+ grunt . registerTask ( "sri-generate" , [ "ensure-dist-resources" , "sri:generate" ] ) ;
385
+ grunt . registerTask ( "build" , [ "sri-generate" , "build-index" ] ) ;
364
386
grunt . registerTask ( "deploy" , [ "wordpress-deploy" , "reload-listings" ] ) ;
365
387
366
388
} ;
0 commit comments