@c9up/atom 0.1.10 → 0.1.12
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/README.md +9 -1
- package/dist/Decimal.d.ts +27 -1
- package/dist/Decimal.d.ts.map +1 -1
- package/dist/Decimal.js +151 -96
- package/dist/Decimal.js.map +1 -1
- package/dist/Money.d.ts +15 -2
- package/dist/Money.d.ts.map +1 -1
- package/dist/Money.js +28 -3
- package/dist/Money.js.map +1 -1
- package/dist/atlas.d.ts +2 -5
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +2 -5
- package/dist/atlas.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -33
- package/dist/index.js.map +1 -1
- 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 +3 -2
- package/scripts/build-napi-types.mjs +4 -3
- package/scripts/generate-napi-types.mjs +9 -6
- package/src/Decimal.ts +222 -134
- package/src/Money.ts +44 -5
- package/src/atlas.ts +2 -5
- package/src/index.ts +75 -36
package/dist/Money.js
CHANGED
|
@@ -1,12 +1,33 @@
|
|
|
1
1
|
import { defaultQuantizeMode } from "./context.js";
|
|
2
2
|
import { Decimal } from "./Decimal.js";
|
|
3
|
+
/**
|
|
4
|
+
* ISO 4217 minor units, for every currency that does not have two.
|
|
5
|
+
*
|
|
6
|
+
* Only the exceptions are listed; anything absent is two, which is what the
|
|
7
|
+
* lookups below fall back to. Written as a partial list of the ones someone
|
|
8
|
+
* happened to think of, the fallback answered for the rest — and answered
|
|
9
|
+
* wrong. A `Money` built for ISK, whose króna has no subunit, was held at two
|
|
10
|
+
* decimals: `toMinorUnits()` returned 123400 for 1234 króna, a hundredfold
|
|
11
|
+
* error on its way into an integer column, `toString()` printed a fractional
|
|
12
|
+
* part the currency does not have, and `format()` asked Intl for two decimals
|
|
13
|
+
* it would otherwise have refused to print. JPY, three lines away in the same
|
|
14
|
+
* table, was correct — the difference between the two was which one someone
|
|
15
|
+
* had typed in.
|
|
16
|
+
*
|
|
17
|
+
* ISO is the source of truth here, not CLDR, and they disagree on one entry:
|
|
18
|
+
* ISO gives IQD three minor units, `Intl` prints zero. `format()` passes this
|
|
19
|
+
* scale to Intl explicitly, so the value keeps the fils ISO says it has.
|
|
20
|
+
*/
|
|
3
21
|
const ISO_MINOR_UNITS = Object.freeze({
|
|
4
22
|
BHD: 3,
|
|
23
|
+
BIF: 0,
|
|
5
24
|
CLF: 4,
|
|
6
25
|
CLP: 0,
|
|
7
26
|
DJF: 0,
|
|
8
|
-
|
|
9
|
-
|
|
27
|
+
GNF: 0,
|
|
28
|
+
IQD: 3,
|
|
29
|
+
ISK: 0,
|
|
30
|
+
JOD: 3,
|
|
10
31
|
JPY: 0,
|
|
11
32
|
KMF: 0,
|
|
12
33
|
KRW: 0,
|
|
@@ -14,9 +35,13 @@ const ISO_MINOR_UNITS = Object.freeze({
|
|
|
14
35
|
LYD: 3,
|
|
15
36
|
OMR: 3,
|
|
16
37
|
PYG: 0,
|
|
38
|
+
RWF: 0,
|
|
17
39
|
TND: 3,
|
|
18
|
-
|
|
40
|
+
UGX: 0,
|
|
41
|
+
UYI: 0,
|
|
42
|
+
UYW: 4,
|
|
19
43
|
VND: 0,
|
|
44
|
+
VUV: 0,
|
|
20
45
|
XAF: 0,
|
|
21
46
|
XOF: 0,
|
|
22
47
|
XPF: 0,
|
package/dist/Money.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Money.js","sourceRoot":"","sources":["../src/Money.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,OAAO,EAAqC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Money.js","sourceRoot":"","sources":["../src/Money.ts"],"names":[],"mappings":"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"}
|
package/dist/atlas.d.ts
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
* column pipeline. Lives on a sub-export so the default `@c9up/atom` import
|
|
6
6
|
* surface stays adapter-free.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* boot-time wiring.
|
|
8
|
+
* The callbacks are baked into the entity definition: no global registry, no
|
|
9
|
+
* boot-time wiring, nothing to import in a provider.
|
|
11
10
|
*
|
|
12
11
|
* Usage:
|
|
13
12
|
*
|
|
@@ -19,8 +18,6 @@
|
|
|
19
18
|
* @PrimaryKey() id!: number
|
|
20
19
|
* @Column(decimalAtlasAdapter) balance!: Decimal | null
|
|
21
20
|
* }
|
|
22
|
-
*
|
|
23
|
-
* @implements Story 35.10
|
|
24
21
|
*/
|
|
25
22
|
import { Decimal, type RoundMode } from "./Decimal.js";
|
|
26
23
|
export interface DecimalColumnOptions {
|
package/dist/atlas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"atlas.d.ts","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC9D,IAAI,EAAE;QACL,WAAW,EAAE,IAAI,CAAC;QAClB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;QAClC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,mBAAmB,EAAE,mBAyBhC,CAAC;AAEH,wBAAgB,aAAa,CAC5B,OAAO,GAAE,oBAAyB,GAChC,kBAAkB,CAoCpB"}
|
package/dist/atlas.js
CHANGED
|
@@ -5,9 +5,8 @@
|
|
|
5
5
|
* column pipeline. Lives on a sub-export so the default `@c9up/atom` import
|
|
6
6
|
* surface stays adapter-free.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* boot-time wiring.
|
|
8
|
+
* The callbacks are baked into the entity definition: no global registry, no
|
|
9
|
+
* boot-time wiring, nothing to import in a provider.
|
|
11
10
|
*
|
|
12
11
|
* Usage:
|
|
13
12
|
*
|
|
@@ -19,8 +18,6 @@
|
|
|
19
18
|
* @PrimaryKey() id!: number
|
|
20
19
|
* @Column(decimalAtlasAdapter) balance!: Decimal | null
|
|
21
20
|
* }
|
|
22
|
-
*
|
|
23
|
-
* @implements Story 35.10
|
|
24
21
|
*/
|
|
25
22
|
import { Decimal } from "./Decimal.js";
|
|
26
23
|
/**
|
package/dist/atlas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atlas.js","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"atlas.js","sourceRoot":"","sources":["../src/atlas.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type { AtomContext, AtomContextOptions } from "./context.js";
|
|
|
7
7
|
export { configureAtomContext, getAtomContext, resetAtomContext, withAtomContext, } from "./context.js";
|
|
8
8
|
export type { BetweenOptions, DecimalInput, DecimalSafeParseResult, DecimalScaled, DivOptions, MedianOptions, PowOptions, QuantizeOptions, RoundMode, SqrtOptions, StddevOptions, ToMinorUnitsOptions, } from "./Decimal.js";
|
|
9
9
|
export { Decimal } from "./Decimal.js";
|
|
10
|
-
export type { MoneyFormatOptions, MoneyOptions } from "./Money.js";
|
|
10
|
+
export type { MoneyFormatOptions, MoneyOptions, MoneyRoundingOptions, } from "./Money.js";
|
|
11
11
|
export { Money, money } from "./Money.js";
|
|
12
12
|
export { isNativeAvailable } from "./native.js";
|
|
13
13
|
import type { MedianOptions, StddevOptions } from "./Decimal.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,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,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,EACtB,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,YAAY,EACX,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAEpD;AA4LD,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;IAE3D,gDAAgD;;CAEhD,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
CHANGED
|
@@ -18,11 +18,30 @@ function isDecimalIterable(value) {
|
|
|
18
18
|
return false;
|
|
19
19
|
return (typeof value === "object" && value !== null && Symbol.iterator in value);
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* What every aggregate accepts as one value.
|
|
23
|
+
*
|
|
24
|
+
* The variadic form used to be asserted back into shape — a claim about the
|
|
25
|
+
* caller's arguments made in the one place that can check them. Anything else
|
|
26
|
+
* reached `new Decimal(...)`, where an object failed as
|
|
27
|
+
* `input.trim is not a function`, naming neither the argument nor the call.
|
|
28
|
+
*/
|
|
29
|
+
function isDecimalValue(value) {
|
|
30
|
+
return (Decimal.isDecimal(value) ||
|
|
31
|
+
typeof value === "string" ||
|
|
32
|
+
typeof value === "number" ||
|
|
33
|
+
typeof value === "bigint");
|
|
34
|
+
}
|
|
35
|
+
function toDecimalValue(value) {
|
|
36
|
+
if (isDecimalValue(value))
|
|
37
|
+
return value;
|
|
38
|
+
throw new Error(`Atom aggregates take a string, number, bigint or Decimal, got ${value === null ? "null" : typeof value}`);
|
|
39
|
+
}
|
|
21
40
|
function resolveValues(args) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return args;
|
|
41
|
+
const head = args[0];
|
|
42
|
+
if (args.length === 1 && isDecimalIterable(head))
|
|
43
|
+
return head;
|
|
44
|
+
return args.map(toDecimalValue);
|
|
26
45
|
}
|
|
27
46
|
function sumImpl(values) {
|
|
28
47
|
let total = Decimal.zero();
|
|
@@ -44,26 +63,26 @@ function avgImpl(values) {
|
|
|
44
63
|
return total.div(String(count));
|
|
45
64
|
}
|
|
46
65
|
function minImpl(values) {
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
66
|
+
const [first, ...rest] = [...values].map((value) => new Decimal(value));
|
|
67
|
+
if (first === undefined) {
|
|
49
68
|
throw new Error("Atom.min requires at least one value");
|
|
50
69
|
}
|
|
51
|
-
let best =
|
|
52
|
-
for (
|
|
53
|
-
if (
|
|
54
|
-
best =
|
|
70
|
+
let best = first;
|
|
71
|
+
for (const candidate of rest) {
|
|
72
|
+
if (candidate.lt(best))
|
|
73
|
+
best = candidate;
|
|
55
74
|
}
|
|
56
75
|
return best;
|
|
57
76
|
}
|
|
58
77
|
function maxImpl(values) {
|
|
59
|
-
const
|
|
60
|
-
if (
|
|
78
|
+
const [first, ...rest] = [...values].map((value) => new Decimal(value));
|
|
79
|
+
if (first === undefined) {
|
|
61
80
|
throw new Error("Atom.max requires at least one value");
|
|
62
81
|
}
|
|
63
|
-
let best =
|
|
64
|
-
for (
|
|
65
|
-
if (
|
|
66
|
-
best =
|
|
82
|
+
let best = first;
|
|
83
|
+
for (const candidate of rest) {
|
|
84
|
+
if (candidate.gt(best))
|
|
85
|
+
best = candidate;
|
|
67
86
|
}
|
|
68
87
|
return best;
|
|
69
88
|
}
|
|
@@ -74,10 +93,17 @@ function medianImpl(values, options = {}) {
|
|
|
74
93
|
}
|
|
75
94
|
list.sort((a, b) => a.cmp(b));
|
|
76
95
|
const mid = Math.floor(list.length / 2);
|
|
96
|
+
// The empty case threw above, so both halves of the middle are present.
|
|
97
|
+
const upper = list[mid];
|
|
98
|
+
if (upper === undefined)
|
|
99
|
+
throw new Error("Atom.median lost its middle value");
|
|
77
100
|
if (list.length % 2 === 1)
|
|
78
|
-
return
|
|
101
|
+
return upper;
|
|
102
|
+
const lower = list[mid - 1];
|
|
103
|
+
if (lower === undefined)
|
|
104
|
+
throw new Error("Atom.median lost its middle value");
|
|
79
105
|
const precision = options.precision ?? defaultPrecision();
|
|
80
|
-
return
|
|
106
|
+
return lower.plus(upper).div("2", { precision });
|
|
81
107
|
}
|
|
82
108
|
function modeImpl(values) {
|
|
83
109
|
const frequencies = new Map();
|
|
@@ -123,25 +149,33 @@ function stddevImpl(values, options = {}) {
|
|
|
123
149
|
});
|
|
124
150
|
return variance.sqrt({ precision, mode });
|
|
125
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* The trailing options object of `median(values, options)` / `stddev(values,
|
|
154
|
+
* options)`, or `{}`.
|
|
155
|
+
*
|
|
156
|
+
* A `Decimal` is an object too, so excluding it is what lets the compiler
|
|
157
|
+
* check the narrowing instead of being told the answer.
|
|
158
|
+
*/
|
|
159
|
+
function optionsFrom(value) {
|
|
160
|
+
if (typeof value !== "object" || value === null)
|
|
161
|
+
return {};
|
|
162
|
+
if (Decimal.isDecimal(value))
|
|
163
|
+
return {};
|
|
164
|
+
return value;
|
|
165
|
+
}
|
|
126
166
|
function parseMedianArgs(args) {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
? args[1]
|
|
131
|
-
: {};
|
|
132
|
-
return { values, options };
|
|
167
|
+
const head = args[0];
|
|
168
|
+
if (isDecimalIterable(head)) {
|
|
169
|
+
return { values: head, options: optionsFrom(args[1]) };
|
|
133
170
|
}
|
|
134
|
-
return { values: args, options: {} };
|
|
171
|
+
return { values: resolveValues(args), options: {} };
|
|
135
172
|
}
|
|
136
173
|
function parseStddevArgs(args) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return { values, options };
|
|
143
|
-
}
|
|
144
|
-
return { values: args, options: {} };
|
|
174
|
+
const head = args[0];
|
|
175
|
+
if (isDecimalIterable(head)) {
|
|
176
|
+
return { values: head, options: optionsFrom(args[1]) };
|
|
177
|
+
}
|
|
178
|
+
return { values: resolveValues(args), options: {} };
|
|
145
179
|
}
|
|
146
180
|
function sumFn(...args) {
|
|
147
181
|
return sumImpl(resolveValues(args));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AAetB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,eAAe,GACf,MAAM,cAAc,CAAC;AAetB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAElE,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,OAAO,CAAC,KAAmB;IAC1C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,KAAK,CACvE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,KAAc;IACrC,OAAO,CACN,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ,CACzB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,cAAc,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,KAAK,CACd,iEACC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAClC,EAAE,CACF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAwB;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,MAA8B;IAC9C,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,MAA8B;IAC9C,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,EAAE,CAAC;IACT,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,MAA8B;IAC9C,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,SAAS,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,MAA8B;IAC9C,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,SAAS,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAClB,MAA8B,EAC9B,UAAyB,EAAE;IAE3B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxC,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,MAA8B;IAC/C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1C,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,QAAQ;YAAE,QAAQ,GAAG,KAAK,CAAC;IACxC,CAAC;IACD,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC7B,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC;SACzC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;SACpC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,UAAU,CAClB,MAA8B,EAC9B,UAAyB,EAAE;IAE3B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACvD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QAChD,SAAS,EAAE,SAAS,GAAG,CAAC;KACxB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CACnB,KAAmC;IAEnC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC3D,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CACvB,IAA+D;IAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CACvB,IAA+D;IAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,CAAgB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,IAA+C;IAChE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,IAA+C;IAChE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,IAA+C;IAChE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,KAAK,CAAC,GAAG,IAA+C;IAChE,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,MAAM,CAAC,GAAG,IAA+C;IACjE,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,QAAQ,CAChB,GAAG,IAA+D;IAElE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CAChB,GAAG,IAA+D;IAElE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IACnB,iGAAiG;IACjG,OAAO;IACP,2DAA2D;IAC3D,GAAG,EAAE,KAAK;IACV,0DAA0D;IAC1D,GAAG,EAAE,KAAK;IACV,kKAAkK;IAClK,MAAM,EAAE,QAAQ;IAChB;;;;;;;;OAQG;IACH,IAAI,EAAE,MAAM;IACZ;;;;;OAKG;IACH,MAAM,EAAE,QAAQ;IAChB,mDAAmD;IACnD,GAAG,EAAE,KAAK;IACV,kDAAkD;IAClD,GAAG,EAAE,KAAK;IACV,8EAA8E;IAC9E,WAAW,EAAE,CAAC,KAAa,EAAE,OAA8B,EAAE,EAAE,CAC9D,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;IACpC,gDAAgD;IAChD,KAAK;CACL,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AACzB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AACzB,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAC3B,MAAM,CAAC,MAAM,MAAM,GAAG,QAAQ,CAAC;AAC/B,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;AACzB,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC"}
|
package/index.darwin-arm64.node
CHANGED
|
Binary file
|
package/index.darwin-x64.node
CHANGED
|
Binary file
|
|
Binary file
|
package/index.linux-x64-gnu.node
CHANGED
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c9up/atom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "Atom — exact decimal arithmetic for the Ream ecosystem (TypeScript + Rust N-API)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@biomejs/biome": "^2.4.10",
|
|
30
30
|
"@types/node": "^22.19.15",
|
|
31
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
31
32
|
"typescript": "^6.0.2",
|
|
32
33
|
"vitest": "^4.1.2"
|
|
33
34
|
},
|
|
@@ -52,7 +53,7 @@
|
|
|
52
53
|
"test:napi": "node scripts/verify-napi.mjs",
|
|
53
54
|
"bench": "pnpm build && node scripts/bench.mjs",
|
|
54
55
|
"build:wasm": "wasm-pack build --target web crates/atom-engine-wasm --out-dir ../../wasm",
|
|
55
|
-
"lint": "biome check src/",
|
|
56
|
+
"lint": "biome check src/ tests/",
|
|
56
57
|
"test:coverage": "vitest run --coverage"
|
|
57
58
|
}
|
|
58
59
|
}
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
* cargo a `/tmp/...` path the native proc-macro cannot write to, so the
|
|
8
8
|
* type-def file comes back empty and the build fails for no visible reason.
|
|
9
9
|
*
|
|
10
|
-
* One crate at a time on purpose: napi-derive
|
|
10
|
+
* One crate at a time on purpose: with napi-derive 2 the writes all went to a
|
|
11
|
+
* single `TYPE_DEF_TMP_PATH` and a parallel build interleaved them
|
|
11
12
|
* while cargo compiles, and a parallel build interleaves the writes —
|
|
12
13
|
* definitions go missing, silently, and the generated file comes out short.
|
|
13
14
|
*/
|
|
@@ -28,11 +29,11 @@ const scratch = mkdtempSync(join(tmpdir(), 'napi-types-'))
|
|
|
28
29
|
try {
|
|
29
30
|
const lines = []
|
|
30
31
|
for (const crate of CRATES) {
|
|
31
|
-
const perCrate = join(scratch,
|
|
32
|
+
const perCrate = join(scratch, crate)
|
|
32
33
|
writeFileSync(perCrate, '')
|
|
33
34
|
execFileSync('cargo', ['build', '-p', crate], {
|
|
34
35
|
cwd: packageRoot,
|
|
35
|
-
env: { ...process.env,
|
|
36
|
+
env: { ...process.env, NAPI_TYPE_DEF_TMP_FOLDER: scratch },
|
|
36
37
|
stdio: ['ignore', 'ignore', 'inherit'],
|
|
37
38
|
})
|
|
38
39
|
const emitted = readFileSync(perCrate, 'utf8').split('\n').filter(Boolean)
|
|
@@ -130,12 +130,15 @@ for (const fn of fns) {
|
|
|
130
130
|
// napi-derive emits the whole declaration for a function, unlike a struct
|
|
131
131
|
// where `def` holds only the members.
|
|
132
132
|
const declaration = fn.def.trim()
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
// napi-derive 3 emits a bare `function name(...)` where 2 emitted the
|
|
134
|
+
// signature after the name; concatenating onto the former produced
|
|
135
|
+
// `function xfunction x(...)`.
|
|
136
|
+
const rendered = declaration.startsWith('export declare function')
|
|
137
|
+
? declaration
|
|
138
|
+
: declaration.startsWith('function ')
|
|
139
|
+
? `export declare ${declaration}`
|
|
140
|
+
: `export declare function ${fn.name}${declaration}`
|
|
141
|
+
out.push(`${rendered};`, '')
|
|
139
142
|
}
|
|
140
143
|
|
|
141
144
|
const stale = Object.keys(CALLBACK_REFINEMENTS).filter((k) => !used.has(k))
|