@scaleway/sdk-billing 2.5.1 → 2.6.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.
@@ -1,5 +1,5 @@
1
1
  import { API as ParentAPI } from '@scaleway/sdk-client';
2
- import type { Discount, DownloadInvoiceRequest, ExportInvoicesRequest, GetInvoiceRequest, Invoice, ListConsumptionsRequest, ListConsumptionsResponse, ListDiscountsRequest, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesResponse, ListTaxesRequest, ListTaxesResponse, RedeemCouponRequest } from './types.gen.js';
2
+ import type { Discount, DownloadInvoiceRequest, ExportInvoicesRequest, FinOpsApiListChargesRequest, GetInvoiceRequest, Invoice, ListChargesResponse, ListConsumptionsRequest, ListConsumptionsResponse, ListDiscountsRequest, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesResponse, ListTaxesRequest, ListTaxesResponse, RedeemCouponRequest } from './types.gen.js';
3
3
  /**
4
4
  * Billing API.
5
5
 
@@ -82,3 +82,15 @@ export declare class API extends ParentAPI {
82
82
  */
83
83
  redeemCoupon: (request: Readonly<RedeemCouponRequest>) => Promise<Discount>;
84
84
  }
85
+ /**
86
+ * Billing FinOps API.
87
+ */
88
+ export declare class FinOpsAPI extends ParentAPI {
89
+ /**
90
+ * List charges. List charges for organizations or projects. You must specify at least `organization_ids` or `project_ids`.
91
+ *
92
+ * @param request - The request {@link FinOpsApiListChargesRequest}
93
+ * @returns A Promise of ListChargesResponse
94
+ */
95
+ listCharges: (request?: Readonly<FinOpsApiListChargesRequest>) => Promise<ListChargesResponse>;
96
+ }
@@ -1,4 +1,4 @@
1
- import { unmarshalDiscount, unmarshalInvoice, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse } from "./marshalling.gen.js";
1
+ import { unmarshalDiscount, unmarshalInvoice, unmarshalListChargesResponse, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse } from "./marshalling.gen.js";
2
2
  import { API as API$1, enrichForPagination, resolveOneOf, urlParams, validatePathParam } from "@scaleway/sdk-client";
3
3
  //#region src/v2beta1/api.gen.ts
4
4
  /**
@@ -64,5 +64,18 @@ var API = class extends API$1 {
64
64
  }, unmarshalDiscount);
65
65
  }
66
66
  };
67
+ /**
68
+ * Billing FinOps API.
69
+ */
70
+ var FinOpsAPI = class extends API$1 {
71
+ constructor(..._args2) {
72
+ super(..._args2);
73
+ this.listCharges = (request = {}) => this.client.fetch({
74
+ method: "GET",
75
+ path: `/billing/v2beta1/charges`,
76
+ urlParams: urlParams(["clamp_to_time_range", request.clampToTimeRange], ["end_date_before", request.endDateBefore], ["invoice_ids", request.invoiceIds], ["order_by", request.orderBy], ["organization_id", request.organizationId ?? this.client.settings.defaultOrganizationId], ["page_size", request.pageSize ?? this.client.settings.defaultPageSize], ["page_token", request.pageToken], ["project_ids", request.projectIds], ["resource_ids", request.resourceIds], ["resource_names", request.resourceNames], ["skus", request.skus], ["start_date_after", request.startDateAfter])
77
+ }, unmarshalListChargesResponse);
78
+ }
79
+ };
67
80
  //#endregion
68
- export { API };
81
+ export { API, FinOpsAPI };
@@ -1,3 +1,4 @@
1
- export { API, } from './api.gen.js';
1
+ export { API, FinOpsAPI, } from './api.gen.js';
2
2
  export * from './marshalling.gen.js';
