@next-core/build-config-factory 2.18.52 → 2.19.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/CHANGELOG.md CHANGED
@@ -3,6 +3,23 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.19.0](https://github.com/easyops-cn/next-core/compare/@next-core/build-config-factory@2.18.52...@next-core/build-config-factory@2.19.0) (2022-07-05)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **generateBrickDocs:** type will not be traversed in another module once traversed ([c539bcf](https://github.com/easyops-cn/next-core/commit/c539bcf86a8d7d0955f4115373db838032c5c677))
12
+
13
+
14
+ ### Features
15
+
16
+ * **generateBrickDocs:** add support for extendedTypes ([12c9e53](https://github.com/easyops-cn/next-core/commit/12c9e536b07104a9ee8478cbe8c2aa6887751335))
17
+ * **generateBrickDocs:** add support for index signature ([1f16c2c](https://github.com/easyops-cn/next-core/commit/1f16c2c1a961a43a139f8bef1117c8eb4e4ba3f6))
18
+
19
+
20
+
21
+
22
+
6
23
  ## [2.18.52](https://github.com/easyops-cn/next-core/compare/@next-core/build-config-factory@2.18.51...@next-core/build-config-factory@2.18.52) (2022-06-28)
7
24
 
8
25
  **Note:** Version bump only for package @next-core/build-config-factory
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/build-config-factory",
3
- "version": "2.18.52",
3
+ "version": "2.19.0",
4
4
  "description": "build config factory",
5
5
  "homepage": "https://github.com/easyops-cn/next-core/tree/master/packages/build-config-factory",
6
6
  "license": "GPL-3.0",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "sideEffects": false,
20
20
  "dependencies": {
21
- "@next-core/brick-utils": "^2.37.19",
21
+ "@next-core/brick-utils": "^2.37.20",
22
22
  "@next-core/repo-config": "^0.2.1",
23
23
  "@next-core/typedoc-plugin-filter-inherit": "^1.2.2",
24
24
  "@next-core/webpack-config-factory": "^2.16.6",
@@ -37,5 +37,5 @@
37
37
  "typedoc": "^0.19.2",
38
38
  "typedoc-plugin-no-inherit": "^1.2.2"
39
39
  },
40
- "gitHead": "d833b9eedbc33d9fe4ec1041455de693018e5dd4"
40
+ "gitHead": "b8a911770baa015938fd6f70daaeb584ea2449c8"
41
41
  }
@@ -392,16 +392,32 @@ function extractBrickDocInterface(typeIds, references) {
392
392
  name: finder.name,
393
393
  typeParameter: getTypeParameter(finder),
394
394
  kind: "interface",
395
- children: [
396
- ...finder.children.map((child) => {
395
+ extendedTypes: finder.extendedTypes,
396
+ children:
397
+ finder.children?.map((child) => {
397
398
  return {
398
399
  name: child.name,
399
400
  type: extractRealInterfaceType(child.type.type, child.type),
400
401
  required: !get(child, ["flags", "isOptional"], false),
401
402
  description: get(child, ["comment", "shortText"], "").trim(),
402
403
  };
403
- }),
404
- ],
404
+ }) || [],
405
+ indexSignature:
406
+ finder.indexSignature?.map((child) => {
407
+ return {
408
+ name: child.name,
409
+ parameters: child.parameters.map((parameter) => ({
410
+ ...parameter,
411
+ type: extractRealInterfaceType(
412
+ parameter.type.type,
413
+ parameter.type
414
+ ),
415
+ })),
416
+ type: extractRealInterfaceType(child.type.type, child.type),
417
+ required: !get(child, ["flags", "isOptional"], false),
418
+ description: get(child, ["comment", "shortText"], "").trim(),
419
+ };
420
+ }) || [],
405
421
  };
406
422
  }
407
423
 
@@ -438,10 +454,16 @@ function traverseExtraInterfaceReferences(modules, References) {
438
454
  function traverseElementUsedInterfaceIds(
439
455
  element,
440
456
  usedReferenceIds,
441
- references
457
+ references,
458
+ traversedTypeSet
442
459
  ) {
443
460
  element.children.forEach((child) => {
444
- traverseUsedReferenceIdsByType(child.type, usedReferenceIds, references);
461
+ traverseUsedReferenceIdsByType(
462
+ child.type,
463
+ usedReferenceIds,
464
+ references,
465
+ traversedTypeSet
466
+ );
445
467
  });
446
468
  }
447
469
 
@@ -461,13 +483,19 @@ function traverseModules(modules, brickDocs) {
461
483
  if (!elementId) return;
462
484
 
463
485
  const usedReferenceIds = new Set();
486
+ const traversedTypeSet = new Set();
464
487
  const classElement = module.children.find(
465
488
  (child) => child.id === elementId && existBrickDocId(child)
466
489
  );
467
490
  if (!classElement) return;
468
491
  const { comment, children, groups } = classElement;
469
492
  const references = [...module.children, ...extraInterfaceReferencesValues];
470
- traverseElementUsedInterfaceIds(classElement, usedReferenceIds, references);
493
+ traverseElementUsedInterfaceIds(
494
+ classElement,
495
+ usedReferenceIds,
496
+ references,
497
+ traversedTypeSet
498
+ );
471
499
  const brick = {
472
500
  ...extractBrickDocBaseKind(comment.tags),
473
501
  ...extractBrickDocComplexKind(groups, children),
@@ -480,25 +508,38 @@ function traverseModules(modules, brickDocs) {
480
508
  });
481
509
  }
482
510
 
483
- function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
511
+ function traverseUsedReferenceIdsByType(
512
+ type,
513
+ usedReferenceIds,
514
+ references,
515
+ traversedTypeSet
516
+ ) {
484
517
  if (!type || !type.type) return;
485
518
 
486
- if (type.$$traversed) {
519
+ if (traversedTypeSet.has(type)) {
487
520
  return;
488
521
  }
489
- type.$$traversed = true;
522
+
523
+ traversedTypeSet.add(type);
524
+
490
525
  switch (type.type) {
491
526
  case "union":
492
527
  case "intersection":
493
528
  type.types.forEach((item) =>
494
- traverseUsedReferenceIdsByType(item, usedReferenceIds, references)
529
+ traverseUsedReferenceIdsByType(
530
+ item,
531
+ usedReferenceIds,
532
+ references,
533
+ traversedTypeSet
534
+ )
495
535
  );
496
536
  break;
497
537
  case "array":
498
538
  traverseUsedReferenceIdsByType(
499
539
  type.elementType,
500
540
  usedReferenceIds,
501
- references
541
+ references,
542
+ traversedTypeSet
502
543
  );
503
544
  break;
504
545
  case "reference":
@@ -507,12 +548,18 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
507
548
  traverseUsedReferenceIdsByReflection(
508
549
  references.find((child) => child.id === type.id),
509
550
  usedReferenceIds,
510
- references
551
+ references,
552
+ traversedTypeSet
511
553
  );
512
554
  }
513
555
  if (type.typeArguments && type.typeArguments.length > 0) {
514
556
  type.typeArguments.forEach((item) =>
515
- traverseUsedReferenceIdsByType(item, usedReferenceIds, references)
557
+ traverseUsedReferenceIdsByType(
558
+ item,
559
+ usedReferenceIds,
560
+ references,
561
+ traversedTypeSet
562
+ )
516
563
  );
517
564
  }
518
565
  break;
@@ -521,7 +568,8 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
521
568
  traverseUsedReferenceIdsByType(
522
569
  type.objectType,
523
570
  usedReferenceIds,
524
- references
571
+ references,
572
+ traversedTypeSet
525
573
  );
526
574
  break;
527
575
  }
@@ -530,20 +578,40 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
530
578
  function traverseUsedReferenceIdsByReflection(
531
579
  reflection,
532
580
  usedReferenceIds,
533
- references
581
+ references,
582
+ traversedTypeSet
534
583
  ) {
535
584
  if (!reflection) {
536
585
  return;
537
586
  }
538
587
  switch (reflection.kindString) {
539
588
  case "Interface":
589
+ reflection.extendedTypes?.forEach((type) =>
590
+ traverseUsedReferenceIdsByType(
591
+ type,
592
+ usedReferenceIds,
593
+ references,
594
+ traversedTypeSet
595
+ )
596
+ );
540
597
  reflection.children
541
- .filter((item) => item.kindString === "Property")
598
+ ?.filter((item) => item.kindString === "Property")
599
+ .forEach((item) =>
600
+ traverseUsedReferenceIdsByType(
601
+ item.type,
602
+ usedReferenceIds,
603
+ references,
604
+ traversedTypeSet
605
+ )
606
+ );
607
+ reflection.indexSignature
608
+ ?.filter((item) => item.kindString === "Index signature")
542
609
  .forEach((item) =>
543
610
  traverseUsedReferenceIdsByType(
544
611
  item.type,
545
612
  usedReferenceIds,
546
- references
613
+ references,
614
+ traversedTypeSet
547
615
  )
548
616
  );
549
617
  break;
@@ -551,7 +619,8 @@ function traverseUsedReferenceIdsByReflection(
551
619
  traverseUsedReferenceIdsByType(
552
620
  reflection.type,
553
621
  usedReferenceIds,
554
- references
622
+ references,
623
+ traversedTypeSet
555
624
  );
556
625
  break;
557
626
  }
@@ -590,7 +659,7 @@ function generateBrickBook(docsJson) {
590
659
  fs.writeFileSync(storiesPath, JSON.stringify(stories, null, 2), {
591
660
  encoding: "utf-8",
592
661
  });
593
- console.log("Brick book written to doc.json.");
662
+ console.log("Brick book written to stories.json.");
594
663
  }
595
664
 
596
665
  module.exports = function generateBrickDocs(packageName) {