@vannizhang/living-atlas-content-validator 1.0.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 (153) hide show
  1. package/LICENSE +101 -0
  2. package/README.md +196 -0
  3. package/dist/index.d.ts +17 -0
  4. package/dist/index.js +35 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/accessInformation/isValidAccessInformation.d.ts +10 -0
  7. package/dist/lib/accessInformation/isValidAccessInformation.js +48 -0
  8. package/dist/lib/accessInformation/isValidAccessInformation.js.map +1 -0
  9. package/dist/lib/accessInformation/scoringRulesConfig.d.ts +3 -0
  10. package/dist/lib/accessInformation/scoringRulesConfig.js +37 -0
  11. package/dist/lib/accessInformation/scoringRulesConfig.js.map +1 -0
  12. package/dist/lib/config.d.ts +6 -0
  13. package/dist/lib/config.js +61 -0
  14. package/dist/lib/config.js.map +1 -0
  15. package/dist/lib/description/isValidDescription.d.ts +18 -0
  16. package/dist/lib/description/isValidDescription.js +95 -0
  17. package/dist/lib/description/isValidDescription.js.map +1 -0
  18. package/dist/lib/description/scoringRulesConfig.d.ts +3 -0
  19. package/dist/lib/description/scoringRulesConfig.js +49 -0
  20. package/dist/lib/description/scoringRulesConfig.js.map +1 -0
  21. package/dist/lib/layers/isValidLayerCount.d.ts +12 -0
  22. package/dist/lib/layers/isValidLayerCount.js +148 -0
  23. package/dist/lib/layers/isValidLayerCount.js.map +1 -0
  24. package/dist/lib/layers/scoringRulesConfig.d.ts +3 -0
  25. package/dist/lib/layers/scoringRulesConfig.js +49 -0
  26. package/dist/lib/layers/scoringRulesConfig.js.map +1 -0
  27. package/dist/lib/licenseInfo/isValidLicenseInfo.d.ts +36 -0
  28. package/dist/lib/licenseInfo/isValidLicenseInfo.js +108 -0
  29. package/dist/lib/licenseInfo/isValidLicenseInfo.js.map +1 -0
  30. package/dist/lib/licenseInfo/scoringRulesConfig.d.ts +3 -0
  31. package/dist/lib/licenseInfo/scoringRulesConfig.js +49 -0
  32. package/dist/lib/licenseInfo/scoringRulesConfig.js.map +1 -0
  33. package/dist/lib/sharing/isValidAccess.d.ts +22 -0
  34. package/dist/lib/sharing/isValidAccess.js +79 -0
  35. package/dist/lib/sharing/isValidAccess.js.map +1 -0
  36. package/dist/lib/sharing/scoringRulesConfig.d.ts +3 -0
  37. package/dist/lib/sharing/scoringRulesConfig.js +49 -0
  38. package/dist/lib/sharing/scoringRulesConfig.js.map +1 -0
  39. package/dist/lib/ssl/isValidSSL.d.ts +14 -0
  40. package/dist/lib/ssl/isValidSSL.js +62 -0
  41. package/dist/lib/ssl/isValidSSL.js.map +1 -0
  42. package/dist/lib/ssl/scoringRulesConfig.d.ts +3 -0
  43. package/dist/lib/ssl/scoringRulesConfig.js +43 -0
  44. package/dist/lib/ssl/scoringRulesConfig.js.map +1 -0
  45. package/dist/lib/summary/isValidSummary.d.ts +17 -0
  46. package/dist/lib/summary/isValidSummary.js +114 -0
  47. package/dist/lib/summary/isValidSummary.js.map +1 -0
  48. package/dist/lib/summary/scoringRulesConfig.d.ts +3 -0
  49. package/dist/lib/summary/scoringRulesConfig.js +55 -0
  50. package/dist/lib/summary/scoringRulesConfig.js.map +1 -0
  51. package/dist/lib/tags/isValidTags.d.ts +14 -0
  52. package/dist/lib/tags/isValidTags.js +82 -0
  53. package/dist/lib/tags/isValidTags.js.map +1 -0
  54. package/dist/lib/tags/scoringRulesConfig.d.ts +3 -0
  55. package/dist/lib/tags/scoringRulesConfig.js +43 -0
  56. package/dist/lib/tags/scoringRulesConfig.js.map +1 -0
  57. package/dist/lib/thumbnail/isValidThumbnail.d.ts +10 -0
  58. package/dist/lib/thumbnail/isValidThumbnail.js +90 -0
  59. package/dist/lib/thumbnail/isValidThumbnail.js.map +1 -0
  60. package/dist/lib/thumbnail/scoringRulesConfig.d.ts +3 -0
  61. package/dist/lib/thumbnail/scoringRulesConfig.js +43 -0
  62. package/dist/lib/thumbnail/scoringRulesConfig.js.map +1 -0
  63. package/dist/lib/title/isValidTitle.d.ts +23 -0
  64. package/dist/lib/title/isValidTitle.js +128 -0
  65. package/dist/lib/title/isValidTitle.js.map +1 -0
  66. package/dist/lib/title/scoringRulesConfig.d.ts +3 -0
  67. package/dist/lib/title/scoringRulesConfig.js +54 -0
  68. package/dist/lib/title/scoringRulesConfig.js.map +1 -0
  69. package/dist/lib/userProfileDescription/isValidUserProfileDescription.d.ts +23 -0
  70. package/dist/lib/userProfileDescription/isValidUserProfileDescription.js +138 -0
  71. package/dist/lib/userProfileDescription/isValidUserProfileDescription.js.map +1 -0
  72. package/dist/lib/userProfileDescription/scoringRulesConfig.d.ts +3 -0
  73. package/dist/lib/userProfileDescription/scoringRulesConfig.js +61 -0
  74. package/dist/lib/userProfileDescription/scoringRulesConfig.js.map +1 -0
  75. package/dist/lib/userProfileName/isValidUserProfileName.d.ts +10 -0
  76. package/dist/lib/userProfileName/isValidUserProfileName.js +60 -0
  77. package/dist/lib/userProfileName/isValidUserProfileName.js.map +1 -0
  78. package/dist/lib/userProfileName/scoringRulesConfig.d.ts +3 -0
  79. package/dist/lib/userProfileName/scoringRulesConfig.js +43 -0
  80. package/dist/lib/userProfileName/scoringRulesConfig.js.map +1 -0
  81. package/dist/lib/userProfileThumbnail/isValidUserProfileThumbnail.d.ts +22 -0
  82. package/dist/lib/userProfileThumbnail/isValidUserProfileThumbnail.js +62 -0
  83. package/dist/lib/userProfileThumbnail/isValidUserProfileThumbnail.js.map +1 -0
  84. package/dist/lib/userProfileThumbnail/scoringRulesConfig.d.ts +3 -0
  85. package/dist/lib/userProfileThumbnail/scoringRulesConfig.js +37 -0
  86. package/dist/lib/userProfileThumbnail/scoringRulesConfig.js.map +1 -0
  87. package/dist/lib/util/assertString.d.ts +11 -0
  88. package/dist/lib/util/assertString.js +20 -0
  89. package/dist/lib/util/assertString.js.map +1 -0
  90. package/dist/lib/util/contains.d.ts +7 -0
  91. package/dist/lib/util/contains.js +17 -0
  92. package/dist/lib/util/contains.js.map +1 -0
  93. package/dist/lib/util/getNumberOfStrings.d.ts +6 -0
  94. package/dist/lib/util/getNumberOfStrings.js +25 -0
  95. package/dist/lib/util/getNumberOfStrings.js.map +1 -0
  96. package/dist/lib/util/getScoringRules.d.ts +21 -0
  97. package/dist/lib/util/getScoringRules.js +99 -0
  98. package/dist/lib/util/getScoringRules.js.map +1 -0
  99. package/dist/lib/util/getThumbnailFileName.d.ts +15 -0
  100. package/dist/lib/util/getThumbnailFileName.js +26 -0
  101. package/dist/lib/util/getThumbnailFileName.js.map +1 -0
  102. package/dist/lib/util/isArcGISDomain.d.ts +6 -0
  103. package/dist/lib/util/isArcGISDomain.js +16 -0
  104. package/dist/lib/util/isArcGISDomain.js.map +1 -0
  105. package/dist/lib/util/isArcGISOnlineReservedThumbnailName.d.ts +6 -0
  106. package/dist/lib/util/isArcGISOnlineReservedThumbnailName.js +19 -0
  107. package/dist/lib/util/isArcGISOnlineReservedThumbnailName.js.map +1 -0
  108. package/dist/lib/util/isDefined.d.ts +8 -0
  109. package/dist/lib/util/isDefined.js +15 -0
  110. package/dist/lib/util/isDefined.js.map +1 -0
  111. package/dist/lib/util/isEmail.d.ts +6 -0
  112. package/dist/lib/util/isEmail.js +14 -0
  113. package/dist/lib/util/isEmail.js.map +1 -0
  114. package/dist/lib/util/isEmpty.d.ts +6 -0
  115. package/dist/lib/util/isEmpty.js +17 -0
  116. package/dist/lib/util/isEmpty.js.map +1 -0
  117. package/dist/lib/util/isFeatureCollection.d.ts +7 -0
  118. package/dist/lib/util/isFeatureCollection.js +13 -0
  119. package/dist/lib/util/isFeatureCollection.js.map +1 -0
  120. package/dist/lib/util/isHosted.d.ts +7 -0
  121. package/dist/lib/util/isHosted.js +17 -0
  122. package/dist/lib/util/isHosted.js.map +1 -0
  123. package/dist/lib/util/isSecureProtocol.d.ts +6 -0
  124. package/dist/lib/util/isSecureProtocol.js +16 -0
  125. package/dist/lib/util/isSecureProtocol.js.map +1 -0
  126. package/dist/lib/util/isUppercase.d.ts +4 -0
  127. package/dist/lib/util/isUppercase.js +14 -0
  128. package/dist/lib/util/isUppercase.js.map +1 -0
  129. package/dist/lib/util/isUrl.d.ts +4 -0
  130. package/dist/lib/util/isUrl.js +12 -0
  131. package/dist/lib/util/isUrl.js.map +1 -0
  132. package/dist/lib/util/matches.d.ts +12 -0
  133. package/dist/lib/util/matches.js +22 -0
  134. package/dist/lib/util/matches.js.map +1 -0
  135. package/dist/lib/util/stringsConfig.d.ts +17 -0
  136. package/dist/lib/util/stringsConfig.js +42 -0
  137. package/dist/lib/util/stringsConfig.js.map +1 -0
  138. package/dist/lib/util/toString.d.ts +11 -0
  139. package/dist/lib/util/toString.js +31 -0
  140. package/dist/lib/util/toString.js.map +1 -0
  141. package/dist/lib/validate/validate.d.ts +11 -0
  142. package/dist/lib/validate/validate.js +62 -0
  143. package/dist/lib/validate/validate.js.map +1 -0
  144. package/dist/locale/de.json +195 -0
  145. package/dist/locale/en.json +195 -0
  146. package/dist/locale/es.json +195 -0
  147. package/dist/locale/fr.json +195 -0
  148. package/dist/locale/ja.json +195 -0
  149. package/dist/locale/pt-br.json +195 -0
  150. package/dist/types/index.d.ts +114 -0
  151. package/dist/types/index.js +16 -0
  152. package/dist/types/index.js.map +1 -0
  153. package/package.json +55 -0
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmail = void 0;
4
+ /**
5
+ * Check if input string is a valid email address
6
+ * @param str
7
+ * @returns boolean value, true if input is a valid email address, false otherwise.
8
+ */
9
+ const isEmail = (str) => {
10
+ const regexp = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
11
+ return regexp.test(str);
12
+ };
13
+ exports.isEmail = isEmail;
14
+ //# sourceMappingURL=isEmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEmail.js","sourceRoot":"","sources":["../../../src/lib/util/isEmail.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE;IAC5C,MAAM,MAAM,GACR,qJAAqJ,CAAC;IAC1J,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AAJW,QAAA,OAAO,WAIlB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check if a string is empty
3
+ * @param str input string
4
+ * @returns boolean value, true if input string is empty, false otherwise.
5
+ */
6
+ export declare const isEmpty: (str: string) => boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEmpty = void 0;
4
+ /**
5
+ * Check if a string is empty
6
+ * @param str input string
7
+ * @returns boolean value, true if input string is empty, false otherwise.
8
+ */
9
+ const isEmpty = (str) => {
10
+ if (str === null || str === undefined || !str) {
11
+ return true;
12
+ }
13
+ str = str.trim();
14
+ return str.length === 0;
15
+ };
16
+ exports.isEmpty = isEmpty;
17
+ //# sourceMappingURL=isEmpty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../../src/lib/util/isEmpty.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAW,EAAE;IAC5C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,EAAE;QAC3C,OAAO,IAAI,CAAC;KACf;IAED,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjB,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5B,CAAC,CAAC;AARW,QAAA,OAAO,WAQlB"}
@@ -0,0 +1,7 @@
1
+ import { IItem } from '../../types';
2
+ /**
3
+ * Check and see if the input Item is a Feature Collection
4
+ * @param item
5
+ * @returns
6
+ */
7
+ export default function isFeatureCollection(item: IItem): boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Check and see if the input Item is a Feature Collection
5
+ * @param item
6
+ * @returns
7
+ */
8
+ function isFeatureCollection(item) {
9
+ const itemType = item.type;
10
+ return itemType === 'Feature Collection';
11
+ }
12
+ exports.default = isFeatureCollection;
13
+ //# sourceMappingURL=isFeatureCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isFeatureCollection.js","sourceRoot":"","sources":["../../../src/lib/util/isFeatureCollection.ts"],"names":[],"mappings":";;AAIA;;;;GAIG;AACH,SAAwB,mBAAmB,CAAC,IAAW;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAoC,CAAC;IAC3D,OAAO,QAAQ,KAAK,oBAAoB,CAAC;AAC7C,CAAC;AAHD,sCAGC"}
@@ -0,0 +1,7 @@
1
+ import { IItem } from '../../types';
2
+ /**
3
+ * Check and see if an item is Hosted Service
4
+ * @param item
5
+ * @returns
6
+ */
7
+ export declare const isHosted: (item: IItem) => boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isHosted = void 0;
4
+ /**
5
+ * Check and see if an item is Hosted Service
6
+ * @param item
7
+ * @returns
8
+ */
9
+ const isHosted = (item) => {
10
+ const { typeKeywords } = item;
11
+ if (!typeKeywords) {
12
+ return false;
13
+ }
14
+ return typeKeywords.includes('Hosted Service');
15
+ };
16
+ exports.isHosted = isHosted;
17
+ //# sourceMappingURL=isHosted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isHosted.js","sourceRoot":"","sources":["../../../src/lib/util/isHosted.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,MAAM,QAAQ,GAAG,CAAC,IAAW,EAAW,EAAE;IAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;IAE9B,IAAI,CAAC,YAAY,EAAE;QACf,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACnD,CAAC,CAAC;AARW,QAAA,QAAQ,YAQnB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Check if the input URL starts with `https`
3
+ * @param url
4
+ * @returns
5
+ */
6
+ export declare const isSecureProtocol: (url: string) => boolean;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSecureProtocol = void 0;
4
+ /**
5
+ * Check if the input URL starts with `https`
6
+ * @param url
7
+ * @returns
8
+ */
9
+ const isSecureProtocol = (url) => {
10
+ if (!url) {
11
+ return false;
12
+ }
13
+ return url.startsWith('https:');
14
+ };
15
+ exports.isSecureProtocol = isSecureProtocol;
16
+ //# sourceMappingURL=isSecureProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isSecureProtocol.js","sourceRoot":"","sources":["../../../src/lib/util/isSecureProtocol.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC5C,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Check if input string is Uppercase
3
+ */
4
+ export declare const isUppercase: (str: string) => boolean;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUppercase = void 0;
4
+ /**
5
+ * Check if input string is Uppercase
6
+ */
7
+ const isUppercase = (str) => {
8
+ if (!str) {
9
+ return false;
10
+ }
11
+ return str === str.toUpperCase();
12
+ };
13
+ exports.isUppercase = isUppercase;
14
+ //# sourceMappingURL=isUppercase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUppercase.js","sourceRoot":"","sources":["../../../src/lib/util/isUppercase.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;IAChD,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Check if input string is a valid URL
3
+ */
4
+ export declare const isUrl: (str: string) => boolean;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUrl = void 0;
4
+ /**
5
+ * Check if input string is a valid URL
6
+ */
7
+ const isUrl = (str) => {
8
+ const regexp = /^(?:(?:https?|ftp):\/\/)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:\/\S*)?$/;
9
+ return regexp.test(str);
10
+ };
11
+ exports.isUrl = isUrl;
12
+ //# sourceMappingURL=isUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isUrl.js","sourceRoot":"","sources":["../../../src/lib/util/isUrl.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,MAAM,KAAK,GAAG,CAAC,GAAW,EAAW,EAAE;IAC1C,MAAM,MAAM,GACR,8aAA8a,CAAC;IAEnb,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AALW,QAAA,KAAK,SAKhB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns a boolean value indicating whether the regular expression pattern matches any part of the input str.
3
+ *
4
+ * It checks if the pattern parameter is a regular expression.
5
+ * If it is not, it creates a new regular expression object from the pattern parameter and optional flags parameter.
6
+ *
7
+ * @param str inpput string
8
+ * @param pattern a regular expression
9
+ * @param flags optional string flags for the regular expression
10
+ * @returns
11
+ */
12
+ export declare const matches: (str: string, pattern: RegExp, flags?: string) => boolean;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matches = void 0;
4
+ /**
5
+ * Returns a boolean value indicating whether the regular expression pattern matches any part of the input str.
6
+ *
7
+ * It checks if the pattern parameter is a regular expression.
8
+ * If it is not, it creates a new regular expression object from the pattern parameter and optional flags parameter.
9
+ *
10
+ * @param str inpput string
11
+ * @param pattern a regular expression
12
+ * @param flags optional string flags for the regular expression
13
+ * @returns
14
+ */
15
+ const matches = (str, pattern, flags) => {
16
+ if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {
17
+ pattern = new RegExp(pattern, flags);
18
+ }
19
+ return pattern.test(str);
20
+ };
21
+ exports.matches = matches;
22
+ //# sourceMappingURL=matches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matches.js","sourceRoot":"","sources":["../../../src/lib/util/matches.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;GAUG;AACI,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,OAAe,EAAE,KAAc,EAAE,EAAE;IACpE,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,iBAAiB,EAAE;QAC/D,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;KACxC;IACD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAC;AALW,QAAA,OAAO,WAKlB"}
@@ -0,0 +1,17 @@
1
+ import enStringsConfig from '../../locale/en.json';
2
+ /**
3
+ * Living Atlas Supported language. There are JSON files for each of these six languages
4
+ */
5
+ type Locale = 'en' | 'de' | 'es' | 'fr' | 'ja' | 'pt-br';
6
+ type StringsJSON = typeof enStringsConfig;
7
+ /**
8
+ * Set user preferred language for Strings Config JSON
9
+ * @param preferredLocale
10
+ */
11
+ export declare const setStrings: (preferredLocale: Locale) => void;
12
+ /**
13
+ * Get Strings Config data for user preferred language
14
+ * @returns
15
+ */
16
+ export declare const getStringsConfig: () => StringsJSON;
17
+ export {};
@@ -0,0 +1,42 @@
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.getStringsConfig = exports.setStrings = void 0;
7
+ // import config from '../config';
8
+ const de_json_1 = __importDefault(require("../../locale/de.json"));
9
+ const en_json_1 = __importDefault(require("../../locale/en.json"));
10
+ const es_json_1 = __importDefault(require("../../locale/es.json"));
11
+ const fr_json_1 = __importDefault(require("../../locale/fr.json"));
12
+ const ja_json_1 = __importDefault(require("../../locale/ja.json"));
13
+ const pt_br_json_1 = __importDefault(require("../../locale/pt-br.json"));
14
+ /**
15
+ * Strings JSON language
16
+ */
17
+ let locale = 'en';
18
+ const stringsByLocale = {
19
+ de: de_json_1.default,
20
+ en: en_json_1.default,
21
+ es: es_json_1.default,
22
+ fr: fr_json_1.default,
23
+ ja: ja_json_1.default,
24
+ 'pt-br': pt_br_json_1.default,
25
+ };
26
+ /**
27
+ * Set user preferred language for Strings Config JSON
28
+ * @param preferredLocale
29
+ */
30
+ const setStrings = (preferredLocale) => {
31
+ locale = preferredLocale;
32
+ };
33
+ exports.setStrings = setStrings;
34
+ /**
35
+ * Get Strings Config data for user preferred language
36
+ * @returns
37
+ */
38
+ const getStringsConfig = () => {
39
+ return stringsByLocale[locale] || en_json_1.default;
40
+ };
41
+ exports.getStringsConfig = getStringsConfig;
42
+ //# sourceMappingURL=stringsConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringsConfig.js","sourceRoot":"","sources":["../../../src/lib/util/stringsConfig.ts"],"names":[],"mappings":";;;;;;AAAA,kCAAkC;AAClC,mEAAmD;AACnD,mEAAmD;AACnD,mEAAmD;AACnD,mEAAmD;AACnD,mEAAmD;AACnD,yEAAwD;AASxD;;GAEG;AACH,IAAI,MAAM,GAAW,IAAI,CAAC;AAE1B,MAAM,eAAe,GAAgC;IACjD,EAAE,EAAE,iBAAe;IACnB,EAAE,EAAE,iBAAe;IACnB,EAAE,EAAE,iBAAe;IACnB,EAAE,EAAE,iBAAe;IACnB,EAAE,EAAE,iBAAe;IACnB,OAAO,EAAE,oBAAiB;CAC7B,CAAC;AAEF;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,eAAuB,EAAE,EAAE;IAClD,MAAM,GAAG,eAAe,CAAC;AAC7B,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAEF;;;GAGG;AACI,MAAM,gBAAgB,GAAG,GAAgB,EAAE;IAC9C,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,iBAAe,CAAC;AACtD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns a string representation of the input.
3
+ *
4
+ * Checks if the input is an object and if it has a toString() method, and if it does, it converts it to a string using that method.
5
+ * If the input is not an object, null, undefined, NaN, or an empty string, it returns an empty string.
6
+ * Otherwise, it returns the input converted to a string using the String() constructor.
7
+ *
8
+ * @param input
9
+ * @returns string representation of the input
10
+ */
11
+ export declare const toString: (input: any) => string;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toString = void 0;
4
+ /**
5
+ * Returns a string representation of the input.
6
+ *
7
+ * Checks if the input is an object and if it has a toString() method, and if it does, it converts it to a string using that method.
8
+ * If the input is not an object, null, undefined, NaN, or an empty string, it returns an empty string.
9
+ * Otherwise, it returns the input converted to a string using the String() constructor.
10
+ *
11
+ * @param input
12
+ * @returns string representation of the input
13
+ */
14
+ const toString = (input) => {
15
+ if (typeof input === 'object' && input !== null) {
16
+ if (typeof input.toString === 'function') {
17
+ input = input.toString();
18
+ }
19
+ else {
20
+ input = '[object Object]';
21
+ }
22
+ }
23
+ else if (input === null ||
24
+ typeof input === 'undefined' ||
25
+ (isNaN(input) && !input.length)) {
26
+ input = '';
27
+ }
28
+ return String(input);
29
+ };
30
+ exports.toString = toString;
31
+ //# sourceMappingURL=toString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toString.js","sourceRoot":"","sources":["../../../src/lib/util/toString.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;GASG;AACI,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAU,EAAE;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;QAC7C,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;YACtC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;SAC5B;aAAM;YACH,KAAK,GAAG,iBAAiB,CAAC;SAC7B;KACJ;SAAM,IACH,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,WAAW;QAC5B,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EACjC;QACE,KAAK,GAAG,EAAE,CAAC;KACd;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC,CAAC;AAfW,QAAA,QAAQ,YAenB"}
@@ -0,0 +1,11 @@
1
+ import { IItem, UserProfile, ValidationResult } from '../../types';
2
+ /**
3
+ * Validate a single item and the item owner's user profile in ArcGIS Online.
4
+ *
5
+ * It returns null if the input item is not supported by the Living Atlas.
6
+ *
7
+ * @param item
8
+ * @param userProfile
9
+ * @returns
10
+ */
11
+ export declare const validate: (item: IItem, userProfile: UserProfile) => ValidationResult;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validate = void 0;
4
+ const __1 = require("../../");
5
+ const config_1 = require("../config");
6
+ /**
7
+ * Validate a single item and the item owner's user profile in ArcGIS Online.
8
+ *
9
+ * It returns null if the input item is not supported by the Living Atlas.
10
+ *
11
+ * @param item
12
+ * @param userProfile
13
+ * @returns
14
+ */
15
+ const validate = (item, userProfile) => {
16
+ const { type } = item;
17
+ // should not proceed because input item is not supported by Living Atlas, just return null
18
+ if (config_1.LIVING_ATLAS_SUPPORTED_ITEM_TYPES.includes(type) === false) {
19
+ return null;
20
+ }
21
+ const validationResult = {
22
+ validatedItem: {
23
+ access: (0, __1.isValidAccess)(item),
24
+ accessInformation: (0, __1.isValidAccessInformation)(item),
25
+ description: (0, __1.isValidDescription)(item),
26
+ layerCount: (0, __1.isValidLayerCount)(item),
27
+ licenseInfo: (0, __1.isValidLicenseInfo)(item),
28
+ snippet: (0, __1.isValidSummary)(item),
29
+ ssl: (0, __1.isValidSSL)(item),
30
+ tags: (0, __1.isValidTags)(item),
31
+ thumbnail: (0, __1.isValidThumbnail)(item),
32
+ title: (0, __1.isValidTitle)(item),
33
+ },
34
+ validatedProfile: {
35
+ userProfileDescription: (0, __1.isValidUserProfileDescription)(userProfile, item),
36
+ userProfileFullName: (0, __1.isValidUserProfileName)(userProfile, item),
37
+ userProfileThumbnail: (0, __1.isValidUserProfileThumbnail)(userProfile, item),
38
+ },
39
+ id: item.id,
40
+ };
41
+ validationResult.totalScore = getTotalScore(validationResult);
42
+ return validationResult;
43
+ };
44
+ exports.validate = validate;
45
+ /**
46
+ * Get total score by summing up scores from individaul validated items
47
+ * @param validationResult
48
+ * @returns total score
49
+ */
50
+ const getTotalScore = (validationResult) => {
51
+ let totalScore = 0;
52
+ const { validatedItem, validatedProfile } = validationResult;
53
+ const validatedItems = [
54
+ ...Object.values(validatedItem),
55
+ ...Object.values(validatedProfile),
56
+ ];
57
+ for (const { score } of validatedItems) {
58
+ totalScore += score;
59
+ }
60
+ return totalScore;
61
+ };
62
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/lib/validate/validate.ts"],"names":[],"mappings":";;;AACA,8BAcgB;AAChB,sCAGmB;AAEnB;;;;;;;;GAQG;AACI,MAAM,QAAQ,GAAG,CACpB,IAAW,EACX,WAAwB,EACR,EAAE;IAClB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEtB,2FAA2F;IAC3F,IACI,0CAAiC,CAAC,QAAQ,CACtC,IAAoC,CACvC,KAAK,KAAK,EACb;QACE,OAAO,IAAI,CAAC;KACf;IAED,MAAM,gBAAgB,GAAqB;QACvC,aAAa,EAAE;YACX,MAAM,EAAE,IAAA,iBAAa,EAAC,IAAI,CAAC;YAC3B,iBAAiB,EAAE,IAAA,4BAAwB,EAAC,IAAI,CAAC;YACjD,WAAW,EAAE,IAAA,sBAAkB,EAAC,IAAI,CAAC;YACrC,UAAU,EAAE,IAAA,qBAAiB,EAAC,IAAI,CAAC;YACnC,WAAW,EAAE,IAAA,sBAAkB,EAAC,IAAI,CAAC;YACrC,OAAO,EAAE,IAAA,kBAAc,EAAC,IAAI,CAAC;YAC7B,GAAG,EAAE,IAAA,cAAU,EAAC,IAAI,CAAC;YACrB,IAAI,EAAE,IAAA,eAAW,EAAC,IAAI,CAAC;YACvB,SAAS,EAAE,IAAA,oBAAgB,EAAC,IAAI,CAAC;YACjC,KAAK,EAAE,IAAA,gBAAY,EAAC,IAAI,CAAC;SAC5B;QACD,gBAAgB,EAAE;YACd,sBAAsB,EAAE,IAAA,iCAA6B,EACjD,WAAW,EACX,IAAI,CACP;YACD,mBAAmB,EAAE,IAAA,0BAAsB,EAAC,WAAW,EAAE,IAAI,CAAC;YAC9D,oBAAoB,EAAE,IAAA,+BAA2B,EAC7C,WAAW,EACX,IAAI,CACP;SACJ;QACD,EAAE,EAAE,IAAI,CAAC,EAAE;KACd,CAAC;IAEF,gBAAgB,CAAC,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAE9D,OAAO,gBAAgB,CAAC;AAC5B,CAAC,CAAC;AA7CW,QAAA,QAAQ,YA6CnB;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,gBAAkC,EAAE,EAAE;IACzD,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;IAE7D,MAAM,cAAc,GAAG;QACnB,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;QAC/B,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;KACrC,CAAC;IAEF,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,cAAc,EAAE;QACpC,UAAU,IAAI,KAAK,CAAC;KACvB;IAED,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
@@ -0,0 +1,195 @@
1
+ {
2
+ "accessInformation": {
3
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie Text als Quellennachweis für Organisationen ein, die Quellennachweise erfordern: Datenanbieter, Anwendungsentwickler usw.",
4
+ "TOOLTIP_GUIDANCE_INTL": "",
5
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Für die Eingabe von Text an dieser Stelle werden vollständige Punkte vergeben.",
6
+ "TOOLTIP_SCORING_MSG_INTL": "",
7
+ "LABEL": "Quellennachweise hinzufügen",
8
+ "EMPTY_STRING_CODE": "",
9
+ "MINIMUM_WORD_COUNT_CODE": "",
10
+ "EMPTY_STRING_MESSAGE": "Quellennachweise hinzufügen",
11
+ "MINIMUM_WORD_COUNT_MESSAGE": "",
12
+ "WEIGHT": 7
13
+ },
14
+ "description": {
15
+ "TOOLTIP_GUIDANCE_DEFAULT": "Eine gute Beschreibung beantwortet die Frage \"Was ist das?\" und \"Was zeigt dieser Layer/diese Karte/diese App an?\" direkt. Einige kurze Absätze sind in der Regel ausreichend, um grundlegende Fragen wie \"wer, was, wann, wo, warum und wie\" (natürlich nicht unbedingt in dieser Reihenfolge) zu beantworten. Vermeiden Sie spezielle Fachbegriffe oder Abkürzungen. Stellen Sie Quellinformationen und detaillierte Erläuterungen über Web-Links bereit.<br/><br/>Nutzen Sie beim Hinzufügen von Hyperlinks den Link-Editor in ArcGIS Online.",
16
+ "TOOLTIP_GUIDANCE_INTL": "",
17
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden für ca. 4 bis 5 Sätze mit durchschnittlich 12 Wörtern pro Satz vergeben. Punkte werden für die Bereitstellung von Links zu detaillierten Informationen vergeben.",
18
+ "TOOLTIP_SCORING_MSG_INTL": "Punkte werden für eine Beschreibung vergeben. Punkte werden für die Bereitstellung von Links zu detaillierten Informationen vergeben.",
19
+ "LABEL": "Beschreibung verbessern",
20
+ "EMPTY_STRING_CODE": "",
21
+ "MINIMUM_WORD_COUNT_CODE": "",
22
+ "CONTAINS_LINKS_CODE": "",
23
+ "EMPTY_STRING_MESSAGE": "Eine Beschreibung ist erforderlich",
24
+ "MINIMUM_WORD_COUNT_MESSAGE": "Die Beschreibung ist zu kurz",
25
+ "CONTAINS_LINKS_MESSAGE": "Die Beschreibung enthält keine Links",
26
+ "WEIGHT": 3
27
+ },
28
+ "layers": {
29
+ "TOOLTIP_GUIDANCE_DEFAULT": "Für die Erstellung einer übersichtlichen, fokussierten Karte werden im Allgemeinen 1 bis 5 Layer benötigt. Scheinen für ein Element immer noch weitere Layer benötigt zu werden, weist dies in der Regel daraufhin, dass das Informationsprodukt vom Ersteller noch nicht ausreichend durchdacht wurde. Es ist somit ein Anzeichen dafür, dass mehr Zeit auf die Planung und Präzisierung des Informationsprodukts verwendet werden muss.",
30
+ "TOOLTIP_GUIDANCE_INTL": "",
31
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Ein Layer erhält die maximale Punktzahl, wobei mit steigender Layer-Anzahl Punkte reduziert werden.",
32
+ "TOOLTIP_SCORING_MSG_INTL": "",
33
+ "LABEL": "Anzahl der Layer reduzieren",
34
+ "EMPTY_STRING_CODE": "",
35
+ "GOOD_CODE": "",
36
+ "BETTER_CODE": "",
37
+ "BEST_CODE": "",
38
+ "EMPTY_STRING_MESSAGE": "Es sind keine zu überprüfenden Layer vorhanden. Für diesen Elementtyp muss jedoch mindestens ein Layer vorliegen.",
39
+ "GOOD_MESSAGE": "7 Layer werden überschritten",
40
+ "BETTER_MESSAGE": "Es sind zwischen 4 und 7 Layer vorhanden",
41
+ "BEST_MESSAGE": "",
42
+ "WEIGHT": 5
43
+ },
44
+ "licenseInfo": {
45
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie sämtliche Zugriffs- und Nutzungsbeschränkungen an, die seitens Ihrer Organisation oder des Datenanbieters erforderlich sind. <p>Nutzen Sie beim Hinzufügen von Hyperlinks den Link-Editor in ArcGIS Online.</p>",
46
+ "TOOLTIP_GUIDANCE_INTL": "Geben Sie sämtliche Zugriffs- und Nutzungsbeschränkungen an, die seitens Ihrer Organisation oder des Datenanbieters erforderlich sind.",
47
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Es werden Punkte vergeben, wenn hier mindestens zwei Wörter angegeben wurden. Punkte werden ebenfalls für einen Text mit einem Hyperlink (zu weiteren Informationen mit einer umfassenden Erläuterung der Beschränkungen) vergeben.",
48
+ "TOOLTIP_SCORING_MSG_INTL": "Punkte werden für Informationen zu Zugriff und Nutzung vergeben. Punkte werden ebenfalls für einen Text mit einem Hyperlink (zu weiteren Informationen mit einer umfassenden Erläuterung der Beschränkungen) vergeben.",
49
+ "LABEL": "Zugriffs- und Nutzungsbeschränkungen verbessern",
50
+ "EMPTY_STRING_CODE": "",
51
+ "MINIMUM_WORD_COUNT_CODE": "",
52
+ "CONTAINS_NO_LINKS_CODE": "",
53
+ "EMPTY_STRING_MESSAGE": "Zugriffs- und Nutzungsbeschränkungen hinzufügen",
54
+ "MINIMUM_WORD_COUNT_MESSAGE": "Zugriffs-/Nutzungsinformationen sind zu kurz",
55
+ "CONTAINS_NO_LINKS_MESSAGE": "Zugriffs-/Nutzungsinformationen enthalten keine Links",
56
+ "WEIGHT": 8
57
+ },
58
+ "sharing": {
59
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie das Element nach der Fertigstellung für die Öffentlichkeit frei, sodass es in den Living Atlas aufgenommen werden kann.",
60
+ "TOOLTIP_GUIDANCE_INTL": "",
61
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Die volle Punktzahl wird für Festlegung der Freigabefunktionen auf \"Öffentlich\" vergeben.",
62
+ "TOOLTIP_SCORING_MSG_INTL": "",
63
+ "LABEL": "Muss öffentlich sein",
64
+ "EMPTY_STRING_CODE": "",
65
+ "PRIVATE_CODE": "",
66
+ "ORG_CODE": "",
67
+ "EMPTY_STRING_MESSAGE": "",
68
+ "PRIVATE_MESSAGE": "Muss öffentlich sein",
69
+ "ORG_MESSAGE": "Muss öffentlich sein",
70
+ "WEIGHT": 4
71
+ },
72
+ "ssl": {
73
+ "TOOLTIP_GUIDANCE_DEFAULT": "Bei HTTPS handelt es sich um ein Protokoll, das sichere Internettransaktionen zwischen Webbrowsern und Webservern ermöglicht. Für alle URLs Ihrer Layer, Webkarten und Web Mapping-Anwendungen empfiehlt sich die Verwendung von HTTPS. Weitere Informationen zu Sicherheitseinstellungen für Ihre Organisation finden Sie in <a href=\"https://doc.arcgis.com/en/arcgis-online/administer/configure-security.htm\" target=\"_blank\">diesem Artikel</a>.",
74
+ "TOOLTIP_GUIDANCE_INTL": "",
75
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden für URLs mit HTTPS vergeben.",
76
+ "TOOLTIP_SCORING_MSG_INTL": "",
77
+ "LABEL": "Verwenden Sie HTTPS in der URL.",
78
+ "EMPTY_STRING_CODE": "",
79
+ "IS_SSL_DISABLED_CODE": "",
80
+ "EMPTY_STRING_MESSAGE": "",
81
+ "IS_SSL_DISABLED_MESSAGE": "Aktualisieren Sie das Element für die Verwendung von HTTPS.",
82
+ "SSL_FAIL_INSTR": "Um HTTPS für Ihren Webbrowser zu aktivieren, müssen Sie ein SSL-Zertifikat installieren. Ist ein vertrauenswürdiges SSL-Zertifikat vorhanden, ist die Verschlüsselung von übermittelten Daten auf dem Webserver möglich. Wenden Sie sich an den Systemadministrator, damit er im IIS-Manager (Internet Information Services Manager) ein SSL-Zertifikat installiert.<br/><br/>Veröffentlichen Sie den Layer nach der Aktivierung von SSL erneut, entfernen Sie den alten Layer aus der Webkarte, fügen Sie der Karte den erneut veröffentlichten Layer hinzu, und speichern Sie sie.",
83
+ "WEIGHT": 9
84
+ },
85
+ "summary": {
86
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie mindestens zwei Sätze ein, die eine Antwort auf die Frage <b>Was ist das?</b> darstellen. Bei der Zusammenfassung handelt es sich um eine Kurzversion der unten stehenden vollständigen Beschreibung.",
87
+ "TOOLTIP_GUIDANCE_INTL": "Geben Sie mindestens zwei Sätze ein, die eine Antwort auf die Frage \"Was ist das?\" darstellen. Bei der Zusammenfassung handelt es sich um eine Kurzversion der unten stehenden vollständigen Beschreibung.",
88
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden für 1 bis 2 Sätze mit mindestens 10 Wörtern vergeben. Punkte werden abgezogen, wenn die Wörter <i>copy</i>, <i>demo</i>, <i>test</i> oder <i>eval</i> verwendet werden.",
89
+ "TOOLTIP_SCORING_MSG_INTL": "Punkte werden für eine Zusammenfassung vergeben.",
90
+ "LABEL": "Zusammenfassung verbessern",
91
+ "EMPTY_STRING_CODE": "",
92
+ "BLACKLISTED_CHARS_CODE": "",
93
+ "BLACKLISTED_WORDS_CODE": "",
94
+ "MINIMUM_WORD_COUNT_CODE": "",
95
+ "EMPTY_STRING_MESSAGE": "Die Zusammenfassung ist erforderlich",
96
+ "MINIMUM_WORD_COUNT_MESSAGE": "Die Zusammenfassung ist zu kurz",
97
+ "BLACKLISTED_CHARS_MESSAGE": "Die Zusammenfassung enthält unzulässige Zeichen",
98
+ "BLACKLISTED_WORDS_MESSAGE": "\"Copy\", \"demo\", \"test\" oder \"eval\" werden in der Zusammenfassung verwendet.",
99
+ "WEIGHT": 2
100
+ },
101
+ "tags": {
102
+ "TOOLTIP_GUIDANCE_DEFAULT": "<p>Klicken Sie auf die Schaltfläche \"Bearbeiten\", um die Tags zu verbessern.</p> Geben Sie mindestens drei Tags ein, die dazu beitragen, dass Ihre Arbeit besser gefunden wird. Im Titel, in der Zusammenfassung oder in der Beschreibung enthaltene Wörter müssen nicht wiederholt werden, da sie bereits in Suchvorgängen verwendet werden. Richten Sie Ihr Augenmerk auf Tags, über die andere Nutzer leichter zu Ihrem Element finden werden. Mithilfe zusätzlicher Tags lässt sich die Frage \"Wie kann dieses Element von anderen Personen gefunden werden, die dessen Titel oder die Branche nicht kennen?\" beantworten. Wenn der Titel Ihrer Karte beispielsweise \"Bevölkerungsdichte\" lautet, können Sie auch Tags wie \"Überbevölkerung\" in Ihrem Element verwenden, da diese über die Bevölkerungsdichte bestimmt wird.",
103
+ "TOOLTIP_GUIDANCE_INTL": "",
104
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden für mindestens drei Tags insgesamt vergeben. Punkte werden abgezogen, wenn die Tags <i>copy</i>, <i>demo</i>, <i>test</i> oder <i>eval</i> verwendet werden.",
105
+ "TOOLTIP_SCORING_MSG_INTL": "",
106
+ "TOOLTIP_EDIT_LINK_LABEL": "Zum Bearbeiten der Tags hier klicken",
107
+ "LABEL": "Tags verbessern",
108
+ "EMPTY_STRING_CODE": "",
109
+ "EMPTY_STRING_MESSAGE": "Es muss mindestens ein Tag angegeben werden.",
110
+ "MINIMUM_NUM_TAGS_MESSAGE": "Fügen Sie mindestens drei Tags hinzu.",
111
+ "BLACKLISTED_WORDS_MESSAGE": "\"Copy\", \"demo\", \"test\" oder \"eval\" werden als Tags verwendet.",
112
+ "WEIGHT": 6
113
+ },
114
+ "thumbnail": {
115
+ "TOOLTIP_GUIDANCE_DEFAULT": "Laden Sie eine ansprechende Miniaturansicht hoch, die den Layer, die Karte oder die App von der besten Seite zeigt. Zoomen Sie auf einen Maßstab, bei dem das Element gut aussieht, und erstellen Sie eine Bildschirmaufnahme. Schneiden Sie anschließend das Bild auf die standardmäßige Bildgröße für Miniaturansichten (600 x 400 Pixel) zu, oder passen Sie die Größe entsprechend an.",
116
+ "TOOLTIP_GUIDANCE_INTL": "",
117
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Durch das Hinzufügen einer benutzerdefinierten Miniaturansicht der Standardgröße 600 x 400 Pixel (B x H) werden vollständige Punkte erzielt.",
118
+ "TOOLTIP_SCORING_MSG_INTL": "",
119
+ "LABEL": "Miniaturansicht verbessern",
120
+ "EMPTY_STRING_CODE": "",
121
+ "BAD_THUMBNAIL_ERROR_CODE": "",
122
+ "SMALL_THUMBNAIL_FILENAME_ISSUE_CODE": "",
123
+ "THUMBNAIL_SIZE_CODE": "",
124
+ "EMPTY_STRING_MESSAGE": "",
125
+ "BAD_THUMBNAIL_ERROR_MESSAGE": "Bei der Miniaturansicht ist ein Formatfehler aufgetreten.",
126
+ "SMALL_THUMBNAIL_FILENAME_ISSUE_MESSAGE": "Miniaturansicht mit benutzerdefinierter Standardgröße ist erforderlich",
127
+ "THUMBNAIL_SIZE_MESSAGE": "Hochauflösende Miniaturansicht ist erforderlich",
128
+ "WEIGHT": 0
129
+ },
130
+ "title": {
131
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie einen leicht erfassbaren Titel ein, und vermeiden Sie die Verwendung von speziellen Fachbegriffen oder Abkürzungen. Der Titel des Elements soll eine Antwort auf die Frage <b>Was ist das?</b> darstellen.",
132
+ "TOOLTIP_GUIDANCE_INTL": "Geben Sie einen leicht erfassbaren Titel ein, und vermeiden Sie die Verwendung von speziellen Fachbegriffen oder Abkürzungen. Der Titel des Elements soll eine Antwort auf die Frage \"Was ist das?\" darstellen.",
133
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden abgezogen, wenn <i>copy</i>, <i>demo</i>, <i>test</i>, <i>eval</i>, <i>_</i> oder Wörter in GROSSBUCHSTABEN verwendet werden. Es werden Punkte vergeben, wenn der Titel mindestens zwei Wörter enthält.",
134
+ "TOOLTIP_SCORING_MSG_INTL": "Punkte werden für einen Titel vergeben.",
135
+ "LABEL": "Titel verbessern",
136
+ "EMPTY_STRING_CODE": "",
137
+ "STRING_COUNT_CODE": "",
138
+ "UPPER_CASE_CODE": "",
139
+ "BLACKLISTED_CHARS_CODE": "",
140
+ "BLACKLISTED_WORDS_CODE": "",
141
+ "EMPTY_STRING_MESSAGE": "Der Titel ist erforderlich",
142
+ "STRING_COUNT_MESSAGE": "Der Titel ist zu kurz",
143
+ "UPPER_CASE_MESSAGE": "Der Titel darf nicht vollständig aus Großbuchstaben bestehen",
144
+ "BLACKLISTED_CHARS_MESSAGE": "Der Titel enthält ein unzulässiges Zeichen",
145
+ "BLACKLISTED_WORDS_MESSAGE": "Der Titel enthält ein unzulässiges Wort",
146
+ "WEIGHT": 1
147
+ },
148
+ "userProfileDescription": {
149
+ "TOOLTIP_GUIDANCE_DEFAULT": "Stellen Sie sich selbst, Ihr Team und Ihre Organisation vor, und geben Sie eine E-Mail-Adresse für Kontaktanfragen an. Lesen Sie <a href=\"https://www.esri.com/arcgis-blog/products/arcgis-online/sharing-collaboration/create-a-great-profile/\" target=\"_blank\">diesen Blogbeitrag zu Empfehlungen für Ihr ArcGIS Online-Profil</a>.",
150
+ "TOOLTIP_GUIDANCE_INTL": "",
151
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Es werden Punkte vergeben, wenn diese Beschreibung mindestens 20 Wörter umfasst. Es werden Punkte vergeben, wenn ein Hyperlink zu dazugehörigen Informationen sowie eine E-Mail-Adresse für die Kontaktaufnahme mit der zuständigen Person oder dem zuständigen Team bereitgestellt werden.",
152
+ "TOOLTIP_SCORING_MSG_INTL": "Punkte werden für eine Beschreibung vergeben. Es werden Punkte vergeben, wenn ein Hyperlink zu dazugehörigen Informationen sowie eine E-Mail-Adresse für die Kontaktaufnahme mit der zuständigen Person oder dem zuständigen Team bereitgestellt werden.",
153
+ "LABEL": "Profilbeschreibung verbessern",
154
+ "EMPTY_STRING_CODE": "",
155
+ "BLACKLISTED_CHARS_CODE": "",
156
+ "NO_VALID_EMAIL_CODE": "",
157
+ "NO_VALID_URL_CODE": "",
158
+ "MIM_NUM_WORDS_CODE": "",
159
+ "MIM_NUM_SENTENCES_CODE": "",
160
+ "EMPTY_STRING_MESSAGE": "Das Profil muss eine Beschreibung aufweisen",
161
+ "BLACKLISTED_CHARS_MESSAGE": "",
162
+ "NO_VALID_EMAIL_MESSAGE": "Die Profilbeschreibung enthält keine E-Mail-Adresse",
163
+ "NO_VALID_URL_MESSAGE": "Die Profilbeschreibung enthält keinen Link",
164
+ "MIN_NUM_WORDS_MESSAGE": "Die Profilbeschreibung enthält nicht die Mindestanzahl von Wörtern",
165
+ "MIN_NUM_SENTENCES_MESSAGE": "Die Profilbeschreibung enthält nicht die Mindestanzahl von Sätzen",
166
+ "WEIGHT": 12
167
+ },
168
+ "userProfileName": {
169
+ "TOOLTIP_GUIDANCE_DEFAULT": "Geben Sie Ihren Namen ein. Wer ist Ansprechpartner bei etwaigen Fragen? Lesen Sie <a href=\"https://www.esri.com/arcgis-blog/products/arcgis-online/sharing-collaboration/create-a-great-profile/\" target=\"_blank\">diesen Blogbeitrag zu Empfehlungen für Ihr ArcGIS Online-Profil</a>.",
170
+ "TOOLTIP_GUIDANCE_INTL": "",
171
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Punkte werden für das Ausfüllen ohne die Verwendung von Unterstrichen (\"_\") gewährt.",
172
+ "TOOLTIP_SCORING_MSG_INTL": "",
173
+ "LABEL": "Vollständigen Namen des Profils verbessern",
174
+ "EMPTY_STRING_CODE": "",
175
+ "BLACKLISTED_CHARS_CODE": "",
176
+ "EMPTY_STRING_MESSAGE": "Vollständiger Name des Profils entspricht nicht der Mindestlänge",
177
+ "BLACKLISTED_CHARS_MESSAGE": "Vollständiger Name des Profils enthält ein unzulässiges Zeichen",
178
+ "WEIGHT": 11
179
+ },
180
+ "userProfileThumbnail": {
181
+ "TOOLTIP_GUIDANCE_DEFAULT": "Anwender möchten wissen, wer der Urheber einer Karte oder App ist. Geben Sie Ihr Bild oder das Logo Ihrer Organisation zwecks visueller Wiedererkennung frei. Lesen Sie <a href=\"https://www.esri.com/arcgis-blog/products/arcgis-online/sharing-collaboration/create-a-great-profile/\" target=\"_blank\">diesen Blogbeitrag zu Empfehlungen für Ihr ArcGIS Online-Profil</a>.",
182
+ "TOOLTIP_GUIDANCE_INTL": "",
183
+ "TOOLTIP_SCORING_MSG_DEFAULT": "Für ein Bild werden Punkte vergeben, solange es sich nicht um das Standardbild handelt. Es werden Bonuspunkte vergeben, wenn es die erforderlichen Bilddimensionen aufweist.",
184
+ "TOOLTIP_SCORING_MSG_INTL": "",
185
+ "LABEL": "Miniaturansicht des Profils verbessern",
186
+ "EMPTY_STRING_CODE": "",
187
+ "EMPTY_STRING_MESSAGE": "Profil enthält keine Miniaturansicht",
188
+ "WEIGHT": 11
189
+ },
190
+ "tooltips": {
191
+ "tooltip_section_label_suggestion_label": "Vorschläge",
192
+ "tooltip_section_label_guidance_label": "Anleitung",
193
+ "tooltip_section_label_score_label": "Punktzahl"
194
+ }
195
+ }