@kubb/ast 5.0.0-alpha.43 → 5.0.0-alpha.45

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/ast",
3
- "version": "5.0.0-alpha.43",
3
+ "version": "5.0.0-alpha.45",
4
4
  "description": "Spec-agnostic AST layer for Kubb. Defines nodes, visitor pattern, and factory functions used across codegen plugins.",
5
5
  "keywords": [
6
6
  "kubb",
@@ -34,7 +34,7 @@
34
34
  "!/**/__snapshots__/**"
35
35
  ],
36
36
  "devDependencies": {
37
- "@types/node": "^22.19.17",
37
+ "@types/node": "^25.6.0",
38
38
  "@internals/utils": "0.0.0"
39
39
  },
40
40
  "main": "./dist/index.cjs",
package/src/utils.ts CHANGED
@@ -524,11 +524,11 @@ export function combineExports(exports: Array<ExportNode>): Array<ExportNode> {
524
524
  // Deduplicates non-array exports by their exact identity
525
525
  const seen = new Set<string>()
526
526
 
527
- for (const curr of [...exports].sort((a, b) => {
528
- const ka = sortKey(a)
529
- const kb = sortKey(b)
530
- return ka < kb ? -1 : ka > kb ? 1 : 0
531
- })) {
527
+ // Precompute sort keys once avoids recomputing per comparison.
528
+ const keyed = exports.map((node) => ({ node, key: sortKey(node) }))
529
+ keyed.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0))
530
+
531
+ for (const { node: curr } of keyed) {
532
532
  const { name, path, isTypeOnly, asAlias } = curr
533
533
 
534
534
  if (Array.isArray(name)) {
@@ -538,7 +538,9 @@ export function combineExports(exports: Array<ExportNode>): Array<ExportNode> {
538
538
  const existing = namedByPath.get(key)
539
539
 
540
540
  if (existing && Array.isArray(existing.name)) {
541
- existing.name = [...new Set([...existing.name, ...name])]
541
+ const merged = new Set(existing.name)
542
+ for (const n of name) merged.add(n)
543
+ existing.name = [...merged]
542
544
  } else {
543
545
  const newItem: ExportNode = { ...curr, name: [...new Set(name)] }
544
546
  result.push(newItem)
@@ -572,11 +574,11 @@ export function combineImports(imports: Array<ImportNode>, exports: Array<Export
572
574
  // Deduplicates non-array imports by their exact identity
573
575
  const seen = new Set<string>()
574
576
 
575
- for (const curr of [...imports].sort((a, b) => {
576
- const ka = sortKey(a)
577
- const kb = sortKey(b)
578
- return ka < kb ? -1 : ka > kb ? 1 : 0
579
- })) {
577
+ // Precompute sort keys once avoids recomputing per comparison.
578
+ const keyed = imports.map((node) => ({ node, key: sortKey(node) }))
579
+ keyed.sort((a, b) => (a.key < b.key ? -1 : a.key > b.key ? 1 : 0))
580
+
581
+ for (const { node: curr } of keyed) {
580
582
  if (curr.path === curr.root) continue
581
583
 
582
584
  const { path, isTypeOnly } = curr
@@ -590,7 +592,9 @@ export function combineImports(imports: Array<ImportNode>, exports: Array<Export
590
592
  const existing = namedByPath.get(key)
591
593
 
592
594
  if (existing && Array.isArray(existing.name)) {
593
- existing.name = [...new Set([...existing.name, ...name])]
595
+ const merged = new Set(existing.name)
596
+ for (const n of name) merged.add(n)
597
+ existing.name = [...merged]
594
598
  } else {
595
599
  const newItem: ImportNode = { ...curr, name }
596
600
  result.push(newItem)