@hazae41/fixed 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var hexane = require('@hazae41/hexane');
|
|
4
4
|
var index = require('../../libs/bigint/index.cjs');
|
|
5
5
|
|
|
6
6
|
class ZeroHexFixedInit {
|
|
@@ -31,37 +31,39 @@ class Fixed {
|
|
|
31
31
|
static unit(decimals) {
|
|
32
32
|
return new Fixed(index.BigInts.tensOf(decimals), decimals);
|
|
33
33
|
}
|
|
34
|
-
static from(
|
|
35
|
-
if (
|
|
36
|
-
if (typeof
|
|
37
|
-
return new Fixed(
|
|
34
|
+
static from(from) {
|
|
35
|
+
if (from instanceof Fixed) return from;
|
|
36
|
+
if (typeof from.value === "bigint") return new Fixed(from.value, from.decimals);
|
|
37
|
+
return new Fixed(hexane.ZeroHexString.toBigInt(from.value), from.decimals);
|
|
38
38
|
}
|
|
39
|
-
static
|
|
40
|
-
return Fixed
|
|
39
|
+
static fromBigInt(value) {
|
|
40
|
+
return new Fixed(value, 0);
|
|
41
41
|
}
|
|
42
42
|
static fromBigIntInit(init) {
|
|
43
43
|
return new Fixed(init.value, init.decimals);
|
|
44
44
|
}
|
|
45
|
-
static
|
|
46
|
-
return new Fixed(
|
|
45
|
+
static fromZeroHexInit(init) {
|
|
46
|
+
return new Fixed(hexane.ZeroHexString.toBigInt(init.value), init.decimals);
|
|
47
47
|
}
|
|
48
|
-
static
|
|
48
|
+
static fromZeroHexString(value) {
|
|
49
|
+
return new Fixed(hexane.ZeroHexString.toBigInt(value), 0);
|
|
50
|
+
}
|
|
51
|
+
static fromDecimalString(text) {
|
|
49
52
|
const [whole = "0", decimal = "0"] = text.split(".");
|
|
50
|
-
const value = BigInt(whole + decimal
|
|
51
|
-
return new Fixed(value,
|
|
53
|
+
const value = BigInt(whole + decimal);
|
|
54
|
+
return new Fixed(value, decimal.length);
|
|
52
55
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return Fixed.fromDecimalString(text, decimals);
|
|
56
|
+
toBigInt() {
|
|
57
|
+
return this.value;
|
|
56
58
|
}
|
|
57
|
-
|
|
58
|
-
return
|
|
59
|
+
toZeroHexString() {
|
|
60
|
+
return hexane.ZeroHexString.fromBigInt(this.value);
|
|
59
61
|
}
|
|
60
62
|
toBigIntInit() {
|
|
61
63
|
return new BigIntFixedInit(this.value, this.decimals);
|
|
62
64
|
}
|
|
63
|
-
|
|
64
|
-
return
|
|
65
|
+
toZeroHexInit() {
|
|
66
|
+
return new ZeroHexFixedInit(hexane.ZeroHexString.fromBigInt(this.value), this.decimals);
|
|
65
67
|
}
|
|
66
68
|
toDecimalString() {
|
|
67
69
|
const raw = this.value.toString().padStart(this.decimals, "0");
|
|
@@ -82,7 +84,7 @@ class Fixed {
|
|
|
82
84
|
move(decimals) {
|
|
83
85
|
if (this.decimals > decimals) return new Fixed(this.value / index.BigInts.tensOf(this.decimals - decimals), decimals);
|
|
84
86
|
if (this.decimals < decimals) return new Fixed(this.value * index.BigInts.tensOf(decimals - this.decimals), decimals);
|
|
85
|
-
return this;
|
|
87
|
+
return new Fixed(this.value, decimals);
|
|
86
88
|
}
|
|
87
89
|
add(other) {
|
|
88
90
|
const dx = this.decimals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/mods/fixed/index.ts"],"sourcesContent":["import { ZeroHexString } from \"@hazae41/hex\"\nimport { BigInts } from \"libs/bigint/index.js\"\n\nexport interface ZeroHexFixedInit<D extends number = number> {\n readonly value: ZeroHexString,\n readonly decimals: D\n}\n\nexport class ZeroHexFixedInit<D extends number = number> {\n\n constructor(\n readonly value: ZeroHexString,\n readonly decimals: D\n ) { }\n\n}\n\nexport interface BigIntFixedInit<D extends number = number> {\n readonly value: bigint,\n readonly decimals: D\n}\n\nexport class BigIntFixedInit<D extends number = number> {\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) { }\n\n}\n\nexport namespace Fixed {\n\n export type From<D extends number = number> =\n | BigIntFixedInit<D>\n | ZeroHexFixedInit<D>\n\n}\n\nexport class Fixed<D extends number = number> implements BigIntFixedInit {\n\n readonly tens: bigint\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) {\n this.tens = BigInts.tensOf(decimals)\n }\n\n static unit<D extends number = number>(decimals: D) {\n return new Fixed(BigInts.tensOf(decimals), decimals)\n }\n\n static from<D extends number = number>(init: Fixed.From<D>) {\n if (init instanceof Fixed)\n return init\n if (typeof init.value === \"string\")\n return Fixed.fromZeroHexString(init.value, init.decimals)\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexInit<D extends number>(init: ZeroHexFixedInit<D>) {\n return Fixed.fromZeroHexString(init.value, init.decimals)\n }\n\n static fromBigIntInit<D extends number>(init: BigIntFixedInit<D>) {\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexString<D extends number>(value: ZeroHexString, decimals: D) {\n return new Fixed(ZeroHexString.toBigInt(value), decimals)\n }\n\n static fromDecimalString<D extends number>(text: string, decimals: D) {\n const [whole = \"0\", decimal = \"0\"] = text.split(\".\")\n\n const value = BigInt(whole + decimal.padEnd(decimals, \"0\").slice(0, decimals))\n\n return new Fixed(value, decimals)\n }\n\n static fromString<D extends number>(text: string, decimals: D) {\n if (ZeroHexString.String.is(text))\n return Fixed.fromZeroHexString(text, decimals)\n return Fixed.fromDecimalString(text, decimals)\n }\n\n toZeroHexInit() {\n return new ZeroHexFixedInit(this.toZeroHexString(), this.decimals)\n }\n\n toBigIntInit() {\n return new BigIntFixedInit(this.value, this.decimals)\n }\n\n toZeroHexString() {\n return ZeroHexString.fromBigInt(this.value)\n }\n\n toDecimalString() {\n const raw = this.value.toString().padStart(this.decimals, \"0\")\n\n const whole = raw.slice(0, raw.length - this.decimals).replaceAll(\"0\", \" \").trimStart().replaceAll(\" \", \"0\")\n const decimal = raw.slice(raw.length - this.decimals).replaceAll(\"0\", \" \").trimEnd().replaceAll(\" \", \"0\")\n\n if (!decimal)\n return (whole || \"0\")\n\n return `${whole || \"0\"}.${decimal}`\n }\n\n toString() {\n return this.toDecimalString()\n }\n\n toJSON() {\n return this.toZeroHexInit()\n }\n\n as(decimals: number) {\n return new Fixed(this.value, decimals)\n }\n\n move(decimals: number) {\n if (this.decimals > decimals)\n return new Fixed(this.value / BigInts.tensOf(this.decimals - decimals), decimals)\n if (this.decimals < decimals)\n return new Fixed(this.value * BigInts.tensOf(decimals - this.decimals), decimals)\n return this\n }\n\n add(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) + (vy * (tr / ty)), dr)\n }\n\n sub(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) - (vy * (tr / ty)), dr)\n }\n\n mul(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = dx + dy\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed(vx * vy, dr)\n }\n\n div(other: Fixed) {\n const dx = this.decimals\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * ty) / vy, dx)\n }\n\n floor() {\n return new Fixed(this.value - (this.value % this.tens), this.decimals)\n }\n\n ceil() {\n return new Fixed(this.value + (this.tens - (this.value % this.tens)), this.decimals)\n }\n\n round() {\n return new Fixed(this.value + (this.tens / 2n) - ((this.value + (this.tens / 2n)) % this.tens), this.decimals)\n }\n\n}\n"],"names":["ZeroHexFixedInit","constructor","decimals","value","BigIntFixedInit","Fixed","tens","BigInts","tensOf","unit","from","init","fromZeroHexString","fromZeroHexInit","fromBigIntInit","ZeroHexString","toBigInt","fromDecimalString","text","whole","decimal","split","BigInt","padEnd","slice","fromString","String","is","toZeroHexInit","toZeroHexString","toBigIntInit","fromBigInt","toDecimalString","raw","toString","padStart","length","replaceAll","trimStart","trimEnd","toJSON","as","move","add","other","dx","dy","dr","Math","max","tr","tx","ty","vx","vy","sub","mul","div","floor","ceil","round"],"mappings":";;;;;AAQO,MAAMA,gBAAAA,CAAAA;;;AAEXC,IAAAA,WAAAA,CACE,KAA6B,EACpBC,QAAW,CACpB;aAFSC,KAAAA,GAAAA,KAAAA;aACAD,QAAAA,GAAAA,QAAAA;AACP;AAEN;AAOO,MAAME,eAAAA,CAAAA;;;AAEXH,IAAAA,WAAAA,CACE,KAAsB,EACbC,QAAW,CACpB;aAFSC,KAAAA,GAAAA,KAAAA;aACAD,QAAAA,GAAAA,QAAAA;AACP;AAEN;AAUO,MAAMG,KAAAA,CAAAA;;;IAEFC,IAAY;AAErBL,IAAAA,WAAAA,CACE,KAAsB,EACbC,QAAW,CACpB;aAFSC,KAAAA,GAAAA,KAAAA;aACAD,QAAAA,GAAAA,QAAAA;AAET,QAAA,IAAI,CAACI,IAAI,GAAGC,aAAAA,CAAQC,MAAM,CAACN,QAAAA,CAAAA;AAC7B;IAEA,OAAOO,IAAAA,CAAgCP,QAAW,EAAE;AAClD,QAAA,OAAO,IAAIG,KAAAA,CAAME,aAAQC,CAAAA,MAAM,CAACN,QAAWA,CAAAA,EAAAA,QAAAA,CAAAA;AAC7C;IAEA,OAAOQ,IAAAA,CAAgCC,IAAmB,EAAE;QAC1D,IAAIA,IAAAA,YAAgBN,OAClB,OAAOM,IAAAA;AACT,QAAA,IAAI,OAAOA,IAAAA,CAAKR,KAAK,KAAK,QACxB,EAAA,OAAOE,KAAMO,CAAAA,iBAAiB,CAACD,IAAAA,CAAKR,KAAK,EAAEQ,KAAKT,QAAQ,CAAA;AAC1D,QAAA,OAAO,IAAIG,KAAMM,CAAAA,IAAAA,CAAKR,KAAK,EAAEQ,KAAKT,QAAQ,CAAA;AAC5C;IAEA,OAAOW,eAAAA,CAAkCF,IAAyB,EAAE;AAClE,QAAA,OAAON,MAAMO,iBAAiB,CAACD,KAAKR,KAAK,EAAEQ,KAAKT,QAAQ,CAAA;AAC1D;IAEA,OAAOY,cAAAA,CAAiCH,IAAwB,EAAE;AAChE,QAAA,OAAO,IAAIN,KAAMM,CAAAA,IAAAA,CAAKR,KAAK,EAAEQ,KAAKT,QAAQ,CAAA;AAC5C;AAEA,IAAA,OAAOU,iBAAoCT,CAAAA,KAAoB,EAAED,QAAW,EAAE;AAC5E,QAAA,OAAO,IAAIG,KAAAA,CAAMU,iBAAcC,CAAAA,QAAQ,CAACb,KAAQD,CAAAA,EAAAA,QAAAA,CAAAA;AAClD;AAEA,IAAA,OAAOe,iBAAoCC,CAAAA,IAAY,EAAEhB,QAAW,EAAE;QACpE,MAAM,CAACiB,KAAQ,GAAA,GAAG,EAAEC,OAAAA,GAAU,GAAG,CAAC,GAAGF,IAAKG,CAAAA,KAAK,CAAC,GAAA,CAAA;QAEhD,MAAMlB,KAAAA,GAAQmB,MAAOH,CAAAA,KAAAA,GAAQC,OAAQG,CAAAA,MAAM,CAACrB,QAAU,EAAA,GAAA,CAAA,CAAKsB,KAAK,CAAC,CAAGtB,EAAAA,QAAAA,CAAAA,CAAAA;QAEpE,OAAO,IAAIG,MAAMF,KAAOD,EAAAA,QAAAA,CAAAA;AAC1B;AAEA,IAAA,OAAOuB,UAA6BP,CAAAA,IAAY,EAAEhB,QAAW,EAAE;QAC7D,IAAIa,iBAAAA,CAAcW,MAAM,CAACC,EAAE,CAACT,OAC1B,OAAOb,KAAAA,CAAMO,iBAAiB,CAACM,IAAMhB,EAAAA,QAAAA,CAAAA;QACvC,OAAOG,KAAAA,CAAMY,iBAAiB,CAACC,IAAMhB,EAAAA,QAAAA,CAAAA;AACvC;IAEA0B,aAAgB,GAAA;QACd,OAAO,IAAI5B,iBAAiB,IAAI,CAAC6B,eAAe,EAAI,EAAA,IAAI,CAAC3B,QAAQ,CAAA;AACnE;IAEA4B,YAAe,GAAA;QACb,OAAO,IAAI1B,gBAAgB,IAAI,CAACD,KAAK,EAAE,IAAI,CAACD,QAAQ,CAAA;AACtD;IAEA2B,eAAkB,GAAA;AAChB,QAAA,OAAOd,iBAAcgB,CAAAA,UAAU,CAAC,IAAI,CAAC5B,KAAK,CAAA;AAC5C;IAEA6B,eAAkB,GAAA;AAChB,QAAA,MAAMC,GAAM,GAAA,IAAI,CAAC9B,KAAK,CAAC+B,QAAQ,EAAGC,CAAAA,QAAQ,CAAC,IAAI,CAACjC,QAAQ,EAAE,GAAA,CAAA;QAE1D,MAAMiB,KAAAA,GAAQc,IAAIT,KAAK,CAAC,GAAGS,GAAIG,CAAAA,MAAM,GAAG,IAAI,CAAClC,QAAQ,CAAEmC,CAAAA,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA,CAAKC,SAAS,EAAGD,CAAAA,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA;AACxG,QAAA,MAAMjB,UAAUa,GAAIT,CAAAA,KAAK,CAACS,GAAIG,CAAAA,MAAM,GAAG,IAAI,CAAClC,QAAQ,CAAEmC,CAAAA,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA,CAAKE,OAAO,EAAGF,CAAAA,UAAU,CAAC,GAAK,EAAA,GAAA,CAAA;QAErG,IAAI,CAACjB,OACH,EAAA,OAAQD,KAAS,IAAA,GAAA;AAEnB,QAAA,OAAO,CAAC,EAAEA,KAAAA,IAAS,IAAI,CAAC,EAAEC,QAAQ,CAAC;AACrC;IAEAc,QAAW,GAAA;QACT,OAAO,IAAI,CAACF,eAAe,EAAA;AAC7B;IAEAQ,MAAS,GAAA;QACP,OAAO,IAAI,CAACZ,aAAa,EAAA;AAC3B;AAEAa,IAAAA,EAAAA,CAAGvC,QAAgB,EAAE;AACnB,QAAA,OAAO,IAAIG,KAAAA,CAAM,IAAI,CAACF,KAAK,EAAED,QAAAA,CAAAA;AAC/B;AAEAwC,IAAAA,IAAAA,CAAKxC,QAAgB,EAAE;AACrB,QAAA,IAAI,IAAI,CAACA,QAAQ,GAAGA,QAClB,EAAA,OAAO,IAAIG,KAAM,CAAA,IAAI,CAACF,KAAK,GAAGI,cAAQC,MAAM,CAAC,IAAI,CAACN,QAAQ,GAAGA,QAAWA,CAAAA,EAAAA,QAAAA,CAAAA;AAC1E,QAAA,IAAI,IAAI,CAACA,QAAQ,GAAGA,QAClB,EAAA,OAAO,IAAIG,KAAM,CAAA,IAAI,CAACF,KAAK,GAAGI,cAAQC,MAAM,CAACN,WAAW,IAAI,CAACA,QAAQ,CAAGA,EAAAA,QAAAA,CAAAA;AAC1E,QAAA,OAAO,IAAI;AACb;AAEAyC,IAAAA,GAAAA,CAAIC,KAAY,EAAE;QAChB,MAAMC,EAAAA,GAAK,IAAI,CAAC3C,QAAQ;QACxB,MAAM4C,EAAAA,GAAKF,MAAM1C,QAAQ;AAEzB,QAAA,MAAM6C,EAAKC,GAAAA,IAAAA,CAAKC,GAAG,CAACJ,EAAIC,EAAAA,EAAAA,CAAAA;QACxB,MAAMI,EAAAA,GAAK3C,aAAQC,CAAAA,MAAM,CAACuC,EAAAA,CAAAA;QAE1B,MAAMI,EAAAA,GAAK,IAAI,CAAC7C,IAAI;QACpB,MAAM8C,EAAAA,GAAKR,MAAMtC,IAAI;QAErB,MAAM+C,EAAAA,GAAK,IAAI,CAAClD,KAAK;QACrB,MAAMmD,EAAAA,GAAKV,MAAMzC,KAAK;AAEtB,QAAA,OAAO,IAAIE,KAAAA,CAAM,EAACgD,IAAMH,EAAAA,GAAKC,EAAC,CAAA,GAAOG,EAAMJ,IAAAA,EAAKE,GAAAA,EAAC,CAAKL,EAAAA,EAAAA,CAAAA;AACxD;AAEAQ,IAAAA,GAAAA,CAAIX,KAAY,EAAE;QAChB,MAAMC,EAAAA,GAAK,IAAI,CAAC3C,QAAQ;QACxB,MAAM4C,EAAAA,GAAKF,MAAM1C,QAAQ;AAEzB,QAAA,MAAM6C,EAAKC,GAAAA,IAAAA,CAAKC,GAAG,CAACJ,EAAIC,EAAAA,EAAAA,CAAAA;QACxB,MAAMI,EAAAA,GAAK3C,aAAQC,CAAAA,MAAM,CAACuC,EAAAA,CAAAA;QAE1B,MAAMI,EAAAA,GAAK,IAAI,CAAC7C,IAAI;QACpB,MAAM8C,EAAAA,GAAKR,MAAMtC,IAAI;QAErB,MAAM+C,EAAAA,GAAK,IAAI,CAAClD,KAAK;QACrB,MAAMmD,EAAAA,GAAKV,MAAMzC,KAAK;AAEtB,QAAA,OAAO,IAAIE,KAAAA,CAAM,EAACgD,IAAMH,EAAAA,GAAKC,EAAC,CAAA,GAAOG,EAAMJ,IAAAA,EAAKE,GAAAA,EAAC,CAAKL,EAAAA,EAAAA,CAAAA;AACxD;AAEAS,IAAAA,GAAAA,CAAIZ,KAAY,EAAE;QAChB,MAAMC,EAAAA,GAAK,IAAI,CAAC3C,QAAQ;QACxB,MAAM4C,EAAAA,GAAKF,MAAM1C,QAAQ;AAEzB,QAAA,MAAM6C,KAAKF,EAAKC,GAAAA,EAAAA;QAEhB,MAAMO,EAAAA,GAAK,IAAI,CAAClD,KAAK;QACrB,MAAMmD,EAAAA,GAAKV,MAAMzC,KAAK;QAEtB,OAAO,IAAIE,KAAMgD,CAAAA,EAAAA,GAAKC,EAAIP,EAAAA,EAAAA,CAAAA;AAC5B;AAEAU,IAAAA,GAAAA,CAAIb,KAAY,EAAE;QAChB,MAAMC,EAAAA,GAAK,IAAI,CAAC3C,QAAQ;QACxB,MAAMkD,EAAAA,GAAKR,MAAMtC,IAAI;QAErB,MAAM+C,EAAAA,GAAK,IAAI,CAAClD,KAAK;QACrB,MAAMmD,EAAAA,GAAKV,MAAMzC,KAAK;AAEtB,QAAA,OAAO,IAAIE,KAAAA,CAAM,EAACgD,GAAKD,KAAME,EAAIT,EAAAA,EAAAA,CAAAA;AACnC;IAEAa,KAAQ,GAAA;AACN,QAAA,OAAO,IAAIrD,KAAM,CAAA,IAAI,CAACF,KAAK,GAAI,IAAI,CAACA,KAAK,GAAG,IAAI,CAACG,IAAI,EAAG,IAAI,CAACJ,QAAQ,CAAA;AACvE;IAEAyD,IAAO,GAAA;QACL,OAAO,IAAItD,MAAM,IAAI,CAACF,KAAK,IAAI,IAAI,CAACG,IAAI,GAAI,IAAI,CAACH,KAAK,GAAG,IAAI,CAACG,IAAI,CAAA,EAAI,IAAI,CAACJ,QAAQ,CAAA;AACrF;IAEA0D,KAAQ,GAAA;AACN,QAAA,OAAO,IAAIvD,KAAAA,CAAM,IAAI,CAACF,KAAK,GAAI,IAAI,CAACG,IAAI,GAAG,EAAE,GAAK,CAAC,IAAI,CAACH,KAAK,GAAI,IAAI,CAACG,IAAI,GAAG,EAAE,IAAK,IAAI,CAACA,IAAI,EAAG,IAAI,CAACJ,QAAQ,CAAA;AAC/G;AAEF;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/mods/fixed/index.ts"],"sourcesContent":["import { ZeroHexString } from \"@hazae41/hexane\"\nimport { BigInts } from \"libs/bigint/index.js\"\n\nexport type FixedInit<D extends number = number> =\n | ZeroHexFixedInit<D>\n | BigIntFixedInit<D>\n\nexport interface ZeroHexFixedInit<D extends number = number> {\n readonly value: ZeroHexString,\n readonly decimals: D\n}\n\nexport class ZeroHexFixedInit<D extends number = number> {\n\n constructor(\n readonly value: ZeroHexString,\n readonly decimals: D\n ) { }\n\n}\n\nexport interface BigIntFixedInit<D extends number = number> {\n readonly value: bigint,\n readonly decimals: D\n}\n\nexport class BigIntFixedInit<D extends number = number> {\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) { }\n\n}\n\nexport namespace Fixed {\n\n export type From<D extends number = number> =\n | BigIntFixedInit<D>\n | ZeroHexFixedInit<D>\n\n}\n\nexport class Fixed<D extends number = number> implements BigIntFixedInit {\n\n readonly tens: bigint\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) {\n this.tens = BigInts.tensOf(decimals)\n }\n\n static unit<D extends number = number>(decimals: D) {\n return new Fixed(BigInts.tensOf(decimals), decimals)\n }\n\n static from<D extends number = number>(from: Fixed.From<D>) {\n if (from instanceof Fixed)\n return from\n if (typeof from.value === \"bigint\")\n return new Fixed(from.value, from.decimals)\n return new Fixed(ZeroHexString.toBigInt(from.value), from.decimals)\n }\n\n static fromBigInt(value: bigint) {\n return new Fixed(value, 0)\n }\n\n static fromBigIntInit<D extends number>(init: BigIntFixedInit<D>) {\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexInit<D extends number>(init: ZeroHexFixedInit<D>) {\n return new Fixed(ZeroHexString.toBigInt(init.value), init.decimals)\n }\n\n static fromZeroHexString(value: ZeroHexString) {\n return new Fixed(ZeroHexString.toBigInt(value), 0)\n }\n\n static fromDecimalString(text: string) {\n const [whole = \"0\", decimal = \"0\"] = text.split(\".\")\n\n const value = BigInt(whole + decimal)\n\n return new Fixed(value, decimal.length)\n }\n\n toBigInt() {\n return this.value\n }\n\n toZeroHexString() {\n return ZeroHexString.fromBigInt(this.value)\n }\n\n toBigIntInit() {\n return new BigIntFixedInit(this.value, this.decimals)\n }\n\n toZeroHexInit() {\n return new ZeroHexFixedInit(ZeroHexString.fromBigInt(this.value), this.decimals)\n }\n\n toDecimalString() {\n const raw = this.value.toString().padStart(this.decimals, \"0\")\n\n const whole = raw.slice(0, raw.length - this.decimals).replaceAll(\"0\", \" \").trimStart().replaceAll(\" \", \"0\")\n const decimal = raw.slice(raw.length - this.decimals).replaceAll(\"0\", \" \").trimEnd().replaceAll(\" \", \"0\")\n\n if (!decimal)\n return (whole || \"0\")\n\n return `${whole || \"0\"}.${decimal}`\n }\n\n toString() {\n return this.toDecimalString()\n }\n\n toJSON() {\n return this.toZeroHexInit()\n }\n\n as(decimals: number) {\n return new Fixed(this.value, decimals)\n }\n\n move<D extends number>(decimals: D): Fixed<D> {\n if (this.decimals > decimals)\n return new Fixed(this.value / BigInts.tensOf(this.decimals - decimals), decimals)\n if (this.decimals < decimals)\n return new Fixed(this.value * BigInts.tensOf(decimals - this.decimals), decimals)\n return new Fixed(this.value, decimals)\n }\n\n add(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) + (vy * (tr / ty)), dr)\n }\n\n sub(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) - (vy * (tr / ty)), dr)\n }\n\n mul(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = dx + dy\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed(vx * vy, dr)\n }\n\n div(other: Fixed) {\n const dx = this.decimals\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * ty) / vy, dx)\n }\n\n floor() {\n return new Fixed(this.value - (this.value % this.tens), this.decimals)\n }\n\n ceil() {\n return new Fixed(this.value + (this.tens - (this.value % this.tens)), this.decimals)\n }\n\n round() {\n return new Fixed(this.value + (this.tens / 2n) - ((this.value + (this.tens / 2n)) % this.tens), this.decimals)\n }\n\n}\n"],"names":["ZeroHexFixedInit","constructor","decimals","value","BigIntFixedInit","Fixed","tens","BigInts","tensOf","unit","from","ZeroHexString","toBigInt","fromBigInt","fromBigIntInit","init","fromZeroHexInit","fromZeroHexString","fromDecimalString","text","whole","decimal","split","BigInt","length","toZeroHexString","toBigIntInit","toZeroHexInit","toDecimalString","raw","toString","padStart","slice","replaceAll","trimStart","trimEnd","toJSON","as","move","add","other","dx","dy","dr","Math","max","tr","tx","ty","vx","vy","sub","mul","div","floor","ceil","round"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ZeroHexString } from '@hazae41/
|
|
1
|
+
import { ZeroHexString } from '@hazae41/hexane';
|
|
2
2
|
import { BigInts } from '../../libs/bigint/index.mjs';
|
|
3
3
|
|
|
4
4
|
class ZeroHexFixedInit {
|
|
@@ -29,37 +29,39 @@ class Fixed {
|
|
|
29
29
|
static unit(decimals) {
|
|
30
30
|
return new Fixed(BigInts.tensOf(decimals), decimals);
|
|
31
31
|
}
|
|
32
|
-
static from(
|
|
33
|
-
if (
|
|
34
|
-
if (typeof
|
|
35
|
-
return new Fixed(
|
|
32
|
+
static from(from) {
|
|
33
|
+
if (from instanceof Fixed) return from;
|
|
34
|
+
if (typeof from.value === "bigint") return new Fixed(from.value, from.decimals);
|
|
35
|
+
return new Fixed(ZeroHexString.toBigInt(from.value), from.decimals);
|
|
36
36
|
}
|
|
37
|
-
static
|
|
38
|
-
return Fixed
|
|
37
|
+
static fromBigInt(value) {
|
|
38
|
+
return new Fixed(value, 0);
|
|
39
39
|
}
|
|
40
40
|
static fromBigIntInit(init) {
|
|
41
41
|
return new Fixed(init.value, init.decimals);
|
|
42
42
|
}
|
|
43
|
-
static
|
|
44
|
-
return new Fixed(ZeroHexString.toBigInt(value), decimals);
|
|
43
|
+
static fromZeroHexInit(init) {
|
|
44
|
+
return new Fixed(ZeroHexString.toBigInt(init.value), init.decimals);
|
|
45
|
+
}
|
|
46
|
+
static fromZeroHexString(value) {
|
|
47
|
+
return new Fixed(ZeroHexString.toBigInt(value), 0);
|
|
45
48
|
}
|
|
46
|
-
static fromDecimalString(text
|
|
49
|
+
static fromDecimalString(text) {
|
|
47
50
|
const [whole = "0", decimal = "0"] = text.split(".");
|
|
48
|
-
const value = BigInt(whole + decimal
|
|
49
|
-
return new Fixed(value,
|
|
51
|
+
const value = BigInt(whole + decimal);
|
|
52
|
+
return new Fixed(value, decimal.length);
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return Fixed.fromDecimalString(text, decimals);
|
|
54
|
+
toBigInt() {
|
|
55
|
+
return this.value;
|
|
54
56
|
}
|
|
55
|
-
|
|
56
|
-
return
|
|
57
|
+
toZeroHexString() {
|
|
58
|
+
return ZeroHexString.fromBigInt(this.value);
|
|
57
59
|
}
|
|
58
60
|
toBigIntInit() {
|
|
59
61
|
return new BigIntFixedInit(this.value, this.decimals);
|
|
60
62
|
}
|
|
61
|
-
|
|
62
|
-
return ZeroHexString.fromBigInt(this.value);
|
|
63
|
+
toZeroHexInit() {
|
|
64
|
+
return new ZeroHexFixedInit(ZeroHexString.fromBigInt(this.value), this.decimals);
|
|
63
65
|
}
|
|
64
66
|
toDecimalString() {
|
|
65
67
|
const raw = this.value.toString().padStart(this.decimals, "0");
|
|
@@ -80,7 +82,7 @@ class Fixed {
|
|
|
80
82
|
move(decimals) {
|
|
81
83
|
if (this.decimals > decimals) return new Fixed(this.value / BigInts.tensOf(this.decimals - decimals), decimals);
|
|
82
84
|
if (this.decimals < decimals) return new Fixed(this.value * BigInts.tensOf(decimals - this.decimals), decimals);
|
|
83
|
-
return this;
|
|
85
|
+
return new Fixed(this.value, decimals);
|
|
84
86
|
}
|
|
85
87
|
add(other) {
|
|
86
88
|
const dx = this.decimals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../src/mods/fixed/index.ts"],"sourcesContent":["import { ZeroHexString } from \"@hazae41/hex\"\nimport { BigInts } from \"libs/bigint/index.js\"\n\nexport interface ZeroHexFixedInit<D extends number = number> {\n readonly value: ZeroHexString,\n readonly decimals: D\n}\n\nexport class ZeroHexFixedInit<D extends number = number> {\n\n constructor(\n readonly value: ZeroHexString,\n readonly decimals: D\n ) { }\n\n}\n\nexport interface BigIntFixedInit<D extends number = number> {\n readonly value: bigint,\n readonly decimals: D\n}\n\nexport class BigIntFixedInit<D extends number = number> {\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) { }\n\n}\n\nexport namespace Fixed {\n\n export type From<D extends number = number> =\n | BigIntFixedInit<D>\n | ZeroHexFixedInit<D>\n\n}\n\nexport class Fixed<D extends number = number> implements BigIntFixedInit {\n\n readonly tens: bigint\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) {\n this.tens = BigInts.tensOf(decimals)\n }\n\n static unit<D extends number = number>(decimals: D) {\n return new Fixed(BigInts.tensOf(decimals), decimals)\n }\n\n static from<D extends number = number>(init: Fixed.From<D>) {\n if (init instanceof Fixed)\n return init\n if (typeof init.value === \"string\")\n return Fixed.fromZeroHexString(init.value, init.decimals)\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexInit<D extends number>(init: ZeroHexFixedInit<D>) {\n return Fixed.fromZeroHexString(init.value, init.decimals)\n }\n\n static fromBigIntInit<D extends number>(init: BigIntFixedInit<D>) {\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexString<D extends number>(value: ZeroHexString, decimals: D) {\n return new Fixed(ZeroHexString.toBigInt(value), decimals)\n }\n\n static fromDecimalString<D extends number>(text: string, decimals: D) {\n const [whole = \"0\", decimal = \"0\"] = text.split(\".\")\n\n const value = BigInt(whole + decimal.padEnd(decimals, \"0\").slice(0, decimals))\n\n return new Fixed(value, decimals)\n }\n\n static fromString<D extends number>(text: string, decimals: D) {\n if (ZeroHexString.String.is(text))\n return Fixed.fromZeroHexString(text, decimals)\n return Fixed.fromDecimalString(text, decimals)\n }\n\n toZeroHexInit() {\n return new ZeroHexFixedInit(this.toZeroHexString(), this.decimals)\n }\n\n toBigIntInit() {\n return new BigIntFixedInit(this.value, this.decimals)\n }\n\n toZeroHexString() {\n return ZeroHexString.fromBigInt(this.value)\n }\n\n toDecimalString() {\n const raw = this.value.toString().padStart(this.decimals, \"0\")\n\n const whole = raw.slice(0, raw.length - this.decimals).replaceAll(\"0\", \" \").trimStart().replaceAll(\" \", \"0\")\n const decimal = raw.slice(raw.length - this.decimals).replaceAll(\"0\", \" \").trimEnd().replaceAll(\" \", \"0\")\n\n if (!decimal)\n return (whole || \"0\")\n\n return `${whole || \"0\"}.${decimal}`\n }\n\n toString() {\n return this.toDecimalString()\n }\n\n toJSON() {\n return this.toZeroHexInit()\n }\n\n as(decimals: number) {\n return new Fixed(this.value, decimals)\n }\n\n move(decimals: number) {\n if (this.decimals > decimals)\n return new Fixed(this.value / BigInts.tensOf(this.decimals - decimals), decimals)\n if (this.decimals < decimals)\n return new Fixed(this.value * BigInts.tensOf(decimals - this.decimals), decimals)\n return this\n }\n\n add(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) + (vy * (tr / ty)), dr)\n }\n\n sub(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) - (vy * (tr / ty)), dr)\n }\n\n mul(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = dx + dy\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed(vx * vy, dr)\n }\n\n div(other: Fixed) {\n const dx = this.decimals\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * ty) / vy, dx)\n }\n\n floor() {\n return new Fixed(this.value - (this.value % this.tens), this.decimals)\n }\n\n ceil() {\n return new Fixed(this.value + (this.tens - (this.value % this.tens)), this.decimals)\n }\n\n round() {\n return new Fixed(this.value + (this.tens / 2n) - ((this.value + (this.tens / 2n)) % this.tens), this.decimals)\n }\n\n}\n"],"names":["ZeroHexFixedInit","constructor","decimals","value","BigIntFixedInit","Fixed","tens","BigInts","tensOf","unit","from","init","fromZeroHexString","fromZeroHexInit","fromBigIntInit","ZeroHexString","toBigInt","fromDecimalString","text","whole","decimal","split","BigInt","padEnd","slice","fromString","String","is","toZeroHexInit","toZeroHexString","toBigIntInit","fromBigInt","toDecimalString","raw","toString","padStart","length","replaceAll","trimStart","trimEnd","toJSON","as","move","add","other","dx","dy","dr","Math","max","tr","tx","ty","vx","vy","sub","mul","div","floor","ceil","round"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../src/mods/fixed/index.ts"],"sourcesContent":["import { ZeroHexString } from \"@hazae41/hexane\"\nimport { BigInts } from \"libs/bigint/index.js\"\n\nexport type FixedInit<D extends number = number> =\n | ZeroHexFixedInit<D>\n | BigIntFixedInit<D>\n\nexport interface ZeroHexFixedInit<D extends number = number> {\n readonly value: ZeroHexString,\n readonly decimals: D\n}\n\nexport class ZeroHexFixedInit<D extends number = number> {\n\n constructor(\n readonly value: ZeroHexString,\n readonly decimals: D\n ) { }\n\n}\n\nexport interface BigIntFixedInit<D extends number = number> {\n readonly value: bigint,\n readonly decimals: D\n}\n\nexport class BigIntFixedInit<D extends number = number> {\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) { }\n\n}\n\nexport namespace Fixed {\n\n export type From<D extends number = number> =\n | BigIntFixedInit<D>\n | ZeroHexFixedInit<D>\n\n}\n\nexport class Fixed<D extends number = number> implements BigIntFixedInit {\n\n readonly tens: bigint\n\n constructor(\n readonly value: bigint,\n readonly decimals: D\n ) {\n this.tens = BigInts.tensOf(decimals)\n }\n\n static unit<D extends number = number>(decimals: D) {\n return new Fixed(BigInts.tensOf(decimals), decimals)\n }\n\n static from<D extends number = number>(from: Fixed.From<D>) {\n if (from instanceof Fixed)\n return from\n if (typeof from.value === \"bigint\")\n return new Fixed(from.value, from.decimals)\n return new Fixed(ZeroHexString.toBigInt(from.value), from.decimals)\n }\n\n static fromBigInt(value: bigint) {\n return new Fixed(value, 0)\n }\n\n static fromBigIntInit<D extends number>(init: BigIntFixedInit<D>) {\n return new Fixed(init.value, init.decimals)\n }\n\n static fromZeroHexInit<D extends number>(init: ZeroHexFixedInit<D>) {\n return new Fixed(ZeroHexString.toBigInt(init.value), init.decimals)\n }\n\n static fromZeroHexString(value: ZeroHexString) {\n return new Fixed(ZeroHexString.toBigInt(value), 0)\n }\n\n static fromDecimalString(text: string) {\n const [whole = \"0\", decimal = \"0\"] = text.split(\".\")\n\n const value = BigInt(whole + decimal)\n\n return new Fixed(value, decimal.length)\n }\n\n toBigInt() {\n return this.value\n }\n\n toZeroHexString() {\n return ZeroHexString.fromBigInt(this.value)\n }\n\n toBigIntInit() {\n return new BigIntFixedInit(this.value, this.decimals)\n }\n\n toZeroHexInit() {\n return new ZeroHexFixedInit(ZeroHexString.fromBigInt(this.value), this.decimals)\n }\n\n toDecimalString() {\n const raw = this.value.toString().padStart(this.decimals, \"0\")\n\n const whole = raw.slice(0, raw.length - this.decimals).replaceAll(\"0\", \" \").trimStart().replaceAll(\" \", \"0\")\n const decimal = raw.slice(raw.length - this.decimals).replaceAll(\"0\", \" \").trimEnd().replaceAll(\" \", \"0\")\n\n if (!decimal)\n return (whole || \"0\")\n\n return `${whole || \"0\"}.${decimal}`\n }\n\n toString() {\n return this.toDecimalString()\n }\n\n toJSON() {\n return this.toZeroHexInit()\n }\n\n as(decimals: number) {\n return new Fixed(this.value, decimals)\n }\n\n move<D extends number>(decimals: D): Fixed<D> {\n if (this.decimals > decimals)\n return new Fixed(this.value / BigInts.tensOf(this.decimals - decimals), decimals)\n if (this.decimals < decimals)\n return new Fixed(this.value * BigInts.tensOf(decimals - this.decimals), decimals)\n return new Fixed(this.value, decimals)\n }\n\n add(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) + (vy * (tr / ty)), dr)\n }\n\n sub(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = Math.max(dx, dy)\n const tr = BigInts.tensOf(dr)\n\n const tx = this.tens\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * (tr / tx)) - (vy * (tr / ty)), dr)\n }\n\n mul(other: Fixed) {\n const dx = this.decimals\n const dy = other.decimals\n\n const dr = dx + dy\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed(vx * vy, dr)\n }\n\n div(other: Fixed) {\n const dx = this.decimals\n const ty = other.tens\n\n const vx = this.value\n const vy = other.value\n\n return new Fixed((vx * ty) / vy, dx)\n }\n\n floor() {\n return new Fixed(this.value - (this.value % this.tens), this.decimals)\n }\n\n ceil() {\n return new Fixed(this.value + (this.tens - (this.value % this.tens)), this.decimals)\n }\n\n round() {\n return new Fixed(this.value + (this.tens / 2n) - ((this.value + (this.tens / 2n)) % this.tens), this.decimals)\n }\n\n}\n"],"names":["ZeroHexFixedInit","constructor","decimals","value","BigIntFixedInit","Fixed","tens","BigInts","tensOf","unit","from","ZeroHexString","toBigInt","fromBigInt","fromBigIntInit","init","fromZeroHexInit","fromZeroHexString","fromDecimalString","text","whole","decimal","split","BigInt","length","toZeroHexString","toBigIntInit","toZeroHexInit","toDecimalString","raw","toString","padStart","slice","replaceAll","trimStart","trimEnd","toJSON","as","move","add","other","dx","dy","dr","Math","max","tr","tx","ty","vx","vy","sub","mul","div","floor","ceil","round"],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { BigIntFixedInit, Fixed, ZeroHexFixedInit } from './mods/fixed/index.js';
|
|
1
|
+
export { BigIntFixedInit, Fixed, FixedInit, ZeroHexFixedInit } from './mods/fixed/index.js';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ZeroHexString } from '@hazae41/
|
|
1
|
+
import { ZeroHexString } from '@hazae41/hexane';
|
|
2
2
|
|
|
3
|
+
type FixedInit<D extends number = number> = ZeroHexFixedInit<D> | BigIntFixedInit<D>;
|
|
3
4
|
interface ZeroHexFixedInit<D extends number = number> {
|
|
4
5
|
readonly value: ZeroHexString;
|
|
5
6
|
readonly decimals: D;
|
|
@@ -27,22 +28,23 @@ declare class Fixed<D extends number = number> implements BigIntFixedInit {
|
|
|
27
28
|
readonly tens: bigint;
|
|
28
29
|
constructor(value: bigint, decimals: D);
|
|
29
30
|
static unit<D extends number = number>(decimals: D): Fixed<D>;
|
|
30
|
-
static from<D extends number = number>(
|
|
31
|
-
static
|
|
31
|
+
static from<D extends number = number>(from: Fixed.From<D>): Fixed<any>;
|
|
32
|
+
static fromBigInt(value: bigint): Fixed<0>;
|
|
32
33
|
static fromBigIntInit<D extends number>(init: BigIntFixedInit<D>): Fixed<D>;
|
|
33
|
-
static
|
|
34
|
-
static
|
|
35
|
-
static
|
|
36
|
-
|
|
37
|
-
toBigIntInit(): BigIntFixedInit<D>;
|
|
34
|
+
static fromZeroHexInit<D extends number>(init: ZeroHexFixedInit<D>): Fixed<D>;
|
|
35
|
+
static fromZeroHexString(value: ZeroHexString): Fixed<0>;
|
|
36
|
+
static fromDecimalString(text: string): Fixed<number>;
|
|
37
|
+
toBigInt(): bigint;
|
|
38
38
|
toZeroHexString(): `0x${string}` & {
|
|
39
|
-
readonly [
|
|
39
|
+
readonly [k: _hazae41_hexane.ZeroHexSymbol]: true;
|
|
40
40
|
};
|
|
41
|
+
toBigIntInit(): BigIntFixedInit<D>;
|
|
42
|
+
toZeroHexInit(): ZeroHexFixedInit<D>;
|
|
41
43
|
toDecimalString(): string;
|
|
42
44
|
toString(): string;
|
|
43
45
|
toJSON(): ZeroHexFixedInit<D>;
|
|
44
46
|
as(decimals: number): Fixed<number>;
|
|
45
|
-
move(decimals:
|
|
47
|
+
move<D extends number>(decimals: D): Fixed<D>;
|
|
46
48
|
add(other: Fixed): Fixed<number>;
|
|
47
49
|
sub(other: Fixed): Fixed<number>;
|
|
48
50
|
mul(other: Fixed): Fixed<number>;
|
|
@@ -53,3 +55,4 @@ declare class Fixed<D extends number = number> implements BigIntFixedInit {
|
|
|
53
55
|
}
|
|
54
56
|
|
|
55
57
|
export { BigIntFixedInit, Fixed, ZeroHexFixedInit };
|
|
58
|
+
export type { FixedInit };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@hazae41/fixed",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.2",
|
|
5
5
|
"description": "Fixed-point numbers in idiomatic TypeScript",
|
|
6
6
|
"homepage": "https://github.com/hazae41/fixed",
|
|
7
7
|
"repository": "github:hazae41/fixed",
|
|
@@ -45,6 +45,6 @@
|
|
|
45
45
|
"unit-tested"
|
|
46
46
|
],
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@hazae41/
|
|
48
|
+
"@hazae41/hexane": "^1.0.11"
|
|
49
49
|
}
|
|
50
50
|
}
|