@@ -2,24 +2,34 @@ import {isTextFile} from './theme-fs.js'
22import { Checksum } from '@shopify/cli-kit/node/themes/types'
33import { fileHash } from '@shopify/cli-kit/node/crypto'
44
5- export function calculateChecksum ( fileKey : string , fileContent : string | Buffer | undefined ) {
5+ export function calculateChecksum (
6+ fileKey : string ,
7+ fileContent : string | Buffer | undefined ,
8+ options ?: { replaceNewlines : boolean } ,
9+ ) {
610 if ( ! fileContent ) {
711 return ''
812 }
913
10- if ( Buffer . isBuffer ( fileContent ) ) {
11- return md5 ( fileContent )
14+ let filteredContent = fileContent
15+
16+ if ( options ?. replaceNewlines ) {
17+ filteredContent = fileContent . toString ( ) . replace ( / \r \n / g, '\n' )
18+ }
19+
20+ if ( Buffer . isBuffer ( filteredContent ) ) {
21+ return md5 ( filteredContent )
1222 }
1323
1424 /**
1525 * Settings data files are always minified before persistence, so their
1626 * checksum calculation accounts for that minification.
1727 */
1828 if ( isSettingsData ( fileKey ) ) {
19- return minifiedJSONFileChecksum ( fileContent )
29+ return minifiedJSONFileChecksum ( filteredContent )
2030 }
2131
22- return regularFileChecksum ( fileKey , fileContent )
32+ return regularFileChecksum ( fileKey , filteredContent )
2333}
2434
2535function minifiedJSONFileChecksum ( fileContent : string ) {
0 commit comments