3
- export type { Discount, DiscountCoupon, DiscountDiscountMode, DiscountFilter, DiscountFilterType, DownloadInvoiceRequest, DownloadInvoiceRequestFileType, ExportInvoicesRequest, ExportInvoicesRequestFileType, ExportInvoicesRequestOrderBy, GetInvoiceRequest, Invoice, InvoiceType, ListConsumptionsRequest, ListConsumptionsRequestOrderBy, ListConsumptionsResponse, ListConsumptionsResponseConsumption, ListDiscountsRequest, ListDiscountsRequestOrderBy, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesRequestOrderBy, ListInvoicesResponse, ListTaxesRequest, ListTaxesRequestOrderBy, ListTaxesResponse, ListTaxesResponseTax, RedeemCouponRequest, } from './types.gen.js';
3
+ export type { Charge, Discount, DiscountCoupon, DiscountDiscountMode, DiscountFilter, DiscountFilterType, DownloadInvoiceRequest, DownloadInvoiceRequestFileType, ExportInvoicesRequest, ExportInvoicesRequestFileType, ExportInvoicesRequestOrderBy, FinOpsApiListChargesRequest, GetInvoiceRequest, Invoice, InvoiceType, ListChargesRequestOrderBy, ListChargesResponse, ListConsumptionsRequest, ListConsumptionsRequestOrderBy, ListConsumptionsResponse, ListConsumptionsResponseConsumption, ListDiscountsRequest, ListDiscountsRequestOrderBy, ListDiscountsResponse, ListInvoicesRequest, ListInvoicesRequestOrderBy, ListInvoicesResponse, ListTaxesRequest, ListTaxesRequestOrderBy, ListTaxesResponse, ListTaxesResponseTax, RedeemCouponRequest, } from './types.gen.js';
4
+ export * as ValidationRules from './validation-rules.gen.js';
@@ -1,15 +1,19 @@
1
1
  import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
- import { unmarshalDiscount, unmarshalInvoice, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse } from "./marshalling.gen.js";
3
- import { API } from "./api.gen.js";
2
+ import { unmarshalDiscount, unmarshalInvoice, unmarshalListChargesResponse, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse } from "./marshalling.gen.js";
3
+ import { API, FinOpsAPI } from "./api.gen.js";
4
+ import { validation_rules_gen_exports } from "./validation-rules.gen.js";
4
5
  //#region src/v2beta1/index.gen.ts
5
6
  var index_gen_exports = /* @__PURE__ */ __exportAll({
6
7
  API: () => API,
8
+ FinOpsAPI: () => FinOpsAPI,
9
+ ValidationRules: () => validation_rules_gen_exports,
7
10
  unmarshalDiscount: () => unmarshalDiscount,
8
11
  unmarshalInvoice: () => unmarshalInvoice,
12
+ unmarshalListChargesResponse: () => unmarshalListChargesResponse,
9
13
  unmarshalListConsumptionsResponse: () => unmarshalListConsumptionsResponse,
10
14
  unmarshalListDiscountsResponse: () => unmarshalListDiscountsResponse,
11
15
  unmarshalListInvoicesResponse: () => unmarshalListInvoicesResponse,
12
16
  unmarshalListTaxesResponse: () => unmarshalListTaxesResponse
13
17
  });
14
18
  //#endregion
15
- export { API, index_gen_exports, unmarshalDiscount, unmarshalInvoice, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse };
19
+ export { API, FinOpsAPI, validation_rules_gen_exports as ValidationRules, index_gen_exports, unmarshalDiscount, unmarshalInvoice, unmarshalListChargesResponse, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse };
@@ -1,6 +1,7 @@
1
- import type { Discount, Invoice, ListConsumptionsResponse, ListDiscountsResponse, ListInvoicesResponse, ListTaxesResponse } from './types.gen.js';
1
+ import type { Discount, Invoice, ListChargesResponse, ListConsumptionsResponse, ListDiscountsResponse, ListInvoicesResponse, ListTaxesResponse } from './types.gen.js';
2
2
  export declare const unmarshalDiscount: (data: unknown) => Discount;
3
3
  export declare const unmarshalInvoice: (data: unknown) => Invoice;
4
+ export declare const unmarshalListChargesResponse: (data: unknown) => ListChargesResponse;
4
5
  export declare const unmarshalListConsumptionsResponse: (data: unknown) => ListConsumptionsResponse;
