@c9up/atom 0.1.3 → 0.1.5
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.
- package/dist/Decimal.d.ts +167 -0
- package/dist/Decimal.d.ts.map +1 -0
- package/dist/Decimal.js +513 -0
- package/dist/Decimal.js.map +1 -0
- package/dist/atlas.d.ts +60 -0
- package/dist/atlas.d.ts.map +1 -0
- package/dist/atlas.js +79 -0
- package/dist/atlas.js.map +1 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +216 -0
- package/dist/index.js.map +1 -0
- package/dist/math.d.ts +37 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +187 -0
- package/dist/math.js.map +1 -0
- package/dist/native.d.ts +25 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +80 -0
- package/dist/native.js.map +1 -0
- package/index.darwin-arm64.node +0 -0
- package/index.darwin-x64.node +0 -0
- package/index.linux-arm64-gnu.node +0 -0
- package/index.linux-x64-gnu.node +0 -0
- package/index.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
- package/src/math.ts +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Decimal.js","sourceRoot":"","sources":["../src/Decimal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA+CzC,MAAM,OAAO,OAAO;IACnB,MAAM,CAAS;IAEf,YAAY,KAAmB;QAC9B,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,KAAmB;QAC9B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,IAAI;QACV,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,GAAG;QACT,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,cAAc,CACpB,KAA+B,EAC/B,KAAa;QAEb,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,WAAW,CACjB,KAAa,EACb,gBAAqD;QAErD,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,OAAO,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC,KAAmB;QACvB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAmB;QACxB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,KAAmB;QACxB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,KAAmB,EAAE,UAAsB,EAAE;QAChD,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,UAAsB,EAAE;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAC7D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,UAAuB,EAAE;QAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC;QACrC,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACzD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1E,OAAO,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QACzB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,EAAE,CAAC,KAAmB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,KAAmB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,EAAE,CAAC,KAAmB;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,KAAmB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,GAAiB,EAAE,GAAiB;QACzC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QACvC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QACvC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,CACN,GAAiB,EACjB,GAAiB,EACjB,UAA0B,EAAE;QAE5B,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,GAAG;QACF,OAAO,IAAI,CAAC,MAAM,EAAE;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,OAAO,CACX,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtB,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CACpB,CAAC;IACL,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC;IAC5B,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,SAAS;QACR,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,KAAK,GAAG,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,OAAkB,SAAS;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAkB,EAAE,UAA2B,EAAE;QACzD,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QACvC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC;QAC5C,MAAM,SAAS,GACd,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,CAAC,EAAE,OAAkB,OAAO;QAC3C,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,YAAY,CAClB,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EACpD,KAAK,CACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,OAAkB,OAAO;QAC/C,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;aAC/C,QAAQ,EAAE;aACV,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,KAAa,EAAE,UAA+B,EAAE;QAC5D,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QAC9C,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAClC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;QACtC,IAAI,KAAK,IAAI,SAAS,KAAK,EAAE,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACd,kBAAkB,IAAI,CAAC,MAAM,4BAA4B,KAAK,yBAAyB,CACvF,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAkB,EAAE,UAAsB,EAAE;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAkB,EAAE,UAAsB,EAAE;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,KAAmB,EAAE,UAAsB,EAAE;QACzD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAuC;QAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAEzD,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,UAAU,GAAgD,EAAE,CAAC;QACnE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;YAC/B,MAAM,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;YACpC,MAAM,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;YACxC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACtC,QAAQ,IAAI,KAAK,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC5B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;gBAAE,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,GAAG,EAAE,EAAE,CAAC;YAClB,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC5C,IAAI,IAAI,EAAE,CAAC;YACX,OAAO,EAAE,CAAC;YACV,IAAI,OAAO,IAAI,UAAU,CAAC,MAAM;gBAAE,OAAO,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACN,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,QAAQ,CACP,gBAAqD,EACrD,OAAkC;QAElC,IAAI,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CACtC,gBAAgB,EAChB,OAAO,CACY,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACD;AAaD,SAAS,cAAc,CAAC,KAAmB;IAC1C,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC5C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA+B;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,KAAa;IAC/C,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CACrB,GAAW,EACX,WAAmB,EACnB,WAAmB,EACnB,IAAe;IAEf,IAAI,WAAW,IAAI,WAAW,EAAE,CAAC;QAChC,OAAO,GAAG,GAAG,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC;IACvC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC;IACvB,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjC,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,OAAO;YACX,OAAO,CAAC,CAAC;QACV,KAAK,OAAO;YACX,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,MAAM;YACV,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,KAAK,SAAS;YACb,OAAO,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,WAAW,CAAC,CAAC,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YACxB,IAAI,KAAK,GAAG,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,MAAM;gBAAE,OAAO,CAAC,GAAG,IAAI,CAAC;YACpC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC;YAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD;YACC,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,wEAAwE;YACxE,wEAAwE;YACxE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;AACF,CAAC;AAoBD,SAAS,aAAa,CAAC,GAAY;IAClC,OAAO,CACN,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,qBAAqB,IAAI,GAAG;QAC5B,OAAQ,GAAmB,CAAC,mBAAmB,KAAK,UAAU;QAC9D,oBAAoB,IAAI,GAAG;QAC3B,OAAQ,GAAmB,CAAC,kBAAkB,KAAK,UAAU,CAC7D,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa,EAAE,OAAoB;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC1C,8DAA8D;IAC9D,8DAA8D;IAC9D,mDAAmD;IACnD,MAAM,IAAI,GAAG;QACZ,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;QAC3B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;QACvB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG;KAC7B,CAAC;IACF,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAChD,UAAU,GAAG,UAAU,CAAC,OAAO,CAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EACzC,EAAE,CACF,CAAC;IACF,UAAU,GAAG,UAAU,CAAC,OAAO,CAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAC3C,GAAG,CACH,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;QACxB,UAAU,GAAG,UAAU,CAAC,OAAO,CAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EACzC,GAAG,CACH,CAAC;IACH,CAAC;IACD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC/C,uDAAuD;IACvD,2DAA2D;IAC3D,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QAC3B,UAAU,GAAG,UAAU,CAAC,OAAO,CAC9B,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,EAC5C,GAAG,CACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAC7B,KAAa,EACb,OAA8B;IAE9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;IAC5E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC;IAE5E,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC1D,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7E,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QACnB,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IACD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE/C,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/atlas.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c9up/atom/atlas` — Atlas column-type adapter for {@link Decimal}.
|
|
3
|
+
*
|
|
4
|
+
* Wires `Atom.Decimal` into Atlas's `@Column({ prepare, consume })` opt-in
|
|
5
|
+
* column pipeline. Lives on a sub-export so the default `@c9up/atom` import
|
|
6
|
+
* surface stays adapter-free.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors Adonis Lucid's `@column.prepare` / `@column.consume` pattern —
|
|
9
|
+
* callbacks are baked into the entity definition; no global registry, no
|
|
10
|
+
* boot-time wiring.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
*
|
|
14
|
+
* import { Column, Entity, BaseEntity, PrimaryKey } from '@c9up/atlas'
|
|
15
|
+
* import { decimalAtlasAdapter } from '@c9up/atom/atlas'
|
|
16
|
+
*
|
|
17
|
+
* @Entity('accounts')
|
|
18
|
+
* class Account extends BaseEntity {
|
|
19
|
+
* @PrimaryKey() id!: number
|
|
20
|
+
* @Column(decimalAtlasAdapter) balance!: Decimal | null
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* @implements Story 35.10
|
|
24
|
+
*/
|
|
25
|
+
import { Decimal } from "./Decimal.js";
|
|
26
|
+
/**
|
|
27
|
+
* Atlas adapter for postgres `numeric` / `decimal` (and equivalent on mysql /
|
|
28
|
+
* sqlite) columns. `consume` lifts string/number/bigint DB values into a
|
|
29
|
+
* {@link Decimal}; `prepare` lowers a `Decimal` back to its lossless string
|
|
30
|
+
* form for the SQL bind parameter.
|
|
31
|
+
*
|
|
32
|
+
* - `consume(null)` / `consume(undefined)` returns `null` so nullable columns
|
|
33
|
+
* keep their semantics through the adapter pipeline.
|
|
34
|
+
* - `prepare(null)` / `prepare(undefined)` returns `null` symmetrically.
|
|
35
|
+
* - `prepare` rejects anything that is not a `Decimal` — protects against the
|
|
36
|
+
* common "I forgot to wrap" footgun where a JS number would otherwise
|
|
37
|
+
* silently coerce via `String(x)` and lose precision.
|
|
38
|
+
*
|
|
39
|
+
* **Driver requirement:** configure your DB driver to return `numeric` /
|
|
40
|
+
* `decimal` columns as `string` (postgres-js does this by default; mysql2
|
|
41
|
+
* needs `decimalNumbers: false`; better-sqlite3 returns whatever the bound
|
|
42
|
+
* type was). If the driver returns numeric values as JS `number`, precision
|
|
43
|
+
* is already lost before `consume` is called — `9007199254740993` (one beyond
|
|
44
|
+
* `Number.MAX_SAFE_INTEGER`) arrives as `9007199254740992` and the adapter
|
|
45
|
+
* faithfully wraps the rounded value. The "lossless" round-trip claim only
|
|
46
|
+
* holds when DB → driver → adapter stays in the string/bigint domain.
|
|
47
|
+
*
|
|
48
|
+
* The shape `{ prepare, consume }` is spreadable directly into `@Column(...)`:
|
|
49
|
+
* `@Column(decimalAtlasAdapter)` is identical to
|
|
50
|
+
* `@Column({ prepare: decimalAtlasAdapter.prepare, consume: decimalAtlasAdapter.consume })`.
|
|
51
|
+
*
|
|
52
|
+
* The exported object is `Object.freeze`d so a stray test setup file or
|
|
53
|
+
* plugin cannot monkey-patch `prepare` / `consume` at runtime and silently
|
|
54
|
+
* corrupt every repository sharing this import.
|
|
55
|
+
*/
|
|
56
|
+
export declare const decimalAtlasAdapter: Readonly<{
|
|
57
|
+
consume(raw: unknown): Decimal | null;
|
|
58
|
+
prepare(value: unknown): string | null;
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=atlas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,mBAAmB;iBAClB,OAAO,GAAG,OAAO,GAAG,IAAI;mBActB,OAAO,GAAG,MAAM,GAAG,IAAI;EAUrC,CAAC"}
|
package/dist/atlas.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@c9up/atom/atlas` — Atlas column-type adapter for {@link Decimal}.
|
|
3
|
+
*
|
|
4
|
+
* Wires `Atom.Decimal` into Atlas's `@Column({ prepare, consume })` opt-in
|
|
5
|
+
* column pipeline. Lives on a sub-export so the default `@c9up/atom` import
|
|
6
|
+
* surface stays adapter-free.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors Adonis Lucid's `@column.prepare` / `@column.consume` pattern —
|
|
9
|
+
* callbacks are baked into the entity definition; no global registry, no
|
|
10
|
+
* boot-time wiring.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
*
|
|
14
|
+
* import { Column, Entity, BaseEntity, PrimaryKey } from '@c9up/atlas'
|
|
15
|
+
* import { decimalAtlasAdapter } from '@c9up/atom/atlas'
|
|
16
|
+
*
|
|
17
|
+
* @Entity('accounts')
|
|
18
|
+
* class Account extends BaseEntity {
|
|
19
|
+
* @PrimaryKey() id!: number
|
|
20
|
+
* @Column(decimalAtlasAdapter) balance!: Decimal | null
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* @implements Story 35.10
|
|
24
|
+
*/
|
|
25
|
+
import { Decimal } from "./Decimal.js";
|
|
26
|
+
/**
|
|
27
|
+
* Atlas adapter for postgres `numeric` / `decimal` (and equivalent on mysql /
|
|
28
|
+
* sqlite) columns. `consume` lifts string/number/bigint DB values into a
|
|
29
|
+
* {@link Decimal}; `prepare` lowers a `Decimal` back to its lossless string
|
|
30
|
+
* form for the SQL bind parameter.
|
|
31
|
+
*
|
|
32
|
+
* - `consume(null)` / `consume(undefined)` returns `null` so nullable columns
|
|
33
|
+
* keep their semantics through the adapter pipeline.
|
|
34
|
+
* - `prepare(null)` / `prepare(undefined)` returns `null` symmetrically.
|
|
35
|
+
* - `prepare` rejects anything that is not a `Decimal` — protects against the
|
|
36
|
+
* common "I forgot to wrap" footgun where a JS number would otherwise
|
|
37
|
+
* silently coerce via `String(x)` and lose precision.
|
|
38
|
+
*
|
|
39
|
+
* **Driver requirement:** configure your DB driver to return `numeric` /
|
|
40
|
+
* `decimal` columns as `string` (postgres-js does this by default; mysql2
|
|
41
|
+
* needs `decimalNumbers: false`; better-sqlite3 returns whatever the bound
|
|
42
|
+
* type was). If the driver returns numeric values as JS `number`, precision
|
|
43
|
+
* is already lost before `consume` is called — `9007199254740993` (one beyond
|
|
44
|
+
* `Number.MAX_SAFE_INTEGER`) arrives as `9007199254740992` and the adapter
|
|
45
|
+
* faithfully wraps the rounded value. The "lossless" round-trip claim only
|
|
46
|
+
* holds when DB → driver → adapter stays in the string/bigint domain.
|
|
47
|
+
*
|
|
48
|
+
* The shape `{ prepare, consume }` is spreadable directly into `@Column(...)`:
|
|
49
|
+
* `@Column(decimalAtlasAdapter)` is identical to
|
|
50
|
+
* `@Column({ prepare: decimalAtlasAdapter.prepare, consume: decimalAtlasAdapter.consume })`.
|
|
51
|
+
*
|
|
52
|
+
* The exported object is `Object.freeze`d so a stray test setup file or
|
|
53
|
+
* plugin cannot monkey-patch `prepare` / `consume` at runtime and silently
|
|
54
|
+
* corrupt every repository sharing this import.
|
|
55
|
+
*/
|
|
56
|
+
export const decimalAtlasAdapter = Object.freeze({
|
|
57
|
+
consume(raw) {
|
|
58
|
+
if (raw === null || raw === undefined)
|
|
59
|
+
return null;
|
|
60
|
+
if (raw instanceof Decimal)
|
|
61
|
+
return raw;
|
|
62
|
+
if (typeof raw === "string" ||
|
|
63
|
+
typeof raw === "number" ||
|
|
64
|
+
typeof raw === "bigint") {
|
|
65
|
+
return new Decimal(raw);
|
|
66
|
+
}
|
|
67
|
+
throw new TypeError(`decimalAtlasAdapter.consume: expected string | number | bigint | Decimal | null, got ${typeof raw}`);
|
|
68
|
+
},
|
|
69
|
+
prepare(value) {
|
|
70
|
+
if (value === null || value === undefined)
|
|
71
|
+
return null;
|
|
72
|
+
if (!(value instanceof Decimal)) {
|
|
73
|
+
throw new TypeError(`decimalAtlasAdapter.prepare: expected a Decimal instance, got ${typeof value === "object" ? Object.prototype.toString.call(value) : typeof value}. ` +
|
|
74
|
+
"Wrap the value with `new Decimal(...)` before assigning to a column tagged with this adapter.");
|
|
75
|
+
}
|
|
76
|
+
return value.toString();
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=atlas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atlas.js","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,OAAO,CAAC,GAAY;QACnB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnD,IAAI,GAAG,YAAY,OAAO;YAAE,OAAO,GAAG,CAAC;QACvC,IACC,OAAO,GAAG,KAAK,QAAQ;YACvB,OAAO,GAAG,KAAK,QAAQ;YACvB,OAAO,GAAG,KAAK,QAAQ,EACtB,CAAC;YACF,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,SAAS,CAClB,wFAAwF,OAAO,GAAG,EAAE,CACpG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAc;QACrB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvD,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,SAAS,CAClB,iEAAiE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI;gBACpJ,+FAA+F,CAChG,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;CACD,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @c9up/atom — exact decimal arithmetic.
|
|
3
|
+
* The Rust engine is required (NAPI in Node, WASM in browser) — there is no JS/TS fallback.
|
|
4
|
+
*/
|
|
5
|
+
export type { BetweenOptions, DecimalInput, DecimalScaled, DivOptions, MedianOptions, PowOptions, QuantizeOptions, RoundMode, SqrtOptions, StddevOptions, ToMinorUnitsOptions, } from "./Decimal.js";
|
|
6
|
+
export { Decimal } from "./Decimal.js";
|
|
7
|
+
export { isNativeAvailable } from "./native.js";
|
|
8
|
+
import type { MedianOptions, StddevOptions } from "./Decimal.js";
|
|
9
|
+
import { Decimal, type DecimalInput } from "./Decimal.js";
|
|
10
|
+
export declare function decimal(value: DecimalInput): Decimal;
|
|
11
|
+
declare function sumFn(...args: [Iterable<DecimalInput>] | DecimalInput[]): Decimal;
|
|
12
|
+
declare function avgFn(...args: [Iterable<DecimalInput>] | DecimalInput[]): Decimal;
|
|
13
|
+
declare function minFn(...args: [Iterable<DecimalInput>] | DecimalInput[]): Decimal;
|
|
14
|
+
declare function maxFn(...args: [Iterable<DecimalInput>] | DecimalInput[]): Decimal;
|
|
15
|
+
declare function modeFn(...args: [Iterable<DecimalInput>] | DecimalInput[]): Decimal[];
|
|
16
|
+
declare function medianFn(...args: [Iterable<DecimalInput>, MedianOptions?] | DecimalInput[]): Decimal;
|
|
17
|
+
declare function stddevFn(...args: [Iterable<DecimalInput>, StddevOptions?] | DecimalInput[]): Decimal;
|
|
18
|
+
/**
|
|
19
|
+
* Atom — namespace bundling the public functional API.
|
|
20
|
+
*
|
|
21
|
+
* Two equivalent ways to access aggregates: `Atom.sum(...)` for namespaced
|
|
22
|
+
* usage, or named imports (`import { sum } from '@c9up/atom'`).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* import { Atom, decimal } from '@c9up/atom'
|
|
26
|
+
* const total = Atom.sum('1.10', '2.20', '3.33') // → Decimal('6.63')
|
|
27
|
+
* const mean = Atom.avg(['10', '20', '30']) // → Decimal('20')
|
|
28
|
+
* const value = decimal('99.99').times('0.20') // → Decimal('19.998')
|
|
29
|
+
*/
|
|
30
|
+
export declare const Atom: {
|
|
31
|
+
/** Construct a `Decimal` from a string / number / bigint / Decimal. Alias for `Decimal.from`. */
|
|
32
|
+
decimal: typeof decimal;
|
|
33
|
+
/** Exact sum of N values. Empty input → `Decimal('0')`. */
|
|
34
|
+
sum: typeof sumFn;
|
|
35
|
+
/** Arithmetic mean of N values. Throws on empty input. */
|
|
36
|
+
avg: typeof avgFn;
|
|
37
|
+
/** Sorted-middle of N values. Even-length lists return the average of the two middle elements at the configured precision (default 18). Throws on empty input. */
|
|
38
|
+
median: typeof medianFn;
|
|
39
|
+
/**
|
|
40
|
+
* Statistical mode — values appearing the most often. Returns an array
|
|
41
|
+
* (multi-modal lists possible).
|
|
42
|
+
*
|
|
43
|
+
* **Edge case**: returns `[]` when no value repeats (every value has count 1).
|
|
44
|
+
* This is intentional — there is no "mode" in a strictly unique list. If
|
|
45
|
+
* your use case requires "first encountered" semantics on unique lists, use
|
|
46
|
+
* `[...new Set(values)][0]` instead.
|
|
47
|
+
*/
|
|
48
|
+
mode: typeof modeFn;
|
|
49
|
+
/**
|
|
50
|
+
* Standard deviation. `sample: false` (default) computes the population
|
|
51
|
+
* stddev (`/ N`); `sample: true` computes the sample stddev (`/ N-1`),
|
|
52
|
+
* which requires at least two values. Internal precision is bumped by 8
|
|
53
|
+
* extra digits to mitigate compounding rounding error.
|
|
54
|
+
*/
|
|
55
|
+
stddev: typeof stddevFn;
|
|
56
|
+
/** Smallest of N values. Throws on empty input. */
|
|
57
|
+
min: typeof minFn;
|
|
58
|
+
/** Largest of N values. Throws on empty input. */
|
|
59
|
+
max: typeof maxFn;
|
|
60
|
+
/** Parse a locale-formatted decimal string (e.g. `'1.234,56'` in `fr-FR`). */
|
|
61
|
+
parseLocale: (value: string, locales?: Intl.LocalesArgument) => Decimal;
|
|
62
|
+
};
|
|
63
|
+
export declare const sum: typeof sumFn;
|
|
64
|
+
export declare const avg: typeof avgFn;
|
|
65
|
+
export declare const median: typeof medianFn;
|
|
66
|
+
export declare const mode: typeof modeFn;
|
|
67
|
+
export declare const stddev: typeof stddevFn;
|
|
68
|
+
export declare const min: typeof minFn;
|
|
69
|
+
export declare const max: typeof maxFn;
|
|
70
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,SAAS,EACT,WAAW,EACX,aAAa,EACb,mBAAmB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAE1D,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEpD;AAyJD,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,CAE1E;AAED,iBAAS,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,OAAO,EAAE,CAE7E;AAED,iBAAS,QAAQ,CAChB,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,GAChE,OAAO,CAGT;AAED,iBAAS,QAAQ,CAChB,GAAG,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,GAChE,OAAO,CAGT;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI;IAChB,iGAAiG;;IAEjG,2DAA2D;;IAE3D,0DAA0D;;IAE1D,kKAAkK;;IAElK;;;;;;;;OAQG;;IAEH;;;;;OAKG;;IAEH,mDAAmD;;IAEnD,kDAAkD;;IAElD,8EAA8E;yBACzD,MAAM,YAAY,IAAI,CAAC,eAAe;CAE3D,CAAC;AAEF,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,eAAO,MAAM,IAAI,eAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,iBAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,cAAQ,CAAC;AACzB,eAAO,MAAM,GAAG,cAAQ,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @c9up/atom — exact decimal arithmetic.
|
|
3
|
+
* The Rust engine is required (NAPI in Node, WASM in browser) — there is no JS/TS fallback.
|
|
4
|
+
*/
|
|
5
|
+
export { Decimal } from "./Decimal.js";
|
|
6
|
+
export { isNativeAvailable } from "./native.js";
|
|
7
|
+
import { Decimal } from "./Decimal.js";
|
|
8
|
+
export function decimal(value) {
|
|
9
|
+
return Decimal.from(value);
|
|
10
|
+
}
|
|
11
|
+
function isDecimalIterable(value) {
|
|
12
|
+
if (typeof value === "string")
|
|
13
|
+
return false;
|
|
14
|
+
return (typeof value === "object" && value !== null && Symbol.iterator in value);
|
|
15
|
+
}
|
|
16
|
+
function resolveValues(args) {
|
|
17
|
+
if (args.length === 1 && isDecimalIterable(args[0])) {
|
|
18
|
+
return args[0];
|
|
19
|
+
}
|
|
20
|
+
return args;
|
|
21
|
+
}
|
|
22
|
+
function sumImpl(values) {
|
|
23
|
+
let total = Decimal.zero();
|
|
24
|
+
for (const value of values) {
|
|
25
|
+
total = total.plus(value);
|
|
26
|
+
}
|
|
27
|
+
return total;
|
|
28
|
+
}
|
|
29
|
+
function avgImpl(values) {
|
|
30
|
+
let total = Decimal.zero();
|
|
31
|
+
let count = 0;
|
|
32
|
+
for (const value of values) {
|
|
33
|
+
total = total.plus(value);
|
|
34
|
+
count++;
|
|
35
|
+
}
|
|
36
|
+
if (count === 0) {
|
|
37
|
+
throw new Error("Atom.avg requires at least one value");
|
|
38
|
+
}
|
|
39
|
+
return total.div(String(count));
|
|
40
|
+
}
|
|
41
|
+
function minImpl(values) {
|
|
42
|
+
const list = [...values].map((value) => new Decimal(value));
|
|
43
|
+
if (list.length === 0) {
|
|
44
|
+
throw new Error("Atom.min requires at least one value");
|
|
45
|
+
}
|
|
46
|
+
let best = list[0];
|
|
47
|
+
for (let i = 1; i < list.length; i++) {
|
|
48
|
+
if (list[i].lt(best))
|
|
49
|
+
best = list[i];
|
|
50
|
+
}
|
|
51
|
+
return best;
|
|
52
|
+
}
|
|
53
|
+
function maxImpl(values) {
|
|
54
|
+
const list = [...values].map((value) => new Decimal(value));
|
|
55
|
+
if (list.length === 0) {
|
|
56
|
+
throw new Error("Atom.max requires at least one value");
|
|
57
|
+
}
|
|
58
|
+
let best = list[0];
|
|
59
|
+
for (let i = 1; i < list.length; i++) {
|
|
60
|
+
if (list[i].gt(best))
|
|
61
|
+
best = list[i];
|
|
62
|
+
}
|
|
63
|
+
return best;
|
|
64
|
+
}
|
|
65
|
+
function medianImpl(values, options = {}) {
|
|
66
|
+
const list = [...values].map((value) => new Decimal(value));
|
|
67
|
+
if (list.length === 0) {
|
|
68
|
+
throw new Error("Atom.median requires at least one value");
|
|
69
|
+
}
|
|
70
|
+
list.sort((a, b) => a.cmp(b));
|
|
71
|
+
const mid = Math.floor(list.length / 2);
|
|
72
|
+
if (list.length % 2 === 1)
|
|
73
|
+
return list[mid];
|
|
74
|
+
const precision = options.precision ?? 18;
|
|
75
|
+
return list[mid - 1].plus(list[mid]).div("2", { precision });
|
|
76
|
+
}
|
|
77
|
+
function modeImpl(values) {
|
|
78
|
+
const frequencies = new Map();
|
|
79
|
+
for (const value of values) {
|
|
80
|
+
const key = new Decimal(value).toString();
|
|
81
|
+
frequencies.set(key, (frequencies.get(key) ?? 0) + 1);
|
|
82
|
+
}
|
|
83
|
+
if (frequencies.size === 0) {
|
|
84
|
+
throw new Error("Atom.mode requires at least one value");
|
|
85
|
+
}
|
|
86
|
+
let maxCount = 0;
|
|
87
|
+
for (const count of frequencies.values()) {
|
|
88
|
+
if (count > maxCount)
|
|
89
|
+
maxCount = count;
|
|
90
|
+
}
|
|
91
|
+
if (maxCount <= 1)
|
|
92
|
+
return [];
|
|
93
|
+
return [...frequencies.entries()]
|
|
94
|
+
.filter(([, count]) => count === maxCount)
|
|
95
|
+
.map(([value]) => new Decimal(value))
|
|
96
|
+
.sort((a, b) => a.cmp(b));
|
|
97
|
+
}
|
|
98
|
+
function stddevImpl(values, options = {}) {
|
|
99
|
+
const list = [...values].map((value) => new Decimal(value));
|
|
100
|
+
if (list.length === 0) {
|
|
101
|
+
throw new Error("Atom.stddev requires at least one value");
|
|
102
|
+
}
|
|
103
|
+
const sample = options.sample ?? false;
|
|
104
|
+
const precision = options.precision ?? 18;
|
|
105
|
+
const mode = options.mode ?? "trunc";
|
|
106
|
+
const divisor = sample ? list.length - 1 : list.length;
|
|
107
|
+
if (divisor <= 0) {
|
|
108
|
+
throw new Error("Atom.stddev sample mode requires at least two values");
|
|
109
|
+
}
|
|
110
|
+
const mean = avgImpl(list);
|
|
111
|
+
let sumSquares = Decimal.zero();
|
|
112
|
+
for (const value of list) {
|
|
113
|
+
const diff = value.minus(mean);
|
|
114
|
+
sumSquares = sumSquares.plus(diff.times(diff));
|
|
115
|
+
}
|
|
116
|
+
const variance = sumSquares.div(String(divisor), {
|
|
117
|
+
precision: precision + 8,
|
|
118
|
+
});
|
|
119
|
+
return variance.sqrt({ precision, mode });
|
|
120
|
+
}
|
|
121
|
+
function parseMedianArgs(args) {
|
|
122
|
+
if (args.length >= 1 && isDecimalIterable(args[0])) {
|
|
123
|
+
const values = args[0];
|
|
124
|
+
const options = args.length > 1 && typeof args[1] === "object" && args[1] !== null
|
|
125
|
+
? args[1]
|
|
126
|
+
: {};
|
|
127
|
+
return { values, options };
|
|
128
|
+
}
|
|
129
|
+
return { values: args, options: {} };
|
|
130
|
+
}
|
|
131
|
+
function parseStddevArgs(args) {
|
|
132
|
+
if (args.length >= 1 && isDecimalIterable(args[0])) {
|
|
133
|
+
const values = args[0];
|
|
134
|
+
const options = args.length > 1 && typeof args[1] === "object" && args[1] !== null
|
|
135
|
+
? args[1]
|
|
136
|
+
: {};
|
|
137
|
+
return { values, options };
|
|
138
|
+
}
|
|
139
|
+
return { values: args, options: {} };
|
|
140
|
+
}
|
|
141
|
+
function sumFn(...args) {
|
|
142
|
+
return sumImpl(resolveValues(args));
|
|
143
|
+
}
|
|
144
|
+
function avgFn(...args) {
|
|
145
|
+
return avgImpl(resolveValues(args));
|
|
146
|
+
}
|
|
147
|
+
function minFn(...args) {
|
|
148
|
+
return minImpl(resolveValues(args));
|
|
149
|
+
}
|
|
150
|
+
function maxFn(...args) {
|
|
151
|
+
return maxImpl(resolveValues(args));
|
|
152
|
+
}
|
|
153
|
+
function modeFn(...args) {
|
|
154
|
+
return modeImpl(resolveValues(args));
|
|
155
|
+
}
|
|
156
|
+
function medianFn(...args) {
|
|
157
|
+
const { values, options } = parseMedianArgs(args);
|
|
158
|
+
return medianImpl(values, options);
|
|
159
|
+
}
|
|
160
|
+
function stddevFn(...args) {
|
|
161
|
+
const { values, options } = parseStddevArgs(args);
|
|
162
|
+
return stddevImpl(values, options);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Atom — namespace bundling the public functional API.
|
|
166
|
+
*
|
|
167
|
+
* Two equivalent ways to access aggregates: `Atom.sum(...)` for namespaced
|
|
168
|
+
* usage, or named imports (`import { sum } from '@c9up/atom'`).
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* import { Atom, decimal } from '@c9up/atom'
|
|
172
|
+
* const total = Atom.sum('1.10', '2.20', '3.33') // → Decimal('6.63')
|
|
173
|
+
* const mean = Atom.avg(['10', '20', '30']) // → Decimal('20')
|
|
174
|
+
* const value = decimal('99.99').times('0.20') // → Decimal('19.998')
|
|
175
|
+
*/
|
|
176
|
+
export const Atom = {
|
|
177
|
+
/** Construct a `Decimal` from a string / number / bigint / Decimal. Alias for `Decimal.from`. */
|
|
178
|
+
decimal,
|
|
179
|
+
/** Exact sum of N values. Empty input → `Decimal('0')`. */
|
|
180
|
+
sum: sumFn,
|
|
181
|
+
/** Arithmetic mean of N values. Throws on empty input. */
|
|
182
|
+
avg: avgFn,
|
|
183
|
+
/** Sorted-middle of N values. Even-length lists return the average of the two middle elements at the configured precision (default 18). Throws on empty input. */
|
|
184
|
+
median: medianFn,
|
|
185
|
+
/**
|
|
186
|
+
* Statistical mode — values appearing the most often. Returns an array
|
|
187
|
+
* (multi-modal lists possible).
|
|
188
|
+
*
|
|
189
|
+
* **Edge case**: returns `[]` when no value repeats (every value has count 1).
|
|
190
|
+
* This is intentional — there is no "mode" in a strictly unique list. If
|
|
191
|
+
* your use case requires "first encountered" semantics on unique lists, use
|
|
192
|
+
* `[...new Set(values)][0]` instead.
|
|
193
|
+
*/
|
|
194
|
+
mode: modeFn,
|
|
195
|
+
/**
|
|
196
|
+
* Standard deviation. `sample: false` (default) computes the population
|
|
197
|
+
* stddev (`/ N`); `sample: true` computes the sample stddev (`/ N-1`),
|
|
198
|
+
* which requires at least two values. Internal precision is bumped by 8
|
|
199
|
+
* extra digits to mitigate compounding rounding error.
|
|
200
|
+
*/
|
|
201
|
+
stddev: stddevFn,
|
|
202
|
+
/** Smallest of N values. Throws on empty input. */
|
|
203
|
+
min: minFn,
|
|
204
|
+
/** Largest of N values. Throws on empty input. */
|
|
205
|
+
max: maxFn,
|
|
206
|
+
/** Parse a locale-formatted decimal string (e.g. `'1.234,56'` in `fr-FR`). */
|
|
207
|
+
parseLocale: (value, locales) => Decimal.parseLocale(value, locales),
|
|
208
|
+
};
|
|
209
|
+
export const sum = sumFn;
|
|
210
|
+
export const avg = avgFn;
|
|
211
|
+
export const median = medianFn;
|
|
212
|
+
export const mode = modeFn;
|
|
213
|
+
export const stddev = stddevFn;
|
|
214
|
+
export const min = minFn;
|
|
215
|
+
export const max = maxFn;
|
|
216
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/math.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface ParsedDecimal {
|
|
2
|
+
int: bigint;
|
|
3
|
+
scale: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function parseDecimal(input: string): ParsedDecimal;
|
|
6
|
+
export declare function formatDecimal(int: bigint, scale: number): string;
|
|
7
|
+
export declare function addTs(a: string, b: string): string;
|
|
8
|
+
export declare function subTs(a: string, b: string): string;
|
|
9
|
+
export declare function mulTs(a: string, b: string): string;
|
|
10
|
+
export declare function divTs(a: string, b: string, precision: number): string;
|
|
11
|
+
export declare function cmpTs(a: string, b: string): -1 | 0 | 1;
|
|
12
|
+
/**
|
|
13
|
+
* Align two parsed decimals to the same scale by multiplying the less-precise
|
|
14
|
+
* one by `10^(scaleDelta)`. Used by the TS arithmetic helpers below
|
|
15
|
+
* (add/sub/cmp/mod). NOTE: `Decimal.ts` does NOT import this — it aligns scales
|
|
16
|
+
* inline via `pow10BigInt`, so this is not a shared-dedup point.
|
|
17
|
+
*/
|
|
18
|
+
export declare function alignScale(a: ParsedDecimal, b: ParsedDecimal): [bigint, bigint, number];
|
|
19
|
+
/** Exact `10^exp` as a `bigint`. Exported — single definition for the whole TS side. */
|
|
20
|
+
export declare function pow10BigInt(exp: number): bigint;
|
|
21
|
+
/**
|
|
22
|
+
* Pure-TS modulo — fallback for when the native engine is unavailable. The
|
|
23
|
+
* Rust `rem` path should be preferred when `isNativeAvailable()`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function modTs(a: string, b: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Pure-TS integer exponentiation with truncating div for negative exponents.
|
|
28
|
+
* Mirrors the Rust `pow` contract so the two paths produce identical results.
|
|
29
|
+
*/
|
|
30
|
+
export declare function powTs(a: string, exp: number, precision: number): string;
|
|
31
|
+
/**
|
|
32
|
+
* Pure-TS integer square root via Newton's iteration on BigInt, scaled to
|
|
33
|
+
* produce `precision` fractional digits. Truncates toward zero; rounding
|
|
34
|
+
* modes are applied by the caller.
|
|
35
|
+
*/
|
|
36
|
+
export declare function sqrtTs(a: string, precision: number): string;
|
|
37
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../src/math.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA4BzD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAOtD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACzB,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,GACd,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAQ1B;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CA4BvE;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB3D"}
|