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 🙏

© 2024 – Pkg Stats / Ryan Hefner

akaba-tool

v1.3.7

Published

```typescript export declare namespace NSFuncArrayLike { type TLoopFunc<T> = (item: T, index: number, arrLike: ArrayLike<T>) => any; }

Downloads

68

Readme

akaba-tool

类数组形式

export declare namespace NSFuncArrayLike {
    type TLoopFunc<T> = (item: T, index: number, arrLike: ArrayLike<T>) => any;
}

export declare function doLoop<T>(arrLike: ArrayLike<T>, loopFunc: NSFuncArrayLike.TLoopFunc<T>): void;

类数字

export declare namespace NSFuncNum {
    type TResultIsMatchFloatFalseReason = "stringLengthMax" | "notLikeNumber" | "fractionStringLengthMax";
    interface IResultIsMatchFloatFalse {
        match: false;
        reason: TResultIsMatchFloatFalseReason;
    }
    interface IResultIsMatchFloatTrue {
        match: true;
    }
    type TResultIsMatchFloat = IResultIsMatchFloatFalse | IResultIsMatchFloatTrue;
}
  • 格式转化
export declare function stringifyNumber(num: number): string;
export declare function intVal(text: any, nanText: string | number): string | number;

// floatVal("0.0250") ==> 0.025
export declare function floatVal(text: any, nanText: string | number): string | number;

// floatNum("0.0250", 2) => 0.03 
// floatNum("0.0250", 3) => 0.025
export declare function floatNum(text: any, saveNum: number, nanText: string | number): string | number;

// toFixed("0.0250", 3) => 0.0250
export declare function toFixed(text: any, saveNum: number, nanText: string | number): string | number;

// toChineseIndex(0) => '零'
// toChineseIndex(0, "0") => "0"
// num取值范围是 [0, 14]; 其中 1 -> 10对应一->十; 11->百;12->千; 13 -> 万;14 ->亿
export declare function toChineseIndex(num: 0, zeroStr: string): string
export declare function toChineseIndex(num: number): string;
export declare function isPositiveNumber(numLikeStr: any): boolean;
export declare function isMatchFloat(num: number | string, maxLen?: number, fractionMaxLen?: number, isLimitInt?: boolean): NSFuncNum.TResultIsMatchFloat;
export declare function isConstraintNum(num: any, maxIntPartLen?: number, maxFractionLen?: number): boolean;

/**
 * @since 1.3.3
 * @param str
 * @param whenNull
 */
export declare function toShowString(str: any, whenNull?: string): string;
/**
 * @since 1.3.3
 * @param str
 * @param whenEmpty
 */
export declare function toNotEmptyString(str: any, whenEmpty?: string): string;
  • 类型匹配
export declare function isNumberLike(numStr: any): boolean;
export declare function isIntLike(numStr: any): boolean;
export declare function isPositiveInt(numStr: any): boolean;
export declare function isMatchFloat(num: number | string, maxLen?: number, fractionMaxLen?: number): NSFuncNum.TResultIsMatchFloat;
  • 约束范围输出
export declare function getNumInRange(obj: {
    num: number;
    min: number;
    max?: number;
}): number;
export declare function getNumInRange(obj: {
    num: number;
    min?: number;
    max: number;
}): number;
export declare function getNumInRange(obj: number, min: number, max?: number): number;
  • 格式转化类 NumTransferTool
export declare class NumTransferTool {
    defaultNanText: string | number; // 默认非数字时返回值
    defaultSaveNum: number; // 默认小数保留位数
    constructor(defaultNanText?: string | number);
    floatVal(text: string | number, nanText?: string | number): string | number; // 同上面的floatVal。nanText默认为this.deafultNanText
    intVal(text: string | number, nanText?: string | number): string | number;// 同上面的intVal。nanText默认为this.deafultNanText
    toFixed(text: string | number, saveNum?: number, nanText?: string | number): string | number;// 同上面的toFixed。nanText默认为this.deafultNanText
    floatNum(text: string | number, saveNum?: number, nanText?: string | number): string | number;// 同上面的floatNum。nanText默认为this.deafultNanText
}
export declare const numTransferTool: NumTransferTool; // 默认实例; numTransferTool.defaultNanText = "-"

简易类对象(Option)

export declare namespace NSFuncOption {
    type TOptionPropertyValue = Option | string | number | ArrayLike<any> | Function | null | undefined;
    interface Option {
        [attr: string]: TOptionPropertyValue;
    }
}
  • 复制相关
export declare function jsonCopy<T>(obj: T): T;
export declare function copyOptionAsArray<T>(optA: ArrayLike<T>): Array<T>;
export declare function copyOptionAsObj<T>(optA: T): T;
export declare function copyOption(optA: string): string;
export declare function copyOption(optA: number): number;
export declare function copyOption(optA: null): null;
export declare function copyOption(optA: undefined): undefined;
export declare function copyOption<T>(optA: ArrayLike<T>): T[];
export declare function copyOption(optA: Function): Function;
export declare function copyOption(optA: NSFuncOption.Option): NSFuncOption.Option;
  • 混入
export declare function mixedOpt<TypeA, TypeB>(optA: TypeA, optB: TypeB): TypeA & TypeB;
export declare function mixedOptAndCopyResult<TypeA, TypeB>(optA: TypeA, optB: TypeB): TypeA & TypeB;
  • 另外提供OptionCopier类,可以实现自定义的复制

范围设置

export declare namespace NSFuncRange {
    type TValHandle<T> = (item: T, index: number) => number;
    interface IBaseRange {
        min: number;
        max: number;
    }
    interface IBaseSplitInfo {
        min: number;
        max: number;
        splitNumber: number;
    }
    interface IExtraSplitInfo {
        stepHandle: (step: number) => number;
        baseRefer: 'min' | 'max'; 
    }
    interface IBaseSplitInfoStep extends IBaseSplitInfo {
        step: number;
    }
    interface IBaseSplitInfoStepTimes extends IBaseSplitInfoStep {
        timesBase: number;
    }
}

export declare function getRangeOfDataList<T>(list: ArrayLike<T>, valHandle?: NSFuncRange.TValHandle<T>): NSFuncRange.IBaseRange;

/**
 * 
 * option.baseRefer 默认为'min'
 * option.stepHandle 默认为 (step: number) => step
 * getSplitInfoOf({min: 0.1, max: 0.52, splitNumber: 4}) => {min: 0.1, max: 0.52, splitNumber: 4, step: 0.10500000000000001}
 */
export declare function getSplitInfoOf(splitInfo: NSFuncRange.IBaseSplitInfo, option?: Partial<NSFuncRange.IExtraSplitInfo>): NSFuncRange.IBaseSplitInfoStep;

/**
 *
 * option.baseRefer 默认为'min'
 * option.stepHandle 默认为 (step: number) => Math.ceil(step);
 * getSplitInfoIntStep({min: 0.1, max: 0.52, splitNumber: 4}) => min: 0, max: 1, splitNumber: 4, step: 0.25}
 */
export declare function getSplitInfoIntStep(splitInfo: NSFuncRange.IBaseSplitInfo, option: Partial<NSFuncRange.IExtraSplitInfo>): NSFuncRange.IBaseSplitInfoStep;

/**
 * option.timesBase = 10
 * option.baseRefer 默认为'min'
 * option.stepHandle 默认为 (step: number) => Math.ceil(step);
 * getSplitInfoTimesStep({min: 0.1, max: 0.52, splitNumber: 4}) => {min: 0, max: 40, splitNumber: 4, step: 10}
 */
export declare function getSplitInfoTimesStep(splitInfo: NSFuncRange.IBaseSplitInfo, option: Partial<NSFuncRange.IBaseSplitInfoStepTimes>): NSFuncRange.IBaseSplitInfoStep;
  • fileRelate
export declare namespace NSFileRelate {
    interface IBase64RegResultMatch {
        isMatch: true;
        dataType: string;
        dataSuffix: string;
        dataData: string;
        mime: string;
    }
    
    interface ParsedPath {
        root: string;
        dir: string;
        base: string;
        name: string;
        ext: string;
        isMatch: boolean;
    }
    
    interface IBase64RegResultNotMatch {
        isMatch: false;
    }
    
    type TBase64RegResult = IBase64RegResultNotMatch | IBase64RegResultMatch;
}

export declare function getDataFromBase64String(base64String: string): NSFileRelate.TBase64RegResult;

export declare function parsePath(pathname: string): NSFileRelate.ParsedPath;

privateMap

declare class SinglePrivateMap<TBindObj extends object, TObjectPropertyDict extends object> {
    private readonly bindObj;
    private readonly privateMap;
    constructor(bindObj: TBindObj, map: PrivateMap<TBindObj, TObjectPropertyDict>);
    setDict(dict: TObjectPropertyDict): this;
    getDict(): TObjectPropertyDict | undefined;
    safeGetDict(): TObjectPropertyDict;
    setProperty<KeyName extends keyof TObjectPropertyDict>(keyName: KeyName, value: TObjectPropertyDict[KeyName]): this;
    safeSetProperty<KeyName extends keyof TObjectPropertyDict>(keyName: KeyName, value: TObjectPropertyDict[KeyName]): this;
    getProperty<KeyName extends keyof TObjectPropertyDict>(keyName: KeyName): TObjectPropertyDict[KeyName];
    safeGetProperty<KeyName extends keyof TObjectPropertyDict>(keyName: KeyName): TObjectPropertyDict[KeyName];
}
export declare class PrivateMap<TBindObj extends object = {}, TObjectPropertyDict extends object = {}> {
    private bindMap;
    constructor();
    setDict(bindObj: TBindObj, dict: TObjectPropertyDict): this;
    getDict(bindObj: TBindObj): TObjectPropertyDict | undefined;
    safeGetDict(bindObj: TBindObj): TObjectPropertyDict;
    setProperty<KeyName extends keyof TObjectPropertyDict>(bindObj: TBindObj, keyName: KeyName, value: TObjectPropertyDict[KeyName]): this;
    safeSetProperty<KeyName extends keyof TObjectPropertyDict>(bindObj: TBindObj, keyName: KeyName, value: TObjectPropertyDict[KeyName]): this;
    getProperty<KeyName extends keyof TObjectPropertyDict>(bindObj: TBindObj, keyName: KeyName): TObjectPropertyDict[KeyName];
    safeGetProperty<KeyName extends keyof TObjectPropertyDict>(bindObj: TBindObj, keyName: KeyName): TObjectPropertyDict[KeyName];
    getSingleBindInstance(bindObj: TBindObj): SinglePrivateMap<TBindObj, TObjectPropertyDict>;
}
export {};

其他

/**
 * 将setTimeout转成Promise
 * @param **delayTime**
 */
export declare function delay(delayTime?: number): Promise<void>;

更新记录

  • 1.0.11
    intVal(1e-9, "") => "0";
    intVal("1e-9", "") => "1";