@likec4/language-server 1.23.0 → 1.24.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.
Files changed (73) hide show
  1. package/dist/LikeC4FileSystem.d.ts +1 -0
  2. package/dist/LikeC4FileSystem.js +8 -1
  3. package/dist/Rpc.js +10 -7
  4. package/dist/ast.d.ts +13 -29
  5. package/dist/ast.js +3 -70
  6. package/dist/bundled.mjs +2466 -2641
  7. package/dist/generated/ast.d.ts +36 -8
  8. package/dist/generated/ast.js +44 -2
  9. package/dist/generated/grammar.js +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/dist/likec4lib.d.ts +2 -0
  13. package/dist/likec4lib.js +3 -0
  14. package/dist/lsp/CodeLensProvider.js +7 -4
  15. package/dist/lsp/CompletionProvider.js +20 -2
  16. package/dist/lsp/DocumentLinkProvider.d.ts +3 -3
  17. package/dist/lsp/DocumentLinkProvider.js +14 -5
  18. package/dist/lsp/DocumentSymbolProvider.d.ts +1 -1
  19. package/dist/lsp/DocumentSymbolProvider.js +5 -2
  20. package/dist/lsp/HoverProvider.js +20 -7
  21. package/dist/lsp/SemanticTokenProvider.js +18 -1
  22. package/dist/model/builder/MergedExtends.d.ts +12 -0
  23. package/dist/model/builder/MergedExtends.js +67 -0
  24. package/dist/model/builder/MergedSpecification.d.ts +29 -0
  25. package/dist/model/builder/MergedSpecification.js +203 -0
  26. package/dist/model/builder/buildModel.d.ts +3 -0
  27. package/dist/model/builder/buildModel.js +194 -0
  28. package/dist/model/deployments-index.d.ts +6 -56
  29. package/dist/model/deployments-index.js +59 -137
  30. package/dist/model/fqn-index.d.ts +47 -17
  31. package/dist/model/fqn-index.js +155 -68
  32. package/dist/model/index.d.ts +0 -1
  33. package/dist/model/index.js +0 -1
  34. package/dist/model/model-builder.d.ts +13 -9
  35. package/dist/model/model-builder.js +101 -547
  36. package/dist/model/model-locator.d.ts +1 -0
  37. package/dist/model/model-locator.js +7 -9
  38. package/dist/model/model-parser.d.ts +24 -18
  39. package/dist/model/model-parser.js +51 -31
  40. package/dist/model/parser/Base.d.ts +3 -3
  41. package/dist/model/parser/Base.js +15 -9
  42. package/dist/model/parser/DeploymentModelParser.d.ts +4 -3
  43. package/dist/model/parser/DeploymentModelParser.js +54 -3
  44. package/dist/model/parser/DeploymentViewParser.d.ts +3 -2
  45. package/dist/model/parser/FqnRefParser.d.ts +2 -2
  46. package/dist/model/parser/GlobalsParser.d.ts +3 -2
  47. package/dist/model/parser/ModelParser.d.ts +4 -4
  48. package/dist/model/parser/ModelParser.js +45 -4
  49. package/dist/model/parser/PredicatesParser.d.ts +2 -2
  50. package/dist/model/parser/SpecificationParser.d.ts +2 -2
  51. package/dist/model/parser/ViewsParser.d.ts +3 -2
  52. package/dist/module.d.ts +2 -3
  53. package/dist/module.js +2 -3
  54. package/dist/references/scope-computation.d.ts +1 -1
  55. package/dist/references/scope-computation.js +14 -11
  56. package/dist/references/scope-provider.d.ts +16 -4
  57. package/dist/references/scope-provider.js +64 -30
  58. package/dist/test/testServices.d.ts +2 -1
  59. package/dist/test/testServices.js +17 -14
  60. package/dist/utils/elementRef.d.ts +1 -1
  61. package/dist/utils/elementRef.js +3 -3
  62. package/dist/validation/deployment-checks.d.ts +1 -0
  63. package/dist/validation/deployment-checks.js +12 -0
  64. package/dist/validation/index.d.ts +1 -1
  65. package/dist/validation/index.js +8 -1
  66. package/dist/views/configurable-layouter.js +3 -3
  67. package/dist/views/likec4-views.d.ts +1 -0
  68. package/dist/views/likec4-views.js +11 -11
  69. package/package.json +6 -7
  70. package/dist/bundled.d.ts +0 -8
  71. package/dist/bundled.js +0 -25
  72. package/dist/model/fqn-computation.d.ts +0 -3
  73. package/dist/model/fqn-computation.js +0 -72
