diff --git a/.vscode/launch.json b/.vscode/launch.json index b4c174c..eb4c617 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -4,7 +4,7 @@ "args": [ "run", "${relativeFileDirname}/${fileBasenameNoExtension}", - "--no-threads" + "--pool=forks" ], "autoAttachChildProcesses": true, "console": "integratedTerminal", @@ -19,7 +19,7 @@ "args": [ "run", "${relativeFileDirname}/${fileBasenameNoExtension}", - "--no-threads" + "--pool=forks" ], "autoAttachChildProcesses": true, "console": "integratedTerminal", @@ -37,7 +37,7 @@ "args": [ "run", "${relativeFileDirname}/${fileBasenameNoExtension}", - "--no-threads" + "--pool=forks" ], "autoAttachChildProcesses": true, "console": "integratedTerminal", diff --git a/.vscode/settings.json b/.vscode/settings.json index 8d69b47..d6bb91e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,26 +1,10 @@ { // ESLint - "[javascript]": { + "[javascript][json][json5][jsonc][typescript][html]": { "editor.defaultFormatter": "dbaeumer.vscode-eslint" }, - "[json]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[json5]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[jsonc]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[typescript]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "[html]": { - "editor.defaultFormatter": "dbaeumer.vscode-eslint" - }, - "eslint.validate": ["javascript", "typescript", "json", "jsonc", "json5", "yaml", "html"], - "eslint.experimental.useFlatConfig": true, + "eslint.validate": ["javascript", "typescript", "json", "jsonc", "json5", "yaml", "html", "github-actions-workflow"], "eslint.debug": true, "editor.formatOnSave": false, diff --git a/docs/README.md b/docs/README.md index 14bb4de..77d5541 100644 --- a/docs/README.md +++ b/docs/README.md @@ -33,4 +33,5 @@ SwissQRBill exposes different classes and functions that can be used to create a - [SwissQRBill](./svg/index.md#class-swissqrbill) - [SwissQRCode](./svg/index.md#class-swissqrcode) - [utils](./utils/utils.md) +- [errors](./errors/errors.md) - [bundle](./bundle/index.md) diff --git a/docs/bundle/index.md b/docs/bundle/index.md index 5c18cf2..89f286b 100644 --- a/docs/bundle/index.md +++ b/docs/bundle/index.md @@ -25,12 +25,6 @@ - Method - [attachTo(doc\[, x\]\[, y\])](#method-pdfswissqrcodeattachtodoc-x-y) - - [PDFTable](#interface-pdfpdftable) - - [PDFRow](#interface-pdfpdfrow) - - [PDFColumn](#interface-pdfpdfcolumn) - - [PDFBorderColor](#type-alias-pdfpdfbordercolor) - - [PDFBorderWidth](#type-alias-pdfpdfborderwidth) - - [PDFPadding](#type-alias-pdfpdfpadding) - [Table](#class-pdftable) - Constructor @@ -38,6 +32,13 @@ - Method - [attachTo(doc\[, x\]\[, y\])](#method-pdftableattachtodoc-x-y) + - [PDFBorderColor](#type-alias-pdfpdfbordercolor) + - [PDFBorderWidth](#type-alias-pdfpdfborderwidth) + - [PDFPadding](#type-alias-pdfpdfpadding) + - [PDFTable](#interface-pdfpdftable) + - [PDFRow](#interface-pdfpdfrow) + - [PDFColumn](#interface-pdfpdfcolumn) + - [svg](#namespace-svg) - Classes @@ -66,16 +67,16 @@ - [types](#namespace-types) - - Interfaces + - Type aliases + - [Language](#type-alias-typeslanguage) + - [FontName](#type-alias-typesfontname) + - [Currency](#type-alias-typescurrency) - [Data](#interface-typesdata) - [Debtor](#interface-typesdebtor) - [Creditor](#interface-typescreditor) - [PDFOptions](#interface-typespdfoptions) - [SVGOptions](#interface-typessvgoptions) - - [Language](#type-alias-typeslanguage) - - [FontName](#type-alias-typesfontname) - - [Currency](#type-alias-typescurrency) - [utils](#namespace-utils) @@ -102,13 +103,12 @@ - [errors](#namespace-errors) - - Functions + - Classes - - [resolveMessageParams(message, params)](#function-errorsresolvemessageparamsmessage-params) - [ValidationError](#class-errorsvalidationerror) - - Constructor - - [new ValidationError(message\[, params\])](#constructor-new-errorsvalidationerrormessage-params) + - Property + - [code](#property-errorsvalidationerrorcode) - [ValidationErrors](#enum-errorsvalidationerrors) @@ -320,75 +320,104 @@ Attaches the Swiss QR Code to a PDF document.
-#### Interface: pdf.PDFTable +#### Class: pdf.Table -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L1C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L157C0) -- **pdf.rows** [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Table rows. +##### Description - - [`PDFRow`](#interface-pdfpdfrow) +The Table class is used to create tables for PDFKit documents. A table can be attached to any PDFKit document instance +using the [`attachTo`](#method-pdftableattachtodoc-x-y) method. -- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of texts inside the table. `optional` -- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the table. `optional` -- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` -- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` -- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the table. `optional` -- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the table. `optional` -- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cells. `optional` -- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside table. `optional` -- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` -- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of texts inside the table. `optional` -- **pdf.width** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Width of whole table. `optional` +##### Example + +```ts +const tableData = { + rows: [ + { + backgroundColor: "#ECF0F1", + columns: [ + { + text: "Row 1 cell 1" + }, { + text: "Row 1 cell 2" + }, { + text: "Row 1 cell 3" + } + ] + }, { + columns: [ + { + text: "Row 2 cell 1" + }, { + text: "Row 2 cell 2" + }, { + text: "Row 2 cell 3" + } + ] + } + ] +}; +const pdf = new PDFDocument(); +const table = new Table(tableData); + +const stream = createWriteStream("table.pdf"); + +table.attachTo(pdf); +pdf.pipe(stream); +pdf.end(); +```
-#### Interface: pdf.PDFRow +##### Constructor: new pdf.Table(data) -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L30C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L165C2) -- **pdf.columns** [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Table columns. +###### Parameter - - [`PDFColumn`](#interface-pdfpdfcolumn) +- **data** [`PDFTable`](#interface-pdfpdftable) The rows and columns for the table. -- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of texts inside the row. `optional` -- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the row. `optional` -- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` -- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` -- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the row. `optional` -- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the row. `optional` -- **pdf.header** [`boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) A header row gets inserted automatically on new pages. Only one header row is allowed. `optional` -- **pdf.height** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Height of the row. Overrides minHeight and maxHeight. `optional` -- **pdf.maxHeight** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Maximum height of the row. `optional` -- **pdf.minHeight** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Minimum height of the row. `optional` -- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cells inside the row. `optional` -- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside the row. `optional` -- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` -- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of texts inside the row. `optional` +###### Return Type + +[`Table`](#class-pdftable) The Table instance. + +###### Description + +Creates a new Table instance.
-#### Interface: pdf.PDFColumn +##### Method: pdf.Table.attachTo(doc\[, x\]\[, y\]) -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L63C0) +`public` -- **pdf.text** [`boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) | [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Cell text. -- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of the text inside the cell. `optional` -- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the cell. `optional` -- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` -- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` -- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the cell. `optional` -- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the cell. `optional` -- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cell. `optional` -- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside the cell. `optional` -- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` -- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of the text inside the cell. `optional` -- **pdf.width** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Width of the cell. `optional` +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L190C2) + +###### Parameters + +- **doc** `PDFDocument` The PDFKit document instance. +- **x** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) The horizontal position in points where the table be placed. `optional` Default: [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) +- **y** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) The vertical position in points where the table will be placed. `optional` Default: [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) + +###### Return Type + +`void` + +###### Throws + +- `Error` Throws an error if no table rows are provided. + +###### Description + +Attaches the table to a PDFKit document instance beginning on the current page. It will create a new page with for +every row that no longer fits on a page.
#### Type alias: pdf.PDFBorderColor -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L91C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L90C0) ##### Type @@ -415,7 +444,7 @@ Can be used to set the color of the border of a table, row or column. #### Type alias: pdf.PDFBorderWidth -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L97C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L96C0) ##### Type @@ -442,7 +471,7 @@ Can be used to set the width of the border of a table, row or column. #### Type alias: pdf.PDFPadding -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L103C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L102C0) ##### Type @@ -467,98 +496,69 @@ Can be used to set the padding of a table cell.
-#### Class: pdf.Table - -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L158C0) +#### Interface: pdf.PDFTable -##### Description +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L1C0) -The Table class is used to create tables for PDFKit documents. A table can be attached to any PDFKit document instance -using the [`attachTo`](#method-pdftableattachtodoc-x-y) method. +- **pdf.rows** [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Table rows. -##### Example + - [`PDFRow`](#interface-pdfpdfrow) -```ts -const tableData = { - rows: [ - { - backgroundColor: "#ECF0F1", - columns: [ - { - text: "Row 1 cell 1" - }, { - text: "Row 1 cell 2" - }, { - text: "Row 1 cell 3" - } - ] - }, { - columns: [ - { - text: "Row 2 cell 1" - }, { - text: "Row 2 cell 2" - }, { - text: "Row 2 cell 3" - } - ] - } - ] -}; -const pdf = new PDFDocument(); -const table = new Table(tableData); - -const stream = createWriteStream("table.pdf"); - -table.attachTo(pdf); -pdf.pipe(stream); -pdf.end(); -``` +- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of texts inside the table. `optional` +- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the table. `optional` +- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` +- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` +- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the table. `optional` +- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the table. `optional` +- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cells. `optional` +- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside table. `optional` +- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` +- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of texts inside the table. `optional` +- **pdf.width** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Width of whole table. `optional`
-##### Constructor: new pdf.Table(data) - -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L166C2) - -###### Parameter - -- **data** [`PDFTable`](#interface-pdfpdftable) The rows and columns for the table. +#### Interface: pdf.PDFRow -###### Return Type +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L29C0) -[`Table`](#class-pdftable) The Table instance. +- **pdf.columns** [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Table columns. -###### Description + - [`PDFColumn`](#interface-pdfpdfcolumn) -Creates a new Table instance. +- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of texts inside the row. `optional` +- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the row. `optional` +- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` +- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` +- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the row. `optional` +- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the row. `optional` +- **pdf.header** [`boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) A header row gets inserted automatically on new pages. Only one header row is allowed. `optional` +- **pdf.height** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Height of the row. Overrides minHeight and maxHeight. `optional` +- **pdf.maxHeight** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Maximum height of the row. `optional` +- **pdf.minHeight** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Minimum height of the row. `optional` +- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cells inside the row. `optional` +- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside the row. `optional` +- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` +- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of texts inside the row. `optional`
-##### Method: pdf.Table.attachTo(doc\[, x\]\[, y\]) - -`public` - -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L191C2) - -###### Parameters - -- **doc** `PDFDocument` The PDFKit document instance. -- **x** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) The horizontal position in points where the table be placed. `optional` Default: [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) -- **y** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) The vertical position in points where the table will be placed. `optional` Default: [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) - -###### Return Type - -`void` - -###### Throws - -- `Error` Throws an error if no table rows are provided. +#### Interface: pdf.PDFColumn -###### Description +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L62C0) -Attaches the table to a PDFKit document instance beginning on the current page. It will create a new page with for -every row that no longer fits on a page. +- **pdf.text** [`boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) | [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Cell text. +- **pdf.align** `"center"` | `"left"` | `"right"` Horizontal alignment of the text inside the cell. `optional` +- **pdf.backgroundColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Background color of the cell. `optional` +- **pdf.borderColor** [`PDFBorderColor`](#type-alias-pdfpdfbordercolor) The colors of the border. `optional` +- **pdf.borderWidth** [`PDFBorderWidth`](#type-alias-pdfpdfborderwidth) Width of the borders of the row. `optional` +- **pdf.fontName** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Font of the text inside the cell. `optional` +- **pdf.fontSize** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Font size of the text inside the cell. `optional` +- **pdf.padding** [`PDFPadding`](#type-alias-pdfpdfpadding) Cell padding of the table cell. `optional` +- **pdf.textColor** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Text color of texts inside the cell. `optional` +- **pdf.textOptions** `TextOptions` Same as text [PDFKit text options](http://pdfkit.org/docs/text.html#text_styling). `optional` +- **pdf.verticalAlign** `"bottom"` | `"center"` | `"top"` Vertical alignment of the text inside the cell. `optional` +- **pdf.width** [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) Width of the cell. `optional`
@@ -746,6 +746,36 @@ Defined in: [src/bundle/index.ts](../../src/bundle/index.ts#L4C7)
+#### Type alias: types.Language + +Defined in: [src/shared/types.ts](../../src/shared/types.ts#L159C0) + +##### Type + +`"DE"` | `"EN"` | `"FR"` | `"IT"` + +
+ +#### Type alias: types.FontName + +Defined in: [src/shared/types.ts](../../src/shared/types.ts#L160C0) + +##### Type + +`"Arial"` | `"Frutiger"` | `"Helvetica"` | `"Liberation Sans"` + +
+ +#### Type alias: types.Currency + +Defined in: [src/shared/types.ts](../../src/shared/types.ts#L161C0) + +##### Type + +`"CHF"` | `"EUR"` + +
+ #### Interface: types.Data Defined in: [src/shared/types.ts](../../src/shared/types.ts#L1C0) @@ -845,36 +875,6 @@ Defined in: [src/shared/types.ts](../../src/shared/types.ts#L155C0)
-#### Type alias: types.Language - -Defined in: [src/shared/types.ts](../../src/shared/types.ts#L159C0) - -##### Type - -`"DE"` | `"EN"` | `"FR"` | `"IT"` - -
- -#### Type alias: types.FontName - -Defined in: [src/shared/types.ts](../../src/shared/types.ts#L160C0) - -##### Type - -`"Arial"` | `"Frutiger"` | `"Helvetica"` | `"Liberation Sans"` - -
- -#### Type alias: types.Currency - -Defined in: [src/shared/types.ts](../../src/shared/types.ts#L161C0) - -##### Type - -`"CHF"` | `"EUR"` - -
- ### Namespace: utils Defined in: [src/bundle/index.ts](../../src/bundle/index.ts#L5C7) @@ -1219,45 +1219,96 @@ Defined in: [src/bundle/index.ts](../../src/bundle/index.ts#L6C7)
-#### Function: errors.resolveMessageParams(message, params) - -Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L13C0) - -##### Parameters +#### Class: errors.ValidationError -- **message** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -- **params** [`type literal`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L2C0) -##### Return Type +##### Description -[`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) +A [`ValidationError`](#class-errorsvalidationerror) is thrown when the data provided to swissqrbill is invalid.
-#### Class: errors.ValidationError - -Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L1C0) +##### Property: errors.ValidationError.code -
+`public` -##### Constructor: new errors.ValidationError(message\[, params\]) +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L5C2) -Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L2C2) +###### Type -###### Parameters +`union` -- **message** [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) -- **params** [`type literal`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) `optional` +- `"ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_MISSING"` +- `"ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_REGULAR"` +- `"ACCOUNT_IS_REGULAR_IBAN_BUT_REFERENCE_IS_QR"` +- `"ACCOUNT_LENGTH_IS_INVALID"` +- `"ADDITIONAL_INFORMATION_LENGTH_IS_INVALID"` +- `"ADDITIONAL_INFORMATION_TYPE_IS_INVALID"` +- `"ALTERNATIVE_SCHEME_LENGTH_IS_INVALID"` +- `"ALTERNATIVE_SCHEME_TYPE_IS_INVALID"` +- `"AMOUNT_LENGTH_IS_INVALID"` +- `"AMOUNT_TYPE_IS_INVALID"` +- `"CREDITOR_ACCOUNT_COUNTRY_IS_INVALID"` +- `"CREDITOR_ACCOUNT_IS_INVALID"` +- `"CREDITOR_ACCOUNT_IS_UNDEFINED"` +- `"CREDITOR_ADDRESS_IS_UNDEFINED"` +- `"CREDITOR_ADDRESS_LENGTH_IS_INVALID"` +- `"CREDITOR_ADDRESS_TYPE_IS_INVALID"` +- `"CREDITOR_BUILDING_NUMBER_LENGTH_IS_INVALID"` +- `"CREDITOR_BUILDING_NUMBER_TYPE_IS_INVALID"` +- `"CREDITOR_CITY_IS_UNDEFINED"` +- `"CREDITOR_CITY_LENGTH_IS_INVALID"` +- `"CREDITOR_CITY_TYPE_IS_INVALID"` +- `"CREDITOR_COUNTRY_IS_UNDEFINED"` +- `"CREDITOR_COUNTRY_LENGTH_IS_INVALID"` +- `"CREDITOR_COUNTRY_TYPE_IS_INVALID"` +- `"CREDITOR_IS_UNDEFINED"` +- `"CREDITOR_NAME_IS_UNDEFINED"` +- `"CREDITOR_NAME_LENGTH_IS_INVALID"` +- `"CREDITOR_NAME_TYPE_IS_INVALID"` +- `"CREDITOR_ZIP_IS_UNDEFINED"` +- `"CREDITOR_ZIP_LENGTH_IS_INVALID"` +- `"CREDITOR_ZIP_TYPE_IS_INVALID"` +- `"CURRENCY_IS_UNDEFINED"` +- `"CURRENCY_LENGTH_IS_INVALID"` +- `"CURRENCY_STRING_IS_INVALID"` +- `"CURRENCY_TYPE_IS_INVALID"` +- `"DEBTOR_ADDRESS_IS_UNDEFINED"` +- `"DEBTOR_ADDRESS_LENGTH_IS_INVALID"` +- `"DEBTOR_ADDRESS_TYPE_IS_INVALID"` +- `"DEBTOR_BUILDING_NUMBER_LENGTH_IS_INVALID"` +- `"DEBTOR_BUILDING_NUMBER_TYPE_IS_INVALID"` +- `"DEBTOR_CITY_IS_UNDEFINED"` +- `"DEBTOR_CITY_LENGTH_IS_INVALID"` +- `"DEBTOR_CITY_TYPE_IS_INVALID"` +- `"DEBTOR_COUNTRY_IS_UNDEFINED"` +- `"DEBTOR_COUNTRY_LENGTH_IS_INVALID"` +- `"DEBTOR_COUNTRY_TYPE_IS_INVALID"` +- `"DEBTOR_IS_UNDEFINED"` +- `"DEBTOR_NAME_IS_UNDEFINED"` +- `"DEBTOR_NAME_LENGTH_IS_INVALID"` +- `"DEBTOR_NAME_TYPE_IS_INVALID"` +- `"DEBTOR_ZIP_IS_UNDEFINED"` +- `"DEBTOR_ZIP_LENGTH_IS_INVALID"` +- `"DEBTOR_ZIP_TYPE_IS_INVALID"` +- `"MESSAGE_AND_ADDITIONAL_INFORMATION_LENGTH_IS_INVALID"` +- `"MESSAGE_LENGTH_IS_INVALID"` +- `"MESSAGE_TYPE_IS_INVALID"` +- `"QR_REFERENCE_IS_INVALID"` +- `"QR_REFERENCE_LENGTH_IS_INVALID"` +- `"REFERENCE_TYPE_IS_INVALID"` +- `"REGULAR_REFERENCE_LENGTH_IS_INVALID"` -###### Return Type +###### Description -[`ValidationError`](#class-errorsvalidationerror) +A stable error code that can be used to identify the error programmatically.
#### Enum: errors.ValidationErrors -Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L19C0) +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L37C0) - ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_MISSING `"If there is no reference, a conventional IBAN must be used."` - ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_REGULAR `"QR-IBAN requires the use of a QR-Reference."` diff --git a/docs/errors/errors.md b/docs/errors/errors.md new file mode 100644 index 0000000..5761fe6 --- /dev/null +++ b/docs/errors/errors.md @@ -0,0 +1,167 @@ + +# Errors + +- Classes + + - [ValidationError](#class-validationerror) + + - Property + - [code](#property-validationerrorcode) + + - [ValidationErrors](#enum-validationerrors) + +
+ +## Classes + +### Class: ValidationError + +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L2C0) + +#### Description + +A [`ValidationError`](#class-validationerror) is thrown when the data provided to swissqrbill is invalid. + +
+ +#### Property: ValidationError.code + +`public` + +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L5C2) + +##### Type + +`union` + +- `"ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_MISSING"` +- `"ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_REGULAR"` +- `"ACCOUNT_IS_REGULAR_IBAN_BUT_REFERENCE_IS_QR"` +- `"ACCOUNT_LENGTH_IS_INVALID"` +- `"ADDITIONAL_INFORMATION_LENGTH_IS_INVALID"` +- `"ADDITIONAL_INFORMATION_TYPE_IS_INVALID"` +- `"ALTERNATIVE_SCHEME_LENGTH_IS_INVALID"` +- `"ALTERNATIVE_SCHEME_TYPE_IS_INVALID"` +- `"AMOUNT_LENGTH_IS_INVALID"` +- `"AMOUNT_TYPE_IS_INVALID"` +- `"CREDITOR_ACCOUNT_COUNTRY_IS_INVALID"` +- `"CREDITOR_ACCOUNT_IS_INVALID"` +- `"CREDITOR_ACCOUNT_IS_UNDEFINED"` +- `"CREDITOR_ADDRESS_IS_UNDEFINED"` +- `"CREDITOR_ADDRESS_LENGTH_IS_INVALID"` +- `"CREDITOR_ADDRESS_TYPE_IS_INVALID"` +- `"CREDITOR_BUILDING_NUMBER_LENGTH_IS_INVALID"` +- `"CREDITOR_BUILDING_NUMBER_TYPE_IS_INVALID"` +- `"CREDITOR_CITY_IS_UNDEFINED"` +- `"CREDITOR_CITY_LENGTH_IS_INVALID"` +- `"CREDITOR_CITY_TYPE_IS_INVALID"` +- `"CREDITOR_COUNTRY_IS_UNDEFINED"` +- `"CREDITOR_COUNTRY_LENGTH_IS_INVALID"` +- `"CREDITOR_COUNTRY_TYPE_IS_INVALID"` +- `"CREDITOR_IS_UNDEFINED"` +- `"CREDITOR_NAME_IS_UNDEFINED"` +- `"CREDITOR_NAME_LENGTH_IS_INVALID"` +- `"CREDITOR_NAME_TYPE_IS_INVALID"` +- `"CREDITOR_ZIP_IS_UNDEFINED"` +- `"CREDITOR_ZIP_LENGTH_IS_INVALID"` +- `"CREDITOR_ZIP_TYPE_IS_INVALID"` +- `"CURRENCY_IS_UNDEFINED"` +- `"CURRENCY_LENGTH_IS_INVALID"` +- `"CURRENCY_STRING_IS_INVALID"` +- `"CURRENCY_TYPE_IS_INVALID"` +- `"DEBTOR_ADDRESS_IS_UNDEFINED"` +- `"DEBTOR_ADDRESS_LENGTH_IS_INVALID"` +- `"DEBTOR_ADDRESS_TYPE_IS_INVALID"` +- `"DEBTOR_BUILDING_NUMBER_LENGTH_IS_INVALID"` +- `"DEBTOR_BUILDING_NUMBER_TYPE_IS_INVALID"` +- `"DEBTOR_CITY_IS_UNDEFINED"` +- `"DEBTOR_CITY_LENGTH_IS_INVALID"` +- `"DEBTOR_CITY_TYPE_IS_INVALID"` +- `"DEBTOR_COUNTRY_IS_UNDEFINED"` +- `"DEBTOR_COUNTRY_LENGTH_IS_INVALID"` +- `"DEBTOR_COUNTRY_TYPE_IS_INVALID"` +- `"DEBTOR_IS_UNDEFINED"` +- `"DEBTOR_NAME_IS_UNDEFINED"` +- `"DEBTOR_NAME_LENGTH_IS_INVALID"` +- `"DEBTOR_NAME_TYPE_IS_INVALID"` +- `"DEBTOR_ZIP_IS_UNDEFINED"` +- `"DEBTOR_ZIP_LENGTH_IS_INVALID"` +- `"DEBTOR_ZIP_TYPE_IS_INVALID"` +- `"MESSAGE_AND_ADDITIONAL_INFORMATION_LENGTH_IS_INVALID"` +- `"MESSAGE_LENGTH_IS_INVALID"` +- `"MESSAGE_TYPE_IS_INVALID"` +- `"QR_REFERENCE_IS_INVALID"` +- `"QR_REFERENCE_LENGTH_IS_INVALID"` +- `"REFERENCE_TYPE_IS_INVALID"` +- `"REGULAR_REFERENCE_LENGTH_IS_INVALID"` + +##### Description + +A stable error code that can be used to identify the error programmatically. + +
+ +### Enum: ValidationErrors + +Defined in: [src/shared/errors.ts](../../src/shared/errors.ts#L37C0) + +- ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_MISSING `"If there is no reference, a conventional IBAN must be used."` +- ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_REGULAR `"QR-IBAN requires the use of a QR-Reference."` +- ACCOUNT_IS_REGULAR_IBAN_BUT_REFERENCE_IS_QR `"QR-Reference requires the use of a QR-IBAN."` +- ACCOUNT_LENGTH_IS_INVALID `"The provided IBAN number '{iban}' is either too long or too short."` +- ADDITIONAL_INFORMATION_LENGTH_IS_INVALID `"Additional information must be a maximum of 140 characters."` +- ADDITIONAL_INFORMATION_TYPE_IS_INVALID `"Additional information must be a string."` +- ALTERNATIVE_SCHEME_LENGTH_IS_INVALID `"{scheme} must be a maximum of 100 characters."` +- ALTERNATIVE_SCHEME_TYPE_IS_INVALID `"{scheme} must be a string."` +- AMOUNT_LENGTH_IS_INVALID `"Amount must be a maximum of 12 digits."` +- AMOUNT_TYPE_IS_INVALID `"Amount must be a number."` +- CREDITOR_ACCOUNT_COUNTRY_IS_INVALID `"Only CH and LI IBAN numbers are allowed."` +- CREDITOR_ACCOUNT_IS_INVALID `"The provided IBAN number '{iban}' is not valid."` +- CREDITOR_ACCOUNT_IS_UNDEFINED `"Creditor account cannot be undefined."` +- CREDITOR_ADDRESS_IS_UNDEFINED `"Creditor address cannot be undefined."` +- CREDITOR_ADDRESS_LENGTH_IS_INVALID `"Creditor address must be a maximum of 70 characters."` +- CREDITOR_ADDRESS_TYPE_IS_INVALID `"Creditor address TYPE must be a string."` +- CREDITOR_BUILDING_NUMBER_LENGTH_IS_INVALID `"Creditor buildingNumber must be a maximum of 16 characters."` +- CREDITOR_BUILDING_NUMBER_TYPE_IS_INVALID `"Creditor buildingNumber must be either a string or a number."` +- CREDITOR_CITY_IS_UNDEFINED `"Creditor city cannot be undefined."` +- CREDITOR_CITY_LENGTH_IS_INVALID `"Creditor city must be a maximum of 35 characters."` +- CREDITOR_CITY_TYPE_IS_INVALID `"Creditor city must be a string."` +- CREDITOR_COUNTRY_IS_UNDEFINED `"Creditor country cannot be undefined."` +- CREDITOR_COUNTRY_LENGTH_IS_INVALID `"Creditor country must be 2 characters."` +- CREDITOR_COUNTRY_TYPE_IS_INVALID `"Creditor country must be a string."` +- CREDITOR_IS_UNDEFINED `"Creditor cannot be undefined."` +- CREDITOR_NAME_IS_UNDEFINED `"Creditor name cannot be undefined."` +- CREDITOR_NAME_LENGTH_IS_INVALID `"Creditor name must be a maximum of 70 characters."` +- CREDITOR_NAME_TYPE_IS_INVALID `"Creditor name must be a string."` +- CREDITOR_ZIP_IS_UNDEFINED `"Creditor zip cannot be undefined."` +- CREDITOR_ZIP_LENGTH_IS_INVALID `"Creditor zip must be a maximum of 16 characters."` +- CREDITOR_ZIP_TYPE_IS_INVALID `"Creditor zip must be either a string or a number."` +- CURRENCY_IS_UNDEFINED `"Currency cannot be undefined."` +- CURRENCY_LENGTH_IS_INVALID `"Currency must be a length of 3 characters."` +- CURRENCY_STRING_IS_INVALID `"Currency must be either 'CHF' or 'EUR'"` +- CURRENCY_TYPE_IS_INVALID `"Currency must be a string."` +- DEBTOR_ADDRESS_IS_UNDEFINED `"Debtor address cannot be undefined."` +- DEBTOR_ADDRESS_LENGTH_IS_INVALID `"Debtor address must be a maximum of 70 characters."` +- DEBTOR_ADDRESS_TYPE_IS_INVALID `"Debtor address TYPE must be a string."` +- DEBTOR_BUILDING_NUMBER_LENGTH_IS_INVALID `"Debtor buildingNumber must be a maximum of 16 characters."` +- DEBTOR_BUILDING_NUMBER_TYPE_IS_INVALID `"Debtor buildingNumber must be either a string or a number."` +- DEBTOR_CITY_IS_UNDEFINED `"Debtor city cannot be undefined."` +- DEBTOR_CITY_LENGTH_IS_INVALID `"Debtor city must be a maximum of 35 characters."` +- DEBTOR_CITY_TYPE_IS_INVALID `"Debtor city must be a string."` +- DEBTOR_COUNTRY_IS_UNDEFINED `"Debtor country cannot be undefined."` +- DEBTOR_COUNTRY_LENGTH_IS_INVALID `"Debtor country must be 2 characters."` +- DEBTOR_COUNTRY_TYPE_IS_INVALID `"Debtor country must be a string."` +- DEBTOR_IS_UNDEFINED `"Debtor cannot be undefined."` +- DEBTOR_NAME_IS_UNDEFINED `"Debtor name cannot be undefined."` +- DEBTOR_NAME_LENGTH_IS_INVALID `"Debtor name must be a maximum of 70 characters."` +- DEBTOR_NAME_TYPE_IS_INVALID `"Debtor name must be a string."` +- DEBTOR_ZIP_IS_UNDEFINED `"Debtor zip cannot be undefined."` +- DEBTOR_ZIP_LENGTH_IS_INVALID `"Debtor zip must be a maximum of 16 characters."` +- DEBTOR_ZIP_TYPE_IS_INVALID `"Debtor zip must be either a string or a number."` +- MESSAGE_AND_ADDITIONAL_INFORMATION_LENGTH_IS_INVALID `"Message and additionalInformation combined must be a maximum of 140 characters."` +- MESSAGE_LENGTH_IS_INVALID `"Message must be a maximum of 140 characters."` +- MESSAGE_TYPE_IS_INVALID `"Message must be a string."` +- QR_REFERENCE_IS_INVALID `"The provided QR-Reference '{reference}' is not valid."` +- QR_REFERENCE_LENGTH_IS_INVALID `"QR-Reference must be a must be exactly 27 characters."` +- REFERENCE_TYPE_IS_INVALID `"Reference must be a string."` +- REGULAR_REFERENCE_LENGTH_IS_INVALID `"Creditor reference must be a maximum of 25 characters."` diff --git a/docs/importing.md b/docs/importing.md index aba33e1..474bb09 100644 --- a/docs/importing.md +++ b/docs/importing.md @@ -88,9 +88,9 @@ The bundle exposes all exports in the global variable `SwissQRBill`. ```ts const SwissQRBill = { + errors, PDF, SVG, - errors, table, types, utils diff --git a/docs/pdf/index.md b/docs/pdf/index.md index f6fb6b4..df5fcd3 100644 --- a/docs/pdf/index.md +++ b/docs/pdf/index.md @@ -239,7 +239,7 @@ Attaches the Swiss QR Code to a PDF document. ### Class: Table -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L158C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L157C0) #### Description @@ -289,7 +289,7 @@ pdf.end(); #### Constructor: new Table(data) -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L166C2) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L165C2) ##### Parameter @@ -309,7 +309,7 @@ Creates a new Table instance. `public` -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L191C2) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L190C2) ##### Parameters @@ -334,7 +334,7 @@ every row that no longer fits on a page. ### Type alias: PDFBorderColor -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L91C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L90C0) #### Type @@ -361,7 +361,7 @@ Can be used to set the color of the border of a table, row or column. ### Type alias: PDFBorderWidth -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L97C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L96C0) #### Type @@ -388,7 +388,7 @@ Can be used to set the width of the border of a table, row or column. ### Type alias: PDFPadding -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L103C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L102C0) #### Type @@ -437,7 +437,7 @@ Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L1C0) ### Interface: PDFRow -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L30C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L29C0) - **columns** [`Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) Table columns. @@ -462,7 +462,7 @@ Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L30C0) ### Interface: PDFColumn -Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L63C0) +Defined in: [src/pdf/table.ts](../../src/pdf/table.ts#L62C0) - **text** [`boolean`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean) | [`number`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) | [`string`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) Cell text. - **align** `"center"` | `"left"` | `"right"` Horizontal alignment of the text inside the cell. `optional` diff --git a/eslint.config.js b/eslint.config.js index e20c936..ad8aa3a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,9 +1,8 @@ +import sharedRules from "@schoero/configs/eslint"; import eslintPluginTypeScript from "@typescript-eslint/eslint-plugin"; import eslintParserTypeScript from "@typescript-eslint/parser"; -import sharedRules from "@schoero/configs/eslint"; - -/** @type { import("eslint").Linter.FlatConfig[] } */ +/** @type { import("eslint").Linter.Config[] } */ export default [ ...sharedRules, diff --git a/examples/browser-bundling-with-webpack/src/pdf.js b/examples/browser-bundling-with-webpack/src/pdf.js index 7463c2c..63a42e2 100644 --- a/examples/browser-bundling-with-webpack/src/pdf.js +++ b/examples/browser-bundling-with-webpack/src/pdf.js @@ -1,8 +1,9 @@ -import BlobStream from "blob-stream"; import fs from "fs"; + +import BlobStream from "blob-stream"; import PDFDocument from "pdfkit"; -import Helvetica from "pdfkit/js/data/Helvetica.afm"; import HelveticaBold from "pdfkit/js/data/Helvetica-Bold.afm"; +import Helvetica from "pdfkit/js/data/Helvetica.afm"; import { SwissQRBill } from "swissqrbill/pdf"; diff --git a/examples/how-to-create-a-complete-qr-bill/src/index.js b/examples/how-to-create-a-complete-qr-bill/src/index.js index af36177..794bec4 100644 --- a/examples/how-to-create-a-complete-qr-bill/src/index.js +++ b/examples/how-to-create-a-complete-qr-bill/src/index.js @@ -1,4 +1,5 @@ import { createWriteStream } from "fs"; + import PDFDocument from "pdfkit"; import { SwissQRBill, Table } from "swissqrbill/pdf"; import { mm2pt } from "swissqrbill/utils"; diff --git a/examples/node-cjs-javascript/src/pdf.js b/examples/node-cjs-javascript/src/pdf.js index 04060d0..37582d1 100644 --- a/examples/node-cjs-javascript/src/pdf.js +++ b/examples/node-cjs-javascript/src/pdf.js @@ -1,4 +1,5 @@ const { createWriteStream } = require("fs"); + const PDFDocument = require("pdfkit"); const { SwissQRBill } = require("swissqrbill/pdf"); diff --git a/examples/node-cjs-javascript/src/svg.js b/examples/node-cjs-javascript/src/svg.js index 0fb8841..1d10a95 100644 --- a/examples/node-cjs-javascript/src/svg.js +++ b/examples/node-cjs-javascript/src/svg.js @@ -1,4 +1,5 @@ const { writeFileSync } = require("fs"); + const { SwissQRBill } = require("swissqrbill/svg"); const data = require("./data.js"); diff --git a/examples/node-esm-javascript/src/pdf.js b/examples/node-esm-javascript/src/pdf.js index e5e320e..b2ac376 100644 --- a/examples/node-esm-javascript/src/pdf.js +++ b/examples/node-esm-javascript/src/pdf.js @@ -1,4 +1,5 @@ import { createWriteStream } from "fs"; + import PDFDocument from "pdfkit"; import { SwissQRBill } from "swissqrbill/pdf"; diff --git a/examples/node-esm-javascript/src/svg.js b/examples/node-esm-javascript/src/svg.js index dce6bc0..c83aaed 100644 --- a/examples/node-esm-javascript/src/svg.js +++ b/examples/node-esm-javascript/src/svg.js @@ -1,4 +1,5 @@ import { writeFileSync } from "fs"; + import { SwissQRBill } from "swissqrbill/svg"; import { data } from "./data.js"; diff --git a/package-lock.json b/package-lock.json index 6fccf22..b9f31a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,20 +14,20 @@ "devDependencies": { "@cspell/dict-fr-fr": "^2.2.2", "@cspell/dict-it-it": "^3.1.0", - "@schoero/configs": "^1.0.33", - "@types/node": "^22.2.0", + "@schoero/configs": "^1.1.1", + "@types/node": "^22.5.2", "@types/pdfkit": "^0.13.4", "@types/svg-parser": "^2.0.6", "cross-env": "^7.0.3", - "cspell": "^8.13.2", - "eslint": "^9.9.0", + "cspell": "^8.14.2", + "eslint": "^9.9.1", "glob": "^11.0.0", "markdownlint": "^0.34.0", "pdfkit": "^0.15.0", "typescript": "^5.5.4", - "unwritten": "^0.2.12", - "vite": "^5.4.0", - "vite-plugin-dts": "^4.0.2", + "unwritten": "^0.2.13", + "vite": "^5.4.2", + "vite-plugin-dts": "^4.1.0", "vite-plugin-no-bundle": "^4.0.0", "vitest": "^2.0.5" }, @@ -58,9 +58,9 @@ } }, "node_modules/@actions/http-client": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.1.tgz", - "integrity": "sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", "dev": true, "dependencies": { "tunnel": "^0.0.6", @@ -197,12 +197,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", "dev": true, "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.25.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -212,9 +212,9 @@ } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -226,9 +226,9 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.13.2.tgz", - "integrity": "sha512-BLXah6gUvPeZM8bj1I0F5YJ0CzDZ3d3xpbDCrDB0NfHIsF9zn0la+ie0O15VcVWNBrNIToc6enjxWg1JSF3E5g==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.14.2.tgz", + "integrity": "sha512-Kv2Utj/RTSxfufGXkkoTZ/3ErCsYWpCijtDFr/FwSsM7mC0PzLpdlcD9xjtgrJO5Kwp7T47iTG21U4Mwddyi8Q==", "dev": true, "dependencies": { "@cspell/dict-ada": "^4.0.2", @@ -238,7 +238,7 @@ "@cspell/dict-cpp": "^5.1.12", "@cspell/dict-cryptocurrencies": "^5.0.0", "@cspell/dict-csharp": "^4.0.2", - "@cspell/dict-css": "^4.0.12", + "@cspell/dict-css": "^4.0.13", "@cspell/dict-dart": "^2.0.3", "@cspell/dict-django": "^4.1.0", "@cspell/dict-docker": "^1.1.7", @@ -276,7 +276,7 @@ "@cspell/dict-ruby": "^5.0.2", "@cspell/dict-rust": "^4.0.5", "@cspell/dict-scala": "^5.0.3", - "@cspell/dict-software-terms": "^4.0.5", + "@cspell/dict-software-terms": "^4.0.6", "@cspell/dict-sql": "^2.1.5", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", @@ -289,30 +289,30 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.13.2.tgz", - "integrity": "sha512-UOINJikJs9tRWc2RrFmXK4s3hpasAIbSq+6ed7NojY/2kYv6u0bHNhh4D+4DAroHcFsU24vl/PeTa9V4Z5CelA==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.14.2.tgz", + "integrity": "sha512-TZavcnNIZKX1xC/GNj80RgFVKHCT4pHT0qm9jCsQFH2QJfyCrUlkEvotKGSQ04lAyCwWg6Enq95qhouF8YbKUQ==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.13.2" + "@cspell/cspell-types": "8.14.2" }, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-pipe": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.13.2.tgz", - "integrity": "sha512-67N6UHaHRc3H9Nl5TKO/r1lCMgnMPQH+scR6aJxHjcwlKLSoNpGF9LiURhmYaItIhfTH4TDfB2hVPzsslRzaWg==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.14.2.tgz", + "integrity": "sha512-aWMoXZAXEre0/M9AYWOW33YyOJZ06i4vvsEpWBDWpHpWQEmsR/7cMMgld8Pp3wlEjIUclUAKTYmrZ61PFWU/og==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-resolver": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.13.2.tgz", - "integrity": "sha512-SCAH4LbV0uFP9ldXB49mRGnAnPCKZV8W96EMHv9Tdh7Fp3btF5FFaVf0h3/ms1g3quzWJq1+EZvJCKCpm9JY5g==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.14.2.tgz", + "integrity": "sha512-pSyBsAvslaN0dx0pHdvECJEuFDDBJGAD6G8U4BVbIyj2OPk0Ox0HrZIj6csYxxoJERAgNO/q7yCPwa4j9NNFXg==", "dev": true, "dependencies": { "global-directory": "^4.0.1" @@ -322,18 +322,18 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.13.2.tgz", - "integrity": "sha512-lKgRzJlCPc4BLlqDjWQgIo0ikX4nQ04M1vu0H3CQjfcwr2PVEGLSlXXyJnA6S3A80WxVXhGehyMBhXzItmpKIQ==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.14.2.tgz", + "integrity": "sha512-WUF7xf3YgXYIqjmBwLcVugYIrYL4WfXchgSo9rmbbnOcAArzsK+HKfzb4AniZAJ1unxcIQ0JnVlRmnCAKPjjLg==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/cspell-types": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.13.2.tgz", - "integrity": "sha512-0QFLcerzBapst1A729VTegeEcsHFK/YfDvOYWUwsZcmPrpacJ8qHmRPVyyFLvN5punXWwB7pIdtbrVRPDQT49w==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.14.2.tgz", + "integrity": "sha512-MRY8MjBNOKGMDSkxAKueYAgVL43miO+lDcLCBBP+7cNXqHiUFMIZteONcGp3kJT0dWS04dN6lKAXvaNF0aWcng==", "dev": true, "engines": { "node": ">=18" @@ -346,15 +346,15 @@ "dev": true }, "node_modules/@cspell/dict-aws": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.3.tgz", - "integrity": "sha512-0C0RQ4EM29fH0tIYv+EgDQEum0QI6OrmjENC9u98pB8UcnYxGG/SqinuPxo+TgcEuInj0Q73MsBpJ1l5xUnrsw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.4.tgz", + "integrity": "sha512-6AWI/Kkf+RcX/J81VX8+GKLeTgHWEr/OMhGk3dHQzWK66RaqDJCGDqi7494ghZKcBB7dGa3U5jcKw2FZHL/u3w==", "dev": true }, "node_modules/@cspell/dict-bash": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.3.tgz", - "integrity": "sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.4.tgz", + "integrity": "sha512-W/AHoQcJYn3Vn/tUiXX2+6D/bhfzdDshwcbQWv9TdiNlXP9P6UJjDKWbxyA5ogJCsR2D0X9Kx11oV8E58siGKQ==", "dev": true }, "node_modules/@cspell/dict-companies": { @@ -364,9 +364,9 @@ "dev": true }, "node_modules/@cspell/dict-cpp": { - "version": "5.1.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.12.tgz", - "integrity": "sha512-6lXLOFIa+k/qBcu0bjaE/Kc6v3sh9VhsDOXD1Dalm3zgd0QIMjp5XBmkpSdCAK3pWCPV0Se7ysVLDfCea1BuXg==", + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.16.tgz", + "integrity": "sha512-32fU5RkuOM55IRcxjByiSoKbjr+C4danDfYjHaQNRWdvjzJzci3fLDGA2wTXiclkgDODxGiV8LCTUwCz+3TNWA==", "dev": true }, "node_modules/@cspell/dict-cryptocurrencies": { @@ -382,15 +382,15 @@ "dev": true }, "node_modules/@cspell/dict-css": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.12.tgz", - "integrity": "sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.13.tgz", + "integrity": "sha512-WfOQkqlAJTo8eIQeztaH0N0P+iF5hsJVKFuhy4jmARPISy8Efcv8QXk2/IVbmjJH0/ZV7dKRdnY5JFVXuVz37g==", "dev": true }, "node_modules/@cspell/dict-dart": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz", - "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.2.1.tgz", + "integrity": "sha512-yriKm7QkoPx3JPSSOcw6iX9gOb2N50bOo/wqWviqPYbhpMRh9Xiv6dkUy3+ot+21GuShZazO8X6U5+Vw67XEwg==", "dev": true }, "node_modules/@cspell/dict-data-science": { @@ -418,9 +418,9 @@ "dev": true }, "node_modules/@cspell/dict-dotnet": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.2.tgz", - "integrity": "sha512-UD/pO2A2zia/YZJ8Kck/F6YyDSpCMq0YvItpd4YbtDVzPREfTZ48FjZsbYi4Jhzwfvc6o8R56JusAE58P+4sNQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.5.tgz", + "integrity": "sha512-gjg0L97ee146wX47dnA698cHm85e7EOpf9mVrJD8DmEaqoo/k1oPy2g7c7LgKxK9XnqwoXxhLNnngPrwXOoEtQ==", "dev": true }, "node_modules/@cspell/dict-elixir": { @@ -490,9 +490,9 @@ "dev": true }, "node_modules/@cspell/dict-golang": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.9.tgz", - "integrity": "sha512-etDt2WQauyEQDA+qPS5QtkYTb2I9l5IfQftAllVoB1aOrT6bxxpHvMEpJ0Hsn/vezxrCqa/BmtUbRxllIxIuSg==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.12.tgz", + "integrity": "sha512-LEPeoqd+4O+vceHF73S7D7+LYfrAjOvp4Dqzh4MT30ruzlQ77yHRSuYOJtrFN1GK5ntAt/ILSVOKg9sgsz1Llg==", "dev": true }, "node_modules/@cspell/dict-google": { @@ -586,33 +586,33 @@ "dev": true }, "node_modules/@cspell/dict-npm": { - "version": "5.0.18", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.18.tgz", - "integrity": "sha512-weMTyxWpzz19q4wv9n183BtFvdD5fCjtze+bFKpl+4rO/YlPhHL2cXLAeexJz/VDSBecwX4ybTZYoknd1h2J4w==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.1.4.tgz", + "integrity": "sha512-yzqVTY4P5neom4z9orV2IFOqDZ7fDotmisP7nwQkEmftoELgn5CUtNdnJhWDoDQQn6yrxOxA8jEqmyETIWzN4Q==", "dev": true }, "node_modules/@cspell/dict-php": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.8.tgz", - "integrity": "sha512-TBw3won4MCBQ2wdu7kvgOCR3dY2Tb+LJHgDUpuquy3WnzGiSDJ4AVelrZdE1xu7mjFJUr4q48aB21YT5uQqPZA==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.10.tgz", + "integrity": "sha512-NfTZdp6kcZDF1PvgQ6cY0zE4FUO5rSwNmBH/iwCBuaLfJAFQ97rgjxo+D2bic4CFwNjyHutnHPtjJBRANO5XQw==", "dev": true }, "node_modules/@cspell/dict-powershell": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.5.tgz", - "integrity": "sha512-3JVyvMoDJesAATYGOxcUWPbQPUvpZmkinV3m8HL1w1RrjeMVXXuK7U1jhopSneBtLhkU+9HKFwgh9l9xL9mY2Q==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.8.tgz", + "integrity": "sha512-Eg64BccQp5oEJ+V/O2G27KaLWmuOL2AWMOs2470adUihOleRfW8j9XwAEGCS+JKSnDb2mksWA72Z6kDqH138IQ==", "dev": true }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.7.tgz", - "integrity": "sha512-KlBXuGcN3LE7tQi/GEqKiDewWGGuopiAD0zRK1QilOx5Co8XAvs044gk4MNIQftc8r0nHeUI+irJKLGcR36DIQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.8.tgz", + "integrity": "sha512-Sup+tFS7cDV0fgpoKtUqEZ6+fA/H+XUgBiqQ/Fbs6vUE3WCjJHOIVsP+udHuyMH7iBfJ4UFYOYeORcY4EaKdMg==", "dev": true }, "node_modules/@cspell/dict-python": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.4.tgz", - "integrity": "sha512-sCtLBqMreb+8zRW2bXvFsfSnRUVU6IFm4mT6Dc4xbz0YajprbaPPh/kOUTw5IJRP8Uh+FFb7Xp2iH03CNWRq/A==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.6.tgz", + "integrity": "sha512-Hkz399qDGEbfXi9GYa2hDl7GahglI86JmS2F1KP8sfjLXofUgtnknyC5NWc86nzHcP38pZiPqPbTigyDYw5y8A==", "dev": true, "dependencies": { "@cspell/dict-data-science": "^2.0.1" @@ -625,9 +625,9 @@ "dev": true }, "node_modules/@cspell/dict-ruby": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.2.tgz", - "integrity": "sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.3.tgz", + "integrity": "sha512-V1xzv9hN6u8r6SM4CkYdsxs4ov8gjXXo0Twfx5kWhLXbEVxTXDMt7ohLTqpy2XlF5mutixZdbHMeFiAww8v+Ug==", "dev": true }, "node_modules/@cspell/dict-rust": { @@ -643,9 +643,9 @@ "dev": true }, "node_modules/@cspell/dict-software-terms": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.0.6.tgz", - "integrity": "sha512-UDhUzNSf7GN529a0Ip9hlSoGbpscz0YlUYBEJmZBXi8otpkrbCJqs50T74Ppd+SWqNil04De8urv4af2c6SY5Q==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-4.1.3.tgz", + "integrity": "sha512-5Wn5JG4IzCboX5pjISdkipsPKGaz1//iuBZdHl4US5x7mO4jOGXLpjzx6ZoPM4PXUlMEFz9NJRCDepAu8fXVtA==", "dev": true }, "node_modules/@cspell/dict-sql": { @@ -667,9 +667,9 @@ "dev": true }, "node_modules/@cspell/dict-terraform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.0.tgz", - "integrity": "sha512-Ak+vy4HP/bOgzf06BAMC30+ZvL9mzv21xLM2XtfnBLTDJGdxlk/nK0U6QT8VfFLqJ0ZZSpyOxGsUebWDCTr/zQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@cspell/dict-terraform/-/dict-terraform-1.0.1.tgz", + "integrity": "sha512-29lmUUnZgPh+ieZ5hunick8hzNIpNRtiJh9vAusNskPCrig3RTW6u7F+GG1a8uyslbzSw+Irjf40PTOan1OJJA==", "dev": true }, "node_modules/@cspell/dict-typescript": { @@ -685,9 +685,9 @@ "dev": true }, "node_modules/@cspell/dynamic-import": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.13.2.tgz", - "integrity": "sha512-ckn9k7kW9Wv1kw8WltUGByQQzFFR9YITtnDQHHFI8yi9IQkSle4+KHLr9Y8uL6U8rtwP70edX4ese++yfnJr+Q==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.14.2.tgz", + "integrity": "sha512-5MbqtIligU7yPwHWU/5yFCgMvur4i1bRAF1Cy8y2dDtHsa204S/w/SaXs+51EFLp2eNbCiBisCBrwJFT7R1RxA==", "dev": true, "dependencies": { "import-meta-resolve": "^4.1.0" @@ -696,33 +696,42 @@ "node": ">=18.0" } }, + "node_modules/@cspell/filetypes": { + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-8.14.2.tgz", + "integrity": "sha512-ZevArA0mWeVTTqHicxCPZIAeCibpY3NwWK/x6d1Lgu7RPk/daoGAM546Q2SLChFu+r10tIH7pRG212A6Q9ihPA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, "node_modules/@cspell/strong-weak-map": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.13.2.tgz", - "integrity": "sha512-jVwlZnef8Q/x3MEg5ixRYYfV3BoI5ZOw0UZRianaM1GwsLCIW/mJ7ZIlIQF6N/exE1YWCpyRlCNgvTgUf7fc7w==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.14.2.tgz", + "integrity": "sha512-7sRzJc392CQYNNrtdPEfOHJdRqsqf6nASCtbS5A9hL2UrdWQ4uN7r/D+Y1HpuizwY9eOkZvarcFfsYt5wE0Pug==", "dev": true, "engines": { "node": ">=18" } }, "node_modules/@cspell/url": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.13.2.tgz", - "integrity": "sha512-IFtiADDLGCp4QXPhsQ0F5/jbVQb0Loeum36wzGLiqXWYDjIA25W8miy0hyy/S8aZhzdEq2aUZjz9dTvkl+5ISQ==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-8.14.2.tgz", + "integrity": "sha512-YmWW+B/2XQcCynLpiAQF77Bitm5Cynw3/BICZkbdveKjJkUzEmXB+U2qWuwXOyU8xUYuwkP63YM8McnI567rUA==", "dev": true, "engines": { "node": ">=18.0" } }, "node_modules/@es-joy/jsdoccomment": { - "version": "0.46.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz", - "integrity": "sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ==", + "version": "0.48.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.48.0.tgz", + "integrity": "sha512-G6QUWIcC+KvSwXNsJyDTHvqUdNoAVJPPgkc3+Uk4WBKqZvoXhlvazOgm9aL0HwihJLQf0l+tOE2UFzXBqCqgDw==", "dev": true, "dependencies": { "comment-parser": "1.4.1", "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.0.0" + "jsdoc-type-pratt-parser": "~4.1.0" }, "engines": { "node": ">=16" @@ -1133,9 +1142,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.17.1.tgz", - "integrity": "sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "dependencies": { "@eslint/object-schema": "^2.1.4", @@ -1214,9 +1223,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.0.tgz", - "integrity": "sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.9.1.tgz", + "integrity": "sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1560,9 +1569,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz", + "integrity": "sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==", "cpu": [ "arm" ], @@ -1573,9 +1582,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz", + "integrity": "sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==", "cpu": [ "arm64" ], @@ -1586,9 +1595,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", - "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz", + "integrity": "sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==", "cpu": [ "arm64" ], @@ -1599,9 +1608,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz", + "integrity": "sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==", "cpu": [ "x64" ], @@ -1612,9 +1621,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz", + "integrity": "sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==", "cpu": [ "arm" ], @@ -1625,9 +1634,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz", + "integrity": "sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==", "cpu": [ "arm" ], @@ -1638,9 +1647,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz", + "integrity": "sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==", "cpu": [ "arm64" ], @@ -1651,9 +1660,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz", + "integrity": "sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==", "cpu": [ "arm64" ], @@ -1664,9 +1673,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz", + "integrity": "sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==", "cpu": [ "ppc64" ], @@ -1677,9 +1686,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz", + "integrity": "sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==", "cpu": [ "riscv64" ], @@ -1690,9 +1699,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz", + "integrity": "sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==", "cpu": [ "s390x" ], @@ -1703,9 +1712,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz", + "integrity": "sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==", "cpu": [ "x64" ], @@ -1716,9 +1725,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz", + "integrity": "sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==", "cpu": [ "x64" ], @@ -1729,9 +1738,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz", + "integrity": "sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==", "cpu": [ "arm64" ], @@ -1742,9 +1751,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz", + "integrity": "sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==", "cpu": [ "ia32" ], @@ -1755,9 +1764,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz", + "integrity": "sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==", "cpu": [ "x64" ], @@ -1904,14 +1913,14 @@ } }, "node_modules/@schoero/configs": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/@schoero/configs/-/configs-1.0.33.tgz", - "integrity": "sha512-sN7aNW32jHq52XIXjwO3PjRr6Aew2eh4mM0f5TW/WX9niAqwcjeJTyPrCXJCBjOcVm8kgxauO/xu2qw1je46cA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@schoero/configs/-/configs-1.1.1.tgz", + "integrity": "sha512-7gGkjv8z+7/TqRworVaK0yDGQKq9Ss7iMo7i/cqfmVVOXcmouDsxKvvWIuBYtp2IgBimp73FchO1TRK9Run5hg==", "dev": true, "dependencies": { - "@cspell/dict-bash": "^4.1.3", + "@cspell/dict-bash": "^4.1.4", "@cspell/dict-companies": "^3.1.4", - "@cspell/dict-css": "^4.0.12", + "@cspell/dict-css": "^4.0.13", "@cspell/dict-de-ch": "^1.2.0", "@cspell/dict-en_us": "^4.3.23", "@cspell/dict-fr-fr": "^2.2.2", @@ -1922,34 +1931,33 @@ "@cspell/dict-lorem-ipsum": "^4.0.0", "@cspell/dict-markdown": "^2.0.2", "@cspell/dict-node": "^5.0.1", - "@cspell/dict-npm": "^5.0.18", - "@cspell/dict-public-licenses": "^2.0.7", - "@cspell/dict-software-terms": "^4.0.6", + "@cspell/dict-npm": "^5.1.4", + "@cspell/dict-public-licenses": "^2.0.8", + "@cspell/dict-software-terms": "^4.1.3", "@cspell/dict-typescript": "^3.1.6", - "@stylistic/eslint-plugin-js": "^2.6.2", - "@stylistic/eslint-plugin-jsx": "^2.6.2", - "@stylistic/eslint-plugin-plus": "^2.6.2", - "@stylistic/eslint-plugin-ts": "^2.6.2", - "cspell-lib": "^8.13.2", + "@stylistic/eslint-plugin-js": "^2.7.2", + "@stylistic/eslint-plugin-jsx": "^2.7.2", + "@stylistic/eslint-plugin-plus": "^2.7.2", + "@stylistic/eslint-plugin-ts": "^2.7.2", + "@typescript-eslint/eslint-plugin": "^8.3.0", + "@typescript-eslint/parser": "^8.3.0", + "cspell-lib": "^8.14.2", "eslint-plugin-import-newlines": "^1.4.0", - "eslint-plugin-import-x": "^3.1.0", - "eslint-plugin-jsdoc": "^50.0.0", + "eslint-plugin-import-x": "^4.1.1", + "eslint-plugin-jsdoc": "^50.2.2", "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-markdown": "^5.1.0", - "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-sort-destructure-keys": "^2.0.0", - "eslint-plugin-sort-keys": "^2.3.5", + "eslint-plugin-perfectionist": "^3.3.0", "eslint-plugin-unicorn": "^55.0.0", - "eslint-plugin-unused-imports": "^4.1.2", + "eslint-plugin-unused-imports": "^4.1.3", "eslint-plugin-vitest": "^0.5.4", "eslint-plugin-yml": "^1.14.0", "markdownlint-cli2": "^0.13.0", - "typescript-eslint": "^8.0.1", "vite-tsconfig-paths": "^5.0.1", "vitest-github-actions-reporter": "^0.11.1" }, "optionalDependencies": { - "eslint-plugin-readable-tailwind": "^1.6.0", + "eslint-plugin-readable-tailwind": "^1.7.0", "eslint-plugin-tailwindcss": "^3.17.4" }, "peerDependencies": { @@ -2002,13 +2010,12 @@ } }, "node_modules/@stylistic/eslint-plugin-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.6.2.tgz", - "integrity": "sha512-wCr/kVctAPayMU3pcOI1MKR7MoKIh6VKZU89lPklAqtJoxT+Em6RueiiARbpznUYG5eg3LymiU+aMD+aIZXdqA==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-js/-/eslint-plugin-js-2.7.2.tgz", + "integrity": "sha512-PkwTDduCY6+ILlHNEfVT3BtShrtqrDJmyW3BW53PvCb+SHu7z88iReXbN+/uCr39fcP6qH49RA7RFsKRlpyMEQ==", "dev": true, "dependencies": { - "@types/eslint": "^9.6.0", - "acorn": "^8.12.1", + "@types/eslint": "^9.6.1", "eslint-visitor-keys": "^4.0.0", "espree": "^10.1.0" }, @@ -2020,13 +2027,14 @@ } }, "node_modules/@stylistic/eslint-plugin-jsx": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.6.2.tgz", - "integrity": "sha512-dSXK/fSPA938J1fBi10QmhzLKtZ/2TuyVNHQMk8jUhWfKJDleAogaSqcWNAbN8fwcoe9UWmt/3StiIf2oYC1aQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-jsx/-/eslint-plugin-jsx-2.7.2.tgz", + "integrity": "sha512-xe6scY5B4P0/eZIb9R5nAVjaP7UhNPYH3GE8pojrJIvJiRZ54rZwSBrFWHREP+EN4snCN/bKzNQMaFmQ7+OZbw==", "dev": true, "dependencies": { - "@stylistic/eslint-plugin-js": "^2.6.2", - "@types/eslint": "^9.6.0", + "@types/eslint": "^9.6.1", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0", "estraverse": "^5.3.0", "picomatch": "^4.0.2" }, @@ -2038,27 +2046,27 @@ } }, "node_modules/@stylistic/eslint-plugin-plus": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.6.2.tgz", - "integrity": "sha512-cANcPASfRvq3VTbbQCrSIXq+2AI0IW68PNYaZoXXS0ENlp7HDB8dmrsJnOgWCcoEvdCB8z/eWcG/eq/v5Qcl+Q==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-plus/-/eslint-plugin-plus-2.7.2.tgz", + "integrity": "sha512-Ualkhs6xxVooVAJHvdtJUo8Zg08cjhZdBTid/Ho5pb7EbkUg5Jhz6qbVgeEfd5/4E3h7kQNVezKZM2/JiX79Mw==", "dev": true, "dependencies": { - "@types/eslint": "^9.6.0", - "@typescript-eslint/utils": "^8.0.0" + "@types/eslint": "^9.6.1" }, "peerDependencies": { "eslint": "*" } }, "node_modules/@stylistic/eslint-plugin-ts": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.6.2.tgz", - "integrity": "sha512-6OEN3VtUNxjgOvWPavnC10MByr1H4zsgwNND3rQXr5lDFv93MLUnTsH+/SH15OkuqdyJgrQILI6b9lYecb1vIg==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin-ts/-/eslint-plugin-ts-2.7.2.tgz", + "integrity": "sha512-uf3hmqWLK1upUnTmUSn4XDvNu1o6b1nY+xdema8dGGY+zH663V+0cHN3xqexDuQ8do1f0wV3hChkfmz3jWC4Uw==", "dev": true, "dependencies": { - "@stylistic/eslint-plugin-js": "2.6.2", - "@types/eslint": "^9.6.0", - "@typescript-eslint/utils": "^8.0.0" + "@types/eslint": "^9.6.1", + "@typescript-eslint/utils": "^8.3.0", + "eslint-visitor-keys": "^4.0.0", + "espree": "^10.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2083,9 +2091,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", - "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "dependencies": { "@types/estree": "*", @@ -2114,12 +2122,12 @@ } }, "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.5.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz", + "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==", "dev": true, "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/@types/normalize-package-data": { @@ -2144,22 +2152,22 @@ "dev": true }, "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", - "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz", + "integrity": "sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/type-utils": "8.0.1", - "@typescript-eslint/utils": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/type-utils": "8.3.0", + "@typescript-eslint/utils": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -2183,15 +2191,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz", - "integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.3.0.tgz", + "integrity": "sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4" }, "engines": { @@ -2211,13 +2219,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", - "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz", + "integrity": "sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2228,13 +2236,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", - "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz", + "integrity": "sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/typescript-estree": "8.3.0", + "@typescript-eslint/utils": "8.3.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -2252,9 +2260,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.3.0.tgz", + "integrity": "sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2265,15 +2273,15 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", - "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz", + "integrity": "sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/visitor-keys": "8.3.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -2293,15 +2301,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", - "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.3.0.tgz", + "integrity": "sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1" + "@typescript-eslint/scope-manager": "8.3.0", + "@typescript-eslint/types": "8.3.0", + "@typescript-eslint/typescript-estree": "8.3.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2315,12 +2323,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz", + "integrity": "sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.3.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2434,64 +2442,52 @@ } }, "node_modules/@volar/language-core": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.3.4.tgz", - "integrity": "sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.1.tgz", + "integrity": "sha512-9AKhC7Qn2mQYxj7Dz3bVxeOk7gGJladhWixUYKef/o0o7Bm4an+A3XvmcTHVqZ8stE6lBVH++g050tBtJ4TZPQ==", "dev": true, "dependencies": { - "@volar/source-map": "2.3.4" + "@volar/source-map": "2.4.1" } }, "node_modules/@volar/source-map": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.3.4.tgz", - "integrity": "sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.1.tgz", + "integrity": "sha512-Xq6ep3OZg9xUqN90jEgB9ztX5SsTz1yiV8wiQbcYNjWkek+Ie3dc8l7AVt3EhDm9mSIR58oWczHkzM2H6HIsmQ==", "dev": true }, "node_modules/@volar/typescript": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.3.4.tgz", - "integrity": "sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.1.tgz", + "integrity": "sha512-UoRzC0PXcwajFQTu8XxKSYNsWNBtVja6Y9gC8eLv7kYm+UEKJCcZ8g7dialsOYA0HKs3Vpg57MeCsawFLC6m9Q==", "dev": true, "dependencies": { - "@volar/language-core": "2.3.4", + "@volar/language-core": "2.4.1", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/@vue/compiler-core": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.37.tgz", - "integrity": "sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", + "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", "dev": true, "dependencies": { "@babel/parser": "^7.24.7", - "@vue/shared": "3.4.37", - "entities": "^5.0.0", + "@vue/shared": "3.4.38", + "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, - "node_modules/@vue/compiler-core/node_modules/entities": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-5.0.0.tgz", - "integrity": "sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/@vue/compiler-dom": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz", - "integrity": "sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", + "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.4.37", - "@vue/shared": "3.4.37" + "@vue/compiler-core": "3.4.38", + "@vue/shared": "3.4.38" } }, "node_modules/@vue/compiler-vue2": { @@ -2528,25 +2524,10 @@ } } }, - "node_modules/@vue/language-core/node_modules/@volar/language-core": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", - "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", - "dev": true, - "dependencies": { - "@volar/source-map": "2.4.0-alpha.18" - } - }, - "node_modules/@vue/language-core/node_modules/@volar/source-map": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", - "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", - "dev": true - }, "node_modules/@vue/shared": { - "version": "3.4.37", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.37.tgz", - "integrity": "sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", "dev": true }, "node_modules/acorn": { @@ -2927,9 +2908,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001655", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz", + "integrity": "sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==", "dev": true, "funding": [ { @@ -3154,9 +3135,9 @@ } }, "node_modules/comment-json": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.4.tgz", - "integrity": "sha512-E5AjpSW+O+N5T2GsOQMHLLsJvrYw6G/AFt9GvU6NguEAfzKShh7hRiLtVo6S9KbRpFMGqE5ojo0/hE+sdteWvQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", "dev": true, "dependencies": { "array-timsort": "^1.0.3", @@ -3203,9 +3184,9 @@ "dev": true }, "node_modules/core-js-compat": { - "version": "3.38.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", - "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { "browserslist": "^4.23.3" @@ -3260,24 +3241,24 @@ "dev": true }, "node_modules/cspell": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.13.2.tgz", - "integrity": "sha512-m+aA54r95QteZBPzZBR4bdld92TDV47/qoKhYt7+M8umcLZR3C2dfktEbVQGoAJokRgSQo9L4/fRF0skk+g5Mg==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.14.2.tgz", + "integrity": "sha512-ii/W7fwO4chNQVYl1C/8k7RW8EXzLb69rvg08p8mSJx8B2UasVJ9tuJpTH2Spo1jX6N3H0dKPWUbd1fAmdAhPg==", "dev": true, "dependencies": { - "@cspell/cspell-json-reporter": "8.13.2", - "@cspell/cspell-pipe": "8.13.2", - "@cspell/cspell-types": "8.13.2", - "@cspell/dynamic-import": "8.13.2", - "@cspell/url": "8.13.2", + "@cspell/cspell-json-reporter": "8.14.2", + "@cspell/cspell-pipe": "8.14.2", + "@cspell/cspell-types": "8.14.2", + "@cspell/dynamic-import": "8.14.2", + "@cspell/url": "8.14.2", "chalk": "^5.3.0", "chalk-template": "^1.1.0", "commander": "^12.1.0", - "cspell-dictionary": "8.13.2", - "cspell-gitignore": "8.13.2", - "cspell-glob": "8.13.2", - "cspell-io": "8.13.2", - "cspell-lib": "8.13.2", + "cspell-dictionary": "8.14.2", + "cspell-gitignore": "8.14.2", + "cspell-glob": "8.14.2", + "cspell-io": "8.14.2", + "cspell-lib": "8.14.2", "fast-glob": "^3.3.2", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^9.0.0", @@ -3297,13 +3278,13 @@ } }, "node_modules/cspell-config-lib": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.13.2.tgz", - "integrity": "sha512-AkG5qWnmHxwEJqyLsraVVzEWGShICn533GdcbSHYYrLxEd9UromEjmFrMlgNomwj8SnJq4L9xq1LoWgRXa5jjg==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.14.2.tgz", + "integrity": "sha512-yHP1BdcH5dbjb8qiZr6+bxEnJ+rxTULQ00wBz3eBPWCghJywEAYYvMWoYuxVtPpndlkKYC1wJAHsyNkweQyepA==", "dev": true, "dependencies": { - "@cspell/cspell-types": "8.13.2", - "comment-json": "^4.2.4", + "@cspell/cspell-types": "8.14.2", + "comment-json": "^4.2.5", "yaml": "^2.5.0" }, "engines": { @@ -3311,14 +3292,14 @@ } }, "node_modules/cspell-dictionary": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.13.2.tgz", - "integrity": "sha512-dvtb9fDHw3jEa5mGBmrDTRxlaXVccQ5LMYkosPcS+J5/iLrV0E3iQu3njFHBFXKsLqOwnd6GV9pd6fXkPEFdeQ==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.14.2.tgz", + "integrity": "sha512-gWuAvf6queGGUvGbfAxxUq55cZ0OevWPbjnCrSB0PpJ4tqdFd8dLcvVrIKzoE2sBXKPw2NDkmoEngs6iGavC0w==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.13.2", - "@cspell/cspell-types": "8.13.2", - "cspell-trie-lib": "8.13.2", + "@cspell/cspell-pipe": "8.14.2", + "@cspell/cspell-types": "8.14.2", + "cspell-trie-lib": "8.14.2", "fast-equals": "^5.0.1" }, "engines": { @@ -3326,14 +3307,14 @@ } }, "node_modules/cspell-gitignore": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.13.2.tgz", - "integrity": "sha512-eEDR0g2VQHVRg9mLXi6PUnjZzD1DYa2jkmiuj61ZEN9yEKZ3GKXlUTxlewIiMGN/fxIn5kHyjeMo+hbCHoYkGw==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.14.2.tgz", + "integrity": "sha512-lrO/49NaKBpkR7vFxv4OOY+oHmsG5+gNQejrBBWD9Nv9vvjJtz/G36X/rcN6M6tFcQQMWwa01kf04nxz8Ejuhg==", "dev": true, "dependencies": { - "@cspell/url": "8.13.2", - "cspell-glob": "8.13.2", - "cspell-io": "8.13.2", + "@cspell/url": "8.14.2", + "cspell-glob": "8.14.2", + "cspell-io": "8.14.2", "find-up-simple": "^1.0.0" }, "bin": { @@ -3344,12 +3325,12 @@ } }, "node_modules/cspell-glob": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.13.2.tgz", - "integrity": "sha512-zhWcfE4k1BVErVd36AMle9DE5W0bxI4OcM7/q3YxPQUdbsox/DihGXGQu+jld2LkUpDl0llIPVJ8OibKg9stcQ==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.14.2.tgz", + "integrity": "sha512-9Q1Kgoo1ev3fKTpp9y5n8M4RLxd8B0f5o4y5FQe4dBU0j/bt+/YDrLZNWDm77JViV606XQ6fimG1FTTq6pT9/g==", "dev": true, "dependencies": { - "@cspell/url": "8.13.2", + "@cspell/url": "8.14.2", "micromatch": "^4.0.7" }, "engines": { @@ -3357,13 +3338,13 @@ } }, "node_modules/cspell-grammar": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.13.2.tgz", - "integrity": "sha512-mdRNahGfY7BXg36PQcmeB8WQZETYB6W0A/+yMDgFg+YQX7UdJr8M5GVDFmIFRWyc7/cnv6GMiqdI64gmfCU8ww==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.14.2.tgz", + "integrity": "sha512-eYwceVP80FGYVJenE42ALnvEKOXaXjq4yVbb1Ni1umO/9qamLWNCQ1RP6rRACy5e/cXviAbhrQ5Mtw6n+pyPEQ==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.13.2", - "@cspell/cspell-types": "8.13.2" + "@cspell/cspell-pipe": "8.14.2", + "@cspell/cspell-types": "8.14.2" }, "bin": { "cspell-grammar": "bin.mjs" @@ -3373,39 +3354,40 @@ } }, "node_modules/cspell-io": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.13.2.tgz", - "integrity": "sha512-Jf5LL1TEXPvKH0iabIr8BLK/Hc6crPCdsWM3CbZydp/fDU6rpbaApzSVQ376JlAaLMLpEP7s5oVh9WC4wIE5Bw==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.14.2.tgz", + "integrity": "sha512-uaKpHiY3DAgfdzgKMQml6U8F8o9udMuYxGqYa5FVfN7D5Ap7B2edQzSLTUYwxrFEn4skSfp6XY73+nzJvxzH4Q==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "8.13.2", - "@cspell/url": "8.13.2" + "@cspell/cspell-service-bus": "8.14.2", + "@cspell/url": "8.14.2" }, "engines": { "node": ">=18" } }, "node_modules/cspell-lib": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.13.2.tgz", - "integrity": "sha512-qWX4B0Nwo6Souoi8/hLEohSLQEeeh1mWIiQDDJ43w+zmzzzmHZ8+tAeJJ2eAGgOKVqfjcyefH5y7Py2TQrn3xg==", - "dev": true, - "dependencies": { - "@cspell/cspell-bundled-dicts": "8.13.2", - "@cspell/cspell-pipe": "8.13.2", - "@cspell/cspell-resolver": "8.13.2", - "@cspell/cspell-types": "8.13.2", - "@cspell/dynamic-import": "8.13.2", - "@cspell/strong-weak-map": "8.13.2", - "@cspell/url": "8.13.2", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.14.2.tgz", + "integrity": "sha512-d2oiIXHXnADmnhIuFLOdNE63L7OUfzgpLbYaqAWbkImCUDkevfGrOgnX8TJ03fUgZID4nvQ+3kgu/n2j4eLZjQ==", + "dev": true, + "dependencies": { + "@cspell/cspell-bundled-dicts": "8.14.2", + "@cspell/cspell-pipe": "8.14.2", + "@cspell/cspell-resolver": "8.14.2", + "@cspell/cspell-types": "8.14.2", + "@cspell/dynamic-import": "8.14.2", + "@cspell/filetypes": "8.14.2", + "@cspell/strong-weak-map": "8.14.2", + "@cspell/url": "8.14.2", "clear-module": "^4.1.2", - "comment-json": "^4.2.4", - "cspell-config-lib": "8.13.2", - "cspell-dictionary": "8.13.2", - "cspell-glob": "8.13.2", - "cspell-grammar": "8.13.2", - "cspell-io": "8.13.2", - "cspell-trie-lib": "8.13.2", + "comment-json": "^4.2.5", + "cspell-config-lib": "8.14.2", + "cspell-dictionary": "8.14.2", + "cspell-glob": "8.14.2", + "cspell-grammar": "8.14.2", + "cspell-io": "8.14.2", + "cspell-trie-lib": "8.14.2", "env-paths": "^3.0.0", "fast-equals": "^5.0.1", "gensequence": "^7.0.0", @@ -3420,13 +3402,13 @@ } }, "node_modules/cspell-trie-lib": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.13.2.tgz", - "integrity": "sha512-JYpxU6mN0W9cp5g6QN4TXz0S3zzcmGpVJf1fka7tuWHY1e62Gs0qIIL2LjTHYW9wlRFYyrqPnN5opfwuEZCCMg==", + "version": "8.14.2", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.14.2.tgz", + "integrity": "sha512-rZMbaEBGoyy4/zxKECaMyVyGLbuUxYmZ5jlEgiA3xPtEdWwJ4iWRTo5G6dWbQsXoxPYdAXXZ0/q0GQ2y6Jt0kw==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "8.13.2", - "@cspell/cspell-types": "8.13.2", + "@cspell/cspell-pipe": "8.14.2", + "@cspell/cspell-types": "8.14.2", "gensequence": "^7.0.0" }, "engines": { @@ -3577,6 +3559,15 @@ "node": ">=8" } }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -3604,9 +3595,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz", - "integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "dev": true }, "node_modules/emoji-regex": { @@ -3734,9 +3725,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -3755,16 +3746,16 @@ } }, "node_modules/eslint": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.0.tgz", - "integrity": "sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==", + "version": "9.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.9.1.tgz", + "integrity": "sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.17.1", + "@eslint/config-array": "^0.18.0", "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.9.0", + "@eslint/js": "9.9.1", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.3.0", "@nodelib/fs.walk": "^1.2.8", @@ -3864,148 +3855,40 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-3.1.0.tgz", - "integrity": "sha512-/UbPA+bYY7nIxcjL3kpcDY3UNdoLHFhyBFzHox2M0ypcUoueTn6woZUUmzzi5et/dXChksasYYFeKE2wshOrhg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.1.1.tgz", + "integrity": "sha512-dBEM8fACIFNt4H7GoOaRmnH6evJW6JSTJTYYgmRd3vI4geBTjgDM/JyUDKUwIw0HDSyI+u7Vs3vFRXUo/BOAtA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^7.4.0", + "@typescript-eslint/typescript-estree": "^8.1.0", + "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", "doctrine": "^3.0.0", "eslint-import-resolver-node": "^0.3.9", "get-tsconfig": "^4.7.3", "is-glob": "^4.0.3", "minimatch": "^9.0.3", - "semver": "^7.6.0", + "semver": "^7.6.3", "stable-hash": "^0.0.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^8.56.0 || ^9.0.0-0" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" + "tslib": "^2.6.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-import-x/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "eslint": "^8.57.0 || ^9.0.0" } }, "node_modules/eslint-plugin-jsdoc": { - "version": "50.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.0.1.tgz", - "integrity": "sha512-UayhAysIk1Du8InV27WMbV4AMSJSu60+bekmeuGK2OUy4QJSFPr1srYT6AInykGkmMdRuHfDX6Q0tJEr8BtDtg==", + "version": "50.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.2.2.tgz", + "integrity": "sha512-i0ZMWA199DG7sjxlzXn5AeYZxpRfMJjDPUl7lL9eJJX8TPRoIaxJU4ys/joP5faM5AXE1eqW/dslCj3uj4Nqpg==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.46.0", + "@es-joy/jsdoccomment": "~0.48.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", - "debug": "^4.3.5", + "debug": "^4.3.6", "escape-string-regexp": "^4.0.0", "espree": "^10.1.0", "esquery": "^1.6.0", @@ -4101,51 +3984,69 @@ "eslint": ">=8" } }, - "node_modules/eslint-plugin-readable-tailwind": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-readable-tailwind/-/eslint-plugin-readable-tailwind-1.6.0.tgz", - "integrity": "sha512-PqI8/eHVNTrDa7slAW13D6nTv6CFLqdd4iKxhuGHHcaEnG/k+lCFR0zG0GCDvbQ7vzVcIfpPsM/9/c4wnlw7fg==", + "node_modules/eslint-plugin-perfectionist": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-3.3.0.tgz", + "integrity": "sha512-sGgShkEqDBqIZ3WlenGHwLe1cl3vHKTfeh9b1XXAamaxSC7AY4Os0jdNCXnGJW4l0TlpismT5t2r7CXY7sfKlw==", "dev": true, - "optional": true, + "dependencies": { + "@typescript-eslint/types": "^8.3.0", + "@typescript-eslint/utils": "^8.3.0", + "minimatch": "^10.0.1", + "natural-compare-lite": "^1.4.0" + }, "engines": { - "node": ">=16" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", - "tailwindcss": ">=3.3.0" - } - }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz", - "integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0" + "astro-eslint-parser": "^1.0.2", + "eslint": ">=8.0.0", + "svelte": ">=3.0.0", + "svelte-eslint-parser": "^0.41.0", + "vue-eslint-parser": ">=9.0.0" + }, + "peerDependenciesMeta": { + "astro-eslint-parser": { + "optional": true + }, + "svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + }, + "vue-eslint-parser": { + "optional": true + } } }, - "node_modules/eslint-plugin-sort-destructure-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-sort-destructure-keys/-/eslint-plugin-sort-destructure-keys-2.0.0.tgz", - "integrity": "sha512-4w1UQCa3o/YdfWaLr9jY8LfGowwjwjmwClyFLxIsToiyIdZMq3x9Ti44nDn34DtTPP7PWg96tUONKVmATKhYGQ==", + "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", "dev": true, "dependencies": { - "natural-compare-lite": "^1.4.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": "20 || >=22" }, - "peerDependencies": { - "eslint": "5 - 9" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eslint-plugin-sort-keys": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-sort-keys/-/eslint-plugin-sort-keys-2.3.5.tgz", - "integrity": "sha512-2j/XKQ9sNJwK8kIp/U0EvuF6stS6/8aIc53/NskE4C5NRNh4dt3xzbZyOdrVC11cTH6Zo59/pdzA0Kb+2fQGWg==", + "node_modules/eslint-plugin-readable-tailwind": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-readable-tailwind/-/eslint-plugin-readable-tailwind-1.7.0.tgz", + "integrity": "sha512-AEXpU93j4mz81PEFyGNDhvqGb+o8gElcrNXRvQkA12mSTcxDo+7j+9Co8KjOX1dwd+/1+HodnE0w3F+uCLLYGA==", "dev": true, - "dependencies": { - "natural-compare": "1.4.0" + "optional": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "tailwindcss": ">=3.3.0" } }, "node_modules/eslint-plugin-tailwindcss": { @@ -4358,6 +4259,35 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-plugin-vitest/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-vitest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/eslint-plugin-yml": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/eslint-plugin-yml/-/eslint-plugin-yml-1.14.0.tgz", @@ -4709,9 +4639,9 @@ } }, "node_modules/file-entry-cache": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.0.0.tgz", - "integrity": "sha512-6MgEugi8p2tiUhqO7GnPsmbCCzj0YRCwwaTbpGRyKZesjRSzkqkAE9fPp7V2yMs5hwfgbQLgdvSSkGNg1s5Uvw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", "dev": true, "dependencies": { "flat-cache": "^5.0.0" @@ -4929,9 +4859,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz", + "integrity": "sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -5018,20 +4948,20 @@ } }, "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -5182,9 +5112,9 @@ } }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -5419,9 +5349,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { "hasown": "^2.0.2" @@ -5728,9 +5658,9 @@ } }, "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, "engines": { "node": ">=12.0.0" @@ -6042,26 +5972,6 @@ "markdownlint-cli2": ">=0.0.4" } }, - "node_modules/markdownlint-cli2/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", - "dev": true, - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdownlint-cli2/node_modules/micromatch": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -6075,18 +5985,6 @@ "node": ">=8.6" } }, - "node_modules/markdownlint-cli2/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdownlint-cli2/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6099,18 +5997,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/markdownlint-cli2/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdownlint-micromark": { "version": "0.1.9", "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.9.tgz", @@ -6192,9 +6078,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -6661,12 +6547,15 @@ } }, "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pathe": { @@ -6738,9 +6627,9 @@ } }, "node_modules/pkg-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", "dev": true, "dependencies": { "confbox": "^0.1.7", @@ -6773,9 +6662,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.42", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.42.tgz", + "integrity": "sha512-hywKUQB9Ra4dR1mGhldy5Aj1X3MWDSIA1cEi+Uy0CjheLvP6Ual5RlwMCh8i/X121yEDLDIKBsrCQ8ba3FDMfQ==", "dev": true, "funding": [ { @@ -6919,9 +6808,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "optional": true, "peer": true, @@ -7238,9 +7127,9 @@ } }, "node_modules/rollup": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", - "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.2.tgz", + "integrity": "sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==", "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -7253,22 +7142,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", + "@rollup/rollup-android-arm-eabi": "4.21.2", + "@rollup/rollup-android-arm64": "4.21.2", + "@rollup/rollup-darwin-arm64": "4.21.2", + "@rollup/rollup-darwin-x64": "4.21.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.21.2", + "@rollup/rollup-linux-arm-musleabihf": "4.21.2", + "@rollup/rollup-linux-arm64-gnu": "4.21.2", + "@rollup/rollup-linux-arm64-musl": "4.21.2", + "@rollup/rollup-linux-powerpc64le-gnu": "4.21.2", + "@rollup/rollup-linux-riscv64-gnu": "4.21.2", + "@rollup/rollup-linux-s390x-gnu": "4.21.2", + "@rollup/rollup-linux-x64-gnu": "4.21.2", + "@rollup/rollup-linux-x64-musl": "4.21.2", + "@rollup/rollup-win32-arm64-msvc": "4.21.2", + "@rollup/rollup-win32-ia32-msvc": "4.21.2", + "@rollup/rollup-win32-x64-msvc": "4.21.2", "fsevents": "~2.3.2" } }, @@ -7397,12 +7286,15 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/slashes": { @@ -7466,9 +7358,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/sprintf-js": { @@ -7797,9 +7689,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.9.tgz", - "integrity": "sha512-1SEOvRr6sSdV5IDf9iC+NU4dhwdqzF4zKKq3sAbasUWHEM6lsMhX+eNN5gkPx1BvLFEnZQEUFbXnGj8Qlp83Pg==", + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", "dev": true, "optional": true, "peer": true, @@ -7905,9 +7797,9 @@ "dev": true }, "node_modules/tinypool": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.0.tgz", - "integrity": "sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", + "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", "dev": true, "engines": { "node": "^18.0.0 || >=20.0.0" @@ -7973,9 +7865,9 @@ "peer": true }, "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.3.tgz", + "integrity": "sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==", "dev": true, "bin": { "tsconfck": "bin/tsconfck.js" @@ -7993,9 +7885,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/tunnel": { @@ -8041,29 +7933,6 @@ "node": ">=14.17" } }, - "node_modules/typescript-eslint": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.0.1.tgz", - "integrity": "sha512-V3Y+MdfhawxEjE16dWpb7/IOgeXnLwAEEkS7v8oDqNcR1oYlqWhGH/iHqHdKVdpWme1VPZ0SoywXAkCqawj2eQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.0.1", - "@typescript-eslint/parser": "8.0.1", - "@typescript-eslint/utils": "8.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", @@ -8089,9 +7958,9 @@ } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true }, "node_modules/unicode-properties": { @@ -8149,15 +8018,15 @@ } }, "node_modules/unwritten": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/unwritten/-/unwritten-0.2.12.tgz", - "integrity": "sha512-qsr7wHtXUOor/CBIvmj7tJv2c3jGE/GgrraFyorWblaAmSTv4yycfihAW26LIV7rTYxsSBkibEAcWB/ghQpDzg==", + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/unwritten/-/unwritten-0.2.13.tgz", + "integrity": "sha512-/1bLv2/X7aabL2EP8rVWpWDcp5NToalUYapmUkkK1vZ0Ocn0LC9SSb2dPo9X8uClYUZ6uFBRrxcoXK/qopIVlQ==", "dev": true, "dependencies": { "cac": "^6.7.14", - "minimatch": "^9.0.4", + "minimatch": "^10.0.1", "tinyhighlight": "^0.3.2", - "typescript": "^5.5.2" + "typescript": "^5.5.4" }, "bin": { "unwritten": "lib/node/bin/index.js" @@ -8166,6 +8035,21 @@ "node": ">=16.9.0" } }, + "node_modules/unwritten/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", @@ -8243,14 +8127,14 @@ } }, "node_modules/vite": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.0.tgz", - "integrity": "sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==", + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", + "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", "dev": true, "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.40", - "rollup": "^4.13.0" + "postcss": "^8.4.41", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" @@ -8324,9 +8208,9 @@ } }, "node_modules/vite-plugin-dts": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.0.2.tgz", - "integrity": "sha512-Ni3EPG8yeLc5ivEzT4szreJ0rXpEQgvdYq3PaZ7OMoHc8uET4/HRUfzVPejJaUAojbxsKgaZbp6Zgm41sxb86Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-dts/-/vite-plugin-dts-4.1.0.tgz", + "integrity": "sha512-sRlmt9k2q8MrX4F2058N3KmB6WyJ3Ao6QaExOv1X99F3j0GhPziEz1zscWQ1q2r1PeFc96L7GIUu8Pl2DPr2Hg==", "dev": true, "dependencies": { "@microsoft/api-extractor": "7.47.4", @@ -8490,32 +8374,6 @@ "typescript": ">=5.0.0" } }, - "node_modules/vue-tsc/node_modules/@volar/language-core": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", - "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", - "dev": true, - "dependencies": { - "@volar/source-map": "2.4.0-alpha.18" - } - }, - "node_modules/vue-tsc/node_modules/@volar/source-map": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", - "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==", - "dev": true - }, - "node_modules/vue-tsc/node_modules/@volar/typescript": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", - "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", - "dev": true, - "dependencies": { - "@volar/language-core": "2.4.0-alpha.18", - "path-browserify": "^1.0.1", - "vscode-uri": "^3.0.8" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 1816fe9..060392a 100644 --- a/package.json +++ b/package.json @@ -63,11 +63,12 @@ "build:bundle": "vite build --config vite.config.bundle.ts", "build:cjs": "vite build --config vite.config.cjs.ts && echo '{ \"type\": \"commonjs\" }' > lib/cjs/package.json", "build:esm": "vite build --config vite.config.ts && echo '{ \"type\": \"module\" }' > lib/esm/package.json", - "docs": "npm run docs:pdf && npm run docs:svg && npm run docs:shared && npm run docs:bundle", + "docs": "npm run docs:pdf && npm run docs:svg && npm run docs:utils && npm run docs:errors && npm run docs:bundle", "docs:bundle": "unwritten src/bundle/index.ts -t tsconfig.docs.json -o docs/bundle/ ", + "docs:errors": "unwritten src/shared/errors.ts -t tsconfig.docs.json -o docs/errors/", "docs:pdf": "unwritten src/pdf/index.ts src/shared/types.ts -t tsconfig.docs.json -o docs/pdf/", - "docs:shared": "unwritten src/shared/utils.ts -t tsconfig.docs.json -o docs/utils/", "docs:svg": "unwritten src/svg/index.ts src/shared/types.ts -t tsconfig.docs.json -o docs/svg/", + "docs:utils": "unwritten src/shared/utils.ts -t tsconfig.docs.json -o docs/utils/", "eslint": "eslint .", "eslint:ci": "npm run eslint -- --max-warnings 0", "eslint:fix": "npm run eslint -- --fix", @@ -79,7 +80,7 @@ "markdownlint:fix": "npm run markdownlint -- --fix", "postrelease:alpha": "npm run postrelease", "postrelease:beta": "npm run postrelease", - "postrelease:latest": "eslint --fix package.json && markdownlint-cli2-fix 'CHANGELOG.md'", + "postrelease:latest": "eslint --fix package.json && markdownlint-cli2 --fix 'CHANGELOG.md'", "prebuild": "npm run typecheck && npm run lint && npm run spellcheck", "prerelease:alpha": "npm run test -- --run && npm run build", "prerelease:beta": "npm run test -- --run && npm run build", @@ -121,20 +122,20 @@ "devDependencies": { "@cspell/dict-fr-fr": "^2.2.2", "@cspell/dict-it-it": "^3.1.0", - "@schoero/configs": "^1.0.33", - "@types/node": "^22.2.0", + "@schoero/configs": "^1.1.1", + "@types/node": "^22.5.2", "@types/pdfkit": "^0.13.4", "@types/svg-parser": "^2.0.6", "cross-env": "^7.0.3", - "cspell": "^8.13.2", - "eslint": "^9.9.0", + "cspell": "^8.14.2", + "eslint": "^9.9.1", "glob": "^11.0.0", "markdownlint": "^0.34.0", "pdfkit": "^0.15.0", "typescript": "^5.5.4", - "unwritten": "^0.2.12", - "vite": "^5.4.0", - "vite-plugin-dts": "^4.0.2", + "unwritten": "^0.2.13", + "vite": "^5.4.2", + "vite-plugin-dts": "^4.1.0", "vite-plugin-no-bundle": "^4.0.0", "vitest": "^2.0.5" }, diff --git a/src/bundle/index.ts b/src/bundle/index.ts index f4e2a54..f8b92ce 100644 --- a/src/bundle/index.ts +++ b/src/bundle/index.ts @@ -1,4 +1,4 @@ -/* eslint-disable eslint-plugin-simple-import-sort/exports */ +/* eslint-disable eslint-plugin-perfectionist/sort-exports */ export * as pdf from "swissqrbill:pdf"; export * as svg from "swissqrbill:svg"; export * as types from "swissqrbill:types"; diff --git a/src/pdf/table.ts b/src/pdf/table.ts index ff41266..9ac1caf 100644 --- a/src/pdf/table.ts +++ b/src/pdf/table.ts @@ -26,7 +26,6 @@ export interface PDFTable { /** Horizontal start position of the table. */ } - export interface PDFRow { /** Table columns. */ columns: PDFColumn[]; diff --git a/src/shared/errors.test.ts b/src/shared/errors.test.ts new file mode 100644 index 0000000..8715bcc --- /dev/null +++ b/src/shared/errors.test.ts @@ -0,0 +1,15 @@ +import { describe, expect, it } from "vitest"; + +import { getErrorCodeByMessage, ValidationErrors } from "swissqrbill:errors"; +import { } from "swissqrbill:shared:cleaner.js"; + + +describe("getErrorCodeByMessage", () => { + + it("should return the correct error code", () => { + const key = "ACCOUNT_IS_QR_IBAN_BUT_REFERENCE_IS_MISSING"; + expect(getErrorCodeByMessage(ValidationErrors[key])).toBe(key); + }); + + +}); diff --git a/src/shared/errors.ts b/src/shared/errors.ts index 5cb8900..e763fa9 100644 --- a/src/shared/errors.ts +++ b/src/shared/errors.ts @@ -1,15 +1,33 @@ +/** A {@link ValidationError} is thrown when the data provided to swissqrbill is invalid. */ export class ValidationError extends Error { - constructor(message: string, params?: { [name: string]: string; }) { + + /** A stable error code that can be used to identify the error programmatically. */ + public code: keyof typeof ValidationErrors; + + /** @internal */ + constructor(message: ValidationErrors, params?: { [name: string]: string; }) { const messageWithParams = params ? resolveMessageParams(message, params) : message; super(messageWithParams); + this.name = "ValidationError"; + this.code = getErrorCodeByMessage(message); + } } +/** @internal */ +export function getErrorCodeByMessage(message: string): keyof typeof ValidationErrors { + const errorCodes = Object.keys(ValidationErrors); + const errorCode = errorCodes.find(key => ValidationErrors[key] === message); + + return errorCode as keyof typeof ValidationErrors; +} + +/** @internal */ export function resolveMessageParams(message: string, params: { [name: string]: string; }): string { return Object.entries(params).reduce((message, [key, value]) => { return message.replace(`{${key}}`, value); diff --git a/src/svg/character-width.ts b/src/svg/character-width.ts index 6b07e58..4b7907f 100644 --- a/src/svg/character-width.ts +++ b/src/svg/character-width.ts @@ -384,7 +384,7 @@ export const arial10pt = { 99: 6.5 }; -export function calculateTextWidth(text: string, size: "8pt" | "10pt") { +export function calculateTextWidth(text: string, size: "10pt" | "8pt") { let width = 0; if(size === "8pt"){ for(let c = 0; c < text.length; c++){ diff --git a/src/svg/swissqrbill.ts b/src/svg/swissqrbill.ts index 3d12d4f..17e33c0 100644 --- a/src/svg/swissqrbill.ts +++ b/src/svg/swissqrbill.ts @@ -575,7 +575,7 @@ export class SwissQRBill { } - private _getLineCountOfText(text: string | undefined, lengthInPixel: number, size: "8pt" | "10pt") { + private _getLineCountOfText(text: string | undefined, lengthInPixel: number, size: "10pt" | "8pt") { if(text === undefined){ return 0; } else { @@ -590,7 +590,7 @@ export class SwissQRBill { } - private _fitTextToWidth(text: string, lengthInPixel: number, maxLines: number, size: "8pt" | "10pt"): string[] { + private _fitTextToWidth(text: string, lengthInPixel: number, maxLines: number, size: "10pt" | "8pt"): string[] { const remainder = text.split(/([ |-])/g); let lines: string[] = []; @@ -654,7 +654,7 @@ export class SwissQRBill { } - private _ellipsis(text: string, lengthInPixel: number, size: "8pt" | "10pt"): string { + private _ellipsis(text: string, lengthInPixel: number, size: "10pt" | "8pt"): string { let result = ""; diff --git a/tests/integration/validation-error.test.ts b/tests/integration/validation-error.test.ts new file mode 100644 index 0000000..f55b19d --- /dev/null +++ b/tests/integration/validation-error.test.ts @@ -0,0 +1,29 @@ +import { describe, expect, it } from "vitest"; + +import { ValidationError, ValidationErrors } from "swissqrbill:errors"; +import { cleanData } from "swissqrbill:shared:cleaner"; +import { validateData } from "swissqrbill:shared:validator"; +import { missingCreditor } from "swissqrbill:tests:data/invalid-data"; +import { getValidationError } from "swissqrbill:tests:utils/errors"; + + +describe("errors", () => { + + it("should be of instance 'Error' and 'ValidationError'", async () => { + expect(getValidationError(() => validateData(cleanData(missingCreditor)))).toBeInstanceOf(Error); + expect(getValidationError(() => validateData(cleanData(missingCreditor)))).toBeInstanceOf(ValidationError); + }); + + it("should have an error code", async () => { + const code = "CREDITOR_IS_UNDEFINED"; + expect(getValidationError(() => validateData(cleanData(missingCreditor)))?.code).toBeDefined(); + expect(getValidationError(() => validateData(cleanData(missingCreditor)))?.code).toBe(code); + }); + + it("should have an error message", async () => { + const code = "CREDITOR_IS_UNDEFINED"; + expect(getValidationError(() => validateData(cleanData(missingCreditor)))?.message).toBeDefined(); + expect(getValidationError(() => validateData(cleanData(missingCreditor)))?.message).toBe(ValidationErrors[code]); + }); + +}); diff --git a/tests/utils/errors.test.ts b/tests/utils/errors.test.ts new file mode 100644 index 0000000..31afda6 --- /dev/null +++ b/tests/utils/errors.test.ts @@ -0,0 +1,15 @@ +import { describe, expect, it } from "vitest"; + +import { ValidationError, ValidationErrors } from "swissqrbill:errors"; + +import { getValidationError } from "./errors"; + + +describe("error", () => { + + it("should return the caught error", () => { + expect(getValidationError(() => { throw new ValidationError(ValidationErrors.ACCOUNT_LENGTH_IS_INVALID); })).toBeInstanceOf(Error); + expect(getValidationError(() => { throw new ValidationError(ValidationErrors.ACCOUNT_LENGTH_IS_INVALID); })?.message).toBe(ValidationErrors.ACCOUNT_LENGTH_IS_INVALID); + }); + +}); diff --git a/tests/utils/errors.ts b/tests/utils/errors.ts new file mode 100644 index 0000000..e669f49 --- /dev/null +++ b/tests/utils/errors.ts @@ -0,0 +1,12 @@ +import { ValidationError } from "swissqrbill:errors"; + + +export function getValidationError(fn: (...params: unknown[]) => unknown): ValidationError | undefined { + try { + fn(); + } catch (error){ + if(error instanceof ValidationError){ + return error; + } + } +} diff --git a/vite.config.cjs.ts b/vite.config.cjs.ts index 47c4947..b812a64 100644 --- a/vite.config.cjs.ts +++ b/vite.config.cjs.ts @@ -1,9 +1,8 @@ +import { config, defineConfig } from "@schoero/configs/vite"; import { sync } from "glob"; import dts from "vite-plugin-dts"; import noBundlePlugin from "vite-plugin-no-bundle"; -import { config, defineConfig } from "@schoero/configs/vite"; - import type { UserConfig } from "vite"; diff --git a/vite.config.ts b/vite.config.ts index af781a1..2e0da63 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,9 +1,8 @@ +import { config, defineConfig } from "@schoero/configs/vite"; import { sync } from "glob"; import dts from "vite-plugin-dts"; import noBundlePlugin from "vite-plugin-no-bundle"; -import { config, defineConfig } from "@schoero/configs/vite"; - import type { UserConfig } from "vite";