{"version":3,"file":"util.test.cjs","names":["findProjectRoot","zip","fs"],"sources":["../../../src/tests/util.test.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport mockFs from 'mock-fs';\nimport path from 'path';\nimport extract from 'extract-zip';\nimport globby from 'globby';\nimport crypto from 'crypto';\n\nimport { findProjectRoot, zip } from '../utils';\n\ndescribe('utils/findProjectRoot', () => {\n  it('should properly Find a Project Root.', () => {\n    /* Broken implementation in pack-externals we're trying to fix. */\n    const rootPackageJsonPath = path.join(findProjectRoot() || '', './package.json');\n\n    /* Looking up at project root relative to ./src/tests/ */\n    expect(rootPackageJsonPath).toEqual(path.join(__dirname, '../../package.json'));\n  });\n});\n\ndescribe('utils/zip', () => {\n  beforeEach(() => {\n    mockFs({\n      '/src': {\n        'test.txt': 'lorem ipsum',\n        modules: {\n          'module.txt': 'lorem ipsum 2',\n        },\n      },\n      '/dist': {},\n    });\n  });\n\n  afterEach(() => {\n    mockFs.restore();\n  });\n\n  it('should fail with.', async () => {\n    const source = '/src';\n    const destination = '/dist';\n    const zipPath = path.join(destination, 'archive.zip');\n    const filesPathList = [\n      {\n        rootPath: path.join(source, 'incorrect.txt'),\n        localPath: 'test.txt',\n      },\n    ];\n\n    await expect(zip(zipPath, filesPathList)).rejects.toThrow(\"ENOENT, no such file or directory '/src/incorrect.txt'\");\n  });\n\n  it.each([{ useNativeZip: true }, { useNativeZip: false }])(\n    'should properly archive files when useNativeZip=$useNativeZip.',\n    async ({ useNativeZip }) => {\n      const source = '/src';\n      const destination = '/dist';\n      const zipPath = path.join(destination, 'archive.zip');\n      const filesPathList = [\n        {\n          rootPath: path.join(source, 'test.txt'),\n          localPath: 'test.txt',\n        },\n        {\n          rootPath: path.join(source, 'modules', 'module.txt'),\n          localPath: 'modules/module.txt',\n        },\n      ];\n\n      await zip(zipPath, filesPathList, useNativeZip);\n\n      expect(fs.existsSync(zipPath)).toEqual(true);\n\n      await extract(zipPath, { dir: destination });\n\n      const files = await globby(['**/*'], { cwd: destination, dot: true });\n\n      expect(files).toEqual(['archive.zip', 'test.txt', 'modules/module.txt']);\n\n      // native zip is not deterministic\n      if (!useNativeZip) {\n        const data = fs.readFileSync(zipPath);\n        const fileHash = crypto.createHash('sha256').update(data).digest('base64');\n        expect(fileHash).toEqual('iCZdyHJ7ON2LLwBIE6gQmRvBTzXBogSqJTMvHSenzGk=');\n      }\n    }\n  );\n});\n"],"mappings":";;;;;;;;;;;;;;;;0BAOgD;AAEhD,SAAS,+BAA+B;AACtC,IAAG,8CAA8C;EAE/C,MAAM,sBAAsB,aAAK,KAAKA,+BAAiB,IAAI,IAAI,iBAAiB;AAGhF,SAAO,oBAAoB,CAAC,QAAQ,aAAK,KAAK,WAAW,qBAAqB,CAAC;GAC/E;EACF;AAEF,SAAS,mBAAmB;AAC1B,kBAAiB;AACf,0BAAO;GACL,QAAQ;IACN,YAAY;IACZ,SAAS,EACP,cAAc,iBACf;IACF;GACD,SAAS,EAAE;GACZ,CAAC;GACF;AAEF,iBAAgB;AACd,aAAO,SAAS;GAChB;AAEF,IAAG,qBAAqB,YAAY;EAClC,MAAM,SAAS;EAEf,MAAM,UAAU,aAAK,KADD,SACmB,cAAc;EACrD,MAAM,gBAAgB,CACpB;GACE,UAAU,aAAK,KAAK,QAAQ,gBAAgB;GAC5C,WAAW;GACZ,CACF;AAED,QAAM,OAAOC,kBAAI,SAAS,cAAc,CAAC,CAAC,QAAQ,QAAQ,yDAAyD;GACnH;AAEF,IAAG,KAAK,CAAC,EAAE,cAAc,MAAM,EAAE,EAAE,cAAc,OAAO,CAAC,CAAC,CACxD,kEACA,OAAO,EAAE,mBAAmB;EAC1B,MAAM,SAAS;EACf,MAAM,cAAc;EACpB,MAAM,UAAU,aAAK,KAAK,aAAa,cAAc;AAYrD,QAAMA,kBAAI,SAXY,CACpB;GACE,UAAU,aAAK,KAAK,QAAQ,WAAW;GACvC,WAAW;GACZ,EACD;GACE,UAAU,aAAK,KAAK,QAAQ,WAAW,aAAa;GACpD,WAAW;GACZ,CACF,EAEiC,aAAa;AAE/C,SAAOC,iBAAG,WAAW,QAAQ,CAAC,CAAC,QAAQ,KAAK;AAE5C,wCAAc,SAAS,EAAE,KAAK,aAAa,CAAC;EAE5C,MAAM,QAAQ,0BAAa,CAAC,OAAO,EAAE;GAAE,KAAK;GAAa,KAAK;GAAM,CAAC;AAErE,SAAO,MAAM,CAAC,QAAQ;GAAC;GAAe;GAAY;GAAqB,CAAC;AAGxE,MAAI,CAAC,cAAc;GACjB,MAAM,OAAOA,iBAAG,aAAa,QAAQ;GACrC,MAAM,WAAW,eAAO,WAAW,SAAS,CAAC,OAAO,KAAK,CAAC,OAAO,SAAS;AAC1E,UAAO,SAAS,CAAC,QAAQ,+CAA+C;;GAG7E;EACD"}