unplugin-auto-decimal
Version: 
<h1 align="center" style="margin-top: -10px">AutoDecimal</h1> <div align="center" style="margin-bottom:10px"> <a href="https://www.npmjs.com/package/unplugin-auto-decimal"> <img src="https://img.shields.io/npm/v/unplugin-auto-decimal"/> </a> </div
101 lines (97 loc) • 3.34 kB
TypeScript
import { NodePath } from '@babel/traverse';
import { MagicStringAST } from 'magic-string-ast';
declare const DECIMAL_RM_LIGHT: Readonly<{
    ROUND_UP: 0;
    ROUND_DOWN: 1;
    ROUND_CEIL: 2;
    ROUND_FLOOR: 3;
    ROUND_HALF_UP: 4;
    ROUND_HALF_DOWN: 5;
    ROUND_HALF_EVEN: 6;
    ROUND_HALF_CEIL: 7;
    ROUND_HALF_FLOOR: 8;
}>;
declare const DECIMAL_RM: Readonly<{
    EUCLID: 9;
    ROUND_UP: 0;
    ROUND_DOWN: 1;
    ROUND_CEIL: 2;
    ROUND_FLOOR: 3;
    ROUND_HALF_UP: 4;
    ROUND_HALF_DOWN: 5;
    ROUND_HALF_EVEN: 6;
    ROUND_HALF_CEIL: 7;
    ROUND_HALF_FLOOR: 8;
}>;
declare const BIG_RM: Readonly<{
    ROUND_DOWN: 0;
    ROUND_HALF_UP: 1;
    ROUND_HALF_DOWN: 2;
    ROUND_UP: 3;
}>;
interface AutoDecimal {
}
interface Options {
    shouldSkip: boolean;
    msa: MagicStringAST;
    imported: boolean;
    decimalPkgName: string;
    initial: boolean;
    callMethod: CallMethod;
    callArgs: string;
    autoDecimalOptions: InnerAutoDecimalOptions;
    integer: boolean;
    fromNewFunction?: boolean;
    needImport?: boolean;
    ownerPath?: NodePath;
}
interface ToDecimalConfig extends ToDecimalOptions {
    name?: string;
}
interface AutoDecimalOptions {
    supportString?: boolean;
    tailPatchZero?: boolean;
    package?: Package;
    toDecimal?: boolean | ToDecimalConfig;
    dts?: boolean | string;
    decimalName?: string;
    supportNewFunction?: boolean | NewFunctionOptions;
}
type InnerAutoDecimalOptions = Required<AutoDecimalOptions>;
interface ToDecimalOptions {
    callMethod?: CallMethod;
    /** callMethod */
    cm?: CallMethod;
    precision?: number;
    /** precision */
    p?: number;
    roundingModes?: RoundingModes | number;
    /** roundingModes */
    rm?: RoundingModes | number;
}
type InnerToDecimalOptions = Required<ToDecimalConfig>;
type ToDecimal = <T extends ToDecimalOptions>(options?: T) => ToDecimalReturn<T>;
interface Extra {
    __extra: Record<string, unknown>;
    options: Options;
    __shouldTransform: boolean;
}
type CallMethod = 'toNumber' | 'toString' | 'toFixed' | 'decimal';
type Package = 'decimal.js' | 'decimal.js-light' | 'big.js';
type ToDecimalReturn<T extends ToDecimalOptions> = GetToDecimalReturn<T, 'callMethod'> | GetToDecimalReturn<T, 'cm'>;
type RoundingModes = AutoDecimal['package'] extends 'big.js' ? BigRoundingMode : AutoDecimal['package'] extends 'decimal.js' ? DecimalRoundingMode : DecimalLightRoundingMode;
type DecimalRoundingMode = keyof typeof DECIMAL_RM;
type DecimalLightRoundingMode = keyof typeof DECIMAL_RM_LIGHT;
type BigRoundingMode = keyof typeof BIG_RM;
type Operator = '+' | '-' | '*' | '/';
interface CommentState {
    line: number;
    block: boolean;
    next: boolean;
}
interface NewFunctionOptions {
    toDecimal?: boolean | ToDecimalConfig;
    injectWindow?: string;
}
type GetToDecimalReturn<T extends ToDecimalOptions, V extends 'callMethod' | 'cm'> = V extends keyof T ? T[V] extends 'toFixed' | 'toString' ? string : T[V] extends 'decimal' ? AutoDecimal['decimal'] : number : never;
export type { AutoDecimal, AutoDecimalOptions, BigRoundingMode, CallMethod, CommentState, DecimalLightRoundingMode, DecimalRoundingMode, Extra, InnerAutoDecimalOptions, InnerToDecimalOptions, NewFunctionOptions, Operator, Options, Package, RoundingModes, ToDecimal, ToDecimalConfig, ToDecimalOptions, ToDecimalReturn };