5
6
  export declare const unmarshalListDiscountsResponse: (data: unknown) => ListDiscountsResponse;
6
7
  export declare const unmarshalListInvoicesResponse: (data: unknown) => ListInvoicesResponse;
@@ -51,6 +51,28 @@ const unmarshalInvoice = (data) => {
51
51
  type: data.type
52
52
  };
53
53
  };
54
+ const unmarshalCharge = (data) => {
55
+ if (!isJSONObject(data)) throw new TypeError(`Unmarshalling the type 'Charge' failed as data isn't a dictionary.`);
56
+ return {
57
+ endDate: unmarshalDate(data.end_date),
58
+ invoiceId: data.invoice_id,
59
+ organizationId: data.organization_id,
60
+ price: data.price ? unmarshalMoney(data.price) : void 0,
61
+ projectId: data.project_id,
62
+ resourceId: data.resource_id,
63
+ resourceName: data.resource_name,
64
+ sku: data.sku,
65
+ startDate: unmarshalDate(data.start_date),
66
+ updatedAt: unmarshalDate(data.updated_at)
67
+ };
68
+ };
69
+ const unmarshalListChargesResponse = (data) => {
70
+ if (!isJSONObject(data)) throw new TypeError(`Unmarshalling the type 'ListChargesResponse' failed as data isn't a dictionary.`);
71
+ return {
72
+ charges: unmarshalArrayOfObject(data.charges, unmarshalCharge),
73
+ nextPageToken: data.next_page_token
74
+ };
75
+ };
54
76
  const unmarshalListConsumptionsResponseConsumption = (data) => {
55
77
  if (!isJSONObject(data)) throw new TypeError(`Unmarshalling the type 'ListConsumptionsResponseConsumption' failed as data isn't a dictionary.`);
56
78
  return {
@@ -106,4 +128,4 @@ const unmarshalListTaxesResponse = (data) => {
106
128
  };
107
129
  };
108
130
  //#endregion
109
- export { unmarshalDiscount, unmarshalInvoice, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse };
131
+ export { unmarshalDiscount, unmarshalInvoice, unmarshalListChargesResponse, unmarshalListConsumptionsResponse, unmarshalListDiscountsResponse, unmarshalListInvoicesResponse, unmarshalListTaxesResponse };
@@ -1,62 +1,77 @@
1
1
  export declare const queriesMetadata: {
2
- readonly namespace: "billing";
3
- readonly version: "v2beta1";
4
- readonly folderName: "billingv2beta1";
2
+ readonly namespace: 'billing';
3
+ readonly version: 'v2beta1';
4
+ readonly folderName: 'billingv2beta1';
5
5
  readonly services: readonly [{
6
- readonly apiClass: "API";
6
+ readonly apiClass: 'API';
7
7
  readonly methods: readonly [{
8
- readonly methodName: "listConsumptions";
9
- readonly protoName: "ListConsumptions";
10
- readonly paramsType: "ListConsumptionsRequest";
11
- readonly returnType: "ListConsumptionsResponse";
8
+ readonly methodName: 'listConsumptions';
9
+ readonly protoName: 'ListConsumptions';
10
+ readonly paramsType: 'ListConsumptionsRequest';
11
+ readonly returnType: 'ListConsumptionsResponse';
12
12
  readonly isList: true;
13
- readonly paginationType: "offset";
14
- readonly pageParamKey: "page";
15
- readonly listItemType: "ListConsumptionsResponseConsumption";
13
+ readonly paginationType: 'offset';
14
+ readonly pageParamKey: 'page';
15
+ readonly listItemType: 'ListConsumptionsResponseConsumption';
16
16
  readonly isPrivate: false;
17
- readonly description: "\"";
17
+ readonly description: '"';
18
18
  }, {
19
- readonly methodName: "listTaxes";
20
- readonly protoName: "ListTaxes";
21
- readonly paramsType: "ListTaxesRequest";
22
- readonly returnType: "ListTaxesResponse";
19
+ readonly methodName: 'listTaxes';
20
+ readonly protoName: 'ListTaxes';
21
+ readonly paramsType: 'ListTaxesRequest';
22
+ readonly returnType: 'ListTaxesResponse';
23
23
  readonly isList: true;
24
- readonly paginationType: "offset";
25
- readonly pageParamKey: "page";
26
- readonly listItemType: "ListTaxesResponseTax";
24
+ readonly paginationType: 'offset';
25
+ readonly pageParamKey: 'page';
26
+ readonly listItemType: 'ListTaxesResponseTax';
27
27
  readonly isPrivate: false;
28
- readonly description: "\"";
28
+ readonly description: '"';
29
29
  }, {
30
- readonly methodName: "listInvoices";
31
- readonly protoName: "ListInvoices";
32
- readonly paramsType: "ListInvoicesRequest";
33
- readonly returnType: "ListInvoicesResponse";
30
+ readonly methodName: 'listInvoices';
31
+ readonly protoName: 'ListInvoices';
32
+ readonly paramsType: 'ListInvoicesRequest';
33
+ readonly returnType: 'ListInvoicesResponse';
34
34
  readonly isList: true;
35
- readonly paginationType: "offset";
36
- readonly pageParamKey: "page";
37
- readonly listItemType: "Invoice";
35
+ readonly paginationType: 'offset';
36
+ readonly pageParamKey: 'page';
37
+ readonly listItemType: 'Invoice';
38
38
  readonly isPrivate: false;
39
- readonly description: "\"";
39
+ readonly description: '"';
40
40
  }, {
41
- readonly methodName: "getInvoice";
42
- readonly protoName: "GetInvoice";
43
- readonly paramsType: "GetInvoiceRequest";
44
- readonly returnType: "Invoice";
41
+ readonly methodName: 'getInvoice';
42
+ readonly protoName: 'GetInvoice';
43
+ readonly paramsType: 'GetInvoiceRequest';
44
+ readonly returnType: 'Invoice';
45
45
  readonly isList: false;
46
- readonly paginationType: "none";
46
+ readonly paginationType: 'none';
47
47
  readonly isPrivate: false;
48
- readonly description: "\"";
48
+ readonly description: '"';
49
49
  }, {
50
- readonly methodName: "listDiscounts";
51
- readonly protoName: "ListDiscounts";
52
- readonly paramsType: "ListDiscountsRequest";
53
- readonly returnType: "ListDiscountsResponse";
50
+ readonly methodName: 'listDiscounts';
51
+ readonly protoName: 'ListDiscounts';
52
+ readonly paramsType: 'ListDiscountsRequest';
53
+ readonly returnType: 'ListDiscountsResponse';
54
54
  readonly isList: true;
55
- readonly paginationType: "offset";
56
- readonly pageParamKey: "page";
57
- readonly listItemType: "Discount";
55
+ readonly paginationType: 'offset';
56
+ readonly pageParamKey: 'page';
57
+ readonly listItemType: 'Discount';
58
58
  readonly isPrivate: false;
59
- readonly description: "\"";
59
+ readonly description: '"';
60
+ }];
61
+ }, {
62
+ readonly apiClass: 'FinOpsAPI';
63
+ readonly methods: readonly [{
64
+ readonly methodName: 'listCharges';
65
+ readonly protoName: 'ListCharges';
66
+ readonly paramsType: 'FinOpsApiListChargesRequest';
67
+ readonly returnType: 'ListChargesResponse';
68
+ readonly isList: true;
69
+ readonly paginationType: 'cursor';
70
+ readonly pageParamKey: 'pageToken';
71
+ readonly listItemType: 'Charge';
72
+ readonly nextPageField: 'nextPageToken';
73
+ readonly isPrivate: false;
74
+ readonly description: '"';
60
75
  }];
61
76
  }];
62
77
  };
@@ -65,6 +65,21 @@ const queriesMetadata = {
65
65
  description: "\""
66
66
  }
67
67
  ]
