]> git.codecow.com Git - libnemo.git/commitdiff
Use TypeScript Record convention for keyed objects.
authorChris Duncan <chris@zoso.dev>
Tue, 31 Mar 2026 10:29:06 +0000 (03:29 -0700)
committerChris Duncan <chris@zoso.dev>
Tue, 31 Mar 2026 10:29:06 +0000 (03:29 -0700)
src/lib/account/index.ts
src/lib/block.ts
src/lib/constants.ts
src/lib/crypto/wallet-aes-gcm.ts
src/lib/ledger.ts
src/lib/rpc.ts
src/lib/vault/passkey.ts
src/lib/vault/vault-worker.ts
src/lib/wallet/config.ts
src/lib/wallet/verify.ts

index cedc7539e36a8ff85263fddb1497db313100391f..969d3bfad3f0376ad933de57e17803862474ad21 100644 (file)
@@ -370,7 +370,7 @@ export class Account {
 \r
        static #isKeyPair (input: unknown): input is KeyPair {\r
                if (typeof input === 'object') {\r
-                       const obj = input as { [key: string]: unknown }\r
+                       const obj = input as Record<string, unknown>\r
                        if ('index' in obj && typeof obj.index === 'number') {\r
                                return true\r
                        }\r
index b919a0065fc7129697ae17f58ff2904b388228ba..d2fb261499b03799708beae5b5cd4ff97f88a56b 100644 (file)
@@ -25,7 +25,7 @@ export class Block {
                if (typeof block !== 'object') {
                        throw new TypeError('Invalid block')
                }
-               const b = block as { [key: string]: unknown }
+               const b = block as Record<string, unknown>
                if (b.account == null) {
                        throw new Error('Account missing')
                }
@@ -157,7 +157,7 @@ export class Block {
        *
        * @returns {string} JSON representation of the block
        */
-       toJSON (): { [key: string]: string } {
+       toJSON (): Record<string, string> {
                try {
                        if (this.link == null) {
                                throw new Error('Link is required')
index 7cbe29ad18f0a13580785710ce09a689b3be785e..3358245c9640864c89e268659985d7388719f5fa 100644 (file)
@@ -23,7 +23,7 @@ export const DIFFICULTY_RECEIVE = 0xfffffe0000000000n
 export const DIFFICULTY_SEND = 0xfffffff800000000n
 export const XNO = 'ΣΎ'
 
-export const UNITS: { [key: string]: number } = Object.freeze({
+export const UNITS: Record<string, number> = Object.freeze({
        RAW: 0,
        RAI: 24,
        NYANO: 24,
index 0880fc9629b65f448405cff98fd9bab671b4709d..b0825d78f539f7a4a40b392c2fee459089a1a93f 100644 (file)
@@ -6,7 +6,7 @@
 export class WalletAesGcm {
        static encoder: TextEncoder = new TextEncoder()
 
-       static decrypt (type: string, key: CryptoKey, iv: ArrayBuffer, encrypted: ArrayBuffer): Promise<{ [key: string]: ArrayBuffer }> {
+       static decrypt (type: string, key: CryptoKey, iv: ArrayBuffer, encrypted: ArrayBuffer): Promise<Record<string, ArrayBuffer>> {
                const seedLength = type === 'BLAKE2b' ? 32 : 64
                const additionalData = this.encoder.encode(type)
                return crypto.subtle
@@ -19,7 +19,7 @@ export class WalletAesGcm {
                        })
        }
 
-       static encrypt (type: string, key: CryptoKey, seed: ArrayBuffer, mnemonic?: ArrayBuffer): Promise<{ [key: string]: ArrayBuffer }> {
+       static encrypt (type: string, key: CryptoKey, seed: ArrayBuffer, mnemonic?: ArrayBuffer): Promise<Record<string, ArrayBuffer>> {
                if (type == null) {
                        throw new Error('Wallet type missing')
                }
index b93ef4be33261fc925506b44305d7553b720a22f..13ceaea6fa0cdee3db82155ca6179b279fe0af90 100644 (file)
@@ -48,7 +48,7 @@ export class Ledger {
        static #queue: { task: Function, resolve: Function, reject: Function }[] = []
        static #status: LedgerStatus = 'DISCONNECTED'
        static #transport: typeof TransportHID | typeof TransportBLE | typeof TransportUSB
-       static #ADPU_CODES: { [key: string]: number } = Object.freeze({
+       static #ADPU_CODES: Record<string, number> = Object.freeze({
                class: 0xa1,
                bip32DerivationLevel: 0x03,
                version: 0x01,
index 404c5a1e52cd0b5ef16efbfd7883ac9245bac154..36f860b4d6297207cc19cf9735979e8e7a10c002 100644 (file)
@@ -29,10 +29,10 @@ export class Rpc {
        * @param {object} [data] - JSON to send to the node as defined by the action
        * @returns {Promise<any>} JSON-formatted RPC results from the node
        */
-       async post (action: string, data?: { [key: string]: unknown }): Promise<any> {
+       async post (action: string, data?: Record<string, unknown>): Promise<any> {
                var process: any = process || null
                this.#validate(action)
-               const headers: { [key: string]: string } = {}
+               const headers: Record<string, string> = {}
                headers['Content-Type'] = 'application/json'
                if (this.#n && process?.env?.LIBNEMO_RPC_API_KEY) {
                        headers[this.#n] = process.env.LIBNEMO_RPC_API_KEY
index 254a3ce7420a81ff0ee7129cd94bb6464377480e..3cc5d022812a72b228996df1745ed83fcdca40dc 100644 (file)
@@ -2,7 +2,7 @@
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
 export class Passkey {
-       static create (action: string, salt: ArrayBuffer, data: { [key: string]: unknown }): Promise<CryptoKey | undefined> {
+       static create (action: string, salt: ArrayBuffer, data: Record<string, unknown>): Promise<CryptoKey | undefined> {
                // Allowlisted wallet actions
                if (['create', 'load', 'unlock', 'update'].includes(action)) {
 
index c980c2d1e8459665c8c568a7f72ccd687fd14259..075a8dfc5d89374583ab55fb9afa34bb839e05e4 100644 (file)
@@ -384,7 +384,7 @@ function verify (seed?: ArrayBuffer, mnemonicPhrase?: string): Record<string, bo
 /**
 * Parse inbound message from main thread into typechecked variables.
 */
-function _extractData (action: string, data: { [key: string]: unknown }) {
+function _extractData (action: string, data: Record<string, unknown>) {
        try {
                // Import requires seed or mnemonic phrase
                if (action === 'load' && data.seed == null && data.mnemonicPhrase == null) {
@@ -556,7 +556,7 @@ function _load (type?: 'BIP-44' | 'BLAKE2b' | 'Exodus', key?: CryptoKey, keySalt
 }
 
 // Action for selecting method execution
-function _parseAction (data: { [key: string]: unknown }) {
+function _parseAction (data: Record<string, unknown>) {
        if (data.action == null) {
                throw new TypeError('Wallet action is required')
        }
@@ -588,7 +588,7 @@ function _parseData (data: unknown): Record<string, unknown> {
 
 // Salt created to derive CryptoKey from password; subsequently required to
 // derive the same key for unlock requests
-function _parseKeySalt (action: string, data: { [key: string]: unknown }): ArrayBuffer {
+function _parseKeySalt (action: string, data: Record<string, unknown>): ArrayBuffer {
        if (action === 'unlock') {
                if (data.keySalt instanceof ArrayBuffer) {
                        return data.keySalt
@@ -602,7 +602,7 @@ function _parseKeySalt (action: string, data: { [key: string]: unknown }): Array
 
 // Initialization vector created to encrypt and lock the vault; subsequently
 // required to decrypt and unlock the vault
-function _parseIv (action: string, data: { [key: string]: unknown }) {
+function _parseIv (action: string, data: Record<string, unknown>): ArrayBuffer | undefined {
        if (action === 'unlock') {
                if (!(data.iv instanceof ArrayBuffer)) {
                        throw new TypeError('Initialization vector required to unlock wallet')
@@ -614,7 +614,7 @@ function _parseIv (action: string, data: { [key: string]: unknown }) {
 }
 
 // Algorithm used for wallet functions
-function _parseType (action: string, data: { [key: string]: unknown }) {
+function _parseType (action: string, data: Record<string, unknown>) {
        if (['create', 'load', 'unlock'].includes(action)) {
                if (data.type !== 'BIP-44' && data.type !== 'BLAKE2b' && data.type !== 'Exodus' && data.type !== 'Ledger') {
                        throw new TypeError(`Type is required to ${action} wallet`)
index 286c060d644b0c70f46f4bb8db2a69f200e3485c..ad00e1a4e2241e9eae26505fce000e400326d4a4 100644 (file)
@@ -1,9 +1,9 @@
 //! SPDX-FileCopyrightText: 2025 Chris Duncan <chris@zoso.dev>
 //! SPDX-License-Identifier: GPL-3.0-or-later
 
+import { WalletType } from '.'
 import { Ledger } from '../ledger'
 import { Vault } from '../vault'
-import { WalletType } from '.'
 
 export async function _config (type: WalletType, vault: Vault, settings: { connection: 'hid' | 'ble' | 'usb' } | { timeout: number }): Promise<void>
 export async function _config (type: WalletType, vault: Vault, settings: unknown): Promise<void> {
@@ -11,7 +11,7 @@ export async function _config (type: WalletType, vault: Vault, settings: unknown
                if (settings == null || typeof settings !== 'object') {
                        throw new TypeError('Invalid configuration settings')
                }
-               const { connection, timeout } = settings as { [key: string]: unknown }
+               const { connection, timeout } = settings as Record<string, unknown>
                if (type === 'Ledger') {
                        if (connection !== undefined && connection !== 'hid' && connection !== 'ble' && connection !== 'usb') {
                                throw new Error('Ledger connection must be hid, ble, or usb', { cause: connection })
index 02d7baa4fe2bdfefef64f90540db56decb0f911f..55c4d8364eac9046e8e6732ab54552f17ccea2f8 100644 (file)
@@ -15,7 +15,7 @@ export async function _verify (type: WalletType, vault: Vault, secret: unknown):
                if (type === 'Ledger') {
                        return await Ledger.verify(secret)
                } else {
-                       const data: { [key: string]: string | ArrayBuffer } = {
+                       const data: Record<string, string | ArrayBuffer> = {
                                action: 'verify'
                        }
                        if (/^(?:[A-F0-9]{64}){1,2}$/i.test(secret)) {