npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@akiojin/keychain

v1.0.1

Published

This package manipulates the keychain using the security command.

Readme

keychain

This package uses the security command to manipulate the keychain.

Usage

Import

import { Keychain, KeychainFile } from '@akiojin/keychain'

Keychain

const keychain = Keychain.GenerateKeychainPath('test')

await Keychain.CreateKeychain(keychain, '<Password>')
await Keychain.UnlockKeychain(keychain, '<Password>')
await Keychain.SetKeychainTimeout(keychain, 21600)
await Keychain.SetDefaultKeychain(keychain)
await Keychain.SetLoginKeychain(keychain)
await Keychain.SetListKeychain(keychain)
await Keychain.DeleteKeychain(keychain)

await Keychain.SetDefaultKeychain(Keychain.GetDefaultLoginKeychainPath())

KeychainFile

const keychainPath = await Keychain.CreateKeychain('<Keychain name or path>', '<Password>')
const keychain = new KeychainFile(keychainPath)
keychain.SetPassword('<Password>')
keychain.Lock()
keychain.Unlock()
keychain.SetDefault()
const keychain = await KeychainFile.Open('<Keychain name or path>')
keychain.Lock()
keychain.Unlock('<Password>')
keychain.SetDefault()

Reference

class Keychain

static GenerateKeychainPath(name: string): string

Description

Returns the keychain path given the keychain name. This method does not create the keychain, only generates the path.

Arguments

| Name | Type | Description | | ------ | -------- | ------------------ | | name | string | The keychain name. |

Return

| Type | Description | | -------- | ------------- | | string | keychain path |

static GetDefaultLoginKeychainPath(): string

Description

Returns the path to login.keychain-db, which exists by default.

Return

| Type | Description | | -------- | ------------- | | string | keychain path |

static CreateKeychain(keychain: string, password: string): Promise<number>

Description

Create a new keychain and set a password. Immediately after creation, the keychain is unlocked.

Arguments

| Name | Type | Description | | ---------- | -------- | --------------------------------------------------------------------------------------------------------- | | keychain | string | Path of the keychain. If only the keychain name is specified, it will be placed in ~/Library/Keychains. | | password | string | Keychain password |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static ImportCertificateFromFile(keychain: string, certificate: string, passphrase: string): Promise<number>

Description

Import the certificate into the specified keychain. The keychain must be unlocked.

Arguments

| Name | Type | Description | | ------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. | | certificate | string | Certificate Path | | passphrase | string | Certificate passphrase |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static ChangeKeychainPassword(keychain: string, oldPassword: string, newPassword: string): Promise<number>

Description

Change the password set for the keychain.

Arguments

| Name | Type | Description | | ------------- | -------- | --------------------------------------------------------------------------------------------------------- | | keychain | string | Path of the keychain. If only the keychain name is specified, it will be placed in ~/Library/Keychains. | | oldPassword | string | Old password | | newPassword | string | New password |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static LockKeychain(keychain?: string): Promise<number>

Description

Lock keychain. If keychain is omitted, locks default keychains.

Arguments

| Name | Type | Description | | ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain? | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static LockKeychainAll(): Promise<number>

Description

Locks all keychains.

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static UnlockKeychain(keychain: string, password: string): Promise<number>

static UnlockKeychain(password: string): Promise<number>

static UnlockKeychain(keychain?: string, password?: string): Promise<number>

Description

Unlock the keychain. Unlock the default keychain if the keyholder is omitted.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. | | password | string | Keychain password |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static SetKeychainTimeout(keychain: string, seconds: number)

Description

Sets the number of timeout seconds before the keychain locks without operation. This setting also sets the lock at sleep at the same time.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. | | seconds | number | Timeout in seconds (omitting this option specifies "no timeout") |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static DeleteKeychain(keychain: string): Promise<number>

Description

Deletes the specified keychain.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static async GetDefaultKeychain(): Promise<string[]>

Description

Returns the default keychain.

Return

| Type | Description | | ---------- | ----------------------- | | string[] | Array of keychain paths |

static SetDefaultKeychain(keychain: string): Promise<number>

Description

Sets the specified keychain as the default keychain.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static ShowDefaultKeychain(): Promise<number>

Description

Display the default keychain on the console.

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static SetLoginKeychain(keychain: string): Promise<number>

Description

Set the specified keychain as the login keychain.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static ShowLoginKeychain(): Promise<number>

Description

Display the login keychain on the console.

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static SetListKeychain(keychain: string): Promise<number>

Description

Set in the key chain list. This method overrides any other keychain list that may have been set.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static SetListKeychains(keychains: string[]): Promise<number>

Description

Set in the key chain list. This method overrides any other keychain list that may have been set.

Arguments

| Name | Type | Description | | ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychains | string[] | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static AllowAccessForAppleTools(keychain: string, password: string): Promise<number>

Description

Set permissions for Apple tools for the keychain. Since this method is an access permission to the signature, the signature must have been imported in advance.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. | | password | string | Keychain password |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static FindGenericPassword(service: string): Promise<number>

Description

Retrieves passwords for specified services and displays them in the console.

Arguments

| Name | Type | Description | | --------- | -------- | ------------------ | | service | string | Services to search |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |

static ShowCodeSigning(keychain: string): Promise<number>

Description

Displays a list of certificates imported into the specified keychain.

Arguments

| Name | Type | Description | | ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | | keychain | string | Path of the keychain. If no path is specified and only the keychain name is given, it is searched from ~/Library/Keychains/. |

Return

| Type | Description | | -------- | ----------- | | number | Exit code |