diff --git a/package.json b/package.json index 80f90cc..de4e60f 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ }, "license": "Apache-2.0", "main": "./index", + "typings": "./types/index.d.ts", "repository": { "type": "git", "url": "https://github.com/openstf/adbkit-apkreader.git" diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..f0d53f1 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,149 @@ +// Type definitions for adbkit-apkreader 3.1.0 +/// + +import fs = require('fs'); + +type activity = { + name: string, + label?: string|undefined, + theme?: string|undefined, + configChanges?: number|undefined, + screenOrientation?: number|undefined, + launchMode?: number|undefined, + windowSoftInputMode?: number|undefined, + hardwareAccelerated?: boolean|undefined, + exported?: boolean|undefined, + excludeFromRecents?: boolean|undefined, + intentFilters?: Array<{ + actions: {name: string}, + categories: {name: string}, + data: Array, + [key: string]: any, + }>|undefined, + metaData?: Array<{ + name: string, + value: boolean, + }>|undefined, + [key: string]: any, +} + +type manifest = { + versionCode: number, + versionName: string, + compileSdkVersion?: number|undefined, + compileSdkVersionCodename?: string|undefined, + installLocation?: number|undefined, + package: string, + platformBuildVersionCode?: number|undefined, + platformBuildVersionName?: string|undefined, + usesPermissions: Array<{name: string, maxSdkVersion?: number|undefined}>, + permissions: Array<{name: string, protectionLevel: number}>, + permissionTrees: Array, + permissionGroups: Array, + instrumentation: any|null, + usesSdk: { minSdkVersion: number, targetSdkVersion: number }, + usesConfiguration: any|null, + usesFeatures: Array<{name?: string|undefined, required?: boolean|undefined, glEsVersion?: number|undefined}>, + supportsScreens: { + anyDensity?: boolean|undefined, + smallScreens?: boolean|undefined, + normalScreens?: boolean|undefined, + largeScreens?: boolean|undefined, + xlargeScreens?: boolean|undefined, + [key: string]: boolean|undefined, + } | null, + compatibleScreens: Array<{ screenSize: number, screenDensity: number }>, + supportsGlTextures: Array, + application: { + theme?: string|undefined, + label?: string|undefined, + icon?: string|undefined, + roundIcon?: string|undefined, + name?: string|undefined, + banner?: string|undefined, + screenOrientation?: number|undefined, + debuggable?: boolean|undefined, + allowBackup?: boolean|undefined, + usesCleartextTraffic?: boolean|undefined, + supportsRtl?: boolean|undefined, + isGame?: boolean|undefined, + activities: activity[], + activityAliases: Array, + launcherActivities: activity[], + services: Array<{ + name: string, + enabled?: boolean|string|undefined, + exported?: boolean|undefined, + permission?: string|undefined, + intentFilters?: Array<{ + actions: {name: string}, + categories: {name: string}, + data: Array, + [key: string]: any, + }>|undefined, + metaData?: Array, + [key: string]: any, + }>|undefined, + receivers: Array<{ + name: string, + enabled?: boolean|string|undefined, + exported?: boolean|undefined, + permission?: string|undefined, + intentFilters?: Array<{ + actions: {name: string}, + categories: {name: string}, + data: Array, + [key: string]: any, + }>|undefined, + metaData?: Array, + [key: string]: any, + }>|undefined, + providers: Array<{ + name: string, + enabled?: boolean|string|undefined, + exported?: boolean|undefined, + authorities?: string|undefined, + initOrder?: number|undefined, + grantUriPermissions?: Array|undefined, + metaData?: Array|undefined, + pathPermissions?: Array|undefined, + [key: string]: any, + }>, + usesLibraries: Array<{ name: string, required: boolean }>, + [key: string]: any, + }, +} + +type attribute = { + namespaceURI: string|null, + nodeType: number, + nodeName: string, + name: string, + value: string|null, + typedValue: { + valeu: string|number, + type: string, + rawType: number, + } +} + +type xmlNode = { + namespaceURI: string|null, + nodeType: number, + nodeName: string, + attributes: Array, + childNodes: Array, +} + + +declare class ApkReader { + public static MANIFEST(): 'AndroidManifest.xml'; + public static open(apk: string): Promise; + + public readContent(path: string): Promise; + public readManifest(options?: {debug: boolean}): Promise; + public readXml(path: string, options?: {debug: boolean}): Promise; + public usingFileStream(path: string, action: (stream: fs.ReadStream) => Promise ): Promise; +} + +export = ApkReader; \ No newline at end of file