@c9up/atom 0.1.3 → 0.1.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Decimal.js","sourceRoot":"","sources":["../src/Decimal.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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)`. Exported so `Decimal.ts` can reuse it — previously
15
+ * both files had their own copy under different names (`alignScale` vs
16
+ * `alignScaleParts`), which is a maintenance hazard.
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"}