{"version":3,"file":"checksum.cjs","sourceRoot":"","sources":["../../../src/manifest/validators/checksum.ts"],"names":[],"mappings":";;;AAAA,2CAA8C;AAE9C,2CAA+C;AAK/C;;GAEG;AACU,QAAA,QAAQ,GAAkB;IACrC,QAAQ,EAAE,OAAO;IACjB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO;QAChC,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAA+B,CAAC;QACnE,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC;QACtD,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAErE,MAAM,YAAY,GAAqB;YACrC,GAAG,KAAK;YACR,QAAQ,EAAE,cAAc;SACzB,CAAC;QAEF,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC;QAChE,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAe,EAAC,YAAY,CAAC,CAAC;QAC7D,IAAI,WAAW,KAAK,gBAAgB,EAAE,CAAC;YACrC,OAAO,CAAC,MAAM,CACZ,UAAU,EACV,IAAI,wBAAgB,CAAC,QAAQ,yDAAyD,WAAW,gBAAgB,gBAAgB,IAAI,EACrI,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;gBACrB,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,EAAE,CAAC;gBACpC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC;gBAC3C,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC;gBAC9D,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,CAAC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC","sourcesContent":["import { getSnapChecksum } from '../../snaps';\nimport type { FetchedSnapFiles } from '../../types';\nimport { NpmSnapFileNames } from '../../types';\nimport type { VirtualFile } from '../../virtual-file';\nimport type { SnapManifest } from '../validation';\nimport type { ValidatorMeta } from '../validator-types';\n\n/**\n * Check if the checksum in manifest matches computed value.\n */\nexport const checksum: ValidatorMeta = {\n  severity: 'error',\n  async semanticCheck(files, context) {\n    const mergedManifest =\n      files.manifest.mainManifest.clone() as VirtualFile<SnapManifest>;\n    mergedManifest.result = files.manifest.mergedManifest;\n    mergedManifest.value = JSON.stringify(files.manifest.mergedManifest);\n\n    const fetchedFiles: FetchedSnapFiles = {\n      ...files,\n      manifest: mergedManifest,\n    };\n\n    const gotChecksum = files.manifest.mergedManifest.source.shasum;\n    const expectedChecksum = await getSnapChecksum(fetchedFiles);\n    if (gotChecksum !== expectedChecksum) {\n      context.report(\n        'checksum',\n        `\"${NpmSnapFileNames.Manifest}\" \"shasum\" field does not match computed shasum. Got \"${gotChecksum}\", expected \"${expectedChecksum}\".`,\n        async ({ manifest }) => {\n          manifest.mainManifest.result ??= {};\n          manifest.mainManifest.result.source ??= {};\n          manifest.mainManifest.result.source.shasum = expectedChecksum;\n          return { manifest };\n        },\n      );\n    }\n  },\n};\n"]}