@nodana/phoenixd-ts 0.1.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/LICENSE.md +7 -0
- package/README.md +224 -0
- package/dist/cjs/HttpClient.d.ts +20 -0
- package/dist/cjs/HttpClient.js +67 -0
- package/dist/cjs/HttpClient.js.map +1 -0
- package/dist/cjs/Phoenixd.d.ts +32 -0
- package/dist/cjs/Phoenixd.js +110 -0
- package/dist/cjs/Phoenixd.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types.d.ts +287 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +1 -0
- package/dist/cjs/utils.js +26 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/es6/HttpClient.d.ts +20 -0
- package/dist/es6/HttpClient.js +62 -0
- package/dist/es6/HttpClient.js.map +1 -0
- package/dist/es6/Phoenixd.d.ts +32 -0
- package/dist/es6/Phoenixd.js +106 -0
- package/dist/es6/Phoenixd.js.map +1 -0
- package/dist/es6/index.d.ts +2 -0
- package/dist/es6/index.js +5 -0
- package/dist/es6/index.js.map +1 -0
- package/dist/es6/types.d.ts +287 -0
- package/dist/es6/types.js +2 -0
- package/dist/es6/types.js.map +1 -0
- package/dist/es6/utils.d.ts +1 -0
- package/dist/es6/utils.js +22 -0
- package/dist/es6/utils.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
export interface LocalParams {
|
|
2
|
+
nodeId: string;
|
|
3
|
+
fundingKeyPath: string;
|
|
4
|
+
dustLimit: number;
|
|
5
|
+
maxHtlcValueInFlightMsat: number;
|
|
6
|
+
htlcMinimum: number;
|
|
7
|
+
toSelfDelay: number;
|
|
8
|
+
maxAcceptedHtlcs: number;
|
|
9
|
+
isInitiator: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface RemoteParams {
|
|
12
|
+
nodeId: string;
|
|
13
|
+
dustLimit: number;
|
|
14
|
+
maxHtlcValueInFlightMsat: number;
|
|
15
|
+
htlcMinimum: number;
|
|
16
|
+
}
|
|
17
|
+
export interface Commitments {
|
|
18
|
+
params: {
|
|
19
|
+
channelId: string;
|
|
20
|
+
channelConfig: string[];
|
|
21
|
+
channelFeatures: string[];
|
|
22
|
+
localParams: LocalParams;
|
|
23
|
+
remoteParams: RemoteParams;
|
|
24
|
+
channelFlags: number;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface ChannelUpdate {
|
|
28
|
+
signature: string;
|
|
29
|
+
chainHash: string;
|
|
30
|
+
shortChannelId: string;
|
|
31
|
+
timestampSeconds: number;
|
|
32
|
+
messageFlags: number;
|
|
33
|
+
channelFlags: number;
|
|
34
|
+
cltvExpiryDelta: number;
|
|
35
|
+
htlcMinimumMsat: number;
|
|
36
|
+
feeBaseMsat: number;
|
|
37
|
+
feeProportionalMillionths: number;
|
|
38
|
+
htlcMaximumMsat: number;
|
|
39
|
+
}
|
|
40
|
+
export interface ChannelCompact {
|
|
41
|
+
state: string;
|
|
42
|
+
channelId: string;
|
|
43
|
+
balanceSat: number;
|
|
44
|
+
inboundLiquiditySat: number;
|
|
45
|
+
capacitySat: number;
|
|
46
|
+
fundingTxId: string;
|
|
47
|
+
}
|
|
48
|
+
export interface Channel {
|
|
49
|
+
type: string;
|
|
50
|
+
commitments: Commitments;
|
|
51
|
+
shortChannelId: string;
|
|
52
|
+
channelUpdate: ChannelUpdate;
|
|
53
|
+
}
|
|
54
|
+
export interface CloseChannelParams {
|
|
55
|
+
/** identifier of the channel to close */
|
|
56
|
+
channelId: string;
|
|
57
|
+
/** bitcoin address where your balance will be sent to */
|
|
58
|
+
address: string;
|
|
59
|
+
/** fee rate in satoshi per vbyte */
|
|
60
|
+
feerateSatByte: number;
|
|
61
|
+
}
|
|
62
|
+
export interface CreateInvoiceParams {
|
|
63
|
+
/** the description of the invoice (max. 128 characters) */
|
|
64
|
+
description?: string;
|
|
65
|
+
/** sha256 hash of a description */
|
|
66
|
+
descriptionHash?: string;
|
|
67
|
+
/** the amount requested by the invoice, in satoshi. */
|
|
68
|
+
amountSat?: number;
|
|
69
|
+
/** the invoice expiry in seconds, by default 3600 (1 hour). */
|
|
70
|
+
expirySeconds?: number;
|
|
71
|
+
/** an optional custom identifier. Use that to link the invoice to an external system. */
|
|
72
|
+
externalId?: string;
|
|
73
|
+
/** a webhook url that will be notified when this specific payment has been received. */
|
|
74
|
+
webhookUrl?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface PayInvoiceParams {
|
|
77
|
+
/** BOLT11 invoice */
|
|
78
|
+
invoice: string;
|
|
79
|
+
/** optional amount in satoshi. If unset, will pay the amount requested in the invoice */
|
|
80
|
+
amountSat?: number;
|
|
81
|
+
/** optional, mutually exclusive with amountSat. Will empty the wallet if there is a single channel. */
|
|
82
|
+
sendAll?: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface CreateOfferParams {
|
|
85
|
+
/** the description of the offer (max. 128 characters) */
|
|
86
|
+
description?: string;
|
|
87
|
+
/** the amount requested by the offer, in satoshi. */
|
|
88
|
+
amountSat?: number;
|
|
89
|
+
}
|
|
90
|
+
export interface PayOfferParams {
|
|
91
|
+
/** BOLT12 offer */
|
|
92
|
+
offer: string;
|
|
93
|
+
/** optional amount in satoshi. If unset, will pay the amount requested in the invoice */
|
|
94
|
+
amountSat?: number;
|
|
95
|
+
/** optional, mutually exclusive with amountSat. Will empty the wallet if there is a single channel. */
|
|
96
|
+
sendAll?: boolean;
|
|
97
|
+
/** optional message */
|
|
98
|
+
message?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface PayLnAddressParams {
|
|
101
|
+
/** email-like Lightning address, based on BIP-353 or LNURL */
|
|
102
|
+
address: string;
|
|
103
|
+
/** amount in satoshi. If unset, will pay the amount requested in the invoice */
|
|
104
|
+
amountSat?: number;
|
|
105
|
+
/** optional, mutually exclusive with amountSat. Will empty the wallet if there is a single channel. */
|
|
106
|
+
sendAll?: boolean;
|
|
107
|
+
/** optional message for the recipient */
|
|
108
|
+
message?: string;
|
|
109
|
+
}
|
|
110
|
+
export interface SendToAddressParams {
|
|
111
|
+
/** amount in satoshi */
|
|
112
|
+
amountSat: number;
|
|
113
|
+
/** Bitcoin address where funds will be sent */
|
|
114
|
+
address: string;
|
|
115
|
+
/** feerate in satoshi per vbyte */
|
|
116
|
+
feerateSatByte: number;
|
|
117
|
+
}
|
|
118
|
+
export interface BumpFeeParams {
|
|
119
|
+
/** fee rate in satoshi per vbyte */
|
|
120
|
+
feerateSatByte: number;
|
|
121
|
+
}
|
|
122
|
+
export interface ListIncomingPaymentsParams {
|
|
123
|
+
/** start timestamp in millis from epoch, default 0 */
|
|
124
|
+
from?: Date;
|
|
125
|
+
/** end timestamp in millis from epoch, default now */
|
|
126
|
+
to?: Date;
|
|
127
|
+
/** number of payments in the page, default 20 */
|
|
128
|
+
limit?: number;
|
|
129
|
+
/** page offset, default 0 */
|
|
130
|
+
offset?: number;
|
|
131
|
+
/** also return unpaid invoices */
|
|
132
|
+
all?: boolean;
|
|
133
|
+
/** only include payments that use this external id */
|
|
134
|
+
externalId?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface ListOutgoingPaymentsParams {
|
|
137
|
+
/** start timestamp in millis from epoch, default 0 */
|
|
138
|
+
from?: Date;
|
|
139
|
+
/** end timestamp in millis from epoch, default now */
|
|
140
|
+
to?: Date;
|
|
141
|
+
/** number of payments in the page, default 20 */
|
|
142
|
+
limit?: number;
|
|
143
|
+
/** page offset, default 0 */
|
|
144
|
+
offset?: number;
|
|
145
|
+
/** also return unpaid invoices */
|
|
146
|
+
all?: boolean;
|
|
147
|
+
}
|
|
148
|
+
export interface ExportPaymentsParams {
|
|
149
|
+
/** start timestamp in millis from epoch, default 0 */
|
|
150
|
+
from?: Date | number;
|
|
151
|
+
/** end timestamp in millis from epoch, default now */
|
|
152
|
+
to?: Date | number;
|
|
153
|
+
}
|
|
154
|
+
export interface DecodeInvoiceParams {
|
|
155
|
+
/** BOLT11 invoice */
|
|
156
|
+
invoice: string;
|
|
157
|
+
}
|
|
158
|
+
export interface DecodeOfferParams {
|
|
159
|
+
/** BOLT12 offer */
|
|
160
|
+
offer: string;
|
|
161
|
+
}
|
|
162
|
+
export interface EstimateLiquidityFeesParams {
|
|
163
|
+
/** the liquidity amount, in satoshi */
|
|
164
|
+
amountSat: number;
|
|
165
|
+
}
|
|
166
|
+
export interface lnUrlPayParams {
|
|
167
|
+
/** amount in satoshi */
|
|
168
|
+
amountSat?: number;
|
|
169
|
+
/** optional, mutually exclusive with amountSat. Will empty the wallet if there is a single channel. */
|
|
170
|
+
sendAll?: boolean;
|
|
171
|
+
/** the lnurl-pay resource */
|
|
172
|
+
lnurl: string;
|
|
173
|
+
/** (optional) a comment for the recipient */
|
|
174
|
+
message?: string;
|
|
175
|
+
}
|
|
176
|
+
export interface lnUrlWithdrawParams {
|
|
177
|
+
/** the lnurl-withdraw resource */
|
|
178
|
+
lnurl: string;
|
|
179
|
+
}
|
|
180
|
+
export interface lnUrlAuthParams {
|
|
181
|
+
/** the lnurl-auth resource */
|
|
182
|
+
lnurl: string;
|
|
183
|
+
}
|
|
184
|
+
export interface CreateInvoiceResponse {
|
|
185
|
+
amountSat: number;
|
|
186
|
+
paymentHash: string;
|
|
187
|
+
serialized: string;
|
|
188
|
+
}
|
|
189
|
+
export interface Payment {
|
|
190
|
+
recipientAmountSat: number;
|
|
191
|
+
routingFeeSat: number;
|
|
192
|
+
paymentId: string;
|
|
193
|
+
paymentHash: string;
|
|
194
|
+
paymentPreimage: string;
|
|
195
|
+
}
|
|
196
|
+
export interface NodeInfo {
|
|
197
|
+
nodeId: string;
|
|
198
|
+
channels: ChannelCompact[];
|
|
199
|
+
}
|
|
200
|
+
export interface Balance {
|
|
201
|
+
balanceSat: number;
|
|
202
|
+
feeCreditSat: number;
|
|
203
|
+
}
|
|
204
|
+
export interface LiquidityFeesEstimate {
|
|
205
|
+
miningFeeSat: number;
|
|
206
|
+
serviceFeeSat: number;
|
|
207
|
+
}
|
|
208
|
+
export type ListChannelsResponse = Channel[];
|
|
209
|
+
export type IncomingPaymentType = "incoming_payment";
|
|
210
|
+
export type IncomingPaymentSubType = "lightning";
|
|
211
|
+
export interface IncomingPayment {
|
|
212
|
+
type: IncomingPaymentType;
|
|
213
|
+
subType: IncomingPaymentSubType;
|
|
214
|
+
paymentHash: string;
|
|
215
|
+
preimage: string;
|
|
216
|
+
externalId?: string | null;
|
|
217
|
+
description?: string;
|
|
218
|
+
invoice?: string;
|
|
219
|
+
isPaid: boolean;
|
|
220
|
+
isExpired?: boolean;
|
|
221
|
+
requestedSat?: number;
|
|
222
|
+
receivedSat: number;
|
|
223
|
+
fees: number;
|
|
224
|
+
payerKey?: string;
|
|
225
|
+
expiresAt?: number;
|
|
226
|
+
completedAt?: number;
|
|
227
|
+
createdAt: number;
|
|
228
|
+
}
|
|
229
|
+
export type OutgoingPaymentType = "outgoing_payment";
|
|
230
|
+
export type OutgoingPaymentSubType = "lightning" | "auto_liquidity";
|
|
231
|
+
export interface OutgoingPayment {
|
|
232
|
+
type: OutgoingPaymentType;
|
|
233
|
+
subType: OutgoingPaymentSubType;
|
|
234
|
+
paymentId: string;
|
|
235
|
+
paymentHash?: string;
|
|
236
|
+
preimage?: string;
|
|
237
|
+
txId?: string;
|
|
238
|
+
isPaid: boolean;
|
|
239
|
+
sent: number;
|
|
240
|
+
fees: number;
|
|
241
|
+
invoice?: string;
|
|
242
|
+
completedAt?: number;
|
|
243
|
+
createdAt: number;
|
|
244
|
+
}
|
|
245
|
+
export interface LnUrlWithdrawal {
|
|
246
|
+
url: string;
|
|
247
|
+
minWithdrawable: number;
|
|
248
|
+
maxWithdrawable: number;
|
|
249
|
+
description: string;
|
|
250
|
+
k1: string;
|
|
251
|
+
invoice: string;
|
|
252
|
+
}
|
|
253
|
+
export interface WebsocketPayment {
|
|
254
|
+
type: "payment_received";
|
|
255
|
+
amountSat: number;
|
|
256
|
+
paymentHash: string;
|
|
257
|
+
externalId?: string | null;
|
|
258
|
+
payerNote?: string | null;
|
|
259
|
+
payerKey?: string | null;
|
|
260
|
+
timestamp?: number;
|
|
261
|
+
}
|
|
262
|
+
export interface PhoenixdClient {
|
|
263
|
+
createInvoice(params: CreateInvoiceParams): Promise<CreateInvoiceResponse>;
|
|
264
|
+
payInvoice(params: PayInvoiceParams): Promise<Payment>;
|
|
265
|
+
createOffer(params?: CreateOfferParams): Promise<string>;
|
|
266
|
+
payOffer(params: PayOfferParams): Promise<Payment>;
|
|
267
|
+
payLnAddress(params: PayLnAddressParams): Promise<Payment>;
|
|
268
|
+
sendToAddress(params: SendToAddressParams): Promise<string>;
|
|
269
|
+
bumpFee(params: BumpFeeParams): Promise<string>;
|
|
270
|
+
listIncomingPayments(params?: ListIncomingPaymentsParams): Promise<IncomingPayment[]>;
|
|
271
|
+
getIncomingPayment(paymentHash: string): Promise<IncomingPayment>;
|
|
272
|
+
listOutgoingPayments(params?: ListOutgoingPaymentsParams): Promise<OutgoingPayment[]>;
|
|
273
|
+
getOutgoingPayment(paymentId: string): Promise<OutgoingPayment>;
|
|
274
|
+
getOutgoingPaymentByHash(paymentHash: string): Promise<OutgoingPayment>;
|
|
275
|
+
exportPayments(params?: ExportPaymentsParams): Promise<string>;
|
|
276
|
+
getInfo(): Promise<NodeInfo>;
|
|
277
|
+
getBalance(): Promise<Balance>;
|
|
278
|
+
getLightningAddress(): Promise<string>;
|
|
279
|
+
listChannels(): Promise<ListChannelsResponse>;
|
|
280
|
+
closeChannel(params: CloseChannelParams): Promise<string>;
|
|
281
|
+
decodeInvoice(params: DecodeInvoiceParams): Promise<any>;
|
|
282
|
+
decodeOffer(params: DecodeOfferParams): Promise<any>;
|
|
283
|
+
estimateLiquidityFees(params: EstimateLiquidityFeesParams): Promise<LiquidityFeesEstimate>;
|
|
284
|
+
lnUrlPay(params: lnUrlPayParams): Promise<Payment>;
|
|
285
|
+
lnUrlWithdraw(params: lnUrlWithdrawParams): Promise<LnUrlWithdrawal>;
|
|
286
|
+
lnUrlAuth(params: lnUrlAuthParams): Promise<string>;
|
|
287
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function base64Encode(value: string): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const BASE64_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
2
|
+
function utf8Encode(value) {
|
|
3
|
+
return encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)));
|
|
4
|
+
}
|
|
5
|
+
export function base64Encode(value) {
|
|
6
|
+
const bytes = utf8Encode(value);
|
|
7
|
+
let output = "";
|
|
8
|
+
for (let i = 0; i < bytes.length; i += 3) {
|
|
9
|
+
const first = bytes.charCodeAt(i);
|
|
10
|
+
const second = bytes.charCodeAt(i + 1);
|
|
11
|
+
const third = bytes.charCodeAt(i + 2);
|
|
12
|
+
output += BASE64_CHARS[first >> 2];
|
|
13
|
+
output += BASE64_CHARS[((first & 3) << 4) | (second >> 4)];
|
|
14
|
+
output +=
|
|
15
|
+
i + 1 < bytes.length
|
|
16
|
+
? BASE64_CHARS[((second & 15) << 2) | (third >> 6)]
|
|
17
|
+
: "=";
|
|
18
|
+
output += i + 2 < bytes.length ? BASE64_CHARS[third & 63] : "=";
|
|
19
|
+
}
|
|
20
|
+
return output;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAChB,kEAAkE,CAAC;AAErE,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CACtC,iBAAiB,EACjB,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEtC,MAAM,IAAI,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM;YACJ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM;gBAClB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBACnD,CAAC,CAAC,GAAG,CAAC;QACV,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nodana/phoenixd-ts",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A TypeScript client for Phoenixd Lightning nodes",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/nodana/phoenixd-ts.git"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/nodana/phoenixd-ts#readme",
|
|
10
|
+
"main": "dist/cjs/index.js",
|
|
11
|
+
"module": "dist/es6/index.js",
|
|
12
|
+
"types": "dist/es6/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/es6/index.d.ts",
|
|
16
|
+
"import": "./dist/es6/index.js",
|
|
17
|
+
"require": "./dist/cjs/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"scripts": {
|
|
22
|
+
"clean": "rimraf dist",
|
|
23
|
+
"build:cjs": "tsc",
|
|
24
|
+
"build:es6": "tsc -p tsconfig.es6.json",
|
|
25
|
+
"build": "run-s clean && run-p build:*",
|
|
26
|
+
"prepublishOnly": "run-s test build",
|
|
27
|
+
"test": "mocha -r ts-node/register 'tests/**/*.ts'"
|
|
28
|
+
},
|
|
29
|
+
"keywords": [],
|
|
30
|
+
"author": "",
|
|
31
|
+
"license": "ISC",
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@types/chai": "^4.3.16",
|
|
34
|
+
"@types/mocha": "^10.0.6",
|
|
35
|
+
"@types/node": "^20.14.2",
|
|
36
|
+
"@types/sinon": "^17.0.3",
|
|
37
|
+
"@types/sinon-chai": "^3.2.12",
|
|
38
|
+
"@types/ws": "^8.5.10",
|
|
39
|
+
"chai": "^4.4.1",
|
|
40
|
+
"mocha": "^10.4.0",
|
|
41
|
+
"npm-run-all": "^4.1.5",
|
|
42
|
+
"rimraf": "^6.1.3",
|
|
43
|
+
"sinon": "^18.0.0",
|
|
44
|
+
"sinon-chai": "^3.7.0",
|
|
45
|
+
"ts-node": "^10.9.2",
|
|
46
|
+
"typescript": "^5.4.5"
|
|
47
|
+
},
|
|
48
|
+
"files": [
|
|
49
|
+
"dist"
|
|
50
|
+
]
|
|
51
|
+
}
|