68
+ }, {
69
+ apiClass: "FinOpsAPI",
70
+ methods: [{
71
+ methodName: "listCharges",
72
+ protoName: "ListCharges",
73
+ paramsType: "FinOpsApiListChargesRequest",
74
+ returnType: "ListChargesResponse",
75
+ isList: true,
76
+ paginationType: "cursor",
77
+ pageParamKey: "pageToken",
78
+ listItemType: "Charge",
79
+ nextPageField: "nextPageToken",
80
+ isPrivate: false,
81
+ description: "\""
82
+ }]
68
83
  }]
69
84
  };
70
85
  //#endregion
@@ -5,6 +5,7 @@ export type DownloadInvoiceRequestFileType = 'pdf';
5
5
  export type ExportInvoicesRequestFileType = 'csv';
6
6
  export type ExportInvoicesRequestOrderBy = 'invoice_number_desc' | 'invoice_number_asc' | 'start_date_desc' | 'start_date_asc' | 'issued_date_desc' | 'issued_date_asc' | 'due_date_desc' | 'due_date_asc' | 'total_untaxed_desc' | 'total_untaxed_asc' | 'total_taxed_desc' | 'total_taxed_asc' | 'invoice_type_desc' | 'invoice_type_asc';
7
7
  export type InvoiceType = 'unknown_type' | 'periodic' | 'purchase';
