UNPKG

@shockpkg/ria-packager

Version:

Package for creating Adobe AIR packages

1 lines 21.6 kB
{"version":3,"sources":["packager/bundle.ts"],"names":["fse","xmldom","Packager","childTags","el","name","childNodes","r","i","length","child","tagName","push","tagPath","add","e","parentNode","reverse","join","PackagerBundle","constructor","path","mimetype","signed","_openSdk","sdkPath","Error","archive","_openArchive","_applicationInfoInit","applicationData","doc","DOMParser","parseFromString","toString","root","documentElement","childTag","tags","childTagReq","tag","childTagValue","textContent","childTagReqValue","childTagReqValued","readIcons","image16x16","image29x29","image32x32","image36x36","image48x48","image50x50","image57x57","image58x58","image72x72","image96x96","image100x100","image114x114","image128x128","image144x144","image512x512","image732x412","image1024x1024","_applicationInfoId","_applicationInfoVersionNumber","_applicationInfoFilename","_applicationInfoCopyright","iconTag","_applicationInfoIcon","fileTypesTag","fileTypes","Map","fileTypeTag","extension","has","contentType","description","icon","set","_applicationInfoFileTypes","_applicationInfoSupportedLanguages","initialWindowTag","_applicationInfoRequestedDisplayResolution","architectureTags","getElementsByTagName","_applicationInfoArchitecture","_getId","_getVersionNumber","_getFilename","_getCopyright","_getIcon","_getFileTypes","_applicationInfoClear","_dataFromBufferOrFile","data","file","readFile","_dataFromValueOrFile","newline","encoding","str","Array","isArray","Buffer","from"],"mappings":"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","sourcesContent":["import {TranscodeEncoding} from 'buffer';\n\nimport fse from 'fs-extra';\nimport xmldom from 'xmldom';\n\nimport {Packager} from '../packager';\n\nconst childTags = (el: Readonly<Element>, name: String | null = null) => {\n\tconst {childNodes} = el;\n\tconst r: Element[] = [];\n\t// eslint-disable-next-line\n\tfor (let i = 0; i < childNodes.length; i++) {\n\t\tconst child = childNodes[i] as Element;\n\t\tconst {tagName} = child;\n\t\tif (!tagName || (name && tagName !== name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tr.push(child);\n\t}\n\treturn r;\n};\n\nconst tagPath = (el: Readonly<Element>, add: string | null = null) => {\n\tconst r = add === null ? [el.tagName] : [add, el.tagName];\n\tfor (let e = el.parentNode; e; e = e.parentNode) {\n\t\tconst {tagName} = (e as Element);\n\t\tif (!tagName) {\n\t\t\tbreak;\n\t\t}\n\t\tr.push(tagName);\n\t}\n\treturn r.reverse().join('.');\n};\n\nexport interface IIcon {\n\timage16x16: string | null;\n\timage29x29: string | null;\n\timage32x32: string | null;\n\timage36x36: string | null;\n\timage48x48: string | null;\n\timage50x50: string | null;\n\timage57x57: string | null;\n\timage58x58: string | null;\n\timage72x72: string | null;\n\timage96x96: string | null;\n\timage100x100: string | null;\n\timage114x114: string | null;\n\timage128x128: string | null;\n\timage144x144: string | null;\n\timage512x512: string | null;\n\timage732x412: string | null;\n\timage1024x1024: string | null;\n}\n\nexport interface IFileTypeInfo {\n\tname: string;\n\tcontentType: string;\n\tdescription: string | null;\n\ticon: IIcon | null;\n}\n\n/**\n * PackagerBundle constructor.\n *\n * @param path Output path.\n */\nexport abstract class PackagerBundle 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 info from the id tag.\n\t */\n\tprotected _applicationInfoId: string | null = null;\n\n\t/**\n\t * Application info from the versionNumber tag.\n\t */\n\tprotected _applicationInfoVersionNumber: string | null = null;\n\n\t/**\n\t * Application info from the filename tag.\n\t */\n\tprotected _applicationInfoFilename: string | null = null;\n\n\t/**\n\t * Application info from the copyright tag.\n\t */\n\tprotected _applicationInfoCopyright: string | null = null;\n\n\t/**\n\t * Application info from the icon tag.\n\t */\n\tprotected _applicationInfoIcon: Readonly<IIcon> | null = null;\n\n\t/**\n\t * Application info from the fileTypes tag.\n\t */\n\tprotected _applicationInfoFileTypes: Map<string, IFileTypeInfo> | null = (\n\t\tnull\n\t);\n\n\t/**\n\t * Application info from the supportedLanguages tag.\n\t */\n\tprotected _applicationInfoSupportedLanguages: string | null = null;\n\n\t/**\n\t * Application info from the initialWindow.requestedDisplayResolution tag.\n\t */\n\tprotected _applicationInfoRequestedDisplayResolution: string | null = null;\n\n\t/**\n\t * Application info from the architecture tag.\n\t */\n\tprotected _applicationInfoArchitecture: string | null = null;\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 true;\n\t}\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 * Init application info from descriptor data.\n\t *\n\t * @param applicationData The application descriptor data.\n\t */\n\tprotected _applicationInfoInit(applicationData: Readonly<Buffer>) {\n\t\tconst doc = (new xmldom.DOMParser()).parseFromString(\n\t\t\tapplicationData.toString('utf8'),\n\t\t\t'text/xml'\n\t\t);\n\t\tconst root = doc.documentElement;\n\n\t\tconst childTag = (el: Readonly<Element>, name: string) => {\n\t\t\tconst tags = childTags(el, name);\n\t\t\tif (tags.length > 2) {\n\t\t\t\tconst path = tagPath(el, name);\n\t\t\t\tthrow new Error(`Application info allows 1 ${path} tag`);\n\t\t\t}\n\t\t\treturn tags.length ? tags[0] : null;\n\t\t};\n\t\tconst childTagReq = (el: Readonly<Element>, name: string) => {\n\t\t\tconst tag = childTag(el, name);\n\t\t\tif (!tag) {\n\t\t\t\tconst path = tagPath(el, name);\n\t\t\t\tthrow new Error(`Application info requires 1 ${path} tag`);\n\t\t\t}\n\t\t\treturn tag;\n\t\t};\n\t\tconst childTagValue = (el: Readonly<Element>, name: string) => {\n\t\t\tconst tag = childTag(el, name);\n\t\t\treturn tag ? tag.textContent || '' : null;\n\t\t};\n\t\tconst childTagReqValue = (el: Readonly<Element>, name: string) => {\n\t\t\tconst {textContent} = childTagReq(el, name);\n\t\t\treturn textContent || '';\n\t\t};\n\t\tconst childTagReqValued = (el: Readonly<Element>, name: string) => {\n\t\t\tconst r = childTagReqValue(el, name);\n\t\t\tif (!r) {\n\t\t\t\tconst path = tagPath(el, name);\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Application info requires non-empty ${path} tag`\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn r;\n\t\t};\n\t\tconst readIcons = (el: Readonly<Element>): IIcon => ({\n\t\t\timage16x16: childTagValue(el, 'image16x16'),\n\t\t\timage29x29: childTagValue(el, 'image29x29'),\n\t\t\timage32x32: childTagValue(el, 'image32x32'),\n\t\t\timage36x36: childTagValue(el, 'image36x36'),\n\t\t\timage48x48: childTagValue(el, 'image48x48'),\n\t\t\timage50x50: childTagValue(el, 'image50x50'),\n\t\t\timage57x57: childTagValue(el, 'image57x57'),\n\t\t\timage58x58: childTagValue(el, 'image58x58'),\n\t\t\timage72x72: childTagValue(el, 'image72x72'),\n\t\t\timage96x96: childTagValue(el, 'image96x96'),\n\t\t\timage100x100: childTagValue(el, 'image100x100'),\n\t\t\timage114x114: childTagValue(el, 'image114x114'),\n\t\t\timage128x128: childTagValue(el, 'image128x128'),\n\t\t\timage144x144: childTagValue(el, 'image144x144'),\n\t\t\timage512x512: childTagValue(el, 'image512x512'),\n\t\t\timage732x412: childTagValue(el, 'image732x412'),\n\t\t\timage1024x1024: childTagValue(el, 'image1024x1024')\n\t\t});\n\n\t\t// The application.id tag.\n\t\tthis._applicationInfoId = childTagReqValued(root, 'id');\n\n\t\t// The application.versionNumber tag.\n\t\tthis._applicationInfoVersionNumber =\n\t\t\tchildTagReqValued(root, 'versionNumber');\n\n\t\t// The application.filename tag.\n\t\tthis._applicationInfoFilename = childTagReqValued(root, 'filename');\n\n\t\t// The application.copyright tag.\n\t\tthis._applicationInfoCopyright = childTagValue(root, 'copyright');\n\n\t\tconst iconTag = childTag(root, 'icon');\n\t\tthis._applicationInfoIcon = iconTag ? readIcons(iconTag) : null;\n\n\t\t// The application.fileTypes tag.\n\t\tconst fileTypesTag = childTag(root, 'fileTypes');\n\t\tif (fileTypesTag) {\n\t\t\tconst fileTypes = new Map<string, IFileTypeInfo>();\n\t\t\tfor (const fileTypeTag of childTags(fileTypesTag, 'fileType')) {\n\t\t\t\t// The extension is the unique key.\n\t\t\t\tconst extension = childTagReqValued(fileTypeTag, 'extension');\n\t\t\t\tif (fileTypes.has(extension)) {\n\t\t\t\t\tconst path = tagPath(fileTypeTag, 'extension');\n\t\t\t\t\tthrow new Error(`Duplicate ${path}: ${extension}`);\n\t\t\t\t}\n\t\t\t\tconst name = childTagReqValued(fileTypeTag, 'name');\n\t\t\t\tconst contentType =\n\t\t\t\t\tchildTagReqValued(fileTypeTag, 'contentType');\n\t\t\t\tconst description = childTagValue(fileTypeTag, 'description');\n\n\t\t\t\tconst iconTag = childTag(fileTypeTag, 'icon');\n\t\t\t\tconst icon = iconTag ? readIcons(iconTag) : null;\n\n\t\t\t\tfileTypes.set(extension, {\n\t\t\t\t\tname,\n\t\t\t\t\tcontentType,\n\t\t\t\t\tdescription,\n\t\t\t\t\ticon\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis._applicationInfoFileTypes = fileTypes;\n\t\t}\n\t\telse {\n\t\t\tthis._applicationInfoFileTypes = null;\n\t\t}\n\n\t\t// The application.supportedLanguages tag.\n\t\tthis._applicationInfoSupportedLanguages =\n\t\t\tchildTagValue(root, 'supportedLanguages');\n\n\t\t// The application.initialWindow.requestedDisplayResolution tag.\n\t\tconst initialWindowTag = childTag(root, 'initialWindow');\n\t\tthis._applicationInfoRequestedDisplayResolution = initialWindowTag ?\n\t\t\tchildTagValue(initialWindowTag, 'requestedDisplayResolution') :\n\t\t\tnull;\n\n\t\t// The application.architecture tag (can be anywhere, use first).\n\t\tconst architectureTags = doc.getElementsByTagName('architecture');\n\t\tthis._applicationInfoArchitecture = architectureTags.length ?\n\t\t\tarchitectureTags[0].textContent || null :\n\t\t\tnull;\n\t}\n\n\t/**\n\t * Get the application ID.\n\t *\n\t * @returns The ID.\n\t */\n\tprotected _getId() {\n\t\tconst r = this._applicationInfoId;\n\t\tif (r === null) {\n\t\t\tthrow new Error('Internal error');\n\t\t}\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get the application version number.\n\t *\n\t * @returns The version number.\n\t */\n\tprotected _getVersionNumber() {\n\t\tconst r = this._applicationInfoVersionNumber;\n\t\tif (r === null) {\n\t\t\tthrow new Error('Internal error');\n\t\t}\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get the application filename.\n\t *\n\t * @returns The filename.\n\t */\n\tprotected _getFilename() {\n\t\tconst r = this._applicationInfoFilename;\n\t\tif (r === null) {\n\t\t\tthrow new Error('Internal error');\n\t\t}\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get the application copyright if present.\n\t *\n\t * @returns Copyright string or null.\n\t */\n\tprotected _getCopyright() {\n\t\treturn this._applicationInfoCopyright;\n\t}\n\n\t/**\n\t * Get the application icon.\n\t *\n\t * @returns Application icon.\n\t */\n\tprotected _getIcon() {\n\t\treturn this._applicationInfoIcon;\n\t}\n\n\t/**\n\t * The the application file types if present.\n\t *\n\t * @returns File types map or null.\n\t */\n\tprotected _getFileTypes() {\n\t\treturn this._applicationInfoFileTypes;\n\t}\n\n\t/**\n\t * Clear application info from descriptor data.\n\t */\n\tprotected _applicationInfoClear() {\n\t\tthis._applicationInfoId = null;\n\t\tthis._applicationInfoVersionNumber = null;\n\t\tthis._applicationInfoFilename = null;\n\t\tthis._applicationInfoCopyright = null;\n\t\tthis._applicationInfoIcon = null;\n\t\tthis._applicationInfoFileTypes = null;\n\t\tthis._applicationInfoSupportedLanguages = null;\n\t\tthis._applicationInfoRequestedDisplayResolution = null;\n\t\tthis._applicationInfoArchitecture = null;\n\t}\n\n\t/**\n\t * Get data from buffer or file.\n\t *\n\t * @param data Data buffer.\n\t * @param file File path.\n\t * @returns Data buffer.\n\t */\n\tprotected async _dataFromBufferOrFile(\n\t\tdata: Readonly<Buffer> | null,\n\t\tfile: string | null\n\t) {\n\t\tif (data) {\n\t\t\treturn data;\n\t\t}\n\t\tif (file) {\n\t\t\treturn fse.readFile(file);\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * Get data from value or file.\n\t *\n\t * @param data Data value.\n\t * @param file File path.\n\t * @param newline Newline string.\n\t * @param encoding String encoding.\n\t * @returns Data buffer.\n\t */\n\tprotected async _dataFromValueOrFile(\n\t\tdata: Readonly<string[]> | string | Readonly<Buffer> | null,\n\t\tfile: string | null,\n\t\tnewline: string | null,\n\t\tencoding: TranscodeEncoding | null\n\t) {\n\t\tlet str: string | null = null;\n\t\tif (typeof data === 'string') {\n\t\t\tstr = data;\n\t\t}\n\t\telse if (Array.isArray(data as string[])) {\n\t\t\tif (newline === null) {\n\t\t\t\tthrow new Error('New line delimiter required');\n\t\t\t}\n\t\t\tstr = (data as string[]).join(newline);\n\t\t}\n\t\telse {\n\t\t\treturn this._dataFromBufferOrFile(data as Buffer, file);\n\t\t}\n\t\tif (!encoding) {\n\t\t\tthrow new Error('String data encoding required');\n\t\t}\n\t\treturn Buffer.from(str, encoding);\n\t}\n}\n"],"file":"bundle.mjs","sourceRoot":"../../src"}