@vannizhang/living-atlas-content-validator 1.5.17 → 1.5.18-beta.2

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 (198) hide show
  1. package/README.md +1376 -162
  2. package/dist/configureSettings.d.ts +133 -0
  3. package/dist/configureSettings.js +61 -0
  4. package/dist/configureSettings.js.map +1 -0
  5. package/dist/data/TitleSummaryMatchingPatterns_Locations.json +829 -0
  6. package/dist/data/TitleSummaryMatchingPatterns_Sources.json +382 -0
  7. package/dist/data/TitleSummaryMatchingPatterns_Time.json +25 -0
  8. package/dist/data/TitleSummaryMatchingPatterns_Topics.json +1365 -0
  9. package/dist/data/TitleSummaryRejectedPatterns.json +44 -0
  10. package/dist/index.d.ts +27 -9
  11. package/dist/index.js +55 -9
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/accessInformation/isValidAccessInformation.js +4 -6
  14. package/dist/lib/accessInformation/isValidAccessInformation.js.map +1 -1
  15. package/dist/lib/checkProfanities/checkProfanities.d.ts +7 -0
  16. package/dist/lib/checkProfanities/checkProfanities.js +26 -0
  17. package/dist/lib/checkProfanities/checkProfanities.js.map +1 -0
  18. package/dist/lib/checkTitleAndSnippetSearchability/checkTitleAndSnippetSearchability.d.ts +34 -0
  19. package/dist/lib/{recommendedText/checkRecommendedText.js → checkTitleAndSnippetSearchability/checkTitleAndSnippetSearchability.js} +51 -25
  20. package/dist/lib/checkTitleAndSnippetSearchability/checkTitleAndSnippetSearchability.js.map +1 -0
  21. package/dist/lib/checkTitleAndSnippetSearchability/config.d.ts +97 -0
  22. package/dist/lib/checkTitleAndSnippetSearchability/config.js +41 -0
  23. package/dist/lib/checkTitleAndSnippetSearchability/config.js.map +1 -0
  24. package/dist/lib/checkTitleAndSnippetSearchability/data.d.ts +0 -0
  25. package/dist/lib/checkTitleAndSnippetSearchability/data.js +693 -0
  26. package/dist/lib/checkTitleAndSnippetSearchability/data.js.map +1 -0
  27. package/dist/lib/checkTitleAndSnippetSearchability/helpers.d.ts +117 -0
  28. package/dist/lib/checkTitleAndSnippetSearchability/helpers.js +241 -0
  29. package/dist/lib/checkTitleAndSnippetSearchability/helpers.js.map +1 -0
  30. package/dist/lib/checkTitleAndSnippetSearchability/matchDateTimeInfo.d.ts +34 -0
  31. package/dist/lib/checkTitleAndSnippetSearchability/matchDateTimeInfo.js +207 -0
  32. package/dist/lib/checkTitleAndSnippetSearchability/matchDateTimeInfo.js.map +1 -0
  33. package/dist/lib/checkTitleAndSnippetSearchability/matchLocationInfo.d.ts +34 -0
  34. package/dist/lib/checkTitleAndSnippetSearchability/matchLocationInfo.js +170 -0
  35. package/dist/lib/checkTitleAndSnippetSearchability/matchLocationInfo.js.map +1 -0
  36. package/dist/lib/checkTitleAndSnippetSearchability/matchSourceInfo.d.ts +34 -0
  37. package/dist/lib/checkTitleAndSnippetSearchability/matchSourceInfo.js +172 -0
  38. package/dist/lib/checkTitleAndSnippetSearchability/matchSourceInfo.js.map +1 -0
  39. package/dist/lib/checkTitleAndSnippetSearchability/matchTopicInfo.d.ts +36 -0
  40. package/dist/lib/checkTitleAndSnippetSearchability/matchTopicInfo.js +175 -0
  41. package/dist/lib/checkTitleAndSnippetSearchability/matchTopicInfo.js.map +1 -0
  42. package/dist/lib/checkTitleAndSnippetSearchability/scoringConfig.js.map +1 -0
  43. package/dist/lib/config.d.ts +4 -1
  44. package/dist/lib/config.js +5 -5
  45. package/dist/lib/config.js.map +1 -1
  46. package/dist/lib/deleteProtection/isDeleteProtectionEnabled.js +6 -2
  47. package/dist/lib/deleteProtection/isDeleteProtectionEnabled.js.map +1 -1
  48. package/dist/lib/deprecated/isDeprecated.js +5 -2
  49. package/dist/lib/deprecated/isDeprecated.js.map +1 -1
  50. package/dist/lib/description/isValidDescription.js +8 -5
  51. package/dist/lib/description/isValidDescription.js.map +1 -1
  52. package/dist/lib/licenseInfo/isValidLicenseInfo.js +5 -2
  53. package/dist/lib/licenseInfo/isValidLicenseInfo.js.map +1 -1
  54. package/dist/lib/sharing/isValidAccess.js +5 -2
  55. package/dist/lib/sharing/isValidAccess.js.map +1 -1
  56. package/dist/lib/ssl/isValidSSL.js +15 -6
  57. package/dist/lib/ssl/isValidSSL.js.map +1 -1
  58. package/dist/lib/summary/isValidSummary.js +6 -3
  59. package/dist/lib/summary/isValidSummary.js.map +1 -1
  60. package/dist/lib/tags/isValidTags.js +7 -3
  61. package/dist/lib/tags/isValidTags.js.map +1 -1
  62. package/dist/lib/thumbnail/isValidThumbnail.d.ts +6 -1
  63. package/dist/lib/thumbnail/isValidThumbnail.js +10 -7
  64. package/dist/lib/thumbnail/isValidThumbnail.js.map +1 -1
  65. package/dist/lib/title/isValidTitle.js +9 -3
  66. package/dist/lib/title/isValidTitle.js.map +1 -1
  67. package/dist/lib/userProfileDescription/isValidUserProfileDescription.js +44 -38
  68. package/dist/lib/userProfileDescription/isValidUserProfileDescription.js.map +1 -1
  69. package/dist/lib/userProfileName/isValidUserProfileName.js +8 -5
  70. package/dist/lib/userProfileName/isValidUserProfileName.js.map +1 -1
  71. package/dist/lib/userProfileThumbnail/isValidUserProfileThumbnail.js +6 -3
  72. package/dist/lib/userProfileThumbnail/isValidUserProfileThumbnail.js.map +1 -1
  73. package/dist/lib/util/containsNonEnglishCharacters.d.ts +13 -0
  74. package/dist/lib/util/containsNonEnglishCharacters.js +30 -0
  75. package/dist/lib/util/containsNonEnglishCharacters.js.map +1 -0
  76. package/dist/lib/util/countSentences.d.ts +23 -0
  77. package/dist/lib/util/countSentences.js +54 -0
  78. package/dist/lib/util/countSentences.js.map +1 -0
  79. package/dist/lib/util/createWordBoundaryRegex.d.ts +46 -0
  80. package/dist/lib/util/createWordBoundaryRegex.js +77 -0
  81. package/dist/lib/util/createWordBoundaryRegex.js.map +1 -0
  82. package/dist/lib/util/escapeSpecialCharacters.d.ts +7 -0
  83. package/dist/lib/util/escapeSpecialCharacters.js +22 -0
  84. package/dist/lib/util/escapeSpecialCharacters.js.map +1 -0
  85. package/dist/lib/util/getLivingAtlasSupportedItemTypes.d.ts +21 -0
  86. package/dist/lib/util/getLivingAtlasSupportedItemTypes.js +34 -0
  87. package/dist/lib/util/getLivingAtlasSupportedItemTypes.js.map +1 -0
  88. package/dist/lib/util/getNumberOfWords.js +6 -2
  89. package/dist/lib/util/getNumberOfWords.js.map +1 -1
  90. package/dist/lib/util/getScoringRules.js +6 -0
  91. package/dist/lib/util/getScoringRules.js.map +1 -1
  92. package/dist/lib/util/isLayer.js +3 -2
  93. package/dist/lib/util/isLayer.js.map +1 -1
  94. package/dist/lib/util/isUrl.d.ts +6 -0
  95. package/dist/lib/util/isUrl.js +16 -1
  96. package/dist/lib/util/isUrl.js.map +1 -1
  97. package/dist/lib/util/isValidRegexPattern.d.ts +7 -0
  98. package/dist/lib/util/isValidRegexPattern.js +20 -0
  99. package/dist/lib/util/isValidRegexPattern.js.map +1 -0
  100. package/dist/lib/util/sanitizeTags.d.ts +6 -0
  101. package/dist/lib/util/sanitizeTags.js +16 -0
  102. package/dist/lib/util/sanitizeTags.js.map +1 -0
  103. package/dist/lib/util/shouldValidateByBetaRules.js +6 -1
  104. package/dist/lib/util/shouldValidateByBetaRules.js.map +1 -1
  105. package/dist/lib/util/stringsConfig.d.ts +9 -0
  106. package/dist/lib/util/stringsConfig.js +9 -1
  107. package/dist/lib/util/stringsConfig.js.map +1 -1
  108. package/dist/lib/validate/validate.d.ts +57 -12
  109. package/dist/lib/validate/validate.js +87 -213
  110. package/dist/lib/validate/validate.js.map +1 -1
  111. package/dist/lib/validate/validateHelpers.d.ts +63 -0
  112. package/dist/lib/validate/validateHelpers.js +157 -0
  113. package/dist/lib/validate/validateHelpers.js.map +1 -0
  114. package/dist/locale/de.json +1 -1
  115. package/dist/locale/en.json +23 -23
  116. package/dist/locale/es.json +1 -1
  117. package/dist/locale/fr.json +1 -1
  118. package/dist/locale/ja.json +1 -1
  119. package/dist/locale/pt-br.json +1 -1
  120. package/dist/package-info.json +1 -1
  121. package/dist/services/content-validator-assets/config.d.ts +4 -0
  122. package/dist/services/content-validator-assets/config.js +8 -0
  123. package/dist/services/content-validator-assets/config.js.map +1 -0
  124. package/dist/services/content-validator-assets/fetchAdditonalPatterns4TitleAndSnippetSearchability.d.ts +95 -0
  125. package/dist/services/content-validator-assets/fetchAdditonalPatterns4TitleAndSnippetSearchability.js +92 -0
  126. package/dist/services/content-validator-assets/fetchAdditonalPatterns4TitleAndSnippetSearchability.js.map +1 -0
  127. package/dist/services/content-validator-assets/fetchProfanitiesData.d.ts +18 -0
  128. package/dist/services/content-validator-assets/fetchProfanitiesData.js +55 -0
  129. package/dist/services/content-validator-assets/fetchProfanitiesData.js.map +1 -0
  130. package/dist/services/content-validator-assets/helpers.d.ts +16 -0
  131. package/dist/services/content-validator-assets/helpers.js +35 -0
  132. package/dist/services/content-validator-assets/helpers.js.map +1 -0
  133. package/dist/services/custom-terms/config.d.ts +27 -0
  134. package/dist/services/custom-terms/config.js +79 -0
  135. package/dist/services/custom-terms/config.js.map +1 -0
  136. package/dist/services/custom-terms/customTerms.d.ts +229 -0
  137. package/dist/services/custom-terms/customTerms.js +394 -0
  138. package/dist/services/custom-terms/customTerms.js.map +1 -0
  139. package/dist/services/custom-terms/helpers.d.ts +8 -0
  140. package/dist/services/custom-terms/helpers.js +25 -0
  141. package/dist/services/custom-terms/helpers.js.map +1 -0
  142. package/dist/services/custom-terms/index.d.ts +3 -0
  143. package/dist/services/custom-terms/index.js +10 -0
  144. package/dist/services/custom-terms/index.js.map +1 -0
  145. package/dist/services/custom-terms-review-results/config.d.ts +31 -0
  146. package/dist/services/custom-terms-review-results/config.js +78 -0
  147. package/dist/services/custom-terms-review-results/config.js.map +1 -0
  148. package/dist/services/custom-terms-review-results/customTermsReviewResults.d.ts +133 -0
  149. package/dist/services/custom-terms-review-results/customTermsReviewResults.js +276 -0
  150. package/dist/services/custom-terms-review-results/customTermsReviewResults.js.map +1 -0
  151. package/dist/services/custom-terms-review-results/helpers.d.ts +24 -0
  152. package/dist/services/custom-terms-review-results/helpers.js +52 -0
  153. package/dist/services/custom-terms-review-results/helpers.js.map +1 -0
  154. package/dist/services/custom-terms-review-results/index.d.ts +4 -0
  155. package/dist/services/custom-terms-review-results/index.js +13 -0
  156. package/dist/services/custom-terms-review-results/index.js.map +1 -0
  157. package/dist/services/shared/addFeatures.d.ts +28 -0
  158. package/dist/services/shared/addFeatures.js +52 -0
  159. package/dist/services/shared/addFeatures.js.map +1 -0
  160. package/dist/services/shared/applyEdits.d.ts +28 -0
  161. package/dist/services/shared/applyEdits.js +53 -0
  162. package/dist/services/shared/applyEdits.js.map +1 -0
  163. package/dist/services/shared/config.d.ts +44 -0
  164. package/dist/services/shared/config.js +35 -0
  165. package/dist/services/shared/config.js.map +1 -0
  166. package/dist/services/shared/getItemInfo.d.ts +36 -0
  167. package/dist/services/shared/getItemInfo.js +56 -0
  168. package/dist/services/shared/getItemInfo.js.map +1 -0
  169. package/dist/types/index.d.ts +25 -22
  170. package/package.json +4 -3
  171. package/dist/__tests__/test-data/title-summary-data.json +0 -14654
  172. package/dist/data/TitleSummaryMatchingPatterns.json +0 -1902
  173. package/dist/lib/layers/isValidLayerCount.d.ts +0 -12
  174. package/dist/lib/layers/isValidLayerCount.js +0 -171
  175. package/dist/lib/layers/isValidLayerCount.js.map +0 -1
  176. package/dist/lib/layers/scoringConfig.d.ts +0 -10
  177. package/dist/lib/layers/scoringConfig.js +0 -20
  178. package/dist/lib/layers/scoringConfig.js.map +0 -1
  179. package/dist/lib/recommendedText/checkRecommendedText.d.ts +0 -15
  180. package/dist/lib/recommendedText/checkRecommendedText.js.map +0 -1
  181. package/dist/lib/recommendedText/helpers.d.ts +0 -15
  182. package/dist/lib/recommendedText/helpers.js +0 -62
  183. package/dist/lib/recommendedText/helpers.js.map +0 -1
  184. package/dist/lib/recommendedText/matchDateTimeInfo.d.ts +0 -9
  185. package/dist/lib/recommendedText/matchDateTimeInfo.js +0 -81
  186. package/dist/lib/recommendedText/matchDateTimeInfo.js.map +0 -1
  187. package/dist/lib/recommendedText/matchLocationInfo.d.ts +0 -9
  188. package/dist/lib/recommendedText/matchLocationInfo.js +0 -745
  189. package/dist/lib/recommendedText/matchLocationInfo.js.map +0 -1
  190. package/dist/lib/recommendedText/matchSourceInfo.d.ts +0 -9
  191. package/dist/lib/recommendedText/matchSourceInfo.js +0 -32
  192. package/dist/lib/recommendedText/matchSourceInfo.js.map +0 -1
  193. package/dist/lib/recommendedText/matchTopicInfo.d.ts +0 -9
  194. package/dist/lib/recommendedText/matchTopicInfo.js +0 -32
  195. package/dist/lib/recommendedText/matchTopicInfo.js.map +0 -1
  196. package/dist/lib/recommendedText/scoringConfig.js.map +0 -1
  197. /package/dist/lib/{recommendedText → checkTitleAndSnippetSearchability}/scoringConfig.d.ts +0 -0
  198. /package/dist/lib/{recommendedText → checkTitleAndSnippetSearchability}/scoringConfig.js +0 -0