8
+ export type ListChargesRequestOrderBy = 'start_date_asc' | 'start_date_desc';
8
9
  export type ListConsumptionsRequestOrderBy = 'updated_at_desc' | 'updated_at_asc' | 'category_name_desc' | 'category_name_asc';
9
10
  export type ListDiscountsRequestOrderBy = 'creation_date_desc' | 'creation_date_asc' | 'start_date_desc' | 'start_date_asc' | 'stop_date_desc' | 'stop_date_asc';
10
11
  export type ListInvoicesRequestOrderBy = 'invoice_number_desc' | 'invoice_number_asc' | 'start_date_desc' | 'start_date_asc' | 'issued_date_desc' | 'issued_date_asc' | 'due_date_desc' | 'due_date_asc' | 'total_untaxed_desc' | 'total_untaxed_asc' | 'total_taxed_desc' | 'total_taxed_asc' | 'invoice_type_desc' | 'invoice_type_asc';
@@ -29,6 +30,48 @@ export interface DiscountFilter {
29
30
  */
30
31
  exclude: boolean;
31
32
  }
33
+ export interface Charge {
34
+ /**
35
+ * ID of the charged organization.
36
+ */
37
+ organizationId: string;
38
+ /**
39
+ * ID of the charged project.
40
+ */
41
+ projectId: string;
42
+ /**
43
+ * ID of the SKU the charge is priced with.
44
+ */
45
+ sku: string;
46
+ /**
47
+ * ID of the invoice including the charge.
48
+ */
49
+ invoiceId: string;
50
+ /**
51
+ * ID of the resource that incurs the charge.
52
+ */
53
+ resourceId: string;
54
+ /**
55
+ * Optional display name assigned to the resource that incurs the charge.
56
+ */
57
+ resourceName?: string;
58
+ /**
59
+ * Price of the charge.
60
+ */
61
+ price?: Money;
62
+ /**
63
+ * Start date of the charge.
64
+ */
65
+ startDate?: Date;
66
+ /**
67
+ * End date of the charge, included.
68
+ */
69
+ endDate?: Date;
70
+ /**
71
+ * Date the charge was last updated.
72
+ */
73
+ updatedAt?: Date;
74
+ }
32
75
  export interface ListConsumptionsResponseConsumption {
33
76
  /**
34
77
  * Monetary value of the consumption.
@@ -240,12 +283,72 @@ export type ExportInvoicesRequest = {
240
283
  */
241
284
  fileType?: ExportInvoicesRequestFileType;
242
285
  };
