UNPKG

@shockpkg/ria-packager

Version:

Package for creating Adobe AIR packages

1 lines 42.1 kB
{"version":3,"sources":["packager/bundle/mac.ts"],"names":["join","pathJoin","fse","PathType","IconIcns","Plist","ValueString","ValueBoolean","ValueArray","ValueDict","pathRelativeBaseMatch","pathRelativeBase","PackagerBundle","PackagerBundleMac","constructor","path","Map","hasInfoPlist","infoPlistData","infoPlistFile","hasPkgInfo","pkgInfoData","pkgInfoFile","appIcnsFile","appIcnsPath","appInfoPlistPath","appPkgInfoPath","appResourcesPath","getAppBinaryPath","_getFilename","getAppFrameworkPath","getSdkBinaryPath","getSdkFrameworkPath","getFrameworkExcludes","r","frameworkCleanHelpers","push","frameworkCleanOsFiles","getInfoPlistData","_dataFromValueOrFile","getInfoPlistDom","data","dom","fromXml","toString","getInfoPlistDomOrDefault","getPkgInfoData","getPkgInfoDataOrDefault","Buffer","from","_getFileMode","executable","_getPlistCFBundleExecutable","_getPlistCFBundleIdentifier","_getId","_getPlistCFBundleShortVersionString","_getVersionNumber","_getPlistCFBundleGetInfoString","copyright","_getCopyright","versionNumber","add","_getPlistNSHumanReadableCopyright","_getPlistCFBundleIconFile","icon","_getIcon","_uidIcon","_getPlistCFBundleLocalizations","langs","_applicationInfoSupportedLanguages","list","trim","split","length","map","s","_getPlistNSHighResolutionCapable","plistHighResolutionCapable","_applicationInfoRequestedDisplayResolution","_getPlistNSAppTransportSecurity","plistHasAppTransportSecurity","_getPlistCFBundleDocumentTypes","extensionMapping","_extensionMapping","fileTypes","_applicationInfoFileTypes","size","useDesc","plistDocumentTypeNameIsDescription","ext","info","dict","value","set","contentType","description","name","iconFile","get","_getPlistCFBundleAllowMixedLocalizations","_getPlistCFBundlePackageType","_getPlistCFBundleInfoDictionaryVersion","_getPlistLSMinimumSystemVersion","_getPlistLSRequiresCarbon","_open","applicationData","clear","appBinaryPath","appFrameworkPath","sdkBinaryPath","sdkFrameworkPath","frameworkExcludes","Set","toLowerCase","appBinaryPathFull","appFrameworkPathFull","extractedBinary","extractedFramework","sdk","_openSdk","read","entry","type","RESOURCE_FORK","volumePath","sdkBinaryPathRel","dest","extract","frameworkPathRel","has","Error","_close","_writeApplicationIcon","_writeFileTypeIcons","_writePkgInfo","_writeInfoPlist","_writeResource","destination","options","mode","_getResourcePath","outputFile","preserveResourceMtime","mtime","utimes","parts","modern","applicationIconModern","_writeIconModern","_writeIconReference","mapping","fileIcons","_getFileTypes","fileTypeIconModern","did","index","uid","done","_getFileTypeIconName","_getFileTypeIconPath","writeFile","_generateInfoPlist","existing","TYPE","val","key","toXml","indentRoot","indentString","paths","image16x16","image32x32","image48x48","image128x128","p","icns","types","readFile","addFromPng","encode","image512x512","image1024x1024"],"mappings":"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","sourcesContent":["import {\n\tjoin as pathJoin\n} from 'path';\n\nimport fse from 'fs-extra';\nimport {\n\tPathType\n} from '@shockpkg/archive-files';\nimport {\n\tIconIcns\n} from '@shockpkg/icon-encoder';\nimport {\n\tPlist,\n\tValue,\n\tValueString,\n\tValueBoolean,\n\tValueArray,\n\tValueDict\n} from '@shockpkg/plist-dom';\n\nimport {\n\tpathRelativeBaseMatch,\n\tpathRelativeBase\n} from '../../util';\nimport {IPackagerResourceOptions} from '../../packager';\nimport {\n\tIIcon,\n\tPackagerBundle\n} from '../bundle';\n\nexport interface IFileTypeIcon {\n\tdata?: Buffer | null;\n\tfile?: string | null;\n}\n\n/**\n * PackagerBundleMac constructor.\n *\n * @param path Output path.\n */\nexport class PackagerBundleMac extends PackagerBundle {\n\t/**\n\t * Create modern application icon file.\n\t * Enables higher resolutions icons and PNG compression.\n\t * Default false uses the legacy formats of the official packager.\n\t */\n\tpublic applicationIconModern = false;\n\n\t/**\n\t * Create modern document type icon file.\n\t * Enables higher resolutions icons and PNG compression.\n\t * Default false uses the legacy formats of the official packager.\n\t */\n\tpublic fileTypeIconModern = false;\n\n\t/**\n\t * Info.plist file.\n\t */\n\tpublic infoPlistFile: string | null = null;\n\n\t/**\n\t * Info.plist data.\n\t */\n\tpublic infoPlistData: (\n\t\tstring | Readonly<string[]> | Readonly<Buffer> | null\n\t) = null;\n\n\t/**\n\t * PkgInfo file.\n\t */\n\tpublic pkgInfoFile: string | null = null;\n\n\t/**\n\t * PkgInfo data.\n\t */\n\tpublic pkgInfoData: string | Readonly<Buffer> | null = null;\n\n\t/**\n\t * Remove unnecessary OS files from older versions of the framework.\n\t * The official packages will include these if they are present in SDK.\n\t */\n\tpublic frameworkCleanOsFiles = false;\n\n\t/**\n\t * Optionally preserve resource mtime.\n\t * The official packager does not preserve resource mtimes.\n\t */\n\tpublic preserveResourceMtime = false;\n\n\t/**\n\t * Value of CFBundleDocumentTypes CFBundleTypeName is description, not name.\n\t * Tag value controlled by application descriptor.\n\t * Set to false to match the behavior of SDK versions before 3.2.0.2070.\n\t */\n\tpublic plistDocumentTypeNameIsDescription = true;\n\n\t/**\n\t * Add an NSHighResolutionCapable tag to the Info.plist file.\n\t * Tag value controlled by application descriptor.\n\t * Set to false to match the behavior of SDK versions before 3.6.0.6090.\n\t */\n\tpublic plistHighResolutionCapable = true;\n\n\t/**\n\t * Remove unnecessary helper files from framework.\n\t * Set to false to match the behavior of SDK versions before 25.0.0.134.\n\t */\n\tpublic frameworkCleanHelpers = true;\n\n\t/**\n\t * Add an NSAppTransportSecurity tag to the Info.plist file.\n\t * Tag value controlled by application descriptor.\n\t * Set to false to match the behavior of SDK versions before 27.0.0.128.\n\t */\n\tpublic plistHasAppTransportSecurity = true;\n\n\t/**\n\t * Extension mapping.\n\t */\n\tprotected _extensionMapping = new Map<string, string>();\n\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * If Info.plist is specified.\n\t *\n\t * @returns Is specified.\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 Is specified.\n\t */\n\tpublic get hasPkgInfo() {\n\t\treturn !!(this.pkgInfoData || this.pkgInfoFile);\n\t}\n\n\t/**\n\t * Get app icns file.\n\t *\n\t * @returns File name.\n\t */\n\tpublic get appIcnsFile() {\n\t\treturn 'Icon.icns';\n\t}\n\n\t/**\n\t * Get app icns path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appIcnsPath() {\n\t\treturn `Contents/Resources/${this.appIcnsFile}`;\n\t}\n\n\t/**\n\t * Get app Info.plist path.\n\t *\n\t * @returns File path.\n\t */\n\tpublic get appInfoPlistPath() {\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 appPkgInfoPath() {\n\t\treturn 'Contents/PkgInfo';\n\t}\n\n\t/**\n\t * Get app resources path.\n\t *\n\t * @returns Resources path.\n\t */\n\tpublic get appResourcesPath() {\n\t\treturn 'Contents/Resources';\n\t}\n\n\t/**\n\t * Get app binary path.\n\t *\n\t * @returns Binary path.\n\t */\n\tpublic getAppBinaryPath() {\n\t\treturn `Contents/MacOS/${this._getFilename()}`;\n\t}\n\n\t/**\n\t * Get app framework path.\n\t *\n\t * @returns Framework path.\n\t */\n\tpublic getAppFrameworkPath() {\n\t\treturn 'Contents/Frameworks/Adobe AIR.framework';\n\t}\n\n\t/**\n\t * Get SDK binary path.\n\t *\n\t * @returns Binary path.\n\t */\n\tpublic getSdkBinaryPath() {\n\t\treturn 'lib/nai/lib/CaptiveAppEntry';\n\t}\n\n\t/**\n\t * Get SDK framework path.\n\t *\n\t * @returns Framework path.\n\t */\n\tpublic getSdkFrameworkPath() {\n\t\treturn 'runtimes/air-captive/mac/Adobe AIR.framework';\n\t}\n\n\t/**\n\t * Get framework files excluded.\n\t *\n\t * @returns Excluded files in framework.\n\t */\n\tpublic getFrameworkExcludes() {\n\t\tconst r: string[] = [];\n\t\tif (this.frameworkCleanHelpers) {\n\t\t\t// Some files used to create applications, not used after that.\n\t\t\tr.push(\n\t\t\t\t'Versions/1.0/Adobe AIR_64 Helper',\n\t\t\t\t'Versions/1.0/Resources/ExtendedAppEntryTemplate64'\n\t\t\t);\n\t\t}\n\t\tif (this.frameworkCleanOsFiles) {\n\t\t\t// Some empty junk likely leftover from an Apple ZIP file.\n\t\t\tr.push('Versions/1.0/Resources/__MACOSX');\n\t\t}\n\t\treturn r;\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 Info.plist data as DOM if any specified.\n\t *\n\t * @returns Info.plist DOM or null.\n\t */\n\tpublic async getInfoPlistDom() {\n\t\tconst data = await this.getInfoPlistData();\n\t\tif (!data) {\n\t\t\treturn null;\n\t\t}\n\t\tconst dom = new Plist();\n\t\tdom.fromXml(data.toString('utf8'));\n\t\treturn dom;\n\t}\n\n\t/**\n\t * Get Info.plist data as DOM if any specified, or default.\n\t *\n\t * @returns Info.plist DOM or null.\n\t */\n\tpublic async getInfoPlistDomOrDefault() {\n\t\tconst dom = await this.getInfoPlistDom();\n\t\treturn dom || new Plist();\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 PkgInfo data if any specified, or default.\n\t *\n\t * @returns PkgInfo data.\n\t */\n\tpublic async getPkgInfoDataOrDefault() {\n\t\tconst r = await this.getPkgInfoData();\n\t\treturn r || Buffer.from('APPL????', 'ascii');\n\t}\n\n\t/**\n\t * Get file mode value.\n\t *\n\t * @param executable Is the entry executable.\n\t * @returns File mode.\n\t */\n\tprotected _getFileMode(executable: boolean) {\n\t\treturn executable ? 0b111100100 : 0b110100100;\n\t}\n\n\t/**\n\t * Get plist CFBundleExecutable value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleExecutable(): Value | null {\n\t\treturn new ValueString(this._getFilename());\n\t}\n\n\t/**\n\t * Get plist CFBundleIdentifier value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleIdentifier(): Value | null {\n\t\treturn new ValueString(this._getId());\n\t}\n\n\t/**\n\t * Get plist CFBundleShortVersionString value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleShortVersionString(): Value | null {\n\t\treturn new ValueString(this._getVersionNumber());\n\t}\n\n\t/**\n\t * Get plist CFBundleGetInfoString value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleGetInfoString(): Value | null {\n\t\t// Strange when no copyright but matches official packager.\n\t\tconst copyright = this._getCopyright();\n\t\tconst versionNumber = this._getVersionNumber();\n\t\tconst add = copyright ? ` ${copyright}` : '';\n\t\treturn new ValueString(`${versionNumber},${add}`);\n\t}\n\n\t/**\n\t * Get plist NSHumanReadableCopyright value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistNSHumanReadableCopyright(): Value | null {\n\t\treturn new ValueString(this._getCopyright() || '');\n\t}\n\n\t/**\n\t * Get plist CFBundleIconFile value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleIconFile(): Value | null {\n\t\tconst icon = this._getIcon();\n\t\treturn (icon && this._uidIcon(icon)) ?\n\t\t\tnew ValueString(this.appIcnsFile) :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Get plist CFBundleLocalizations value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleLocalizations(): Value | null {\n\t\tconst langs = this._applicationInfoSupportedLanguages;\n\t\tconst list = langs ? langs.trim().split(/\\s+/) : null;\n\t\treturn list && list.length ?\n\t\t\tnew ValueArray(list.map(s => new ValueString(s))) :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Get plist NSHighResolutionCapable value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistNSHighResolutionCapable(): Value | null {\n\t\treturn this.plistHighResolutionCapable ?\n\t\t\tnew ValueBoolean(\n\t\t\t\tthis._applicationInfoRequestedDisplayResolution === 'high'\n\t\t\t) :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Get plist NSAppTransportSecurity value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistNSAppTransportSecurity(): Value | null {\n\t\treturn this.plistHasAppTransportSecurity ?\n\t\t\tnew ValueDict(new Map([\n\t\t\t\t['NSAllowsArbitraryLoads', new ValueBoolean(true)]\n\t\t\t])) :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Get plist CFBundleDocumentTypes value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleDocumentTypes(): Value | null {\n\t\tconst extensionMapping = this._extensionMapping;\n\t\tconst fileTypes = this._applicationInfoFileTypes;\n\t\tif (!fileTypes || !fileTypes.size) {\n\t\t\treturn null;\n\t\t}\n\t\tconst useDesc = this.plistDocumentTypeNameIsDescription;\n\t\tconst list: ValueDict[] = [];\n\t\tfor (const [ext, info] of fileTypes) {\n\t\t\tconst dict = new ValueDict();\n\t\t\tconst {value} = dict;\n\t\t\tvalue.set(\n\t\t\t\t'CFBundleTypeExtensions',\n\t\t\t\tnew ValueArray([\n\t\t\t\t\tnew ValueString(ext)\n\t\t\t\t])\n\t\t\t);\n\t\t\tvalue.set(\n\t\t\t\t'CFBundleTypeMIMETypes',\n\t\t\t\tnew ValueArray([\n\t\t\t\t\tnew ValueString(info.contentType)\n\t\t\t\t])\n\t\t\t);\n\t\t\tvalue.set(\n\t\t\t\t'CFBundleTypeName',\n\t\t\t\tnew ValueString(useDesc ? info.description || '' : info.name)\n\t\t\t);\n\t\t\tvalue.set(\n\t\t\t\t'CFBundleTypeRole',\n\t\t\t\tnew ValueString('Editor')\n\t\t\t);\n\n\t\t\tconst iconFile = extensionMapping.get(ext);\n\t\t\tif (iconFile) {\n\t\t\t\tvalue.set(\n\t\t\t\t\t'CFBundleTypeIconFile',\n\t\t\t\t\tnew ValueString(iconFile)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlist.push(dict);\n\t\t}\n\t\treturn new ValueArray(list);\n\t}\n\n\t/**\n\t * Get plist CFBundleAllowMixedLocalizations value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleAllowMixedLocalizations(): Value | null {\n\t\treturn new ValueBoolean(true);\n\t}\n\n\t/**\n\t * Get plist CFBundlePackageType value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundlePackageType(): Value | null {\n\t\treturn new ValueString('APPL');\n\t}\n\n\t/**\n\t * Get plist CFBundleInfoDictionaryVersion value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistCFBundleInfoDictionaryVersion(): Value | null {\n\t\treturn new ValueString('6.0');\n\t}\n\n\t/**\n\t * Get plist LSMinimumSystemVersion value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistLSMinimumSystemVersion(): Value | null {\n\t\treturn new ValueString('10.6');\n\t}\n\n\t/**\n\t * Get plist LSRequiresCarbon value.\n\t *\n\t * @returns The value or null if excluded.\n\t */\n\tprotected _getPlistLSRequiresCarbon(): Value | null {\n\t\treturn new ValueBoolean(true);\n\t}\n\n\t/**\n\t * Open implementation.\n\t *\n\t * @param applicationData The application descriptor data.\n\t */\n\tprotected async _open(applicationData: Readonly<Buffer>) {\n\t\tthis._extensionMapping.clear();\n\n\t\tconst appBinaryPath = this.getAppBinaryPath();\n\t\tconst appFrameworkPath = this.getAppFrameworkPath();\n\n\t\tconst sdkBinaryPath = this.getSdkBinaryPath();\n\t\tconst sdkFrameworkPath = this.getSdkFrameworkPath();\n\n\t\tconst frameworkExcludes = new Set(\n\t\t\tthis.getFrameworkExcludes().map(s => s.toLowerCase())\n\t\t);\n\n\t\tconst appBinaryPathFull = pathJoin(this.path, appBinaryPath);\n\t\tconst appFrameworkPathFull = pathJoin(this.path, appFrameworkPath);\n\n\t\tlet extractedBinary = false;\n\t\tlet extractedFramework = false;\n\n\t\t// Extract everything needed from the SDK.\n\t\tconst sdk = await this._openSdk();\n\t\tawait sdk.read(async entry => {\n\t\t\t// Ignore any resource forks.\n\t\t\tif (entry.type === PathType.RESOURCE_FORK) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst path = entry.volumePath;\n\n\t\t\t// Extract if the binary.\n\t\t\tconst sdkBinaryPathRel =\n\t\t\t\tpathRelativeBase(path, sdkBinaryPath, true);\n\t\t\tif (sdkBinaryPathRel !== null) {\n\t\t\t\tconst dest = pathJoin(appBinaryPathFull, sdkBinaryPathRel);\n\t\t\t\tawait entry.extract(dest);\n\t\t\t\textractedBinary = true;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Extract if the framework.\n\t\t\tconst frameworkPathRel =\n\t\t\t\tpathRelativeBase(path, sdkFrameworkPath, true);\n\t\t\tif (frameworkPathRel !== null) {\n\t\t\t\t// If this is an excluded path, skip over.\n\t\t\t\tif (frameworkExcludes.has(frameworkPathRel.toLowerCase())) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\n\t\t\t\tconst dest = pathJoin(appFrameworkPathFull, frameworkPathRel);\n\t\t\t\tawait entry.extract(dest);\n\t\t\t\textractedFramework = true;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Optimization to avoid walking unrelated directories if possible.\n\t\t\treturn (\n\t\t\t\tpathRelativeBaseMatch(sdkFrameworkPath, path, true) ||\n\t\t\t\tpathRelativeBaseMatch(sdkBinaryPath, path, true)\n\t\t\t) ? true : null;\n\t\t});\n\n\t\t// Check that required components were extracted.\n\t\tif (!extractedBinary) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to locate binary in SDK: ${sdkBinaryPath}`\n\t\t\t);\n\t\t}\n\t\tif (!extractedFramework) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to locate framework in SDK: ${sdkFrameworkPath}`\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Close implementation.\n\t */\n\tprotected async _close() {\n\t\tawait this._writeApplicationIcon();\n\t\tawait this._writeFileTypeIcons();\n\t\tawait this._writePkgInfo();\n\t\tawait this._writeInfoPlist();\n\n\t\tthis._extensionMapping.clear();\n\t}\n\n\t/**\n\t * Write resource with data implementation.\n\t *\n\t * @param destination Packaged file relative destination.\n\t * @param data Resource data.\n\t * @param options Resource options.\n\t */\n\tprotected async _writeResource(\n\t\tdestination: string,\n\t\tdata: Readonly<Buffer>,\n\t\toptions: Readonly<IPackagerResourceOptions>\n\t) {\n\t\t// Write resource to file.\n\t\tconst mode = this._getFileMode(options.executable || false);\n\t\tconst dest = this._getResourcePath(destination);\n\t\tawait fse.outputFile(dest, data, {\n\t\t\tmode\n\t\t});\n\n\t\t// Optionally preserve mtime information.\n\t\tif (this.preserveResourceMtime) {\n\t\t\tconst {mtime} = options;\n\t\t\tif (mtime) {\n\t\t\t\tawait fse.utimes(dest, mtime, mtime);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Get path to a resource file.\n\t *\n\t * @param parts Path parts.\n\t * @returns Full path.\n\t */\n\tprotected _getResourcePath(...parts: string[]) {\n\t\treturn pathJoin(this.path, this.appResourcesPath, ...parts);\n\t}\n\n\t/**\n\t * Write the application icon if specified.\n\t */\n\tprotected async _writeApplicationIcon() {\n\t\tconst icon = this._getIcon();\n\t\tif (!icon || !this._uidIcon(icon)) {\n\t\t\treturn;\n\t\t}\n\t\tconst modern = this.applicationIconModern;\n\t\tconst path = pathJoin(this.path, this.appIcnsPath);\n\n\t\t// Write either a modern or a reference icon.\n\t\tif (modern) {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tawait this._writeIconModern(path, icon);\n\t\t}\n\t\telse {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tawait this._writeIconReference(path, icon);\n\t\t}\n\t}\n\n\t/**\n\t * Write file type icons, creating extension name mapping.\n\t * Avoids writting duplicate icons where the file/data is the same.\n\t */\n\tprotected async _writeFileTypeIcons() {\n\t\tthis._extensionMapping.clear();\n\t\tconst mapping = this._extensionMapping;\n\n\t\tconst fileIcons = this._getFileTypes();\n\t\tif (!fileIcons) {\n\t\t\treturn;\n\t\t}\n\t\tconst modern = this.fileTypeIconModern;\n\n\t\tconst did = new Map<string, string>();\n\t\tlet index = 0;\n\t\tfor (const [ext, {icon}] of fileIcons) {\n\t\t\tif (!icon) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Compute a unique identifier for the used icon set paths.\n\t\t\tconst uid = this._uidIcon(icon);\n\t\t\tif (!uid) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check if file was already generated for this icon set.\n\t\t\tconst done = did.get(uid);\n\t\t\tif (done) {\n\t\t\t\tmapping.set(ext, done);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Compute name for this icon set and cache.\n\t\t\tconst name = this._getFileTypeIconName(index++);\n\t\t\tdid.set(uid, name);\n\t\t\tmapping.set(ext, name);\n\n\t\t\t// Get the path to write to.\n\t\t\tconst path = pathJoin(this.path, this._getFileTypeIconPath(name));\n\n\t\t\t// Write either a modern or a reference icon.\n\t\t\tif (modern) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tawait this._writeIconModern(path, icon);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tawait this._writeIconReference(path, icon);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Write out PkgInfo file.\n\t */\n\tprotected async _writePkgInfo() {\n\t\tconst data = await this.getPkgInfoDataOrDefault();\n\t\tconst path = pathJoin(this.path, this.appPkgInfoPath);\n\t\tawait fse.writeFile(path, data);\n\t}\n\n\t/**\n\t * Generate Info.plist DOM object.\n\t *\n\t * @returns Plist DOM.\n\t */\n\tprotected async _generateInfoPlist() {\n\t\tconst dom = await this.getInfoPlistDomOrDefault();\n\t\tconst existing = dom.value && dom.value.type === ValueDict.TYPE ?\n\t\t\t(dom.value as ValueDict) :\n\t\t\tnull;\n\t\tconst dict = dom.value = new ValueDict();\n\n\t\t// A little helper to set values only once.\n\t\tconst done = new Set<string>();\n\t\tconst val = (key: string, value: Value | null) => {\n\t\t\tif (done.has(key)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (value) {\n\t\t\t\tdict.value.set(key, value);\n\t\t\t}\n\t\t\tdone.add(key);\n\t\t};\n\n\t\t// Set all the values in the same order as the official packager.\n\t\tval(\n\t\t\t'CFBundleAllowMixedLocalizations',\n\t\t\tthis._getPlistCFBundleAllowMixedLocalizations()\n\t\t);\n\t\tval(\n\t\t\t'CFBundlePackageType',\n\t\t\tthis._getPlistCFBundlePackageType()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleInfoDictionaryVersion',\n\t\t\tthis._getPlistCFBundleInfoDictionaryVersion()\n\t\t);\n\t\tval(\n\t\t\t'LSMinimumSystemVersion',\n\t\t\tthis._getPlistLSMinimumSystemVersion()\n\t\t);\n\t\tval(\n\t\t\t'LSRequiresCarbon',\n\t\t\tthis._getPlistLSRequiresCarbon()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleIdentifier',\n\t\t\tthis._getPlistCFBundleIdentifier()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleGetInfoString',\n\t\t\tthis._getPlistCFBundleGetInfoString()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleShortVersionString',\n\t\t\tthis._getPlistCFBundleShortVersionString()\n\t\t);\n\t\tval(\n\t\t\t'NSHumanReadableCopyright',\n\t\t\tthis._getPlistNSHumanReadableCopyright()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleExecutable',\n\t\t\tthis._getPlistCFBundleExecutable()\n\t\t);\n\t\tval(\n\t\t\t'NSAppTransportSecurity',\n\t\t\tthis._getPlistNSAppTransportSecurity()\n\t\t);\n\t\tval(\n\t\t\t'NSHighResolutionCapable',\n\t\t\tthis._getPlistNSHighResolutionCapable()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleIconFile',\n\t\t\tthis._getPlistCFBundleIconFile()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleDocumentTypes',\n\t\t\tthis._getPlistCFBundleDocumentTypes()\n\t\t);\n\t\tval(\n\t\t\t'CFBundleLocalizations',\n\t\t\tthis._getPlistCFBundleLocalizations()\n\t\t);\n\n\t\t// If any existing values, copy the ones not already set.\n\t\tif (existing) {\n\t\t\tfor (const [key, value] of existing.value) {\n\t\t\t\tval(key, value);\n\t\t\t}\n\t\t}\n\n\t\treturn dom;\n\t}\n\n\t/**\n\t * Write out Info.plist file.\n\t */\n\tprotected async _writeInfoPlist() {\n\t\tconst dom = await this._generateInfoPlist();\n\t\tconst path = pathJoin(this.path, this.appInfoPlistPath);\n\t\tawait fse.writeFile(path, dom.toXml({\n\t\t\tindentRoot: true,\n\t\t\tindentString: ' '\n\t\t}));\n\t}\n\n\t/**\n\t * Calculate UID for icon, or null if none of required icons set.\n\t *\n\t * @param icon Icon info.\n\t * @returns UID string or null.\n\t */\n\tprotected _uidIcon(icon: Readonly<IIcon>) {\n\t\tconst paths = [\n\t\t\ticon.image16x16,\n\t\t\ticon.image32x32,\n\t\t\ticon.image48x48,\n\t\t\ticon.image128x128\n\t\t];\n\n\t\t// If none set, skip.\n\t\tlet has = false;\n\t\tfor (const p of paths) {\n\t\t\tif (p) {\n\t\t\t\thas = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Compute a unique identifier for the used icon set paths.\n\t\treturn has ?\n\t\t\tpaths.map(s => `${s ? s.length : 0}:${s || ''}`).join('|') :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Write icon matching official format.\n\t *\n\t * @param path Icon path.\n\t * @param icon Icon info.\n\t */\n\tprotected async _writeIconReference(path: string, icon: Readonly<IIcon>) {\n\t\t// Add icons in the same order official packager would use.\n\t\tconst icns = new IconIcns();\n\t\tfor (const [path, types] of [\n\t\t\t[icon.image16x16, ['is32', 's8mk']],\n\t\t\t[icon.image32x32, ['il32', 'l8mk']],\n\t\t\t[icon.image48x48, ['ih32', 'h8mk']],\n\t\t\t[icon.image128x128, ['it32', 't8mk']]\n\t\t] as [string | null, string[]][]) {\n\t\t\tif (!path) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst data = await fse.readFile(this._getResourcePath(path));\n\t\t\ticns.addFromPng(data, types);\n\t\t}\n\t\tawait fse.writeFile(path, icns.encode());\n\t}\n\n\t/**\n\t * Write icon using modern format.\n\t *\n\t * @param path Icon path.\n\t * @param icon Icon info.\n\t * @returns Icon written.\n\t */\n\tprotected async _writeIconModern(path: string, icon: Readonly<IIcon>) {\n\t\t// Add icons in the same order iconutil would.\n\t\tconst icns = new IconIcns();\n\t\tfor (const [path, type] of [\n\t\t\t// [icon.image64x64, 'ic12'],\n\t\t\t[icon.image128x128, 'ic07'],\n\t\t\t// [icon.image256x256, 'ic13'],\n\t\t\t// [icon.image256x256, 'ic08'],\n\t\t\t[icon.image16x16, 'ic04'],\n\t\t\t[icon.image512x512, 'ic14'],\n\t\t\t[icon.image512x512, 'ic09'],\n\t\t\t[icon.image32x32, 'ic05'],\n\t\t\t[icon.image1024x1024, 'ic10'],\n\t\t\t[icon.image32x32, 'ic11']\n\t\t] as [string | null, string][]) {\n\t\t\tif (!path) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst data = await fse.readFile(this._getResourcePath(path));\n\t\t\ticns.addFromPng(data, [type]);\n\t\t}\n\t\tawait fse.writeFile(path, icns.encode());\n\t}\n\n\t/**\n\t * Get path for a file type icon file.\n\t *\n\t * @param name File name.\n\t * @returns File path.\n\t */\n\tprotected _getFileTypeIconPath(name: string) {\n\t\treturn pathJoin('Contents', 'Resources', name);\n\t}\n\n\t/**\n\t * Get name for a file type icon file.\n\t *\n\t * @param index Unique index.\n\t * @returns File name.\n\t */\n\tprotected _getFileTypeIconName(index: number) {\n\t\treturn `DocumentIcon${index}.icns`;\n\t}\n}\n"],"file":"mac.mjs","sourceRoot":"../../../src"}