@waline/client 2.14.2 → 2.14.3
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/dist/api.cjs +1 -1
- package/dist/api.cjs.map +1 -1
- package/dist/api.d.cts +22 -20
- package/dist/api.d.mts +22 -20
- package/dist/api.d.ts +22 -20
- package/dist/api.mjs +1 -1
- package/dist/api.mjs.map +1 -1
- package/dist/comment.cjs +1 -1
- package/dist/comment.cjs.map +1 -1
- package/dist/comment.d.cts +1 -1
- package/dist/comment.d.mts +1 -1
- package/dist/comment.d.ts +1 -1
- package/dist/comment.js +1 -1
- package/dist/comment.js.map +1 -1
- package/dist/comment.mjs +1 -1
- package/dist/comment.mjs.map +1 -1
- package/dist/component.mjs +1 -1
- package/dist/component.mjs.map +1 -1
- package/dist/legacy.umd.d.ts +1 -1
- package/dist/legacy.umd.js +1 -1
- package/dist/legacy.umd.js.map +1 -1
- package/dist/pageview.cjs +1 -1
- package/dist/pageview.cjs.map +1 -1
- package/dist/pageview.d.cts +1 -1
- package/dist/pageview.d.mts +1 -1
- package/dist/pageview.d.ts +1 -1
- package/dist/pageview.js +1 -1
- package/dist/pageview.js.map +1 -1
- package/dist/pageview.mjs +1 -1
- package/dist/pageview.mjs.map +1 -1
- package/dist/shim.cjs +1 -1
- package/dist/shim.cjs.map +1 -1
- package/dist/shim.d.cts +5 -5
- package/dist/shim.d.mts +5 -5
- package/dist/shim.mjs +1 -1
- package/dist/shim.mjs.map +1 -1
- package/dist/waline.cjs +1 -1
- package/dist/waline.cjs.map +1 -1
- package/dist/waline.d.cts +5 -5
- package/dist/waline.d.mts +5 -5
- package/dist/waline.d.ts +5 -5
- package/dist/waline.js +1 -1
- package/dist/waline.js.map +1 -1
- package/dist/waline.mjs +1 -1
- package/dist/waline.mjs.map +1 -1
- package/package.json +18 -17
- package/src/api/comment.ts +25 -24
- package/src/comment.ts +2 -2
- package/src/components/WalineComment.vue +3 -3
- package/src/config/default.ts +1 -1
- package/src/config/i18n/index.ts +1 -0
- package/src/pageview.ts +2 -2
- package/src/typings/waline.ts +1 -1
- package/src/utils/config.ts +1 -1
- package/src/widgets/recentComments.ts +2 -2
- package/src/widgets/userList.ts +2 -2
- package/LICENSE +0 -339
package/dist/api.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e={"Content-Type":"application/json"},t=(e,t="")=>{if("object"==typeof e&&e.errno)throw new TypeError(`${t} failed with ${e.errno}: ${e.errmsg}`);return e},n=({serverURL:e,lang:t,paths:n,type:o,signal:r})=>fetch(`${e}/article?path=${encodeURIComponent(n.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${t}`,{signal:r}).then((e=>e.json())),o=({serverURL:t,lang:n,path:o,type:r,action:a})=>fetch(`${t}/article?lang=${n}`,{method:"POST",headers:e,body:JSON.stringify({path:o,type:r,action:a})}).then((e=>e.json()));exports.addComment=({serverURL:e,lang:t,token:n,comment:o})=>{const r={"Content-Type":"application/json"};return n&&(r.Authorization=`Bearer ${n}`),fetch(`${e}/comment?lang=${t}`,{method:"POST",headers:r,body:JSON.stringify(o)}).then((e=>e.json()))},exports.deleteComment=({serverURL:e,lang:n,token:o,objectId:r})=>fetch(`${e}/comment/${r}?lang=${n}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}}).then((e=>e.json())).then((e=>t(e,"Delete comment"))),exports.fetchCommentCount=({serverURL:e,lang:t,paths:n,signal:o})=>fetch(`${e}/comment?type=count&url=${encodeURIComponent(n.join(","))}&lang=${t}`,{signal:o}).then((e=>e.json())).then((e=>Array.isArray(e)?e:[e])),exports.getArticleCounter=n,exports.getComment=({serverURL:e,lang:n,path:o,page:r,pageSize:a,sortBy:s,signal:i,token:g})=>{const p={};return g&&(p.Authorization=`Bearer ${g}`),fetch(`${e}/comment?path=${encodeURIComponent(o)}&pageSize=${a}&page=${r}&lang=${n}&sortBy=${s}`,{signal:i,headers:p}).then((e=>e.json())).then((e=>t(e,"Get comment data")))},exports.getPageview=({serverURL:e,lang:t,paths:o,signal:r})=>n({serverURL:e,lang:t,paths:o,type:["time"],signal:r}).then((e=>Array.isArray(e)?e:[e])),exports.getRecentComment=({serverURL:e,lang:t,count:n,signal:o,token:r})=>{const a={};return r&&(a.Authorization=`Bearer ${r}`),fetch(`${e}/comment?type=recent&count=${n}&lang=${t}`,{signal:o,headers:a}).then((e=>e.json()))},exports.getUserList=({serverURL:e,signal:n,pageSize:o,lang:r})=>fetch(`${e}/user?pageSize=${o}&lang=${r}`,{signal:n}).then((e=>e.json())).then((e=>t(e,"user list"))).then((e=>e.data)),exports.login=({lang:e,serverURL:t})=>{const n=(window.innerWidth-450)/2,o=(window.innerHeight-450)/2,r=window.open(`${t}/ui/login?lng=${encodeURIComponent(e)}`,"_blank",`width=450,height=450,left=${n},top=${o},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`);return r?.postMessage({type:"TOKEN",data:null},"*"),new Promise((e=>{const t=({data:n})=>{n&&"object"==typeof n&&"userInfo"===n.type&&n.data.token&&(r?.close(),window.removeEventListener("message",t),e(n.data))};window.addEventListener("message",t)}))},exports.updateArticleCounter=o,exports.updateComment=({serverURL:n,lang:o,token:r,objectId:a
|
|
1
|
+
"use strict";const e={"Content-Type":"application/json"},t=(e,t="")=>{if("object"==typeof e&&e.errno)throw new TypeError(`${t} failed with ${e.errno}: ${e.errmsg}`);return e},n=({serverURL:e,lang:t,paths:n,type:o,signal:r})=>fetch(`${e}/article?path=${encodeURIComponent(n.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${t}`,{signal:r}).then((e=>e.json())),o=({serverURL:t,lang:n,path:o,type:r,action:a})=>fetch(`${t}/article?lang=${n}`,{method:"POST",headers:e,body:JSON.stringify({path:o,type:r,action:a})}).then((e=>e.json()));exports.addComment=({serverURL:e,lang:t,token:n,comment:o})=>{const r={"Content-Type":"application/json"};return n&&(r.Authorization=`Bearer ${n}`),fetch(`${e}/comment?lang=${t}`,{method:"POST",headers:r,body:JSON.stringify(o)}).then((e=>e.json()))},exports.deleteComment=({serverURL:e,lang:n,token:o,objectId:r})=>fetch(`${e}/comment/${r}?lang=${n}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}}).then((e=>e.json())).then((e=>t(e,"Delete comment"))),exports.fetchCommentCount=({serverURL:e,lang:t,paths:n,signal:o})=>fetch(`${e}/comment?type=count&url=${encodeURIComponent(n.join(","))}&lang=${t}`,{signal:o}).then((e=>e.json())).then((e=>Array.isArray(e)?e:[e])),exports.getArticleCounter=n,exports.getComment=({serverURL:e,lang:n,path:o,page:r,pageSize:a,sortBy:s,signal:i,token:g})=>{const p={};return g&&(p.Authorization=`Bearer ${g}`),fetch(`${e}/comment?path=${encodeURIComponent(o)}&pageSize=${a}&page=${r}&lang=${n}&sortBy=${s}`,{signal:i,headers:p}).then((e=>e.json())).then((e=>t(e,"Get comment data")))},exports.getPageview=({serverURL:e,lang:t,paths:o,signal:r})=>n({serverURL:e,lang:t,paths:o,type:["time"],signal:r}).then((e=>Array.isArray(e)?e:[e])),exports.getRecentComment=({serverURL:e,lang:t,count:n,signal:o,token:r})=>{const a={};return r&&(a.Authorization=`Bearer ${r}`),fetch(`${e}/comment?type=recent&count=${n}&lang=${t}`,{signal:o,headers:a}).then((e=>e.json()))},exports.getUserList=({serverURL:e,signal:n,pageSize:o,lang:r})=>fetch(`${e}/user?pageSize=${o}&lang=${r}`,{signal:n}).then((e=>e.json())).then((e=>t(e,"user list"))).then((e=>e.data)),exports.login=({lang:e,serverURL:t})=>{const n=(window.innerWidth-450)/2,o=(window.innerHeight-450)/2,r=window.open(`${t}/ui/login?lng=${encodeURIComponent(e)}`,"_blank",`width=450,height=450,left=${n},top=${o},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`);return r?.postMessage({type:"TOKEN",data:null},"*"),new Promise((e=>{const t=({data:n})=>{n&&"object"==typeof n&&"userInfo"===n.type&&n.data.token&&(r?.close(),window.removeEventListener("message",t),e(n.data))};window.addEventListener("message",t)}))},exports.updateArticleCounter=o,exports.updateComment=({serverURL:n,lang:o,token:r,objectId:a,comment:s})=>fetch(`${n}/comment/${a}?lang=${o}`,{method:"PUT",headers:{...e,Authorization:`Bearer ${r}`},body:JSON.stringify(s)}).then((e=>e.json())).then((e=>t(e,"Update comment"))),exports.updatePageview=e=>o({...e,type:"time",action:"inc"});
|
|
2
2
|
//# sourceMappingURL=api.cjs.map
|
package/dist/api.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.cjs","sources":["../src/api/utils.ts","../src/api/articleCounter.ts","../src/api/comment.ts","../src/api/commentCount.ts","../src/api/pageview.ts","../src/api/recentComment.ts","../src/api/user.ts","../src/api/login.ts"],"sourcesContent":["export interface BaseAPIOptions {\n /**\n * Waline 服务端地址\n *\n * Waline serverURL\n */\n serverURL: string;\n\n /**\n * 错误信息所使用的语言\n *\n * Language used in error text\n */\n lang: string;\n}\n\nexport interface ErrorStatusResponse {\n /**\n * 错误代码\n *\n * Error number\n */\n errno: number;\n\n /**\n * 错误消息\n *\n * Error msg\n */\n errmsg: string;\n}\n\nexport const JSON_HEADERS: Record<string, string> = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'Content-Type': 'application/json',\n};\n\nexport const errorCheck = <T extends ErrorStatusResponse>(\n data: T,\n name = ''\n): T => {\n if (typeof data === 'object' && data.errno)\n throw new TypeError(`${name} failed with ${data.errno}: ${data.errmsg}`);\n\n return data;\n};\n","import { JSON_HEADERS } from './utils';\nimport type { BaseAPIOptions } from './utils';\n\nexport interface GetArticleCounterOptions extends BaseAPIOptions {\n /**\n * 待获取计数器的 path\n *\n * Path of counters\n */\n paths: string[];\n\n /**\n * 待获取计数器的类型\n *\n * Counter type to be fetched\n */\n type: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport type GetArticleCounterResponse =\n | Record<string, number>[]\n | Record<string, number>\n | number[]\n | number;\n\nexport const getArticleCounter = ({\n serverURL,\n lang,\n paths,\n type,\n signal,\n}: GetArticleCounterOptions): Promise<GetArticleCounterResponse> =>\n fetch(\n `${serverURL}/article?path=${encodeURIComponent(\n paths.join(',')\n )}&type=${encodeURIComponent(type.join(','))}&lang=${lang}`,\n { signal }\n ).then((resp) => <Promise<GetArticleCounterResponse>>resp.json());\n\nexport interface UpdateArticleCounterOptions extends BaseAPIOptions {\n /**\n * 待更新计数器的 path\n *\n * Path of counter to be updated\n */\n path: string;\n\n /**\n * 待更新计数器的类型\n *\n * Counter type to be updated\n */\n type: string;\n\n /**\n * 更新操作\n *\n * Update operation\n *\n * @default 'inc'\n */\n action?: 'inc' | 'desc';\n}\n\nexport const updateArticleCounter = ({\n serverURL,\n lang,\n path,\n type,\n action,\n}: UpdateArticleCounterOptions): Promise<number> =>\n fetch(`${serverURL}/article?lang=${lang}`, {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ path, type, action }),\n }).then((resp) => <Promise<number>>resp.json());\n","import { JSON_HEADERS, errorCheck } from './utils';\nimport type { BaseAPIOptions, ErrorStatusResponse } from './utils';\nimport type { WalineComment, WalineCommentData } from '../typings';\n\nexport interface GetCommentOptions extends BaseAPIOptions {\n /**\n * 待获取评论列表的 path\n *\n * Path of comment list\n */\n path: string;\n\n /**\n * 评论分页数\n *\n * Comment pagination number\n */\n page: number;\n\n /**\n * 每页评论个数\n *\n * Comment number per page\n */\n pageSize: number;\n\n /**\n * 排序方式\n *\n * Sort method\n */\n sortBy: string;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport interface GetCommentResponse extends ErrorStatusResponse {\n /**\n * 评论数量\n *\n * Comment number\n */\n count: number;\n\n /**\n * 评论分页数\n *\n * Comment pagination number\n */\n page: number;\n\n /**\n * 每页评论个数\n *\n * Comment number per page\n */\n pageSize: number;\n\n /**\n * 评论数据\n *\n * Comment Data\n */\n data: WalineComment[];\n\n /**\n * 页面总数\n *\n * Page number\n */\n totalPages: number;\n}\n\nexport const getComment = ({\n serverURL,\n lang,\n path,\n page,\n pageSize,\n sortBy,\n signal,\n token,\n}: GetCommentOptions): Promise<GetCommentResponse> => {\n const headers: Record<string, string> = {};\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(\n `${serverURL}/comment?path=${encodeURIComponent(\n path\n )}&pageSize=${pageSize}&page=${page}&lang=${lang}&sortBy=${sortBy}`,\n { signal, headers }\n )\n .then((resp) => <Promise<GetCommentResponse>>resp.json())\n .then((data) => errorCheck(data, 'Get comment data'));\n};\n\nexport interface AddCommentOptions extends BaseAPIOptions {\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n\n /**\n * 用户待提交的评论数据\n *\n * Comment data being submitted by user\n */\n comment: WalineCommentData;\n}\n\nexport interface AddCommentResponse extends ErrorStatusResponse {\n /**\n * 渲染好的评论数据\n *\n * Comment data rendered\n */\n data?: WalineComment;\n}\n\nexport const addComment = ({\n serverURL,\n lang,\n token,\n comment,\n}: AddCommentOptions): Promise<AddCommentResponse> => {\n const headers: Record<string, string> = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'Content-Type': 'application/json',\n };\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(`${serverURL}/comment?lang=${lang}`, {\n method: 'POST',\n headers,\n body: JSON.stringify(comment),\n }).then((resp) => <Promise<AddCommentResponse>>resp.json());\n};\n\nexport interface DeleteCommentOptions extends BaseAPIOptions {\n token: string;\n objectId: string | number;\n}\n\nexport interface DeleteCommentResponse extends ErrorStatusResponse {\n data: '';\n}\n\nexport const deleteComment = ({\n serverURL,\n lang,\n token,\n objectId,\n}: DeleteCommentOptions): Promise<DeleteCommentResponse> =>\n fetch(`${serverURL}/comment/${objectId}?lang=${lang}`, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then((resp) => <Promise<DeleteCommentResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'Delete comment'));\n\nexport interface UpdateCommentOptions extends BaseAPIOptions {\n /**\n * 用户令牌\n *\n * User token\n */\n token: string;\n\n /**\n * 评论的 ID\n *\n * Comment ID\n */\n objectId: number | string;\n\n /**\n * 评论数据\n *\n * Comment data\n */\n comment?: WalineCommentData;\n\n /**\n * 点赞还是取消点赞\n *\n * Like or dislike\n */\n like?: boolean;\n\n /**\n * 评论的状态\n *\n * Comment status\n */\n status?: 'approved' | 'waiting' | 'spam';\n\n /**\n * 评论指定状态\n *\n * Comment sticky status\n *\n * @description 0 means not sticky and 1 means sticky\n */\n sticky?: 0 | 1;\n}\n\nexport interface UpdateCommentResponse extends ErrorStatusResponse {\n /**\n * 更新后的评论数据\n *\n * Comment data rendered\n */\n data: WalineComment;\n}\n\nexport const updateComment = ({\n serverURL,\n lang,\n token,\n objectId,\n ...data\n}: UpdateCommentOptions): Promise<UpdateCommentResponse> =>\n fetch(`${serverURL}/comment/${objectId}?lang=${lang}`, {\n method: 'PUT',\n headers: {\n ...JSON_HEADERS,\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(data),\n })\n .then((resp) => <Promise<UpdateCommentResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'Update comment'));\n","import type { BaseAPIOptions } from './utils';\n\nexport interface GetCommentCountOptions extends BaseAPIOptions {\n /**\n * 待获取评论数的 path\n *\n * Path of pages to be fetched\n */\n paths: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport const fetchCommentCount = ({\n serverURL,\n lang,\n paths,\n signal,\n}: GetCommentCountOptions): Promise<number[]> =>\n fetch(\n `${serverURL}/comment?type=count&url=${encodeURIComponent(\n paths.join(',')\n )}&lang=${lang}`,\n { signal }\n )\n .then((resp) => <Promise<number | number[]>>resp.json())\n // TODO: Improve this API\n .then((counts) => (Array.isArray(counts) ? counts : [counts]));\n","import { getArticleCounter, updateArticleCounter } from './articleCounter';\nimport type { BaseAPIOptions } from './utils';\n\ninterface GetPageviewOptions extends BaseAPIOptions {\n /**\n * 待获取页面的 path\n *\n * Path of pages\n */\n paths: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport const getPageview = ({\n serverURL,\n lang,\n paths,\n signal,\n}: GetPageviewOptions): Promise<number[]> =>\n getArticleCounter({\n serverURL,\n lang,\n paths,\n type: ['time'],\n signal,\n })\n // TODO: Improve this API\n .then((counts) => (Array.isArray(counts) ? counts : [counts])) as Promise<\n number[]\n >;\n\nexport interface UpdatePageviewOptions extends BaseAPIOptions {\n /**\n * 待更新页面的 path\n *\n * Path of pages\n */\n path: string;\n}\n\nexport const updatePageview = (\n options: UpdatePageviewOptions\n): Promise<number> =>\n updateArticleCounter({\n ...options,\n type: 'time',\n action: 'inc',\n });\n","import type { BaseAPIOptions } from './utils';\nimport type { WalineComment } from '../typings';\n\nexport interface GetRecentCommentOptions extends BaseAPIOptions {\n /**\n * 获取评论的数量\n *\n * Comment number to be fetched\n */\n count: number;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n}\n\nexport const getRecentComment = ({\n serverURL,\n lang,\n count,\n signal,\n token,\n}: GetRecentCommentOptions): Promise<WalineComment[]> => {\n const headers: Record<string, string> = {};\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(`${serverURL}/comment?type=recent&count=${count}&lang=${lang}`, {\n signal,\n headers,\n }).then((resp) => <Promise<WalineComment[]>>resp.json());\n};\n","import { errorCheck, ErrorStatusResponse } from './utils';\nimport type { BaseAPIOptions } from './utils';\nimport type { WalineComment } from '../typings';\n\nexport interface GetUserListOptions extends BaseAPIOptions {\n /**\n * 每页个数\n *\n * Number per page\n */\n pageSize: number;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport interface WalineUser\n extends Pick<WalineComment, 'nick' | 'link' | 'avatar' | 'label' | 'level'> {\n count: number;\n}\n\nexport interface GetUserListResponse extends ErrorStatusResponse {\n data: WalineUser[];\n}\n\nexport const getUserList = ({\n serverURL,\n signal,\n pageSize,\n lang,\n}: GetUserListOptions): Promise<WalineUser[]> =>\n fetch(`${serverURL}/user?pageSize=${pageSize}&lang=${lang}`, {\n signal,\n })\n .then((resp) => <Promise<GetUserListResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'user list'))\n .then((resp) => resp.data);\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport type { BaseAPIOptions } from './utils';\n\nexport interface UserInfo {\n /**\n * 显示姓名\n *\n * User name displayed\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n display_name: string;\n\n /**\n * 用户电子邮件地址\n *\n * User email\n */\n email: string;\n\n /**\n * 用户网站地址\n *\n * User website\n */\n url: string;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token: string;\n\n /**\n * 用户头像\n *\n * User avatar\n */\n avatar: string;\n\n /**\n * 用户邮箱 MD5\n *\n * MD5 of User email\n */\n mailMd5: string;\n\n /**\n * 用户对象 ID\n *\n * User object ID\n */\n objectId: string | number;\n\n /**\n * 用户身份\n *\n * User role\n */\n type: 'administrator' | 'guest';\n}\n\nexport const login = ({\n lang,\n serverURL,\n}: BaseAPIOptions): Promise<UserInfo & { remember: boolean }> => {\n const width = 450;\n const height = 450;\n const left = (window.innerWidth - width) / 2;\n const top = (window.innerHeight - height) / 2;\n\n const handler = window.open(\n `${serverURL}/ui/login?lng=${encodeURIComponent(lang)}`,\n '_blank',\n `width=${width},height=${height},left=${left},top=${top},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`\n );\n\n handler?.postMessage({ type: 'TOKEN', data: null }, '*');\n\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const receiver = ({ data }: any): void => {\n if (!data || typeof data !== 'object' || data.type !== 'userInfo') return;\n\n if (data.data.token) {\n handler?.close();\n\n window.removeEventListener('message', receiver);\n\n resolve(data.data as UserInfo & { remember: boolean });\n }\n };\n\n window.addEventListener('message', receiver);\n });\n};\n"],"names":["JSON_HEADERS","errorCheck","data","name","errno","TypeError","errmsg","getArticleCounter","serverURL","lang","paths","type","signal","fetch","encodeURIComponent","join","then","resp","json","updateArticleCounter","path","action","method","headers","body","JSON","stringify","token","comment","Authorization","objectId","counts","Array","isArray","page","pageSize","sortBy","count","left","window","innerWidth","top","innerHeight","handler","open","postMessage","Promise","resolve","receiver","close","removeEventListener","addEventListener","options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/api.d.cts
CHANGED
|
@@ -247,25 +247,7 @@ interface DeleteCommentResponse extends ErrorStatusResponse {
|
|
|
247
247
|
data: '';
|
|
248
248
|
}
|
|
249
249
|
declare const deleteComment: ({ serverURL, lang, token, objectId, }: DeleteCommentOptions) => Promise<DeleteCommentResponse>;
|
|
250
|
-
interface
|
|
251
|
-
/**
|
|
252
|
-
* 用户令牌
|
|
253
|
-
*
|
|
254
|
-
* User token
|
|
255
|
-
*/
|
|
256
|
-
token: string;
|
|
257
|
-
/**
|
|
258
|
-
* 评论的 ID
|
|
259
|
-
*
|
|
260
|
-
* Comment ID
|
|
261
|
-
*/
|
|
262
|
-
objectId: number | string;
|
|
263
|
-
/**
|
|
264
|
-
* 评论数据
|
|
265
|
-
*
|
|
266
|
-
* Comment data
|
|
267
|
-
*/
|
|
268
|
-
comment?: WalineCommentData;
|
|
250
|
+
interface UpdateWalineCommentData extends Partial<WalineCommentData> {
|
|
269
251
|
/**
|
|
270
252
|
* 点赞还是取消点赞
|
|
271
253
|
*
|
|
@@ -287,6 +269,26 @@ interface UpdateCommentOptions extends BaseAPIOptions {
|
|
|
287
269
|
*/
|
|
288
270
|
sticky?: 0 | 1;
|
|
289
271
|
}
|
|
272
|
+
interface UpdateCommentOptions extends BaseAPIOptions {
|
|
273
|
+
/**
|
|
274
|
+
* 用户令牌
|
|
275
|
+
*
|
|
276
|
+
* User token
|
|
277
|
+
*/
|
|
278
|
+
token: string;
|
|
279
|
+
/**
|
|
280
|
+
* 评论的 ID
|
|
281
|
+
*
|
|
282
|
+
* Comment ID
|
|
283
|
+
*/
|
|
284
|
+
objectId: number | string;
|
|
285
|
+
/**
|
|
286
|
+
* 评论数据
|
|
287
|
+
*
|
|
288
|
+
* Comment data
|
|
289
|
+
*/
|
|
290
|
+
comment?: UpdateWalineCommentData;
|
|
291
|
+
}
|
|
290
292
|
interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
291
293
|
/**
|
|
292
294
|
* 更新后的评论数据
|
|
@@ -295,7 +297,7 @@ interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
|
295
297
|
*/
|
|
296
298
|
data: WalineComment;
|
|
297
299
|
}
|
|
298
|
-
declare const updateComment: ({ serverURL, lang, token, objectId,
|
|
300
|
+
declare const updateComment: ({ serverURL, lang, token, objectId, comment, }: UpdateCommentOptions) => Promise<UpdateCommentResponse>;
|
|
299
301
|
|
|
300
302
|
interface GetCommentCountOptions extends BaseAPIOptions {
|
|
301
303
|
/**
|
package/dist/api.d.mts
CHANGED
|
@@ -247,25 +247,7 @@ interface DeleteCommentResponse extends ErrorStatusResponse {
|
|
|
247
247
|
data: '';
|
|
248
248
|
}
|
|
249
249
|
declare const deleteComment: ({ serverURL, lang, token, objectId, }: DeleteCommentOptions) => Promise<DeleteCommentResponse>;
|
|
250
|
-
interface
|
|
251
|
-
/**
|
|
252
|
-
* 用户令牌
|
|
253
|
-
*
|
|
254
|
-
* User token
|
|
255
|
-
*/
|
|
256
|
-
token: string;
|
|
257
|
-
/**
|
|
258
|
-
* 评论的 ID
|
|
259
|
-
*
|
|
260
|
-
* Comment ID
|
|
261
|
-
*/
|
|
262
|
-
objectId: number | string;
|
|
263
|
-
/**
|
|
264
|
-
* 评论数据
|
|
265
|
-
*
|
|
266
|
-
* Comment data
|
|
267
|
-
*/
|
|
268
|
-
comment?: WalineCommentData;
|
|
250
|
+
interface UpdateWalineCommentData extends Partial<WalineCommentData> {
|
|
269
251
|
/**
|
|
270
252
|
* 点赞还是取消点赞
|
|
271
253
|
*
|
|
@@ -287,6 +269,26 @@ interface UpdateCommentOptions extends BaseAPIOptions {
|
|
|
287
269
|
*/
|
|
288
270
|
sticky?: 0 | 1;
|
|
289
271
|
}
|
|
272
|
+
interface UpdateCommentOptions extends BaseAPIOptions {
|
|
273
|
+
/**
|
|
274
|
+
* 用户令牌
|
|
275
|
+
*
|
|
276
|
+
* User token
|
|
277
|
+
*/
|
|
278
|
+
token: string;
|
|
279
|
+
/**
|
|
280
|
+
* 评论的 ID
|
|
281
|
+
*
|
|
282
|
+
* Comment ID
|
|
283
|
+
*/
|
|
284
|
+
objectId: number | string;
|
|
285
|
+
/**
|
|
286
|
+
* 评论数据
|
|
287
|
+
*
|
|
288
|
+
* Comment data
|
|
289
|
+
*/
|
|
290
|
+
comment?: UpdateWalineCommentData;
|
|
291
|
+
}
|
|
290
292
|
interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
291
293
|
/**
|
|
292
294
|
* 更新后的评论数据
|
|
@@ -295,7 +297,7 @@ interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
|
295
297
|
*/
|
|
296
298
|
data: WalineComment;
|
|
297
299
|
}
|
|
298
|
-
declare const updateComment: ({ serverURL, lang, token, objectId,
|
|
300
|
+
declare const updateComment: ({ serverURL, lang, token, objectId, comment, }: UpdateCommentOptions) => Promise<UpdateCommentResponse>;
|
|
299
301
|
|
|
300
302
|
interface GetCommentCountOptions extends BaseAPIOptions {
|
|
301
303
|
/**
|
package/dist/api.d.ts
CHANGED
|
@@ -247,25 +247,7 @@ interface DeleteCommentResponse extends ErrorStatusResponse {
|
|
|
247
247
|
data: '';
|
|
248
248
|
}
|
|
249
249
|
declare const deleteComment: ({ serverURL, lang, token, objectId, }: DeleteCommentOptions) => Promise<DeleteCommentResponse>;
|
|
250
|
-
interface
|
|
251
|
-
/**
|
|
252
|
-
* 用户令牌
|
|
253
|
-
*
|
|
254
|
-
* User token
|
|
255
|
-
*/
|
|
256
|
-
token: string;
|
|
257
|
-
/**
|
|
258
|
-
* 评论的 ID
|
|
259
|
-
*
|
|
260
|
-
* Comment ID
|
|
261
|
-
*/
|
|
262
|
-
objectId: number | string;
|
|
263
|
-
/**
|
|
264
|
-
* 评论数据
|
|
265
|
-
*
|
|
266
|
-
* Comment data
|
|
267
|
-
*/
|
|
268
|
-
comment?: WalineCommentData;
|
|
250
|
+
interface UpdateWalineCommentData extends Partial<WalineCommentData> {
|
|
269
251
|
/**
|
|
270
252
|
* 点赞还是取消点赞
|
|
271
253
|
*
|
|
@@ -287,6 +269,26 @@ interface UpdateCommentOptions extends BaseAPIOptions {
|
|
|
287
269
|
*/
|
|
288
270
|
sticky?: 0 | 1;
|
|
289
271
|
}
|
|
272
|
+
interface UpdateCommentOptions extends BaseAPIOptions {
|
|
273
|
+
/**
|
|
274
|
+
* 用户令牌
|
|
275
|
+
*
|
|
276
|
+
* User token
|
|
277
|
+
*/
|
|
278
|
+
token: string;
|
|
279
|
+
/**
|
|
280
|
+
* 评论的 ID
|
|
281
|
+
*
|
|
282
|
+
* Comment ID
|
|
283
|
+
*/
|
|
284
|
+
objectId: number | string;
|
|
285
|
+
/**
|
|
286
|
+
* 评论数据
|
|
287
|
+
*
|
|
288
|
+
* Comment data
|
|
289
|
+
*/
|
|
290
|
+
comment?: UpdateWalineCommentData;
|
|
291
|
+
}
|
|
290
292
|
interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
291
293
|
/**
|
|
292
294
|
* 更新后的评论数据
|
|
@@ -295,7 +297,7 @@ interface UpdateCommentResponse extends ErrorStatusResponse {
|
|
|
295
297
|
*/
|
|
296
298
|
data: WalineComment;
|
|
297
299
|
}
|
|
298
|
-
declare const updateComment: ({ serverURL, lang, token, objectId,
|
|
300
|
+
declare const updateComment: ({ serverURL, lang, token, objectId, comment, }: UpdateCommentOptions) => Promise<UpdateCommentResponse>;
|
|
299
301
|
|
|
300
302
|
interface GetCommentCountOptions extends BaseAPIOptions {
|
|
301
303
|
/**
|
package/dist/api.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={"Content-Type":"application/json"},n=(e,n="")=>{if("object"==typeof e&&e.errno)throw new TypeError(`${n} failed with ${e.errno}: ${e.errmsg}`);return e},t=({serverURL:e,lang:n,paths:t,type:o,signal:a})=>fetch(`${e}/article?path=${encodeURIComponent(t.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${n}`,{signal:a}).then((e=>e.json())),o=({serverURL:n,lang:t,path:o,type:a,action:r})=>fetch(`${n}/article?lang=${t}`,{method:"POST",headers:e,body:JSON.stringify({path:o,type:a,action:r})}).then((e=>e.json())),a=({serverURL:e,lang:t,path:o,page:a,pageSize:r,sortBy:s,signal:i,token:h})=>{const l={};return h&&(l.Authorization=`Bearer ${h}`),fetch(`${e}/comment?path=${encodeURIComponent(o)}&pageSize=${r}&page=${a}&lang=${t}&sortBy=${s}`,{signal:i,headers:l}).then((e=>e.json())).then((e=>n(e,"Get comment data")))},r=({serverURL:e,lang:n,token:t,comment:o})=>{const a={"Content-Type":"application/json"};return t&&(a.Authorization=`Bearer ${t}`),fetch(`${e}/comment?lang=${n}`,{method:"POST",headers:a,body:JSON.stringify(o)}).then((e=>e.json()))},s=({serverURL:e,lang:t,token:o,objectId:a})=>fetch(`${e}/comment/${a}?lang=${t}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}}).then((e=>e.json())).then((e=>n(e,"Delete comment"))),i=({serverURL:t,lang:o,token:a,objectId:r
|
|
1
|
+
const e={"Content-Type":"application/json"},n=(e,n="")=>{if("object"==typeof e&&e.errno)throw new TypeError(`${n} failed with ${e.errno}: ${e.errmsg}`);return e},t=({serverURL:e,lang:n,paths:t,type:o,signal:a})=>fetch(`${e}/article?path=${encodeURIComponent(t.join(","))}&type=${encodeURIComponent(o.join(","))}&lang=${n}`,{signal:a}).then((e=>e.json())),o=({serverURL:n,lang:t,path:o,type:a,action:r})=>fetch(`${n}/article?lang=${t}`,{method:"POST",headers:e,body:JSON.stringify({path:o,type:a,action:r})}).then((e=>e.json())),a=({serverURL:e,lang:t,path:o,page:a,pageSize:r,sortBy:s,signal:i,token:h})=>{const l={};return h&&(l.Authorization=`Bearer ${h}`),fetch(`${e}/comment?path=${encodeURIComponent(o)}&pageSize=${r}&page=${a}&lang=${t}&sortBy=${s}`,{signal:i,headers:l}).then((e=>e.json())).then((e=>n(e,"Get comment data")))},r=({serverURL:e,lang:n,token:t,comment:o})=>{const a={"Content-Type":"application/json"};return t&&(a.Authorization=`Bearer ${t}`),fetch(`${e}/comment?lang=${n}`,{method:"POST",headers:a,body:JSON.stringify(o)}).then((e=>e.json()))},s=({serverURL:e,lang:t,token:o,objectId:a})=>fetch(`${e}/comment/${a}?lang=${t}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}}).then((e=>e.json())).then((e=>n(e,"Delete comment"))),i=({serverURL:t,lang:o,token:a,objectId:r,comment:s})=>fetch(`${t}/comment/${r}?lang=${o}`,{method:"PUT",headers:{...e,Authorization:`Bearer ${a}`},body:JSON.stringify(s)}).then((e=>e.json())).then((e=>n(e,"Update comment"))),h=({serverURL:e,lang:n,paths:t,signal:o})=>fetch(`${e}/comment?type=count&url=${encodeURIComponent(t.join(","))}&lang=${n}`,{signal:o}).then((e=>e.json())).then((e=>Array.isArray(e)?e:[e])),l=({lang:e,serverURL:n})=>{const t=(window.innerWidth-450)/2,o=(window.innerHeight-450)/2,a=window.open(`${n}/ui/login?lng=${encodeURIComponent(e)}`,"_blank",`width=450,height=450,left=${t},top=${o},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`);return a?.postMessage({type:"TOKEN",data:null},"*"),new Promise((e=>{const n=({data:t})=>{t&&"object"==typeof t&&"userInfo"===t.type&&t.data.token&&(a?.close(),window.removeEventListener("message",n),e(t.data))};window.addEventListener("message",n)}))},c=({serverURL:e,lang:n,paths:o,signal:a})=>t({serverURL:e,lang:n,paths:o,type:["time"],signal:a}).then((e=>Array.isArray(e)?e:[e])),g=e=>o({...e,type:"time",action:"inc"}),p=({serverURL:e,lang:n,count:t,signal:o,token:a})=>{const r={};return a&&(r.Authorization=`Bearer ${a}`),fetch(`${e}/comment?type=recent&count=${t}&lang=${n}`,{signal:o,headers:r}).then((e=>e.json()))},$=({serverURL:e,signal:t,pageSize:o,lang:a})=>fetch(`${e}/user?pageSize=${o}&lang=${a}`,{signal:t}).then((e=>e.json())).then((e=>n(e,"user list"))).then((e=>e.data));export{r as addComment,s as deleteComment,h as fetchCommentCount,t as getArticleCounter,a as getComment,c as getPageview,p as getRecentComment,$ as getUserList,l as login,o as updateArticleCounter,i as updateComment,g as updatePageview};
|
|
2
2
|
//# sourceMappingURL=api.mjs.map
|
package/dist/api.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.mjs","sources":["../src/api/utils.ts","../src/api/articleCounter.ts","../src/api/comment.ts","../src/api/commentCount.ts","../src/api/login.ts","../src/api/pageview.ts","../src/api/recentComment.ts","../src/api/user.ts"],"sourcesContent":["export interface BaseAPIOptions {\n /**\n * Waline 服务端地址\n *\n * Waline serverURL\n */\n serverURL: string;\n\n /**\n * 错误信息所使用的语言\n *\n * Language used in error text\n */\n lang: string;\n}\n\nexport interface ErrorStatusResponse {\n /**\n * 错误代码\n *\n * Error number\n */\n errno: number;\n\n /**\n * 错误消息\n *\n * Error msg\n */\n errmsg: string;\n}\n\nexport const JSON_HEADERS: Record<string, string> = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'Content-Type': 'application/json',\n};\n\nexport const errorCheck = <T extends ErrorStatusResponse>(\n data: T,\n name = ''\n): T => {\n if (typeof data === 'object' && data.errno)\n throw new TypeError(`${name} failed with ${data.errno}: ${data.errmsg}`);\n\n return data;\n};\n","import { JSON_HEADERS } from './utils';\nimport type { BaseAPIOptions } from './utils';\n\nexport interface GetArticleCounterOptions extends BaseAPIOptions {\n /**\n * 待获取计数器的 path\n *\n * Path of counters\n */\n paths: string[];\n\n /**\n * 待获取计数器的类型\n *\n * Counter type to be fetched\n */\n type: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport type GetArticleCounterResponse =\n | Record<string, number>[]\n | Record<string, number>\n | number[]\n | number;\n\nexport const getArticleCounter = ({\n serverURL,\n lang,\n paths,\n type,\n signal,\n}: GetArticleCounterOptions): Promise<GetArticleCounterResponse> =>\n fetch(\n `${serverURL}/article?path=${encodeURIComponent(\n paths.join(',')\n )}&type=${encodeURIComponent(type.join(','))}&lang=${lang}`,\n { signal }\n ).then((resp) => <Promise<GetArticleCounterResponse>>resp.json());\n\nexport interface UpdateArticleCounterOptions extends BaseAPIOptions {\n /**\n * 待更新计数器的 path\n *\n * Path of counter to be updated\n */\n path: string;\n\n /**\n * 待更新计数器的类型\n *\n * Counter type to be updated\n */\n type: string;\n\n /**\n * 更新操作\n *\n * Update operation\n *\n * @default 'inc'\n */\n action?: 'inc' | 'desc';\n}\n\nexport const updateArticleCounter = ({\n serverURL,\n lang,\n path,\n type,\n action,\n}: UpdateArticleCounterOptions): Promise<number> =>\n fetch(`${serverURL}/article?lang=${lang}`, {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify({ path, type, action }),\n }).then((resp) => <Promise<number>>resp.json());\n","import { JSON_HEADERS, errorCheck } from './utils';\nimport type { BaseAPIOptions, ErrorStatusResponse } from './utils';\nimport type { WalineComment, WalineCommentData } from '../typings';\n\nexport interface GetCommentOptions extends BaseAPIOptions {\n /**\n * 待获取评论列表的 path\n *\n * Path of comment list\n */\n path: string;\n\n /**\n * 评论分页数\n *\n * Comment pagination number\n */\n page: number;\n\n /**\n * 每页评论个数\n *\n * Comment number per page\n */\n pageSize: number;\n\n /**\n * 排序方式\n *\n * Sort method\n */\n sortBy: string;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport interface GetCommentResponse extends ErrorStatusResponse {\n /**\n * 评论数量\n *\n * Comment number\n */\n count: number;\n\n /**\n * 评论分页数\n *\n * Comment pagination number\n */\n page: number;\n\n /**\n * 每页评论个数\n *\n * Comment number per page\n */\n pageSize: number;\n\n /**\n * 评论数据\n *\n * Comment Data\n */\n data: WalineComment[];\n\n /**\n * 页面总数\n *\n * Page number\n */\n totalPages: number;\n}\n\nexport const getComment = ({\n serverURL,\n lang,\n path,\n page,\n pageSize,\n sortBy,\n signal,\n token,\n}: GetCommentOptions): Promise<GetCommentResponse> => {\n const headers: Record<string, string> = {};\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(\n `${serverURL}/comment?path=${encodeURIComponent(\n path\n )}&pageSize=${pageSize}&page=${page}&lang=${lang}&sortBy=${sortBy}`,\n { signal, headers }\n )\n .then((resp) => <Promise<GetCommentResponse>>resp.json())\n .then((data) => errorCheck(data, 'Get comment data'));\n};\n\nexport interface AddCommentOptions extends BaseAPIOptions {\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n\n /**\n * 用户待提交的评论数据\n *\n * Comment data being submitted by user\n */\n comment: WalineCommentData;\n}\n\nexport interface AddCommentResponse extends ErrorStatusResponse {\n /**\n * 渲染好的评论数据\n *\n * Comment data rendered\n */\n data?: WalineComment;\n}\n\nexport const addComment = ({\n serverURL,\n lang,\n token,\n comment,\n}: AddCommentOptions): Promise<AddCommentResponse> => {\n const headers: Record<string, string> = {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n 'Content-Type': 'application/json',\n };\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(`${serverURL}/comment?lang=${lang}`, {\n method: 'POST',\n headers,\n body: JSON.stringify(comment),\n }).then((resp) => <Promise<AddCommentResponse>>resp.json());\n};\n\nexport interface DeleteCommentOptions extends BaseAPIOptions {\n token: string;\n objectId: string | number;\n}\n\nexport interface DeleteCommentResponse extends ErrorStatusResponse {\n data: '';\n}\n\nexport const deleteComment = ({\n serverURL,\n lang,\n token,\n objectId,\n}: DeleteCommentOptions): Promise<DeleteCommentResponse> =>\n fetch(`${serverURL}/comment/${objectId}?lang=${lang}`, {\n method: 'DELETE',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then((resp) => <Promise<DeleteCommentResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'Delete comment'));\n\nexport interface UpdateCommentOptions extends BaseAPIOptions {\n /**\n * 用户令牌\n *\n * User token\n */\n token: string;\n\n /**\n * 评论的 ID\n *\n * Comment ID\n */\n objectId: number | string;\n\n /**\n * 评论数据\n *\n * Comment data\n */\n comment?: WalineCommentData;\n\n /**\n * 点赞还是取消点赞\n *\n * Like or dislike\n */\n like?: boolean;\n\n /**\n * 评论的状态\n *\n * Comment status\n */\n status?: 'approved' | 'waiting' | 'spam';\n\n /**\n * 评论指定状态\n *\n * Comment sticky status\n *\n * @description 0 means not sticky and 1 means sticky\n */\n sticky?: 0 | 1;\n}\n\nexport interface UpdateCommentResponse extends ErrorStatusResponse {\n /**\n * 更新后的评论数据\n *\n * Comment data rendered\n */\n data: WalineComment;\n}\n\nexport const updateComment = ({\n serverURL,\n lang,\n token,\n objectId,\n ...data\n}: UpdateCommentOptions): Promise<UpdateCommentResponse> =>\n fetch(`${serverURL}/comment/${objectId}?lang=${lang}`, {\n method: 'PUT',\n headers: {\n ...JSON_HEADERS,\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(data),\n })\n .then((resp) => <Promise<UpdateCommentResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'Update comment'));\n","import type { BaseAPIOptions } from './utils';\n\nexport interface GetCommentCountOptions extends BaseAPIOptions {\n /**\n * 待获取评论数的 path\n *\n * Path of pages to be fetched\n */\n paths: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport const fetchCommentCount = ({\n serverURL,\n lang,\n paths,\n signal,\n}: GetCommentCountOptions): Promise<number[]> =>\n fetch(\n `${serverURL}/comment?type=count&url=${encodeURIComponent(\n paths.join(',')\n )}&lang=${lang}`,\n { signal }\n )\n .then((resp) => <Promise<number | number[]>>resp.json())\n // TODO: Improve this API\n .then((counts) => (Array.isArray(counts) ? counts : [counts]));\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport type { BaseAPIOptions } from './utils';\n\nexport interface UserInfo {\n /**\n * 显示姓名\n *\n * User name displayed\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n display_name: string;\n\n /**\n * 用户电子邮件地址\n *\n * User email\n */\n email: string;\n\n /**\n * 用户网站地址\n *\n * User website\n */\n url: string;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token: string;\n\n /**\n * 用户头像\n *\n * User avatar\n */\n avatar: string;\n\n /**\n * 用户邮箱 MD5\n *\n * MD5 of User email\n */\n mailMd5: string;\n\n /**\n * 用户对象 ID\n *\n * User object ID\n */\n objectId: string | number;\n\n /**\n * 用户身份\n *\n * User role\n */\n type: 'administrator' | 'guest';\n}\n\nexport const login = ({\n lang,\n serverURL,\n}: BaseAPIOptions): Promise<UserInfo & { remember: boolean }> => {\n const width = 450;\n const height = 450;\n const left = (window.innerWidth - width) / 2;\n const top = (window.innerHeight - height) / 2;\n\n const handler = window.open(\n `${serverURL}/ui/login?lng=${encodeURIComponent(lang)}`,\n '_blank',\n `width=${width},height=${height},left=${left},top=${top},scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no`\n );\n\n handler?.postMessage({ type: 'TOKEN', data: null }, '*');\n\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const receiver = ({ data }: any): void => {\n if (!data || typeof data !== 'object' || data.type !== 'userInfo') return;\n\n if (data.data.token) {\n handler?.close();\n\n window.removeEventListener('message', receiver);\n\n resolve(data.data as UserInfo & { remember: boolean });\n }\n };\n\n window.addEventListener('message', receiver);\n });\n};\n","import { getArticleCounter, updateArticleCounter } from './articleCounter';\nimport type { BaseAPIOptions } from './utils';\n\ninterface GetPageviewOptions extends BaseAPIOptions {\n /**\n * 待获取页面的 path\n *\n * Path of pages\n */\n paths: string[];\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport const getPageview = ({\n serverURL,\n lang,\n paths,\n signal,\n}: GetPageviewOptions): Promise<number[]> =>\n getArticleCounter({\n serverURL,\n lang,\n paths,\n type: ['time'],\n signal,\n })\n // TODO: Improve this API\n .then((counts) => (Array.isArray(counts) ? counts : [counts])) as Promise<\n number[]\n >;\n\nexport interface UpdatePageviewOptions extends BaseAPIOptions {\n /**\n * 待更新页面的 path\n *\n * Path of pages\n */\n path: string;\n}\n\nexport const updatePageview = (\n options: UpdatePageviewOptions\n): Promise<number> =>\n updateArticleCounter({\n ...options,\n type: 'time',\n action: 'inc',\n });\n","import type { BaseAPIOptions } from './utils';\nimport type { WalineComment } from '../typings';\n\nexport interface GetRecentCommentOptions extends BaseAPIOptions {\n /**\n * 获取评论的数量\n *\n * Comment number to be fetched\n */\n count: number;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n\n /**\n * 用户令牌\n *\n * User token\n */\n token?: string;\n}\n\nexport const getRecentComment = ({\n serverURL,\n lang,\n count,\n signal,\n token,\n}: GetRecentCommentOptions): Promise<WalineComment[]> => {\n const headers: Record<string, string> = {};\n\n if (token) headers.Authorization = `Bearer ${token}`;\n\n return fetch(`${serverURL}/comment?type=recent&count=${count}&lang=${lang}`, {\n signal,\n headers,\n }).then((resp) => <Promise<WalineComment[]>>resp.json());\n};\n","import { errorCheck, ErrorStatusResponse } from './utils';\nimport type { BaseAPIOptions } from './utils';\nimport type { WalineComment } from '../typings';\n\nexport interface GetUserListOptions extends BaseAPIOptions {\n /**\n * 每页个数\n *\n * Number per page\n */\n pageSize: number;\n\n /**\n * 取消请求的信号\n *\n * AbortSignal to cancel request\n */\n signal?: AbortSignal;\n}\n\nexport interface WalineUser\n extends Pick<WalineComment, 'nick' | 'link' | 'avatar' | 'label' | 'level'> {\n count: number;\n}\n\nexport interface GetUserListResponse extends ErrorStatusResponse {\n data: WalineUser[];\n}\n\nexport const getUserList = ({\n serverURL,\n signal,\n pageSize,\n lang,\n}: GetUserListOptions): Promise<WalineUser[]> =>\n fetch(`${serverURL}/user?pageSize=${pageSize}&lang=${lang}`, {\n signal,\n })\n .then((resp) => <Promise<GetUserListResponse>>resp.json())\n .then((resp) => errorCheck(resp, 'user list'))\n .then((resp) => resp.data);\n"],"names":["JSON_HEADERS","errorCheck","data","name","errno","TypeError","errmsg","getArticleCounter","serverURL","lang","paths","type","signal","fetch","encodeURIComponent","join","then","resp","json","updateArticleCounter","path","action","method","headers","body","JSON","stringify","getComment","page","pageSize","sortBy","token","Authorization","addComment","comment","deleteComment","objectId","updateComment","fetchCommentCount","counts","Array","isArray","login","left","window","innerWidth","top","innerHeight","handler","open","postMessage","Promise","resolve","receiver","close","removeEventListener","addEventListener","getPageview","updatePageview","options","getRecentComment","count","getUserList"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/comment.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const t=t=>{const e=((t="")=>t.replace(/\/$/u,""))(t);return/^(https?:)?\/\//.test(e)?e:`https://${e}`},e=t=>{"AbortError"!==t.name&&console.error(t.message)};exports.commentCount=({serverURL:
|
|
1
|
+
"use strict";const t=t=>{const e=((t="")=>t.replace(/\/$/u,""))(t);return/^(https?:)?\/\//.test(e)?e:`https://${e}`},e=t=>{"AbortError"!==t.name&&console.error(t.message)};exports.commentCount=({serverURL:n,path:r=window.location.pathname,selector:o=".waline-comment-count",lang:a=navigator.language})=>{const s=new AbortController,c=document.querySelectorAll(o);return c.length&&(({serverURL:t,lang:e,paths:n,signal:r})=>fetch(`${t}/comment?type=count&url=${encodeURIComponent(n.join(","))}&lang=${e}`,{signal:r}).then((t=>t.json())).then((t=>Array.isArray(t)?t:[t])))({serverURL:t(n),paths:Array.from(c).map((t=>(t=>{try{t=decodeURI(t)}catch(t){}return t})(t.dataset.path||t.getAttribute("id")||r))),lang:a,signal:s.signal}).then((t=>{c.forEach(((e,n)=>{e.innerText=t[n].toString()}))})).catch(e),s.abort.bind(s)},exports.version="2.14.3";
|
|
2
2
|
//# sourceMappingURL=comment.cjs.map
|
package/dist/comment.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.cjs","sources":[
|
|
1
|
+
{"version":3,"file":"comment.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/comment.d.cts
CHANGED
package/dist/comment.d.mts
CHANGED
package/dist/comment.d.ts
CHANGED
package/dist/comment.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){if("function"==typeof define&&define.amd)define("Waline",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.Waline=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.version=e.commentCount=void 0;const t=e=>{const t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.replace(/\/$/u,"")}(e);return/^(https?:)?\/\//.test(t)?t:`https://${t}`},n=e=>{"AbortError"!==e.name&&console.error(e.message)};e.version="2.14.
|
|
1
|
+
!function(e,t){if("function"==typeof define&&define.amd)define("Waline",["exports"],t);else if("undefined"!=typeof exports)t(exports);else{var n={exports:{}};t(n.exports),e.Waline=n.exports}}("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:this,(function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.version=e.commentCount=void 0;const t=e=>{const t=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e.replace(/\/$/u,"")}(e);return/^(https?:)?\/\//.test(t)?t:`https://${t}`},n=e=>{"AbortError"!==e.name&&console.error(e.message)};e.version="2.14.3",e.commentCount=e=>{let{serverURL:o,path:r=window.location.pathname,selector:a=".waline-comment-count",lang:s=navigator.language}=e;const i=new AbortController,l=document.querySelectorAll(a);return l.length&&(e=>{let{serverURL:t,lang:n,paths:o,signal:r}=e;return fetch(`${t}/comment?type=count&url=${encodeURIComponent(o.join(","))}&lang=${n}`,{signal:r}).then((e=>e.json())).then((e=>Array.isArray(e)?e:[e]))})({serverURL:t(o),paths:Array.from(l).map((e=>(e=>{try{e=decodeURI(e)}catch(e){}return e})(e.dataset.path||e.getAttribute("id")||r))),lang:s,signal:i.signal}).then((e=>{l.forEach(((t,n)=>{t.innerText=e[n].toString()}))})).catch(n),i.abort.bind(i)}}));
|
|
2
2
|
//# sourceMappingURL=comment.js.map
|
package/dist/comment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.js","sources":[
|
|
1
|
+
{"version":3,"file":"comment.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/comment.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const t=t=>{const e=((t="")=>t.replace(/\/$/u,""))(t);return/^(https?:)?\/\//.test(e)?e:`https://${e}`},e=t=>{"AbortError"!==t.name&&console.error(t.message)},
|
|
1
|
+
const t=t=>{const e=((t="")=>t.replace(/\/$/u,""))(t);return/^(https?:)?\/\//.test(e)?e:`https://${e}`},e=t=>{"AbortError"!==t.name&&console.error(t.message)},n=({serverURL:n,path:r=window.location.pathname,selector:a=".waline-comment-count",lang:o=navigator.language})=>{const s=new AbortController,c=document.querySelectorAll(a);return c.length&&(({serverURL:t,lang:e,paths:n,signal:r})=>fetch(`${t}/comment?type=count&url=${encodeURIComponent(n.join(","))}&lang=${e}`,{signal:r}).then((t=>t.json())).then((t=>Array.isArray(t)?t:[t])))({serverURL:t(n),paths:Array.from(c).map((t=>(t=>{try{t=decodeURI(t)}catch(t){}return t})(t.dataset.path||t.getAttribute("id")||r))),lang:o,signal:s.signal}).then((t=>{c.forEach(((e,n)=>{e.innerText=t[n].toString()}))})).catch(e),s.abort.bind(s)},r="2.14.3";export{n as commentCount,r as version};
|
|
2
2
|
//# sourceMappingURL=comment.mjs.map
|
package/dist/comment.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment.mjs","sources":[
|
|
1
|
+
{"version":3,"file":"comment.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|