UNPKG

@shockpkg/ria-packager

Version:

Package for creating Adobe AIR packages

1 lines 9.33 kB
{"version":3,"file":"adl.mjs","names":["join","pathJoin","PathType","createArchiveByFileStatOrThrow","pathRelativeBaseMatch","Packager","PackagerAdl","sdkPath","pubid","profile","screensize","nodebug","atlogin","constructor","path","mimetype","signed","appSdkPath","appResourcesPath","_generateOptionArguments","r","push","_open","Error","required","optional","_sdkComponents","components","map","paths","found","component","volumePath","sdk","nobrowse","read","entry","type","RESOURCE_FORK","action","dest","_getSdkPath","extract","info","s","JSON","stringify","parts","_getResourcePath"],"sources":["../../src/packager/adl.ts"],"sourcesContent":["import {join as pathJoin} from 'node:path';\n\nimport {\n\tPathType,\n\tcreateArchiveByFileStatOrThrow\n} from '@shockpkg/archive-files';\n\nimport {pathRelativeBaseMatch} from '../util.ts';\nimport {Packager} from '../packager.ts';\n\n/**\n * PackagerAdl object.\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\t/**\n\t * PackagerAdl constructor.\n\t *\n\t * @param path Output path.\n\t */\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 * Generate aruments.\n\t *\n\t * @returns Argument options.\n\t */\n\tprotected _generateOptionArguments() {\n\t\tconst {pubid, profile, screensize, nodebug, atlogin} = 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\tprotected async _open() {\n\t\tconst {sdkPath} = this;\n\t\tif (!sdkPath) {\n\t\t\tthrow new Error('SDK path not set');\n\t\t}\n\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\n\t\t/**\n\t\t * Search function.\n\t\t *\n\t\t * @param volumePath Volume path.\n\t\t * @returns A boolean or null.\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 createArchiveByFileStatOrThrow(sdkPath, {\n\t\t\tnobrowse: this.nobrowse\n\t\t});\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(`Failed to locate component in SDK: ${info}`);\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"],"mappings":"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","ignoreList":[]}