@next-core/build-config-factory 2.18.51 → 2.20.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,42 @@
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.20.0](https://github.com/easyops-cn/next-core/compare/@next-core/build-config-factory@2.19.0...@next-core/build-config-factory@2.20.0) (2022-07-05)
7
+
8
+
9
+ ### Features
10
+
11
+ * **generateBrickDocs:** support infer required and default of property and detail of event from declaration ([6a60f26](https://github.com/easyops-cn/next-core/commit/6a60f26563683d89d5b36bb766f973cb23522e70))
12
+
13
+
14
+
15
+
16
+
17
+ # [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)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **generateBrickDocs:** type will not be traversed in another module once traversed ([c539bcf](https://github.com/easyops-cn/next-core/commit/c539bcf86a8d7d0955f4115373db838032c5c677))
23
+
24
+
25
+ ### Features
26
+
27
+ * **generateBrickDocs:** add support for extendedTypes ([12c9e53](https://github.com/easyops-cn/next-core/commit/12c9e536b07104a9ee8478cbe8c2aa6887751335))
28
+ * **generateBrickDocs:** add support for index signature ([1f16c2c](https://github.com/easyops-cn/next-core/commit/1f16c2c1a961a43a139f8bef1117c8eb4e4ba3f6))
29
+
30
+
31
+
32
+
33
+
34
+ ## [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)
35
+
36
+ **Note:** Version bump only for package @next-core/build-config-factory
37
+
38
+
39
+
40
+
41
+
6
42
  ## [2.18.51](https://github.com/easyops-cn/next-core/compare/@next-core/build-config-factory@2.18.50...@next-core/build-config-factory@2.18.51) (2022-06-27)
7
43
 
8
44
  **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.51",
3
+ "version": "2.20.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,10 +18,10 @@
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
- "@next-core/webpack-config-factory": "^2.16.5",
24
+ "@next-core/webpack-config-factory": "^2.16.6",
25
25
  "change-case": "^4.1.2",
26
26
  "chokidar": "^3.5.3",
27
27
  "fs-extra": "^10.1.0",
@@ -37,5 +37,5 @@
37
37
  "typedoc": "^0.19.2",
38
38
  "typedoc-plugin-no-inherit": "^1.2.2"
39
39
  },
40
- "gitHead": "d514ec0e78f1d243f88eba481bdf4f8b6fd823e5"
40
+ "gitHead": "81ac28a0f1346239d497cd23acc7795e5f8c21cc"
41
41
  }
@@ -101,11 +101,12 @@ function convertTagsToMapByFields(tags, fields) {
101
101
  }
102
102
 
103
103
  function composeBrickDocProperties(brick) {
104
- const { name, comment } = brick;
105
- const type = brick.type && brick.type.type;
104
+ const { name, comment, type, flags, defaultValue } = brick;
106
105
  return {
107
106
  name,
108
- type: extractRealInterfaceType(type, brick.type),
107
+ type: extractRealInterfaceType(type?.type, type),
108
+ required: flags?.isOptional !== true,
109
+ default: defaultValue,
109
110
  ...convertTagsToMapByFields(get(comment, "tags", []), propertyDocComments),
110
111
  };
111
112
  }
@@ -122,11 +123,19 @@ function getEventTypeByDecorators(decorators) {
122
123
  return null;
123
124
  }
124
125
 
126
+ function getDetailTypeByEventType(type) {
127
+ if (type.name === "EventEmitter" && type.typeArguments?.length > 0) {
128
+ const argument = type.typeArguments[0];
129
+ return extractRealInterfaceType(argument.type, argument);
130
+ }
131
+ }
132
+
125
133
  function composeBrickDocEvents(brick) {
126
- const { comment, decorators } = brick;
134
+ const { comment, decorators, type } = brick;
127
135
 
128
136
  return {
129
137
  type: getEventTypeByDecorators(decorators),
138
+ detail: getDetailTypeByEventType(type),
130
139
  ...convertTagsToMapByFields(get(comment, "tags", []), eventDocComments),
131
140
  };
132
141
  }
@@ -392,16 +401,32 @@ function extractBrickDocInterface(typeIds, references) {
392
401
  name: finder.name,
393
402
  typeParameter: getTypeParameter(finder),
394
403
  kind: "interface",
395
- children: [
396
- ...finder.children.map((child) => {
404
+ extendedTypes: finder.extendedTypes,
405
+ children:
406
+ finder.children?.map((child) => {
407
+ return {
408
+ name: child.name,
409
+ type: extractRealInterfaceType(child.type.type, child.type),
410
+ required: !get(child, ["flags", "isOptional"], false),
411
+ description: get(child, ["comment", "shortText"], "").trim(),
412
+ };
413
+ }) || [],
414
+ indexSignature:
415
+ finder.indexSignature?.map((child) => {
397
416
  return {
398
417
  name: child.name,
418
+ parameters: child.parameters.map((parameter) => ({
419
+ ...parameter,
420
+ type: extractRealInterfaceType(
421
+ parameter.type.type,
422
+ parameter.type
423
+ ),
424
+ })),
399
425
  type: extractRealInterfaceType(child.type.type, child.type),
400
426
  required: !get(child, ["flags", "isOptional"], false),
401
427
  description: get(child, ["comment", "shortText"], "").trim(),
402
428
  };
403
- }),
404
- ],
429
+ }) || [],
405
430
  };
406
431
  }
407
432
 
@@ -438,10 +463,16 @@ function traverseExtraInterfaceReferences(modules, References) {
438
463
  function traverseElementUsedInterfaceIds(
439
464
  element,
440
465
  usedReferenceIds,
441
- references
466
+ references,
467
+ traversedTypeSet
442
468
  ) {
443
469
  element.children.forEach((child) => {
444
- traverseUsedReferenceIdsByType(child.type, usedReferenceIds, references);
470
+ traverseUsedReferenceIdsByType(
471
+ child.type,
472
+ usedReferenceIds,
473
+ references,
474
+ traversedTypeSet
475
+ );
445
476
  });
446
477
  }
447
478
 
@@ -461,13 +492,19 @@ function traverseModules(modules, brickDocs) {
461
492
  if (!elementId) return;
462
493
 
463
494
  const usedReferenceIds = new Set();
495
+ const traversedTypeSet = new Set();
464
496
  const classElement = module.children.find(
465
497
  (child) => child.id === elementId && existBrickDocId(child)
466
498
  );
467
499
  if (!classElement) return;
468
500
  const { comment, children, groups } = classElement;
469
501
  const references = [...module.children, ...extraInterfaceReferencesValues];
470
- traverseElementUsedInterfaceIds(classElement, usedReferenceIds, references);
502
+ traverseElementUsedInterfaceIds(
503
+ classElement,
504
+ usedReferenceIds,
505
+ references,
506
+ traversedTypeSet
507
+ );
471
508
  const brick = {
472
509
  ...extractBrickDocBaseKind(comment.tags),
473
510
  ...extractBrickDocComplexKind(groups, children),
@@ -480,25 +517,38 @@ function traverseModules(modules, brickDocs) {
480
517
  });
481
518
  }
482
519
 
483
- function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
520
+ function traverseUsedReferenceIdsByType(
521
+ type,
522
+ usedReferenceIds,
523
+ references,
524
+ traversedTypeSet
525
+ ) {
484
526
  if (!type || !type.type) return;
485
527
 
486
- if (type.$$traversed) {
528
+ if (traversedTypeSet.has(type)) {
487
529
  return;
488
530
  }
489
- type.$$traversed = true;
531
+
532
+ traversedTypeSet.add(type);
533
+
490
534
  switch (type.type) {
491
535
  case "union":
492
536
  case "intersection":
493
537
  type.types.forEach((item) =>
494
- traverseUsedReferenceIdsByType(item, usedReferenceIds, references)
538
+ traverseUsedReferenceIdsByType(
539
+ item,
540
+ usedReferenceIds,
541
+ references,
542
+ traversedTypeSet
543
+ )
495
544
  );
496
545
  break;
497
546
  case "array":
498
547
  traverseUsedReferenceIdsByType(
499
548
  type.elementType,
500
549
  usedReferenceIds,
501
- references
550
+ references,
551
+ traversedTypeSet
502
552
  );
503
553
  break;
504
554
  case "reference":
@@ -507,12 +557,18 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
507
557
  traverseUsedReferenceIdsByReflection(
508
558
  references.find((child) => child.id === type.id),
509
559
  usedReferenceIds,
510
- references
560
+ references,
561
+ traversedTypeSet
511
562
  );
512
563
  }
513
564
  if (type.typeArguments && type.typeArguments.length > 0) {
514
565
  type.typeArguments.forEach((item) =>
515
- traverseUsedReferenceIdsByType(item, usedReferenceIds, references)
566
+ traverseUsedReferenceIdsByType(
567
+ item,
568
+ usedReferenceIds,
569
+ references,
570
+ traversedTypeSet
571
+ )
516
572
  );
517
573
  }
518
574
  break;
@@ -521,7 +577,8 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
521
577
  traverseUsedReferenceIdsByType(
522
578
  type.objectType,
523
579
  usedReferenceIds,
524
- references
580
+ references,
581
+ traversedTypeSet
525
582
  );
526
583
  break;
527
584
  }
@@ -530,20 +587,40 @@ function traverseUsedReferenceIdsByType(type, usedReferenceIds, references) {
530
587
  function traverseUsedReferenceIdsByReflection(
531
588
  reflection,
532
589
  usedReferenceIds,
533
- references
590
+ references,
591
+ traversedTypeSet
534
592
  ) {
535
593
  if (!reflection) {
536
594
  return;
537
595
  }
538
596
  switch (reflection.kindString) {
539
597
  case "Interface":
598
+ reflection.extendedTypes?.forEach((type) =>
599
+ traverseUsedReferenceIdsByType(
600
+ type,
601
+ usedReferenceIds,
602
+ references,
603
+ traversedTypeSet
604
+ )
605
+ );
540
606
  reflection.children
541
- .filter((item) => item.kindString === "Property")
607
+ ?.filter((item) => item.kindString === "Property")
608
+ .forEach((item) =>
609
+ traverseUsedReferenceIdsByType(
610
+ item.type,
611
+ usedReferenceIds,
612
+ references,
613
+ traversedTypeSet
614
+ )
615
+ );
616
+ reflection.indexSignature
617
+ ?.filter((item) => item.kindString === "Index signature")
542
618
  .forEach((item) =>
543
619
  traverseUsedReferenceIdsByType(
544
620
  item.type,
545
621
  usedReferenceIds,
546
- references
622
+ references,
623
+ traversedTypeSet
547
624
  )
548
625
  );
549
626
  break;
@@ -551,7 +628,8 @@ function traverseUsedReferenceIdsByReflection(
551
628
  traverseUsedReferenceIdsByType(
552
629
  reflection.type,
553
630
  usedReferenceIds,
554
- references
631
+ references,
632
+ traversedTypeSet
555
633
  );
556
634
  break;
557
635
  }
@@ -590,7 +668,7 @@ function generateBrickBook(docsJson) {
590
668
  fs.writeFileSync(storiesPath, JSON.stringify(stories, null, 2), {
591
669
  encoding: "utf-8",
592
670
  });
593
- console.log("Brick book written to doc.json.");
671
+ console.log("Brick book written to stories.json.");
594
672
  }
595
673
 
596
674
  module.exports = function generateBrickDocs(packageName) {