@everipedia/iq-utils 1.0.0 → 2.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 +12 -0
- package/dist/index.d.mts +1002 -0
- package/dist/index.d.ts +1002 -0
- package/dist/index.js +650 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +600 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +51 -53
- package/build/main/data/constants.d.ts +0 -24
- package/build/main/data/constants.js +0 -28
- package/build/main/index.d.ts +0 -6
- package/build/main/index.js +0 -23
- package/build/main/lib/checkWikiValidity.d.ts +0 -67
- package/build/main/lib/checkWikiValidity.js +0 -209
- package/build/main/lib/helpers/wiki.helpers.d.ts +0 -32
- package/build/main/lib/helpers/wiki.helpers.js +0 -86
- package/build/main/lib/isDeepEqual.d.ts +0 -3
- package/build/main/lib/isDeepEqual.js +0 -53
- package/build/main/lib/wikiScore.d.ts +0 -2
- package/build/main/lib/wikiScore.js +0 -127
- package/build/main/schema/wiki.schema.d.ts +0 -798
- package/build/main/schema/wiki.schema.js +0 -289
- package/build/main/types/wiki.d.ts +0 -9
- package/build/main/types/wiki.js +0 -14
- package/build/main/types/wikiBuilder.d.ts +0 -11
- package/build/main/types/wikiBuilder.js +0 -3
- package/build/module/data/constants.d.ts +0 -24
- package/build/module/data/constants.js +0 -25
- package/build/module/index.d.ts +0 -6
- package/build/module/index.js +0 -7
- package/build/module/lib/checkWikiValidity.d.ts +0 -67
- package/build/module/lib/checkWikiValidity.js +0 -191
- package/build/module/lib/helpers/wiki.helpers.d.ts +0 -32
- package/build/module/lib/helpers/wiki.helpers.js +0 -75
- package/build/module/lib/isDeepEqual.d.ts +0 -3
- package/build/module/lib/isDeepEqual.js +0 -51
- package/build/module/lib/wikiScore.d.ts +0 -2
- package/build/module/lib/wikiScore.js +0 -121
- package/build/module/schema/wiki.schema.d.ts +0 -798
- package/build/module/schema/wiki.schema.js +0 -286
- package/build/module/types/wiki.d.ts +0 -9
- package/build/module/types/wiki.js +0 -11
- package/build/module/types/wikiBuilder.d.ts +0 -11
- package/build/module/types/wikiBuilder.js +0 -2
|
@@ -1,86 +0,0 @@
|
|
|
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,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
function isDeepEqual(baseObject, comparisonObject) {
|
|
4
|
-
return compareValues(baseObject, comparisonObject);
|
|
5
|
-
}
|
|
6
|
-
function compareValues(base, comparison) {
|
|
7
|
-
if (base === comparison) {
|
|
8
|
-
return true;
|
|
9
|
-
}
|
|
10
|
-
if (base == null || comparison == null) {
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
if (typeof base !== typeof comparison) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
if (typeof base === "string") {
|
|
17
|
-
return compareStrings(base, comparison);
|
|
18
|
-
}
|
|
19
|
-
if (base instanceof Date && comparison instanceof Date) {
|
|
20
|
-
return base.getTime() === comparison.getTime();
|
|
21
|
-
}
|
|
22
|
-
if (base instanceof RegExp && comparison instanceof RegExp) {
|
|
23
|
-
return base.toString() === comparison.toString();
|
|
24
|
-
}
|
|
25
|
-
if (typeof base === "object") {
|
|
26
|
-
return compareObjects(base, comparison);
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
function compareStrings(base, comparison) {
|
|
31
|
-
return base.replace(/\s+/g, "") === comparison.replace(/\s+/g, "");
|
|
32
|
-
}
|
|
33
|
-
function compareObjects(base, comparison) {
|
|
34
|
-
const baseKeys = Object.keys(base);
|
|
35
|
-
const comparisonKeys = Object.keys(comparison);
|
|
36
|
-
if (baseKeys.length !== comparisonKeys.length) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return baseKeys.every((key) => {
|
|
40
|
-
if (!Object.prototype.hasOwnProperty.call(comparison, key)) {
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
const baseValue = base[key];
|
|
44
|
-
const comparisonValue = comparison[key];
|
|
45
|
-
if (typeof baseValue === "function" &&
|
|
46
|
-
typeof comparisonValue === "function") {
|
|
47
|
-
return baseValue.toString() === comparisonValue.toString();
|
|
48
|
-
}
|
|
49
|
-
return compareValues(baseValue, comparisonValue);
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
exports.default = isDeepEqual;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXNEZWVwRXF1YWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lzRGVlcEVxdWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsU0FBUyxXQUFXLENBQ25CLFVBQTBCLEVBQzFCLGdCQUFnQztJQUVoQyxPQUFPLGFBQWEsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQ3JCLElBQW9CLEVBQ3BCLFVBQTBCO0lBRTFCLElBQUksSUFBSSxLQUFLLFVBQVUsRUFBRTtRQUN4QixPQUFPLElBQUksQ0FBQztLQUNaO0lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUVELElBQUksT0FBTyxJQUFJLEtBQUssT0FBTyxVQUFVLEVBQUU7UUFDdEMsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxVQUFvQixDQUFDLENBQUM7S0FDbEQ7SUFFRCxJQUFJLElBQUksWUFBWSxJQUFJLElBQUksVUFBVSxZQUFZLElBQUksRUFBRTtRQUN2RCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7S0FDL0M7SUFFRCxJQUFJLElBQUksWUFBWSxNQUFNLElBQUksVUFBVSxZQUFZLE1BQU0sRUFBRTtRQUMzRCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDakQ7SUFFRCxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtRQUM3QixPQUFPLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBb0IsQ0FBQyxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsSUFBWSxFQUFFLFVBQWtCO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEtBQUssVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDcEUsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLElBQVksRUFBRSxVQUFrQjtJQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFL0MsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLGNBQWMsQ0FBQyxNQUFNLEVBQUU7UUFDOUMsT0FBTyxLQUFLLENBQUM7S0FDYjtJQUVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxFQUFFO1lBQzNELE9BQU8sS0FBSyxDQUFDO1NBQ2I7UUFFRCxNQUFNLFNBQVMsR0FBSSxJQUF1QyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sZUFBZSxHQUFJLFVBQTZDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFNUUsSUFDQyxPQUFPLFNBQVMsS0FBSyxVQUFVO1lBQy9CLE9BQU8sZUFBZSxLQUFLLFVBQVUsRUFDcEM7WUFDRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDM0Q7UUFFRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWUsV0FBVyxDQUFDIn0=
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calculateWikiScore = void 0;
|
|
4
|
-
const constants_1 = require("../data/constants");
|
|
5
|
-
const wiki_schema_1 = require("../schema/wiki.schema");
|
|
6
|
-
const contentQuality = (wordCount) => {
|
|
7
|
-
const scoreMin = 0.0;
|
|
8
|
-
const scoreMax = 1.0;
|
|
9
|
-
let score = 0;
|
|
10
|
-
if (wordCount < constants_1.MIN_CONTENT_WORD_COUNT) {
|
|
11
|
-
return scoreMin;
|
|
12
|
-
}
|
|
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;
|
|
16
|
-
score *= 0.8;
|
|
17
|
-
}
|
|
18
|
-
if (wordCount > constants_1.GOOD_CONTENT_WORD_COUNT &&
|
|
19
|
-
wordCount < constants_1.IDEAL_CONTENT_WORD_COUNT) {
|
|
20
|
-
const baseScore = 0.8;
|
|
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);
|
|
23
|
-
const extraScore = Math.sqrt(extraScoreFactor) * 0.2;
|
|
24
|
-
score = baseScore + extraScore;
|
|
25
|
-
}
|
|
26
|
-
if (wordCount >= constants_1.IDEAL_CONTENT_WORD_COUNT) {
|
|
27
|
-
return scoreMax;
|
|
28
|
-
}
|
|
29
|
-
if (score < scoreMin) {
|
|
30
|
-
return scoreMin;
|
|
31
|
-
}
|
|
32
|
-
if (score > scoreMax) {
|
|
33
|
-
return scoreMax;
|
|
34
|
-
}
|
|
35
|
-
return score;
|
|
36
|
-
};
|
|
37
|
-
const countQuality = (idealCount, realCount) => {
|
|
38
|
-
const scoreMin = 0.0;
|
|
39
|
-
const scoreMax = 1.0;
|
|
40
|
-
const score = realCount / idealCount;
|
|
41
|
-
if (score < scoreMin) {
|
|
42
|
-
return scoreMin;
|
|
43
|
-
}
|
|
44
|
-
if (score > scoreMax) {
|
|
45
|
-
return scoreMax;
|
|
46
|
-
}
|
|
47
|
-
return score;
|
|
48
|
-
};
|
|
49
|
-
const getHostnameFromRegex = (url) => {
|
|
50
|
-
const matches = RegExp(/^https?:\/\/([^/?#]+)(?:[/?#]|$)/i).exec(url);
|
|
51
|
-
return matches === null || matches === void 0 ? void 0 : matches[1];
|
|
52
|
-
};
|
|
53
|
-
const getWikiInternalLinks = (content) => {
|
|
54
|
-
const markdownLinkRegex = /\[(.*?)\]\((.*?)\)/g;
|
|
55
|
-
let internalLinksCount = 0;
|
|
56
|
-
let match = markdownLinkRegex.exec(content);
|
|
57
|
-
while (match !== null) {
|
|
58
|
-
const url = match[2];
|
|
59
|
-
if (url && !url.startsWith("#")) {
|
|
60
|
-
const hostname = getHostnameFromRegex(url);
|
|
61
|
-
if (hostname === "everipedia.org" ||
|
|
62
|
-
hostname === "iq.wiki" ||
|
|
63
|
-
(hostname === null || hostname === void 0 ? void 0 : hostname.endsWith(".everipedia.org"))) {
|
|
64
|
-
internalLinksCount++;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
match = markdownLinkRegex.exec(content); // Move assignment here
|
|
68
|
-
}
|
|
69
|
-
return internalLinksCount;
|
|
70
|
-
};
|
|
71
|
-
const getWikiCitationLinks = (wiki) => {
|
|
72
|
-
var _a;
|
|
73
|
-
const rawWikiReferences = (_a = wiki.metadata.find((m) => m.id === wiki_schema_1.CommonMetaIdsEnum.Enum.references)) === null || _a === void 0 ? void 0 : _a.value;
|
|
74
|
-
if (rawWikiReferences === undefined ||
|
|
75
|
-
(rawWikiReferences === null || rawWikiReferences === void 0 ? void 0 : rawWikiReferences.trim().length) === 0) {
|
|
76
|
-
return 0;
|
|
77
|
-
}
|
|
78
|
-
const wikiReferences = JSON.parse(rawWikiReferences);
|
|
79
|
-
return wikiReferences.length;
|
|
80
|
-
};
|
|
81
|
-
const getSocialsCount = (wiki) => {
|
|
82
|
-
let socialsCount = 0;
|
|
83
|
-
for (const meta of wiki.metadata) {
|
|
84
|
-
if (wiki_schema_1.WikiPossibleSocialsList.includes(meta.id)) {
|
|
85
|
-
if (meta.value) {
|
|
86
|
-
socialsCount += 1;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return socialsCount;
|
|
91
|
-
};
|
|
92
|
-
const calculateWikiScore = (wiki) => {
|
|
93
|
-
var _a, _b, _c;
|
|
94
|
-
const wordCount = wiki.content.split(" ").length;
|
|
95
|
-
const internalLinksCount = getWikiInternalLinks(wiki.content);
|
|
96
|
-
const citationCount = getWikiCitationLinks(wiki);
|
|
97
|
-
const mediaCount = ((_a = wiki.media) === null || _a === void 0 ? void 0 : _a.length) || 0;
|
|
98
|
-
const tagsCount = ((_b = wiki.tags) === null || _b === void 0 ? void 0 : _b.length) || 0;
|
|
99
|
-
const summaryWordCount = ((_c = wiki.summary) === null || _c === void 0 ? void 0 : _c.length) || 0;
|
|
100
|
-
const socialsCount = getSocialsCount(wiki);
|
|
101
|
-
const contentScore = contentQuality(wordCount);
|
|
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) /
|
|
122
|
-
sumOfWeights;
|
|
123
|
-
const percentScore = Math.floor(score * 100);
|
|
124
|
-
return percentScore;
|
|
125
|
-
};
|
|
126
|
-
exports.calculateWikiScore = calculateWikiScore;
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93aWtpU2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBaUIyQjtBQUMzQix1REFJK0I7QUFFL0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxTQUFpQixFQUFVLEVBQUU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUVyQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFFZCxJQUFJLFNBQVMsR0FBRyxrQ0FBc0IsRUFBRTtRQUN2QyxPQUFPLFFBQVEsQ0FBQztLQUNoQjtJQUVELElBQ0MsU0FBUyxJQUFJLGtDQUFzQjtRQUNuQyxTQUFTLElBQUksbUNBQXVCLEVBQ25DO1FBQ0QsS0FBSyxHQUFHLFNBQVMsR0FBRyxtQ0FBdUIsQ0FBQztRQUM1QyxLQUFLLElBQUksR0FBRyxDQUFDO0tBQ2I7SUFFRCxJQUNDLFNBQVMsR0FBRyxtQ0FBdUI7UUFDbkMsU0FBUyxHQUFHLG9DQUF3QixFQUNuQztRQUNELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixNQUFNLGtCQUFrQixHQUFHLFNBQVMsR0FBRyxtQ0FBdUIsQ0FBQztRQUMvRCxNQUFNLGdCQUFnQixHQUNyQixrQkFBa0IsR0FBRyxDQUFDLG9DQUF3QixHQUFHLG1DQUF1QixDQUFDLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNyRCxLQUFLLEdBQUcsU0FBUyxHQUFHLFVBQVUsQ0FBQztLQUMvQjtJQUVELElBQUksU0FBUyxJQUFJLG9DQUF3QixFQUFFO1FBQzFDLE9BQU8sUUFBUSxDQUFDO0tBQ2hCO0lBRUQsSUFBSSxLQUFLLEdBQUcsUUFBUSxFQUFFO1FBQ3JCLE9BQU8sUUFBUSxDQUFDO0tBQ2hCO0lBRUQsSUFB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
|