@shockpkg/dir-projector
Version:
Package for creating Shockwave Director projectors
1 lines • 30.3 kB
Source Map (JSON)
{"version":3,"sources":["projectors/macapp.ts"],"names":["join","pathJoin","Projector","defaultFalse","defaultNull","entryIsEmptyResourceFork","infoPlistReplace","pathRelativeBase","pathRelativeBaseMatch","plistStringTagEncode","ProjectorMacApp","constructor","options","binaryName","intel","iconFile","iconData","infoPlistFile","infoPlistData","pkgInfoFile","pkgInfoData","nestXtrasContents","projectorExtension","configNewline","lingoNewline","splashImageExtension","hasIcon","hasInfoPlist","hasPkgInfo","projectorResourcesDirectoryName","appBinaryName","appBinaryNameCustom","appBinaryNameDefault","appIconName","appIconNameCustom","appIconNameDefault","n","appRsrcName","appRsrcNameCustom","appRsrcNameDefault","appPathInfoPlist","appPathPkgInfo","appPathFrameworks","appPathXtras","xtrasDirectoryName","appPathBinary","appPathBinaryCustom","appPathBinaryDefault","appPathIcon","appPathIconCustom","appPathIconDefault","appPathRsrc","appPathRsrcCustom","appPathRsrcDefault","getIconData","_dataFromBufferOrFile","getInfoPlistData","_dataFromValueOrFile","getPkgInfoData","getXtrasPath","name","getIconPath","getInfoPlistPath","getPkgInfoPath","updateInfoPlistCode","xml","getProjectorNameNoExtension","write","path","_writeIcon","_writePkgInfo","_writeInfoPlist","_updateInfoPlist","_writeSkeleton","shockwave","xtrasPath","xtrasMappings","getIncludeXtrasMappings","foundProjectorResourcesDirectory","foundFrameworks","foundBinary","foundInfoPlist","foundPkgInfo","foundIcon","foundRsrc","foundXtras","xtrasHandler","entry","xtrasRel","volumePath","dest","includeXtrasMappingsDest","extract","projectorResourcesHandler","projectorRel","archive","getSkeletonArchive","read","Error","d","_maybeWriteFile","file","data","xmlOriginal","toString","Buffer","from"],"mappings":"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","sourcesContent":["import {\n\tjoin as pathJoin\n} from 'path';\n\nimport {\n\tEntry\n} from '@shockpkg/archive-files';\n\nimport {\n\tIProjectorOptions,\n\tProjector\n} from '../projector';\nimport {\n\tdefaultFalse,\n\tdefaultNull,\n\tentryIsEmptyResourceFork,\n\tinfoPlistReplace,\n\tpathRelativeBase,\n\tpathRelativeBaseMatch,\n\tplistStringTagEncode\n} from '../util';\n\nexport interface IProjectorMacAppOptions extends IProjectorOptions {\n\n\t/**\n\t * Binary name, also renames rsrc and icns.\n\t *\n\t * @default null\n\t */\n\tbinaryName?: string | null;\n\n\t/**\n\t * Intel binary package, not universal binary.\n\t *\n\t * @default false\n\t */\n\tintel?: boolean;\n\n\t/**\n\t * Icon file.\n\t *\n\t * @default null\n\t */\n\ticonFile?: string | null;\n\n\t/**\n\t * Icon data.\n\t *\n\t * @default null\n\t */\n\ticonData?: Buffer | null;\n\n\t/**\n\t * Info.plist file.\n\t *\n\t * @default null\n\t */\n\tinfoPlistFile?: string | null;\n\n\t/**\n\t * Info.plist data.\n\t *\n\t * @default null\n\t */\n\tinfoPlistData?: Buffer | null;\n\n\t/**\n\t * PkgInfo file.\n\t *\n\t * @default null\n\t */\n\tpkgInfoFile?: string | null;\n\n\t/**\n\t * PkgInfo data.\n\t *\n\t * @default null\n\t */\n\tpkgInfoData?: Buffer | null;\n\n\t/**\n\t * Nest Xtras at *.app/Contents/xtras.\n\t *\n\t * @default false\n\t */\n\tnestXtrasContents?: boolean;\n}\n\n/**\n * ProjectorMacApp constructor.\n *\n * @param options Options object.\n */\nexport class ProjectorMacApp extends Projector {\n\t/**\n\t * Binary name.\n\t *\n\t * @default null\n\t */\n\tpublic binaryName: string | null;\n\n\t/**\n\t * Intel binary package, not universal binary.\n\t *\n\t * @default false\n\t */\n\tpublic intel: boolean;\n\n\t/**\n\t * Icon file.\n\t *\n\t * @default null\n\t */\n\tpublic iconFile: string | null;\n\n\t/**\n\t * Icon data.\n\t *\n\t * @default null\n\t */\n\tpublic iconData: Buffer | null;\n\n\t/**\n\t * Info.plist file.\n\t *\n\t * @default null\n\t */\n\tpublic infoPlistFile: string | null;\n\n\t/**\n\t * Info.plist data.\n\t *\n\t * @default null\n\t */\n\tpublic infoPlistData: string | string[] | Buffer | null;\n\n\t/**\n\t * PkgInfo file.\n\t *\n\t * @default null\n\t */\n\tpublic pkgInfoFile: string | null;\n\n\t/**\n\t * PkgInfo data.\n\t *\n\t * @default null\n\t */\n\tpublic pkgInfoData: string | Buffer | null;\n\n\t/**\n\t * Nest Xtras at *.app/Contents/xtras.\n\t *\n\t * @default false\n\t */\n\tpublic nestXtrasContents: boolean;\n\n\tconstructor(options: IProjectorMacAppOptions = {}) {\n\t\tsuper(options);\n\n\t\tthis.binaryName = defaultNull(options.binaryName);\n\t\tthis.intel = defaultFalse(options.intel);\n\t\tthis.iconFile = defaultNull(options.iconFile);\n\t\tthis.iconData = defaultNull(options.iconData);\n\t\tthis.infoPlistFile = defaultNull(options.infoPlistFile);\n\t\tthis.infoPlistData = defaultNull(options.infoPlistData);\n\t\tthis.pkgInfoFile = defaultNull(options.pkgInfoFile);\n\t\tthis.pkgInfoData = defaultNull(options.pkgInfoData);\n\t\tthis.nestXtrasContents = defaultFalse(options.nestXtrasContents);\n\t}\n\n\t/**\n\t * Projector file extension.\n\t *\n\t * @returns File extension.\n\t */\n\tpublic get projectorExtension() {\n\t\treturn '.app';\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 '\\n';\n\t}\n\n\t/**\n\t * Config file newline characters.\n\t *\n\t * @returns Newline characters.\n\t */\n\tpublic get lingoNewline() {\n\t\treturn '\\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 '.pict';\n\t}\n\n\t/**\n\t * If icon is specified.\n\t *\n\t * @returns Has icon.\n\t */\n\tpublic get hasIcon() {\n\t\treturn !!(this.iconData || this.iconFile);\n\t}\n\n\t/**\n\t * If Info.plist is specified.\n\t *\n\t * @returns Has Info.plist.\n\t */\n\tpublic get hasInfoPlist() {\n\t\treturn !!(this.infoPlistData || this.infoPlistFile);\n\t}\n\n\t/**\n\t * If PkgInfo is specified.\n\t *\n\t * @returns Has PkgInfo.\n\t */\n\tpublic get hasPkgInfo() {\n\t\treturn !!(this.pkgInfoData || this.pkgInfoFile);\n\t}\n\n\t/**\n\t * Get the Projector Resources directory name.\n\t *\n\t * @returns Directory name.\n\t */\n\tpublic get projectorResourcesDirectoryName() {\n\t\treturn this.intel ? 'Projector Intel Resources' : 'Projector Resources';\n\t}\n\n\t/**\n\t * Get app binary name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryName() {\n\t\treturn this.appBinaryNameCustom || this.appBinaryNameDefault;\n\t}\n\n\t/**\n\t * Get app binary name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryNameDefault() {\n\t\treturn 'Projector';\n\t}\n\n\t/**\n\t * Get app binary name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appBinaryNameCustom() {\n\t\treturn this.binaryName;\n\t}\n\n\t/**\n\t * Get app icon name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconName() {\n\t\treturn this.appIconNameCustom || this.appIconNameDefault;\n\t}\n\n\t/**\n\t * Get app icon name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconNameDefault() {\n\t\treturn 'projector.icns';\n\t}\n\n\t/**\n\t * Get app icon name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIconNameCustom() {\n\t\tconst n = this.binaryName;\n\t\treturn n ? `${n}.icns` : null;\n\t}\n\n\t/**\n\t * Get app rsrc name.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcName() {\n\t\treturn this.appRsrcNameCustom || this.appRsrcNameDefault;\n\t}\n\n\t/**\n\t * Get app rsrc name, default.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcNameDefault() {\n\t\treturn 'Projector.rsrc';\n\t}\n\n\t/**\n\t * Get app rsrc name, custom.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appRsrcNameCustom() {\n\t\tconst n = this.binaryName;\n\t\treturn n ? `${n}.rsrc` : null;\n\t}\n\n\t/**\n\t * Get app Info.plist path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathInfoPlist() {\n\t\treturn 'Contents/Info.plist';\n\t}\n\n\t/**\n\t * Get app PkgInfo path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathPkgInfo() {\n\t\treturn 'Contents/PkgInfo';\n\t}\n\n\t/**\n\t * Get app Frameworks path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathFrameworks() {\n\t\treturn 'Contents/Frameworks';\n\t}\n\n\t/**\n\t * Get app Xtras path.\n\t *\n\t * @returns Directory path.\n\t */\n\tpublic get appPathXtras() {\n\t\treturn `Contents/${this.xtrasDirectoryName}`;\n\t}\n\n\t/**\n\t * Get app binary path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinary() {\n\t\treturn this.appPathBinaryCustom || this.appPathBinaryDefault;\n\t}\n\n\t/**\n\t * Get app binary path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinaryDefault() {\n\t\treturn `Contents/MacOS/${this.appBinaryNameDefault}`;\n\t}\n\n\t/**\n\t * Get app binary path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathBinaryCustom() {\n\t\tconst n = this.appBinaryNameCustom;\n\t\treturn n ? `Contents/MacOS/${n}` : null;\n\t}\n\n\t/**\n\t * Get app icon path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIcon() {\n\t\treturn this.appPathIconCustom || this.appPathIconDefault;\n\t}\n\n\t/**\n\t * Get app icon path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIconDefault() {\n\t\treturn `Contents/Resources/${this.appIconNameDefault}`;\n\t}\n\n\t/**\n\t * Get app icon path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathIconCustom() {\n\t\tconst n = this.appIconNameCustom;\n\t\treturn n ? `Contents/Resources/${n}` : null;\n\t}\n\n\t/**\n\t * Get app rsrc path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrc() {\n\t\treturn this.appPathRsrcCustom || this.appPathRsrcDefault;\n\t}\n\n\t/**\n\t * Get app rsrc path, default.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrcDefault() {\n\t\treturn `Contents/Resources/${this.appRsrcNameDefault}`;\n\t}\n\n\t/**\n\t * Get app rsrc path, custom.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appPathRsrcCustom() {\n\t\tconst n = this.appRsrcNameCustom;\n\t\treturn n ? `Contents/Resources/${n}` : null;\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\treturn this._dataFromBufferOrFile(\n\t\t\tthis.iconData,\n\t\t\tthis.iconFile\n\t\t);\n\t}\n\n\t/**\n\t * Get Info.plist data if any specified, from data or file.\n\t *\n\t * @returns Info.plist data or null.\n\t */\n\tpublic async getInfoPlistData() {\n\t\treturn this._dataFromValueOrFile(\n\t\t\tthis.infoPlistData,\n\t\t\tthis.infoPlistFile,\n\t\t\t'\\n',\n\t\t\t'utf8'\n\t\t);\n\t}\n\n\t/**\n\t * Get PkgInfo data if any specified, from data or file.\n\t *\n\t * @returns PkgInfo data or null.\n\t */\n\tpublic async getPkgInfoData() {\n\t\treturn this._dataFromValueOrFile(\n\t\t\tthis.pkgInfoData,\n\t\t\tthis.pkgInfoFile,\n\t\t\tnull,\n\t\t\t'ascii'\n\t\t);\n\t}\n\n\t/**\n\t * Get the Xtras path.\n\t *\n\t * @param name Save name.\n\t * @returns Xtras path.\n\t */\n\tpublic getXtrasPath(name: string) {\n\t\tif (this.nestXtrasContents) {\n\t\t\treturn `${name}/${this.appPathXtras}`;\n\t\t}\n\t\treturn super.getXtrasPath(name);\n\t}\n\n\t/**\n\t * Get the icon path.\n\t *\n\t * @param name Save name.\n\t * @returns Icon path.\n\t */\n\tpublic getIconPath(name: string) {\n\t\treturn `${name}/${this.appPathIcon}`;\n\t}\n\n\t/**\n\t * Get the Info.plist path.\n\t *\n\t * @param name Save name.\n\t * @returns Icon path.\n\t */\n\tpublic getInfoPlistPath(name: string) {\n\t\treturn `${name}/${this.appPathInfoPlist}`;\n\t}\n\n\t/**\n\t * Get the PkgInfo path.\n\t *\n\t * @param name Save name.\n\t * @returns Icon path.\n\t */\n\tpublic getPkgInfoPath(name: string) {\n\t\treturn `${name}/${this.appPathPkgInfo}`;\n\t}\n\n\t/**\n\t * Update XML code with customized variables.\n\t *\n\t * @param xml Plist code.\n\t * @param name Application name.\n\t * @returns Updated XML.\n\t */\n\tpublic updateInfoPlistCode(xml: string, name: string) {\n\t\tconst {\n\t\t\tappBinaryNameCustom,\n\t\t\tappIconNameCustom\n\t\t} = this;\n\n\t\tif (appBinaryNameCustom) {\n\t\t\txml = infoPlistReplace(\n\t\t\t\txml,\n\t\t\t\t'CFBundleExecutable',\n\t\t\t\tplistStringTagEncode(appBinaryNameCustom)\n\t\t\t);\n\t\t}\n\t\tif (appIconNameCustom) {\n\t\t\txml = infoPlistReplace(\n\t\t\t\txml,\n\t\t\t\t'CFBundleIconFile',\n\t\t\t\tplistStringTagEncode(appIconNameCustom)\n\t\t\t);\n\t\t}\n\t\txml = infoPlistReplace(\n\t\t\txml,\n\t\t\t'CFBundleName',\n\t\t\tplistStringTagEncode(this.getProjectorNameNoExtension(name))\n\t\t);\n\n\t\treturn xml;\n\t}\n\n\t/**\n\t * Write out the projector.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tpublic async write(path: string, name: string) {\n\t\tawait super.write(path, name);\n\n\t\tawait this._writeIcon(path, name);\n\t\tawait this._writePkgInfo(path, name);\n\t\tawait this._writeInfoPlist(path, name);\n\t\tawait this._updateInfoPlist(path, name);\n\t}\n\n\t/**\n\t * Write the projector skeleton from archive.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tprotected async _writeSkeleton(path: string, name: string) {\n\t\tconst {\n\t\t\thasIcon,\n\t\t\thasInfoPlist,\n\t\t\thasPkgInfo,\n\t\t\tshockwave,\n\n\t\t\tappPathInfoPlist,\n\t\t\tappPathPkgInfo,\n\t\t\tappPathFrameworks,\n\n\t\t\tappPathBinaryDefault,\n\t\t\tappPathBinaryCustom,\n\n\t\t\tappPathIconDefault,\n\t\t\tappPathIconCustom,\n\n\t\t\tappPathRsrcDefault,\n\t\t\tappPathRsrcCustom,\n\n\t\t\txtrasDirectoryName,\n\n\t\t\tprojectorResourcesDirectoryName\n\t\t} = this;\n\n\t\tconst xtrasPath = this.getXtrasPath(name);\n\t\tconst xtrasMappings = this.getIncludeXtrasMappings();\n\n\t\tlet foundProjectorResourcesDirectory = false;\n\t\tlet foundFrameworks = false;\n\t\tlet foundBinary = false;\n\t\tlet foundInfoPlist = false;\n\t\tlet foundPkgInfo = false;\n\t\tlet foundIcon = false;\n\t\tlet foundRsrc = 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\txtrasDirectoryName,\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(path, xtrasPath, dest));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst projectorResourcesHandler = async (entry: Entry) => {\n\t\t\t// Check if projector path.\n\t\t\tconst projectorRel = pathRelativeBase(\n\t\t\t\tentry.volumePath,\n\t\t\t\tprojectorResourcesDirectoryName,\n\t\t\t\ttrue\n\t\t\t);\n\t\t\tif (projectorRel === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfoundProjectorResourcesDirectory = true;\n\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathFrameworks,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundFrameworks = true;\n\n\t\t\t\t// Exclude Frameworks directory for Shockwave projectors.\n\t\t\t\tif (shockwave) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exclude Info.plist if using custom one.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathInfoPlist,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundInfoPlist = true;\n\n\t\t\t\tif (hasInfoPlist) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Exclude PkgInfo if using custom one.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathPkgInfo,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundPkgInfo = true;\n\n\t\t\t\tif (hasPkgInfo) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet dest = projectorRel;\n\n\t\t\t// Possibly rename the binary.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathBinaryDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundBinary = true;\n\n\t\t\t\tif (appPathBinaryCustom) {\n\t\t\t\t\tdest = appPathBinaryCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Special case for icon.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathIconDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundIcon = true;\n\n\t\t\t\t// Skip extracting icon if custom one.\n\t\t\t\tif (hasIcon) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Possible rename the icon.\n\t\t\t\tif (appPathIconCustom) {\n\t\t\t\t\tdest = appPathIconCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Special case for rsrc.\n\t\t\tif (pathRelativeBaseMatch(\n\t\t\t\tprojectorRel,\n\t\t\t\tappPathRsrcDefault,\n\t\t\t\ttrue\n\t\t\t)) {\n\t\t\t\tfoundRsrc = true;\n\n\t\t\t\tif (appPathRsrcCustom) {\n\t\t\t\t\tdest = appPathRsrcCustom;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait entry.extract(pathJoin(path, name, dest));\n\t\t\treturn true;\n\t\t};\n\n\t\tconst archive = await this.getSkeletonArchive();\n\t\tawait archive.read(async entry => {\n\t\t\t// Skip empty resource forks (every file in DMG).\n\t\t\tif (entryIsEmptyResourceFork(entry)) {\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 projectorResourcesHandler(entry)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t});\n\n\t\tif (!foundProjectorResourcesDirectory) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to locate: ${projectorResourcesDirectoryName}`\n\t\t\t);\n\t\t}\n\n\t\tif (!foundFrameworks) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathFrameworks}`);\n\t\t}\n\n\t\tif (!foundBinary) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathBinaryDefault}`);\n\t\t}\n\n\t\tif (!foundInfoPlist) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathInfoPlist}`);\n\t\t}\n\n\t\tif (!foundPkgInfo) {\n\t\t\t// Some projector skeletons lack this file.\n\t\t\t// const d = projectorResourcesDirectoryName;\n\t\t\t// throw new Error(`Failed to locate: ${d}/${appPathPkgInfo}`);\n\t\t}\n\n\t\tif (!foundIcon) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathIconDefault}`);\n\t\t}\n\n\t\tif (!foundRsrc) {\n\t\t\tconst d = projectorResourcesDirectoryName;\n\t\t\tthrow new Error(`Failed to locate: ${d}/${appPathRsrcDefault}`);\n\t\t}\n\n\t\tif (!foundXtras) {\n\t\t\tthrow new Error(`Failed to locate: ${xtrasDirectoryName}`);\n\t\t}\n\t}\n\n\t/**\n\t * Write out the projector icon file.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tprotected async _writeIcon(path: string, name: string) {\n\t\tawait this._maybeWriteFile(\n\t\t\tawait this.getIconData(),\n\t\t\tpathJoin(path, this.getIconPath(name))\n\t\t);\n\t}\n\n\t/**\n\t * Write out the projector PkgInfo file.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tprotected async _writePkgInfo(path: string, name: string) {\n\t\tawait this._maybeWriteFile(\n\t\t\tawait this.getPkgInfoData(),\n\t\t\tpathJoin(path, this.getPkgInfoPath(name))\n\t\t);\n\t}\n\n\t/**\n\t * Write out the projector Info.plist file.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tprotected async _writeInfoPlist(path: string, name: string) {\n\t\tawait this._maybeWriteFile(\n\t\t\tawait this.getInfoPlistData(),\n\t\t\tpathJoin(path, this.getInfoPlistPath(name))\n\t\t);\n\t}\n\n\t/**\n\t * Update the projector Info.plist file fields.\n\t *\n\t * @param path Save path.\n\t * @param name Save name.\n\t */\n\tprotected async _updateInfoPlist(path: string, name: string) {\n\t\tconst file = pathJoin(path, this.getInfoPlistPath(name));\n\t\tlet data = await this._dataFromBufferOrFile(null, file);\n\t\tif (!data) {\n\t\t\tthrow new Error('Failed to read Info.plist or updating');\n\t\t}\n\n\t\t// Decode buffer, and update.\n\t\tconst xmlOriginal = data.toString('utf8');\n\t\tconst xml = this.updateInfoPlistCode(xmlOriginal, name);\n\n\t\t// If unchanged, all done.\n\t\tif (xml === xmlOriginal) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Encode data and write.\n\t\tdata = Buffer.from(xml, 'utf8');\n\t\tawait this._maybeWriteFile(\n\t\t\tdata,\n\t\t\tpathJoin(path, this.getInfoPlistPath(name))\n\t\t);\n\t}\n}\n"],"file":"macapp.mjs","sourceRoot":"../../src"}