@shockpkg/core
Version:
shockpkg core
1 lines • 6.76 kB
Source Map (JSON)
{"version":3,"file":"package.mjs","names":["createInflateRaw","zlibCreateInflateRaw","Package","constructor","info","parent","zipped","Error","name","file","size","sha256","sha1","md5","source","packages","_createPackages","getZippedCompression","split","getZippedSlice","parts","getZippedDecompressor","method","infos","map","_createPackage","Constructor"],"sources":["../src/package.ts"],"sourcesContent":["import {Transform} from 'node:stream';\nimport {createInflateRaw as zlibCreateInflateRaw} from 'node:zlib';\n\nexport interface IPackagesListPackage {\n\t/**\n\t * Package name.\n\t */\n\tname: string;\n\n\t/**\n\t * File name.\n\t */\n\tfile: string;\n\n\t/**\n\t * File size.\n\t */\n\tsize: number;\n\n\t/**\n\t * SHA256 hash of the file contents.\n\t */\n\tsha256: string;\n\n\t/**\n\t * SHA1 hash of the file contents.\n\t */\n\tsha1: string;\n\n\t/**\n\t * MD5 hash of the file contents.\n\t */\n\tmd5: string;\n\n\t/**\n\t * Source, URL for root or file path for children.\n\t */\n\tsource: string;\n\n\t/**\n\t * Optional child package list.\n\t */\n\tpackages?: IPackagesListPackage[];\n\n\t/**\n\t * Zipped info if a child package or null if a root package.\n\t */\n\tzipped?: string;\n}\n\n/**\n * Package object.\n */\nexport class Package {\n\t/**\n\t * Package name.\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * File name.\n\t */\n\tpublic readonly file: string;\n\n\t/**\n\t * File size.\n\t */\n\tpublic readonly size: number;\n\n\t/**\n\t * SHA256 hash of file.\n\t */\n\tpublic readonly sha256: string;\n\n\t/**\n\t * SHA1 hash of file.\n\t */\n\tpublic readonly sha1: string;\n\n\t/**\n\t * MD5 hash of file.\n\t */\n\tpublic readonly md5: string;\n\n\t/**\n\t * Source path, URL for root, file path for child packages.\n\t */\n\tpublic readonly source: string;\n\n\t/**\n\t * Zipped info if a child package or null if a root package.\n\t */\n\tpublic readonly zipped: string | null;\n\n\t/**\n\t * Child packages.\n\t */\n\tpublic readonly packages: Package[];\n\n\t/**\n\t * The parent package this package is found in.\n\t */\n\tpublic readonly parent: Package | null;\n\n\t/**\n\t * Package constructor.\n\t *\n\t * @param info Package info.\n\t * @param parent Package parent.\n\t */\n\tconstructor(\n\t\tinfo: Readonly<IPackagesListPackage>,\n\t\tparent: Package | null = null\n\t) {\n\t\tconst {zipped} = info;\n\t\tif (parent && !zipped) {\n\t\t\tthrow new Error(`Missing zipped info: ${info.name}`);\n\t\t} else if (!parent && zipped) {\n\t\t\tthrow new Error(`Unexpected zipped info: ${info.name}`);\n\t\t}\n\n\t\tthis.name = info.name;\n\t\tthis.file = info.file;\n\t\tthis.size = info.size;\n\t\tthis.sha256 = info.sha256;\n\t\tthis.sha1 = info.sha1;\n\t\tthis.md5 = info.md5;\n\t\tthis.source = info.source;\n\t\tthis.zipped = zipped || null;\n\t\tthis.parent = parent;\n\t\tthis.packages = this._createPackages(info.packages);\n\t}\n\n\t/**\n\t * Get zipped compression method.\n\t *\n\t * @returns Compression method.\n\t */\n\tpublic getZippedCompression(): number {\n\t\tconst {zipped} = this;\n\t\tif (!zipped) {\n\t\t\tthrow new Error('Not a child package');\n\t\t}\n\t\treturn +zipped.split('-')[0];\n\t}\n\n\t/**\n\t * Get zipped data slice.\n\t *\n\t * @returns Data start and size.\n\t */\n\tpublic getZippedSlice(): [number, number] {\n\t\tconst {zipped} = this;\n\t\tif (!zipped) {\n\t\t\tthrow new Error('Not a child package');\n\t\t}\n\t\tconst parts = zipped.split('-');\n\t\treturn [+parts[1], +parts[2]];\n\t}\n\n\t/**\n\t * Get zipped data decompressor.\n\t *\n\t * @returns Transform stream or null if entry not compressed.\n\t */\n\tpublic getZippedDecompressor(): Transform | null {\n\t\tconst method = this.getZippedCompression();\n\t\tswitch (method) {\n\t\t\tcase 0: {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tcase 8: {\n\t\t\t\treturn zlibCreateInflateRaw();\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\t// Do nothing.\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`Unsupported zipped compression: ${method}`);\n\t}\n\n\t/**\n\t * Create child packages list.\n\t *\n\t * @param infos Package infos.\n\t * @returns Package instance.\n\t */\n\tprotected _createPackages(\n\t\tinfos: readonly Readonly<IPackagesListPackage>[] = []\n\t) {\n\t\treturn infos.map(info => this._createPackage(info));\n\t}\n\n\t/**\n\t * Create a child package.\n\t *\n\t * @param info Package info.\n\t * @returns Package instance.\n\t */\n\tprotected _createPackage(info: Readonly<IPackagesListPackage>) {\n\t\tconst Constructor = this.constructor as typeof Package;\n\t\treturn new Constructor(info, this);\n\t}\n}\n"],"mappings":"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","ignoreList":[]}