import { tap, expect } from '@push.rocks/tapbundle'; import * as plugins from './plugins.js'; const testPaths = { nogitDir: plugins.path.join( plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../.nogit/' ), remoteDir: plugins.path.join( plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../.nogit/remote' ), }; import * as smartarchive from '../ts/index.js'; tap.preTask('should prepare .nogit dir', async () => { await plugins.smartfile.fs.ensureDir(testPaths.remoteDir); }); tap.preTask('should prepare downloads', async (tools) => { const downloadedFile: Buffer = ( await plugins.smartrequest.getBinary( 'https://verdaccio.lossless.digital/@pushrocks%2fwebsetup/-/websetup-2.0.14.tgz' ) ).body; await plugins.smartfile.memory.toFs( downloadedFile, plugins.path.join(testPaths.nogitDir, 'test.tgz') ); }); tap.test('should extract existing files on disk', async () => { const testSmartarchive = await smartarchive.SmartArchive.fromArchiveUrl( 'https://verdaccio.lossless.digital/@pushrocks%2fwebsetup/-/websetup-2.0.14.tgz' ); const streamfileStream = await testSmartarchive.exportToStreamOfStreamFiles(); streamfileStream.pipe(new plugins.smartstream.SmartDuplex({ objectMode: true, writeAndTransformFunction: async (chunkArg: plugins.smartfile.StreamFile, streamtools) => { console.log(chunkArg.relativeFilePath); const streamFile = chunkArg; const readStream = await streamFile.createReadStream(); const writePath = plugins.path.join(testPaths.nogitDir + streamFile.relativeFilePath); const dir = plugins.path.parse(writePath).dir; await plugins.smartfile.fs.ensureDir(plugins.path.dirname(dir)); const writeStream = plugins.smartfile.fsStream.createWriteStream(writePath); readStream.pipe(writeStream); }, })); }); tap.start();