UNPKG

8.41 kBSource Map (JSON)View Raw
1{"version":3,"sources":["projector/windows.ts"],"names":["ProjectorWindows","Projector","constructor","path","iconFile","iconData","versionStrings","extension","configNewline","lingoNewline","splashImageExtension","sklName","getIconData","fse","readFile","_writeSkeleton","skeleton","shockwave","xtrasName","xtrasPath","xtrasMappings","getIncludeXtrasMappings","foundProjectorSkl","foundXtras","xtrasHandler","entry","xtrasRel","volumePath","dest","includeXtrasMappingsDest","extract","projectorSklHandler","entryPath","includes","projectorDllHandler","test","archive","getSkeletonArchive","read","type","PathType","RESOURCE_FORK","Error","_modifySkeleton"],"mappings":";;;;;;;;;AAAA;;AAKA;;AACA;;AAKA;;AAIA;;AAGA;;AAIA;;;;;AAKO,MAAeA,gBAAf,SAAwCC,oBAAxC,CAAkD;AACxD;;;;AAKA;;;;AAKA;;;AAKAC,EAAAA,WAAW,CAACC,IAAD,EAAe;AACzB,UAAMA,IAAN;AADyB,SAZnBC,QAYmB,GAZO,IAYP;AAAA,SAPnBC,QAOmB,GAPiB,IAOjB;AAAA,SAFnBC,cAEmB,GAFwC,IAExC;AAEzB;AAED;;;;;;;AAKA,MAAWC,SAAX,GAAuB;AACtB,WAAO,MAAP;AACA;AAED;;;;;;;AAKA,MAAWC,aAAX,GAA2B;AAC1B,WAAO,MAAP;AACA;AAED;;;;;;;AAKA,MAAWC,YAAX,GAA0B;AACzB,WAAO,MAAP;AACA;AAED;;;;;;;AAKA,MAAWC,oBAAX,GAAkC;AACjC,WAAO,MAAP;AACA;AAED;;;;;;;AAKA,MAAWC,OAAX,GAAqB;AACpB,WAAO,cAAP;AACA;AAED;;;;;;;AAKA,QAAaC,WAAb,GAA2B;AAC1B,UAAM;AAACP,MAAAA,QAAD;AAAWD,MAAAA;AAAX,QAAuB,IAA7B;AACA,WAAOC,QAAQ,KAAKD,QAAQ,GAAGS,iBAAIC,QAAJ,CAAaV,QAAb,CAAH,GAA4B,IAAzC,CAAf;AACA;AAED;;;;;;;AAKA,QAAgBW,cAAhB,CAA+BC,QAA/B,EAAiD;AAChD,UAAM;AACLb,MAAAA,IADK;AAELc,MAAAA,SAFK;AAGLN,MAAAA,OAHK;AAILO,MAAAA,SAJK;AAKLC,MAAAA;AALK,QAMF,IANJ;AAQA,UAAMC,aAAa,GAAG,KAAKC,uBAAL,EAAtB;AAEA,QAAIC,iBAAiB,GAAG,KAAxB;AACA,QAAIC,UAAU,GAAG,KAAjB;;AAEA,UAAMC,YAAY,GAAG,MAAOC,KAAP,IAAwB;AAC5C;AACA,YAAMC,QAAQ,GAAG,4BAChBD,KAAK,CAACE,UADU,EAEhBT,SAFgB,EAGhB,IAHgB,CAAjB;;AAKA,UAAIQ,QAAQ,KAAK,IAAjB,EAAuB;AACtB,eAAO,KAAP;AACA;;AACDH,MAAAA,UAAU,GAAG,IAAb,CAV4C,CAY5C;;AACA,YAAMK,IAAI,GAAG,KAAKC,wBAAL,CACZT,aADY,EAEZM,QAFY,CAAb;;AAIA,UAAI,CAACE,IAAL,EAAW;AACV,eAAO,IAAP;AACA;;AAED,YAAMH,KAAK,CAACK,OAAN,CAAc,gBAASX,SAAT,EAAoBS,IAApB,CAAd,CAAN;AACA,aAAO,IAAP;AACA,KAvBD;;AAyBA,UAAMG,mBAAmB,GAAG,MAAON,KAAP,IAAwB;AACnD,YAAMO,SAAS,GAAGP,KAAK,CAACE,UAAxB,CADmD,CAGnD;;AACA,UAAIK,SAAS,CAACC,QAAV,CAAmB,GAAnB,CAAJ,EAA6B;AAC5B,eAAO,KAAP;AACA,OANkD,CAQnD;;;AACA,UAAI,CAAC,iCAAsBD,SAAtB,EAAiCrB,OAAjC,EAA0C,IAA1C,CAAL,EAAsD;AACrD,eAAO,KAAP;AACA;;AACDW,MAAAA,iBAAiB,GAAG,IAApB;AAEA,YAAMG,KAAK,CAACK,OAAN,CAAc3B,IAAd,CAAN;AACA,aAAO,IAAP;AACA,KAhBD;;AAkBA,UAAM+B,mBAAmB,GAAG,MAAOT,KAAP,IAAwB;AACnD,YAAMO,SAAS,GAAGP,KAAK,CAACE,UAAxB,CADmD,CAGnD;;AACA,UAAIK,SAAS,CAACC,QAAV,CAAmB,GAAnB,CAAJ,EAA6B;AAC5B,eAAO,KAAP;AACA,OANkD,CAQnD;;;AACA,UAAI,CAAC,UAAUE,IAAV,CAAeH,SAAf,CAAL,EAAgC;AAC/B,eAAO,KAAP;AACA,OAXkD,CAanD;;;AACA,UAAIf,SAAJ,EAAe;AACd,eAAO,IAAP;AACA;;AAED,YAAMQ,KAAK,CAACK,OAAN,CAAc,gBAAS,mBAAQ3B,IAAR,CAAT,EAAwB6B,SAAxB,CAAd,CAAN;AACA,aAAO,IAAP;AACA,KApBD;;AAsBA,UAAMI,OAAO,GAAG,MAAM,KAAKC,kBAAL,CAAwBrB,QAAxB,CAAtB;AACA,UAAMoB,OAAO,CAACE,IAAR,CAAa,MAAMb,KAAN,IAAe;AACjC,UAAIA,KAAK,CAACc,IAAN,KAAeC,uBAASC,aAA5B,EAA2C;AAC1C;AACA;;AAED,UAAI,MAAMjB,YAAY,CAACC,KAAD,CAAtB,EAA+B;AAC9B;AACA;;AAED,UAAI,MAAMM,mBAAmB,CAACN,KAAD,CAA7B,EAAsC;AACrC;AACA;;AAED,UAAI,MAAMS,mBAAmB,CAACT,KAAD,CAA7B,EAAsC;AACrC;AACA;AACD,KAhBK,CAAN;;AAkBA,QAAI,CAACH,iBAAL,EAAwB;AACvB,YAAM,IAAIoB,KAAJ,CAAW,qBAAoB/B,OAAQ,EAAvC,CAAN;AACA;;AAED,QAAI,CAACY,UAAL,EAAiB;AAChB,YAAM,IAAImB,KAAJ,CAAW,qBAAoBxB,SAAU,EAAzC,CAAN;AACA;AACD;AAED;;;;;AAGA,QAAgByB,eAAhB,GAAkC;AACjC,UAAMtC,QAAQ,GAAG,MAAM,KAAKO,WAAL,EAAvB;AACA,UAAM;AACLN,MAAAA;AADK,QAEF,IAFJ;;AAGA,QAAI,EACHD,QAAQ,IACRC,cAFG,CAAJ,EAGG;AACF;AACA;;AAED,UAAM,gCAAkB,KAAKH,IAAvB,EAA6B;AAClCE,MAAAA,QADkC;AAElCC,MAAAA;AAFkC,KAA7B,CAAN;AAIA;;AA9MuD","sourcesContent":["import {\n\tjoin as pathJoin,\n\tdirname\n} from 'path';\n\nimport fse from 'fs-extra';\nimport {\n\tEntry,\n\tPathType\n} from '@shockpkg/archive-files';\n\nimport {\n\tpathRelativeBase,\n\tpathRelativeBaseMatch\n} from '../util';\nimport {\n\tpeResourceReplace\n} from '../util/windows';\nimport {\n\tProjector\n} from '../projector';\n\n/**\n * ProjectorWindows constructor.\n *\n * @param path Output path.\n */\nexport abstract class ProjectorWindows extends Projector {\n\t/**\n\t * Icon file.\n\t */\n\tpublic iconFile: string | null = null;\n\n\t/**\n\t * Icon data.\n\t */\n\tpublic iconData: Readonly<Buffer> | null = null;\n\n\t/**\n\t * Version strings.\n\t */\n\tpublic versionStrings: Readonly<{[key: string]: string}> | null = null;\n\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * Projector file extension.\n\t *\n\t * @returns File extension.\n\t */\n\tpublic get extension() {\n\t\treturn '.exe';\n\t}\n\n\t/**\n\t * Config file newline characters.\n\t *\n\t * @returns Newline characters.\n\t */\n\tpublic get configNewline() {\n\t\treturn '\\r\\n';\n\t}\n\n\t/**\n\t * Lingo file newline characters.\n\t *\n\t * @returns Newline characters.\n\t */\n\tpublic get lingoNewline() {\n\t\treturn '\\r\\n';\n\t}\n\n\t/**\n\t * Splash image file extension.\n\t *\n\t * @returns File extension.\n\t */\n\tpublic get splashImageExtension() {\n\t\treturn '.BMP';\n\t}\n\n\t/**\n\t * Get the SKL name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get sklName() {\n\t\treturn 'Projec32.skl';\n\t}\n\n\t/**\n\t * Get icon data if any specified, from data or file.\n\t *\n\t * @returns Icon data or null.\n\t */\n\tpublic async getIconData() {\n\t\tconst {iconData, iconFile} = this;\n\t\treturn iconData || (iconFile ? fse.readFile(iconFile) : null);\n\t}\n\n\t/**\n\t * Write the projector skeleton from archive.\n\t *\n\t * @param skeleton Skeleton path.\n\t */\n\tprotected async _writeSkeleton(skeleton: string) {\n\t\tconst {\n\t\t\tpath,\n\t\t\tshockwave,\n\t\t\tsklName,\n\t\t\txtrasName,\n\t\t\txtrasPath\n\t\t} = this;\n\n\t\tconst xtrasMappings = this.getIncludeXtrasMappings();\n\n\t\tlet foundProjectorSkl = false;\n\t\tlet foundXtras = false;\n\n\t\tconst xtrasHandler = async (entry: Entry) => {\n\t\t\t// Check if Xtras path.\n\t\t\tconst xtrasRel = pathRelativeBase(\n\t\t\t\tentry.volumePath,\n\t\t\t\txtrasName,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tif (xtrasRel === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfoundXtras = true;\n\n\t\t\t// Find output path if being included, else skip.\n\t\t\tconst dest = this.includeXtrasMappingsDest(\n\t\t\t\txtrasMappings,\n\t\t\t\txtrasRel\n\t\t\t);\n\t\t\tif (!dest) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tawait entry.extract(pathJoin(xtrasPath, dest));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst projectorSklHandler = async (entry: Entry) => {\n\t\t\tconst entryPath = entry.volumePath;\n\n\t\t\t// Should not be in sub directory.\n\t\t\tif (entryPath.includes('/')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Check if skl path.\n\t\t\tif (!pathRelativeBaseMatch(entryPath, sklName, true)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfoundProjectorSkl = true;\n\n\t\t\tawait entry.extract(path);\n\t\t\treturn true;\n\t\t};\n\n\t\tconst projectorDllHandler = async (entry: Entry) => {\n\t\t\tconst entryPath = entry.volumePath;\n\n\t\t\t// Should not be in sub directory.\n\t\t\tif (entryPath.includes('/')) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Check if dll path.\n\t\t\tif (!/\\.dll$/i.test(entryPath)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Exclude if shockwave projector.\n\t\t\tif (shockwave) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tawait entry.extract(pathJoin(dirname(path), entryPath));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst archive = await this.getSkeletonArchive(skeleton);\n\t\tawait archive.read(async entry => {\n\t\t\tif (entry.type === PathType.RESOURCE_FORK) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (await xtrasHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (await projectorSklHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (await projectorDllHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\n\t\tif (!foundProjectorSkl) {\n\t\t\tthrow new Error(`Failed to locate: ${sklName}`);\n\t\t}\n\n\t\tif (!foundXtras) {\n\t\t\tthrow new Error(`Failed to locate: ${xtrasName}`);\n\t\t}\n\t}\n\n\t/**\n\t * Modify the projector skeleton.\n\t */\n\tprotected async _modifySkeleton() {\n\t\tconst iconData = await this.getIconData();\n\t\tconst {\n\t\t\tversionStrings\n\t\t} = this;\n\t\tif (!(\n\t\t\ticonData ||\n\t\t\tversionStrings\n\t\t)) {\n\t\t\treturn;\n\t\t}\n\n\t\tawait peResourceReplace(this.path, {\n\t\t\ticonData,\n\t\t\tversionStrings\n\t\t});\n\t}\n}\n"],"file":"windows.js","sourceRoot":"../../src"}
\No newline at end of file