New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

app-metadata

Package Overview
Dependencies
Maintainers
4
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

app-metadata

This library provides functionality to extract IPA, APK and UWP packages.

  • 0.1.26
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
3
decreased by-40%
Maintainers
4
Weekly downloads
 
Created
Source

Description

This library helps you retrieve the most frequently extracted metadata and icons within iOS, Android and UWP applications.

Usage

import
import { Extract } from 'app-metadata';
usage
let results = await Extract.run(pathName);

This library relies on the standard set of file extensions to determine the type of package it is analyzing.

Results

The library will return the information most relevant for the supported platforms. For a better understanding of the details retrieved refer to the tables below.

iOS

Supported extension: .ipa
PropertyDescription
icon
iconName
languagesArray of language strings compiled from .lproj files
hasProvisioningShould always be true since IPA will contain a provisioning profile
appex_provisioning_profilesArray of all other provisioning profiles included in the metadata
  • from Plist (info.plist):
PropertyDescription
displayNameCFBundleDisplayName (The user-visible name of the bundle) or CFBundleName (short bundle name)
uniqueIdentifierCFBundleIdentifier (reverse DNS that identifies a project by concatenating the company identifier with the product name)
versionCFBundleShortVersionString (The release-version-number string for the bundle)
buildVersionCFBundleVersion (The build-version-number string for the bundle)
executableNameCFBundleExecutable (Name of the bundle’s executable file)
minimumOsVersionMinimumOSVersion or LSMinimumSystemVersion
deviceFamilyUIdeviceFamily
  • from Provisioning Profile (embedded.mobileprovision):
PropertyDescription
pathNamePath of the provisioning profile from inside of the IPA
mobileProvisionFileContentProvisioning profile content
teamIdentifierEntitlements["com.apple.developer.team-identifier"]
profileTypeIf data.ProvisionedDevices exists, "adhoc". Otherwise "enterprise"
expiredAtexpired_at or ExpirationDate
idNameAppIDName
nameName
UniqueDeviceIdentifierListProvisionedDevices
deviceFamilyPlatform

Android

Supported extension: .apk
  • from Manifest:
PropertyDescription
icon
iconName
uniqueIdentifierpackage
versionversionName
buildVersionversionCode
minimumOsVersionusesSdk.minSdkVersion
deviceFamily"android"

UWP

Supported extensions: .appx, appxupload or .zip
from Manifest:
PropertyDescription
deviceFamilyConstants.WINDOWS
displayNamePackage.Properties.DisplayName
iconFullPathPackage.Properties.Logo
uniqueIdentifierPackage.Identity.Name
buildVersionPackage.Identity.Version
minimumOsVersionPackage.Prerequisites.OSMinVersion or Package.Dependencies.TargetDeviceFamily.MinVersion
executableNamePackage.Applications.Application.Executable
languagesBuilt from Package.Resources.Resource.Language

UWP Bundles

Supported extensions: .appxbundle, appxupload or .zip

For .appxbundle app packages, the manifest is checked for the correct name of the appx subpackage. If it is found, the metadata is parsed directly from there, otherwise we scavenge for as much as we can get from the appxbundle manifest and metadata

PropertyDescription
icon
iconName
languagesBuilt from .appx language files. Example- VLC_WinRT.WindowsPhone_1.8.4.0_language-en.appx
from Manifest:
PropertyDescription
deviceFamilywindows
uniqueIdentifierBundle.Identity.Name
buildVersionBundle.Identity.Version
minimumOsVersionBundle.Prerequisites.OSMinVersion or Bundle.Dependencies.TargetDeviceFamily

The assumption for zip and appxUpload is that the unziped folders will have the appx or appxbundle which we will then process as we do normally

Prerequisites

  • Install node version 7.6.0

  • Install project dependencies (based on <REPO ROOT>/package.json)

    npm install
    
  • Install typescript via npm (npm will be installed with node)

    npm install -g typescript@2.3.4
    
  • Install gulp via npm

    npm install -g gulp@3.9
    
  • Upgrade npm to version 3.3.x

    npm install -g npm@5
    
  • Install the IDE

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

  • Ensure that it builds
    • Via gulp
      cd <REPO ROOT>
      gulp build
      
  • Ensure that tests pass
    • Via gulp
      cd <REPO ROOT>
      gulp test
      

Developing on OS X

  • Visual Studio Code

    • Point Visual Studio Code to the repo root
    • Install project dependencies
      • via npm on the command line
        cd <REPO ROOT>
        npm install 
        
    • Build (Cmd-Shift-B)
    • Run (F5)
    • Testing
      • via Visual Studio Code (Cmd-Shift-T)
      • via gulp on the command line
        cd <REPO ROOT>
        gulp test
        

FAQs

Package last updated on 24 Jan 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc