@dereekb/dbx-cli 13.11.4 → 13.11.5

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.
@@ -454,4 +454,708 @@ function readJsDocSummary(node) {
454
454
  return description.length > 0 ? description : undefined;
455
455
  }
456
456
 
457
- export { extractCrudEntries };
457
+ function _define_property(obj, key, value) {
458
+ if (key in obj) {
459
+ Object.defineProperty(obj, key, {
460
+ value: value,
461
+ enumerable: true,
462
+ configurable: true,
463
+ writable: true
464
+ });
465
+ } else {
466
+ obj[key] = value;
467
+ }
468
+ return obj;
469
+ }
470
+ function _object_spread(target) {
471
+ for(var i = 1; i < arguments.length; i++){
472
+ var source = arguments[i] != null ? arguments[i] : {};
473
+ var ownKeys = Object.keys(source);
474
+ if (typeof Object.getOwnPropertySymbols === "function") {
475
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
476
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
477
+ }));
478
+ }
479
+ ownKeys.forEach(function(key) {
480
+ _define_property(target, key, source[key]);
481
+ });
482
+ }
483
+ return target;
484
+ }
485
+ var IDENTITY_FN = 'firestoreModelIdentity';
486
+ var CONVERTER_FN_NAMES = [
487
+ 'snapshotConverterFunctions',
488
+ 'firestoreSubObject',
489
+ 'firestoreObjectArray'
490
+ ];
491
+ var SUB_OBJECT_FN = 'firestoreSubObject';
492
+ var OBJECT_ARRAY_FN = 'firestoreObjectArray';
493
+ var SNAPSHOT_FN = 'snapshotConverterFunctions';
494
+ var FIELDS_LITERAL_KEY = 'fields';
495
+ var OBJECT_FIELD_KEY = 'objectField';
496
+ /**
497
+ * Walks a single source file and reports raw model-extraction artifacts.
498
+ * Best-effort: a malformed call shape leaves the corresponding entry out
499
+ * rather than throwing.
500
+ *
501
+ * @param input - in-memory `{ name, text }` source pair.
502
+ * @returns the per-file extraction. Aggregation across files happens in the
503
+ * firebase-api-manifest orchestrator so cross-file converter consts can be
504
+ * resolved against a global registry.
505
+ */ function extractModelsFromSource(input) {
506
+ var project = new Project({
507
+ useInMemoryFileSystem: true,
508
+ skipAddingFilesFromTsConfig: true
509
+ });
510
+ var sourceFile = project.createSourceFile(input.name, input.text, {
511
+ overwrite: true
512
+ });
513
+ var identities = readIdentities(sourceFile);
514
+ var interfaces = readInterfaces(sourceFile);
515
+ var converters = readConverters(sourceFile);
516
+ var enums = readEnums(sourceFile);
517
+ var modelGroups = readModelGroups(sourceFile);
518
+ return {
519
+ identities: identities,
520
+ interfaces: interfaces,
521
+ converters: converters,
522
+ enums: enums,
523
+ modelGroups: modelGroups
524
+ };
525
+ }
526
+ function readIdentities(sourceFile) {
527
+ var out = [];
528
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
529
+ try {
530
+ for(var _iterator = sourceFile.getVariableStatements()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
531
+ var statement = _step.value;
532
+ if (!statement.isExported()) continue;
533
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
534
+ try {
535
+ for(var _iterator1 = statement.getDeclarations()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
536
+ var decl = _step1.value;
537
+ var initializer = decl.getInitializer();
538
+ if (!initializer || !Node.isCallExpression(initializer)) continue;
539
+ if (initializer.getExpression().getText() !== IDENTITY_FN) continue;
540
+ var parsed = parseIdentityArgs(initializer);
541
+ if (parsed) {
542
+ out.push(_object_spread({
543
+ identityConst: decl.getName()
544
+ }, parsed));
545
+ }
546
+ }
547
+ } catch (err) {
548
+ _didIteratorError1 = true;
549
+ _iteratorError1 = err;
550
+ } finally{
551
+ try {
552
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
553
+ _iterator1.return();
554
+ }
555
+ } finally{
556
+ if (_didIteratorError1) {
557
+ throw _iteratorError1;
558
+ }
559
+ }
560
+ }
561
+ }
562
+ } catch (err) {
563
+ _didIteratorError = true;
564
+ _iteratorError = err;
565
+ } finally{
566
+ try {
567
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
568
+ _iterator.return();
569
+ }
570
+ } finally{
571
+ if (_didIteratorError) {
572
+ throw _iteratorError;
573
+ }
574
+ }
575
+ }
576
+ return out;
577
+ }
578
+ function parseIdentityArgs(call) {
579
+ var args = call.getArguments();
580
+ var result;
581
+ if (args.length === 1) {
582
+ var modelType = stringLiteralValue(args[0]);
583
+ if (modelType !== undefined) {
584
+ result = {
585
+ modelType: modelType,
586
+ collectionPrefix: undefined,
587
+ parentIdentityConst: undefined
588
+ };
589
+ }
590
+ } else if (args.length === 2) {
591
+ var first = stringLiteralValue(args[0]);
592
+ if (first === undefined) {
593
+ var modelType1 = stringLiteralValue(args[1]);
594
+ if (modelType1 !== undefined) {
595
+ result = {
596
+ modelType: modelType1,
597
+ collectionPrefix: undefined,
598
+ parentIdentityConst: identifierName(args[0])
599
+ };
600
+ }
601
+ } else {
602
+ result = {
603
+ modelType: first,
604
+ collectionPrefix: stringLiteralValue(args[1]),
605
+ parentIdentityConst: undefined
606
+ };
607
+ }
608
+ } else if (args.length >= 3) {
609
+ var modelType2 = stringLiteralValue(args[1]);
610
+ if (modelType2 !== undefined) {
611
+ result = {
612
+ modelType: modelType2,
613
+ collectionPrefix: stringLiteralValue(args[2]),
614
+ parentIdentityConst: identifierName(args[0])
615
+ };
616
+ }
617
+ }
618
+ return result;
619
+ }
620
+ function readInterfaces(sourceFile) {
621
+ var out = [];
622
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
623
+ try {
624
+ for(var _iterator = sourceFile.getInterfaces()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
625
+ var decl = _step.value;
626
+ if (!decl.isExported()) continue;
627
+ out.push(buildInterface(decl));
628
+ }
629
+ } catch (err) {
630
+ _didIteratorError = true;
631
+ _iteratorError = err;
632
+ } finally{
633
+ try {
634
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
635
+ _iterator.return();
636
+ }
637
+ } finally{
638
+ if (_didIteratorError) {
639
+ throw _iteratorError;
640
+ }
641
+ }
642
+ }
643
+ return out;
644
+ }
645
+ function buildInterface(decl) {
646
+ var jsDocs = decl.getJsDocs();
647
+ var hasDbxModelTag = jsDocsHaveTag(jsDocs, 'dbxModel');
648
+ var extendsNames = decl.getExtends().map(function(e) {
649
+ return e.getExpression().getText();
650
+ });
651
+ var props = [];
652
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
653
+ try {
654
+ for(var _iterator = decl.getProperties()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
655
+ var prop = _step.value;
656
+ var _ref;
657
+ var _prop_getTypeNode;
658
+ var propJsDocs = prop.getJsDocs();
659
+ var longName = readJsDocTagText(propJsDocs, 'dbxModelVariable');
660
+ var syncFlag = readJsDocTagText(propJsDocs, 'dbxModelVariableSyncFlag');
661
+ var tsType = ((_ref = (_prop_getTypeNode = prop.getTypeNode()) === null || _prop_getTypeNode === void 0 ? void 0 : _prop_getTypeNode.getText()) !== null && _ref !== void 0 ? _ref : '').replaceAll(/\s+/g, ' ').trim();
662
+ var optional = prop.hasQuestionToken() || tsType.startsWith('Maybe<');
663
+ props.push({
664
+ name: prop.getName(),
665
+ tsType: tsType,
666
+ optional: optional,
667
+ description: readJsDocDescription(propJsDocs),
668
+ longName: longName,
669
+ syncFlag: syncFlag
670
+ });
671
+ }
672
+ } catch (err) {
673
+ _didIteratorError = true;
674
+ _iteratorError = err;
675
+ } finally{
676
+ try {
677
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
678
+ _iterator.return();
679
+ }
680
+ } finally{
681
+ if (_didIteratorError) {
682
+ throw _iteratorError;
683
+ }
684
+ }
685
+ }
686
+ return {
687
+ name: decl.getName(),
688
+ description: readJsDocDescription(jsDocs),
689
+ hasDbxModelTag: hasDbxModelTag,
690
+ extendsNames: extendsNames,
691
+ props: props
692
+ };
693
+ }
694
+ function readConverters(sourceFile) {
695
+ var out = [];
696
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
697
+ try {
698
+ for(var _iterator = sourceFile.getVariableStatements()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
699
+ var statement = _step.value;
700
+ if (!statement.isExported()) continue;
701
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
702
+ try {
703
+ for(var _iterator1 = statement.getDeclarations()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
704
+ var decl = _step1.value;
705
+ var initializer = decl.getInitializer();
706
+ if (!initializer || !Node.isCallExpression(initializer)) continue;
707
+ var factory = initializer.getExpression().getText();
708
+ if (!isConverterFactoryName(factory)) continue;
709
+ var interfaceName = readGenericInterfaceName(initializer);
710
+ var fields = readConverterFields(initializer);
711
+ if (!fields) continue;
712
+ out.push({
713
+ converterConst: decl.getName(),
714
+ factory: factory,
715
+ interfaceName: interfaceName,
716
+ fields: fields,
717
+ line: decl.getStartLineNumber()
718
+ });
719
+ }
720
+ } catch (err) {
721
+ _didIteratorError1 = true;
722
+ _iteratorError1 = err;
723
+ } finally{
724
+ try {
725
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
726
+ _iterator1.return();
727
+ }
728
+ } finally{
729
+ if (_didIteratorError1) {
730
+ throw _iteratorError1;
731
+ }
732
+ }
733
+ }
734
+ }
735
+ } catch (err) {
736
+ _didIteratorError = true;
737
+ _iteratorError = err;
738
+ } finally{
739
+ try {
740
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
741
+ _iterator.return();
742
+ }
743
+ } finally{
744
+ if (_didIteratorError) {
745
+ throw _iteratorError;
746
+ }
747
+ }
748
+ }
749
+ return out;
750
+ }
751
+ function isConverterFactoryName(name) {
752
+ return CONVERTER_FN_NAMES.includes(name);
753
+ }
754
+ function readGenericInterfaceName(call) {
755
+ var typeArgs = call.getTypeArguments();
756
+ var result;
757
+ if (typeArgs.length > 0) {
758
+ result = typeArgs[0].getText().replaceAll(/<[^>]*>/g, '').trim();
759
+ }
760
+ return result;
761
+ }
762
+ function readConverterFields(call) {
763
+ var fnName = call.getExpression().getText();
764
+ var args = call.getArguments();
765
+ if (args.length === 0) return undefined;
766
+ var config = args[0];
767
+ if (!Node.isObjectLiteralExpression(config)) return undefined;
768
+ var fieldsLiteral;
769
+ if (fnName === SNAPSHOT_FN) {
770
+ fieldsLiteral = readObjectProperty(config, FIELDS_LITERAL_KEY);
771
+ } else {
772
+ var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
773
+ if (objectField && Node.isObjectLiteralExpression(objectField)) {
774
+ fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
775
+ }
776
+ }
777
+ if (!fieldsLiteral) return undefined;
778
+ return readFieldEntries(fieldsLiteral);
779
+ }
780
+ function readFieldEntries(fields) {
781
+ var out = [];
782
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
783
+ try {
784
+ for(var _iterator = fields.getProperties()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
785
+ var property = _step.value;
786
+ if (Node.isPropertyAssignment(property)) {
787
+ var initializer = property.getInitializer();
788
+ var converterText = initializer ? initializer.getText().replaceAll(/\s+/g, ' ').trim() : '';
789
+ var nested = initializer ? readNestedFromExpression(initializer) : undefined;
790
+ out.push({
791
+ key: property.getName(),
792
+ converter: converterText,
793
+ nestedConverterRef: nested === null || nested === void 0 ? void 0 : nested.ref,
794
+ nestedConverterInline: nested === null || nested === void 0 ? void 0 : nested.inline,
795
+ nestedIsArray: nested === null || nested === void 0 ? void 0 : nested.isArray
796
+ });
797
+ } else if (Node.isShorthandPropertyAssignment(property)) {
798
+ var name = property.getName();
799
+ out.push({
800
+ key: name,
801
+ converter: name
802
+ });
803
+ }
804
+ }
805
+ } catch (err) {
806
+ _didIteratorError = true;
807
+ _iteratorError = err;
808
+ } finally{
809
+ try {
810
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
811
+ _iterator.return();
812
+ }
813
+ } finally{
814
+ if (_didIteratorError) {
815
+ throw _iteratorError;
816
+ }
817
+ }
818
+ }
819
+ return out;
820
+ }
821
+ function readNestedFromExpression(expr) {
822
+ if (!Node.isCallExpression(expr)) return undefined;
823
+ var fnName = expr.getExpression().getText();
824
+ if (fnName !== SUB_OBJECT_FN && fnName !== OBJECT_ARRAY_FN) return undefined;
825
+ var args = expr.getArguments();
826
+ if (args.length === 0) return undefined;
827
+ var config = args[0];
828
+ if (!Node.isObjectLiteralExpression(config)) return undefined;
829
+ var objectField = readPropertyValue(config, OBJECT_FIELD_KEY);
830
+ if (!objectField) return undefined;
831
+ var isArray = fnName === OBJECT_ARRAY_FN;
832
+ var result;
833
+ if (Node.isIdentifier(objectField)) {
834
+ result = {
835
+ ref: objectField.getText(),
836
+ isArray: isArray
837
+ };
838
+ } else if (Node.isObjectLiteralExpression(objectField)) {
839
+ var fieldsLiteral = readObjectProperty(objectField, FIELDS_LITERAL_KEY);
840
+ if (fieldsLiteral) {
841
+ var inlineFields = readFieldEntries(fieldsLiteral);
842
+ result = {
843
+ inline: {
844
+ converterConst: undefined,
845
+ factory: fnName,
846
+ interfaceName: readGenericInterfaceName(expr),
847
+ fields: inlineFields,
848
+ line: expr.getStartLineNumber()
849
+ },
850
+ isArray: isArray
851
+ };
852
+ }
853
+ }
854
+ return result;
855
+ }
856
+ function readPropertyValue(literal, key) {
857
+ var property = literal.getProperty(key);
858
+ var result;
859
+ if (property && Node.isPropertyAssignment(property)) {
860
+ result = property.getInitializer();
861
+ } else if (property && Node.isShorthandPropertyAssignment(property)) {
862
+ result = property.getNameNode();
863
+ }
864
+ return result;
865
+ }
866
+ function readObjectProperty(literal, key) {
867
+ var value = readPropertyValue(literal, key);
868
+ return value && Node.isObjectLiteralExpression(value) ? value : undefined;
869
+ }
870
+ function readEnums(sourceFile) {
871
+ var out = [];
872
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
873
+ try {
874
+ for(var _iterator = sourceFile.getEnums()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
875
+ var decl = _step.value;
876
+ if (!decl.isExported()) continue;
877
+ var values = [];
878
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
879
+ try {
880
+ for(var _iterator1 = decl.getMembers()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
881
+ var member = _step1.value;
882
+ var value = member.getValue();
883
+ var description = readJsDocDescription(member.getJsDocs());
884
+ if (typeof value === 'string' || typeof value === 'number') {
885
+ values.push({
886
+ name: member.getName(),
887
+ value: value,
888
+ description: description
889
+ });
890
+ }
891
+ }
892
+ } catch (err) {
893
+ _didIteratorError1 = true;
894
+ _iteratorError1 = err;
895
+ } finally{
896
+ try {
897
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
898
+ _iterator1.return();
899
+ }
900
+ } finally{
901
+ if (_didIteratorError1) {
902
+ throw _iteratorError1;
903
+ }
904
+ }
905
+ }
906
+ out.push({
907
+ name: decl.getName(),
908
+ values: values,
909
+ description: readJsDocDescription(decl.getJsDocs())
910
+ });
911
+ }
912
+ } catch (err) {
913
+ _didIteratorError = true;
914
+ _iteratorError = err;
915
+ } finally{
916
+ try {
917
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
918
+ _iterator.return();
919
+ }
920
+ } finally{
921
+ if (_didIteratorError) {
922
+ throw _iteratorError;
923
+ }
924
+ }
925
+ }
926
+ return out;
927
+ }
928
+ function readModelGroups(sourceFile) {
929
+ var out = [];
930
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
931
+ try {
932
+ for(var _iterator = sourceFile.getInterfaces()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
933
+ var iface = _step.value;
934
+ if (!iface.isExported()) continue;
935
+ var groupTag = readJsDocTagText(iface.getJsDocs(), 'dbxModelGroup');
936
+ if (!groupTag) continue;
937
+ var containerName = iface.getName();
938
+ if (!containerName.endsWith('FirestoreCollections')) continue;
939
+ var modelNames = [];
940
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
941
+ try {
942
+ for(var _iterator1 = iface.getProperties()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
943
+ var prop = _step1.value;
944
+ var _ref;
945
+ var _prop_getTypeNode;
946
+ var tsType = (_ref = (_prop_getTypeNode = prop.getTypeNode()) === null || _prop_getTypeNode === void 0 ? void 0 : _prop_getTypeNode.getText()) !== null && _ref !== void 0 ? _ref : '';
947
+ var match = /([A-Z]\w*)FirestoreCollection(?:Factory)?(?:\b|<)/.exec(tsType);
948
+ if (match) modelNames.push(match[1]);
949
+ }
950
+ } catch (err) {
951
+ _didIteratorError1 = true;
952
+ _iteratorError1 = err;
953
+ } finally{
954
+ try {
955
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
956
+ _iterator1.return();
957
+ }
958
+ } finally{
959
+ if (_didIteratorError1) {
960
+ throw _iteratorError1;
961
+ }
962
+ }
963
+ }
964
+ out.push({
965
+ name: groupTag,
966
+ containerName: containerName,
967
+ description: readJsDocDescription(iface.getJsDocs()),
968
+ modelNames: modelNames
969
+ });
970
+ }
971
+ } catch (err) {
972
+ _didIteratorError = true;
973
+ _iteratorError = err;
974
+ } finally{
975
+ try {
976
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
977
+ _iterator.return();
978
+ }
979
+ } finally{
980
+ if (_didIteratorError) {
981
+ throw _iteratorError;
982
+ }
983
+ }
984
+ }
985
+ return out;
986
+ }
987
+ function jsDocsHaveTag(jsDocs, tagName) {
988
+ var found = false;
989
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
990
+ try {
991
+ for(var _iterator = jsDocs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
992
+ var jsDoc = _step.value;
993
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
994
+ try {
995
+ for(var _iterator1 = jsDoc.getTags()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
996
+ var tag = _step1.value;
997
+ if (tag.getTagName() === tagName) {
998
+ found = true;
999
+ break;
1000
+ }
1001
+ }
1002
+ } catch (err) {
1003
+ _didIteratorError1 = true;
1004
+ _iteratorError1 = err;
1005
+ } finally{
1006
+ try {
1007
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1008
+ _iterator1.return();
1009
+ }
1010
+ } finally{
1011
+ if (_didIteratorError1) {
1012
+ throw _iteratorError1;
1013
+ }
1014
+ }
1015
+ }
1016
+ if (found) break;
1017
+ }
1018
+ } catch (err) {
1019
+ _didIteratorError = true;
1020
+ _iteratorError = err;
1021
+ } finally{
1022
+ try {
1023
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1024
+ _iterator.return();
1025
+ }
1026
+ } finally{
1027
+ if (_didIteratorError) {
1028
+ throw _iteratorError;
1029
+ }
1030
+ }
1031
+ }
1032
+ return found;
1033
+ }
1034
+ function readJsDocTagText(jsDocs, tagName) {
1035
+ var result;
1036
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1037
+ try {
1038
+ for(var _iterator = jsDocs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1039
+ var jsDoc = _step.value;
1040
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
1041
+ try {
1042
+ for(var _iterator1 = jsDoc.getTags()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
1043
+ var tag = _step1.value;
1044
+ var _tag_getCommentText;
1045
+ if (tag.getTagName() !== tagName) continue;
1046
+ var text = (_tag_getCommentText = tag.getCommentText()) === null || _tag_getCommentText === void 0 ? void 0 : _tag_getCommentText.trim();
1047
+ if (text !== undefined && text.length > 0) {
1048
+ result = text;
1049
+ break;
1050
+ }
1051
+ }
1052
+ } catch (err) {
1053
+ _didIteratorError1 = true;
1054
+ _iteratorError1 = err;
1055
+ } finally{
1056
+ try {
1057
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
1058
+ _iterator1.return();
1059
+ }
1060
+ } finally{
1061
+ if (_didIteratorError1) {
1062
+ throw _iteratorError1;
1063
+ }
1064
+ }
1065
+ }
1066
+ if (result !== undefined) break;
1067
+ }
1068
+ } catch (err) {
1069
+ _didIteratorError = true;
1070
+ _iteratorError = err;
1071
+ } finally{
1072
+ try {
1073
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1074
+ _iterator.return();
1075
+ }
1076
+ } finally{
1077
+ if (_didIteratorError) {
1078
+ throw _iteratorError;
1079
+ }
1080
+ }
1081
+ }
1082
+ return result;
1083
+ }
1084
+ function readJsDocDescription(jsDocs) {
1085
+ var result;
1086
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1087
+ try {
1088
+ for(var _iterator = jsDocs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1089
+ var jsDoc = _step.value;
1090
+ var description = jsDoc.getDescription().trim();
1091
+ if (description.length === 0) continue;
1092
+ var paragraph = firstParagraph(description);
1093
+ if (paragraph.length > 0) {
1094
+ result = paragraph;
1095
+ break;
1096
+ }
1097
+ }
1098
+ } catch (err) {
1099
+ _didIteratorError = true;
1100
+ _iteratorError = err;
1101
+ } finally{
1102
+ try {
1103
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1104
+ _iterator.return();
1105
+ }
1106
+ } finally{
1107
+ if (_didIteratorError) {
1108
+ throw _iteratorError;
1109
+ }
1110
+ }
1111
+ }
1112
+ return result;
1113
+ }
1114
+ function firstParagraph(text) {
1115
+ var lines = text.split('\n').map(function(line) {
1116
+ return line.trim();
1117
+ });
1118
+ var collected = [];
1119
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
1120
+ try {
1121
+ for(var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
1122
+ var line = _step.value;
1123
+ if (line.startsWith('@')) break;
1124
+ if (line.length === 0) {
1125
+ if (collected.length > 0) break;
1126
+ continue;
1127
+ }
1128
+ collected.push(line);
1129
+ }
1130
+ } catch (err) {
1131
+ _didIteratorError = true;
1132
+ _iteratorError = err;
1133
+ } finally{
1134
+ try {
1135
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
1136
+ _iterator.return();
1137
+ }
1138
+ } finally{
1139
+ if (_didIteratorError) {
1140
+ throw _iteratorError;
1141
+ }
1142
+ }
1143
+ }
1144
+ return collected.join(' ').trim();
1145
+ }
1146
+ function stringLiteralValue(node) {
1147
+ var result;
1148
+ if (Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)) {
1149
+ result = node.getLiteralText();
1150
+ }
1151
+ return result;
1152
+ }
1153
+ function identifierName(node) {
1154
+ var result;
1155
+ if (Node.isIdentifier(node)) {
1156
+ result = node.getText();
1157
+ }
1158
+ return result;
1159
+ }
1160
+
1161
+ export { extractCrudEntries, extractModelsFromSource };