UNPKG

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
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 };