1
1
'use strict' ;
2
2
const fs = require ( 'fs' ) ;
3
+ const crypto = require ( 'crypto' ) ;
3
4
4
5
function readSnippet ( fileName ) {
5
- return `<script> ${ fs . readFileSync ( `${ __dirname } /vendor/${ fileName } ` , 'utf8' ) } </script>` ;
6
+ return fs . readFileSync ( `${ __dirname } /vendor/${ fileName } ` , 'utf8' ) ;
6
7
}
7
8
9
+ function hashSha256base64 ( string ) {
10
+ return crypto . createHash ( 'sha256' ) . update ( string ) . digest ( 'base64' ) ;
11
+ }
12
+
13
+ const initialLoadHeadSnippet = readSnippet ( 'initial-load-head.js' ) ;
14
+ const initialLoadBodySnippet = readSnippet ( 'initial-load-body.js' ) ;
15
+
16
+ const initialLoadHeadSnippetHash = hashSha256base64 ( initialLoadHeadSnippet ) ;
17
+ const initialLoadBodySnippetHash = hashSha256base64 ( initialLoadBodySnippet ) ;
18
+
8
19
module . exports = {
9
20
name : require ( './package' ) . name ,
10
21
options : {
@@ -24,16 +35,18 @@ module.exports = {
24
35
25
36
contentFor ( type , config ) {
26
37
const addonConfig = config [ '@sentry/ember' ] || { } ;
27
-
28
38
const { disablePerformance, disableInitialLoadInstrumentation } = addonConfig ;
39
+
29
40
if ( disablePerformance || disableInitialLoadInstrumentation ) {
30
41
return ;
31
42
}
43
+
32
44
if ( type === 'head' ) {
33
- return readSnippet ( 'initial-load-head.js' ) ;
34
- }
35
- if ( type === 'body-footer' ) {
36
- return readSnippet ( 'initial-load-body.js' ) ;
45
+ return `<script type="text/javascript">${ initialLoadHeadSnippet } </script>` ;
46
+ } else if ( type === 'body-footer' ) {
47
+ return `<script type="text/javascript">${ initialLoadBodySnippet } </script>` ;
37
48
}
38
49
} ,
50
+
51
+ injectedScriptHashes : [ initialLoadHeadSnippetHash , initialLoadBodySnippetHash ] ,
39
52
} ;
0 commit comments