286
+ export type FinOpsApiListChargesRequest = {
287
+ /**
288
+ * Sort order of charges in the response.
289
+ */
290
+ orderBy?: ListChargesRequestOrderBy;
291
+ /**
292
+ * Token returned by previous call to list next paginated charges, omitted for first page.
293
+ */
294
+ pageToken?: string;
295
+ /**
296
+ * Number of charges to return per page.
297
+ */
298
+ pageSize?: number;
299
+ /**
300
+ * Minimum start date of charges to filter for, defaults to the start of the billing period.
301
+ */
302
+ startDateAfter?: Date;
303
+ /**
304
+ * Maximum end date of charges to filter for, defaults to the end of the billing period.
305
+ */
306
+ endDateBefore?: Date;
307
+ /**
308
+ * Invoice IDs to filter for, only charges from these invoices will be returned.
309
+ */
310
+ invoiceIds?: string[];
311
+ /**
312
+ * Organization ID to filter for, only charges for this organization will be returned.
313
+ */
314
+ organizationId?: string;
315
+ /**
316
+ * Project IDs to filter for, only charges for these projects will be returned.
317
+ */
318
+ projectIds?: string[];
319
+ /**
320
+ * Resource IDs to filter for, only charges for these resources will be returned.
321
+ */
322
+ resourceIds?: string[];
323
+ /**
324
+ * Resource display names to filter for, only charges for these resources will be returned.
325
+ */
326
+ resourceNames?: string[];
327
+ /**
328
+ * SKU IDs to filter for, only charges for these SKUs will be returned.
329
+ */
330
+ skus?: string[];
331
+ /**
332
+ * Clamp charges to the requested time range.
333
+ */
334
+ clampToTimeRange?: boolean;
335
+ };
243
336
  export type GetInvoiceRequest = {
244
337
  /**
245
338
  * Invoice ID.
246
339
  */
247
340
  invoiceId: string;
248
341
  };
342
+ export interface ListChargesResponse {
343
+ /**
344
+ * Paginated matching charges.
345
+ */
346
+ charges: Charge[];
347
+ /**
348
+ * Page token to use with following call to keep listing charges if there are more.
349
+ */
350
+ nextPageToken?: string;
351
+ }
249
352
  export type ListConsumptionsRequest = {
250
353
  /**
251
354
  * Order consumptions list in the response by their update date.
@@ -0,0 +1,6 @@
1
+ export declare const FinOpsApiListChargesRequest: {
2
+ pageSize: {
3
+ greaterThanOrEqual: number;
4
+ lessThanOrEqual: number;
5
+ };
6
+ };
@@ -0,0 +1,9 @@
1
+ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
+ //#region src/v2beta1/validation-rules.gen.ts
3
+ var validation_rules_gen_exports = /* @__PURE__ */ __exportAll({ FinOpsApiListChargesRequest: () => FinOpsApiListChargesRequest });
4
+ const FinOpsApiListChargesRequest = { pageSize: {
5
+ greaterThanOrEqual: 1,
6
+ lessThanOrEqual: 1e3
7
+ } };
8
+ //#endregion
9
+ export { FinOpsApiListChargesRequest, validation_rules_gen_exports };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scaleway/sdk-billing",
3
- "version": "2.5.1",
3
+ "version": "2.6.0",
4
4
  "description": "Scaleway SDK billing",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -32,17 +32,17 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@scaleway/random-name": "5.1.4",
35
- "@scaleway/sdk-std": "2.4.1"
35
+ "@scaleway/sdk-std": "2.4.2"
36
36
  },
37
37
  "devDependencies": {
38
- "@repo/configs": "^0.1.1",
39
- "@scaleway/sdk-client": "^2.3.1"
38
+ "@scaleway/sdk-client": "^2.4.0",
39
+ "@repo/configs": "^0.1.1"
40
40
  },
41
41
  "peerDependencies": {
42
- "@scaleway/sdk-client": "^2.3.1"
42
+ "@scaleway/sdk-client": "^2.4.0"
43
43
  },
44
44
  "engines": {
45
- "node": ">=20.19.6"
45
+ "node": ">=20.20.2"
46
46
  },
47
47
  "scripts": {
48
48
  "package:check": "pnpm publint",