@everipedia/iq-utils 0.0.1

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/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # IQ Utils
2
+
3
+ common library for IQ projects
@@ -0,0 +1,2 @@
1
+ export * from './lib/wikiScore';
2
+ export * from './types/wiki';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/wikiScore"), exports);
18
+ __exportStar(require("./types/wiki"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQywrQ0FBNkIifQ==
@@ -0,0 +1,2 @@
1
+ import { Wiki } from '../types/wiki';
2
+ export declare const calculateWikiScore: (wiki: Wiki) => number;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateWikiScore = void 0;
4
+ const wiki_1 = require("../types/wiki");
5
+ const MIN_CONTENT_WORD_COUNT = 10;
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;
21
+ const contentQuality = (wordCount) => {
22
+ const scoreMin = 0.0;
23
+ const scoreMax = 1.0;
24
+ let score = 0;
25
+ if (wordCount < MIN_CONTENT_WORD_COUNT) {
26
+ return scoreMin;
27
+ }
28
+ if (wordCount >= MIN_CONTENT_WORD_COUNT &&
29
+ wordCount <= GOOD_CONTENT_WORD_COUNT) {
30
+ score = wordCount / GOOD_CONTENT_WORD_COUNT;
31
+ score *= 0.8;
32
+ }
33
+ if (wordCount > GOOD_CONTENT_WORD_COUNT &&
34
+ wordCount < IDEAL_CONTENT_WORD_COUNT) {
35
+ const baseScore = 0.8;
36
+ const wordCountAboveGood = wordCount - GOOD_CONTENT_WORD_COUNT;
37
+ const extraScoreFactor = wordCountAboveGood / (IDEAL_CONTENT_WORD_COUNT - GOOD_CONTENT_WORD_COUNT);
38
+ const extraScore = Math.sqrt(extraScoreFactor) * 0.2;
39
+ score = baseScore + extraScore;
40
+ }
41
+ if (wordCount >= IDEAL_CONTENT_WORD_COUNT) {
42
+ return scoreMax;
43
+ }
44
+ if (score < scoreMin) {
45
+ return scoreMin;
46
+ }
47
+ if (score > scoreMax) {
48
+ return scoreMax;
49
+ }
50
+ return score;
51
+ };
52
+ const countQuality = (idealCount, realCount) => {
53
+ const scoreMin = 0.0;
54
+ const scoreMax = 1.0;
55
+ const score = realCount / idealCount;
56
+ if (score < scoreMin) {
57
+ return scoreMin;
58
+ }
59
+ if (score > scoreMax) {
60
+ return scoreMax;
61
+ }
62
+ return score;
63
+ };
64
+ const getHostnameFromRegex = (url) => {
65
+ const matches = url.match(/^https?:\/\/([^/?#]+)(?:[/?#]|$)/i);
66
+ return matches && matches[1];
67
+ };
68
+ const getWikiInternalLinks = (content) => {
69
+ const markdownLinks = content.match(/\[(.*?)\]\((.*?)\)/g);
70
+ let internalLinksCount = 0;
71
+ markdownLinks === null || markdownLinks === void 0 ? void 0 : markdownLinks.forEach((link) => {
72
+ const linkMatch = link.match(/\[(.*?)\]\((.*?)\)/);
73
+ const url = linkMatch === null || linkMatch === void 0 ? void 0 : linkMatch[2];
74
+ if (url && url.charAt(0) !== '#') {
75
+ const hostname = getHostnameFromRegex(url);
76
+ if (hostname === 'everipedia.org' ||
77
+ hostname === 'iq.wiki' ||
78
+ (hostname === null || hostname === void 0 ? void 0 : hostname.endsWith('.everipedia.org'))) {
79
+ internalLinksCount += 1;
80
+ }
81
+ }
82
+ });
83
+ return internalLinksCount;
84
+ };
85
+ const getWikiCitationLinks = (wiki) => {
86
+ var _a;
87
+ const rawWikiReferences = (_a = wiki.metadata.find((m) => m.id === wiki_1.CommonMetaIds.REFERENCES)) === null || _a === void 0 ? void 0 : _a.value;
88
+ if (rawWikiReferences === undefined ||
89
+ (rawWikiReferences === null || rawWikiReferences === void 0 ? void 0 : rawWikiReferences.trim().length) === 0) {
90
+ return 0;
91
+ }
92
+ const wikiReferences = JSON.parse(rawWikiReferences);
93
+ return wikiReferences.length;
94
+ };
95
+ const getSocialsCount = (wiki) => {
96
+ let socialsCount = 0;
97
+ wiki.metadata.forEach((meta) => {
98
+ if (wiki_1.WikiPossibleSocialsList.includes(meta.id)) {
99
+ if (meta.value) {
100
+ socialsCount += 1;
101
+ }
102
+ }
103
+ });
104
+ return socialsCount;
105
+ };
106
+ const calculateWikiScore = (wiki) => {
107
+ var _a, _b, _c;
108
+ const wordCount = wiki.content.split(' ').length;
109
+ const internalLinksCount = getWikiInternalLinks(wiki.content);
110
+ const citationCount = getWikiCitationLinks(wiki);
111
+ const mediaCount = ((_a = wiki.media) === null || _a === void 0 ? void 0 : _a.length) || 0;
112
+ const tagsCount = ((_b = wiki.tags) === null || _b === void 0 ? void 0 : _b.length) || 0;
113
+ const summaryWordCount = ((_c = wiki.summary) === null || _c === void 0 ? void 0 : _c.length) || 0;
114
+ const socialsCount = getSocialsCount(wiki);
115
+ const contentScore = contentQuality(wordCount);
116
+ const internalLinksScore = countQuality(IDEAL_INTERNAL_LINKS_COUNT, internalLinksCount);
117
+ const citationScore = countQuality(IDEAL_CITATIONS_COUNT, citationCount);
118
+ const mediaScore = countQuality(IDEAL_MEDIA_COUNT, mediaCount);
119
+ const tagsScore = countQuality(IDEAL_TAGS_COUNT, tagsCount);
120
+ const summaryScore = countQuality(IDEAL_SUMMARY_LENGTH, summaryWordCount);
121
+ const socialsScore = countQuality(IDEAL_SOCIAL_MEDIA_COUNT, socialsCount);
122
+ const sumOfWeights = CONTENT_SCORE_WEIGHT +
123
+ INTERNAL_LINKS_SCORE_WEIGHT +
124
+ CITATIONS_SCORE_WEIGHT +
125
+ MEDIA_SCORE_WEIGHT +
126
+ TAGS_SCORE_WEIGHT +
127
+ SUMMARY_SCORE_WEIGHT +
128
+ SOCIAL_SCORE_WEIGHT;
129
+ const score = (contentScore * CONTENT_SCORE_WEIGHT +
130
+ internalLinksScore * INTERNAL_LINKS_SCORE_WEIGHT +
131
+ citationScore * CITATIONS_SCORE_WEIGHT +
132
+ mediaScore * MEDIA_SCORE_WEIGHT +
133
+ tagsScore * TAGS_SCORE_WEIGHT +
134
+ summaryScore * SUMMARY_SCORE_WEIGHT +
135
+ socialsScore * SOCIAL_SCORE_WEIGHT) /
136
+ sumOfWeights;
137
+ const percentScore = Math.floor(score * 100);
138
+ return percentScore;
139
+ };
140
+ exports.calculateWikiScore = calculateWikiScore;
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93aWtpU2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQTZFO0FBRTdFLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQ3BDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDO0FBRXRDLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQ3hDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQ25DLE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDO0FBQy9CLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQzlCLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBRWhDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQ3RDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0FBQzVCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQ2pDLE1BQU0sd0JBQXdCLEdBQUcsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sY0FBYyxHQUFHLENBQUMsU0FBaUIsRUFBVSxFQUFFO0lBQ25ELE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQztJQUNyQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFFckIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBRWQsSUFBSSxTQUFTLEdBQUcsc0JBQXNCLEVBQUU7UUFDdEMsT0FBTyxRQUFRLENBQUM7S0FDakI7SUFFRCxJQUNFLFNBQVMsSUFBSSxzQkFBc0I7UUFDbkMsU0FBUyxJQUFJLHVC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
@@ -0,0 +1,139 @@
1
+ export type ProfileLinks = {
2
+ twitter: string | null;
3
+ website: string | null;
4
+ instagram: string | null;
5
+ };
6
+ export type ProfileData = {
7
+ id: string;
8
+ username: string;
9
+ bio: string | null;
10
+ links: ProfileLinks[];
11
+ banner: string | null;
12
+ avatar: string | null;
13
+ };
14
+ export interface BaseCategory {
15
+ id: string;
16
+ title: string;
17
+ }
18
+ export interface BaseTag {
19
+ id: string;
20
+ }
21
+ export interface Image {
22
+ id: string;
23
+ type: ArrayBuffer | string | File | Blob;
24
+ }
25
+ export interface Media {
26
+ id: string;
27
+ size?: string;
28
+ name?: string;
29
+ caption?: string;
30
+ thumbnail?: string;
31
+ source: 'IPFS_IMG' | 'VIMEO' | 'YOUTUBE' | 'IPFS_VID';
32
+ }
33
+ export declare const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
34
+ export declare const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
35
+ export declare enum CommonMetaIds {
36
+ REFERENCES = "references",
37
+ WEBSITE = "website",
38
+ CONTRACT_URL = "contract_url",
39
+ EMAIL_URL = "email_url",
40
+ FACEBOOK_PROFILE = "facebook_profile",
41
+ INSTAGRAM_PROFILE = "instagram_profile",
42
+ TWITTER_PROFILE = "twitter_profile",
43
+ LINKEDIN_PROFILE = "linkedin_profile",
44
+ YOUTUBE_PROFILE = "youtube_profile",
45
+ DISCORD_PROFILE = "discord_profile",
46
+ REDDIT_URL = "reddit_profile",
47
+ TELEGRAM_URL = "telegram_profile",
48
+ GITHUB_URL = "github_profile",
49
+ COIN_MARKET_CAP = "coinmarketcap_url",
50
+ COINGECKO_PROFILE = "coingecko_profile",
51
+ OPENSEA_PROFILE = "opensea_profile",
52
+ ETHERSCAN_PROFILE = "etherscan_profile",
53
+ ARBISCAN_PROFILE = "arbiscan_profile",
54
+ POLYGONSCAN_PROFILE = "polygonscan_profile",
55
+ BSCSCAN_PROFILE = "bscscan_profile",
56
+ OPTIMISTIC_ETHERSCAN_PROFILE = "optimistic_etherscan_profile"
57
+ }
58
+ export declare const WikiPossibleSocialsList: CommonMetaIds[];
59
+ export declare enum ValidatorCodes {
60
+ VALID_WIKI = "VALID_WIKI",
61
+ ID = "ID_ERROR",
62
+ LANGUAGE = "LANGUAGE_ERROR",
63
+ USER = "USER_ERROR",
64
+ WORDS = "WORD_COUNT_ERROR",
65
+ CATEGORY = "CATEGORY_ERROR",
66
+ SUMMARY = "SUMMARY_ERROR",
67
+ IMAGE = "IMAGE_ERROR",
68
+ TAG = "TAG_ERROR",
69
+ URL = "EXTERNAL_URL_ERROR",
70
+ METADATA = "METADATA_ERROR",
71
+ MEDIA = "MEDIA_ERROR",
72
+ GLOBAL_RATE_LIMIT = "GLOBAL_RATE_LIMIT",
73
+ ID_ERROR = "ID_ERROR"
74
+ }
75
+ export declare enum EditSpecificMetaIds {
76
+ COMMIT_MESSAGE = "commit-message",
77
+ WORDS_CHANGED = "words-changed",
78
+ PERCENT_CHANGED = "percent-changed",
79
+ BLOCKS_CHANGED = "blocks-changed",
80
+ WIKI_SCORE = "wiki-score"
81
+ }
82
+ export interface MData {
83
+ id: CommonMetaIds | EditSpecificMetaIds;
84
+ value: string;
85
+ }
86
+ export interface User {
87
+ id: string;
88
+ profile?: ProfileData | null;
89
+ }
90
+ export interface Author {
91
+ id: string | null;
92
+ profile?: ProfileData | null;
93
+ }
94
+ export interface CiteReference {
95
+ id: string;
96
+ url: string;
97
+ description: string;
98
+ timestamp: string;
99
+ }
100
+ declare enum LanguagesValuesEnum {
101
+ SPANISH = "Espa\u00F1ol",
102
+ ENGLISH = "English",
103
+ CHINESE = "\u4E2D\u6587",
104
+ KOREAN = "\uD55C\uAD6D\uC5B4"
105
+ }
106
+ export declare enum LanguagesISOEnum {
107
+ EN = "en",
108
+ ES = "es",
109
+ ZH = "zh",
110
+ KO = "ko"
111
+ }
112
+ type LanguagesType = Record<LanguagesISOEnum, LanguagesValuesEnum>;
113
+ export declare const Languages: LanguagesType;
114
+ export interface Wiki {
115
+ id: string;
116
+ transactionHash?: string;
117
+ ipfs?: string;
118
+ summary: string;
119
+ promoted: number;
120
+ title: string;
121
+ content: string;
122
+ categories: BaseCategory[];
123
+ tags: BaseTag[];
124
+ images?: Image[];
125
+ media?: Media[];
126
+ user: User;
127
+ metadata: MData[];
128
+ version: number;
129
+ language: LanguagesISOEnum;
130
+ updated?: string;
131
+ created?: string;
132
+ author: Author;
133
+ hidden: boolean;
134
+ }
135
+ export type ActivityCardDetails = Pick<Wiki, 'id' | 'title' | 'summary' | 'images' | 'categories' | 'tags' | 'user' | 'updated'>;
136
+ export type WikiPreview = Pick<Wiki, 'id' | 'hidden' | 'title' | 'summary' | 'tags' | 'images' | 'categories' | 'user' | 'updated'>;
137
+ export declare const whiteListedDomains: string[];
138
+ export declare const whiteListedLinkNames: string[];
139
+ export {};
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.whiteListedLinkNames = exports.whiteListedDomains = exports.Languages = exports.LanguagesISOEnum = exports.EditSpecificMetaIds = exports.ValidatorCodes = exports.WikiPossibleSocialsList = exports.CommonMetaIds = exports.CreateNewWikiSlug = exports.EditorContentOverride = void 0;
4
+ exports.EditorContentOverride = '%OVERRIDE@EDITOR@MARKDOWN%';
5
+ exports.CreateNewWikiSlug = '/*CREATE+NEW+WIKI*/';
6
+ var CommonMetaIds;
7
+ (function (CommonMetaIds) {
8
+ CommonMetaIds["REFERENCES"] = "references";
9
+ // other info
10
+ CommonMetaIds["WEBSITE"] = "website";
11
+ CommonMetaIds["CONTRACT_URL"] = "contract_url";
12
+ // social Links
13
+ CommonMetaIds["EMAIL_URL"] = "email_url";
14
+ CommonMetaIds["FACEBOOK_PROFILE"] = "facebook_profile";
15
+ CommonMetaIds["INSTAGRAM_PROFILE"] = "instagram_profile";
16
+ CommonMetaIds["TWITTER_PROFILE"] = "twitter_profile";
17
+ CommonMetaIds["LINKEDIN_PROFILE"] = "linkedin_profile";
18
+ CommonMetaIds["YOUTUBE_PROFILE"] = "youtube_profile";
19
+ CommonMetaIds["DISCORD_PROFILE"] = "discord_profile";
20
+ CommonMetaIds["REDDIT_URL"] = "reddit_profile";
21
+ CommonMetaIds["TELEGRAM_URL"] = "telegram_profile";
22
+ CommonMetaIds["GITHUB_URL"] = "github_profile";
23
+ CommonMetaIds["COIN_MARKET_CAP"] = "coinmarketcap_url";
24
+ CommonMetaIds["COINGECKO_PROFILE"] = "coingecko_profile";
25
+ CommonMetaIds["OPENSEA_PROFILE"] = "opensea_profile";
26
+ // Explorers
27
+ CommonMetaIds["ETHERSCAN_PROFILE"] = "etherscan_profile";
28
+ CommonMetaIds["ARBISCAN_PROFILE"] = "arbiscan_profile";
29
+ CommonMetaIds["POLYGONSCAN_PROFILE"] = "polygonscan_profile";
30
+ CommonMetaIds["BSCSCAN_PROFILE"] = "bscscan_profile";
31
+ CommonMetaIds["OPTIMISTIC_ETHERSCAN_PROFILE"] = "optimistic_etherscan_profile";
32
+ })(CommonMetaIds = exports.CommonMetaIds || (exports.CommonMetaIds = {}));
33
+ exports.WikiPossibleSocialsList = [
34
+ // other info
35
+ CommonMetaIds.WEBSITE,
36
+ CommonMetaIds.CONTRACT_URL,
37
+ // social Links
38
+ CommonMetaIds.EMAIL_URL,
39
+ CommonMetaIds.FACEBOOK_PROFILE,
40
+ CommonMetaIds.INSTAGRAM_PROFILE,
41
+ CommonMetaIds.TWITTER_PROFILE,
42
+ CommonMetaIds.LINKEDIN_PROFILE,
43
+ CommonMetaIds.YOUTUBE_PROFILE,
44
+ CommonMetaIds.REDDIT_URL,
45
+ CommonMetaIds.TELEGRAM_URL,
46
+ CommonMetaIds.DISCORD_PROFILE,
47
+ CommonMetaIds.GITHUB_URL,
48
+ CommonMetaIds.COIN_MARKET_CAP,
49
+ CommonMetaIds.COINGECKO_PROFILE,
50
+ CommonMetaIds.OPENSEA_PROFILE,
51
+ // Explorers
52
+ CommonMetaIds.ETHERSCAN_PROFILE,
53
+ CommonMetaIds.ARBISCAN_PROFILE,
54
+ CommonMetaIds.POLYGONSCAN_PROFILE,
55
+ CommonMetaIds.BSCSCAN_PROFILE,
56
+ CommonMetaIds.OPTIMISTIC_ETHERSCAN_PROFILE,
57
+ ];
58
+ var ValidatorCodes;
59
+ (function (ValidatorCodes) {
60
+ ValidatorCodes["VALID_WIKI"] = "VALID_WIKI";
61
+ ValidatorCodes["ID"] = "ID_ERROR";
62
+ ValidatorCodes["LANGUAGE"] = "LANGUAGE_ERROR";
63
+ ValidatorCodes["USER"] = "USER_ERROR";
64
+ ValidatorCodes["WORDS"] = "WORD_COUNT_ERROR";
65
+ ValidatorCodes["CATEGORY"] = "CATEGORY_ERROR";
66
+ ValidatorCodes["SUMMARY"] = "SUMMARY_ERROR";
67
+ ValidatorCodes["IMAGE"] = "IMAGE_ERROR";
68
+ ValidatorCodes["TAG"] = "TAG_ERROR";
69
+ ValidatorCodes["URL"] = "EXTERNAL_URL_ERROR";
70
+ ValidatorCodes["METADATA"] = "METADATA_ERROR";
71
+ ValidatorCodes["MEDIA"] = "MEDIA_ERROR";
72
+ ValidatorCodes["GLOBAL_RATE_LIMIT"] = "GLOBAL_RATE_LIMIT";
73
+ ValidatorCodes["ID_ERROR"] = "ID_ERROR";
74
+ })(ValidatorCodes = exports.ValidatorCodes || (exports.ValidatorCodes = {}));
75
+ var EditSpecificMetaIds;
76
+ (function (EditSpecificMetaIds) {
77
+ EditSpecificMetaIds["COMMIT_MESSAGE"] = "commit-message";
78
+ EditSpecificMetaIds["WORDS_CHANGED"] = "words-changed";
79
+ EditSpecificMetaIds["PERCENT_CHANGED"] = "percent-changed";
80
+ EditSpecificMetaIds["BLOCKS_CHANGED"] = "blocks-changed";
81
+ EditSpecificMetaIds["WIKI_SCORE"] = "wiki-score";
82
+ })(EditSpecificMetaIds = exports.EditSpecificMetaIds || (exports.EditSpecificMetaIds = {}));
83
+ var LanguagesValuesEnum;
84
+ (function (LanguagesValuesEnum) {
85
+ LanguagesValuesEnum["SPANISH"] = "Espa\u00F1ol";
86
+ LanguagesValuesEnum["ENGLISH"] = "English";
87
+ LanguagesValuesEnum["CHINESE"] = "\u4E2D\u6587";
88
+ LanguagesValuesEnum["KOREAN"] = "\uD55C\uAD6D\uC5B4";
89
+ })(LanguagesValuesEnum || (LanguagesValuesEnum = {}));
90
+ var LanguagesISOEnum;
91
+ (function (LanguagesISOEnum) {
92
+ LanguagesISOEnum["EN"] = "en";
93
+ LanguagesISOEnum["ES"] = "es";
94
+ LanguagesISOEnum["ZH"] = "zh";
95
+ LanguagesISOEnum["KO"] = "ko";
96
+ })(LanguagesISOEnum = exports.LanguagesISOEnum || (exports.LanguagesISOEnum = {}));
97
+ exports.Languages = {
98
+ en: LanguagesValuesEnum.ENGLISH,
99
+ es: LanguagesValuesEnum.SPANISH,
100
+ zh: LanguagesValuesEnum.CHINESE,
101
+ ko: LanguagesValuesEnum.KOREAN,
102
+ };
103
+ exports.whiteListedDomains = [
104
+ 'youtube.com/watch',
105
+ 'youtu.be',
106
+ 'vimeo.com',
107
+ 'alpha.everipedia.org/wiki',
108
+ 'beta.everipedia.org/wiki',
109
+ 'iq.wiki/wiki',
110
+ 'ipfs.everipedia.org/ipfs',
111
+ ];
112
+ exports.whiteListedLinkNames = ['YOUTUBE@VID'];
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy93aWtpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNDYSxRQUFBLHFCQUFxQixHQUFHLDRCQUE0QixDQUFDO0FBQ3JELFFBQUEsaUJBQWlCLEdBQUcscUJBQXFCLENBQUM7QUFFdkQsSUFBWSxhQTRCWDtBQTVCRCxXQUFZLGFBQWE7SUFDdkIsMENBQXlCLENBQUE7SUFFekIsYUFBYTtJQUNiLG9DQUFtQixDQUFBO0lBQ25CLDhDQUE2QixDQUFBO0lBRTdCLGVBQWU7SUFDZix3Q0FBdUIsQ0FBQTtJQUN2QixzREFBcUMsQ0FBQTtJQUNyQyx3REFBdUMsQ0FBQTtJQUN2QyxvREFBbUMsQ0FBQTtJQUNuQyxzREFBcUMsQ0FBQTtJQUNyQyxvREFBbUMsQ0FBQTtJQUNuQyxvREFBbUMsQ0FBQTtJQUNuQyw4Q0FBNkIsQ0FBQTtJQUM3QixrREFBaUMsQ0FBQTtJQUNqQyw4Q0FBNkIsQ0FBQTtJQUM3QixzREFBcUMsQ0FBQTtJQUNyQyx3REFBdUMsQ0FBQTtJQUN2QyxvREFBbUMsQ0FBQTtJQUVuQyxZQUFZO0lBQ1osd0RBQXVDLENBQUE7SUFDdkMsc0RBQXFDLENBQUE7SUFDckMsNERBQTJDLENBQUE7SUFDM0Msb0RBQW1DLENBQUE7SUFDbkMsOEVBQTZELENBQUE7QUFDL0QsQ0FBQyxFQTVCVyxhQUFhLEdBQWIscUJBQWEsS0FBYixxQkFBYSxRQTRCeEI7QUFFWSxRQUFBLHVCQUF1QixHQUFHO0lBQ3JDLGFBQWE7SUFDYixhQUFhLENBQUMsT0FBTztJQUNyQixhQUFhLENBQUMsWUFBWTtJQUUxQixlQUFlO0lBQ2YsYUFBYSxDQUFDLFNBQVM7SUFDdkIsYUFBYSxDQUFDLGdCQUFnQjtJQUM5QixhQUFhLENBQUMsaUJBQWlCO0lBQy9CLGFBQWEsQ0FBQyxlQUFlO0lBQzdCLGFBQWEsQ0FBQyxnQkFBZ0I7SUFDOUIsYUFBYSxDQUFDLGVBQWU7SUFDN0IsYUFBYSxDQUFDLFVBQVU7SUFDeEIsYUFBYSxDQUFDLFlBQVk7SUFDMUIsYUFBYSxDQUFDLGVBQWU7SUFDN0IsYUFBYSxDQUFDLFVBQVU7SUFDeEIsYUFBYSxDQUFDLGVBQWU7SUFDN0IsYUFBYSxDQUFDLGlCQUFpQjtJQUMvQixhQUFhLENBQUMsZUFBZTtJQUU3QixZQUFZO0lBQ1osYUFBYSxDQUFDLGlCQUFpQjtJQUMvQixhQUFhLENBQUMsZ0JBQWdCO0lBQzlCLGFBQWEsQ0FBQyxtQkFBbUI7SUFDakMsYUFBYSxDQUFDLGVBQWU7SUFDN0IsYUFBYSxDQUFDLDRCQUE0QjtDQUMzQyxDQUFDO0FBRUYsSUFBWSxjQWVYO0FBZkQsV0FBWSxjQUFjO0lBQ3hCLDJDQUF5QixDQUFBO0lBQ3pCLGlDQUFlLENBQUE7SUFDZiw2Q0FBMkIsQ0FBQTtJQUMzQixxQ0FBbUIsQ0FBQTtJQUNuQiw0Q0FBMEIsQ0FBQTtJQUMxQiw2Q0FBMkIsQ0FBQTtJQUMzQiwyQ0FBeUIsQ0FBQTtJQUN6Qix1Q0FBcUIsQ0FBQTtJQUNyQixtQ0FBaUIsQ0FBQTtJQUNqQiw0Q0FBMEIsQ0FBQTtJQUMxQiw2Q0FBMkIsQ0FBQTtJQUMzQix1Q0FBcUIsQ0FBQTtJQUNyQix5REFBdUMsQ0FBQTtJQUN2Qyx1Q0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBZlcsY0FBYyxHQUFkLHNCQUFjLEtBQWQsc0JBQWMsUUFlekI7QUFFRCxJQUFZLG1CQU1YO0FBTkQsV0FBWSxtQkFBbUI7SUFDN0Isd0RBQWlDLENBQUE7SUFDakMsc0RBQStCLENBQUE7SUFDL0IsMERBQW1DLENBQUE7SUFDbkMsd0RBQWlDLENBQUE7SUFDakMsZ0RBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQU5XLG1CQUFtQixHQUFuQiwyQkFBbUIsS0FBbkIsMkJBQW1CLFFBTTlCO0FBd0JELElBQUssbUJBS0o7QUFMRCxXQUFLLG1CQUFtQjtJQUN0QiwrQ0FBbUIsQ0FBQTtJQUNuQiwwQ0FBbUIsQ0FBQTtJQUNuQiwrQ0FBYyxDQUFBO0lBQ2Qsb0RBQWMsQ0FBQTtBQUNoQixDQUFDLEVBTEksbUJBQW1CLEtBQW5CLG1CQUFtQixRQUt2QjtBQUVELElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQiw2QkFBUyxDQUFBO0lBQ1QsNkJBQVMsQ0FBQTtJQUNULDZCQUFTLENBQUE7SUFDVCw2QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGdCQUFnQixHQUFoQix3QkFBZ0IsS0FBaEIsd0JBQWdCLFFBSzNCO0FBSVksUUFBQSxTQUFTLEdBQWtCO0lBQ3RDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO0NBQy9CLENBQUM7QUFpRFcsUUFBQSxrQkFBa0IsR0FBRztJQUNoQyxtQkFBbUI7SUFDbkIsVUFBVTtJQUNWLFdBQVc7SUFDWCwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLGNBQWM7SUFDZCwwQkFBMEI7Q0FDM0IsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ export * from './lib/wikiScore';
2
+ export * from './types/wiki';
@@ -0,0 +1,3 @@
1
+ export * from './lib/wikiScore';
2
+ export * from './types/wiki';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGNBQWMsQ0FBQyJ9
@@ -0,0 +1,2 @@
1
+ import { Wiki } from '../types/wiki';
2
+ export declare const calculateWikiScore: (wiki: Wiki) => number;
@@ -0,0 +1,135 @@
1
+ import { CommonMetaIds, WikiPossibleSocialsList } from '../types/wiki';
2
+ const MIN_CONTENT_WORD_COUNT = 10;
3
+ const GOOD_CONTENT_WORD_COUNT = 500;
4
+ const IDEAL_CONTENT_WORD_COUNT = 1500;
5
+ const CONTENT_SCORE_WEIGHT = 0.8;
6
+ const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
7
+ const CITATIONS_SCORE_WEIGHT = 0.5;
8
+ const MEDIA_SCORE_WEIGHT = 0.3;
9
+ const TAGS_SCORE_WEIGHT = 0.3;
10
+ const SUMMARY_SCORE_WEIGHT = 0.5;
11
+ const SOCIAL_SCORE_WEIGHT = 0.5;
12
+ const IDEAL_INTERNAL_LINKS_COUNT = 10;
13
+ const IDEAL_CITATIONS_COUNT = 10;
14
+ const IDEAL_MEDIA_COUNT = 5;
15
+ const IDEAL_TAGS_COUNT = 3;
16
+ const IDEAL_SUMMARY_LENGTH = 100;
17
+ const IDEAL_SOCIAL_MEDIA_COUNT = 4;
18
+ const contentQuality = (wordCount) => {
19
+ const scoreMin = 0.0;
20
+ const scoreMax = 1.0;
21
+ let score = 0;
22
+ if (wordCount < MIN_CONTENT_WORD_COUNT) {
23
+ return scoreMin;
24
+ }
25
+ if (wordCount >= MIN_CONTENT_WORD_COUNT &&
26
+ wordCount <= GOOD_CONTENT_WORD_COUNT) {
27
+ score = wordCount / GOOD_CONTENT_WORD_COUNT;
28
+ score *= 0.8;
29
+ }
30
+ if (wordCount > GOOD_CONTENT_WORD_COUNT &&
31
+ wordCount < IDEAL_CONTENT_WORD_COUNT) {
32
+ const baseScore = 0.8;
33
+ const wordCountAboveGood = wordCount - GOOD_CONTENT_WORD_COUNT;
34
+ const extraScoreFactor = wordCountAboveGood / (IDEAL_CONTENT_WORD_COUNT - GOOD_CONTENT_WORD_COUNT);
35
+ const extraScore = Math.sqrt(extraScoreFactor) * 0.2;
36
+ score = baseScore + extraScore;
37
+ }
38
+ if (wordCount >= IDEAL_CONTENT_WORD_COUNT) {
39
+ return scoreMax;
40
+ }
41
+ if (score < scoreMin) {
42
+ return scoreMin;
43
+ }
44
+ if (score > scoreMax) {
45
+ return scoreMax;
46
+ }
47
+ return score;
48
+ };
49
+ const countQuality = (idealCount, realCount) => {
50
+ const scoreMin = 0.0;
51
+ const scoreMax = 1.0;
52
+ const score = realCount / idealCount;
53
+ if (score < scoreMin) {
54
+ return scoreMin;
55
+ }
56
+ if (score > scoreMax) {
57
+ return scoreMax;
58
+ }
59
+ return score;
60
+ };
61
+ const getHostnameFromRegex = (url) => {
62
+ const matches = url.match(/^https?:\/\/([^/?#]+)(?:[/?#]|$)/i);
63
+ return matches && matches[1];
64
+ };
65
+ const getWikiInternalLinks = (content) => {
66
+ const markdownLinks = content.match(/\[(.*?)\]\((.*?)\)/g);
67
+ let internalLinksCount = 0;
68
+ markdownLinks?.forEach((link) => {
69
+ const linkMatch = link.match(/\[(.*?)\]\((.*?)\)/);
70
+ const url = linkMatch?.[2];
71
+ if (url && url.charAt(0) !== '#') {
72
+ const hostname = getHostnameFromRegex(url);
73
+ if (hostname === 'everipedia.org' ||
74
+ hostname === 'iq.wiki' ||
75
+ hostname?.endsWith('.everipedia.org')) {
76
+ internalLinksCount += 1;
77
+ }
78
+ }
79
+ });
80
+ return internalLinksCount;
81
+ };
82
+ const getWikiCitationLinks = (wiki) => {
83
+ const rawWikiReferences = wiki.metadata.find((m) => m.id === CommonMetaIds.REFERENCES)?.value;
84
+ if (rawWikiReferences === undefined ||
85
+ rawWikiReferences?.trim().length === 0) {
86
+ return 0;
87
+ }
88
+ const wikiReferences = JSON.parse(rawWikiReferences);
89
+ return wikiReferences.length;
90
+ };
91
+ const getSocialsCount = (wiki) => {
92
+ let socialsCount = 0;
93
+ wiki.metadata.forEach((meta) => {
94
+ if (WikiPossibleSocialsList.includes(meta.id)) {
95
+ if (meta.value) {
96
+ socialsCount += 1;
97
+ }
98
+ }
99
+ });
100
+ return socialsCount;
101
+ };
102
+ export const calculateWikiScore = (wiki) => {
103
+ const wordCount = wiki.content.split(' ').length;
104
+ const internalLinksCount = getWikiInternalLinks(wiki.content);
105
+ const citationCount = getWikiCitationLinks(wiki);
106
+ const mediaCount = wiki.media?.length || 0;
107
+ const tagsCount = wiki.tags?.length || 0;
108
+ const summaryWordCount = wiki.summary?.length || 0;
109
+ const socialsCount = getSocialsCount(wiki);
110
+ const contentScore = contentQuality(wordCount);
111
+ const internalLinksScore = countQuality(IDEAL_INTERNAL_LINKS_COUNT, internalLinksCount);
112
+ const citationScore = countQuality(IDEAL_CITATIONS_COUNT, citationCount);
113
+ const mediaScore = countQuality(IDEAL_MEDIA_COUNT, mediaCount);
114
+ const tagsScore = countQuality(IDEAL_TAGS_COUNT, tagsCount);
115
+ const summaryScore = countQuality(IDEAL_SUMMARY_LENGTH, summaryWordCount);
116
+ const socialsScore = countQuality(IDEAL_SOCIAL_MEDIA_COUNT, socialsCount);
117
+ const sumOfWeights = CONTENT_SCORE_WEIGHT +
118
+ INTERNAL_LINKS_SCORE_WEIGHT +
119
+ CITATIONS_SCORE_WEIGHT +
120
+ MEDIA_SCORE_WEIGHT +
121
+ TAGS_SCORE_WEIGHT +
122
+ SUMMARY_SCORE_WEIGHT +
123
+ SOCIAL_SCORE_WEIGHT;
124
+ const score = (contentScore * CONTENT_SCORE_WEIGHT +
125
+ internalLinksScore * INTERNAL_LINKS_SCORE_WEIGHT +
126
+ citationScore * CITATIONS_SCORE_WEIGHT +
127
+ mediaScore * MEDIA_SCORE_WEIGHT +
128
+ tagsScore * TAGS_SCORE_WEIGHT +
129
+ summaryScore * SUMMARY_SCORE_WEIGHT +
130
+ socialsScore * SOCIAL_SCORE_WEIGHT) /
131
+ sumOfWeights;
132
+ const percentScore = Math.floor(score * 100);
133
+ return percentScore;
134
+ };
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraVNjb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi93aWtpU2NvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBUSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RSxNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztBQUNsQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUNwQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUV0QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQztBQUMvQixNQUFNLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztBQUM5QixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUVoQyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUN0QyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUNqQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUM1QixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQztBQUMzQixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUNqQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUVuQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQWlCLEVBQVUsRUFBRTtJQUNuRCxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7SUFDckIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDO0lBRXJCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUVkLElBQUksU0FBUyxHQUFHLHNCQUFzQixFQUFFO1FBQ3RDLE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsSUFD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
@@ -0,0 +1,139 @@
1
+ export type ProfileLinks = {
2
+ twitter: string | null;
3
+ website: string | null;
4
+ instagram: string | null;
5
+ };
6
+ export type ProfileData = {
7
+ id: string;
8
+ username: string;
9
+ bio: string | null;
10
+ links: ProfileLinks[];
11
+ banner: string | null;
12
+ avatar: string | null;
13
+ };
14
+ export interface BaseCategory {
15
+ id: string;
16
+ title: string;
17
+ }
18
+ export interface BaseTag {
19
+ id: string;
20
+ }
21
+ export interface Image {
22
+ id: string;
23
+ type: ArrayBuffer | string | File | Blob;
24
+ }
25
+ export interface Media {
26
+ id: string;
27
+ size?: string;
28
+ name?: string;
29
+ caption?: string;
30
+ thumbnail?: string;
31
+ source: 'IPFS_IMG' | 'VIMEO' | 'YOUTUBE' | 'IPFS_VID';
32
+ }
33
+ export declare const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
34
+ export declare const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
35
+ export declare enum CommonMetaIds {
36
+ REFERENCES = "references",
37
+ WEBSITE = "website",
38
+ CONTRACT_URL = "contract_url",
39
+ EMAIL_URL = "email_url",
40
+ FACEBOOK_PROFILE = "facebook_profile",
41
+ INSTAGRAM_PROFILE = "instagram_profile",
42
+ TWITTER_PROFILE = "twitter_profile",
43
+ LINKEDIN_PROFILE = "linkedin_profile",
44
+ YOUTUBE_PROFILE = "youtube_profile",
45
+ DISCORD_PROFILE = "discord_profile",
46
+ REDDIT_URL = "reddit_profile",
47
+ TELEGRAM_URL = "telegram_profile",
48
+ GITHUB_URL = "github_profile",
49
+ COIN_MARKET_CAP = "coinmarketcap_url",
50
+ COINGECKO_PROFILE = "coingecko_profile",
51
+ OPENSEA_PROFILE = "opensea_profile",
52
+ ETHERSCAN_PROFILE = "etherscan_profile",
53
+ ARBISCAN_PROFILE = "arbiscan_profile",
54
+ POLYGONSCAN_PROFILE = "polygonscan_profile",
55
+ BSCSCAN_PROFILE = "bscscan_profile",
56
+ OPTIMISTIC_ETHERSCAN_PROFILE = "optimistic_etherscan_profile"
57
+ }
58
+ export declare const WikiPossibleSocialsList: CommonMetaIds[];
59
+ export declare enum ValidatorCodes {
60
+ VALID_WIKI = "VALID_WIKI",
61
+ ID = "ID_ERROR",
62
+ LANGUAGE = "LANGUAGE_ERROR",
63
+ USER = "USER_ERROR",
64
+ WORDS = "WORD_COUNT_ERROR",
65
+ CATEGORY = "CATEGORY_ERROR",
66
+ SUMMARY = "SUMMARY_ERROR",
67
+ IMAGE = "IMAGE_ERROR",
68
+ TAG = "TAG_ERROR",
69
+ URL = "EXTERNAL_URL_ERROR",
70
+ METADATA = "METADATA_ERROR",
71
+ MEDIA = "MEDIA_ERROR",
72
+ GLOBAL_RATE_LIMIT = "GLOBAL_RATE_LIMIT",
73
+ ID_ERROR = "ID_ERROR"
74
+ }
75
+ export declare enum EditSpecificMetaIds {
76
+ COMMIT_MESSAGE = "commit-message",
77
+ WORDS_CHANGED = "words-changed",
78
+ PERCENT_CHANGED = "percent-changed",
79
+ BLOCKS_CHANGED = "blocks-changed",
80
+ WIKI_SCORE = "wiki-score"
81
+ }
82
+ export interface MData {
83
+ id: CommonMetaIds | EditSpecificMetaIds;
84
+ value: string;
85
+ }
86
+ export interface User {
87
+ id: string;
88
+ profile?: ProfileData | null;
89
+ }
90
+ export interface Author {
91
+ id: string | null;
92
+ profile?: ProfileData | null;
93
+ }
94
+ export interface CiteReference {
95
+ id: string;
96
+ url: string;
97
+ description: string;
98
+ timestamp: string;
99
+ }
100
+ declare enum LanguagesValuesEnum {
101
+ SPANISH = "Espa\u00F1ol",
102
+ ENGLISH = "English",
103
+ CHINESE = "\u4E2D\u6587",
104
+ KOREAN = "\uD55C\uAD6D\uC5B4"
105
+ }
106
+ export declare enum LanguagesISOEnum {
107
+ EN = "en",
108
+ ES = "es",
109
+ ZH = "zh",
110
+ KO = "ko"
111
+ }
112
+ type LanguagesType = Record<LanguagesISOEnum, LanguagesValuesEnum>;
113
+ export declare const Languages: LanguagesType;
114
+ export interface Wiki {
115
+ id: string;
116
+ transactionHash?: string;
117
+ ipfs?: string;
118
+ summary: string;
119
+ promoted: number;
120
+ title: string;
121
+ content: string;
122
+ categories: BaseCategory[];
123
+ tags: BaseTag[];
124
+ images?: Image[];
125
+ media?: Media[];
126
+ user: User;
127
+ metadata: MData[];
128
+ version: number;
129
+ language: LanguagesISOEnum;
130
+ updated?: string;
131
+ created?: string;
132
+ author: Author;
133
+ hidden: boolean;
134
+ }
135
+ export type ActivityCardDetails = Pick<Wiki, 'id' | 'title' | 'summary' | 'images' | 'categories' | 'tags' | 'user' | 'updated'>;
136
+ export type WikiPreview = Pick<Wiki, 'id' | 'hidden' | 'title' | 'summary' | 'tags' | 'images' | 'categories' | 'user' | 'updated'>;
137
+ export declare const whiteListedDomains: string[];
138
+ export declare const whiteListedLinkNames: string[];
139
+ export {};
@@ -0,0 +1,110 @@
1
+ export const EditorContentOverride = '%OVERRIDE@EDITOR@MARKDOWN%';
2
+ export const CreateNewWikiSlug = '/*CREATE+NEW+WIKI*/';
3
+ export var CommonMetaIds;
4
+ (function (CommonMetaIds) {
5
+ CommonMetaIds["REFERENCES"] = "references";
6
+ // other info
7
+ CommonMetaIds["WEBSITE"] = "website";
8
+ CommonMetaIds["CONTRACT_URL"] = "contract_url";
9
+ // social Links
10
+ CommonMetaIds["EMAIL_URL"] = "email_url";
11
+ CommonMetaIds["FACEBOOK_PROFILE"] = "facebook_profile";
12
+ CommonMetaIds["INSTAGRAM_PROFILE"] = "instagram_profile";
13
+ CommonMetaIds["TWITTER_PROFILE"] = "twitter_profile";
14
+ CommonMetaIds["LINKEDIN_PROFILE"] = "linkedin_profile";
15
+ CommonMetaIds["YOUTUBE_PROFILE"] = "youtube_profile";
16
+ CommonMetaIds["DISCORD_PROFILE"] = "discord_profile";
17
+ CommonMetaIds["REDDIT_URL"] = "reddit_profile";
18
+ CommonMetaIds["TELEGRAM_URL"] = "telegram_profile";
19
+ CommonMetaIds["GITHUB_URL"] = "github_profile";
20
+ CommonMetaIds["COIN_MARKET_CAP"] = "coinmarketcap_url";
21
+ CommonMetaIds["COINGECKO_PROFILE"] = "coingecko_profile";
22
+ CommonMetaIds["OPENSEA_PROFILE"] = "opensea_profile";
23
+ // Explorers
24
+ CommonMetaIds["ETHERSCAN_PROFILE"] = "etherscan_profile";
25
+ CommonMetaIds["ARBISCAN_PROFILE"] = "arbiscan_profile";
26
+ CommonMetaIds["POLYGONSCAN_PROFILE"] = "polygonscan_profile";
27
+ CommonMetaIds["BSCSCAN_PROFILE"] = "bscscan_profile";
28
+ CommonMetaIds["OPTIMISTIC_ETHERSCAN_PROFILE"] = "optimistic_etherscan_profile";
29
+ })(CommonMetaIds || (CommonMetaIds = {}));
30
+ export const WikiPossibleSocialsList = [
31
+ // other info
32
+ CommonMetaIds.WEBSITE,
33
+ CommonMetaIds.CONTRACT_URL,
34
+ // social Links
35
+ CommonMetaIds.EMAIL_URL,
36
+ CommonMetaIds.FACEBOOK_PROFILE,
37
+ CommonMetaIds.INSTAGRAM_PROFILE,
38
+ CommonMetaIds.TWITTER_PROFILE,
39
+ CommonMetaIds.LINKEDIN_PROFILE,
40
+ CommonMetaIds.YOUTUBE_PROFILE,
41
+ CommonMetaIds.REDDIT_URL,
42
+ CommonMetaIds.TELEGRAM_URL,
43
+ CommonMetaIds.DISCORD_PROFILE,
44
+ CommonMetaIds.GITHUB_URL,
45
+ CommonMetaIds.COIN_MARKET_CAP,
46
+ CommonMetaIds.COINGECKO_PROFILE,
47
+ CommonMetaIds.OPENSEA_PROFILE,
48
+ // Explorers
49
+ CommonMetaIds.ETHERSCAN_PROFILE,
50
+ CommonMetaIds.ARBISCAN_PROFILE,
51
+ CommonMetaIds.POLYGONSCAN_PROFILE,
52
+ CommonMetaIds.BSCSCAN_PROFILE,
53
+ CommonMetaIds.OPTIMISTIC_ETHERSCAN_PROFILE,
54
+ ];
55
+ export var ValidatorCodes;
56
+ (function (ValidatorCodes) {
57
+ ValidatorCodes["VALID_WIKI"] = "VALID_WIKI";
58
+ ValidatorCodes["ID"] = "ID_ERROR";
59
+ ValidatorCodes["LANGUAGE"] = "LANGUAGE_ERROR";
60
+ ValidatorCodes["USER"] = "USER_ERROR";
61
+ ValidatorCodes["WORDS"] = "WORD_COUNT_ERROR";
62
+ ValidatorCodes["CATEGORY"] = "CATEGORY_ERROR";
63
+ ValidatorCodes["SUMMARY"] = "SUMMARY_ERROR";
64
+ ValidatorCodes["IMAGE"] = "IMAGE_ERROR";
65
+ ValidatorCodes["TAG"] = "TAG_ERROR";
66
+ ValidatorCodes["URL"] = "EXTERNAL_URL_ERROR";
67
+ ValidatorCodes["METADATA"] = "METADATA_ERROR";
68
+ ValidatorCodes["MEDIA"] = "MEDIA_ERROR";
69
+ ValidatorCodes["GLOBAL_RATE_LIMIT"] = "GLOBAL_RATE_LIMIT";
70
+ ValidatorCodes["ID_ERROR"] = "ID_ERROR";
71
+ })(ValidatorCodes || (ValidatorCodes = {}));
72
+ export var EditSpecificMetaIds;
73
+ (function (EditSpecificMetaIds) {
74
+ EditSpecificMetaIds["COMMIT_MESSAGE"] = "commit-message";
75
+ EditSpecificMetaIds["WORDS_CHANGED"] = "words-changed";
76
+ EditSpecificMetaIds["PERCENT_CHANGED"] = "percent-changed";
77
+ EditSpecificMetaIds["BLOCKS_CHANGED"] = "blocks-changed";
78
+ EditSpecificMetaIds["WIKI_SCORE"] = "wiki-score";
79
+ })(EditSpecificMetaIds || (EditSpecificMetaIds = {}));
80
+ var LanguagesValuesEnum;
81
+ (function (LanguagesValuesEnum) {
82
+ LanguagesValuesEnum["SPANISH"] = "Espa\u00F1ol";
83
+ LanguagesValuesEnum["ENGLISH"] = "English";
84
+ LanguagesValuesEnum["CHINESE"] = "\u4E2D\u6587";
85
+ LanguagesValuesEnum["KOREAN"] = "\uD55C\uAD6D\uC5B4";
86
+ })(LanguagesValuesEnum || (LanguagesValuesEnum = {}));
87
+ export var LanguagesISOEnum;
88
+ (function (LanguagesISOEnum) {
89
+ LanguagesISOEnum["EN"] = "en";
90
+ LanguagesISOEnum["ES"] = "es";
91
+ LanguagesISOEnum["ZH"] = "zh";
92
+ LanguagesISOEnum["KO"] = "ko";
93
+ })(LanguagesISOEnum || (LanguagesISOEnum = {}));
94
+ export const Languages = {
95
+ en: LanguagesValuesEnum.ENGLISH,
96
+ es: LanguagesValuesEnum.SPANISH,
97
+ zh: LanguagesValuesEnum.CHINESE,
98
+ ko: LanguagesValuesEnum.KOREAN,
99
+ };
100
+ export const whiteListedDomains = [
101
+ 'youtube.com/watch',
102
+ 'youtu.be',
103
+ 'vimeo.com',
104
+ 'alpha.everipedia.org/wiki',
105
+ 'beta.everipedia.org/wiki',
106
+ 'iq.wiki/wiki',
107
+ 'ipfs.everipedia.org/ipfs',
108
+ ];
109
+ export const whiteListedLinkNames = ['YOUTUBE@VID'];
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy93aWtpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV2RCxNQUFNLENBQU4sSUFBWSxhQTRCWDtBQTVCRCxXQUFZLGFBQWE7SUFDdkIsMENBQXlCLENBQUE7SUFFekIsYUFBYTtJQUNiLG9DQUFtQixDQUFBO0lBQ25CLDhDQUE2QixDQUFBO0lBRTdCLGVBQWU7SUFDZix3Q0FBdUIsQ0FBQTtJQUN2QixzREFBcUMsQ0FBQTtJQUNyQyx3REFBdUMsQ0FBQTtJQUN2QyxvREFBbUMsQ0FBQTtJQUNuQyxzREFBcUMsQ0FBQTtJQUNyQyxvREFBbUMsQ0FBQTtJQUNuQyxvREFBbUMsQ0FBQTtJQUNuQyw4Q0FBNkIsQ0FBQTtJQUM3QixrREFBaUMsQ0FBQTtJQUNqQyw4Q0FBNkIsQ0FBQTtJQUM3QixzREFBcUMsQ0FBQTtJQUNyQyx3REFBdUMsQ0FBQTtJQUN2QyxvREFBbUMsQ0FBQTtJQUVuQyxZQUFZO0lBQ1osd0RBQXVDLENBQUE7SUFDdkMsc0RBQXFDLENBQUE7SUFDckMsNERBQTJDLENBQUE7SUFDM0Msb0RBQW1DLENBQUE7SUFDbkMsOEVBQTZELENBQUE7QUFDL0QsQ0FBQyxFQTVCVyxhQUFhLEtBQWIsYUFBYSxRQTRCeEI7QUFFRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxhQUFhO0lBQ2IsYUFBYSxDQUFDLE9BQU87SUFDckIsYUFBYSxDQUFDLFlBQVk7SUFFMUIsZUFBZTtJQUNmLGFBQWEsQ0FBQyxTQUFTO0lBQ3ZCLGFBQWEsQ0FBQyxnQkFBZ0I7SUFDOUIsYUFBYSxDQUFDLGlCQUFpQjtJQUMvQixhQUFhLENBQUMsZUFBZTtJQUM3QixhQUFhLENBQUMsZ0JBQWdCO0lBQzlCLGFBQWEsQ0FBQyxlQUFlO0lBQzdCLGFBQWEsQ0FBQyxVQUFVO0lBQ3hCLGFBQWEsQ0FBQyxZQUFZO0lBQzFCLGFBQWEsQ0FBQyxlQUFlO0lBQzdCLGFBQWEsQ0FBQyxVQUFVO0lBQ3hCLGFBQWEsQ0FBQyxlQUFlO0lBQzdCLGFBQWEsQ0FBQyxpQkFBaUI7SUFDL0IsYUFBYSxDQUFDLGVBQWU7SUFFN0IsWUFBWTtJQUNaLGFBQWEsQ0FBQyxpQkFBaUI7SUFDL0IsYUFBYSxDQUFDLGdCQUFnQjtJQUM5QixhQUFhLENBQUMsbUJBQW1CO0lBQ2pDLGFBQWEsQ0FBQyxlQUFlO0lBQzdCLGFBQWEsQ0FBQyw0QkFBNEI7Q0FDM0MsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLGNBZVg7QUFmRCxXQUFZLGNBQWM7SUFDeEIsMkNBQXlCLENBQUE7SUFDekIsaUNBQWUsQ0FBQTtJQUNmLDZDQUEyQixDQUFBO0lBQzNCLHFDQUFtQixDQUFBO0lBQ25CLDRDQUEwQixDQUFBO0lBQzFCLDZDQUEyQixDQUFBO0lBQzNCLDJDQUF5QixDQUFBO0lBQ3pCLHVDQUFxQixDQUFBO0lBQ3JCLG1DQUFpQixDQUFBO0lBQ2pCLDRDQUEwQixDQUFBO0lBQzFCLDZDQUEyQixDQUFBO0lBQzNCLHVDQUFxQixDQUFBO0lBQ3JCLHlEQUF1QyxDQUFBO0lBQ3ZDLHVDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFmVyxjQUFjLEtBQWQsY0FBYyxRQWV6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG1CQU1YO0FBTkQsV0FBWSxtQkFBbUI7SUFDN0Isd0RBQWlDLENBQUE7SUFDakMsc0RBQStCLENBQUE7SUFDL0IsMERBQW1DLENBQUE7SUFDbkMsd0RBQWlDLENBQUE7SUFDakMsZ0RBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQU5XLG1CQUFtQixLQUFuQixtQkFBbUIsUUFNOUI7QUF3QkQsSUFBSyxtQkFLSjtBQUxELFdBQUssbUJBQW1CO0lBQ3RCLCtDQUFtQixDQUFBO0lBQ25CLDBDQUFtQixDQUFBO0lBQ25CLCtDQUFjLENBQUE7SUFDZCxvREFBYyxDQUFBO0FBQ2hCLENBQUMsRUFMSSxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBS3ZCO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBS1g7QUFMRCxXQUFZLGdCQUFnQjtJQUMxQiw2QkFBUyxDQUFBO0lBQ1QsNkJBQVMsQ0FBQTtJQUNULDZCQUFTLENBQUE7SUFDVCw2QkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFLM0I7QUFJRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQWtCO0lBQ3RDLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO0lBQy9CLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxNQUFNO0NBQy9CLENBQUM7QUFpREYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUc7SUFDaEMsbUJBQW1CO0lBQ25CLFVBQVU7SUFDVixXQUFXO0lBQ1gsMkJBQTJCO0lBQzNCLDBCQUEwQjtJQUMxQixjQUFjO0lBQ2QsMEJBQTBCO0NBQzNCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDIn0=
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@everipedia/iq-utils",
3
+ "version": "0.0.1",
4
+ "description": "Common utility library for IQ projects",
5
+ "main": "build/main/index.js",
6
+ "typings": "build/main/index.d.ts",
7
+ "module": "build/module/index.js",
8
+ "repository": "https://github.com/EveripediaNetwork/iq-utils",
9
+ "license": "MIT",
10
+ "keywords": [],
11
+ "scripts": {
12
+ "build": "run-p build:*",
13
+ "build:main": "tsc -p tsconfig.json",
14
+ "build:module": "tsc -p tsconfig.module.json",
15
+ "fix": "run-s fix:*",
16
+ "fix:prettier": "prettier \"src/**/*.ts\" --write",
17
+ "fix:lint": "eslint src --ext .ts --fix",
18
+ "watch:build": "tsc -p tsconfig.json -w",
19
+ "reset-hard": "git clean -dfx && git reset --hard && yarn",
20
+ "release": "yarn build && changeset publish"
21
+ },
22
+ "engines": {
23
+ "node": ">=10"
24
+ },
25
+ "devDependencies": {
26
+ "@changesets/cli": "^2.24.0",
27
+ "@typescript-eslint/eslint-plugin": "^5.30.7",
28
+ "@typescript-eslint/parser": "^5.30.7",
29
+ "changeset": "^0.2.6",
30
+ "eslint": "^8.20.0",
31
+ "eslint-config-prettier": "^8.5.0",
32
+ "eslint-plugin-eslint-comments": "^3.2.0",
33
+ "eslint-plugin-import": "^2.26.0",
34
+ "npm-run-all": "^4.1.5",
35
+ "prettier": "^2.7.1",
36
+ "typescript": "^4.7.4"
37
+ },
38
+ "files": [
39
+ "build/main",
40
+ "build/module",
41
+ "!**/*.spec.*",
42
+ "!**/*.json",
43
+ "CHANGELOG.md",
44
+ "LICENSE",
45
+ "README.md"
46
+ ],
47
+ "prettier": {
48
+ "singleQuote": true
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ }
53
+ }