@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/build/main/types/wiki.js
CHANGED
|
@@ -1,176 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.whiteListedLinkNames = exports.whiteListedDomains =
|
|
4
|
-
var MediaType;
|
|
5
|
-
(function (MediaType) {
|
|
6
|
-
MediaType["GALLERY"] = "GALLERY";
|
|
7
|
-
MediaType["ICON"] = "ICON";
|
|
8
|
-
})(MediaType = exports.MediaType || (exports.MediaType = {}));
|
|
9
|
-
var MediaSource;
|
|
10
|
-
(function (MediaSource) {
|
|
11
|
-
MediaSource["IPFS_IMG"] = "IPFS_IMG";
|
|
12
|
-
MediaSource["VIMEO"] = "VIMEO";
|
|
13
|
-
MediaSource["YOUTUBE"] = "YOUTUBE";
|
|
14
|
-
MediaSource["IPFS_VID"] = "IPFS_VID";
|
|
15
|
-
})(MediaSource = exports.MediaSource || (exports.MediaSource = {}));
|
|
16
|
-
exports.EditorContentOverride = '%OVERRIDE@EDITOR@MARKDOWN%';
|
|
17
|
-
exports.CreateNewWikiSlug = '/*CREATE+NEW+WIKI*/';
|
|
18
|
-
var CommonMetaIds;
|
|
19
|
-
(function (CommonMetaIds) {
|
|
20
|
-
CommonMetaIds["REFERENCES"] = "references";
|
|
21
|
-
// other info
|
|
22
|
-
CommonMetaIds["WEBSITE"] = "website";
|
|
23
|
-
CommonMetaIds["CONTRACT_URL"] = "contract_url";
|
|
24
|
-
CommonMetaIds["LOCATION"] = "location";
|
|
25
|
-
// social Links
|
|
26
|
-
CommonMetaIds["EMAIL_URL"] = "email_url";
|
|
27
|
-
CommonMetaIds["FACEBOOK_PROFILE"] = "facebook_profile";
|
|
28
|
-
CommonMetaIds["INSTAGRAM_PROFILE"] = "instagram_profile";
|
|
29
|
-
CommonMetaIds["TWITTER_PROFILE"] = "twitter_profile";
|
|
30
|
-
CommonMetaIds["LINKEDIN_PROFILE"] = "linkedin_profile";
|
|
31
|
-
CommonMetaIds["YOUTUBE_PROFILE"] = "youtube_profile";
|
|
32
|
-
CommonMetaIds["DISCORD_PROFILE"] = "discord_profile";
|
|
33
|
-
CommonMetaIds["REDDIT_URL"] = "reddit_profile";
|
|
34
|
-
CommonMetaIds["TELEGRAM_URL"] = "telegram_profile";
|
|
35
|
-
CommonMetaIds["GITHUB_URL"] = "github_profile";
|
|
36
|
-
CommonMetaIds["COIN_MARKET_CAP"] = "coinmarketcap_url";
|
|
37
|
-
CommonMetaIds["COINGECKO_PROFILE"] = "coingecko_profile";
|
|
38
|
-
CommonMetaIds["OPENSEA_PROFILE"] = "opensea_profile";
|
|
39
|
-
CommonMetaIds["MEDIUM_PROFILE"] = "medium_profile";
|
|
40
|
-
CommonMetaIds["MIRROR_PROFILE"] = "mirror_profile";
|
|
41
|
-
CommonMetaIds["TIKTOK_PROFILE"] = "tiktok_profile";
|
|
42
|
-
// Explorers
|
|
43
|
-
CommonMetaIds["ETHERSCAN_PROFILE"] = "etherscan_profile";
|
|
44
|
-
CommonMetaIds["ARBISCAN_PROFILE"] = "arbiscan_profile";
|
|
45
|
-
CommonMetaIds["POLYGONSCAN_PROFILE"] = "polygonscan_profile";
|
|
46
|
-
CommonMetaIds["BSCSCAN_PROFILE"] = "bscscan_profile";
|
|
47
|
-
CommonMetaIds["OPTIMISTIC_ETHERSCAN_PROFILE"] = "optimistic_etherscan_profile";
|
|
48
|
-
CommonMetaIds["BASESCAN_PROFILE"] = "basescan_profile";
|
|
49
|
-
CommonMetaIds["FTMSCAN_PROFILE"] = "ftmscan_profile";
|
|
50
|
-
CommonMetaIds["SOLSCAN_PROFILE"] = "solscan_profile";
|
|
51
|
-
CommonMetaIds["AVASCAN_PROFILE"] = "avascan_profile";
|
|
52
|
-
CommonMetaIds["NEARBLOCKS_PROFILE"] = "nearblocks_profile";
|
|
53
|
-
CommonMetaIds["TROSCAN_PROFILE"] = "troscan_profile";
|
|
54
|
-
CommonMetaIds["XRPSCAN_PROFILE"] = "xrpscan_profile";
|
|
55
|
-
CommonMetaIds["KAVASCAN_PROFILE"] = "kavascan_profile";
|
|
56
|
-
CommonMetaIds["TONSCAN_PROFILE"] = "tonscan_profile";
|
|
57
|
-
CommonMetaIds["CELOSCAN_PROFILE"] = "celoscan_profile";
|
|
58
|
-
CommonMetaIds["CRONOSCAN_PROFILE"] = "cronoscan_profile";
|
|
59
|
-
CommonMetaIds["ZKSCAN_PROFILE"] = "zkscan_profile";
|
|
60
|
-
CommonMetaIds["EXPLORER_INJECTIVE"] = "explorer_injective_profile";
|
|
61
|
-
CommonMetaIds["BLASTSCAN_PROFILE"] = "blastscan_profile";
|
|
62
|
-
})(CommonMetaIds = exports.CommonMetaIds || (exports.CommonMetaIds = {}));
|
|
63
|
-
exports.WikiPossibleSocialsList = [
|
|
64
|
-
// other info
|
|
65
|
-
CommonMetaIds.WEBSITE,
|
|
66
|
-
CommonMetaIds.CONTRACT_URL,
|
|
67
|
-
// social Links
|
|
68
|
-
CommonMetaIds.EMAIL_URL,
|
|
69
|
-
CommonMetaIds.FACEBOOK_PROFILE,
|
|
70
|
-
CommonMetaIds.INSTAGRAM_PROFILE,
|
|
71
|
-
CommonMetaIds.TWITTER_PROFILE,
|
|
72
|
-
CommonMetaIds.LINKEDIN_PROFILE,
|
|
73
|
-
CommonMetaIds.YOUTUBE_PROFILE,
|
|
74
|
-
CommonMetaIds.REDDIT_URL,
|
|
75
|
-
CommonMetaIds.TELEGRAM_URL,
|
|
76
|
-
CommonMetaIds.DISCORD_PROFILE,
|
|
77
|
-
CommonMetaIds.GITHUB_URL,
|
|
78
|
-
CommonMetaIds.COIN_MARKET_CAP,
|
|
79
|
-
CommonMetaIds.COINGECKO_PROFILE,
|
|
80
|
-
CommonMetaIds.OPENSEA_PROFILE,
|
|
81
|
-
CommonMetaIds.MEDIUM_PROFILE,
|
|
82
|
-
CommonMetaIds.TIKTOK_PROFILE,
|
|
83
|
-
// Explorers
|
|
84
|
-
CommonMetaIds.ETHERSCAN_PROFILE,
|
|
85
|
-
CommonMetaIds.ARBISCAN_PROFILE,
|
|
86
|
-
CommonMetaIds.POLYGONSCAN_PROFILE,
|
|
87
|
-
CommonMetaIds.BSCSCAN_PROFILE,
|
|
88
|
-
CommonMetaIds.OPTIMISTIC_ETHERSCAN_PROFILE,
|
|
89
|
-
CommonMetaIds.BASESCAN_PROFILE,
|
|
90
|
-
CommonMetaIds.FTMSCAN_PROFILE,
|
|
91
|
-
CommonMetaIds.XRPSCAN_PROFILE,
|
|
92
|
-
CommonMetaIds.KAVASCAN_PROFILE,
|
|
93
|
-
CommonMetaIds.TONSCAN_PROFILE,
|
|
94
|
-
CommonMetaIds.CELOSCAN_PROFILE,
|
|
95
|
-
CommonMetaIds.CRONOSCAN_PROFILE,
|
|
96
|
-
CommonMetaIds.ZKSCAN_PROFILE,
|
|
97
|
-
CommonMetaIds.EXPLORER_INJECTIVE,
|
|
98
|
-
CommonMetaIds.BLASTSCAN_PROFILE,
|
|
99
|
-
];
|
|
100
|
-
var ValidatorCodes;
|
|
101
|
-
(function (ValidatorCodes) {
|
|
102
|
-
ValidatorCodes["VALID_WIKI"] = "VALID_WIKI";
|
|
103
|
-
ValidatorCodes["ID"] = "ID_ERROR";
|
|
104
|
-
ValidatorCodes["LANGUAGE"] = "LANGUAGE_ERROR";
|
|
105
|
-
ValidatorCodes["USER"] = "USER_ERROR";
|
|
106
|
-
ValidatorCodes["WORDS"] = "WORD_COUNT_ERROR";
|
|
107
|
-
ValidatorCodes["CATEGORY"] = "CATEGORY_ERROR";
|
|
108
|
-
ValidatorCodes["SUMMARY"] = "SUMMARY_ERROR";
|
|
109
|
-
ValidatorCodes["IMAGE"] = "IMAGE_ERROR";
|
|
110
|
-
ValidatorCodes["TAG"] = "TAG_ERROR";
|
|
111
|
-
ValidatorCodes["URL"] = "EXTERNAL_URL_ERROR";
|
|
112
|
-
ValidatorCodes["METADATA"] = "METADATA_ERROR";
|
|
113
|
-
ValidatorCodes["MEDIA"] = "MEDIA_ERROR";
|
|
114
|
-
ValidatorCodes["GLOBAL_RATE_LIMIT"] = "GLOBAL_RATE_LIMIT";
|
|
115
|
-
ValidatorCodes["ID_ERROR"] = "ID_ERROR";
|
|
116
|
-
ValidatorCodes["LINKED_WIKIS"] = "LINKED_WIKIS";
|
|
117
|
-
ValidatorCodes["EVENTS"] = "EVENTS_ERROR";
|
|
118
|
-
})(ValidatorCodes = exports.ValidatorCodes || (exports.ValidatorCodes = {}));
|
|
119
|
-
var EditSpecificMetaIds;
|
|
120
|
-
(function (EditSpecificMetaIds) {
|
|
121
|
-
EditSpecificMetaIds["PREVIOUS_CID"] = "previous_cid";
|
|
122
|
-
EditSpecificMetaIds["COMMIT_MESSAGE"] = "commit-message";
|
|
123
|
-
EditSpecificMetaIds["WORDS_CHANGED"] = "words-changed";
|
|
124
|
-
EditSpecificMetaIds["PERCENT_CHANGED"] = "percent-changed";
|
|
125
|
-
EditSpecificMetaIds["BLOCKS_CHANGED"] = "blocks-changed";
|
|
126
|
-
EditSpecificMetaIds["WIKI_SCORE"] = "wiki-score";
|
|
127
|
-
})(EditSpecificMetaIds = exports.EditSpecificMetaIds || (exports.EditSpecificMetaIds = {}));
|
|
128
|
-
var LanguagesValuesEnum;
|
|
129
|
-
(function (LanguagesValuesEnum) {
|
|
130
|
-
LanguagesValuesEnum["SPANISH"] = "Espa\u00F1ol";
|
|
131
|
-
LanguagesValuesEnum["ENGLISH"] = "English";
|
|
132
|
-
LanguagesValuesEnum["CHINESE"] = "\u4E2D\u6587";
|
|
133
|
-
LanguagesValuesEnum["KOREAN"] = "\uD55C\uAD6D\uC5B4";
|
|
134
|
-
})(LanguagesValuesEnum || (LanguagesValuesEnum = {}));
|
|
135
|
-
var LanguagesISOEnum;
|
|
136
|
-
(function (LanguagesISOEnum) {
|
|
137
|
-
LanguagesISOEnum["EN"] = "en";
|
|
138
|
-
LanguagesISOEnum["ES"] = "es";
|
|
139
|
-
LanguagesISOEnum["ZH"] = "zh";
|
|
140
|
-
LanguagesISOEnum["KO"] = "ko";
|
|
141
|
-
})(LanguagesISOEnum = exports.LanguagesISOEnum || (exports.LanguagesISOEnum = {}));
|
|
142
|
-
exports.Languages = {
|
|
143
|
-
en: LanguagesValuesEnum.ENGLISH,
|
|
144
|
-
es: LanguagesValuesEnum.SPANISH,
|
|
145
|
-
zh: LanguagesValuesEnum.CHINESE,
|
|
146
|
-
ko: LanguagesValuesEnum.KOREAN,
|
|
147
|
-
};
|
|
148
|
-
var LinkedWikiKey;
|
|
149
|
-
(function (LinkedWikiKey) {
|
|
150
|
-
LinkedWikiKey["FOUNDER"] = "founders";
|
|
151
|
-
LinkedWikiKey["BLOCKCHAIN"] = "blockchains";
|
|
152
|
-
LinkedWikiKey["SPEAKERS"] = "speakers";
|
|
153
|
-
})(LinkedWikiKey = exports.LinkedWikiKey || (exports.LinkedWikiKey = {}));
|
|
154
|
-
var EventType;
|
|
155
|
-
(function (EventType) {
|
|
156
|
-
EventType["CREATED"] = "CREATED";
|
|
157
|
-
EventType["DEFAULT"] = "DEFAULT";
|
|
158
|
-
EventType["MULTIDATE"] = "MULTIDATE";
|
|
159
|
-
})(EventType = exports.EventType || (exports.EventType = {}));
|
|
160
|
-
var EventAction;
|
|
161
|
-
(function (EventAction) {
|
|
162
|
-
EventAction["DELETE"] = "DELETE";
|
|
163
|
-
EventAction["EDIT"] = "EDIT";
|
|
164
|
-
EventAction["CREATE"] = "CREATE";
|
|
165
|
-
})(EventAction = exports.EventAction || (exports.EventAction = {}));
|
|
3
|
+
exports.whiteListedLinkNames = exports.whiteListedDomains = void 0;
|
|
166
4
|
exports.whiteListedDomains = [
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
5
|
+
"youtube.com/watch",
|
|
6
|
+
"youtu.be",
|
|
7
|
+
"vimeo.com",
|
|
8
|
+
"alpha.everipedia.org/wiki",
|
|
9
|
+
"beta.everipedia.org/wiki",
|
|
10
|
+
"iq.wiki/wiki",
|
|
11
|
+
"ipfs.everipedia.org/ipfs",
|
|
174
12
|
];
|
|
175
|
-
exports.whiteListedLinkNames = [
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
exports.whiteListedLinkNames = ["YOUTUBE@VID", "DUNE@EMBED"];
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90eXBlcy93aWtpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZCYSxRQUFBLGtCQUFrQixHQUFHO0lBQ2pDLG1CQUFtQjtJQUNuQixVQUFVO0lBQ1YsV0FBVztJQUNYLDJCQUEyQjtJQUMzQiwwQkFBMEI7SUFDMUIsY0FBYztJQUNkLDBCQUEwQjtDQUMxQixDQUFDO0FBRVcsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyJ9
|
|
@@ -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;
|
|
@@ -4,4 +4,22 @@ export const WIKI_TITLE_MAX_LENGTH = 60;
|
|
|
4
4
|
export const MEDIA_UPLOAD_PENDING_SUFFIX = "default";
|
|
5
5
|
export const MAX_MEDIA_COUNT = 25;
|
|
6
6
|
export const IPFS_HASH_LENGTH = 46;
|
|
7
|
-
|
|
7
|
+
export const EditorContentOverride = "%OVERRIDE@EDITOR@MARKDOWN%";
|
|
8
|
+
export const CreateNewWikiSlug = "/*CREATE+NEW+WIKI*/";
|
|
9
|
+
export const MIN_CONTENT_WORD_COUNT = 10;
|
|
10
|
+
export const GOOD_CONTENT_WORD_COUNT = 500;
|
|
11
|
+
export const IDEAL_CONTENT_WORD_COUNT = 1500;
|
|
12
|
+
export const CONTENT_SCORE_WEIGHT = 0.8;
|
|
13
|
+
export const INTERNAL_LINKS_SCORE_WEIGHT = 0.5;
|
|
14
|
+
export const CITATIONS_SCORE_WEIGHT = 0.5;
|
|
15
|
+
export const MEDIA_SCORE_WEIGHT = 0.3;
|
|
16
|
+
export const TAGS_SCORE_WEIGHT = 0.3;
|
|
17
|
+
export const SUMMARY_SCORE_WEIGHT = 0.5;
|
|
18
|
+
export const SOCIAL_SCORE_WEIGHT = 0.5;
|
|
19
|
+
export const IDEAL_INTERNAL_LINKS_COUNT = 10;
|
|
20
|
+
export const IDEAL_CITATIONS_COUNT = 10;
|
|
21
|
+
export const IDEAL_MEDIA_COUNT = 5;
|
|
22
|
+
export const IDEAL_TAGS_COUNT = 3;
|
|
23
|
+
export const IDEAL_SUMMARY_LENGTH = 100;
|
|
24
|
+
export const IDEAL_SOCIAL_MEDIA_COUNT = 4;
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2RhdGEvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUMzQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsRUFBRSxDQUFDO0FBQ3hDLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFNBQVMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyw0QkFBNEIsQ0FBQztBQUNsRSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxxQkFBcUIsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDekMsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsR0FBRyxDQUFDO0FBQzNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksQ0FBQztBQUU3QyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsR0FBRyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBQzdDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7QUFDbkMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQztBQUN4QyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLENBQUMifQ==
|
package/build/module/index.d.ts
CHANGED
package/build/module/index.js
CHANGED
|
@@ -3,4 +3,5 @@ export * from "./lib/isDeepEqual";
|
|
|
3
3
|
export * from "./lib/checkWikiValidity";
|
|
4
4
|
export * from "./types/wiki";
|
|
5
5
|
export * from "./types/wikiBuilder";
|
|
6
|
-
|
|
6
|
+
export * from "./data/constants";
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGtCQUFrQixDQUFDIn0=
|
|
@@ -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,17 +1,18 @@
|
|
|
1
1
|
import { IPFS_HASH_LENGTH, MAX_MEDIA_COUNT, MEDIA_UPLOAD_PENDING_SUFFIX, WIKI_CONTENT_MIN_WORDS, WIKI_SUMMARY_MAX_LENGTH, WIKI_TITLE_MAX_LENGTH, } from "../data/constants";
|
|
2
|
-
import {
|
|
2
|
+
import { CommonMetaIdsEnum, MediaSourceEnum, MediaTypeEnum, } from "../schema/wiki.schema";
|
|
3
|
+
import { whiteListedDomains, whiteListedLinkNames } from "../types/wiki";
|
|
3
4
|
/**
|
|
4
5
|
* Counts the number of words in a given string.
|
|
5
6
|
* @param text - The input string to count words from.
|
|
6
7
|
* @returns The number of words in the string.
|
|
7
8
|
*/
|
|
8
|
-
const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
9
|
+
export const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
9
10
|
/**
|
|
10
11
|
* Checks if a given string is a valid URL.
|
|
11
12
|
* @param urlString - The string to check.
|
|
12
13
|
* @returns True if the string is a valid URL, false otherwise.
|
|
13
14
|
*/
|
|
14
|
-
const isValidUrl = (urlString) => {
|
|
15
|
+
export const isValidUrl = (urlString) => {
|
|
15
16
|
try {
|
|
16
17
|
return Boolean(new URL(urlString));
|
|
17
18
|
}
|
|
@@ -46,25 +47,27 @@ export const areContentLinksVerified = (content) => {
|
|
|
46
47
|
* @param wiki - The wiki object to check.
|
|
47
48
|
* @returns True if the media is valid, false otherwise.
|
|
48
49
|
*/
|
|
49
|
-
const isMediaValid = (wiki) => {
|
|
50
|
+
export const isMediaValid = (wiki) => {
|
|
50
51
|
if (!wiki.media)
|
|
51
52
|
return true;
|
|
52
53
|
const isMediaContentValid = wiki.media.every((media) => {
|
|
53
|
-
if (media.source ===
|
|
54
|
-
media.source ===
|
|
54
|
+
if (media.source === MediaSourceEnum.Enum.IPFS_IMG ||
|
|
55
|
+
media.source === MediaSourceEnum.Enum.IPFS_VID) {
|
|
55
56
|
return media.id.length === IPFS_HASH_LENGTH;
|
|
56
57
|
}
|
|
57
|
-
if (media.source ===
|
|
58
|
+
if (media.source === MediaSourceEnum.Enum.YOUTUBE) {
|
|
58
59
|
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
59
60
|
return (media.id === `https://www.youtube.com/watch?v=${media.name}` &&
|
|
60
61
|
youtubePattern.test(media.id));
|
|
61
62
|
}
|
|
62
|
-
if (media.source ===
|
|
63
|
+
if (media.source === MediaSourceEnum.Enum.VIMEO) {
|
|
63
64
|
return media.id === `https://vimeo.com/${media.name}`;
|
|
64
65
|
}
|
|
65
|
-
return media.type
|
|
66
|
+
return media.type
|
|
67
|
+
? Object.values(MediaTypeEnum).includes(media.type)
|
|
68
|
+
: true;
|
|
66
69
|
});
|
|
67
|
-
const iconMediaCount = wiki.media.filter((media) => media.type ===
|
|
70
|
+
const iconMediaCount = wiki.media.filter((media) => media.type === MediaTypeEnum.Enum.ICON).length;
|
|
68
71
|
return (wiki.media.length <= MAX_MEDIA_COUNT &&
|
|
69
72
|
isMediaContentValid &&
|
|
70
73
|
iconMediaCount <= 1);
|
|
@@ -74,17 +77,16 @@ const isMediaValid = (wiki) => {
|
|
|
74
77
|
* @param wiki - The wiki object to check.
|
|
75
78
|
* @returns True if any media is still uploading, false otherwise.
|
|
76
79
|
*/
|
|
77
|
-
const isAnyMediaUploading = (wiki) => wiki.media?.some((media) => media.id.endsWith(MEDIA_UPLOAD_PENDING_SUFFIX)) ??
|
|
80
|
+
export const isAnyMediaUploading = (wiki) => wiki.media?.some((media) => media.id.endsWith(MEDIA_UPLOAD_PENDING_SUFFIX)) ??
|
|
78
81
|
false;
|
|
79
82
|
/**
|
|
80
83
|
* Checks if the event URL is missing for an event wiki.
|
|
81
84
|
* @param wiki - The wiki object to check.
|
|
82
85
|
* @returns True if the event URL is missing, false otherwise.
|
|
83
86
|
*/
|
|
84
|
-
const isEventUrlMissing = (wiki) => {
|
|
87
|
+
export const isEventUrlMissing = (wiki) => {
|
|
85
88
|
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
86
|
-
const referencesData = wiki.metadata.find((meta) => meta.id ===
|
|
87
|
-
?.value || "[]";
|
|
89
|
+
const referencesData = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references)?.value || "[]";
|
|
88
90
|
const references = JSON.parse(referencesData);
|
|
89
91
|
return !references.some((item) => item.description.toLowerCase() === "event link");
|
|
90
92
|
}
|
|
@@ -95,20 +97,20 @@ const isEventUrlMissing = (wiki) => {
|
|
|
95
97
|
* @param wiki - The wiki object to check.
|
|
96
98
|
* @returns True if the event date is missing, false otherwise.
|
|
97
99
|
*/
|
|
98
|
-
const isEventDateMissing = (wiki) => wiki.tags.some((tag) => tag.id === "Events") && wiki.events?.length === 0;
|
|
100
|
+
export const isEventDateMissing = (wiki) => wiki.tags.some((tag) => tag.id === "Events") && wiki.events?.length === 0;
|
|
99
101
|
/**
|
|
100
102
|
* Checks if the wiki summary exceeds the maximum length.
|
|
101
103
|
* @param wiki - The wiki object to check.
|
|
102
104
|
* @returns True if the summary exceeds the limit, false otherwise.
|
|
103
105
|
*/
|
|
104
|
-
const isSummaryTooLong = (wiki) => !!(wiki.summary && wiki.summary.length > WIKI_SUMMARY_MAX_LENGTH);
|
|
106
|
+
export const isSummaryTooLong = (wiki) => !!(wiki.summary && wiki.summary.length > WIKI_SUMMARY_MAX_LENGTH);
|
|
105
107
|
/**
|
|
106
108
|
* Checks if the wiki has no citations.
|
|
107
109
|
* @param wiki - The wiki object to check.
|
|
108
110
|
* @returns True if there are no citations, false otherwise.
|
|
109
111
|
*/
|
|
110
|
-
const hasNoCitations = (wiki) => {
|
|
111
|
-
const references = wiki.metadata.find((meta) => meta.id ===
|
|
112
|
+
export const hasNoCitations = (wiki) => {
|
|
113
|
+
const references = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references);
|
|
112
114
|
return !references?.value || references.value.length === 0;
|
|
113
115
|
};
|
|
114
116
|
/**
|
|
@@ -186,4 +188,4 @@ export const validateWiki = (wiki) => {
|
|
|
186
188
|
}
|
|
187
189
|
return { isValid: true };
|
|
188
190
|
};
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tXaWtpVmFsaWRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NoZWNrV2lraVZhbGlkaXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLDJCQUEyQixFQUMzQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixHQUNyQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFDTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsR0FFYixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFFdEQ7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLFNBQWlCLEVBQUUsRUFBRTtJQUMvQyxJQUFJO1FBQ0gsT0FBTyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUNuQztJQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ1osT0FBTyxLQUFLLENBQUM7S0FDYjtBQUNGLENBQUMsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFO0lBQzFELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUMzRCxPQUFPLENBQ04sYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLElB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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,75 @@
|
|
|
1
|
+
import { IPFS_HASH_LENGTH, MAX_MEDIA_COUNT } from "../../data/constants";
|
|
2
|
+
import { CommonMetaIdsEnum, MediaSourceEnum, MediaTypeEnum, } from "../../schema/wiki.schema";
|
|
3
|
+
import { whiteListedDomains, whiteListedLinkNames } from "../../types/wiki";
|
|
4
|
+
/**
|
|
5
|
+
* Counts the number of words in a given string.
|
|
6
|
+
* @param text - The input string to count words from.
|
|
7
|
+
* @returns The number of words in the string.
|
|
8
|
+
*/
|
|
9
|
+
export const countWords = (text) => text.split(" ").filter((word) => word !== "").length;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a given string is a valid URL.
|
|
12
|
+
* @param urlString - The string to check.
|
|
13
|
+
* @returns True if the string is a valid URL, false otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export const isValidUrl = (urlString) => {
|
|
16
|
+
try {
|
|
17
|
+
return Boolean(new URL(urlString));
|
|
18
|
+
}
|
|
19
|
+
catch (_e) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export const validateMediaContent = (media) => {
|
|
24
|
+
return media.every((item) => {
|
|
25
|
+
if (item.source === MediaSourceEnum.Enum.IPFS_IMG ||
|
|
26
|
+
item.source === MediaSourceEnum.Enum.IPFS_VID) {
|
|
27
|
+
return item.id.length === IPFS_HASH_LENGTH;
|
|
28
|
+
}
|
|
29
|
+
if (item.source === MediaSourceEnum.Enum.YOUTUBE) {
|
|
30
|
+
const youtubePattern = /^.*(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/|watch\?v=)([^#&?]*).*/;
|
|
31
|
+
return (item.id === `https://www.youtube.com/watch?v=${item.name}` &&
|
|
32
|
+
youtubePattern.test(item.id));
|
|
33
|
+
}
|
|
34
|
+
if (item.source === MediaSourceEnum.Enum.VIMEO) {
|
|
35
|
+
return item.id === `https://vimeo.com/${item.name}`;
|
|
36
|
+
}
|
|
37
|
+
return item.type ? item.type in MediaTypeEnum : true;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
export const validateMediaCount = (media) => {
|
|
41
|
+
const iconMediaCount = media.filter((item) => item.type === MediaTypeEnum.Enum.ICON).length;
|
|
42
|
+
return media.length <= MAX_MEDIA_COUNT && iconMediaCount <= 1;
|
|
43
|
+
};
|
|
44
|
+
export const validateEventWiki = (wiki) => {
|
|
45
|
+
if (wiki.tags.some((tag) => tag.id === "Events")) {
|
|
46
|
+
const referencesData = wiki.metadata.find((meta) => meta.id === CommonMetaIdsEnum.Enum.references)?.value || "[]";
|
|
47
|
+
const references = JSON.parse(referencesData);
|
|
48
|
+
const hasEventLink = references.some((item) => item.description.toLowerCase() === "event link");
|
|
49
|
+
return hasEventLink && Array.isArray(wiki.events) && wiki.events.length > 0;
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Checks if all content links in the given text are verified.
|
|
55
|
+
* @param content - The content to check for links.
|
|
56
|
+
* @returns True if all links are verified, false otherwise.
|
|
57
|
+
*/
|
|
58
|
+
export const areContentLinksVerified = (content) => {
|
|
59
|
+
const markdownLinks = content.match(/\[(.*?)\]\((.*?)\)/g);
|
|
60
|
+
return (markdownLinks?.every((link) => {
|
|
61
|
+
const [, linkText, linkUrl] = RegExp(/\[(.*?)\]\((.*?)\)/).exec(link) || [];
|
|
62
|
+
if (linkText &&
|
|
63
|
+
linkUrl &&
|
|
64
|
+
whiteListedLinkNames.includes(linkText) &&
|
|
65
|
+
!isValidUrl(linkUrl)) {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
if (linkUrl && !linkUrl.startsWith("#")) {
|
|
69
|
+
const validDomainPattern = new RegExp(`^https?://(www\\.)?(${whiteListedDomains.join("|")})`);
|
|
70
|
+
return validDomainPattern.test(linkUrl);
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}) ?? true);
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lraS5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9oZWxwZXJzL3dpa2kuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUNOLGlCQUFpQixFQUVqQixlQUFlLEVBQ2YsYUFBYSxHQUViLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUU7Ozs7R0FJRztBQUVILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO0FBRXREOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEVBQUU7SUFDL0MsSUFBSTtRQUNILE9BQU8sT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDbkM7SUFBQyxPQUFPLEVBQUUsRUFBRTtRQUNaLE9BQU8sS0FBSyxDQUFDO0tBQ2I7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEtBQWMsRUFBRSxFQUFFO0lBQ3RELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQzNCLElBQ0MsSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDN0MsSUFBSSxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFDNUM7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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;
|