@yunarch/config-web 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -299,7 +299,7 @@ Learn more from [Typescript docs here](https://www.typescriptlang.org/tsconfig/#
299
299
  This package also includes a [`ts-reset`](https://www.totaltypescript.com/ts-reset) configuration to enhance TypeScript's built-in types. To use it, create a `reset.d.ts` file in your project with the following content:
300
300
 
301
301
  ```ts
302
- import '@yunarch/config-web/reset.d.ts';
302
+ import '@yunarch/config-web/ts-reset.d.ts';
303
303
  ```
304
304
 
305
305
  Then, include this file in your `tsconfig.json`, for example:
@@ -318,12 +318,28 @@ Then, include this file in your `tsconfig.json`, for example:
318
318
 
319
319
  ### Utilities
320
320
 
321
- As an enhacement of `ts-reset` this package also includes utilities designed to help you write stricter and more maintainable code. TypeScript uses structural typing, which means it doesn’t always prevent objects from having excess properties. Unlike `ts-reset`, which modifies built-in types globally, these utilities are opt-in. Giving you control over when and where to enforce stricter typing.
321
+ As an enhancement to the `ts-reset`, this package provides type-level utilities to help you write stricter, more maintainable TypeScript code.
322
322
 
323
- To use them, simply import the desired utility from:
323
+ TypeScript uses structural typing, which means it doesn't always prevent objects from having excess properties. While `ts-reset` modifies built-in types globally, these utilities are **opt-in**, allowing you to apply stricter typing **only where you need it**.
324
324
 
325
- ```tsx
326
- import { typedObjectEntries, typedObjectFromEntries, ... } from "@yunarch/config-web/ts-utils";
325
+ > [!NOTE]
326
+ > This package only provides **types**, as the package is intended to be used as a `devDependency` **only**. So you need to create runtime type-safe wrappers. **Each utility type includes usage guidance in its definition comments**.
327
+
328
+ For example, using the exposed utility types, you can define strictly typed versions of `Object.entries` and `Object.fromEntries`, ensuring safer and more predictable object manipulation:
329
+
330
+ ```ts
331
+ import type {
332
+ ObjectEntries,
333
+ ObjectFromEntries,
334
+ } from '@yunarch/config-web/ts-utils.d.ts';
335
+
336
+ // Strictly typed version of `Object.entries`
337
+ const typedObjectEntries: ObjectEntries = Object.entries;
338
+ const x1 = typedObjectEntries({ a: 1, b: 2 } as const);
339
+
340
+ // Strictly typed version of `Object.fromEntries`
341
+ const typedObjectFromEntries: ObjectFromEntries = Object.fromEntries;
342
+ const x2 = typedObjectFromEntries([['a', 1]] as const);
327
343
  ```
328
344
 
329
345
  ## 🔧 CLI Tools
@@ -1479,233 +1479,233 @@ interface RuleOptions {
1479
1479
  'implicit-arrow-linebreak'?: Linter.RuleEntry<ImplicitArrowLinebreak>
1480
1480
  /**
1481
1481
  * Enforce or ban the use of inline type-only markers for named imports.
1482
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/consistent-type-specifier-style.md
1482
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/consistent-type-specifier-style.md
1483
1483
  */
1484
1484
  'import/consistent-type-specifier-style'?: Linter.RuleEntry<ImportConsistentTypeSpecifierStyle>
1485
1485
  /**
1486
1486
  * Ensure a default export is present, given a default import.
1487
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/default.md
1487
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/default.md
1488
1488
  */
1489
1489
  'import/default'?: Linter.RuleEntry<[]>
1490
1490
  /**
1491
1491
  * Enforce a leading comment with the webpackChunkName for dynamic imports.
1492
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/dynamic-import-chunkname.md
1492
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/dynamic-import-chunkname.md
1493
1493
  */
1494
1494
  'import/dynamic-import-chunkname'?: Linter.RuleEntry<ImportDynamicImportChunkname>
1495
1495
  /**
1496
1496
  * Forbid any invalid exports, i.e. re-export of the same name.
1497
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/export.md
1497
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/export.md
1498
1498
  */
1499
1499
  'import/export'?: Linter.RuleEntry<[]>
1500
1500
  /**
1501
1501
  * Ensure all exports appear after other statements.
1502
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/exports-last.md
1502
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/exports-last.md
1503
1503
  */
1504
1504
  'import/exports-last'?: Linter.RuleEntry<[]>
1505
1505
  /**
1506
1506
  * Ensure consistent use of file extension within the import path.
1507
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/extensions.md
1507
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/extensions.md
1508
1508
  */
1509
1509
  'import/extensions'?: Linter.RuleEntry<ImportExtensions>
1510
1510
  /**
1511
1511
  * Ensure all imports appear before other statements.
1512
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/first.md
1512
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/first.md
1513
1513
  */
1514
1514
  'import/first'?: Linter.RuleEntry<ImportFirst>
1515
1515
  /**
1516
1516
  * Prefer named exports to be grouped together in a single export declaration.
1517
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/group-exports.md
1517
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/group-exports.md
1518
1518
  */
1519
1519
  'import/group-exports'?: Linter.RuleEntry<[]>
1520
1520
  /**
1521
1521
  * Replaced by `import-x/first`.
1522
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/imports-first.md
1522
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/imports-first.md
1523
1523
  * @deprecated
1524
1524
  */
1525
1525
  'import/imports-first'?: Linter.RuleEntry<ImportImportsFirst>
1526
1526
  /**
1527
1527
  * Enforce the maximum number of dependencies a module can have.
1528
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/max-dependencies.md
1528
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/max-dependencies.md
1529
1529
  */
1530
1530
  'import/max-dependencies'?: Linter.RuleEntry<ImportMaxDependencies>
1531
1531
  /**
1532
1532
  * Ensure named imports correspond to a named export in the remote file.
1533
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/named.md
1533
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/named.md
1534
1534
  */
1535
1535
  'import/named'?: Linter.RuleEntry<ImportNamed>
1536
1536
  /**
1537
1537
  * Ensure imported namespaces contain dereferenced properties as they are dereferenced.
1538
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/namespace.md
1538
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/namespace.md
1539
1539
  */
1540
1540
  'import/namespace'?: Linter.RuleEntry<ImportNamespace>
1541
1541
  /**
1542
1542
  * Enforce a newline after import statements.
1543
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/newline-after-import.md
1543
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/newline-after-import.md
1544
1544
  */
1545
1545
  'import/newline-after-import'?: Linter.RuleEntry<ImportNewlineAfterImport>
1546
1546
  /**
1547
1547
  * Forbid import of modules using absolute paths.
1548
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-absolute-path.md
1548
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-absolute-path.md
1549
1549
  */
1550
1550
  'import/no-absolute-path'?: Linter.RuleEntry<ImportNoAbsolutePath>
1551
1551
  /**
1552
1552
  * Forbid AMD `require` and `define` calls.
1553
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-amd.md
1553
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-amd.md
1554
1554
  */
1555
1555
  'import/no-amd'?: Linter.RuleEntry<[]>
1556
1556
  /**
1557
1557
  * Forbid anonymous values as default exports.
1558
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-anonymous-default-export.md
1558
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-anonymous-default-export.md
1559
1559
  */
1560
1560
  'import/no-anonymous-default-export'?: Linter.RuleEntry<ImportNoAnonymousDefaultExport>
1561
1561
  /**
1562
1562
  * Forbid CommonJS `require` calls and `module.exports` or `exports.*`.
1563
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-commonjs.md
1563
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-commonjs.md
1564
1564
  */
1565
1565
  'import/no-commonjs'?: Linter.RuleEntry<ImportNoCommonjs>
1566
1566
  /**
1567
1567
  * Forbid a module from importing a module with a dependency path back to itself.
1568
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-cycle.md
1568
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-cycle.md
1569
1569
  */
1570
1570
  'import/no-cycle'?: Linter.RuleEntry<ImportNoCycle>
1571
1571
  /**
1572
1572
  * Forbid default exports.
1573
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-default-export.md
1573
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-default-export.md
1574
1574
  */
1575
1575
  'import/no-default-export'?: Linter.RuleEntry<[]>
1576
1576
  /**
1577
1577
  * Forbid imported names marked with `@deprecated` documentation tag.
1578
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-deprecated.md
1578
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-deprecated.md
1579
1579
  */
1580
1580
  'import/no-deprecated'?: Linter.RuleEntry<[]>
1581
1581
  /**
1582
1582
  * Forbid repeated import of the same module in multiple places.
1583
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-duplicates.md
1583
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-duplicates.md
1584
1584
  */
1585
1585
  'import/no-duplicates'?: Linter.RuleEntry<ImportNoDuplicates>
1586
1586
  /**
1587
1587
  * Forbid `require()` calls with expressions.
1588
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-dynamic-require.md
1588
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-dynamic-require.md
1589
1589
  */
1590
1590
  'import/no-dynamic-require'?: Linter.RuleEntry<ImportNoDynamicRequire>
1591
1591
  /**
1592
1592
  * Forbid empty named import blocks.
1593
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-empty-named-blocks.md
1593
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-empty-named-blocks.md
1594
1594
  */
1595
1595
  'import/no-empty-named-blocks'?: Linter.RuleEntry<[]>
1596
1596
  /**
1597
1597
  * Forbid the use of extraneous packages.
1598
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-extraneous-dependencies.md
1598
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-extraneous-dependencies.md
1599
1599
  */
1600
1600
  'import/no-extraneous-dependencies'?: Linter.RuleEntry<ImportNoExtraneousDependencies>
1601
1601
  /**
1602
1602
  * Forbid import statements with CommonJS module.exports.
1603
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-import-module-exports.md
1603
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-import-module-exports.md
1604
1604
  */
1605
1605
  'import/no-import-module-exports'?: Linter.RuleEntry<ImportNoImportModuleExports>
1606
1606
  /**
1607
1607
  * Forbid importing the submodules of other modules.
1608
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-internal-modules.md
1608
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-internal-modules.md
1609
1609
  */
1610
1610
  'import/no-internal-modules'?: Linter.RuleEntry<ImportNoInternalModules>
1611
1611
  /**
1612
1612
  * Forbid the use of mutable exports with `var` or `let`.
1613
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-mutable-exports.md
1613
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-mutable-exports.md
1614
1614
  */
1615
1615
  'import/no-mutable-exports'?: Linter.RuleEntry<[]>
1616
1616
  /**
1617
1617
  * Forbid use of exported name as identifier of default export.
1618
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-named-as-default.md
1618
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-named-as-default.md
1619
1619
  */
1620
1620
  'import/no-named-as-default'?: Linter.RuleEntry<[]>
1621
1621
  /**
1622
1622
  * Forbid use of exported name as property of default export.
1623
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-named-as-default-member.md
1623
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-named-as-default-member.md
1624
1624
  */
1625
1625
  'import/no-named-as-default-member'?: Linter.RuleEntry<[]>
1626
1626
  /**
1627
1627
  * Forbid named default exports.
1628
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-named-default.md
1628
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-named-default.md
1629
1629
  */
1630
1630
  'import/no-named-default'?: Linter.RuleEntry<[]>
1631
1631
  /**
1632
1632
  * Forbid named exports.
1633
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-named-export.md
1633
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-named-export.md
1634
1634
  */
1635
1635
  'import/no-named-export'?: Linter.RuleEntry<[]>
1636
1636
  /**
1637
1637
  * Forbid namespace (a.k.a. "wildcard" `*`) imports.
1638
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-namespace.md
1638
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-namespace.md
1639
1639
  */
1640
1640
  'import/no-namespace'?: Linter.RuleEntry<ImportNoNamespace>
1641
1641
  /**
1642
1642
  * Forbid Node.js builtin modules.
1643
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-nodejs-modules.md
1643
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-nodejs-modules.md
1644
1644
  */
1645
1645
  'import/no-nodejs-modules'?: Linter.RuleEntry<ImportNoNodejsModules>
1646
1646
  /**
1647
1647
  * Forbid importing packages through relative paths.
1648
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-relative-packages.md
1648
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-relative-packages.md
1649
1649
  */
1650
1650
  'import/no-relative-packages'?: Linter.RuleEntry<ImportNoRelativePackages>
1651
1651
  /**
1652
1652
  * Forbid importing modules from parent directories.
1653
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-relative-parent-imports.md
1653
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-relative-parent-imports.md
1654
1654
  */
1655
1655
  'import/no-relative-parent-imports'?: Linter.RuleEntry<ImportNoRelativeParentImports>
1656
1656
  /**
1657
1657
  * Forbid importing a default export by a different name.
1658
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-rename-default.md
1658
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-rename-default.md
1659
1659
  */
1660
1660
  'import/no-rename-default'?: Linter.RuleEntry<ImportNoRenameDefault>
1661
1661
  /**
1662
1662
  * Enforce which files can be imported in a given folder.
1663
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-restricted-paths.md
1663
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-restricted-paths.md
1664
1664
  */
1665
1665
  'import/no-restricted-paths'?: Linter.RuleEntry<ImportNoRestrictedPaths>
1666
1666
  /**
1667
1667
  * Forbid a module from importing itself.
1668
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-self-import.md
1668
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-self-import.md
1669
1669
  */
1670
1670
  'import/no-self-import'?: Linter.RuleEntry<[]>
1671
1671
  /**
1672
1672
  * Forbid unassigned imports.
1673
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-unassigned-import.md
1673
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-unassigned-import.md
1674
1674
  */
1675
1675
  'import/no-unassigned-import'?: Linter.RuleEntry<ImportNoUnassignedImport>
1676
1676
  /**
1677
1677
  * Ensure imports point to a file/module that can be resolved.
1678
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-unresolved.md
1678
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-unresolved.md
1679
1679
  */
1680
1680
  'import/no-unresolved'?: Linter.RuleEntry<ImportNoUnresolved>
1681
1681
  /**
1682
1682
  * Forbid modules without exports, or exports without matching import in another module.
1683
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-unused-modules.md
1683
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-unused-modules.md
1684
1684
  */
1685
1685
  'import/no-unused-modules'?: Linter.RuleEntry<ImportNoUnusedModules>
1686
1686
  /**
1687
1687
  * Forbid unnecessary path segments in import and require statements.
1688
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-useless-path-segments.md
1688
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-useless-path-segments.md
1689
1689
  */
1690
1690
  'import/no-useless-path-segments'?: Linter.RuleEntry<ImportNoUselessPathSegments>
1691
1691
  /**
1692
1692
  * Forbid webpack loader syntax in imports.
1693
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/no-webpack-loader-syntax.md
1693
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/no-webpack-loader-syntax.md
1694
1694
  */
1695
1695
  'import/no-webpack-loader-syntax'?: Linter.RuleEntry<[]>
1696
1696
  /**
1697
1697
  * Enforce a convention in module import order.
1698
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/order.md
1698
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/order.md
1699
1699
  */
1700
1700
  'import/order'?: Linter.RuleEntry<ImportOrder>
1701
1701
  /**
1702
1702
  * Prefer a default export if module exports a single name or multiple names.
1703
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/prefer-default-export.md
1703
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/prefer-default-export.md
1704
1704
  */
1705
1705
  'import/prefer-default-export'?: Linter.RuleEntry<ImportPreferDefaultExport>
1706
1706
  /**
1707
1707
  * Forbid potentially ambiguous parse goal (`script` vs. `module`).
1708
- * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.1/docs/rules/unambiguous.md
1708
+ * @see https://github.com/un-ts/eslint-plugin-import-x/blob/v4.15.2/docs/rules/unambiguous.md
1709
1709
  */
1710
1710
  'import/unambiguous'?: Linter.RuleEntry<[]>
1711
1711
  /**
@@ -4050,6 +4050,11 @@ interface RuleOptions {
4050
4050
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-test-it.md
4051
4051
  */
4052
4052
  'vitest/consistent-test-it'?: Linter.RuleEntry<VitestConsistentTestIt>
4053
+ /**
4054
+ * enforce using vitest or vi but not both
4055
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/consistent-vitest-vi.md
4056
+ */
4057
+ 'vitest/consistent-vitest-vi'?: Linter.RuleEntry<VitestConsistentVitestVi>
4053
4058
  /**
4054
4059
  * enforce having expectation in test body
4055
4060
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
@@ -4126,6 +4131,11 @@ interface RuleOptions {
4126
4131
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-import-node-test.md
4127
4132
  */
4128
4133
  'vitest/no-import-node-test'?: Linter.RuleEntry<[]>
4134
+ /**
4135
+ * disallow importing Vitest globals
4136
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-importing-vitest-globals.md
4137
+ */
4138
+ 'vitest/no-importing-vitest-globals'?: Linter.RuleEntry<[]>
4129
4139
  /**
4130
4140
  * disallow string interpolation in snapshots
4131
4141
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/no-interpolation-in-snapshots.md
@@ -4251,6 +4261,11 @@ interface RuleOptions {
4251
4261
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md
4252
4262
  */
4253
4263
  'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>
4264
+ /**
4265
+ * enforce importing Vitest globals
4266
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md
4267
+ */
4268
+ 'vitest/prefer-importing-vitest-globals'?: Linter.RuleEntry<[]>
4254
4269
  /**
4255
4270
  * enforce lowercase titles
4256
4271
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-lowercase-title.md
@@ -7623,8 +7638,7 @@ type PerfectionistSortArrayIncludes = {
7623
7638
  groupKind?: ("mixed" | "literals-first" | "spreads-first")
7624
7639
 
7625
7640
  customGroups?: ({
7626
-
7627
- newlinesInside?: ("always" | "never")
7641
+ newlinesInside?: (("always" | "never") | number)
7628
7642
 
7629
7643
  fallbackSort?: {
7630
7644
 
@@ -7655,8 +7669,7 @@ type PerfectionistSortArrayIncludes = {
7655
7669
  } | string))
7656
7670
  }[]
7657
7671
  } | {
7658
-
7659
- newlinesInside?: ("always" | "never")
7672
+ newlinesInside?: (("always" | "never") | number)
7660
7673
 
7661
7674
  fallbackSort?: {
7662
7675
 
@@ -7739,12 +7752,10 @@ type PerfectionistSortArrayIncludes = {
7739
7752
  })
7740
7753
 
7741
7754
  partitionByNewLine?: boolean
7742
-
7743
- newlinesBetween?: ("ignore" | "always" | "never")
7755
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
7744
7756
 
7745
7757
  groups?: (string | string[] | {
7746
-
7747
- newlinesBetween?: ("ignore" | "always" | "never")
7758
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
7748
7759
 
7749
7760
  commentAbove?: string
7750
7761
  })[]
@@ -7772,8 +7783,7 @@ type PerfectionistSortClasses = []|[{
7772
7783
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
7773
7784
 
7774
7785
  customGroups?: ({
7775
-
7776
- newlinesInside?: ("always" | "never")
7786
+ newlinesInside?: (("always" | "never") | number)
7777
7787
 
7778
7788
  fallbackSort?: {
7779
7789
 
@@ -7830,8 +7840,7 @@ type PerfectionistSortClasses = []|[{
7830
7840
  } | string))
7831
7841
  }[]
7832
7842
  } | {
7833
-
7834
- newlinesInside?: ("always" | "never")
7843
+ newlinesInside?: (("always" | "never") | number)
7835
7844
 
7836
7845
  fallbackSort?: {
7837
7846
 
@@ -7937,12 +7946,10 @@ type PerfectionistSortClasses = []|[{
7937
7946
  })
7938
7947
 
7939
7948
  partitionByNewLine?: boolean
7940
-
7941
- newlinesBetween?: ("ignore" | "always" | "never")
7949
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
7942
7950
 
7943
7951
  groups?: (string | string[] | {
7944
-
7945
- newlinesBetween?: ("ignore" | "always" | "never")
7952
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
7946
7953
 
7947
7954
  commentAbove?: string
7948
7955
  })[]
@@ -8021,8 +8028,7 @@ type PerfectionistSortDecorators = []|[{
8021
8028
  }
8022
8029
 
8023
8030
  groups?: (string | string[] | {
8024
-
8025
- newlinesBetween?: ("ignore" | "always" | "never")
8031
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8026
8032
 
8027
8033
  commentAbove?: string
8028
8034
  })[]
@@ -8051,8 +8057,7 @@ type PerfectionistSortEnums = []|[{
8051
8057
  customGroups?: ({
8052
8058
  [k: string]: (string | string[]) | undefined
8053
8059
  } | ({
8054
-
8055
- newlinesInside?: ("always" | "never")
8060
+ newlinesInside?: (("always" | "never") | number)
8056
8061
 
8057
8062
  fallbackSort?: {
8058
8063
 
@@ -8093,8 +8098,7 @@ type PerfectionistSortEnums = []|[{
8093
8098
  } | string))
8094
8099
  }[]
8095
8100
  } | {
8096
-
8097
- newlinesInside?: ("always" | "never")
8101
+ newlinesInside?: (("always" | "never") | number)
8098
8102
 
8099
8103
  fallbackSort?: {
8100
8104
 
@@ -8176,12 +8180,10 @@ type PerfectionistSortEnums = []|[{
8176
8180
  })
8177
8181
 
8178
8182
  partitionByNewLine?: boolean
8179
-
8180
- newlinesBetween?: ("ignore" | "always" | "never")
8183
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8181
8184
 
8182
8185
  groups?: (string | string[] | {
8183
-
8184
- newlinesBetween?: ("ignore" | "always" | "never")
8186
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8185
8187
 
8186
8188
  commentAbove?: string
8187
8189
  })[]
@@ -8211,8 +8213,7 @@ type PerfectionistSortExports = {
8211
8213
  groupKind?: ("mixed" | "values-first" | "types-first")
8212
8214
 
8213
8215
  customGroups?: ({
8214
-
8215
- newlinesInside?: ("always" | "never")
8216
+ newlinesInside?: (("always" | "never") | number)
8216
8217
 
8217
8218
  fallbackSort?: {
8218
8219
 
@@ -8245,8 +8246,7 @@ type PerfectionistSortExports = {
8245
8246
  } | string))
8246
8247
  }[]
8247
8248
  } | {
8248
-
8249
- newlinesInside?: ("always" | "never")
8249
+ newlinesInside?: (("always" | "never") | number)
8250
8250
 
8251
8251
  fallbackSort?: {
8252
8252
 
@@ -8316,12 +8316,10 @@ type PerfectionistSortExports = {
8316
8316
  })
8317
8317
 
8318
8318
  partitionByNewLine?: boolean
8319
-
8320
- newlinesBetween?: ("ignore" | "always" | "never")
8319
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8321
8320
 
8322
8321
  groups?: (string | string[] | {
8323
-
8324
- newlinesBetween?: ("ignore" | "always" | "never")
8322
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8325
8323
 
8326
8324
  commentAbove?: string
8327
8325
  })[]
@@ -8353,8 +8351,7 @@ type PerfectionistSortHeritageClauses = []|[{
8353
8351
  }
8354
8352
 
8355
8353
  groups?: (string | string[] | {
8356
-
8357
- newlinesBetween?: ("ignore" | "always" | "never")
8354
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8358
8355
 
8359
8356
  commentAbove?: string
8360
8357
  })[]
@@ -8390,8 +8387,7 @@ type PerfectionistSortImports = {
8390
8387
  [k: string]: (string | string[]) | undefined
8391
8388
  }
8392
8389
  } | ({
8393
-
8394
- newlinesInside?: ("always" | "never")
8390
+ newlinesInside?: (("always" | "never") | number)
8395
8391
 
8396
8392
  fallbackSort?: {
8397
8393
 
@@ -8436,8 +8432,7 @@ type PerfectionistSortImports = {
8436
8432
  } | string))
8437
8433
  }[]
8438
8434
  } | {
8439
-
8440
- newlinesInside?: ("always" | "never")
8435
+ newlinesInside?: (("always" | "never") | number)
8441
8436
 
8442
8437
  fallbackSort?: {
8443
8438
 
@@ -8533,8 +8528,7 @@ type PerfectionistSortImports = {
8533
8528
  })
8534
8529
 
8535
8530
  partitionByNewLine?: boolean
8536
-
8537
- newlinesBetween?: ("ignore" | "always" | "never")
8531
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8538
8532
 
8539
8533
  internalPattern?: (({
8540
8534
 
@@ -8549,8 +8543,7 @@ type PerfectionistSortImports = {
8549
8543
  } | string))
8550
8544
 
8551
8545
  groups?: (string | string[] | {
8552
-
8553
- newlinesBetween?: ("ignore" | "always" | "never")
8546
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8554
8547
 
8555
8548
  commentAbove?: string
8556
8549
  })[]
@@ -8580,8 +8573,7 @@ type PerfectionistSortInterfaces = {
8580
8573
  customGroups?: ({
8581
8574
  [k: string]: (string | string[]) | undefined
8582
8575
  } | ({
8583
-
8584
- newlinesInside?: ("always" | "never")
8576
+ newlinesInside?: (("always" | "never") | number)
8585
8577
 
8586
8578
  fallbackSort?: {
8587
8579
 
@@ -8628,8 +8620,7 @@ type PerfectionistSortInterfaces = {
8628
8620
  sortBy?: ("name" | "value")
8629
8621
  }[]
8630
8622
  } | {
8631
-
8632
- newlinesInside?: ("always" | "never")
8623
+ newlinesInside?: (("always" | "never") | number)
8633
8624
 
8634
8625
  fallbackSort?: {
8635
8626
 
@@ -8742,8 +8733,7 @@ type PerfectionistSortInterfaces = {
8742
8733
  })
8743
8734
 
8744
8735
  partitionByNewLine?: boolean
8745
-
8746
- newlinesBetween?: ("ignore" | "always" | "never")
8736
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8747
8737
 
8748
8738
  ignorePattern?: (({
8749
8739
 
@@ -8759,8 +8749,7 @@ type PerfectionistSortInterfaces = {
8759
8749
  sortBy?: ("name" | "value")
8760
8750
 
8761
8751
  groups?: (string | string[] | {
8762
-
8763
- newlinesBetween?: ("ignore" | "always" | "never")
8752
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8764
8753
 
8765
8754
  commentAbove?: string
8766
8755
  })[]
@@ -8788,8 +8777,7 @@ type PerfectionistSortIntersectionTypes = {
8788
8777
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
8789
8778
 
8790
8779
  customGroups?: ({
8791
-
8792
- newlinesInside?: ("always" | "never")
8780
+ newlinesInside?: (("always" | "never") | number)
8793
8781
 
8794
8782
  fallbackSort?: {
8795
8783
 
@@ -8820,8 +8808,7 @@ type PerfectionistSortIntersectionTypes = {
8820
8808
  } | string))
8821
8809
  }[]
8822
8810
  } | {
8823
-
8824
- newlinesInside?: ("always" | "never")
8811
+ newlinesInside?: (("always" | "never") | number)
8825
8812
 
8826
8813
  fallbackSort?: {
8827
8814
 
@@ -8889,12 +8876,10 @@ type PerfectionistSortIntersectionTypes = {
8889
8876
  })
8890
8877
 
8891
8878
  partitionByNewLine?: boolean
8892
-
8893
- newlinesBetween?: ("ignore" | "always" | "never")
8879
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8894
8880
 
8895
8881
  groups?: (string | string[] | {
8896
-
8897
- newlinesBetween?: ("ignore" | "always" | "never")
8882
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
8898
8883
 
8899
8884
  commentAbove?: string
8900
8885
  })[]
@@ -8923,8 +8908,7 @@ type PerfectionistSortJsxProps = {
8923
8908
  customGroups?: ({
8924
8909
  [k: string]: (string | string[]) | undefined
8925
8910
  } | ({
8926
-
8927
- newlinesInside?: ("always" | "never")
8911
+ newlinesInside?: (("always" | "never") | number)
8928
8912
 
8929
8913
  fallbackSort?: {
8930
8914
 
@@ -8969,8 +8953,7 @@ type PerfectionistSortJsxProps = {
8969
8953
  } | string))
8970
8954
  }[]
8971
8955
  } | {
8972
-
8973
- newlinesInside?: ("always" | "never")
8956
+ newlinesInside?: (("always" | "never") | number)
8974
8957
 
8975
8958
  fallbackSort?: {
8976
8959
 
@@ -9042,8 +9025,7 @@ type PerfectionistSortJsxProps = {
9042
9025
  }
9043
9026
 
9044
9027
  partitionByNewLine?: boolean
9045
-
9046
- newlinesBetween?: ("ignore" | "always" | "never")
9028
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9047
9029
 
9048
9030
  ignorePattern?: (({
9049
9031
 
@@ -9058,8 +9040,7 @@ type PerfectionistSortJsxProps = {
9058
9040
  } | string))
9059
9041
 
9060
9042
  groups?: (string | string[] | {
9061
-
9062
- newlinesBetween?: ("ignore" | "always" | "never")
9043
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9063
9044
 
9064
9045
  commentAbove?: string
9065
9046
  })[]
@@ -9087,8 +9068,7 @@ type PerfectionistSortMaps = {
9087
9068
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
9088
9069
 
9089
9070
  customGroups?: ({
9090
-
9091
- newlinesInside?: ("always" | "never")
9071
+ newlinesInside?: (("always" | "never") | number)
9092
9072
 
9093
9073
  fallbackSort?: {
9094
9074
 
@@ -9117,8 +9097,7 @@ type PerfectionistSortMaps = {
9117
9097
  } | string))
9118
9098
  }[]
9119
9099
  } | {
9120
-
9121
- newlinesInside?: ("always" | "never")
9100
+ newlinesInside?: (("always" | "never") | number)
9122
9101
 
9123
9102
  fallbackSort?: {
9124
9103
 
@@ -9199,12 +9178,10 @@ type PerfectionistSortMaps = {
9199
9178
  })
9200
9179
 
9201
9180
  partitionByNewLine?: boolean
9202
-
9203
- newlinesBetween?: ("ignore" | "always" | "never")
9181
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9204
9182
 
9205
9183
  groups?: (string | string[] | {
9206
-
9207
- newlinesBetween?: ("ignore" | "always" | "never")
9184
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9208
9185
 
9209
9186
  commentAbove?: string
9210
9187
  })[]
@@ -9232,8 +9209,7 @@ type PerfectionistSortModules = []|[{
9232
9209
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
9233
9210
 
9234
9211
  customGroups?: ({
9235
-
9236
- newlinesInside?: ("always" | "never")
9212
+ newlinesInside?: (("always" | "never") | number)
9237
9213
 
9238
9214
  fallbackSort?: {
9239
9215
 
@@ -9278,8 +9254,7 @@ type PerfectionistSortModules = []|[{
9278
9254
  } | string))
9279
9255
  }[]
9280
9256
  } | {
9281
-
9282
- newlinesInside?: ("always" | "never")
9257
+ newlinesInside?: (("always" | "never") | number)
9283
9258
 
9284
9259
  fallbackSort?: {
9285
9260
 
@@ -9361,12 +9336,10 @@ type PerfectionistSortModules = []|[{
9361
9336
  })
9362
9337
 
9363
9338
  partitionByNewLine?: boolean
9364
-
9365
- newlinesBetween?: ("ignore" | "always" | "never")
9339
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9366
9340
 
9367
9341
  groups?: (string | string[] | {
9368
-
9369
- newlinesBetween?: ("ignore" | "always" | "never")
9342
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9370
9343
 
9371
9344
  commentAbove?: string
9372
9345
  })[]
@@ -9398,8 +9371,7 @@ type PerfectionistSortNamedExports = {
9398
9371
  ignoreAlias?: boolean
9399
9372
 
9400
9373
  customGroups?: ({
9401
-
9402
- newlinesInside?: ("always" | "never")
9374
+ newlinesInside?: (("always" | "never") | number)
9403
9375
 
9404
9376
  fallbackSort?: {
9405
9377
 
@@ -9432,8 +9404,7 @@ type PerfectionistSortNamedExports = {
9432
9404
  } | string))
9433
9405
  }[]
9434
9406
  } | {
9435
-
9436
- newlinesInside?: ("always" | "never")
9407
+ newlinesInside?: (("always" | "never") | number)
9437
9408
 
9438
9409
  fallbackSort?: {
9439
9410
 
@@ -9503,12 +9474,10 @@ type PerfectionistSortNamedExports = {
9503
9474
  })
9504
9475
 
9505
9476
  partitionByNewLine?: boolean
9506
-
9507
- newlinesBetween?: ("ignore" | "always" | "never")
9477
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9508
9478
 
9509
9479
  groups?: (string | string[] | {
9510
-
9511
- newlinesBetween?: ("ignore" | "always" | "never")
9480
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9512
9481
 
9513
9482
  commentAbove?: string
9514
9483
  })[]
@@ -9540,8 +9509,7 @@ type PerfectionistSortNamedImports = {
9540
9509
  ignoreAlias?: boolean
9541
9510
 
9542
9511
  customGroups?: ({
9543
-
9544
- newlinesInside?: ("always" | "never")
9512
+ newlinesInside?: (("always" | "never") | number)
9545
9513
 
9546
9514
  fallbackSort?: {
9547
9515
 
@@ -9574,8 +9542,7 @@ type PerfectionistSortNamedImports = {
9574
9542
  } | string))
9575
9543
  }[]
9576
9544
  } | {
9577
-
9578
- newlinesInside?: ("always" | "never")
9545
+ newlinesInside?: (("always" | "never") | number)
9579
9546
 
9580
9547
  fallbackSort?: {
9581
9548
 
@@ -9645,12 +9612,10 @@ type PerfectionistSortNamedImports = {
9645
9612
  })
9646
9613
 
9647
9614
  partitionByNewLine?: boolean
9648
-
9649
- newlinesBetween?: ("ignore" | "always" | "never")
9615
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9650
9616
 
9651
9617
  groups?: (string | string[] | {
9652
-
9653
- newlinesBetween?: ("ignore" | "always" | "never")
9618
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9654
9619
 
9655
9620
  commentAbove?: string
9656
9621
  })[]
@@ -9680,8 +9645,7 @@ type PerfectionistSortObjectTypes = {
9680
9645
  customGroups?: ({
9681
9646
  [k: string]: (string | string[]) | undefined
9682
9647
  } | ({
9683
-
9684
- newlinesInside?: ("always" | "never")
9648
+ newlinesInside?: (("always" | "never") | number)
9685
9649
 
9686
9650
  fallbackSort?: {
9687
9651
 
@@ -9728,8 +9692,7 @@ type PerfectionistSortObjectTypes = {
9728
9692
  sortBy?: ("name" | "value")
9729
9693
  }[]
9730
9694
  } | {
9731
-
9732
- newlinesInside?: ("always" | "never")
9695
+ newlinesInside?: (("always" | "never") | number)
9733
9696
 
9734
9697
  fallbackSort?: {
9735
9698
 
@@ -9842,8 +9805,7 @@ type PerfectionistSortObjectTypes = {
9842
9805
  })
9843
9806
 
9844
9807
  partitionByNewLine?: boolean
9845
-
9846
- newlinesBetween?: ("ignore" | "always" | "never")
9808
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9847
9809
 
9848
9810
  ignorePattern?: (({
9849
9811
 
@@ -9859,8 +9821,7 @@ type PerfectionistSortObjectTypes = {
9859
9821
  sortBy?: ("name" | "value")
9860
9822
 
9861
9823
  groups?: (string | string[] | {
9862
-
9863
- newlinesBetween?: ("ignore" | "always" | "never")
9824
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
9864
9825
 
9865
9826
  commentAbove?: string
9866
9827
  })[]
@@ -9894,8 +9855,7 @@ type PerfectionistSortObjects = {
9894
9855
  customGroups?: ({
9895
9856
  [k: string]: (string | string[]) | undefined
9896
9857
  } | ({
9897
-
9898
- newlinesInside?: ("always" | "never")
9858
+ newlinesInside?: (("always" | "never") | number)
9899
9859
 
9900
9860
  fallbackSort?: {
9901
9861
 
@@ -9940,8 +9900,7 @@ type PerfectionistSortObjects = {
9940
9900
  } | string))
9941
9901
  }[]
9942
9902
  } | {
9943
-
9944
- newlinesInside?: ("always" | "never")
9903
+ newlinesInside?: (("always" | "never") | number)
9945
9904
 
9946
9905
  fallbackSort?: {
9947
9906
 
@@ -10056,8 +10015,7 @@ type PerfectionistSortObjects = {
10056
10015
  })
10057
10016
 
10058
10017
  partitionByNewLine?: boolean
10059
-
10060
- newlinesBetween?: ("ignore" | "always" | "never")
10018
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10061
10019
 
10062
10020
  ignorePattern?: (({
10063
10021
 
@@ -10072,8 +10030,7 @@ type PerfectionistSortObjects = {
10072
10030
  } | string))
10073
10031
 
10074
10032
  groups?: (string | string[] | {
10075
-
10076
- newlinesBetween?: ("ignore" | "always" | "never")
10033
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10077
10034
 
10078
10035
  commentAbove?: string
10079
10036
  })[]
@@ -10103,8 +10060,7 @@ type PerfectionistSortSets = {
10103
10060
  groupKind?: ("mixed" | "literals-first" | "spreads-first")
10104
10061
 
10105
10062
  customGroups?: ({
10106
-
10107
- newlinesInside?: ("always" | "never")
10063
+ newlinesInside?: (("always" | "never") | number)
10108
10064
 
10109
10065
  fallbackSort?: {
10110
10066
 
@@ -10135,8 +10091,7 @@ type PerfectionistSortSets = {
10135
10091
  } | string))
10136
10092
  }[]
10137
10093
  } | {
10138
-
10139
- newlinesInside?: ("always" | "never")
10094
+ newlinesInside?: (("always" | "never") | number)
10140
10095
 
10141
10096
  fallbackSort?: {
10142
10097
 
@@ -10219,12 +10174,10 @@ type PerfectionistSortSets = {
10219
10174
  })
10220
10175
 
10221
10176
  partitionByNewLine?: boolean
10222
-
10223
- newlinesBetween?: ("ignore" | "always" | "never")
10177
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10224
10178
 
10225
10179
  groups?: (string | string[] | {
10226
-
10227
- newlinesBetween?: ("ignore" | "always" | "never")
10180
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10228
10181
 
10229
10182
  commentAbove?: string
10230
10183
  })[]
@@ -10274,8 +10227,7 @@ type PerfectionistSortUnionTypes = {
10274
10227
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
10275
10228
 
10276
10229
  customGroups?: ({
10277
-
10278
- newlinesInside?: ("always" | "never")
10230
+ newlinesInside?: (("always" | "never") | number)
10279
10231
 
10280
10232
  fallbackSort?: {
10281
10233
 
@@ -10306,8 +10258,7 @@ type PerfectionistSortUnionTypes = {
10306
10258
  } | string))
10307
10259
  }[]
10308
10260
  } | {
10309
-
10310
- newlinesInside?: ("always" | "never")
10261
+ newlinesInside?: (("always" | "never") | number)
10311
10262
 
10312
10263
  fallbackSort?: {
10313
10264
 
@@ -10375,12 +10326,10 @@ type PerfectionistSortUnionTypes = {
10375
10326
  })
10376
10327
 
10377
10328
  partitionByNewLine?: boolean
10378
-
10379
- newlinesBetween?: ("ignore" | "always" | "never")
10329
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10380
10330
 
10381
10331
  groups?: (string | string[] | {
10382
-
10383
- newlinesBetween?: ("ignore" | "always" | "never")
10332
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10384
10333
 
10385
10334
  commentAbove?: string
10386
10335
  })[]
@@ -10408,8 +10357,7 @@ type PerfectionistSortVariableDeclarations = []|[{
10408
10357
  type?: ("alphabetical" | "natural" | "line-length" | "custom" | "unsorted")
10409
10358
 
10410
10359
  customGroups?: ({
10411
-
10412
- newlinesInside?: ("always" | "never")
10360
+ newlinesInside?: (("always" | "never") | number)
10413
10361
 
10414
10362
  fallbackSort?: {
10415
10363
 
@@ -10440,8 +10388,7 @@ type PerfectionistSortVariableDeclarations = []|[{
10440
10388
  } | string))
10441
10389
  }[]
10442
10390
  } | {
10443
-
10444
- newlinesInside?: ("always" | "never")
10391
+ newlinesInside?: (("always" | "never") | number)
10445
10392
 
10446
10393
  fallbackSort?: {
10447
10394
 
@@ -10509,12 +10456,10 @@ type PerfectionistSortVariableDeclarations = []|[{
10509
10456
  })
10510
10457
 
10511
10458
  partitionByNewLine?: boolean
10512
-
10513
- newlinesBetween?: ("ignore" | "always" | "never")
10459
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10514
10460
 
10515
10461
  groups?: (string | string[] | {
10516
-
10517
- newlinesBetween?: ("ignore" | "always" | "never")
10462
+ newlinesBetween?: (("ignore" | "always" | "never") | number)
10518
10463
 
10519
10464
  commentAbove?: string
10520
10465
  })[]
@@ -10970,6 +10915,10 @@ type VitestConsistentTestIt = []|[{
10970
10915
  fn?: ("test" | "it")
10971
10916
  withinDescribe?: ("test" | "it")
10972
10917
  }]
10918
+ // ----- vitest/consistent-vitest-vi -----
10919
+ type VitestConsistentVitestVi = []|[{
10920
+ fn?: ("vi" | "vitest")
10921
+ }]
10973
10922
  // ----- vitest/expect-expect -----
10974
10923
  type VitestExpectExpect = []|[{
10975
10924
  assertFunctionNames?: string[]
@@ -1 +1 @@
1
- {"ignorePatterns":["**/node_modules/","**/dist/","**/out/","**/output","**/.output","**/build/","**/*.min.*","**/.yarn/","**/.yarnrc.yml","**/package-lock.json","**/yarn.lock","**/bun.lock","**/bun.lockb","**/pnpm-lock.yaml","**/.vite-inspect","**/.vitepress/cache","**/vite.config.*.timestamp-*","**/*.log","**/npm-debug.log*","**/yarn-debug.log*","**/yarn-error.log*",".pnp.*","**/.pnp","**/.pnp.js","**/.pnp.cjs","**/coverage/","**/.nyc_output/","**/__snapshots__","**/.vscode/","**/.idea/","**/.cache","**/.nuxt","**/.next","**/.svelte-kit","**/.vercel","**/.changeset","**/.turbo/","**/.DS_Store","**/Thumbs.db","**/temp","**/.temp","**/tmp","**/.tmp","**/.history","**/mockServiceWorker.js","**/CHANGELOG*.md","**/LICENSE*"],"plugins":["eslint","typescript","import","jsdoc","unicorn","vitest","react"],"rules":{"for-direction":"error","no-async-promise-executor":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-dupe-class-members":"error","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-empty":"error","no-empty-character-class":"error","no-empty-pattern":"error","no-empty-static-block":"error","no-ex-assign":"error","no-extra-boolean-cast":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-import-assign":"error","no-invalid-regexp":"error","no-irregular-whitespace":"error","no-loss-of-precision":"error","no-new-native-nonconstructor":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-prototype-builtins":"error","no-redeclare":"error","no-regex-spaces":"error","no-self-assign":"error","no-setter-return":"error","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-this-before-super":"error","no-unexpected-multiline":0,"no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":"error","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":["error",{"args":"none","caughtErrors":"none","ignoreRestSiblings":true,"vars":"all"}],"no-useless-backreference":"error","no-useless-catch":"error","no-useless-escape":"error","no-with":"error","require-yield":"error","use-isnan":"error","valid-typeof":"error","array-callback-return":["error",{"allowImplicit":true}],"block-scoped-var":"error","curly":0,"default-case-last":"error","eqeqeq":"error","func-names":["error","as-needed"],"grouped-accessor-pairs":"error","max-lines":["warn",300],"max-params":["warn",4],"new-cap":["error",{"capIsNew":false}],"no-alert":"error","no-array-constructor":"error","no-bitwise":"error","no-caller":"error","no-console":"error","no-constructor-return":"error","no-else-return":"warn","no-eval":"error","no-extend-native":"error","no-extra-label":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"warn","no-multi-assign":"error","no-nested-ternary":"off","no-new":"error","no-new-func":"error","no-new-wrappers":"error","no-proto":"error","no-return-assign":"error","no-script-url":"error","no-self-compare":"error","no-template-curly-in-string":"error","no-unneeded-ternary":"error","no-unused-expressions":"error","no-useless-call":"error","no-useless-concat":"error","no-useless-rename":"warn","no-var":"error","no-void":["error",{"allowAsStatement":true}],"prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"warn","prefer-promise-reject-errors":["error",{"allowEmptyReject":true}],"prefer-rest-params":"error","prefer-spread":"error","symbol-description":"error","yoda":"warn","import/namespace":"error","import/default":"error","import/no-named-as-default":"warn","import/no-named-as-default-member":"warn","import/no-duplicates":["error",{"prefer-inline":true}],"import/first":"error","import/no-absolute-path":"error","import/no-amd":"error","import/no-cycle":["error",{"ignoreExternal":false,"maxDepth":3}],"import/no-dynamic-require":"error","import/no-mutable-exports":"error","import/no-self-import":"error","jsdoc/check-access":"error","jsdoc/check-property-names":"error","jsdoc/check-tag-names":"error","jsdoc/empty-tags":"error","jsdoc/implements-on-classes":"error","jsdoc/no-defaults":"error","jsdoc/require-param":["error",{"checkDestructured":false,"enableRestElementFixer":false}],"jsdoc/require-param-description":"error","jsdoc/require-param-name":"error","jsdoc/require-param-type":"error","jsdoc/require-property":"error","jsdoc/require-property-description":"error","jsdoc/require-property-name":"error","jsdoc/require-property-type":"error","jsdoc/require-returns":"error","jsdoc/require-returns-description":"error","jsdoc/require-returns-type":"error","jsdoc/require-yields":"error","no-negated-condition":"off","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/explicit-length-check":"error","unicorn/filename-case":["error",{"cases":{"camelCase":true,"kebabCase":true,"pascalCase":true}}],"unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"off","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-hex-escape":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-global-this":"error","unicorn/prefer-includes":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":["error",{"checkInfinity":true,"checkNaN":true}],"unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-type-error":"error","unicorn/require-array-join-separator":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"off","unicorn/switch-case-braces":"error","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","sort-imports":"off"},"overrides":[{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"no-class-assign":"off","no-const-assign":"off","no-dupe-class-members":"off","no-dupe-keys":"off","no-func-assign":"off","no-import-assign":"off","no-new-native-nonconstructor":"off","no-obj-calls":"off","no-redeclare":"off","no-setter-return":"off","no-this-before-super":"off","no-unsafe-negation":"off","no-var":"error","no-with":"off","prefer-rest-params":"error","prefer-spread":"error","@typescript-eslint/ban-ts-comment":["error",{"ts-expect-error":"allow-with-description"}],"no-array-constructor":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-object-type":["error",{"allowInterfaces":"always"}],"@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-function-type":"error","no-unused-expressions":"off","@typescript-eslint/no-unused-expressions":"error","no-unused-vars":"off","@typescript-eslint/no-unused-vars":"off","no-useless-constructor":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/adjacent-overload-signatures":"error","@typescript-eslint/array-type":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-type-definitions":"off","@typescript-eslint/no-confusing-non-null-assertion":"error","no-empty-function":"off","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/consistent-type-imports":["error",{"disallowTypeAnnotations":false,"fixStyle":"inline-type-imports","prefer":"type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/no-dupe-class-members":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-redeclare":["error",{"builtinGlobals":false}],"@typescript-eslint/no-useless-empty-export":"warn"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"no-throw-literal":"off","prefer-promise-reject-errors":"off","require-await":"off"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"jsdoc/check-access":"error","jsdoc/check-property-names":"error","jsdoc/check-tag-names":"error","jsdoc/empty-tags":"error","jsdoc/implements-on-classes":"error","jsdoc/no-defaults":"error","jsdoc/require-param":["error",{"checkDestructured":false,"enableRestElementFixer":false}],"jsdoc/require-param-description":"error","jsdoc/require-param-name":"error","jsdoc/require-param-type":"off","jsdoc/require-property":"error","jsdoc/require-property-description":"error","jsdoc/require-property-name":"error","jsdoc/require-property-type":"off","jsdoc/require-returns":"error","jsdoc/require-returns-description":"error","jsdoc/require-returns-type":"off","jsdoc/require-yields":"error"}},{"files":["**/__tests__/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.spec.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.test.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.bench.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.benchmark.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"vitest/expect-expect":"error","vitest/no-identical-title":"error","vitest/no-commented-out-tests":"error","vitest/valid-expect":"error","vitest/valid-describe-callback":"error","vitest/require-local-test-context-for-concurrent-snapshots":"error","vitest/no-import-node-test":"error","vitest/consistent-test-it":["error",{"fn":"it","withinDescribe":"it"}],"vitest/prefer-hooks-in-order":"error","vitest/prefer-lowercase-title":"error"}},{"files":["**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"react/jsx-no-duplicate-props":"warn","react/no-array-index-key":"warn","react/no-direct-mutation-state":"error","react/no-string-refs":"error","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"react/jsx-no-duplicate-props":"off","react/no-array-index-key":"warn","react/no-direct-mutation-state":"error","react/no-string-refs":"error"}},{"files":["**/scripts/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/tasks/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/bin/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/bin.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/cli/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/cli.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"no-console":"off","unicorn/no-process-exit":"off"}},{"files":["**/*.d.{ts,cts,mts}"],"rules":{"@typescript-eslint/consistent-indexed-object-style":"off","import/no-duplicates":"off"}},{"files":["**/*.config.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.config.*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"no-console":"off","@typescript-eslint/explicit-function-return-type":"off"}}]}
1
+ {"ignorePatterns":["**/node_modules/","**/dist/","**/out/","**/output","**/.output","**/build/","**/*.min.*","**/.yarn/","**/.yarnrc.yml","**/package-lock.json","**/yarn.lock","**/bun.lock","**/bun.lockb","**/pnpm-lock.yaml","**/.vite-inspect","**/.vitepress/cache","**/vite.config.*.timestamp-*","**/*.log","**/npm-debug.log*","**/yarn-debug.log*","**/yarn-error.log*",".pnp.*","**/.pnp","**/.pnp.js","**/.pnp.cjs","**/coverage/","**/.nyc_output/","**/__snapshots__","**/.vscode/","**/.idea/","**/.cache","**/.nuxt","**/.next","**/.svelte-kit","**/.vercel","**/.changeset","**/.turbo/","**/.DS_Store","**/Thumbs.db","**/temp","**/.temp","**/tmp","**/.tmp","**/.history","**/mockServiceWorker.js","**/CHANGELOG*.md","**/LICENSE*"],"plugins":["eslint","typescript","import","jsdoc","unicorn","vitest","react"],"rules":{"for-direction":"error","no-async-promise-executor":"error","no-case-declarations":"error","no-class-assign":"error","no-compare-neg-zero":"error","no-cond-assign":"error","no-const-assign":"error","no-constant-binary-expression":"error","no-constant-condition":"error","no-control-regex":"error","no-debugger":"error","no-delete-var":"error","no-dupe-class-members":"error","no-dupe-else-if":"error","no-dupe-keys":"error","no-duplicate-case":"error","no-empty":"error","no-empty-character-class":"error","no-empty-pattern":"error","no-empty-static-block":"error","no-ex-assign":"error","no-extra-boolean-cast":"error","no-fallthrough":"error","no-func-assign":"error","no-global-assign":"error","no-import-assign":"error","no-invalid-regexp":"error","no-irregular-whitespace":"error","no-loss-of-precision":"error","no-new-native-nonconstructor":"error","no-nonoctal-decimal-escape":"error","no-obj-calls":"error","no-prototype-builtins":"error","no-redeclare":"error","no-regex-spaces":"error","no-self-assign":"error","no-setter-return":"error","no-shadow-restricted-names":"error","no-sparse-arrays":"error","no-this-before-super":"error","no-unexpected-multiline":0,"no-unsafe-finally":"error","no-unsafe-negation":"error","no-unsafe-optional-chaining":"error","no-unused-labels":"error","no-unused-private-class-members":"error","no-unused-vars":["error",{"args":"none","caughtErrors":"none","ignoreRestSiblings":true,"vars":"all"}],"no-useless-backreference":"error","no-useless-catch":"error","no-useless-escape":"error","no-with":"error","require-yield":"error","use-isnan":"error","valid-typeof":"error","array-callback-return":["error",{"allowImplicit":true}],"block-scoped-var":"error","curly":0,"default-case-last":"error","eqeqeq":"error","func-names":["error","as-needed"],"grouped-accessor-pairs":"error","max-lines":["warn",300],"max-params":["warn",4],"new-cap":["error",{"capIsNew":false}],"no-alert":"error","no-array-constructor":"error","no-bitwise":"error","no-caller":"error","no-console":"error","no-constructor-return":"error","no-else-return":"warn","no-eval":"error","no-extend-native":"error","no-extra-bind":"error","no-extra-label":"error","no-iterator":"error","no-label-var":"error","no-labels":"error","no-lone-blocks":"error","no-lonely-if":"warn","no-multi-assign":"error","no-nested-ternary":"off","no-new":"error","no-new-func":"error","no-new-wrappers":"error","no-proto":"error","no-return-assign":"error","no-script-url":"error","no-self-compare":"error","no-template-curly-in-string":"error","no-unneeded-ternary":"error","no-unused-expressions":"error","no-useless-call":"error","no-useless-concat":"error","no-useless-rename":"warn","no-var":"error","no-void":["error",{"allowAsStatement":true}],"prefer-numeric-literals":"error","prefer-object-has-own":"error","prefer-object-spread":"warn","prefer-promise-reject-errors":["error",{"allowEmptyReject":true}],"prefer-rest-params":"error","prefer-spread":"error","symbol-description":"error","yoda":"warn","import/namespace":"error","import/default":"error","import/no-named-as-default":"warn","import/no-named-as-default-member":"warn","import/no-duplicates":["error",{"prefer-inline":true}],"import/first":"error","import/no-absolute-path":"error","import/no-amd":"error","import/no-cycle":["error",{"ignoreExternal":false,"maxDepth":3}],"import/no-dynamic-require":"error","import/no-mutable-exports":"error","import/no-self-import":"error","jsdoc/check-access":"error","jsdoc/check-property-names":"error","jsdoc/check-tag-names":"error","jsdoc/empty-tags":"error","jsdoc/implements-on-classes":"error","jsdoc/no-defaults":"error","jsdoc/require-param":["error",{"checkDestructured":false,"enableRestElementFixer":false}],"jsdoc/require-param-description":"error","jsdoc/require-param-name":"error","jsdoc/require-param-type":"error","jsdoc/require-property":"error","jsdoc/require-property-description":"error","jsdoc/require-property-name":"error","jsdoc/require-property-type":"error","jsdoc/require-returns":"error","jsdoc/require-returns-description":"error","jsdoc/require-returns-type":"error","jsdoc/require-yields":"error","no-negated-condition":"off","unicorn/catch-error-name":"error","unicorn/consistent-assert":"error","unicorn/consistent-date-clone":"error","unicorn/consistent-empty-array-spread":"error","unicorn/consistent-existence-index-check":"error","unicorn/consistent-function-scoping":"error","unicorn/empty-brace-spaces":"off","unicorn/error-message":"error","unicorn/escape-case":"error","unicorn/explicit-length-check":"error","unicorn/filename-case":["error",{"cases":{"camelCase":true,"kebabCase":true,"pascalCase":true}}],"unicorn/new-for-builtins":"error","unicorn/no-abusive-eslint-disable":"error","unicorn/no-accessor-recursion":"error","unicorn/no-anonymous-default-export":"error","unicorn/no-array-for-each":"error","unicorn/no-array-method-this-argument":"error","unicorn/no-array-reduce":"off","unicorn/no-await-expression-member":"error","unicorn/no-await-in-promise-methods":"error","unicorn/no-console-spaces":"error","unicorn/no-document-cookie":"error","unicorn/no-empty-file":"error","unicorn/no-hex-escape":"error","unicorn/no-instanceof-builtins":"error","unicorn/no-invalid-fetch-options":"error","unicorn/no-invalid-remove-event-listener":"error","unicorn/no-lonely-if":"error","unicorn/no-magic-array-flat-depth":"error","unicorn/no-negated-condition":"error","unicorn/no-negation-in-equality-check":"error","unicorn/no-nested-ternary":"off","unicorn/no-new-array":"error","unicorn/no-new-buffer":"error","unicorn/no-null":"off","unicorn/no-object-as-default-parameter":"error","unicorn/no-process-exit":"error","unicorn/no-single-promise-in-promise-methods":"error","unicorn/no-static-only-class":"error","unicorn/no-thenable":"error","unicorn/no-this-assignment":"error","unicorn/no-typeof-undefined":"error","unicorn/no-unnecessary-array-flat-depth":"error","unicorn/no-unnecessary-await":"error","unicorn/no-unnecessary-slice-end":"error","unicorn/no-unreadable-array-destructuring":"error","unicorn/no-unreadable-iife":"error","unicorn/no-useless-fallback-in-spread":"error","unicorn/no-useless-length-check":"error","unicorn/no-useless-promise-resolve-reject":"error","unicorn/no-useless-spread":"error","unicorn/no-useless-switch-case":"error","unicorn/no-useless-undefined":"error","unicorn/no-zero-fractions":"error","unicorn/number-literal-case":"off","unicorn/numeric-separators-style":"error","unicorn/prefer-add-event-listener":"error","unicorn/prefer-array-find":"error","unicorn/prefer-array-flat-map":"error","unicorn/prefer-array-flat":"error","unicorn/prefer-array-index-of":"error","unicorn/prefer-array-some":"error","unicorn/prefer-blob-reading-methods":"error","unicorn/prefer-code-point":"error","unicorn/prefer-date-now":"error","unicorn/prefer-dom-node-append":"error","unicorn/prefer-dom-node-dataset":"error","unicorn/prefer-dom-node-remove":"error","unicorn/prefer-dom-node-text-content":"error","unicorn/prefer-event-target":"error","unicorn/prefer-global-this":"error","unicorn/prefer-includes":"error","unicorn/prefer-logical-operator-over-ternary":"error","unicorn/prefer-math-min-max":"error","unicorn/prefer-math-trunc":"error","unicorn/prefer-modern-dom-apis":"error","unicorn/prefer-modern-math-apis":"error","unicorn/prefer-native-coercion-functions":"error","unicorn/prefer-negative-index":"error","unicorn/prefer-node-protocol":"error","unicorn/prefer-number-properties":["error",{"checkInfinity":true,"checkNaN":true}],"unicorn/prefer-object-from-entries":"error","unicorn/prefer-optional-catch-binding":"error","unicorn/prefer-prototype-methods":"error","unicorn/prefer-query-selector":"error","unicorn/prefer-reflect-apply":"error","unicorn/prefer-regexp-test":"error","unicorn/prefer-set-has":"error","unicorn/prefer-set-size":"error","unicorn/prefer-spread":"error","unicorn/prefer-string-raw":"error","unicorn/prefer-string-replace-all":"error","unicorn/prefer-string-slice":"error","unicorn/prefer-string-starts-ends-with":"error","unicorn/prefer-string-trim-start-end":"error","unicorn/prefer-structured-clone":"error","unicorn/prefer-type-error":"error","unicorn/require-array-join-separator":"error","unicorn/require-number-to-fixed-digits-argument":"error","unicorn/require-post-message-target-origin":"off","unicorn/switch-case-braces":"error","unicorn/text-encoding-identifier-case":"error","unicorn/throw-new-error":"error","sort-imports":"off"},"overrides":[{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"no-class-assign":"off","no-const-assign":"off","no-dupe-class-members":"off","no-dupe-keys":"off","no-func-assign":"off","no-import-assign":"off","no-new-native-nonconstructor":"off","no-obj-calls":"off","no-redeclare":"off","no-setter-return":"off","no-this-before-super":"off","no-unsafe-negation":"off","no-var":"error","no-with":"off","prefer-rest-params":"error","prefer-spread":"error","@typescript-eslint/ban-ts-comment":["error",{"ts-expect-error":"allow-with-description"}],"no-array-constructor":"off","@typescript-eslint/no-array-constructor":"error","@typescript-eslint/no-duplicate-enum-values":"error","@typescript-eslint/no-dynamic-delete":"error","@typescript-eslint/no-empty-object-type":["error",{"allowInterfaces":"always"}],"@typescript-eslint/no-explicit-any":"error","@typescript-eslint/no-extra-non-null-assertion":"error","@typescript-eslint/no-extraneous-class":"error","@typescript-eslint/no-misused-new":"error","@typescript-eslint/no-namespace":"error","@typescript-eslint/no-non-null-asserted-nullish-coalescing":"error","@typescript-eslint/no-non-null-asserted-optional-chain":"error","@typescript-eslint/no-non-null-assertion":"error","@typescript-eslint/no-require-imports":"error","@typescript-eslint/no-this-alias":"error","@typescript-eslint/no-unnecessary-type-constraint":"error","@typescript-eslint/no-unsafe-declaration-merging":"error","@typescript-eslint/no-unsafe-function-type":"error","no-unused-expressions":"off","@typescript-eslint/no-unused-expressions":"error","no-unused-vars":"off","@typescript-eslint/no-unused-vars":"off","no-useless-constructor":"off","@typescript-eslint/no-useless-constructor":"error","@typescript-eslint/no-wrapper-object-types":"error","@typescript-eslint/prefer-as-const":"error","@typescript-eslint/prefer-literal-enum-member":"error","@typescript-eslint/prefer-namespace-keyword":"error","@typescript-eslint/triple-slash-reference":"error","@typescript-eslint/adjacent-overload-signatures":"error","@typescript-eslint/array-type":"error","@typescript-eslint/ban-tslint-comment":"error","@typescript-eslint/consistent-generic-constructors":"error","@typescript-eslint/consistent-indexed-object-style":"error","@typescript-eslint/consistent-type-definitions":"off","@typescript-eslint/no-confusing-non-null-assertion":"error","no-empty-function":"off","@typescript-eslint/no-empty-function":"error","@typescript-eslint/no-inferrable-types":"error","@typescript-eslint/prefer-for-of":"error","@typescript-eslint/prefer-function-type":"error","@typescript-eslint/consistent-type-imports":["error",{"disallowTypeAnnotations":false,"fixStyle":"inline-type-imports","prefer":"type-imports"}],"@typescript-eslint/default-param-last":"error","@typescript-eslint/explicit-function-return-type":"off","@typescript-eslint/no-dupe-class-members":"error","@typescript-eslint/no-import-type-side-effects":"error","@typescript-eslint/no-redeclare":["error",{"builtinGlobals":false}],"@typescript-eslint/no-useless-empty-export":"warn"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"no-throw-literal":"off","prefer-promise-reject-errors":"off","require-await":"off"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"jsdoc/check-access":"error","jsdoc/check-property-names":"error","jsdoc/check-tag-names":"error","jsdoc/empty-tags":"error","jsdoc/implements-on-classes":"error","jsdoc/no-defaults":"error","jsdoc/require-param":["error",{"checkDestructured":false,"enableRestElementFixer":false}],"jsdoc/require-param-description":"error","jsdoc/require-param-name":"error","jsdoc/require-param-type":"off","jsdoc/require-property":"error","jsdoc/require-property-description":"error","jsdoc/require-property-name":"error","jsdoc/require-property-type":"off","jsdoc/require-returns":"error","jsdoc/require-returns-description":"error","jsdoc/require-returns-type":"off","jsdoc/require-yields":"error"}},{"files":["**/__tests__/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.spec.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.test.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.bench.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.benchmark.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"vitest/expect-expect":"error","vitest/no-identical-title":"error","vitest/no-commented-out-tests":"error","vitest/valid-expect":"error","vitest/valid-describe-callback":"error","vitest/require-local-test-context-for-concurrent-snapshots":"error","vitest/no-import-node-test":"error","vitest/consistent-test-it":["error",{"fn":"it","withinDescribe":"it"}],"vitest/prefer-hooks-in-order":"error","vitest/prefer-lowercase-title":"error"}},{"files":["**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"react/jsx-no-duplicate-props":"warn","react/no-array-index-key":"warn","react/no-direct-mutation-state":"error","react/no-string-refs":"error","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn"}},{"files":["**/*.{ts,cts,mts}","**/*.{tsx,ctsx,mtsx}"],"rules":{"react/jsx-no-duplicate-props":"off","react/no-array-index-key":"warn","react/no-direct-mutation-state":"error","react/no-string-refs":"error"}},{"files":["**/scripts/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/tasks/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/bin/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/bin.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/cli/**/*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/cli.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"no-console":"off","unicorn/no-process-exit":"off"}},{"files":["**/*.d.{ts,cts,mts}"],"rules":{"@typescript-eslint/consistent-indexed-object-style":"off","import/no-duplicates":"off"}},{"files":["**/*.config.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}","**/*.config.*.{js,jsx,cjs,cjsx,mjs,mjsx,ts,tsx,cts,ctsx,mts,mtjsx}"],"rules":{"no-console":"off","@typescript-eslint/explicit-function-return-type":"off"}}]}
@@ -1,34 +1,79 @@
1
- type Prettify<T> = {
2
- [K in keyof T]: T[K];
1
+ /**
2
+ * Utility type that takes an object type and makes the hover overlay more readable.
3
+ *
4
+ * @see https://www.totaltypescript.com/concepts/the-prettify-helper
5
+ */
6
+ export type Prettify<T> = {
7
+ [K in keyof T]: T[K];
3
8
  } & {};
9
+
10
+ // Utility types for entries in various data structures
4
11
  type ObjectEntry<Base> = [keyof Base, Base[keyof Base]];
5
12
  type ArrayEntry<Base extends readonly unknown[]> = [number, Base[number]];
6
13
  type SetEntry<Base> = Base extends Set<infer V> ? [V, V] : never;
7
14
  type MapEntry<Base> = Base extends Map<infer K, infer V> ? [K, V] : never;
8
- type Entry<BaseType> = BaseType extends Map<unknown, unknown> ? MapEntry<BaseType> : BaseType extends Set<unknown> ? SetEntry<BaseType> : BaseType extends readonly unknown[] ? ArrayEntry<BaseType> : BaseType extends object ? ObjectEntry<BaseType> : never;
15
+ type Entry<BaseType> = BaseType extends Map<unknown, unknown>
16
+ ? MapEntry<BaseType>
17
+ : BaseType extends Set<unknown>
18
+ ? SetEntry<BaseType>
19
+ : BaseType extends readonly unknown[]
20
+ ? ArrayEntry<BaseType>
21
+ : BaseType extends object
22
+ ? ObjectEntry<BaseType>
23
+ : never;
24
+
9
25
  /**
10
- * Utility function to have a type-safety alternative to Object.entries.
26
+ * Utility type to make `Object.entries` type-safe.
11
27
  *
12
- * @param obj - The object to create entries from.
13
- * @returns Object entries with typed keys and values.
28
+ * @example
29
+ * ```ts
30
+ * const typedObjectEntries: ObjectEntries = Object.entries;
31
+ * ```
14
32
  */
15
- declare function typedObjectEntries<T extends object>(obj: T): Entry<T>[];
16
- type IsUnion<T, U extends T = T> = T extends unknown ? [U] extends [T] ? false : true : false;
33
+ export type ObjectEntries = <T extends object>(obj: T) => Entry<T>[];
34
+
35
+ // Utilities for handling unions and intersections in TypeScript
36
+ type IsUnion<T, U extends T = T> = T extends unknown
37
+ ? [U] extends [T]
38
+ ? false
39
+ : true
40
+ : false;
17
41
  type IfUnion<T, Yes, No> = true extends IsUnion<T> ? Yes : No;
18
- type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
19
- type InferKeyOptionalityFromTupleType<T extends readonly [PropertyKey, unknown]> = UnionToIntersection<T extends [unknown, unknown] ? {
20
- [K in T[0]]?: unknown;
21
- } : IfUnion<T[0], {
22
- [K in T[0]]?: unknown;
23
- }, {
24
- [K in T[0]]: unknown;
25
- }>>;
42
+ type UnionToIntersection<U> = (
43
+ U extends unknown
44
+ ? (k: U) => void
45
+ : never
46
+ ) extends (k: infer I) => void
47
+ ? I
48
+ : never;
49
+ type InferKeyOptionalityFromTupleType<
50
+ T extends readonly [PropertyKey, unknown],
51
+ > = UnionToIntersection<
52
+ T extends [unknown, unknown]
53
+ ? { [K in T[0]]?: unknown }
54
+ : IfUnion<T[0], { [K in T[0]]?: unknown }, { [K in T[0]]: unknown }>
55
+ >;
56
+
26
57
  /**
27
- * Utility function to have a type-safe alternative to Object.fromEntries.
58
+ * Utility type to make `Object.fromEntries` type-safe.
28
59
  *
29
- * @param entries - The entries to create an object from.
30
- * @returns An object with typed keys and values based on the provided entries.
60
+ * @example
61
+ * ```ts
62
+ * const typedObjectFromEntries: ObjectFromEntries = Object.fromEntries;
63
+ * ```
31
64
  */
32
- declare function typedObjectFromEntries<T extends readonly [...(readonly (readonly [PropertyKey, unknown])[])]>(entries: T): T extends [...T[number][]] ? { [K in T[number][0]]?: (readonly [K, T[number][1]] & T[number])[1]; } : { [K in keyof InferKeyOptionalityFromTupleType<T[number]>]: (readonly [K, T[number][1]] & T[number])[1]; };
33
-
34
- export { type Prettify, typedObjectEntries, typedObjectFromEntries };
65
+ export type ObjectFromEntries = <
66
+ T extends readonly [...(readonly (readonly [PropertyKey, unknown])[])],
67
+ >(
68
+ entries: T
69
+ ) => T extends [...T[number][]]
70
+ ? {
71
+ [K in T[number][0]]?: (readonly [K, T[number][1]] & T[number])[1];
72
+ }
73
+ : {
74
+ [K in keyof InferKeyOptionalityFromTupleType<T[number]>]: (readonly [
75
+ K,
76
+ T[number][1],
77
+ ] &
78
+ T[number])[1];
79
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "name": "@yunarch/config-web",
5
5
  "description": "Shared configurations for web projects.",
6
6
  "license": "MIT",
@@ -45,11 +45,8 @@
45
45
  "./oxlint": "./dist/linters/oxlint.config.json",
46
46
  "./biome-formatter": "./dist/formatters/biome.config.json",
47
47
  "./tsconfig-base": "./dist/ts/tsconfig-base.json",
48
- "./reset.d.ts": "./dist/ts/reset.d.ts",
49
- "./ts-utils": {
50
- "types": "./dist/ts/ts-utils.d.ts",
51
- "default": "./dist/ts/ts-utils.js"
52
- }
48
+ "./ts-reset.d.ts": "./dist/ts/reset.d.ts",
49
+ "./ts-utils.d.ts": "./dist/ts/utils.d.ts"
53
50
  },
54
51
  "type": "module",
55
52
  "scripts": {
@@ -71,10 +68,10 @@
71
68
  "release": "bun run lint && bun run test && bun publish --dry-run && bunx bumpp && bun run build && bun publish"
72
69
  },
73
70
  "peerDependencies": {
74
- "@biomejs/biome": ">= 1 || < 2",
71
+ "@biomejs/biome": ">= 1.9 || < 2",
75
72
  "prettier": ">= 3 || < 4",
76
73
  "eslint": ">=9.5.0 || < 10",
77
- "oxlint": ">=0.16.2 || < 1"
74
+ "oxlint": ">=0.16.2 || < 2"
78
75
  },
79
76
  "peerDependenciesMeta": {
80
77
  "@biomejs/biome": {
@@ -100,42 +97,42 @@
100
97
  "eslint-flat-config-utils": "2.1.0",
101
98
  "eslint-config-flat-gitignore": "2.1.0",
102
99
  "eslint-import-resolver-typescript": "4.4.3",
103
- "@eslint/js": "9.28.0",
104
- "typescript-eslint": "8.34.0",
100
+ "@eslint/js": "9.29.0",
101
+ "typescript-eslint": "8.34.1",
105
102
  "eslint-plugin-unicorn": "59.0.1",
106
- "eslint-plugin-perfectionist": "4.14.0",
107
- "eslint-plugin-import-x": "4.15.1",
103
+ "eslint-plugin-perfectionist": "4.15.0",
104
+ "eslint-plugin-import-x": "4.15.2",
108
105
  "eslint-plugin-unused-imports": "4.1.4",
109
- "eslint-plugin-jsdoc": "50.7.1",
106
+ "eslint-plugin-jsdoc": "51.0.3",
110
107
  "eslint-config-prettier": "10.1.5",
111
- "eslint-plugin-oxlint": "0.18.1",
112
- "@eslint-react/eslint-plugin": "1.51.3",
108
+ "eslint-plugin-oxlint": "1.2.0",
109
+ "@eslint-react/eslint-plugin": "1.52.2",
113
110
  "eslint-plugin-react-hooks": "5.2.0",
114
111
  "eslint-plugin-react-refresh": "0.4.20",
115
112
  "@tanstack/eslint-plugin-query": "5.78.0",
116
- "@tanstack/eslint-plugin-router": "1.120.17",
117
- "@vitest/eslint-plugin": "1.2.1"
113
+ "@tanstack/eslint-plugin-router": "1.121.21",
114
+ "@vitest/eslint-plugin": "1.2.5"
118
115
  },
119
116
  "devDependencies": {
120
117
  "@commitlint/cli": "19.8.1",
121
118
  "@commitlint/config-conventional": "19.8.1",
122
119
  "prettier": "3.5.3",
123
120
  "@biomejs/biome": "1.9.4",
124
- "eslint": "9.28.0",
121
+ "eslint": "9.29.0",
125
122
  "eslint-typegen": "2.2.0",
126
- "oxlint": "0.18.1",
123
+ "oxlint": "1.2.0",
127
124
  "husky": "9.1.7",
128
- "lint-staged": "16.1.0",
125
+ "lint-staged": "16.1.2",
129
126
  "rimraf": "6.0.1",
130
127
  "tsup": "8.5.0",
131
128
  "typescript": "5.8.3",
132
- "vitest": "3.2.3",
129
+ "vitest": "3.2.4",
133
130
  "jsonc-parser": "3.3.1",
134
- "@types/node": "24.0.0",
135
- "@types/bun": "1.2.15"
131
+ "@types/node": "24.0.3",
132
+ "@types/bun": "1.2.16"
136
133
  },
134
+ "packageManager": "bun@1.2.16",
137
135
  "publishConfig": {
138
136
  "access": "public"
139
- },
140
- "packageManager": "bun@1.2.15"
137
+ }
141
138
  }
package/dist/ts/utils.js DELETED
@@ -1 +0,0 @@
1
- function r(e){return Object.entries(e)}function y(e){return Object.fromEntries(e)}export{r as typedObjectEntries,y as typedObjectFromEntries};