UNPKG

6.85 kBSource Map (JSON)View Raw
1{"version":3,"file":"zip3.js","sourceRoot":"","sources":["../../../../../src/_utils/zip/zip3.ts"],"names":[],"mappings":";;;;AAOA,8BAAgC;AAChC,iCAAmC;AACnC,mCAAqC;AAErC,6CAA0C;AAC1C,6BAAoD;AAEpD,IAAM,KAAK,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAK1C;IAA0B,gCAAG;IAgDzB,cAA6B,QAAgB,EAAW,GAAQ;QAAhE,YACI,iBAAO,SAOV;QAR4B,cAAQ,GAAR,QAAQ,CAAQ;QAAW,SAAG,GAAH,GAAG,CAAK;QAG5D,KAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,KAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAS;YAC7B,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,CAAC;;IACP,CAAC;IAtDmB,gBAAW,GAA/B,UAAgC,QAAgB;;;;gBAC5C,IAAI,IAAA,iBAAM,EAAC,QAAQ,CAAC,EAAE;oBAClB,WAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAC;iBACzC;gBAED,WAAO,IAAI,OAAO,CAAO,UAAO,OAAO,EAAE,MAAM;;;;;;oCAIjC,WAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAA;;oCAAxC,GAAG,GAAG,SAAkC,CAAC;;;;oCAEzC,KAAK,CAAC,KAAG,CAAC,CAAC;oCACX,MAAM,CAAC,KAAG,CAAC,CAAC;oCACZ,WAAO;;oCAEX,KAAK,CAAC,GAAG,CAAC,CAAC;oCACX,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;;;;yBACpC,CAAC,EAAC;;;KACN;IAEoB,oBAAe,GAApC,UAAqC,QAAgB;;;;gBAEjD,WAAO,IAAI,OAAO,CAAO,UAAO,OAAO,EAAE,MAAM;;;;;;oCAIjC,WAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EACrC;4CACI,OAAO,EAAE,EAAE;4CACX,MAAM,EAAE,KAAK;4CACb,GAAG,EAAE,QAAQ;4CACb,GAAG,EAAE,QAAQ;yCAChB,CAAC,EAAA;;oCANN,GAAG,GAAG,SAMA,CAAC;;;;oCAEP,KAAK,CAAC,KAAG,CAAC,CAAC;oCACX,MAAM,CAAC,KAAG,CAAC,CAAC;oCACZ,WAAO;;oCAEX,KAAK,CAAC,GAAG,CAAC,CAAC;oCACX,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;;;;yBACpC,CAAC,EAAC;;;KACN;IAeM,0BAAW,GAAlB;QACI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,GAAG,EAAE;SAGb;IACL,CAAC;IAEM,2BAAY,GAAnB;QACI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC;IACjC,CAAC;IAEM,yBAAU,GAAjB;QACI,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAEM,uBAAQ,GAAf,UAAgB,SAAiB;QAC7B,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAEY,yBAAU,GAAvB;;;gBAEI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;oBACpB,WAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAC;iBAC9B;gBACD,WAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAC;;;KACrD;IAEY,iCAAkB,GAA/B,UAAgC,SAAiB;;;;gBAI7C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACjD,WAAO,OAAO,CAAC,MAAM,CAAC,uBAAuB,GAAG,SAAS,CAAC,EAAC;iBAC9D;gBAED,WAAO,IAAI,OAAO,CAAmB,UAAC,OAAO,EAAE,OAAO;wBAElD,IAAM,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACtC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAEb,IAAM,MAAM,GAA0B,KAAK,CAAC,MAAM,EAAE,CAAC;wBACrD,IAAM,eAAe,GAAqB;4BACtC,MAAM,EAAE,KAAK,CAAC,IAAI;4BAClB,KAAK,EAAE;;oCACH,WAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAC;;iCAC7C;4BACD,MAAM,QAAA;yBACT,CAAC;wBACF,OAAO,CAAC,eAAe,CAAC,CAAC;oBAC7B,CAAC,CAAC,EAAC;;;KACN;IACL,WAAC;AAAD,CAAC,AA9GD,CAA0B,SAAG,GA8G5B;AA9GY,oBAAI","sourcesContent":["// ==LICENSE-BEGIN==\n// Copyright 2017 European Digital Reading Lab. All rights reserved.\n// Licensed to the Readium Foundation under one or more contributor license agreements.\n// Use of this source code is governed by a BSD-style license\n// that can be found in the LICENSE file exposed on Github (readium) in the project repository.\n// ==LICENSE-END==\n\nimport * as debug_ from \"debug\";\nimport * as request from \"request\";\nimport * as unzipper from \"unzipper\";\n\nimport { isHTTP } from \"../http/UrlUtils\";\nimport { IStreamAndLength, IZip, Zip } from \"./zip\";\n\nconst debug = debug_(\"r2:utils#zip/zip3\");\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ninterface IStringKeyedObject { [key: string]: any; }\n\nexport class Zip3 extends Zip {\n\n public static async loadPromise(filePath: string): Promise<IZip> {\n if (isHTTP(filePath)) {\n return Zip3.loadPromiseHTTP(filePath);\n }\n\n return new Promise<IZip>(async (resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let zip: any;\n try {\n zip = await unzipper.Open.file(filePath);\n } catch (err) {\n debug(err);\n reject(err);\n return;\n }\n debug(zip);\n resolve(new Zip3(filePath, zip));\n });\n }\n\n private static async loadPromiseHTTP(filePath: string): Promise<IZip> {\n\n return new Promise<IZip>(async (resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let zip: any;\n try {\n zip = await unzipper.Open.url(request.get,\n {\n headers: {},\n method: \"GET\",\n uri: filePath,\n url: filePath,\n });\n } catch (err) {\n debug(err);\n reject(err);\n return;\n }\n debug(zip);\n resolve(new Zip3(filePath, zip));\n });\n }\n\n private entries: IStringKeyedObject;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private constructor(readonly filePath: string, readonly zip: any) {\n super();\n\n this.entries = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.zip.files.forEach((file: any) => {\n this.entries[file.path] = file;\n });\n }\n\n public freeDestroy(): void {\n debug(\"freeDestroy: Zip3 -- \" + this.filePath);\n if (this.zip) {\n // TODO?\n // this.zip.close();\n }\n }\n\n public entriesCount(): number {\n return this.zip.files.length;\n }\n\n public hasEntries(): boolean {\n return this.entriesCount() > 0;\n }\n\n public hasEntry(entryPath: string): boolean {\n return this.hasEntries() && this.entries[entryPath];\n }\n\n public async getEntries(): Promise<string[]> {\n\n if (!this.hasEntries()) {\n return Promise.resolve([]);\n }\n return Promise.resolve(Object.keys(this.entries));\n }\n\n public async entryStreamPromise(entryPath: string): Promise<IStreamAndLength> {\n\n // debug(`entryStreamPromise: ${entryPath}`);\n\n if (!this.hasEntries() || !this.hasEntry(entryPath)) {\n return Promise.reject(\"no such path in zip: \" + entryPath);\n }\n\n return new Promise<IStreamAndLength>((resolve, _reject) => {\n\n const entry = this.entries[entryPath];\n debug(entry);\n\n const stream: NodeJS.ReadableStream = entry.stream();\n const streamAndLength: IStreamAndLength = {\n length: entry.size,\n reset: async () => {\n return this.entryStreamPromise(entryPath);\n },\n stream,\n };\n resolve(streamAndLength);\n });\n }\n}\n"]}
\No newline at end of file