@stripe/extensibility-sdk 0.24.0 → 0.25.0
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 +355 -0
- package/dist/config-values/generate.d.ts +2 -0
- package/dist/config-values/generate.d.ts.map +1 -1
- package/dist/extensibility-sdk-alpha.d.ts +140 -38
- package/dist/extensibility-sdk-beta.d.ts +140 -38
- package/dist/extensibility-sdk-extensions-alpha.d.ts +155 -25
- package/dist/extensibility-sdk-extensions-beta.d.ts +155 -25
- package/dist/extensibility-sdk-extensions-internal.d.ts +159 -25
- package/dist/extensibility-sdk-extensions-public.d.ts +155 -25
- package/dist/extensibility-sdk-internal-alpha.d.ts +5 -0
- package/dist/extensibility-sdk-internal-beta.d.ts +5 -0
- package/dist/extensibility-sdk-internal-internal.d.ts +5 -0
- package/dist/extensibility-sdk-internal-public.d.ts +5 -0
- package/dist/extensibility-sdk-internal.d.ts +139 -40
- package/dist/extensibility-sdk-public.d.ts +140 -38
- package/dist/extensibility-sdk-stdlib-alpha.d.ts +145 -38
- package/dist/extensibility-sdk-stdlib-beta.d.ts +145 -38
- package/dist/extensibility-sdk-stdlib-internal.d.ts +144 -40
- package/dist/extensibility-sdk-stdlib-public.d.ts +145 -38
- package/dist/extensions/billing/bill/discount_calculation.d.ts +5 -3
- package/dist/extensions/billing/customer_balance_application.d.ts +3 -1
- package/dist/extensions/billing/invoice_collection_setting.d.ts +15 -11
- package/dist/extensions/billing/prorations.d.ts +30 -21
- package/dist/extensions/billing/recurring_billing_item_handling.d.ts +41 -23
- package/dist/extensions/billing/types.d.ts +4 -4
- package/dist/extensions/core/workflows/custom_action.d.ts +6 -2
- package/dist/extensions/extend/workflows/custom_action.d.ts +6 -2
- package/dist/index.cjs +385 -134
- package/dist/index.js +383 -133
- package/dist/internal.d.ts +4 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/stdlib/brand.d.ts +16 -10
- package/dist/stdlib/brand.d.ts.map +1 -1
- package/dist/stdlib/decimal.d.ts +49 -21
- package/dist/stdlib/decimal.d.ts.map +1 -1
- package/dist/stdlib/index.cjs +385 -134
- package/dist/stdlib/index.d.ts +10 -4
- package/dist/stdlib/index.d.ts.map +1 -1
- package/dist/stdlib/index.js +383 -133
- package/dist/stdlib/refs.d.ts +21 -7
- package/dist/stdlib/scalars.d.ts +61 -28
- package/dist/stdlib/scalars.d.ts.map +1 -1
- package/dist/stdlib/to-const.d.ts +35 -0
- package/dist/stdlib/to-const.d.ts.map +1 -0
- package/dist/stdlib/type-utils.d.ts +3 -1
- package/dist/stdlib/types.d.ts +6 -6
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +11 -11
- package/dist/api-surface.d.ts.map +0 -1
|
@@ -3,31 +3,55 @@
|
|
|
3
3
|
* @packageDocumentation
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { __integerBrand } from '@formspec/core';
|
|
7
|
+
|
|
6
8
|
/**
|
|
7
|
-
* Opaque brand
|
|
9
|
+
* Opaque brand key used as a property key in SDK branded types.
|
|
8
10
|
*
|
|
9
11
|
* @remarks
|
|
10
12
|
* You do not need to use this directly — it is already embedded in
|
|
11
|
-
* branded values returned by factory functions like {@link (Integer:type)}.
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* branded values returned by factory functions like {@link (Integer:type)}.from().
|
|
14
|
+
*
|
|
15
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
16
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
17
|
+
* branded types.
|
|
14
18
|
*
|
|
15
19
|
* @public
|
|
16
20
|
*/
|
|
17
|
-
declare const __brand:
|
|
21
|
+
declare const __brand: '__brand';
|
|
18
22
|
|
|
19
23
|
/* Excluded from this release type: __decimalBrand */
|
|
20
24
|
|
|
21
25
|
/**
|
|
22
|
-
*
|
|
26
|
+
* Distinct brand key for PositiveInteger so an Integer is not assignable to
|
|
27
|
+
* PositiveInteger without going through the guard. PositiveInteger is a
|
|
28
|
+
* subtype of Integer (it carries both brands), so it can be used wherever
|
|
29
|
+
* Integer is expected.
|
|
30
|
+
*
|
|
31
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
32
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
33
|
+
* branded types.
|
|
34
|
+
*
|
|
35
|
+
* For internal use only — may be removed in a future release.
|
|
36
|
+
*
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
39
|
+
declare const __positiveIntegerBrand: '__positiveIntegerBrand';
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Opaque type-tag key used by SDK scalar types to carry Stripe type metadata.
|
|
23
43
|
*
|
|
24
44
|
* @remarks
|
|
25
45
|
* You do not need to use this directly — it is already embedded in
|
|
26
|
-
* branded values returned by factory functions like {@link (Integer:type)}.
|
|
46
|
+
* branded values returned by factory functions like {@link (Integer:type)}.from().
|
|
47
|
+
*
|
|
48
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
49
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
50
|
+
* branded types.
|
|
27
51
|
*
|
|
28
52
|
* @public
|
|
29
53
|
*/
|
|
30
|
-
declare const __stripeType:
|
|
54
|
+
declare const __stripeType: '__stripeType';
|
|
31
55
|
|
|
32
56
|
/** @public */
|
|
33
57
|
declare type AnyTimeRange = {
|
|
@@ -462,59 +486,59 @@ declare interface CustomerBalanceApplication<Config> {
|
|
|
462
486
|
* @public
|
|
463
487
|
*/
|
|
464
488
|
export declare interface Decimal {
|
|
465
|
-
/* Excluded from this release type:
|
|
466
|
-
/* Excluded from this release type:
|
|
467
|
-
/* Excluded from this release type:
|
|
489
|
+
/* Excluded from this release type: __brand */
|
|
490
|
+
/* Excluded from this release type: __decimalBrand */
|
|
491
|
+
/* Excluded from this release type: __stripeType */
|
|
468
492
|
/**
|
|
469
493
|
* Return the sum of this value and `other`.
|
|
470
494
|
* @public
|
|
471
495
|
*/
|
|
472
|
-
add(other:
|
|
496
|
+
add(other: DecimalLike): Decimal;
|
|
473
497
|
/**
|
|
474
498
|
* Return the difference of this value and `other`.
|
|
475
499
|
* @public
|
|
476
500
|
*/
|
|
477
|
-
sub(other:
|
|
501
|
+
sub(other: DecimalLike): Decimal;
|
|
478
502
|
/**
|
|
479
503
|
* Return the product of this value and `other`.
|
|
480
504
|
* @public
|
|
481
505
|
*/
|
|
482
|
-
mul(other:
|
|
506
|
+
mul(other: DecimalLike): Decimal;
|
|
483
507
|
/**
|
|
484
508
|
* Return the quotient of this value divided by `other`.
|
|
485
509
|
* @public
|
|
486
510
|
*/
|
|
487
|
-
div(other:
|
|
511
|
+
div(other: DecimalLike, precision: number, direction: RoundDirection): Decimal;
|
|
488
512
|
/**
|
|
489
513
|
* Three-way comparison: returns `-1`, `0`, or `1`.
|
|
490
514
|
* @public
|
|
491
515
|
*/
|
|
492
|
-
cmp(other:
|
|
516
|
+
cmp(other: DecimalLike): -1 | 0 | 1;
|
|
493
517
|
/**
|
|
494
518
|
* Return `true` if this value is numerically equal to `other`.
|
|
495
519
|
* @public
|
|
496
520
|
*/
|
|
497
|
-
eq(other:
|
|
521
|
+
eq(other: DecimalLike): boolean;
|
|
498
522
|
/**
|
|
499
523
|
* Return `true` if this value is strictly less than `other`.
|
|
500
524
|
* @public
|
|
501
525
|
*/
|
|
502
|
-
lt(other:
|
|
526
|
+
lt(other: DecimalLike): boolean;
|
|
503
527
|
/**
|
|
504
528
|
* Return `true` if this value is less than or equal to `other`.
|
|
505
529
|
* @public
|
|
506
530
|
*/
|
|
507
|
-
lte(other:
|
|
531
|
+
lte(other: DecimalLike): boolean;
|
|
508
532
|
/**
|
|
509
533
|
* Return `true` if this value is strictly greater than `other`.
|
|
510
534
|
* @public
|
|
511
535
|
*/
|
|
512
|
-
gt(other:
|
|
536
|
+
gt(other: DecimalLike): boolean;
|
|
513
537
|
/**
|
|
514
538
|
* Return `true` if this value is greater than or equal to `other`.
|
|
515
539
|
* @public
|
|
516
540
|
*/
|
|
517
|
-
gte(other:
|
|
541
|
+
gte(other: DecimalLike): boolean;
|
|
518
542
|
/**
|
|
519
543
|
* Return `true` if this value is exactly zero.
|
|
520
544
|
* @public
|
|
@@ -565,6 +589,11 @@ export declare interface Decimal {
|
|
|
565
589
|
* @public
|
|
566
590
|
*/
|
|
567
591
|
toFixed(decimalPlaces: number, direction: RoundDirection): string;
|
|
592
|
+
/**
|
|
593
|
+
* Convert to an {@link (Integer:type)} by rounding.
|
|
594
|
+
* @public
|
|
595
|
+
*/
|
|
596
|
+
toInteger(direction: RoundDirection): Integer;
|
|
568
597
|
/**
|
|
569
598
|
* Rejects implicit coercion; explicit `String(d)` and template literals still work.
|
|
570
599
|
* @public
|
|
@@ -582,10 +611,31 @@ export declare interface Decimal {
|
|
|
582
611
|
*
|
|
583
612
|
* @public
|
|
584
613
|
*/
|
|
585
|
-
export declare const Decimal:
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
614
|
+
export declare const Decimal: DecimalCompanion;
|
|
615
|
+
|
|
616
|
+
/** @public */
|
|
617
|
+
declare interface DecimalCompanion {
|
|
618
|
+
/** Type guard: narrows `unknown` to `Decimal`. @public */
|
|
619
|
+
is(value: unknown): value is Decimal;
|
|
620
|
+
/** Assertion guard: throws if not a `Decimal`. @public */
|
|
621
|
+
assert(value: unknown): asserts value is Decimal;
|
|
622
|
+
/** Create a Decimal from a {@link DecimalLike} value. @public */
|
|
623
|
+
from(value: DecimalLike): Decimal;
|
|
624
|
+
/** The Decimal value `0`. @public */
|
|
625
|
+
readonly zero: Decimal;
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Values that can be coerced to a `Decimal` via `Decimal.from()`.
|
|
630
|
+
*
|
|
631
|
+
* @remarks
|
|
632
|
+
* This union is accepted by `Decimal.from()` and by all arithmetic and
|
|
633
|
+
* comparison methods on `Decimal` instances. Non-Decimal values are
|
|
634
|
+
* coerced via `Decimal.from()` before the operation.
|
|
635
|
+
*
|
|
636
|
+
* @public
|
|
637
|
+
*/
|
|
638
|
+
declare type DecimalLike = bigint | Decimal | Integer | number | string;
|
|
589
639
|
|
|
590
640
|
/**
|
|
591
641
|
* Precision specification for `Decimal.round()`.
|
|
@@ -870,6 +920,50 @@ declare namespace Extend {
|
|
|
870
920
|
}
|
|
871
921
|
export { Extend }
|
|
872
922
|
|
|
923
|
+
/** A branded integer — a `number` guaranteed to satisfy `Number.isInteger`. @public */
|
|
924
|
+
declare type Integer = {
|
|
925
|
+
readonly [__integerBrand]: true;
|
|
926
|
+
readonly [__stripeType]: 'int';
|
|
927
|
+
} & number;
|
|
928
|
+
|
|
929
|
+
/** Factory, type guard, and utilities for {@link (Integer:type)} branded values. @public */
|
|
930
|
+
declare const Integer: IntegerCompanion;
|
|
931
|
+
|
|
932
|
+
/** @public */
|
|
933
|
+
declare interface IntegerCompanion {
|
|
934
|
+
/** The Integer value `0`. @public */
|
|
935
|
+
readonly zero: Integer;
|
|
936
|
+
/** Type guard: narrows `unknown` to {@link (Integer:type)}. @public */
|
|
937
|
+
is(value: unknown): value is Integer;
|
|
938
|
+
/** Assertion guard: throws if not an {@link (Integer:type)}. @public */
|
|
939
|
+
assert(value: unknown): asserts value is Integer;
|
|
940
|
+
/** Coerce a value to {@link (Integer:type)} by rounding. @public */
|
|
941
|
+
from(value: Decimal | Integer | number | string, rounding: IntegerRoundDirection): Integer;
|
|
942
|
+
/** Lossless conversion to `Decimal`. @public */
|
|
943
|
+
toDecimal(value: Integer): Decimal;
|
|
944
|
+
/** Type guard: narrows {@link (Integer:type)} to {@link (PositiveInteger:type)}. @public */
|
|
945
|
+
isPositive(value: Integer): value is PositiveInteger;
|
|
946
|
+
/** Assertion guard: throws if the Integer is negative. @public */
|
|
947
|
+
assertIsPositive(value: Integer): asserts value is PositiveInteger;
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
/**
|
|
951
|
+
* Rounding directions for coercing a number to an integer.
|
|
952
|
+
*
|
|
953
|
+
* A focused subset of {@link https://standards.ieee.org/ieee/754/6210/ | IEEE 754-2019} §4.3:
|
|
954
|
+
*
|
|
955
|
+
* | Direction | Behavior | Examples (→ integer) |
|
|
956
|
+
* | -------------- | ---------------------------- | ------------------------------ |
|
|
957
|
+
* | `'ceil'` | Toward +∞ | 1.1→2, -1.1→-1 |
|
|
958
|
+
* | `'floor'` | Toward -∞ | 1.9→1, -1.1→-2 |
|
|
959
|
+
* | `'round-down'` | Toward zero (truncate) | 1.9→1, -1.9→-1 |
|
|
960
|
+
* | `'round-up'` | Away from zero | 1.1→2, -1.1→-2 |
|
|
961
|
+
* | `'half-up'` | Nearest; ties away from zero | 0.5→1, -0.5→-1, 1.4→1 |
|
|
962
|
+
*
|
|
963
|
+
* @public
|
|
964
|
+
*/
|
|
965
|
+
declare type IntegerRoundDirection = 'ceil' | 'floor' | 'half-up' | 'round-down' | 'round-up';
|
|
966
|
+
|
|
873
967
|
/** @public */
|
|
874
968
|
declare namespace InvoiceCollectionSetting {
|
|
875
969
|
/** @public */
|
|
@@ -1012,6 +1106,42 @@ export declare interface Percent {
|
|
|
1012
1106
|
value: number;
|
|
1013
1107
|
}
|
|
1014
1108
|
|
|
1109
|
+
/**
|
|
1110
|
+
* A branded non-negative integer — a `number` guaranteed to be an integer ≥ 0.
|
|
1111
|
+
*
|
|
1112
|
+
* This is a subtype of {@link (Integer:type)}: every non-negative integer is an
|
|
1113
|
+
* integer, so `PositiveInteger` values are assignable to `Integer` contexts.
|
|
1114
|
+
* The reverse is not true — an `Integer` cannot be assigned where a
|
|
1115
|
+
* `PositiveInteger` is expected without going through the `PositiveInteger.is()`
|
|
1116
|
+
* type guard or `PositiveInteger.from()` factory.
|
|
1117
|
+
*
|
|
1118
|
+
* @remarks
|
|
1119
|
+
* Despite the name, this type includes zero (`>= 0`, not `> 0`).
|
|
1120
|
+
* The schema-level constraint `@minimum 0` should be added to fields
|
|
1121
|
+
* typed as `PositiveInteger` to ensure the non-negativity invariant
|
|
1122
|
+
* is enforced at validation time.
|
|
1123
|
+
*
|
|
1124
|
+
* @public
|
|
1125
|
+
*/
|
|
1126
|
+
declare type PositiveInteger = {
|
|
1127
|
+
readonly [__integerBrand]: true;
|
|
1128
|
+
readonly [__positiveIntegerBrand]: true;
|
|
1129
|
+
readonly [__stripeType]: 'int';
|
|
1130
|
+
} & number;
|
|
1131
|
+
|
|
1132
|
+
/** Factory, type guard, and utilities for {@link (PositiveInteger:type)} branded values. @public */
|
|
1133
|
+
declare const PositiveInteger: PositiveIntegerCompanion;
|
|
1134
|
+
|
|
1135
|
+
/** @public */
|
|
1136
|
+
declare interface PositiveIntegerCompanion {
|
|
1137
|
+
/** Type guard: narrows `unknown` to {@link (PositiveInteger:type)}. @public */
|
|
1138
|
+
is(value: unknown): value is PositiveInteger;
|
|
1139
|
+
/** Assertion guard: throws if not a {@link (PositiveInteger:type)}. @public */
|
|
1140
|
+
assert(value: unknown): asserts value is PositiveInteger;
|
|
1141
|
+
/** Coerce a value to {@link (PositiveInteger:type)} by rounding. Throws if negative. @public */
|
|
1142
|
+
from(value: Decimal | Integer | number | string, rounding: IntegerRoundDirection): PositiveInteger;
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1015
1145
|
/** @public */
|
|
1016
1146
|
declare namespace Prorations {
|
|
1017
1147
|
/** @public */
|
|
@@ -12,48 +12,65 @@
|
|
|
12
12
|
import { __integerBrand } from '@formspec/core';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
* Opaque brand
|
|
15
|
+
* Opaque brand key used as a property key in SDK branded types.
|
|
16
16
|
*
|
|
17
17
|
* @remarks
|
|
18
18
|
* You do not need to use this directly — it is already embedded in
|
|
19
|
-
* branded values returned by factory functions like {@link (Integer:type)}.
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* branded values returned by factory functions like {@link (Integer:type)}.from().
|
|
20
|
+
*
|
|
21
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
22
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
23
|
+
* branded types.
|
|
22
24
|
*
|
|
23
25
|
* @public
|
|
24
26
|
*/
|
|
25
|
-
export declare const __brand:
|
|
27
|
+
export declare const __brand: '__brand';
|
|
26
28
|
|
|
27
29
|
/**
|
|
28
|
-
* Unique brand
|
|
30
|
+
* Unique brand key for the `Decimal` type.
|
|
29
31
|
*
|
|
30
|
-
* Using a dedicated
|
|
32
|
+
* Using a dedicated key (rather than the shared `__brand`) lets formspec's
|
|
31
33
|
* structural brand-detection distinguish `Decimal` from other SDK branded
|
|
32
34
|
* types (e.g., `Ref`, `StreetAddress`) that also carry `[__brand]`.
|
|
33
35
|
*
|
|
36
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
37
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
38
|
+
* branded types.
|
|
39
|
+
*
|
|
34
40
|
* @internal
|
|
35
41
|
*/
|
|
36
|
-
declare const __decimalBrand:
|
|
42
|
+
export declare const __decimalBrand: '__decimalBrand';
|
|
37
43
|
|
|
38
44
|
/**
|
|
39
|
-
* Distinct brand for PositiveInteger so an Integer is not assignable to
|
|
45
|
+
* Distinct brand key for PositiveInteger so an Integer is not assignable to
|
|
40
46
|
* PositiveInteger without going through the guard. PositiveInteger is a
|
|
41
47
|
* subtype of Integer (it carries both brands), so it can be used wherever
|
|
42
48
|
* Integer is expected.
|
|
43
|
-
*
|
|
49
|
+
*
|
|
50
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
51
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
52
|
+
* branded types.
|
|
53
|
+
*
|
|
54
|
+
* For internal use only — may be removed in a future release.
|
|
55
|
+
*
|
|
56
|
+
* @public
|
|
44
57
|
*/
|
|
45
|
-
declare const __positiveIntegerBrand:
|
|
58
|
+
export declare const __positiveIntegerBrand: '__positiveIntegerBrand';
|
|
46
59
|
|
|
47
60
|
/**
|
|
48
|
-
* Opaque type-tag
|
|
61
|
+
* Opaque type-tag key used by SDK scalar types to carry Stripe type metadata.
|
|
49
62
|
*
|
|
50
63
|
* @remarks
|
|
51
64
|
* You do not need to use this directly — it is already embedded in
|
|
52
|
-
* branded values returned by factory functions like {@link (Integer:type)}.
|
|
65
|
+
* branded values returned by factory functions like {@link (Integer:type)}.from().
|
|
66
|
+
*
|
|
67
|
+
* String-literal const (not `unique symbol`) so that independent
|
|
68
|
+
* declaration rollups (root vs subpath) produce structurally compatible
|
|
69
|
+
* branded types.
|
|
53
70
|
*
|
|
54
71
|
* @public
|
|
55
72
|
*/
|
|
56
|
-
export declare const __stripeType:
|
|
73
|
+
export declare const __stripeType: '__stripeType';
|
|
57
74
|
|
|
58
75
|
/** @public */
|
|
59
76
|
declare type AnyTimeRange = {
|
|
@@ -159,7 +176,7 @@ declare namespace Billing {
|
|
|
159
176
|
}
|
|
160
177
|
export { Billing }
|
|
161
178
|
|
|
162
|
-
/** The type of the opaque brand
|
|
179
|
+
/** The type of the opaque brand key used as a property key in SDK branded types. @public */
|
|
163
180
|
export declare type BrandSymbol = typeof __brand;
|
|
164
181
|
|
|
165
182
|
/**
|
|
@@ -625,52 +642,52 @@ export declare interface Decimal {
|
|
|
625
642
|
* Return the sum of this value and `other`.
|
|
626
643
|
* @public
|
|
627
644
|
*/
|
|
628
|
-
add(other:
|
|
645
|
+
add(other: DecimalLike): Decimal;
|
|
629
646
|
/**
|
|
630
647
|
* Return the difference of this value and `other`.
|
|
631
648
|
* @public
|
|
632
649
|
*/
|
|
633
|
-
sub(other:
|
|
650
|
+
sub(other: DecimalLike): Decimal;
|
|
634
651
|
/**
|
|
635
652
|
* Return the product of this value and `other`.
|
|
636
653
|
* @public
|
|
637
654
|
*/
|
|
638
|
-
mul(other:
|
|
655
|
+
mul(other: DecimalLike): Decimal;
|
|
639
656
|
/**
|
|
640
657
|
* Return the quotient of this value divided by `other`.
|
|
641
658
|
* @public
|
|
642
659
|
*/
|
|
643
|
-
div(other:
|
|
660
|
+
div(other: DecimalLike, precision: number, direction: RoundDirection): Decimal;
|
|
644
661
|
/**
|
|
645
662
|
* Three-way comparison: returns `-1`, `0`, or `1`.
|
|
646
663
|
* @public
|
|
647
664
|
*/
|
|
648
|
-
cmp(other:
|
|
665
|
+
cmp(other: DecimalLike): -1 | 0 | 1;
|
|
649
666
|
/**
|
|
650
667
|
* Return `true` if this value is numerically equal to `other`.
|
|
651
668
|
* @public
|
|
652
669
|
*/
|
|
653
|
-
eq(other:
|
|
670
|
+
eq(other: DecimalLike): boolean;
|
|
654
671
|
/**
|
|
655
672
|
* Return `true` if this value is strictly less than `other`.
|
|
656
673
|
* @public
|
|
657
674
|
*/
|
|
658
|
-
lt(other:
|
|
675
|
+
lt(other: DecimalLike): boolean;
|
|
659
676
|
/**
|
|
660
677
|
* Return `true` if this value is less than or equal to `other`.
|
|
661
678
|
* @public
|
|
662
679
|
*/
|
|
663
|
-
lte(other:
|
|
680
|
+
lte(other: DecimalLike): boolean;
|
|
664
681
|
/**
|
|
665
682
|
* Return `true` if this value is strictly greater than `other`.
|
|
666
683
|
* @public
|
|
667
684
|
*/
|
|
668
|
-
gt(other:
|
|
685
|
+
gt(other: DecimalLike): boolean;
|
|
669
686
|
/**
|
|
670
687
|
* Return `true` if this value is greater than or equal to `other`.
|
|
671
688
|
* @public
|
|
672
689
|
*/
|
|
673
|
-
gte(other:
|
|
690
|
+
gte(other: DecimalLike): boolean;
|
|
674
691
|
/**
|
|
675
692
|
* Return `true` if this value is exactly zero.
|
|
676
693
|
* @public
|
|
@@ -721,6 +738,11 @@ export declare interface Decimal {
|
|
|
721
738
|
* @public
|
|
722
739
|
*/
|
|
723
740
|
toFixed(decimalPlaces: number, direction: RoundDirection): string;
|
|
741
|
+
/**
|
|
742
|
+
* Convert to an {@link (Integer:type)} by rounding.
|
|
743
|
+
* @public
|
|
744
|
+
*/
|
|
745
|
+
toInteger(direction: RoundDirection): Integer;
|
|
724
746
|
/**
|
|
725
747
|
* Rejects implicit coercion; explicit `String(d)` and template literals still work.
|
|
726
748
|
* @public
|
|
@@ -738,10 +760,31 @@ export declare interface Decimal {
|
|
|
738
760
|
*
|
|
739
761
|
* @public
|
|
740
762
|
*/
|
|
741
|
-
export declare const Decimal:
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
763
|
+
export declare const Decimal: DecimalCompanion;
|
|
764
|
+
|
|
765
|
+
/** @public */
|
|
766
|
+
export declare interface DecimalCompanion {
|
|
767
|
+
/** Type guard: narrows `unknown` to `Decimal`. @public */
|
|
768
|
+
is(value: unknown): value is Decimal;
|
|
769
|
+
/** Assertion guard: throws if not a `Decimal`. @public */
|
|
770
|
+
assert(value: unknown): asserts value is Decimal;
|
|
771
|
+
/** Create a Decimal from a {@link DecimalLike} value. @public */
|
|
772
|
+
from(value: DecimalLike): Decimal;
|
|
773
|
+
/** The Decimal value `0`. @public */
|
|
774
|
+
readonly zero: Decimal;
|
|
775
|
+
}
|
|
776
|
+
|
|
777
|
+
/**
|
|
778
|
+
* Values that can be coerced to a `Decimal` via `Decimal.from()`.
|
|
779
|
+
*
|
|
780
|
+
* @remarks
|
|
781
|
+
* This union is accepted by `Decimal.from()` and by all arithmetic and
|
|
782
|
+
* comparison methods on `Decimal` instances. Non-Decimal values are
|
|
783
|
+
* coerced via `Decimal.from()` before the operation.
|
|
784
|
+
*
|
|
785
|
+
* @public
|
|
786
|
+
*/
|
|
787
|
+
export declare type DecimalLike = bigint | Decimal | Integer | number | string;
|
|
745
788
|
|
|
746
789
|
/**
|
|
747
790
|
* Precision specification for `Decimal.round()`.
|
|
@@ -799,6 +842,18 @@ export declare const DecimalRoundingPresets: Readonly<{
|
|
|
799
842
|
}>;
|
|
800
843
|
}>;
|
|
801
844
|
|
|
845
|
+
/**
|
|
846
|
+
* Recursively converts a type to a deeply-readonly version.
|
|
847
|
+
*
|
|
848
|
+
* Primitive types (`string`, `number`, `boolean`, `bigint`, `symbol`,
|
|
849
|
+
* `undefined`, `null`) are returned as-is. Arrays become `readonly` arrays
|
|
850
|
+
* of deeply-readonly elements. Object types have each property marked
|
|
851
|
+
* `readonly`, and the type of each property is recursively transformed.
|
|
852
|
+
*
|
|
853
|
+
* @public
|
|
854
|
+
*/
|
|
855
|
+
export declare type DeepReadonly<T> = T extends bigint | boolean | null | number | string | symbol | undefined ? T : T extends readonly (infer Item)[] ? readonly DeepReadonly<Item>[] : T extends object ? { readonly [K in keyof T]: DeepReadonly<T[K]> } : T;
|
|
856
|
+
|
|
802
857
|
/**
|
|
803
858
|
* The IEEE 754 decimal128 coefficient size (34 digits) — the recommended
|
|
804
859
|
* precision for `Decimal.div()` when full precision is desired.
|
|
@@ -1109,11 +1164,26 @@ export declare type Integer = {
|
|
|
1109
1164
|
readonly [__stripeType]: 'int';
|
|
1110
1165
|
} & number;
|
|
1111
1166
|
|
|
1112
|
-
/** Factory
|
|
1113
|
-
export declare const Integer:
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1167
|
+
/** Factory, type guard, and utilities for {@link (Integer:type)} branded values. @public */
|
|
1168
|
+
export declare const Integer: IntegerCompanion;
|
|
1169
|
+
|
|
1170
|
+
/** @public */
|
|
1171
|
+
export declare interface IntegerCompanion {
|
|
1172
|
+
/** The Integer value `0`. @public */
|
|
1173
|
+
readonly zero: Integer;
|
|
1174
|
+
/** Type guard: narrows `unknown` to {@link (Integer:type)}. @public */
|
|
1175
|
+
is(value: unknown): value is Integer;
|
|
1176
|
+
/** Assertion guard: throws if not an {@link (Integer:type)}. @public */
|
|
1177
|
+
assert(value: unknown): asserts value is Integer;
|
|
1178
|
+
/** Coerce a value to {@link (Integer:type)} by rounding. @public */
|
|
1179
|
+
from(value: Decimal | Integer | number | string, rounding: IntegerRoundDirection): Integer;
|
|
1180
|
+
/** Lossless conversion to `Decimal`. @public */
|
|
1181
|
+
toDecimal(value: Integer): Decimal;
|
|
1182
|
+
/** Type guard: narrows {@link (Integer:type)} to {@link (PositiveInteger:type)}. @public */
|
|
1183
|
+
isPositive(value: Integer): value is PositiveInteger;
|
|
1184
|
+
/** Assertion guard: throws if the Integer is negative. @public */
|
|
1185
|
+
assertIsPositive(value: Integer): asserts value is PositiveInteger;
|
|
1186
|
+
}
|
|
1117
1187
|
|
|
1118
1188
|
/**
|
|
1119
1189
|
* Rounding directions for coercing a number to an integer.
|
|
@@ -1374,11 +1444,18 @@ export declare type PositiveInteger = {
|
|
|
1374
1444
|
readonly [__stripeType]: 'int';
|
|
1375
1445
|
} & number;
|
|
1376
1446
|
|
|
1377
|
-
/** Factory
|
|
1378
|
-
export declare const PositiveInteger:
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1447
|
+
/** Factory, type guard, and utilities for {@link (PositiveInteger:type)} branded values. @public */
|
|
1448
|
+
export declare const PositiveInteger: PositiveIntegerCompanion;
|
|
1449
|
+
|
|
1450
|
+
/** @public */
|
|
1451
|
+
export declare interface PositiveIntegerCompanion {
|
|
1452
|
+
/** Type guard: narrows `unknown` to {@link (PositiveInteger:type)}. @public */
|
|
1453
|
+
is(value: unknown): value is PositiveInteger;
|
|
1454
|
+
/** Assertion guard: throws if not a {@link (PositiveInteger:type)}. @public */
|
|
1455
|
+
assert(value: unknown): asserts value is PositiveInteger;
|
|
1456
|
+
/** Coerce a value to {@link (PositiveInteger:type)} by rounding. Throws if negative. @public */
|
|
1457
|
+
from(value: Decimal | Integer | number | string, rounding: IntegerRoundDirection): PositiveInteger;
|
|
1458
|
+
}
|
|
1382
1459
|
|
|
1383
1460
|
/** @public */
|
|
1384
1461
|
declare namespace Prorations {
|
|
@@ -2030,7 +2107,7 @@ export declare type StreetAddress = {
|
|
|
2030
2107
|
/** Factory for creating {@link (StreetAddress:type)} branded values. @public */
|
|
2031
2108
|
export declare const StreetAddress: { create: (address: string) => StreetAddress };
|
|
2032
2109
|
|
|
2033
|
-
/** The type of the opaque Stripe type-tag
|
|
2110
|
+
/** The type of the opaque Stripe type-tag key used in SDK scalar types. @public */
|
|
2034
2111
|
export declare type StripeTypeSymbol = typeof __stripeType;
|
|
2035
2112
|
|
|
2036
2113
|
/**
|
|
@@ -2053,6 +2130,28 @@ export declare type Timestamp = {
|
|
|
2053
2130
|
/** Factory for creating {@link (Timestamp:type)} branded values. @public */
|
|
2054
2131
|
export declare const Timestamp: { create: (value: string) => Timestamp };
|
|
2055
2132
|
|
|
2133
|
+
/**
|
|
2134
|
+
* Deep-freezes `value` and returns it typed as {@link DeepReadonly}`<T>`.
|
|
2135
|
+
*
|
|
2136
|
+
* Use this helper for module-scoped constant objects and arrays to satisfy
|
|
2137
|
+
* the `dsl/no-module-scoped-mutable-const` lint rule. Unlike `Object.freeze`,
|
|
2138
|
+
* which is shallow, `toConst` recursively freezes all nested objects and arrays.
|
|
2139
|
+
*
|
|
2140
|
+
* @example
|
|
2141
|
+
* ```typescript
|
|
2142
|
+
* import { toConst } from '@stripe/extensibility-sdk/stdlib';
|
|
2143
|
+
*
|
|
2144
|
+
* const DEFAULTS = toConst({ timeout: 30, retries: 3 });
|
|
2145
|
+
* // Type: { readonly timeout: 30; readonly retries: 3 }
|
|
2146
|
+
*
|
|
2147
|
+
* const STATUSES = toConst(['active', 'pending', 'cancelled']);
|
|
2148
|
+
* // Type: readonly ["active", "pending", "cancelled"]
|
|
2149
|
+
* ```
|
|
2150
|
+
*
|
|
2151
|
+
* @public
|
|
2152
|
+
*/
|
|
2153
|
+
export declare function toConst<T>(value: T): DeepReadonly<T>;
|
|
2154
|
+
|
|
2056
2155
|
/**
|
|
2057
2156
|
* Apply an element transform to each item in an array.
|
|
2058
2157
|
*
|