@delopay/sdk 0.204.0 → 0.208.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 CHANGED
@@ -167,6 +167,22 @@ const payment = await delopay.payments.create({
167
167
  const sold = await delopay.payments.productLines(payment.payment_id);
168
168
  ```
169
169
 
170
+ ### Issue invoices
171
+
172
+ ```typescript
173
+ // Invoices and credit notes in your name, from a paid payment or subscription
174
+ // cycle. Amounts always come from the source.
175
+ const invoice = await delopay.invoices.create(
176
+ { source: { payment_id: 'pay_abc123' }, finalize: true },
177
+ { headers: { 'Idempotency-Key': 'invoice-order-1001' } },
178
+ );
179
+ const pdf = await delopay.invoices.downloadPdf(invoice.id);
180
+
181
+ // How they look and are taxed: the merchant default, or one shop's override.
182
+ const current = await delopay.invoiceSettings.retrieveForShop('pro_abc123');
183
+ await delopay.invoiceSettings.updateForShop('pro_abc123', { ...current, locale: 'de' });
184
+ ```
185
+
170
186
  ### Handle disputes
171
187
 
172
188
  ```typescript
@@ -91,6 +91,29 @@ var ApiKeys = class {
91
91
  `/api-keys/${encodeURIComponent(merchantId)}/${encodeURIComponent(keyId)}`
92
92
  );
93
93
  }
94
+ /**
95
+ * Replace an API key's secret. The key keeps its id, name, scope, shop,
96
+ * origin rule, rate cap and expiry. The old secret stops working
97
+ * immediately, with no grace period, so deploy the new one as part of the
98
+ * same change. Refused with `IR_16` (HTTP 400) while the deployment runs
99
+ * partial authentication; create a new key and revoke the old one instead.
100
+ * `POST /api-keys/{merchantId}/{keyId}/rotate`
101
+ *
102
+ * @param merchantId - The merchant account ID.
103
+ * @param keyId - The API key ID to rotate.
104
+ * @returns The key with its new plaintext secret (shown once only).
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * const { api_key } = await delopay.apiKeys.rotate('merch_123', 'key_abc');
109
+ * ```
110
+ */
111
+ async rotate(merchantId, keyId) {
112
+ return this.request(
113
+ "POST",
114
+ `/api-keys/${encodeURIComponent(merchantId)}/${encodeURIComponent(keyId)}/rotate`
115
+ );
116
+ }
94
117
  /**
95
118
  * List all API keys for a merchant.
96
119
  *
@@ -185,6 +208,22 @@ var ApiKeys = class {
185
208
  `/account/${encodeURIComponent(merchantId)}/profile/api-keys/${encodeURIComponent(keyId)}`
186
209
  );
187
210
  }
211
+ /**
212
+ * Replace the secret of an API key pinned to the caller's shop. The key
213
+ * keeps its id, name, scope, origin rule, rate cap and expiry. The old
214
+ * secret stops working immediately, with no grace period.
215
+ * `POST /account/{merchantId}/profile/api-keys/{keyId}/rotate`
216
+ *
217
+ * @param merchantId - The merchant account ID.
218
+ * @param keyId - The API key ID to rotate.
219
+ * @returns The key with its new plaintext secret (shown once only).
220
+ */
221
+ async rotateByProfile(merchantId, keyId) {
222
+ return this.request(
223
+ "POST",
224
+ `/account/${encodeURIComponent(merchantId)}/profile/api-keys/${encodeURIComponent(keyId)}/rotate`
225
+ );
226
+ }
188
227
  };
189
228
 
190
229
  // src/resources/authentication.ts