@@ -78,7 +78,7 @@ export declare function isExtendElementProperty(item: unknown): item is ExtendEl
78
78
  export type FqnExpr = FqnRefExpr | WildcardExpression;
79
79
  export declare const FqnExpr = "FqnExpr";
80
80
  export declare function isFqnExpr(item: unknown): item is FqnExpr;
81
- export type FqnReferenceable = Element | ExtendElement | Referenceable;
81
+ export type FqnReferenceable = Element | ExtendDeployment | ExtendElement | Referenceable;
82
82
  export declare const FqnReferenceable = "FqnReferenceable";
83
83
  export declare function isFqnReferenceable(item: unknown): item is FqnReferenceable;
84
84
  export type IconId = string;
@@ -221,7 +221,7 @@ export interface CustomRelationProperties extends AstNode {
221
221
  export declare const CustomRelationProperties = "CustomRelationProperties";
222
222
  export declare function isCustomRelationProperties(item: unknown): item is CustomRelationProperties;
223
223
  export interface DeployedInstance extends AstNode {
224
- readonly $container: DeploymentNodeBody;
224
+ readonly $container: DeploymentNodeBody | ExtendDeploymentBody;
225
225
  readonly $type: 'DeployedInstance';
226
226
  body?: DeployedInstanceBody;
227
227
  element: ElementRef;
@@ -239,7 +239,7 @@ export interface DeployedInstanceBody extends AstNode {
239
239
  export declare const DeployedInstanceBody = "DeployedInstanceBody";
240
240
  export declare function isDeployedInstanceBody(item: unknown): item is DeployedInstanceBody;
241
241
  export interface DeploymentNode extends AstNode {
242
- readonly $container: DeploymentNodeBody | ModelDeployments;
242
+ readonly $container: DeploymentNodeBody | ExtendDeploymentBody | ModelDeployments;
243
243
  readonly $type: 'DeploymentNode';
244
244
  body?: DeploymentNodeBody;
245
245
  kind: Reference<DeploymentNodeKind>;
@@ -265,7 +265,7 @@ export interface DeploymentNodeKind extends AstNode {
265
265
  export declare const DeploymentNodeKind = "DeploymentNodeKind";
266
266
  export declare function isDeploymentNodeKind(item: unknown): item is DeploymentNodeKind;
267
267
  export interface DeploymentRelation extends AstNode {
268
- readonly $container: DeploymentNodeBody | ModelDeployments;
268
+ readonly $container: DeploymentNodeBody | ExtendDeploymentBody | ModelDeployments;
269
269
  readonly $type: 'DeploymentRelation';
270
270
  body?: DeploymentRelationBody;
271
271
  kind?: Reference<RelationshipKind>;
@@ -554,6 +554,23 @@ export interface ExpandElementExpression extends AstNode {
554
554
  }
555
555
  export declare const ExpandElementExpression = "ExpandElementExpression";
556
556
  export declare function isExpandElementExpression(item: unknown): item is ExpandElementExpression;
557
+ export interface ExtendDeployment extends AstNode {
558
+ readonly $container: ModelDeployments;
559
+ readonly $type: 'ExtendDeployment';
560
+ body: ExtendDeploymentBody;
561
+ deploymentNode: StrictFqnRef;
562
+ }
563
+ export declare const ExtendDeployment = "ExtendDeployment";
564
+ export declare function isExtendDeployment(item: unknown): item is ExtendDeployment;
565
+ export interface ExtendDeploymentBody extends AstNode {
566
+ readonly $container: ExtendDeployment;
567
+ readonly $type: 'ExtendDeploymentBody';
568
+ elements: Array<DeployedInstance | DeploymentNode | DeploymentRelation>;
569
+ props: Array<ExtendElementProperty>;
570
+ tags?: Tags;
571
+ }
572
+ export declare const ExtendDeploymentBody = "ExtendDeploymentBody";
573
+ export declare function isExtendDeploymentBody(item: unknown): item is ExtendDeploymentBody;
557
574
  export interface ExtendElement extends AstNode {
558
575
  readonly $container: Model;
559
576
  readonly $type: 'ExtendElement';
@@ -722,7 +739,7 @@ export interface LineProperty extends AstNode {
722
739
  export declare const LineProperty = "LineProperty";
723
740
  export declare function isLineProperty(item: unknown): item is LineProperty;
724
741
  export interface LinkProperty extends AstNode {
725
- readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | ExtendElementBody | RelationBody;
742
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | ExtendDeploymentBody | ExtendElementBody | RelationBody;
726
743
  readonly $type: 'LinkProperty';
727
744
  key: 'link';
728
745
  title?: string;
@@ -739,7 +756,7 @@ export interface MetadataAttribute extends AstNode {
739
756
  export declare const MetadataAttribute = "MetadataAttribute";
740
757
  export declare function isMetadataAttribute(item: unknown): item is MetadataAttribute;
741
758
  export interface MetadataBody extends AstNode {
742
- readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | ElementBody | ExtendElementBody | RelationBody;
759
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelationBody | ElementBody | ExtendDeploymentBody | ExtendElementBody | RelationBody;
743
760
  readonly $type: 'MetadataBody';
744
761
  props: Array<MetadataAttribute>;
745
762
  }
@@ -756,7 +773,7 @@ export declare function isModel(item: unknown): item is Model;
756
773
  export interface ModelDeployments extends AstNode {
757
774
  readonly $container: LikeC4Grammar;
758
775
  readonly $type: 'ModelDeployments';
759
- elements: Array<DeploymentNode | DeploymentRelation>;
776
+ elements: Array<DeploymentNode | DeploymentRelation | ExtendDeployment>;
760
777
  name: 'deployment';
761
778
  }
762
779
  export declare const ModelDeployments = "ModelDeployments";
@@ -1011,6 +1028,14 @@ export interface StrictFqnElementRef extends AstNode {
1011
1028
  }
1012
1029
  export declare const StrictFqnElementRef = "StrictFqnElementRef";
1013
1030
  export declare function isStrictFqnElementRef(item: unknown): item is StrictFqnElementRef;
1031
+ export interface StrictFqnRef extends AstNode {
1032
+ readonly $container: ExtendDeployment | StrictFqnRef;
1033
+ readonly $type: 'StrictFqnRef';
1034
+ parent?: StrictFqnRef;
1035
+ value: Reference<Referenceable>;
1036
+ }
1037
+ export declare const StrictFqnRef = "StrictFqnRef";
1038
+ export declare function isStrictFqnRef(item: unknown): item is StrictFqnRef;
1014
1039
  export interface Tag extends AstNode {
1015
1040
  readonly $container: SpecificationTag;
1016
1041
  readonly $type: 'Tag';
@@ -1019,7 +1044,7 @@ export interface Tag extends AstNode {
1019
1044
  export declare const Tag = "Tag";
1020
1045
  export declare function isTag(item: unknown): item is Tag;
1021
1046
  export interface Tags extends AstNode {
1022
- readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelation | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | ExtendElementBody | Relation | RelationBody | Tags;
1047
+ readonly $container: DeployedInstanceBody | DeploymentNodeBody | DeploymentRelation | DeploymentRelationBody | DeploymentViewBody | DynamicViewBody | ElementBody | ElementViewBody | ExtendDeploymentBody | ExtendElementBody | Relation | RelationBody | Tags;
1023
1048
  readonly $type: 'Tags';
1024
1049
  prev?: Tags;
1025
1050
  values: Array<Reference<Tag>>;
@@ -1232,6 +1257,8 @@ export type LikeC4AstType = {
1232
1257
  ExcludePredicate: ExcludePredicate;
1233
1258
  ExpandElementExpression: ExpandElementExpression;
1234
1259
  ExpressionV2: ExpressionV2;
1260
+ ExtendDeployment: ExtendDeployment;
1261
+ ExtendDeploymentBody: ExtendDeploymentBody;
1235
1262
  ExtendElement: ExtendElement;
1236
1263
  ExtendElementBody: ExtendElementBody;
1237
1264
  ExtendElementProperty: ExtendElementProperty;
@@ -1303,6 +1330,7 @@ export type LikeC4AstType = {
1303
1330
  SpecificationRule: SpecificationRule;
1304
1331
  SpecificationTag: SpecificationTag;
1305
1332
  StrictFqnElementRef: StrictFqnElementRef;
1333
+ StrictFqnRef: StrictFqnRef;
1306
1334
  StringProperty: StringProperty;
1307
1335
  StyleProperty: StyleProperty;
1308
1336
  Tag: Tag;
@@ -404,6 +404,14 @@ export const ExpandElementExpression = "ExpandElementExpression";
404
404
  export function isExpandElementExpression(item) {
405
405
  return reflection.isInstance(item, ExpandElementExpression);
406
406
  }
407
+ export const ExtendDeployment = "ExtendDeployment";
408
+ export function isExtendDeployment(item) {
409
+ return reflection.isInstance(item, ExtendDeployment);
410
+ }
411
+ export const ExtendDeploymentBody = "ExtendDeploymentBody";
412
+ export function isExtendDeploymentBody(item) {
413
+ return reflection.isInstance(item, ExtendDeploymentBody);
414
+ }
407
415
  export const ExtendElement = "ExtendElement";
408
416
  export function isExtendElement(item) {
409
417
  return reflection.isInstance(item, ExtendElement);
@@ -628,6 +636,10 @@ export const StrictFqnElementRef = "StrictFqnElementRef";
628
636
  export function isStrictFqnElementRef(item) {
629
637
  return reflection.isInstance(item, StrictFqnElementRef);
630
638
  }
639
+ export const StrictFqnRef = "StrictFqnRef";
640
+ export function isStrictFqnRef(item) {
641
+ return reflection.isInstance(item, StrictFqnRef);
642
+ }
631
643
  export const Tag = "Tag";
632
644
  export function isTag(item) {
633
645
  return reflection.isInstance(item, Tag);
@@ -710,7 +722,7 @@ export function isWildcardExpression(item) {
710
722
  }
711
723
  export class LikeC4AstReflection extends AbstractAstReflection {
712
724
  getAllTypes() {
713
- return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DeployedInstance, DeployedInstanceBody, DeploymentElement, DeploymentNode, DeploymentNodeBody, DeploymentNodeKind, DeploymentNodeOrElementKind, DeploymentRelation, DeploymentRelationBody, DeploymentView, DeploymentViewBody, DeploymentViewRule, DeploymentViewRulePredicate, DeploymentViewRulePredicateExpression, DeploymentViewRuleStyle, DirectedRelationExpr, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewGlobalPredicateRef, DynamicViewIncludePredicate, DynamicViewParallelSteps, DynamicViewPredicateIterator, DynamicViewRef, DynamicViewRule, DynamicViewStep, Element, ElementBody, ElementDescedantsExpression, ElementExpression, ElementExpressionsIterator, ElementKind, ElementKindExpression, ElementPredicate, ElementPredicateOrWhere, ElementPredicateOrWhereV2, ElementPredicateWhere, ElementPredicateWhereV2, ElementPredicateWith, ElementProperty, ElementRef, ElementStringProperty, ElementStyleProperty, ElementTagExpression, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpression, ExpressionV2, ExtendElement, ExtendElementBody, ExtendElementProperty, FqnExpr, FqnExpressions, FqnRef, FqnRefExpr, FqnReferenceable, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutRelationExpr, InOutRelationExpression, IncludePredicate, IncomingRelationExpr, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelDeployments, ModelViews, MultipleProperty, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingRelationExpr, OutgoingRelationExpression, PaddingSizeProperty, Predicate, Predicates, Referenceable, Relation, RelationBody, RelationExpr, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateOrWhereV2, RelationPredicateWhere, RelationPredicateWhereV2, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, ShapeSizeProperty, SizeProperty, SpecificationColor, SpecificationDeploymentNodeKind, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StrictFqnElementRef, StringProperty, StyleProperty, Tag, Tags, TextSizeProperty, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRuleGlobalPredicateRef, ViewRuleGlobalStyle, ViewRuleGroup, ViewRulePredicate, ViewRuleStyle, ViewRuleStyleOrGlobalRef, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationParticipantKind, WhereRelationParticipantTag, WhereRelationTag, WhereTagEqual, WildcardExpression];
725
+ return [ArrowProperty, BorderProperty, ColorProperty, CustomColor, CustomElementProperties, CustomRelationProperties, DeployedInstance, DeployedInstanceBody, DeploymentElement, DeploymentNode, DeploymentNodeBody, DeploymentNodeKind, DeploymentNodeOrElementKind, DeploymentRelation, DeploymentRelationBody, DeploymentView, DeploymentViewBody, DeploymentViewRule, DeploymentViewRulePredicate, DeploymentViewRulePredicateExpression, DeploymentViewRuleStyle, DirectedRelationExpr, DirectedRelationExpression, DynamicView, DynamicViewBody, DynamicViewGlobalPredicateRef, DynamicViewIncludePredicate, DynamicViewParallelSteps, DynamicViewPredicateIterator, DynamicViewRef, DynamicViewRule, DynamicViewStep, Element, ElementBody, ElementDescedantsExpression, ElementExpression, ElementExpressionsIterator, ElementKind, ElementKindExpression, ElementPredicate, ElementPredicateOrWhere, ElementPredicateOrWhereV2, ElementPredicateWhere, ElementPredicateWhereV2, ElementPredicateWith, ElementProperty, ElementRef, ElementStringProperty, ElementStyleProperty, ElementTagExpression, ElementView, ElementViewBody, ElementViewRef, ExcludePredicate, ExpandElementExpression, ExpressionV2, ExtendDeployment, ExtendDeploymentBody, ExtendElement, ExtendElementBody, ExtendElementProperty, FqnExpr, FqnExpressions, FqnRef, FqnRefExpr, FqnReferenceable, GlobalDynamicPredicateGroup, GlobalPredicateGroup, GlobalStyle, GlobalStyleGroup, GlobalStyleId, Globals, IconProperty, InOutRelationExpr, InOutRelationExpression, IncludePredicate, IncomingRelationExpr, IncomingRelationExpression, LibIcon, LikeC4Grammar, LikeC4Lib, LikeC4View, LineProperty, LinkProperty, MetadataAttribute, MetadataBody, MetadataProperty, Model, ModelDeployments, ModelViews, MultipleProperty, NavigateToProperty, NotationProperty, NotesProperty, OpacityProperty, OutgoingRelationExpr, OutgoingRelationExpression, PaddingSizeProperty, Predicate, Predicates, Referenceable, Relation, RelationBody, RelationExpr, RelationExpression, RelationNavigateToProperty, RelationPredicate, RelationPredicateOrWhere, RelationPredicateOrWhereV2, RelationPredicateWhere, RelationPredicateWhereV2, RelationPredicateWith, RelationProperty, RelationStringProperty, RelationStyleProperty, RelationshipKind, RelationshipStyleProperty, ShapeProperty, ShapeSizeProperty, SizeProperty, SpecificationColor, SpecificationDeploymentNodeKind, SpecificationElementKind, SpecificationElementStringProperty, SpecificationRelationshipKind, SpecificationRelationshipStringProperty, SpecificationRule, SpecificationTag, StrictFqnElementRef, StrictFqnRef, StringProperty, StyleProperty, Tag, Tags, TextSizeProperty, ViewProperty, ViewRef, ViewRule, ViewRuleAutoLayout, ViewRuleGlobalPredicateRef, ViewRuleGlobalStyle, ViewRuleGroup, ViewRulePredicate, ViewRuleStyle, ViewRuleStyleOrGlobalRef, ViewStringProperty, WhereBinaryExpression, WhereElement, WhereElementExpression, WhereElementKind, WhereElementNegation, WhereElementTag, WhereExpression, WhereKindEqual, WhereRelation, WhereRelationExpression, WhereRelationKind, WhereRelationNegation, WhereRelationParticipantKind, WhereRelationParticipantTag, WhereRelationTag, WhereTagEqual, WildcardExpression];
714
726
  }
715
727
  computeIsSubtype(subtype, supertype) {
716
728
  switch (subtype) {
@@ -800,6 +812,7 @@ export class LikeC4AstReflection extends AbstractAstReflection {
800
812
  case IncludePredicate: {
801
813
  return this.isSubtype(ViewRulePredicate, supertype);
802
814
  }
815
+ case ExtendDeployment:
803
816
  case ExtendElement:
804
817
  case Referenceable: {
805
818
  return this.isSubtype(FqnReferenceable, supertype);
@@ -946,7 +959,8 @@ export class LikeC4AstReflection extends AbstractAstReflection {
946
959
  case "ElementViewRef:view": {
947
960
  return ElementView;
948
961
  }
949
- case "FqnRef:value": {
962
+ case "FqnRef:value":
963
+ case "StrictFqnRef:value": {
950
964
  return Referenceable;
951
965
  }
952
966
  case "IconProperty:libicon": {
@@ -1398,6 +1412,25 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1398
1412
  ]
1399
1413
  };
1400
1414
  }
1415
+ case ExtendDeployment: {
1416
+ return {
1417
+ name: ExtendDeployment,
1418
+ properties: [
1419
+ { name: "body" },
1420
+ { name: "deploymentNode" }
1421
+ ]
1422
+ };
1423
+ }
1424
+ case ExtendDeploymentBody: {
1425
+ return {
1426
+ name: ExtendDeploymentBody,
1427
+ properties: [
1428
+ { name: "elements", defaultValue: [] },
1429
+ { name: "props", defaultValue: [] },
1430
+ { name: "tags" }
1431
+ ]
1432
+ };
1433
+ }
1401
1434
  case ExtendElement: {
1402
1435
  return {
1403
1436
  name: ExtendElement,
@@ -1912,6 +1945,15 @@ export class LikeC4AstReflection extends AbstractAstReflection {
1912
1945
  ]
1913
1946
  };
1914
1947
  }
1948
+ case StrictFqnRef: {
1949
+ return {
1950
+ name: StrictFqnRef,
1951
+ properties: [
1952
+ { name: "parent" },
1953
+ { name: "value" }
1954
+ ]
1955
+ };
1956
+ }
1915
1957
  case Tag: {
1916
1958
  return {
1917
1959
  name: Tag,