@@ -1,12 +0,0 @@
1
- import { IItem, ValidationInfo } from '../../types';
2
- /**
3
- * Validates the number of layers of an item.
4
- *
5
- * **IMPORTANT**: The `data` object is no longer included in the item JSON. It has to be fetched via a separate request
6
- * (e.g., `https://www.arcgis.com/sharing/rest/content/items/ITEM_ID/data?f=json`).
7
- *
8
- * Currently, all items are assigned the score `LAYER_COUNT_BEST_SCORE` because `numLayers` is always 0, which is less than 3.
9
- * This module will need to be updated in a future release to score items using the actual `data` object.
10
- *
11
- */
12
- export declare const isValidLayerCount: (item: IItem) => ValidationInfo;
@@ -1,171 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isValidLayerCount = void 0;
4
- const stringsConfig_1 = require("../util/stringsConfig");
5
- const isDefined_1 = require("../util/isDefined");
6
- const scoringConfig_1 = require("./scoringConfig");
7
- /**
8
- * Validates the number of layers of an item.
9
- *
10
- * **IMPORTANT**: The `data` object is no longer included in the item JSON. It has to be fetched via a separate request
11
- * (e.g., `https://www.arcgis.com/sharing/rest/content/items/ITEM_ID/data?f=json`).
12
- *
13
- * Currently, all items are assigned the score `LAYER_COUNT_BEST_SCORE` because `numLayers` is always 0, which is less than 3.
14
- * This module will need to be updated in a future release to score items using the actual `data` object.
15
- *
16
- */
17
- const isValidLayerCount = (item) => {
18
- const stringsConfig = (0, stringsConfig_1.getStringsConfig)();
19
- const itemType = item.type;
20
- /**
21
- * Had a meeting with Jim Herries on May/30/2023, Jim confirmed that we should only check layer count for these three item types
22
- */
23
- const shouldCheckLayerCount = itemType === 'Feature Service' ||
24
- itemType === 'Feature Collection' ||
25
- itemType === 'Map Service' ||
26
- itemType === 'Image Service';
27
- if (shouldCheckLayerCount === false) {
28
- return {
29
- property: 'layers',
30
- label: stringsConfig.layers.LABEL,
31
- title: stringsConfig.layers.TITLE,
32
- maxScore: 0,
33
- score: 0,
34
- messages: [],
35
- weight: 0,
36
- weightFactor: 0,
37
- critical: false,
38
- };
39
- }
40
- // let baseMaps = [];
41
- // let operationalLayers = [];
42
- let layers = [];
43
- let numLayers = 0;
44
- // // scoring rules
45
- // const SCORING = getScoringRules(item, scoringRulesConfig);
46
- const issues = {
47
- property: 'layers',
48
- label: stringsConfig.layers.LABEL,
49
- title: stringsConfig.layers.TITLE,
50
- maxScore: 0,
51
- score: 0,
52
- messages: [],
53
- weight: scoringConfig_1.scoringConfig.weight,
54
- weightFactor: 0,
55
- critical: false,
56
- };
57
- switch (itemType) {
58
- case 'Feature Collection':
59
- if ((0, isDefined_1.isDefined)(item === null || item === void 0 ? void 0 : item.data)) {
60
- if ((0, isDefined_1.isDefined)(item.data.layers)) {
61
- item.data.layers.forEach((layer) => {
62
- numLayers += layer.featureSet.features.length;
63
- });
64
- }
65
- layers = (0, isDefined_1.isDefined)(item.data.layers) ? item.data.layers : [];
66
- }
67
- else {
68
- numLayers = 1;
69
- }
70
- break;
71
- case 'Feature Service':
72
- if ((0, isDefined_1.isDefined)(item.data)) {
73
- layers = (0, isDefined_1.isDefined)(item.data.layers) ? item.data.layers : [];
74
- numLayers = layers.length;
75
- }
76
- else {
77
- numLayers = 1;
78
- }
79
- break;
80
- case 'Image Service':
81
- if ((0, isDefined_1.isDefined)(item.data)) {
82
- layers = (0, isDefined_1.isDefined)(item.data.layers) ? item.data.layers : [];
83
- numLayers = layers.length;
84
- }
85
- else {
86
- numLayers = 1;
87
- }
88
- break;
89
- case 'Map Service':
90
- if ((0, isDefined_1.isDefined)(item.data)) {
91
- layers = (0, isDefined_1.isDefined)(item.data.layers) ? item.data.layers : [];
92
- numLayers = layers.length;
93
- }
94
- else {
95
- numLayers = 1;
96
- }
97
- break;
98
- // case 'Scene Service':
99
- // if (isDefined(item.data)) {
100
- // // operationalLayers = isDefined(item.data.operationalLayers) ? item.data.operationalLayers : [];
101
- // layers = isDefined(item.data.layers) ? item.data.layers : [];
102
- // numLayers = layers.length;
103
- // }
104
- // break;
105
- // case 'Vector Tile Service':
106
- // if (isDefined(item.data)) {
107
- // operationalLayers = isDefined(item.data.operationalLayers)
108
- // ? item.data.operationalLayers
109
- // : [];
110
- // layers = isDefined(item.data.layers) ? item.data.layers : [];
111
- // }
112
- // numLayers = 0;
113
- // break;
114
- // case 'Web Map':
115
- // if (isDefined(item.data)) {
116
- // baseMaps = isDefined(item.data.baseMap)
117
- // ? item.data.baseMap.baseMapLayers
118
- // : [];
119
- // operationalLayers = isDefined(item.data.operationalLayers)
120
- // ? item.data.operationalLayers
121
- // : [];
122
- // layers = isDefined(item.data.layers) ? item.data.layers : [];
123
- // // sometimes operational layers returns false
124
- // numLayers =
125
- // baseMaps.length +
126
- // (operationalLayers.length ? operationalLayers.length : 0) +
127
- // layers.length;
128
- // } else {
129
- // numLayers = 1;
130
- // }
131
- // break;
132
- // case 'Web Scene':
133
- // if (isDefined(item.data)) {
134
- // layers = isDefined(item.data.layers) ? item.data.layers : [];
135
- // numLayers = layers.length;
136
- // }
137
- // break;
138
- default:
139
- break;
140
- }
141
- if (numLayers <= 3) {
142
- // issues.score = SCORING.LAYER_COUNT_BEST_SCORE;
143
- issues.weightFactor =
144
- scoringConfig_1.scoringConfig.weightFactors.DEFAULT.LAYER_COUNT_BEST_FACTOR;
145
- // issues.messages.push({
146
- // // code: stringsConfig.layers.BEST_CODE,
147
- // message: stringsConfig.layers.BEST_MESSAGE,
148
- // });
149
- }
150
- if (numLayers > 3 && numLayers <= 7) {
151
- // issues.score = SCORING.LAYER_COUNT_BETTER_SCORE;
152
- issues.weightFactor =
153
- scoringConfig_1.scoringConfig.weightFactors.DEFAULT.LAYER_COUNT_BETTER_FACTOR;
154
- issues.messages.push({
155
- // code: stringsConfig.layers.BETTER_CODE,
156
- message: stringsConfig.layers.BETTER_MESSAGE,
157
- });
158
- }
159
- if (numLayers > 7) {
160
- // issues.score = SCORING.LAYER_COUNT_GOOD_SCORE;
161
- issues.weightFactor =
162
- scoringConfig_1.scoringConfig.weightFactors.DEFAULT.LAYER_COUNT_GOOD_FACTOR;
163
- issues.messages.push({
164
- // code: stringsConfig.layers.GOOD_CODE,
165
- message: stringsConfig.layers.GOOD_MESSAGE,
166
- });
167
- }
168
- return issues;
169
- };
170
- exports.isValidLayerCount = isValidLayerCount;
171
- //# sourceMappingURL=isValidLayerCount.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isValidLayerCount.js","sourceRoot":"","sources":["../../../src/lib/layers/isValidLayerCount.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export declare const scoringConfig: {
2
- weight: number;
3
- weightFactors: {
4
- DEFAULT: {
5
- LAYER_COUNT_BEST_FACTOR: number;
6
- LAYER_COUNT_BETTER_FACTOR: number;
7
- LAYER_COUNT_GOOD_FACTOR: number;
8
- };
9
- };
10
- };
@@ -1,20 +0,0 @@
1
- "use strict";
2
- // import { ScoringConfig } from '../../types';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.scoringConfig = void 0;
5
- exports.scoringConfig = {
6
- weight: 1,
7
- weightFactors: {
8
- DEFAULT: {
9
- LAYER_COUNT_BEST_FACTOR: 1,
10
- LAYER_COUNT_BETTER_FACTOR: 0.5,
11
- LAYER_COUNT_GOOD_FACTOR: 0.125,
12
- },
13
- // INTERNATIONAL: {
14
- // LAYER_COUNT_BEST_FACTOR: 1,
15
- // LAYER_COUNT_BETTER_FACTOR: 0.5,
16
- // LAYER_COUNT_GOOD_FACTOR: 0.125,
17
- // },
18
- },
19
- };
20
- //# sourceMappingURL=scoringConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoringConfig.js","sourceRoot":"","sources":["../../../src/lib/layers/scoringConfig.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAElC,QAAA,aAAa,GAAG;IACzB,MAAM,EAAE,CAAC;IACT,aAAa,EAAE;QACX,OAAO,EAAE;YACL,uBAAuB,EAAE,CAAC;YAC1B,yBAAyB,EAAE,GAAG;YAC9B,uBAAuB,EAAE,KAAK;SACjC;QACD,mBAAmB;QACnB,kCAAkC;QAClC,sCAAsC;QACtC,sCAAsC;QACtC,KAAK;KACR;CACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- import { IItem, ValidationInfo } from '../../types';
2
- /**
3
- * Check for required and recommended text in items' title and summary text.
4
- * We want Title and Summary to do a great job establishing the 4 key things: topic from a source for year and region.
5
- *
6
- * Title/summary text are required to state what the thing is, e.g. "Earthquakes" or "Public Health Dashboard"
7
- * Title/summary text often benefit from having words like "Global" or "World" to indicate the area included.
8
- * Title/summary text often benefit from having a source indicated (unless the source name is very long)
9
- * Title/summary text often benefit from having a version, vintage or year indicated
10
- *
11
- *
12
- * @see https://devtopia.esri.com/kenn4005/Curator_Suggestions/issues/9
13
- *
14
- */
15
- export declare const checkRecommendedText: (item: IItem) => ValidationInfo;
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkRecommendedText.js","sourceRoot":"","sources":["../../../src/lib/recommendedText/checkRecommendedText.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export declare const removeOverlapped: (arr: string[]) => string[];
2
- /**
3
- * Removes duplicate strings from an array, ignoring case sensitivity.
4
- *
5
- * @param arr - The array of strings to deduplicate.
6
- * @returns A new array with duplicates removed, preserving the original case of the first occurrence.
7
- */
8
- export declare const deduplicate: (arr: string[]) => string[];
9
- /**
10
- * Cleans up an array of strings by escaping special characters and trimming whitespace.
11
- *
12
- * @param strs - An array of strings to be cleaned.
13
- * @returns A new array of strings with special characters escaped and whitespace trimmed.
14
- */
15
- export declare const escapeSpecialCharacters: (strs: string[]) => string[];
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.escapeSpecialCharacters = exports.deduplicate = exports.removeOverlapped = void 0;
4
- const removeOverlapped = (arr) => {
5
- const output = [];
6
- arr.sort((a, b) => b.length - a.length);
7
- for (const candidate of arr) {
8
- let shouldNotInclude = false;
9
- for (const word of output) {
10
- if (word.toLocaleLowerCase().includes(candidate.toLowerCase())) {
11
- shouldNotInclude = true;
12
- break;
13
- }
14
- }
15
- if (shouldNotInclude) {
16
- continue;
17
- }
18
- output.push(candidate);
19
- }
20
- return output;
21
- };
22
- exports.removeOverlapped = removeOverlapped;
23
- /**
24
- * Removes duplicate strings from an array, ignoring case sensitivity.
25
- *
26
- * @param arr - The array of strings to deduplicate.
27
- * @returns A new array with duplicates removed, preserving the original case of the first occurrence.
28
- */
29
- const deduplicate = (arr) => {
30
- if (!arr || arr.length === 0) {
31
- return [];
32
- }
33
- const seen = new Set();
34
- return arr.filter((str) => {
35
- const lowerStr = str.toLocaleLowerCase();
36
- if (seen.has(lowerStr)) {
37
- return false;
38
- }
39
- seen.add(lowerStr);
40
- return true;
41
- });
42
- };
43
- exports.deduplicate = deduplicate;
44
- /**
45
- * Cleans up an array of strings by escaping special characters and trimming whitespace.
46
- *
47
- * @param strs - An array of strings to be cleaned.
48
- * @returns A new array of strings with special characters escaped and whitespace trimmed.
49
- */
50
- const escapeSpecialCharacters = (strs) => {
51
- if (!strs || strs.length === 0) {
52
- return [];
53
- }
54
- const output = strs.map((str) => {
55
- // Find all special characters and replaces each one with its escaped version.
56
- // The `\\$&` part means "replace with a backslash followed by the matched character".
57
- return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').trim();
58
- });
59
- return output.filter((str) => str !== '');
60
- };
61
- exports.escapeSpecialCharacters = escapeSpecialCharacters;
62
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/recommendedText/helpers.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,GAAa,EAAY,EAAE;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,MAAM,SAAS,IAAI,GAAG,EAAE;QACzB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE;gBAC5D,gBAAgB,GAAG,IAAI,CAAC;gBACxB,MAAM;aACT;SACJ;QAED,IAAI,gBAAgB,EAAE;YAClB,SAAS;SACZ;QAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC1B;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAvBW,QAAA,gBAAgB,oBAuB3B;AAEF;;;;;GAKG;AACI,MAAM,WAAW,GAAG,CAAC,GAAa,EAAY,EAAE;IACnD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YACpB,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAfW,QAAA,WAAW,eAetB;AAEF;;;;;GAKG;AACI,MAAM,uBAAuB,GAAG,CAAC,IAAc,EAAE,EAAE;IACtD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,OAAO,EAAE,CAAC;KACb;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,8EAA8E;QAC9E,sFAAsF;QACtF,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC;AAZW,QAAA,uBAAuB,2BAYlC"}
@@ -1,9 +0,0 @@
1
- import { IItem } from '../../types';
2
- /**
3
- * Matches date and time information from the title and snippet of an item.
4
- *
5
- * @param {IItem} item - The item containing title and snippet to be matched against.
6
- * @param {string[]} [customMatchingPattenrs] - Optional custom matching patterns to be included in the regex.
7
- * @returns {string[]} - An array of matched date and time information strings.
8
- */
9
- export declare const matchDateTimeInfo: (item: IItem, customMatchingPattenrs?: string[]) => string[];
@@ -1,81 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.matchDateTimeInfo = void 0;
7
- const helpers_1 = require("./helpers");
8
- const TitleSummaryMatchingPatterns_json_1 = __importDefault(require("../../data/TitleSummaryMatchingPatterns.json"));
9
- /**
10
- * Match time intervals relative to the present moment rather than specifying an absolute date or time
11
- * - `\b`: Word boundary to ensure we match whole words and not substrings.
12
- * - `(?:(last|past|next|current|latest|every)\s+)?`: A non-capturing group to optionally match words like "last", "past", "next", "current", "latest", and "every" followed by one or more spaces (\s+). The ? at the end makes this group optional.
13
- * - `(\d+)?`: An optional capturing group to match one or more digits. This covers patterns like "7", "14", "48", etc.
14
- * - `\s*`: Zero or more spaces. This handles cases where there might or might not be spaces between the number and the time unit.
15
- * - `(year|month|week|day|hour|minute)s?`: A capturing group to match the time units: "year", "month", "week", "day", "hour", and "minute". The s? makes the "s" optional to handle both singular and plural forms (e.g., "day" and "days").
16
- */
17
- const relativeDateTimeRegex = /\b(?:(last|past|next|current|latest|every)\s+)(\d+)?\s*(year|month|week|day|hour|minute)s?\b/gi;
18
- /**
19
- * A regular expression that matches time duration: e.g. '10-months', '5 Year', '3 hours'
20
- */
21
- const timeDurationRegEx = /\b(\d+)(?:-)?\s*(year|month|week|day|hour|minute)s?\b/gi;
22
- /**
23
- * A regular expression that matches the provided year-related patterns. e.g. '2022', '2020-2024', '1950 to 2050'
24
- * Here's a breakdown of the regular expression:
25
- *
26
- * - `\b`: Word boundary to ensure we match whole words and not substrings.
27
- * - `(?:\d{4}|present)`: A non-capturing group to match either a four-digit year (\d{4}) or the word "present".
28
- * - `(?:\s*(?:-|and|to)\s*(?:\d{4}|present))?`: An optional non-capturing group to match a range or conjunction with:
29
- * - `(?:-|and|to)`: A non-capturing group to match a hyphen (-), the word "and", or the word "to".
30
- * - `(?:\d{4}|present)`: A non-capturing group to match either a four-digit year or the word "present".
31
- * - `\b`: Word boundary to ensure we match whole words and not substrings.
32
- */
33
- const yearRangeRegEx = /\b(?:\d{4}|present)(?:\s*(?:-|and|to)\s*(?:\d{4}|present))?\b/gi;
34
- /**
35
- * Match text like '20th century'
36
- */
37
- const centuryRegEx = /\b(\d{1,2}(?:st|nd|rd|th)\s+century)\b/gi;
38
- const additionalPatterns = /\b(once\s+a\s+day|monthly|daily|hourly|annual)\b/gi;
39
- let matchingPatterns = TitleSummaryMatchingPatterns_json_1.default.time.join('|');
40
- /**
41
- * Matches date and time information from the title and snippet of an item.
42
- *
43
- * @param {IItem} item - The item containing title and snippet to be matched against.
44
- * @param {string[]} [customMatchingPattenrs] - Optional custom matching patterns to be included in the regex.
45
- * @returns {string[]} - An array of matched date and time information strings.
46
- */
47
- const matchDateTimeInfo = (item, customMatchingPattenrs) => {
48
- // const regex = new RegExp(regex1, 'gi')
49
- const title = item.title || '';
50
- const snippet = item.snippet || '';
51
- const combined = [
52
- relativeDateTimeRegex,
53
- timeDurationRegEx,
54
- yearRangeRegEx,
55
- centuryRegEx,
56
- additionalPatterns,
57
- ];
58
- customMatchingPattenrs = (0, helpers_1.escapeSpecialCharacters)(customMatchingPattenrs);
59
- if (customMatchingPattenrs && customMatchingPattenrs.length > 0) {
60
- matchingPatterns = `${matchingPatterns}|${customMatchingPattenrs.join('|')}`;
61
- }
62
- const patternsFromTextLabelingData = new RegExp(`\\b(${matchingPatterns})\\b`, 'gi');
63
- // console.log(dateInfoText, patternsFromTextLabelingData)
64
- combined.push(patternsFromTextLabelingData);
65
- let candidates = [];
66
- for (const regex of combined) {
67
- const matchedLocationsFromTitle = title.match(regex) || [];
68
- const matchedLocationsFromSnippet = snippet.match(regex) || [];
69
- const matched = [
70
- ...matchedLocationsFromTitle,
71
- ...matchedLocationsFromSnippet,
72
- ];
73
- for (const text of matched) {
74
- candidates.push(text);
75
- }
76
- }
77
- candidates = (0, helpers_1.deduplicate)(candidates);
78
- return (0, helpers_1.removeOverlapped)(candidates);
79
- };
80
- exports.matchDateTimeInfo = matchDateTimeInfo;
81
- //# sourceMappingURL=matchDateTimeInfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matchDateTimeInfo.js","sourceRoot":"","sources":["../../../src/lib/recommendedText/matchDateTimeInfo.ts"],"names":[],"mappings":";;;;;;AACA,uCAImB;AACnB,qHAAwF;AAExF;;;;;;;GAOG;AACH,MAAM,qBAAqB,GACvB,gGAAgG,CAAC;AAErG;;GAEG;AACH,MAAM,iBAAiB,GACnB,yDAAyD,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,MAAM,cAAc,GAChB,iEAAiE,CAAC;AAEtE;;GAEG;AACH,MAAM,YAAY,GAAG,0CAA0C,CAAC;AAEhE,MAAM,kBAAkB,GAAG,oDAAoD,CAAC;AAEhF,IAAI,gBAAgB,GAAG,2CAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEnE;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,CAC7B,IAAW,EACX,sBAAiC,EACzB,EAAE;IACV,yCAAyC;IAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG;QACb,qBAAqB;QACrB,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,kBAAkB;KACrB,CAAC;IAEF,sBAAsB,GAAG,IAAA,iCAAuB,EAAC,sBAAsB,CAAC,CAAC;IAEzE,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7D,gBAAgB,GAAG,GAAG,gBAAgB,IAAI,sBAAsB,CAAC,IAAI,CACjE,GAAG,CACN,EAAE,CAAC;KACP;IAED,MAAM,4BAA4B,GAAG,IAAI,MAAM,CAC3C,OAAO,gBAAgB,MAAM,EAC7B,IAAI,CACP,CAAC;IACF,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAE5C,IAAI,UAAU,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;QAC1B,MAAM,yBAAyB,GAAa,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrE,MAAM,2BAA2B,GAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE/B,MAAM,OAAO,GAAG;YACZ,GAAG,yBAAyB;YAC5B,GAAG,2BAA2B;SACjC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;YACxB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;KACJ;IAED,UAAU,GAAG,IAAA,qBAAW,EAAC,UAAU,CAAC,CAAC;IAErC,OAAO,IAAA,0BAAgB,EAAC,UAAU,CAAC,CAAC;AACxC,CAAC,CAAC;AApDW,QAAA,iBAAiB,qBAoD5B"}
@@ -1,9 +0,0 @@
1
- import { IItem } from '../../types';
2
- /**
3
- * Matches location information from an item's title and snippet using predefined or custom matching patterns.
4
- *
5
- * @param {IItem} item - The item containing title and snippet to search for location information.
6
- * @param {string[]} [customMatchingPattenrs] - Optional custom matching patterns to be included in the search.
7
- * @returns {string[]} - An array of matched location strings after deduplication and removing overlaps.
8
- */
9
- export declare const matchLocationInfo: (item: IItem, customMatchingPattenrs?: string[]) => string[];