node-apk
Version:
A library to parse Android application manifest and signature
85 lines (65 loc) • 1.74 kB
text/typescript
/*
* Copyright (c) 2019 XdevL. All rights reserved.
*
* This work is licensed under the terms of the MIT license.
* For a copy, see <https://opensource.org/licenses/MIT>.
*/
import XmlElement from "./xml";
export class Receiver {
private readonly xml: XmlElement;
constructor(xml: XmlElement) {
this.xml = xml;
}
get raw(): XmlElement {
return this.xml;
}
get name(): string {
return this.xml.attributes.name;
}
get permission(): string {
return this.xml.attributes.permission;
}
get exported(): boolean {
return this.xml.attributes.exported;
}
}
export class Manifest {
private readonly xml: XmlElement;
constructor(xml: XmlElement) {
this.xml = xml.children.manifest[0];
}
get raw(): XmlElement {
return this.xml;
}
get versionCode(): number {
return Number(this.xml.attributes.versionCode);
}
get versionName(): string {
return this.xml.attributes.versionName;
}
get package(): string {
return this.xml.attributes.package;
}
get applicationLabel(): string | number {
return this.xml.children.application[0].attributes.label;
}
get applicationIcon(): number {
return this.xml.children.application[0].attributes.icon;
}
get permissions(): Iterable<string> {
const permissions = this.xml.children["uses-permission"] || [];
return (function*() {
for (const permission of permissions) {
yield permission.attributes.name;
}
})();
}
get receivers(): Iterable<Receiver> {
const receivers = this.xml.children.application[0].children.receiver || [];
return (function*() {
for (const receiver of receivers) {
yield new Receiver(receiver);
}
})();
}
}