{"version":3,"sources":["packager/adl.ts"],"names":["join","pathJoin","PathType","pathRelativeBaseMatch","Packager","PackagerAdl","constructor","path","mimetype","signed","appSdkPath","appResourcesPath","_openSdk","sdkPath","Error","archive","_openArchive","_generateOptionArguments","pubid","profile","screensize","nodebug","atlogin","r","push","_open","applicationData","required","optional","_sdkComponents","components","map","paths","found","component","volumePath","sdk","read","entry","type","RESOURCE_FORK","action","dest","_getSdkPath","extract","info","s","JSON","stringify","parts","_getResourcePath"],"mappings":"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","sourcesContent":["import {\n\tjoin as pathJoin\n} from 'path';\n\nimport {\n\tPathType\n} from '@shockpkg/archive-files';\n\nimport {\n\tpathRelativeBaseMatch\n} from '../util';\nimport {\n\tPackager\n} from '../packager';\n\n/**\n * PackagerAdl constructor.\n *\n * @param path Output path.\n */\nexport abstract class PackagerAdl extends Packager {\n\t/**\n\t * Path to the SDK, an archive or directory.\n\t */\n\tpublic sdkPath: string | null = null;\n\n\t/**\n\t * Application pubid.\n\t */\n\tpublic pubid: string | null = null;\n\n\t/**\n\t * Application profile.\n\t */\n\tpublic profile: string | null = null;\n\n\t/**\n\t * Application screensize.\n\t */\n\tpublic screensize: string | null = null;\n\n\t/**\n\t * Application nodebug.\n\t */\n\tpublic nodebug = false;\n\n\t/**\n\t * Application atlogin.\n\t */\n\tpublic atlogin = false;\n\n\tconstructor(path: string) {\n\t\tsuper(path);\n\t}\n\n\t/**\n\t * Package mimetype.\n\t *\n\t * @returns Mimetype string.\n\t */\n\tpublic get mimetype() {\n\t\treturn 'application/vnd.adobe.air-application-installer-package+zip';\n\t}\n\n\t/**\n\t * Package signed.\n\t *\n\t * @returns Boolean for if package is signed or not.\n\t */\n\tpublic get signed() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Get app sdk path.\n\t *\n\t * @returns Resources path.\n\t */\n\tpublic get appSdkPath() {\n\t\treturn 'sdk';\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 'app';\n\t}\n\n\t/**\n\t * Get app run path.\n\t *\n\t * @returns Resources path.\n\t */\n\tpublic abstract get appRunPath(): string;\n\n\t/**\n\t * Open the configured SDK.\n\t *\n\t * @returns Archive instance.\n\t */\n\tprotected async _openSdk() {\n\t\tconst {sdkPath} = this;\n\t\tif (!sdkPath) {\n\t\t\tthrow new Error('SDK path not set');\n\t\t}\n\t\tconst archive = await this._openArchive(sdkPath);\n\t\treturn archive;\n\t}\n\n\t/**\n\t * Generate aruments.\n\t *\n\t * @returns Argument options.\n\t */\n\tprotected _generateOptionArguments() {\n\t\tconst {\n\t\t\tpubid,\n\t\t\tprofile,\n\t\t\tscreensize,\n\t\t\tnodebug,\n\t\t\tatlogin\n\t\t} = this;\n\t\tconst r = [];\n\t\tif (pubid !== null) {\n\t\t\tr.push('-pubid', pubid);\n\t\t}\n\t\tif (profile !== null) {\n\t\t\tr.push('-profile', profile);\n\t\t}\n\t\tif (screensize !== null) {\n\t\t\tr.push('-screensize', screensize);\n\t\t}\n\t\tif (nodebug) {\n\t\t\tr.push('-nodebug');\n\t\t}\n\t\tif (atlogin) {\n\t\t\tr.push('-atlogin');\n\t\t}\n\t\treturn r;\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\tconst {required, optional} = this._sdkComponents();\n\n\t\tconst components = [\n\t\t\t...required.map(paths => ({\n\t\t\t\tpaths,\n\t\t\t\trequired: true,\n\t\t\t\tfound: false\n\t\t\t})),\n\t\t\t...optional.map(paths => ({\n\t\t\t\tpaths,\n\t\t\t\trequired: false,\n\t\t\t\tfound: false\n\t\t\t}))\n\t\t];\n\t\tconst component = (volumePath: string) => {\n\t\t\t// Default to not searching any subpaths.\n\t\t\tlet r: boolean | null = false;\n\t\t\tfor (const component of components) {\n\t\t\t\tfor (const path of component.paths) {\n\t\t\t\t\t// If extracting, mark found, return true.\n\t\t\t\t\tif (pathRelativeBaseMatch(volumePath, path, true)) {\n\t\t\t\t\t\tcomponent.found = true;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If a parent path, remember to search down.\n\t\t\t\t\tif (pathRelativeBaseMatch(path, volumePath, true)) {\n\t\t\t\t\t\tr = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn r;\n\t\t};\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\t\t\tconst action = component(path);\n\n\t\t\tif (action === true) {\n\t\t\t\tconst dest = this._getSdkPath(path);\n\t\t\t\tawait entry.extract(dest);\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 action === null ? true : null;\n\t\t});\n\n\t\t// Check that everything necessary was extracted.\n\t\tfor (const {found, required, paths} of components) {\n\t\t\tif (found || !required) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst info = paths.map(s => JSON.stringify(s)).join(' | ');\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to locate component in SDK: ${info}`\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 _getSdkPath(...parts: string[]) {\n\t\treturn pathJoin(this.path, this.appSdkPath, ...parts);\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 * The SDK components to be copied.\n\t *\n\t * @returns Required and optional components.\n\t */\n\tprotected abstract _sdkComponents(): {\n\t\trequired: string[][];\n\t\toptional: string[][];\n\t};\n}\n"],"file":"adl.mjs","sourceRoot":"../../src"}