@@ -4438,7 +4477,9 @@ var Analytics = class {
4438
4477
  * merchant, and to your single shop for profile-scoped users — so pass only
4439
4478
  * `project_id` / `shop_id` to drill and the window / `sections` fields.
4440
4479
  * Returns one drill level: the scope's daily series + previous window,
4441
- * processor mix and direct children. `GET /analytics/scope`
4480
+ * processor mix and direct children. Accepts a dashboard session or an API
4481
+ * key, including a `statistics_read` key; a shop-bound key reads only its
4482
+ * shop. `GET /analytics/scope`
4442
4483
  */
4443
4484
  async scope(params) {
4444
4485
  return this.request("GET", "/analytics/scope", {
@@ -4451,8 +4492,8 @@ var Analytics = class {
4451
4492
  * channel mix, time-to-pay), pinned server-side to your own merchant and
4452
4493
  * drillable via `project_id` / `shop_id` exactly like `scope`. Gated on the
4453
4494
  * client-context optimisation-use switch: when it is off the server answers
4454
- * 200 with `enabled: false` and a caveat naming the switch.
4455
- * `GET /analytics/devices`
4495
+ * 200 with `enabled: false` and a caveat naming the switch. Accepts an API
4496
+ * key like `scope`. `GET /analytics/devices`
4456
4497
  */
4457
4498
  async devices(params) {
4458
4499
  return this.request("GET", "/analytics/devices", {
@@ -4464,7 +4505,7 @@ var Analytics = class {
4464
4505
  * country totals, city bubbles (IP mode), buyer languages, buyer-local
4465
4506
  * purchase hours and the IP-vs-billing mismatch share. `mode` selects the
4466
4507
  * location claim (`ip` default, `billing`); the two are never coalesced.
4467
- * Same drill, window and gating contract as `devices`.
4508
+ * Same drill, window, gating and API-key contract as `devices`.
4468
4509
  * `GET /analytics/geo`
4469
4510
  */
4470
4511
  async geo(params) {
@@ -4531,7 +4572,8 @@ var Analytics = class {
4531
4572
  * Half the figures are **stocks** — a snapshot at the window's end rather
4532
4573
  * than a sum over it — so `est_monthly_volume_usd` and `active` can match
4533
4574
  * across a 7-day and a 30-day window while `billed_volume_usd` does not.
4534
- * Day granularity only. `GET /analytics/subscriptions`
4575
+ * Day granularity only. Accepts an API key like `scope`.
4576
+ * `GET /analytics/subscriptions`
4535
4577
  */
4536
4578
  async subscriptions(params) {
4537
4579
  return this.request("GET", "/analytics/subscriptions", {
@@ -5569,6 +5611,343 @@ var Products = class {
5569
5611
  }
5570
5612
  };
5571
5613
 
5614
+ // src/resources/invoices.ts
5615
+ var Invoices = class {
5616
+ constructor(request) {
5617
+ this.request = request;
5618
+ }
5619
+ /**
5620
+ * Create a draft from a paid payment or subscription cycle, and with
5621
+ * `finalize: true` issue it in the same call.
5622
+ * `POST /invoices`
5623
+ *
5624
+ * Send an `Idempotency-Key` header in `options.headers` to make this safe to
5625
+ * retry: the same key and body return the document it created, in its
5626
+ * current state, even after a lost response, and a different body under the
5627
+ * same key answers 409. A retry of a `finalize: true` request whose draft
5628
+ * was committed but not finalised finalises that draft.
5629
+ */
5630
+ async create(params, options) {
5631
+ return this.request("POST", "/invoices", { body: params, ...options });
5632
+ }
5633
+ /**
5634
+ * One page of documents, newest first. List rows carry no `lines` unless
5635
+ * `include_lines` is set, and never a `refund` summary.
5636
+ * `GET /invoices`
5637
+ */
5638
+ async list(params, options) {
5639
+ return this.request("GET", "/invoices", {
5640
+ query: params === void 0 ? void 0 : { ...params },
5641
+ ...options
5642
+ });
5643
+ }
5644
+ /**
5645
+ * One page of a payment's invoice and its credit notes, lines included. The
5646
+ * page also says whether a merchant of record sold the payment
5647
+ * (`merchant_of_record`, which `create` then refuses) and what was refunded
5648
+ * (`refunded_amount`, and `refund` on each invoice). Needs the payment read
5649
+ * grant as well.
5650
+ * `GET /payments/{payment_id}/invoices`
5651
+ */
5652
+ async listForPayment(paymentId, params, options) {
5653
+ return this.request("GET", `/payments/${encodeURIComponent(paymentId)}/invoices`, {
5654
+ query: params === void 0 ? void 0 : { ...params },
5655
+ ...options
5656
+ });
5657
+ }
5658
+ /**
5659
+ * The documents with a line of one product; a bundle's components count,
5660
+ * flagged `included`. Takes the list filters; the product is the path's.
5661
+ * `GET /products/{product_id}/invoices`
5662
+ */
5663
+ async listForProduct(productId, params, options) {
5664
+ return this.request("GET", `/products/${encodeURIComponent(productId)}/invoices`, {
5665
+ query: params === void 0 ? void 0 : { ...params },
5666
+ ...options
5667
+ });
5668
+ }
5669
+ /**
5670
+ * The documents of one period as CSV (`text/csv; charset=utf-8`), with the
5671
+ * list's filters. Amounts are decimal in each document's currency; drafts
5672
+ * have an empty number.
5673
+ * `GET /invoices/export`
5674
+ */
5675
+ async export(params, options) {
5676
+ return this.request("GET", "/invoices/export", {
5677
+ query: { ...params },
5678
+ responseType: "blob",
5679
+ ...options
5680
+ });
5681
+ }
5682
+ /**
5683
+ * One document, lines included.
5684
+ * `GET /invoices/{invoice_id}`
5685
+ */
5686
+ async retrieve(invoiceId, options) {
5687
+ return this.request("GET", `/invoices/${encodeURIComponent(invoiceId)}`, { ...options });
5688
+ }
5689
+ /**
5690
+ * Edit a draft: its words, buyer, dates and tax treatment, never what was
5691
+ * paid. Absent fields stay; `null` clears a clearable one. A document that
5692
+ * is not a draft is refused (`not_a_draft`).
5693
+ * `PATCH /invoices/{invoice_id}`
5694
+ */
5695
+ async update(invoiceId, params, options) {
5696
+ return this.request("PATCH", `/invoices/${encodeURIComponent(invoiceId)}`, {
5697
+ body: params,
5698
+ ...options
5699
+ });
5700
+ }
5701
+ /**
5702
+ * Delete a draft. A draft has no number, so nothing leaves a gap; an issued
5703
+ * document is refused (`not_a_draft`) — void or credit it instead.
5704
+ * `DELETE /invoices/{invoice_id}`
5705
+ */
5706
+ async delete(invoiceId, options) {
5707
+ return this.request("DELETE", `/invoices/${encodeURIComponent(invoiceId)}`, { ...options });
5708
+ }
5709
+ /**
5710
+ * Issue a draft: allocate its number, freeze it and store its PDF. It is
5711
+ * immutable afterwards. A document that would be legally incomplete is
5712
+ * refused with `IR_06` and a reason (`seller_tax_id_missing`,
5713
+ * `line_tax_unexplained`, …) that says what to fix and where.
5714
+ * `POST /invoices/{invoice_id}/finalize`
5715
+ */
5716
+ async finalize(invoiceId, options) {
5717
+ return this.request("POST", `/invoices/${encodeURIComponent(invoiceId)}/finalize`, {
5718
+ ...options
5719
+ });
5720
+ }
5721
+ /**
5722
+ * Withdraw an issued document with a reason; its number stays used. For a
5723
+ * document that never reached the buyer — one they hold is corrected with
5724
+ * `createCreditNote`. An invoice with live credit notes is refused
5725
+ * (`has_credit_notes`).
5726
+ * `POST /invoices/{invoice_id}/void`
5727
+ */
5728
+ async void(invoiceId, params, options) {
5729
+ return this.request("POST", `/invoices/${encodeURIComponent(invoiceId)}/void`, {
5730
+ body: params,
5731
+ ...options
5732
+ });
5733
+ }
5734
+ /**
5735
+ * Correct an issued invoice with a credit note: all of what it has left, or
5736
+ * the named lines. Returns the **credit note**, not the invoice.
5737
+ * `POST /invoices/{invoice_id}/credit-note`
5738
+ */
5739
+ async createCreditNote(invoiceId, params, options) {
5740
+ return this.request("POST", `/invoices/${encodeURIComponent(invoiceId)}/credit-note`, {
5741
+ body: params,
5742
+ ...options
5743
+ });
5744
+ }
5745
+ /**
5746
+ * The document as a PDF. An issued document is its stored copy; a draft
5747
+ * renders live under a DRAFT banner, and a voided one under a VOIDED banner.
5748
+ * `GET /invoices/{invoice_id}/pdf`
5749
+ */
5750
+ async downloadPdf(invoiceId, options) {
5751
+ return this.request("GET", `/invoices/${encodeURIComponent(invoiceId)}/pdf`, {
5752
+ responseType: "blob",
5753
+ ...options
5754
+ });
5755
+ }
5756
+ /**
5757
+ * A public link to an issued document's stored PDF, valid for 7 days.
5758
+ * **Anyone holding the link can open the document**, without logging in. A
5759
+ * document that is not issued is refused (`not_issued`).
5760
+ * `POST /invoices/{invoice_id}/share-link`
5761
+ */
5762
+ async createShareLink(invoiceId, options) {
5763
+ return this.request("POST", `/invoices/${encodeURIComponent(invoiceId)}/share-link`, {
5764
+ ...options
5765
+ });
5766
+ }
5767
+ };
5768
+
5769
+ // src/resources/invoiceSettings.ts
5770
+ var InvoiceSettingsResource = class {
5771
+ constructor(request) {
5772
+ this.request = request;
5773
+ }
5774
+ // --- Settings -------------------------------------------------------------
5775
+ /**
5776
+ * The merchant default.
5777
+ * `GET /invoice-settings`
5778
+ */
5779
+ async retrieve(options) {
5780
+ return this.request("GET", "/invoice-settings", { ...options });
5781
+ }
5782
+ /**
5783
+ * Replace the merchant default (every field but the logo).
5784
+ * `PUT /invoice-settings`
5785
+ */
5786
+ async update(settings, options) {
5787
+ return this.request("PUT", "/invoice-settings", { body: settings, ...options });
5788
+ }
5789
+ /**
5790
+ * One shop's override. A `null` field inherits the merchant default.
5791
+ * `GET /invoice-settings/profiles/{profile_id}`
5792
+ */
5793
+ async retrieveForShop(profileId, options) {
5794
+ return this.request("GET", `/invoice-settings/profiles/${encodeURIComponent(profileId)}`, {
5795
+ ...options
5796
+ });
5797
+ }
5798
+ /**
5799
+ * Replace one shop's override (every field but the logo).
5800
+ * `PUT /invoice-settings/profiles/{profile_id}`
5801
+ */
5802
+ async updateForShop(profileId, settings, options) {
5803
+ return this.request("PUT", `/invoice-settings/profiles/${encodeURIComponent(profileId)}`, {
5804
+ body: settings,
5805
+ ...options
5806
+ });
5807
+ }
5808
+ /**
5809
+ * The settings a shop's next document is finalised with, and where each
5810
+ * value came from (`shop`, `merchant` or `default`).
5811
+ * `GET /invoice-settings/profiles/{profile_id}/effective`
5812
+ */
5813
+ async retrieveEffective(profileId, options) {
5814
+ return this.request(
5815
+ "GET",
5816
+ `/invoice-settings/profiles/${encodeURIComponent(profileId)}/effective`,
5817
+ { ...options }
5818
+ );
5819
+ }
5820
+ /**
5821
+ * A sample invoice PDF rendered from the effective settings with unsaved
5822
+ * values laid over them, so a form can show what saving would produce.
5823
+ * Writes nothing.
5824
+ * `POST /invoice-settings/preview`
5825
+ */
5826
+ async preview(params, options) {
5827
+ return this.request("POST", "/invoice-settings/preview", {
5828
+ body: params,
5829
+ responseType: "blob",
5830
+ ...options
5831
+ });
5832
+ }
5833
+ // --- Logo -----------------------------------------------------------------
5834
+ /**
5835
+ * The merchant default's logo image.
5836
+ * `GET /invoice-settings/logo`
5837
+ */
5838
+ async retrieveLogo(options) {
5839
+ return this.request("GET", "/invoice-settings/logo", { responseType: "blob", ...options });
5840
+ }
5841
+ /**
5842
+ * Set the merchant default's logo: PNG or JPEG, at most 1 MB, as base64.
5843
+ * `PUT /invoice-settings/logo`
5844
+ */
5845
+ async updateLogo(params, options) {
5846
+ return this.request("PUT", "/invoice-settings/logo", { body: params, ...options });
5847
+ }
5848
+ /**
5849
+ * Remove the merchant default's logo.
5850
+ * `DELETE /invoice-settings/logo`
5851
+ */
5852
+ async deleteLogo(options) {
5853
+ return this.request("DELETE", "/invoice-settings/logo", { ...options });
5854
+ }
5855
+ /**
5856
+ * One shop's own logo image.
5857
+ * `GET /invoice-settings/profiles/{profile_id}/logo`
5858
+ */
5859
+ async retrieveLogoForShop(profileId, options) {
5860
+ return this.request("GET", `/invoice-settings/profiles/${encodeURIComponent(profileId)}/logo`, {
5861
+ responseType: "blob",
5862
+ ...options
5863
+ });
5864
+ }
5865
+ /**
5866
+ * Set one shop's own logo: PNG or JPEG, at most 1 MB, as base64.
5867
+ * `PUT /invoice-settings/profiles/{profile_id}/logo`
5868
+ */
5869
+ async updateLogoForShop(profileId, params, options) {
5870
+ return this.request("PUT", `/invoice-settings/profiles/${encodeURIComponent(profileId)}/logo`, {
5871
+ body: params,
5872
+ ...options
5873
+ });
5874
+ }
5875
+ /**
5876
+ * Remove one shop's own logo; the shop then inherits the merchant default's.
5877
+ * `DELETE /invoice-settings/profiles/{profile_id}/logo`
5878
+ */
5879
+ async deleteLogoForShop(profileId, options) {
5880
+ return this.request(
5881
+ "DELETE",
5882
+ `/invoice-settings/profiles/${encodeURIComponent(profileId)}/logo`,
5883
+ { ...options }
5884
+ );
5885
+ }
5886
+ // --- Tax rules ------------------------------------------------------------
5887
+ /**
5888
+ * The merchant's tax rules, which every shop without a list of its own uses.
5889
+ * `GET /invoice-settings/tax-rules`
5890
+ */
5891
+ async retrieveTaxRules(options) {
5892
+ return this.request("GET", "/invoice-settings/tax-rules", { ...options });
5893
+ }
5894
+ /**
5895
+ * Replace the merchant's whole rule list; the order is the priority.
5896
+ * `PUT /invoice-settings/tax-rules`
5897
+ */
5898
+ async updateTaxRules(params, options) {
5899
+ return this.request("PUT", "/invoice-settings/tax-rules", { body: params, ...options });
5900
+ }
5901
+ /**
5902
+ * The rules one shop uses: its own list, or the merchant's it inherits, as
5903
+ * `own_rules` says.
5904
+ * `GET /invoice-settings/profiles/{profile_id}/tax-rules`
5905
+ */
5906
+ async retrieveTaxRulesForShop(profileId, options) {
5907
+ return this.request(
5908
+ "GET",
5909
+ `/invoice-settings/profiles/${encodeURIComponent(profileId)}/tax-rules`,
5910
+ { ...options }
5911
+ );
5912
+ }
5913
+ /**
5914
+ * Give one shop a list of its own, replacing the merchant's for that shop —
5915
+ * even when empty, which leaves every line of the shop to the settings'
5916
+ * default rate.
5917
+ * `PUT /invoice-settings/profiles/{profile_id}/tax-rules`
5918
+ */
5919
+ async updateTaxRulesForShop(profileId, params, options) {
5920
+ return this.request(
5921
+ "PUT",
5922
+ `/invoice-settings/profiles/${encodeURIComponent(profileId)}/tax-rules`,
5923
+ { body: params, ...options }
5924
+ );
5925
+ }
5926
+ /**
5927
+ * Drop one shop's own list, so it inherits the merchant's again. Returns
5928
+ * the list the shop now uses.
5929
+ * `DELETE /invoice-settings/profiles/{profile_id}/tax-rules`
5930
+ */
5931
+ async deleteTaxRulesForShop(profileId, options) {
5932
+ return this.request(
5933
+ "DELETE",
5934
+ `/invoice-settings/profiles/${encodeURIComponent(profileId)}/tax-rules`,
5935
+ { ...options }
5936
+ );
5937
+ }
5938
+ /**
5939
+ * Which saved rule a buyer and a product tax category would meet, and what
5940
+ * the line would be taxed at. Writes nothing.
5941
+ * `POST /invoice-settings/tax-rules/evaluate`
5942
+ */
5943
+ async evaluateTaxRules(params, options) {
5944
+ return this.request("POST", "/invoice-settings/tax-rules/evaluate", {
5945
+ body: params,
5946
+ ...options
5947
+ });
5948
+ }
5949
+ };
5950
+
5572
5951
  // src/resources/processorCosts.ts
5573
5952
  var ProcessorCosts = class {
5574
5953
  constructor(request) {
@@ -6841,6 +7220,54 @@ var ReplayRetention = class {
6841
7220
  }
6842
7221
  };
6843
7222
 
7223
+ // src/resources/settings.ts
7224
+ function projectQuery(query) {
7225
+ return query.project_id ? { project_id: query.project_id } : {};
7226
+ }
7227
+ var Settings = class {
7228
+ constructor(request) {
7229
+ this.request = request;
7230
+ }
7231
+ /**
7232
+ * The merchant's settings, or one project's.
7233
+ *
7234
+ * `GET /settings/merchant`
7235
+ */
7236
+ async retrieveMerchant(query = {}) {
7237
+ return this.request("GET", "/settings/merchant", { query: projectQuery(query) });
7238
+ }
7239
+ /**
7240
+ * Change the merchant's own settings, or one project's. All changes are
7241
+ * applied or none is.
7242
+ *
7243
+ * `PATCH /settings/merchant`
7244
+ */
7245
+ async updateMerchant(params, query = {}) {
7246
+ return this.request("PATCH", "/settings/merchant", {
7247
+ body: params,
7248
+ query: projectQuery(query)
7249
+ });
7250
+ }
7251
+ /**
7252
+ * One shop's settings.
7253
+ *
7254
+ * `GET /settings/shops/{profileId}`
7255
+ */
7256
+ async retrieveShop(profileId) {
7257
+ return this.request("GET", `/settings/shops/${encodeURIComponent(profileId)}`);
7258
+ }
7259
+ /**
7260
+ * Change one shop's own settings.
7261
+ *
7262
+ * `PATCH /settings/shops/{profileId}`
7263
+ */
7264
+ async updateShop(profileId, params) {
7265
+ return this.request("PATCH", `/settings/shops/${encodeURIComponent(profileId)}`, {
7266
+ body: params
7267
+ });
7268
+ }
7269
+ };
7270
+
6844
7271
  // src/resources/risk.ts
6845
7272
  var Risk = class {
6846
7273
  constructor(request) {
@@ -7103,6 +7530,7 @@ var Delopay = class {
7103
7530
  this.settlement = new Settlement(request);
7104
7531
  this.operationLimits = new OperationLimits(request);
7105
7532
  this.replayRetention = new ReplayRetention(request);
7533
+ this.settings = new Settings(request);
7106
7534
  this.risk = new Risk(request);
7107
7535
  this.subscriptions = new Subscriptions(request);
7108
7536
  this.buyerPortal = new BuyerPortal(request);
@@ -7115,6 +7543,8 @@ var Delopay = class {
7115
7543
  this.costRules = new CostRules(request);
7116
7544
  this.externalRecords = new ExternalRecords(request);
7117
7545
  this.products = new Products(request);
7546
+ this.invoices = new Invoices(request);
7547
+ this.invoiceSettings = new InvoiceSettingsResource(request);
7118
7548
  this.processorCosts = new ProcessorCosts(request);
7119
7549
  this.checkoutBrowserInfo = new CheckoutBrowserInfo(request);
7120
7550
  this.checkoutMethods = new CheckoutMethods(request);
@@ -11115,6 +11545,8 @@ export {
11115
11545
  CostRules,
11116
11546
  ExternalRecords,
11117
11547
  Products,
11548
+ Invoices,
11549
+ InvoiceSettingsResource,
11118
11550
  ProcessorCosts,
11119
11551
  CheckoutMethods,
11120
11552
  Subscriptions,
@@ -11122,6 +11554,7 @@ export {
11122
11554
  Settlement,
11123
11555
  OperationLimits,
11124
11556
  ReplayRetention,
11557
+ Settings,
11125
11558
  Risk,
11126
11559
  Delopay,
11127
11560
  leaf,
@@ -11313,4 +11746,4 @@ export {
11313
11746
  decodeNativePanes,
11314
11747
  encodeNativePanes
11315
11748
  };
11316
- //# sourceMappingURL=chunk-KXLZ4RS7.js.map
11749
+ //# sourceMappingURL=chunk-B4ABMM47.js.map