@everipedia/iq-utils 0.4.3 → 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.
- package/CHANGELOG.md +16 -0
- package/build/main/data/constants.d.ts +18 -0
- package/build/main/data/constants.js +20 -2
- package/build/main/index.d.ts +1 -0
- package/build/main/index.js +2 -1
- package/build/main/lib/checkWikiValidity.d.ts +49 -1
- package/build/main/lib/checkWikiValidity.js +29 -18
- package/build/main/lib/helpers/wiki.helpers.d.ts +32 -0
- package/build/main/lib/helpers/wiki.helpers.js +86 -0
- package/build/main/lib/wikiScore.d.ts +1 -1
- package/build/main/lib/wikiScore.js +35 -50
- package/build/main/schema/wiki.schema.d.ts +798 -0
- package/build/main/schema/wiki.schema.js +289 -0
- package/build/main/types/wiki.d.ts +5 -205
- package/build/main/types/wiki.js +10 -172
- package/build/main/types/wikiBuilder.d.ts +1 -1
- package/build/module/data/constants.d.ts +18 -0
- package/build/module/data/constants.js +19 -1
- package/build/module/index.d.ts +1 -0
- package/build/module/index.js +2 -1
- package/build/module/lib/checkWikiValidity.d.ts +49 -1
- package/build/module/lib/checkWikiValidity.js +21 -19
- package/build/module/lib/helpers/wiki.helpers.d.ts +32 -0
- package/build/module/lib/helpers/wiki.helpers.js +75 -0
- package/build/module/lib/wikiScore.d.ts +1 -1
- package/build/module/lib/wikiScore.js +5 -20
- package/build/module/schema/wiki.schema.d.ts +798 -0
- package/build/module/schema/wiki.schema.js +286 -0
- package/build/module/types/wiki.d.ts +5 -205
- package/build/module/types/wiki.js +9 -171
- package/build/module/types/wikiBuilder.d.ts +1 -1
- package/package.json +52 -51
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
## 0.2.8
|
|
2
2
|
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- cd21c32: Update wiki to use zod
|
|
8
|
+
|
|
9
|
+
## 0.4.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- bd3b671: Added function export
|
|
14
|
+
- 3903b43: fixes
|
|
15
|
+
- 3903b43: fixes lock file
|
|
16
|
+
- 109a4d9: adds export for constants
|
|
17
|
+
- 275d12e: Adds export to wiki check functions
|
|
18
|
+
|
|
3
19
|
## 0.4.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -4,3 +4,21 @@ export declare const WIKI_TITLE_MAX_LENGTH = 60;
|
|
|
4
4
|
export declare const MEDIA_UPLOAD_PENDING_SUFFIX = "default";
|
|
5
5
|
export declare const MAX_MEDIA_COUNT = 25;
|
|
6
6
|
export declare const IPFS_HASH_LENGTH = 46;
|
|
7
|
+
export declare const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
|
|
8
|
+
export declare const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
|
|
9
|
+
export declare const MIN_CONTENT_WORD_COUNT = 10;
|
|
10
|
+
export declare const GOOD_CONTENT_WORD_COUNT = 500;
|
|
11
|
+
export declare const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
12
|
+
export declare const CONTENT_SCORE_WEIGHT = 0.8;
|
|
13
|
+
export declare const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
14
|
+
export declare const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
15
|
+
export declare const MEDIA_SCORE_WEIGHT = 0.3;
|
|
16
|
+
export declare const TAGS_SCORE_WEIGHT = 0.3;
|
|
17
|
+
export declare const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
18
|
+
export declare const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
19
|
+
export declare const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
20
|
+
export declare const IDEAL_CITATIONS_COUNT = 10;
|
|
21
|
+
export declare const IDEAL_MEDIA_COUNT = 5;
|
|
22
|
+
export declare const IDEAL_TAGS_COUNT = 3;
|
|
23
|
+
export declare const IDEAL_SUMMARY_LENGTH = 100;
|
|
24
|
+
export declare const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
@@ -1,10 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IPFS_HASH_LENGTH = exports.MAX_MEDIA_COUNT = exports.MEDIA_UPLOAD_PENDING_SUFFIX = exports.WIKI_TITLE_MAX_LENGTH = exports.WIKI_CONTENT_MIN_WORDS = exports.WIKI_SUMMARY_MAX_LENGTH = void 0;
|
|
3
|
+
exports.IDEAL_SOCIAL_MEDIA_COUNT = exports.IDEAL_SUMMARY_LENGTH = exports.IDEAL_TAGS_COUNT = exports.IDEAL_MEDIA_COUNT = exports.IDEAL_CITATIONS_COUNT = exports.IDEAL_INTERNAL_LINKS_COUNT = exports.SOCIAL_SCORE_WEIGHT = exports.SUMMARY_SCORE_WEIGHT = exports.TAGS_SCORE_WEIGHT = exports.MEDIA_SCORE_WEIGHT = exports.CITATIONS_SCORE_WEIGHT = exports.INTERNAL_LINKS_SCORE_WEIGHT = exports.CONTENT_SCORE_WEIGHT = exports.IDEAL_CONTENT_WORD_COUNT = exports.GOOD_CONTENT_WORD_COUNT = exports.MIN_CONTENT_WORD_COUNT = exports.CreateNewWikiSlug = exports.EditorContentOverride = exports.IPFS_HASH_LENGTH = exports.MAX_MEDIA_COUNT = exports.MEDIA_UPLOAD_PENDING_SUFFIX = exports.WIKI_TITLE_MAX_LENGTH = exports.WIKI_CONTENT_MIN_WORDS = exports.WIKI_SUMMARY_MAX_LENGTH = void 0;
|
|
4
4
|
exports.WIKI_SUMMARY_MAX_LENGTH = 255;
|
|
5
5
|
exports.WIKI_CONTENT_MIN_WORDS = 100;
|
|
6
6
|
exports.WIKI_TITLE_MAX_LENGTH = 60;
|
|
7
7
|
exports.MEDIA_UPLOAD_PENDING_SUFFIX = "default";
|
|
8
8
|
exports.MAX_MEDIA_COUNT = 25;
|
|
9
9
|
exports.IPFS_HASH_LENGTH = 46;
|
|
10
|
-
|
|
10
|
+
exports.EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
|
|
11
|
+
exports.CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
|
|
12
|
+
exports.MIN_CONTENT_WORD_COUNT = 10;
|
|
13
|
+
exports.GOOD_CONTENT_WORD_COUNT = 500;
|
|
14
|
+
exports.IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
15
|
+
exports.CONTENT_SCORE_WEIGHT = 0.8;
|
|
16
|
+
exports.INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
17
|
+
exports.CITATIONS_SCORE_WEIGHT = 0.5;
|
|
18
|
+
exports.MEDIA_SCORE_WEIGHT = 0.3;
|
|
19
|
+
exports.TAGS_SCORE_WEIGHT = 0.3;
|
|
20
|
+
exports.SUMMARY_SCORE_WEIGHT = 0.5;
|
|
21
|
+
exports.SOCIAL_SCORE_WEIGHT = 0.5;
|
|
22
|
+
exports.IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
23
|
+
exports.IDEAL_CITATIONS_COUNT = 10;
|
|
24
|
+
exports.IDEAL_MEDIA_COUNT = 5;
|
|
25
|
+
exports.IDEAL_TAGS_COUNT = 3;
|
|
26
|
+
exports.IDEAL_SUMMARY_LENGTH = 100;
|
|
27
|
+
exports.IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGEvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFhLFFBQUEsdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLFFBQUEsc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzdCLFFBQUEscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQzNCLFFBQUEsMkJBQTJCLEdBQUcsU0FBUyxDQUFDO0FBQ3hDLFFBQUEsZUFBZSxHQUFHLEVBQUUsQ0FBQztBQUNyQixRQUFBLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUN0QixRQUFBLHFCQUFxQixHQUFHLDRCQUE0QixDQUFDO0FBQ3JELFFBQUEsaUJBQWlCLEdBQUcscUJBQXFCLENBQUM7QUFFMUMsUUFBQSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBQSx1QkFBdUIsR0FBRyxHQUFHLENBQUM7QUFDOUIsUUFBQSx3QkFBd0IsR0FBRyxJQUFJLENBQUM7QUFFaEMsUUFBQSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsUUFBQSwyQkFBMkIsR0FBRyxHQUFHLENBQUM7QUFDbEMsUUFBQSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDN0IsUUFBQSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDekIsUUFBQSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDeEIsUUFBQSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsUUFBQSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFMUIsUUFBQSwwQkFBMEIsR0FBRyxFQUFFLENBQUM7QUFDaEMsUUFBQSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7QUFDM0IsUUFBQSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDdEIsUUFBQSxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7QUFDckIsUUFBQSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDM0IsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLENBQUMifQ==
|
package/build/main/index.d.ts
CHANGED
package/build/main/index.js
CHANGED
|
@@ -19,4 +19,5 @@ __exportStar(require("./lib/isDeepEqual"), exports);
|
|
|
19
19
|
__exportStar(require("./lib/checkWikiValidity"), exports);
|
|
20
20
|
__exportStar(require("./types/wiki"), exports);
|
|
21
21
|
__exportStar(require("./types/wikiBuilder"), exports);
|
|
22
|
-
|
|
22
|
+
__exportStar(require("./data/constants"), exports);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQyxvREFBa0M7QUFDbEMsMERBQXdDO0FBQ3hDLCtDQUE2QjtBQUM3QixzREFBb0M7QUFDcEMsbURBQWlDIn0=
|
|
@@ -1,10 +1,58 @@
|
|
|
1
|
-
import { type Wiki } from "../
|
|
1
|
+
import { type Wiki } from "../schema/wiki.schema";
|
|
2
|
+
/**
|
|
3
|
+
* Counts the number of words in a given string.
|
|
4
|
+
* @param text - The input string to count words from.
|
|
5
|
+
* @returns The number of words in the string.
|
|
6
|
+
*/
|
|
7
|
+
export declare const countWords: (text: string) => number;
|
|
8
|
+
/**
|
|
9
|
+
* Checks if a given string is a valid URL.
|
|
10
|
+
* @param urlString - The string to check.
|
|
11
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
12
|
+
*/
|
|
13
|
+
export declare const isValidUrl: (urlString: string) => boolean;
|
|
2
14
|
/**
|
|
3
15
|
* Checks if all content links in the given text are verified.
|
|
4
16
|
* @param content - The content to check for links.
|
|
5
17
|
* @returns True if all links are verified, false otherwise.
|
|
6
18
|
*/
|
|
7
19
|
export declare const areContentLinksVerified: (content: string) => boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Checks if the media in the wiki is valid.
|
|
22
|
+
* @param wiki - The wiki object to check.
|
|
23
|
+
* @returns True if the media is valid, false otherwise.
|
|
24
|
+
*/
|
|
25
|
+
export declare const isMediaValid: (wiki: Wiki) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if any media in the wiki is still uploading.
|
|
28
|
+
* @param wiki - The wiki object to check.
|
|
29
|
+
* @returns True if any media is still uploading, false otherwise.
|
|
30
|
+
*/
|
|
31
|
+
export declare const isAnyMediaUploading: (wiki: Wiki) => boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Checks if the event URL is missing for an event wiki.
|
|
34
|
+
* @param wiki - The wiki object to check.
|
|
35
|
+
* @returns True if the event URL is missing, false otherwise.
|
|
36
|
+
*/
|
|
37
|
+
export declare const isEventUrlMissing: (wiki: Wiki) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if the event date is missing for an event wiki.
|
|
40
|
+
* @param wiki - The wiki object to check.
|
|
41
|
+
* @returns True if the event date is missing, false otherwise.
|
|
42
|
+
*/
|
|
43
|
+
export declare const isEventDateMissing: (wiki: Wiki) => boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Checks if the wiki summary exceeds the maximum length.
|
|
46
|
+
* @param wiki - The wiki object to check.
|
|
47
|
+
* @returns True if the summary exceeds the limit, false otherwise.
|
|
48
|
+
*/
|
|
49
|
+
export declare const isSummaryTooLong: (wiki: Wiki) => boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Checks if the wiki has no citations.
|
|
52
|
+
* @param wiki - The wiki object to check.
|
|
53
|
+
* @returns True if there are no citations, false otherwise.
|
|
54
|
+
*/
|
|
55
|
+
export declare const hasNoCitations: (wiki: Wiki) => boolean;
|
|
8
56
|
/**
|
|
9
57
|
* Validates a wiki object and returns the validation result.
|
|
10
58
|
* @param wiki - The wiki object to validate.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateWiki = exports.areContentLinksVerified = void 0;
|
|
3
|
+
exports.validateWiki = exports.hasNoCitations = exports.isSummaryTooLong = exports.isEventDateMissing = exports.isEventUrlMissing = exports.isAnyMediaUploading = exports.isMediaValid = exports.areContentLinksVerified = exports.isValidUrl = exports.countWords = void 0;
|
|
4
4
|
const constants_1 = require("../data/constants");
|
|
5
|
+
const wiki_schema_1 = require("../schema/wiki.schema");
|
|
5
6
|
const wiki_1 = require("../types/wiki");
|
|
6
7
|
/**
|
|
7
8
|
* Counts the number of words in a given string.
|
|
@@ -9,6 +10,7 @@ const wiki_1 = require("../types/wiki");
|
|
|
9
10
|
* @returns The number of words in the string.
|
|
10
11
|
*/
|
|
11
12
|
const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
13
|
+
exports.countWords = countWords;
|
|
12
14
|
/**
|
|
13
15
|
* Checks if a given string is a valid URL.
|
|
14
16
|
* @param urlString - The string to check.
|
|
@@ -22,6 +24,7 @@ const isValidUrl = (urlString) => {
|
|
|
22
24
|
return false;
|
|
23
25
|
}
|
|
24
26
|
};
|
|
27
|
+
exports.isValidUrl = isValidUrl;
|
|
25
28
|
/**
|
|
26
29
|
* Checks if all content links in the given text are verified.
|
|
27
30
|
* @param content - The content to check for links.
|
|
@@ -35,7 +38,7 @@ const areContentLinksVerified = (content) => {
|
|
|
35
38
|
if (linkText &&
|
|
36
39
|
linkUrl &&
|
|
37
40
|
wiki_1.whiteListedLinkNames.includes(linkText) &&
|
|
38
|
-
!isValidUrl(linkUrl)) {
|
|
41
|
+
!(0, exports.isValidUrl)(linkUrl)) {
|
|
39
42
|
return true;
|
|
40
43
|
}
|
|
41
44
|
if (linkUrl && !linkUrl.startsWith("#")) {
|
|
@@ -55,25 +58,28 @@ const isMediaValid = (wiki) => {
|
|
|
55
58
|
if (!wiki.media)
|
|
56
59
|
return true;
|
|
57
60
|
const isMediaContentValid = wiki.media.every((media) => {
|
|
58
|
-
if (media.source ===
|
|
59
|
-
media.source ===
|
|
61
|
+
if (media.source === wiki_schema_1.MediaSourceEnum.Enum.IPFS_IMG ||
|
|
62
|
+
media.source === wiki_schema_1.MediaSourceEnum.Enum.IPFS_VID) {
|
|
60
63
|
return media.id.length === constants_1.IPFS_HASH_LENGTH;
|
|
61
64
|
}
|
|
62
|
-
if (media.source ===
|
|
65
|
+
if (media.source === wiki_schema_1.MediaSourceEnum.Enum.YOUTUBE) {
|
|
63
66
|
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
64
67
|
return (media.id === `https://www.youtube.com/watch?v=${media.name}` &&
|
|
65
68
|
youtubePattern.test(media.id));
|
|
66
69
|
}
|
|
67
|
-
if (media.source ===
|
|
70
|
+
if (media.source === wiki_schema_1.MediaSourceEnum.Enum.VIMEO) {
|
|
68
71
|
return media.id === `https://vimeo.com/${media.name}`;
|
|
69
72
|
}
|
|
70
|
-
return media.type
|
|
73
|
+
return media.type
|
|
74
|
+
? Object.values(wiki_schema_1.MediaTypeEnum).includes(media.type)
|
|
75
|
+
: true;
|
|
71
76
|
});
|
|
72
|
-
const iconMediaCount = wiki.media.filter((media) => media.type ===
|
|
77
|
+
const iconMediaCount = wiki.media.filter((media) => media.type === wiki_schema_1.MediaTypeEnum.Enum.ICON).length;
|
|
73
78
|
return (wiki.media.length <= constants_1.MAX_MEDIA_COUNT &&
|
|
74
79
|
isMediaContentValid &&
|
|
75
80
|
iconMediaCount <= 1);
|
|
76
81
|
};
|
|
82
|
+
exports.isMediaValid = isMediaValid;
|
|
77
83
|
/**
|
|
78
84
|
* Checks if any media in the wiki is still uploading.
|
|
79
85
|
* @param wiki - The wiki object to check.
|
|
@@ -83,6 +89,7 @@ const isAnyMediaUploading = (wiki) => {
|
|
|
83
89
|
var _a, _b;
|
|
84
90
|
return (_b = (_a = wiki.media) === null || _a === void 0 ? void 0 : _a.some((media) => media.id.endsWith(constants_1.MEDIA_UPLOAD_PENDING_SUFFIX))) !== null && _b !== void 0 ? _b : false;
|
|
85
91
|
};
|
|
92
|
+
exports.isAnyMediaUploading = isAnyMediaUploading;
|
|
86
93
|
/**
|
|
87
94
|
* Checks if the event URL is missing for an event wiki.
|
|
88
95
|
* @param wiki - The wiki object to check.
|
|
@@ -91,33 +98,37 @@ const isAnyMediaUploading = (wiki) => {
|
|
|
91
98
|
const isEventUrlMissing = (wiki) => {
|
|
92
99
|
var _a;
|
|
93
100
|
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
94
|
-
const referencesData = ((_a = wiki.metadata.find((meta) => meta.id ===
|
|
101
|
+
const referencesData = ((_a = wiki.metadata.find((meta) => meta.id === wiki_schema_1.CommonMetaIdsEnum.Enum.references)) === null || _a === void 0 ? void 0 : _a.value) || "[]";
|
|
95
102
|
const references = JSON.parse(referencesData);
|
|
96
103
|
return !references.some((item) => item.description.toLowerCase() === "event link");
|
|
97
104
|
}
|
|
98
105
|
return false;
|
|
99
106
|
};
|
|
107
|
+
exports.isEventUrlMissing = isEventUrlMissing;
|
|
100
108
|
/**
|
|
101
109
|
* Checks if the event date is missing for an event wiki.
|
|
102
110
|
* @param wiki - The wiki object to check.
|
|
103
111
|
* @returns True if the event date is missing, false otherwise.
|
|
104
112
|
*/
|
|
105
113
|
const isEventDateMissing = (wiki) => { var _a; return wiki.tags.some((tag) => tag.id === "Events") && ((_a = wiki.events) === null || _a === void 0 ? void 0 : _a.length) === 0; };
|
|
114
|
+
exports.isEventDateMissing = isEventDateMissing;
|
|
106
115
|
/**
|
|
107
116
|
* Checks if the wiki summary exceeds the maximum length.
|
|
108
117
|
* @param wiki - The wiki object to check.
|
|
109
118
|
* @returns True if the summary exceeds the limit, false otherwise.
|
|
110
119
|
*/
|
|
111
120
|
const isSummaryTooLong = (wiki) => !!(wiki.summary && wiki.summary.length > constants_1.WIKI_SUMMARY_MAX_LENGTH);
|
|
121
|
+
exports.isSummaryTooLong = isSummaryTooLong;
|
|
112
122
|
/**
|
|
113
123
|
* Checks if the wiki has no citations.
|
|
114
124
|
* @param wiki - The wiki object to check.
|
|
115
125
|
* @returns True if there are no citations, false otherwise.
|
|
116
126
|
*/
|
|
117
127
|
const hasNoCitations = (wiki) => {
|
|
118
|
-
const references = wiki.metadata.find((meta) => meta.id ===
|
|
128
|
+
const references = wiki.metadata.find((meta) => meta.id === wiki_schema_1.CommonMetaIdsEnum.Enum.references);
|
|
119
129
|
return !(references === null || references === void 0 ? void 0 : references.value) || references.value.length === 0;
|
|
120
130
|
};
|
|
131
|
+
exports.hasNoCitations = hasNoCitations;
|
|
121
132
|
/**
|
|
122
133
|
* Validates a wiki object and returns the validation result.
|
|
123
134
|
* @param wiki - The wiki object to validate.
|
|
@@ -125,7 +136,7 @@ const hasNoCitations = (wiki) => {
|
|
|
125
136
|
*/
|
|
126
137
|
const validateWiki = (wiki) => {
|
|
127
138
|
var _a;
|
|
128
|
-
const wordCount = countWords(wiki.content || "");
|
|
139
|
+
const wordCount = (0, exports.countWords)(wiki.content || "");
|
|
129
140
|
if (!wiki.title) {
|
|
130
141
|
return {
|
|
131
142
|
isValid: false,
|
|
@@ -162,37 +173,37 @@ const validateWiki = (wiki) => {
|
|
|
162
173
|
if (wiki.categories.length === 0) {
|
|
163
174
|
return { isValid: false, error: "Add one category to continue" };
|
|
164
175
|
}
|
|
165
|
-
if (isSummaryTooLong(wiki)) {
|
|
176
|
+
if ((0, exports.isSummaryTooLong)(wiki)) {
|
|
166
177
|
return {
|
|
167
178
|
isValid: false,
|
|
168
179
|
error: `Summary exceeds maximum limit of ${constants_1.WIKI_SUMMARY_MAX_LENGTH}`,
|
|
169
180
|
};
|
|
170
181
|
}
|
|
171
|
-
if (isAnyMediaUploading(wiki)) {
|
|
182
|
+
if ((0, exports.isAnyMediaUploading)(wiki)) {
|
|
172
183
|
return {
|
|
173
184
|
isValid: false,
|
|
174
185
|
error: "Some media are still uploading, please wait",
|
|
175
186
|
};
|
|
176
187
|
}
|
|
177
|
-
if (hasNoCitations(wiki)) {
|
|
188
|
+
if ((0, exports.hasNoCitations)(wiki)) {
|
|
178
189
|
return { isValid: false, error: "Please add at least one citation" };
|
|
179
190
|
}
|
|
180
|
-
if (isEventUrlMissing(wiki)) {
|
|
191
|
+
if ((0, exports.isEventUrlMissing)(wiki)) {
|
|
181
192
|
return {
|
|
182
193
|
isValid: false,
|
|
183
194
|
error: "Please cite the event official website with 'Event Link' description",
|
|
184
195
|
};
|
|
185
196
|
}
|
|
186
|
-
if (isEventDateMissing(wiki)) {
|
|
197
|
+
if ((0, exports.isEventDateMissing)(wiki)) {
|
|
187
198
|
return {
|
|
188
199
|
isValid: false,
|
|
189
200
|
error: 'Please open the "Edit Wiki Details Modal" and enter a valid event date',
|
|
190
201
|
};
|
|
191
202
|
}
|
|
192
|
-
if (!isMediaValid(wiki)) {
|
|
203
|
+
if (!(0, exports.isMediaValid)(wiki)) {
|
|
193
204
|
return { isValid: false, error: "Media is invalid" };
|
|
194
205
|
}
|
|
195
206
|
return { isValid: true };
|
|
196
207
|
};
|
|
197
208
|
exports.validateWiki = validateWiki;
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tXaWtpVmFsaWRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NoZWNrV2lraVZhbGlkaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQU8yQjtBQUMzQix1REFLK0I7QUFDL0Isd0NBQXlFO0FBRXpFOzs7O0dBSUc7QUFDSSxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBRHpDLFFBQUEsVUFBVSxjQUMrQjtBQUV0RDs7OztHQUlHO0FBQ0ksTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7SUFDL0MsSUFBSTtRQUNILE9BQU8sT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDbkM7SUFBQyxPQUFPLEVBQUUsRUFBRTtRQUNaLE9BQU8sS0FBSyxDQUFDO0tBQ2I7QUFDRixDQUFDLENBQUM7QUFOVyxRQUFBLFVBQVUsY0FNckI7QUFFRjs7OztHQUlHO0FBQ0ksTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFOztJQUMxRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDM0QsT0FBTyxDQUNOLE1BQUEsYUFBYSxhQUFiLGFBQWEsdUJBQWIsYUFBYSxDQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzdCLE1BQU0sQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsR0FDMUIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUUvQyxJQUNDLFFBQVE7WUFDUixPQUFP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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import { type Media, type TagEnum } from "../../schema/wiki.schema";
|
|
3
|
+
/**
|
|
4
|
+
* Counts the number of words in a given string.
|
|
5
|
+
* @param text - The input string to count words from.
|
|
6
|
+
* @returns The number of words in the string.
|
|
7
|
+
*/
|
|
8
|
+
export declare const countWords: (text: string) => number;
|
|
9
|
+
/**
|
|
10
|
+
* Checks if a given string is a valid URL.
|
|
11
|
+
* @param urlString - The string to check.
|
|
12
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export declare const isValidUrl: (urlString: string) => boolean;
|
|
15
|
+
export declare const validateMediaContent: (media: Media[]) => boolean;
|
|
16
|
+
export declare const validateMediaCount: (media: Media[]) => boolean;
|
|
17
|
+
export declare const validateEventWiki: (wiki: {
|
|
18
|
+
tags: {
|
|
19
|
+
id: z.infer<typeof TagEnum>;
|
|
20
|
+
}[];
|
|
21
|
+
metadata: {
|
|
22
|
+
id: string;
|
|
23
|
+
value?: string;
|
|
24
|
+
}[];
|
|
25
|
+
events?: unknown[];
|
|
26
|
+
}) => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if all content links in the given text are verified.
|
|
29
|
+
* @param content - The content to check for links.
|
|
30
|
+
* @returns True if all links are verified, false otherwise.
|
|
31
|
+
*/
|
|
32
|
+
export declare const areContentLinksVerified: (content: string) => boolean;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.areContentLinksVerified = exports.validateEventWiki = exports.validateMediaCount = exports.validateMediaContent = exports.isValidUrl = exports.countWords = void 0;
|
|
4
|
+
const constants_1 = require("../../data/constants");
|
|
5
|
+
const wiki_schema_1 = require("../../schema/wiki.schema");
|
|
6
|
+
const wiki_1 = require("../../types/wiki");
|
|
7
|
+
/**
|
|
8
|
+
* Counts the number of words in a given string.
|
|
9
|
+
* @param text - The input string to count words from.
|
|
10
|
+
* @returns The number of words in the string.
|
|
11
|
+
*/
|
|
12
|
+
const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
13
|
+
exports.countWords = countWords;
|
|
14
|
+
/**
|
|
15
|
+
* Checks if a given string is a valid URL.
|
|
16
|
+
* @param urlString - The string to check.
|
|
17
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
18
|
+
*/
|
|
19
|
+
const isValidUrl = (urlString) => {
|
|
20
|
+
try {
|
|
21
|
+
return Boolean(new URL(urlString));
|
|
22
|
+
}
|
|
23
|
+
catch (_e) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
exports.isValidUrl = isValidUrl;
|
|
28
|
+
const validateMediaContent = (media) => {
|
|
29
|
+
return media.every((item) => {
|
|
30
|
+
if (item.source === wiki_schema_1.MediaSourceEnum.Enum.IPFS_IMG ||
|
|
31
|
+
item.source === wiki_schema_1.MediaSourceEnum.Enum.IPFS_VID) {
|
|
32
|
+
return item.id.length === constants_1.IPFS_HASH_LENGTH;
|
|
33
|
+
}
|
|
34
|
+
if (item.source === wiki_schema_1.MediaSourceEnum.Enum.YOUTUBE) {
|
|
35
|
+
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
36
|
+
return (item.id === `https://www.youtube.com/watch?v=${item.name}` &&
|
|
37
|
+
youtubePattern.test(item.id));
|
|
38
|
+
}
|
|
39
|
+
if (item.source === wiki_schema_1.MediaSourceEnum.Enum.VIMEO) {
|
|
40
|
+
return item.id === `https://vimeo.com/${item.name}`;
|
|
41
|
+
}
|
|
42
|
+
return item.type ? item.type in wiki_schema_1.MediaTypeEnum : true;
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
exports.validateMediaContent = validateMediaContent;
|
|
46
|
+
const validateMediaCount = (media) => {
|
|
47
|
+
const iconMediaCount = media.filter((item) => item.type === wiki_schema_1.MediaTypeEnum.Enum.ICON).length;
|
|
48
|
+
return media.length <= constants_1.MAX_MEDIA_COUNT && iconMediaCount <= 1;
|
|
49
|
+
};
|
|
50
|
+
exports.validateMediaCount = validateMediaCount;
|
|
51
|
+
const validateEventWiki = (wiki) => {
|
|
52
|
+
var _a;
|
|
53
|
+
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
54
|
+
const referencesData = ((_a = wiki.metadata.find((meta) => meta.id === wiki_schema_1.CommonMetaIdsEnum.Enum.references)) === null || _a === void 0 ? void 0 : _a.value) || "[]";
|
|
55
|
+
const references = JSON.parse(referencesData);
|
|
56
|
+
const hasEventLink = references.some((item) => item.description.toLowerCase() === "event link");
|
|
57
|
+
return hasEventLink && Array.isArray(wiki.events) && wiki.events.length > 0;
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
};
|
|
61
|
+
exports.validateEventWiki = validateEventWiki;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if all content links in the given text are verified.
|
|
64
|
+
* @param content - The content to check for links.
|
|
65
|
+
* @returns True if all links are verified, false otherwise.
|
|
66
|
+
*/
|
|
67
|
+
const areContentLinksVerified = (content) => {
|
|
68
|
+
var _a;
|
|
69
|
+
const markdownLinks = content.match(/\[(.*?)\]\((.*?)\)/g);
|
|
70
|
+
return ((_a = markdownLinks === null || markdownLinks === void 0 ? void 0 : markdownLinks.every((link) => {
|
|
71
|
+
const [, linkText, linkUrl] = RegExp(/\[(.*?)\]\((.*?)\)/).exec(link) || [];
|
|
72
|
+
if (linkText &&
|
|
73
|
+
linkUrl &&
|
|
74
|
+
wiki_1.whiteListedLinkNames.includes(linkText) &&
|
|
75
|
+
!(0, exports.isValidUrl)(linkUrl)) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (linkUrl && !linkUrl.startsWith("#")) {
|
|
79
|
+
const validDomainPattern = new RegExp(`^https?://(www\\.)?(${wiki_1.whiteListedDomains.join("|")})`);
|
|
80
|
+
return validDomainPattern.test(linkUrl);
|
|
81
|
+
}
|
|
82
|
+
return true;
|
|
83
|
+
})) !== null && _a !== void 0 ? _a : true);
|
|
84
|
+
};
|
|
85
|
+
exports.areContentLinksVerified = areContentLinksVerified;
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWxwZXJzL3dpa2kuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxvREFBeUU7QUFDekUsMERBTWtDO0FBQ2xDLDJDQUE0RTtBQUM1RTs7OztHQUlHO0FBRUksTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUR6QyxRQUFBLFVBQVUsY0FDK0I7QUFFdEQ7Ozs7R0FJRztBQUNJLE1BQU0sVUFBVSxHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFO0lBQy9DLElBQUk7UUFDSCxPQUFPLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0tBQ25DO0lBQUMsT0FBTyxFQUFFLEVBQUU7UUFDWixPQUFPLEtBQUssQ0FBQztLQUNiO0FBQ0YsQ0FBQyxDQUFDO0FBTlcsUUFBQSxVQUFVLGNBTXJCO0FBRUssTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3RELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzNCLElBQ0MsSUFBSSxDQUFDLE1BQU0sS0FBSyw2QkFBZSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQzdDLElBQUksQ0FBQyxNQUFNLEtBQUssNkJBQWUsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUM1QztZQUNELE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEtBQUssNEJBQWdCLENBQUM7U0FDM0M7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssNkJBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lB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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { type Wiki } from "../
|
|
1
|
+
import { type Wiki } from "../schema/wiki.schema";
|
|
2
2
|
export declare const calculateWikiScore: (wiki: Wiki) => number;
|
|
@@ -1,44 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.calculateWikiScore = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const GOOD_CONTENT_WORD_COUNT = 500;
|
|
7
|
-
const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
8
|
-
const CONTENT_SCORE_WEIGHT = 0.8;
|
|
9
|
-
const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
10
|
-
const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
11
|
-
const MEDIA_SCORE_WEIGHT = 0.3;
|
|
12
|
-
const TAGS_SCORE_WEIGHT = 0.3;
|
|
13
|
-
const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
14
|
-
const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
15
|
-
const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
16
|
-
const IDEAL_CITATIONS_COUNT = 10;
|
|
17
|
-
const IDEAL_MEDIA_COUNT = 5;
|
|
18
|
-
const IDEAL_TAGS_COUNT = 3;
|
|
19
|
-
const IDEAL_SUMMARY_LENGTH = 100;
|
|
20
|
-
const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
4
|
+
const constants_1 = require("../data/constants");
|
|
5
|
+
const wiki_schema_1 = require("../schema/wiki.schema");
|
|
21
6
|
const contentQuality = (wordCount) => {
|
|
22
7
|
const scoreMin = 0.0;
|
|
23
8
|
const scoreMax = 1.0;
|
|
24
9
|
let score = 0;
|
|
25
|
-
if (wordCount < MIN_CONTENT_WORD_COUNT) {
|
|
10
|
+
if (wordCount < constants_1.MIN_CONTENT_WORD_COUNT) {
|
|
26
11
|
return scoreMin;
|
|
27
12
|
}
|
|
28
|
-
if (wordCount >= MIN_CONTENT_WORD_COUNT &&
|
|
29
|
-
wordCount <= GOOD_CONTENT_WORD_COUNT) {
|
|
30
|
-
score = wordCount / GOOD_CONTENT_WORD_COUNT;
|
|
13
|
+
if (wordCount >= constants_1.MIN_CONTENT_WORD_COUNT &&
|
|
14
|
+
wordCount <= constants_1.GOOD_CONTENT_WORD_COUNT) {
|
|
15
|
+
score = wordCount / constants_1.GOOD_CONTENT_WORD_COUNT;
|
|
31
16
|
score *= 0.8;
|
|
32
17
|
}
|
|
33
|
-
if (wordCount > GOOD_CONTENT_WORD_COUNT &&
|
|
34
|
-
wordCount < IDEAL_CONTENT_WORD_COUNT) {
|
|
18
|
+
if (wordCount > constants_1.GOOD_CONTENT_WORD_COUNT &&
|
|
19
|
+
wordCount < constants_1.IDEAL_CONTENT_WORD_COUNT) {
|
|
35
20
|
const baseScore = 0.8;
|
|
36
|
-
const wordCountAboveGood = wordCount - GOOD_CONTENT_WORD_COUNT;
|
|
37
|
-
const extraScoreFactor = wordCountAboveGood / (IDEAL_CONTENT_WORD_COUNT - GOOD_CONTENT_WORD_COUNT);
|
|
21
|
+
const wordCountAboveGood = wordCount - constants_1.GOOD_CONTENT_WORD_COUNT;
|
|
22
|
+
const extraScoreFactor = wordCountAboveGood / (constants_1.IDEAL_CONTENT_WORD_COUNT - constants_1.GOOD_CONTENT_WORD_COUNT);
|
|
38
23
|
const extraScore = Math.sqrt(extraScoreFactor) * 0.2;
|
|
39
24
|
score = baseScore + extraScore;
|
|
40
25
|
}
|
|
41
|
-
if (wordCount >= IDEAL_CONTENT_WORD_COUNT) {
|
|
26
|
+
if (wordCount >= constants_1.IDEAL_CONTENT_WORD_COUNT) {
|
|
42
27
|
return scoreMax;
|
|
43
28
|
}
|
|
44
29
|
if (score < scoreMin) {
|
|
@@ -62,7 +47,7 @@ const countQuality = (idealCount, realCount) => {
|
|
|
62
47
|
return score;
|
|
63
48
|
};
|
|
64
49
|
const getHostnameFromRegex = (url) => {
|
|
65
|
-
const matches =
|
|
50
|
+
const matches = RegExp(/^https?:\/\/([^/?#]+)(?:[/?#]|$)/i).exec(url);
|
|
66
51
|
return matches === null || matches === void 0 ? void 0 : matches[1];
|
|
67
52
|
};
|
|
68
53
|
const getWikiInternalLinks = (content) => {
|
|
@@ -85,7 +70,7 @@ const getWikiInternalLinks = (content) => {
|
|
|
85
70
|
};
|
|
86
71
|
const getWikiCitationLinks = (wiki) => {
|
|
87
72
|
var _a;
|
|
88
|
-
const rawWikiReferences = (_a = wiki.metadata.find((m) => m.id ===
|
|
73
|
+
const rawWikiReferences = (_a = wiki.metadata.find((m) => m.id === wiki_schema_1.CommonMetaIdsEnum.Enum.references)) === null || _a === void 0 ? void 0 : _a.value;
|
|
89
74
|
if (rawWikiReferences === undefined ||
|
|
90
75
|
(rawWikiReferences === null || rawWikiReferences === void 0 ? void 0 : rawWikiReferences.trim().length) === 0) {
|
|
91
76
|
return 0;
|
|
@@ -96,7 +81,7 @@ const getWikiCitationLinks = (wiki) => {
|
|
|
96
81
|
const getSocialsCount = (wiki) => {
|
|
97
82
|
let socialsCount = 0;
|
|
98
83
|
for (const meta of wiki.metadata) {
|
|
99
|
-
if (
|
|
84
|
+
if (wiki_schema_1.WikiPossibleSocialsList.includes(meta.id)) {
|
|
100
85
|
if (meta.value) {
|
|
101
86
|
socialsCount += 1;
|
|
102
87
|
}
|
|
@@ -114,29 +99,29 @@ const calculateWikiScore = (wiki) => {
|
|
|
114
99
|
const summaryWordCount = ((_c = wiki.summary) === null || _c === void 0 ? void 0 : _c.length) || 0;
|
|
115
100
|
const socialsCount = getSocialsCount(wiki);
|
|
116
101
|
const contentScore = contentQuality(wordCount);
|
|
117
|
-
const internalLinksScore = countQuality(IDEAL_INTERNAL_LINKS_COUNT, internalLinksCount);
|
|
118
|
-
const citationScore = countQuality(IDEAL_CITATIONS_COUNT, citationCount);
|
|
119
|
-
const mediaScore = countQuality(IDEAL_MEDIA_COUNT, mediaCount);
|
|
120
|
-
const tagsScore = countQuality(IDEAL_TAGS_COUNT, tagsCount);
|
|
121
|
-
const summaryScore = countQuality(IDEAL_SUMMARY_LENGTH, summaryWordCount);
|
|
122
|
-
const socialsScore = countQuality(IDEAL_SOCIAL_MEDIA_COUNT, socialsCount);
|
|
123
|
-
const sumOfWeights = CONTENT_SCORE_WEIGHT +
|
|
124
|
-
INTERNAL_LINKS_SCORE_WEIGHT +
|
|
125
|
-
CITATIONS_SCORE_WEIGHT +
|
|
126
|
-
MEDIA_SCORE_WEIGHT +
|
|
127
|
-
TAGS_SCORE_WEIGHT +
|
|
128
|
-
SUMMARY_SCORE_WEIGHT +
|
|
129
|
-
SOCIAL_SCORE_WEIGHT;
|
|
130
|
-
const score = (contentScore * CONTENT_SCORE_WEIGHT +
|
|
131
|
-
internalLinksScore * INTERNAL_LINKS_SCORE_WEIGHT +
|
|
132
|
-
citationScore * CITATIONS_SCORE_WEIGHT +
|
|
133
|
-
mediaScore * MEDIA_SCORE_WEIGHT +
|
|
134
|
-
tagsScore * TAGS_SCORE_WEIGHT +
|
|
135
|
-
summaryScore * SUMMARY_SCORE_WEIGHT +
|
|
136
|
-
socialsScore * SOCIAL_SCORE_WEIGHT) /
|
|
102
|
+
const internalLinksScore = countQuality(constants_1.IDEAL_INTERNAL_LINKS_COUNT, internalLinksCount);
|
|
103
|
+
const citationScore = countQuality(constants_1.IDEAL_CITATIONS_COUNT, citationCount);
|
|
104
|
+
const mediaScore = countQuality(constants_1.IDEAL_MEDIA_COUNT, mediaCount);
|
|
105
|
+
const tagsScore = countQuality(constants_1.IDEAL_TAGS_COUNT, tagsCount);
|
|
106
|
+
const summaryScore = countQuality(constants_1.IDEAL_SUMMARY_LENGTH, summaryWordCount);
|
|
107
|
+
const socialsScore = countQuality(constants_1.IDEAL_SOCIAL_MEDIA_COUNT, socialsCount);
|
|
108
|
+
const sumOfWeights = constants_1.CONTENT_SCORE_WEIGHT +
|
|
109
|
+
constants_1.INTERNAL_LINKS_SCORE_WEIGHT +
|
|
110
|
+
constants_1.CITATIONS_SCORE_WEIGHT +
|
|
111
|
+
constants_1.MEDIA_SCORE_WEIGHT +
|
|
112
|
+
constants_1.TAGS_SCORE_WEIGHT +
|
|
113
|
+
constants_1.SUMMARY_SCORE_WEIGHT +
|
|
114
|
+
constants_1.SOCIAL_SCORE_WEIGHT;
|
|
115
|
+
const score = (contentScore * constants_1.CONTENT_SCORE_WEIGHT +
|
|
116
|
+
internalLinksScore * constants_1.INTERNAL_LINKS_SCORE_WEIGHT +
|
|
117
|
+
citationScore * constants_1.CITATIONS_SCORE_WEIGHT +
|
|
118
|
+
mediaScore * constants_1.MEDIA_SCORE_WEIGHT +
|
|
119
|
+
tagsScore * constants_1.TAGS_SCORE_WEIGHT +
|
|
120
|
+
summaryScore * constants_1.SUMMARY_SCORE_WEIGHT +
|
|
121
|
+
socialsScore * constants_1.SOCIAL_SCORE_WEIGHT) /
|
|
137
122
|
sumOfWeights;
|
|
138
123
|
const percentScore = Math.floor(score * 100);
|
|
139
124
|
return percentScore;
|
|
140
125
|
};
|
|
141
126
|
exports.calculateWikiScore = calculateWikiScore;
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93aWtpU2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBaUIyQjtBQUMzQix1REFJK0I7QUFFL0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUVyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxJQUFJLFNBQVMsR0FBRyxrQ0FBc0IsRUFBRTtRQUN2QyxPQUFPLFFBQVEsQ0FBQztLQUNoQjtJQUVELElBQ0MsU0FBUyxJQUFJLGtDQUFzQjtRQUNuQyxTQUFTLElBQUksbUNBQXVCLEVBQ25DO1FBQ0QsS0FBSyxHQUFHLFNBQVMsR0FBRyxtQ0FBdUIsQ0FBQztRQUM1QyxLQUFLLElBQUksR0FBRyxDQUFDO0tBQ2I7SUFFRCxJQUNDLFNBQVMsR0FBRyxtQ0FBdUI7UUFDbkMsU0FBUyxHQUFHLG9DQUF3QixFQUNuQztRQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixNQUFNLGtCQUFrQixHQUFHLFNBQVMsR0FBRyxtQ0FBdUIsQ0FBQztRQUMvRCxNQUFNLGdCQUFnQixHQUNyQixrQkFBa0IsR0FBRyxDQUFDLG9DQUF3QixHQUFHLG1DQUF1QixDQUFDLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRCxLQUFLLEdBQUcsU0FBUyxHQUFHLFVBQVUsQ0FBQztLQUMvQjtJQUVELElBQUksU0FBUyxJQUFJLG9DQUF3QixFQUFFO1FBQzFDLE9BQU8sUUFBUSxDQUFDO0tBQ2hCO0lBRUQsSUFBSSxLQUFLLEdBQUcsUUFBUSxFQUFFO1FBQ3JCLE9BQU8sUUFBUSxDQUFDO0tBQ2hCO0lBRUQsSUFB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
|