artalk 2.8.5 → 2.8.7

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/main.d.ts CHANGED
@@ -1,5 +1,3 @@
1
- import { marked } from 'marked';
2
-
3
1
  /**
4
2
  * 通用操作按钮
5
3
  */
@@ -8,7 +6,7 @@ declare class ActionBtn {
8
6
  $el: HTMLElement;
9
7
  isLoading: boolean;
10
8
  msgRecTimer?: number;
11
- msgRecTimerFunc?: Function;
9
+ msgRecTimerFunc?: () => void;
12
10
  get isMessaging(): boolean;
13
11
  isConfirming: boolean;
14
12
  confirmRecTimer?: number;
@@ -19,7 +17,7 @@ declare class ActionBtn {
19
17
  /** 获取按钮文字(动态/静态) */
20
18
  private getText;
21
19
  /** 设置点击事件 */
22
- setClick(func: Function): void;
20
+ setClick(func: () => void): void;
23
21
  /** 文字刷新(动态/静态) */
24
22
  updateText(text?: (() => string) | string): void;
25
23
  /** 设置加载状态 */
@@ -31,7 +29,7 @@ declare class ActionBtn {
31
29
  /** 成功消息 */
32
30
  setSuccess(text: string): void;
33
31
  /** 设置消息 */
34
- setMsg(text: string, className?: string, duringTime?: number, after?: Function): void;
32
+ setMsg(text: string, className?: string, duringTime?: number, after?: () => void): void;
35
33
  /** 设置消息复原操作定时器 */
36
34
  private setMsgRecTimer;
37
35
  /** 立刻触发器复原定时器 */
@@ -75,6 +73,115 @@ declare class Api extends Api_2<void> {
75
73
  * Artalk is a modern comment system based on Golang.
76
74
  */
77
75
  declare class Api_2<SecurityDataType extends unknown> extends HttpClient<SecurityDataType> {
76
+ auth: {
77
+ /**
78
+ * @description Login by email with verify code (Need send email verify code first) or password
79
+ *
80
+ * @tags Auth
81
+ * @name LoginByEmail
82
+ * @summary Login by email
83
+ * @request POST:/auth/email/login
84
+ * @response `200` `HandlerResponseUserLogin` OK
85
+ * @response `400` `(HandlerMap & {
86
+ msg?: string,
87
+
88
+ })` Bad Request
89
+ * @response `500` `(HandlerMap & {
90
+ msg?: string,
91
+
92
+ })` Internal Server Error
93
+ */
94
+ loginByEmail: (data: HandlerRequestAuthEmailLogin, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserLogin, HandlerMap & {
95
+ msg?: string | undefined;
96
+ }>>;
97
+ /**
98
+ * @description Register by email and verify code (if user exists, will update user, like forget password. Need send email verify code first)
99
+ *
100
+ * @tags Auth
101
+ * @name RegisterByEmail
102
+ * @summary Register by email
103
+ * @request POST:/auth/email/register
104
+ * @response `200` `HandlerResponseUserLogin` OK
105
+ * @response `400` `(HandlerMap & {
106
+ msg?: string,
107
+
108
+ })` Bad Request
109
+ * @response `500` `(HandlerMap & {
110
+ msg?: string,
111
+
112
+ })` Internal Server Error
113
+ */
114
+ registerByEmail: (data: HandlerRequestAuthEmailRegister, params?: RequestParams) => Promise<HttpResponse<HandlerResponseUserLogin, HandlerMap & {
115
+ msg?: string | undefined;
116
+ }>>;
117
+ /**
118
+ * @description Send email including verify code to user
119
+ *
120
+ * @tags Auth
121
+ * @name SendVerifyEmail
122
+ * @summary Send verify email
123
+ * @request POST:/auth/email/send
124
+ * @response `200` `(HandlerMap & {
125
+ msg?: string,
126
+
127
+ })` OK
128
+ * @response `400` `(HandlerMap & {
129
+ msg?: string,
130
+
131
+ })` Bad Request
132
+ * @response `500` `(HandlerMap & {
133
+ msg?: string,
134
+
135
+ })` Internal Server Error
136
+ */
137
+ sendVerifyEmail: (data: HandlerRequestAuthEmailSend, params?: RequestParams) => Promise<HttpResponse<HandlerMap & {
138
+ msg?: string | undefined;
139
+ }, HandlerMap & {
140
+ msg?: string | undefined;
141
+ }>>;
142
+ /**
143
+ * @description Get all users with same email, if there are more than one user with same email, need merge
144
+ *
145
+ * @tags Auth
146
+ * @name CheckDataMerge
147
+ * @summary Check data merge
148
+ * @request GET:/auth/merge
149
+ * @secure
150
+ * @response `200` `HandlerResponseAuthDataMergeCheck` OK
151
+ * @response `400` `(HandlerMap & {
152
+ msg?: string,
153
+
154
+ })` Bad Request
155
+ * @response `500` `(HandlerMap & {
156
+ msg?: string,
157
+
158
+ })` Internal Server Error
159
+ */
160
+ checkDataMerge: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseAuthDataMergeCheck, HandlerMap & {
161
+ msg?: string | undefined;
162
+ }>>;
163
+ /**
164
+ * @description This function is to solve the problem of multiple users with the same email address, should be called after user login and then check, and perform data merge.
165
+ *
166
+ * @tags Auth
167
+ * @name ApplyDataMerge
168
+ * @summary Apply data merge
169
+ * @request POST:/auth/merge
170
+ * @secure
171
+ * @response `200` `HandlerResponseAuthDataMergeApply` OK
172
+ * @response `400` `(HandlerMap & {
173
+ msg?: string,
174
+
175
+ })` Bad Request
176
+ * @response `500` `(HandlerMap & {
177
+ msg?: string,
178
+
179
+ })` Internal Server Error
180
+ */
181
+ applyDataMerge: (data: HandlerRequestAuthDataMergeApply, params?: RequestParams) => Promise<HttpResponse<HandlerResponseAuthDataMergeApply, HandlerMap & {
182
+ msg?: string | undefined;
183
+ }>>;
184
+ };
78
185
  cache: {
79
186
  /**
80
187
  * @description Flush all cache on the server
@@ -323,6 +430,22 @@ declare class Api_2<SecurityDataType extends unknown> extends HttpClient<Securit
323
430
  * @response `200` `CommonConfData` OK
324
431
  */
325
432
  conf: (params?: RequestParams) => Promise<HttpResponse<CommonConfData, any>>;
433
+ /**
434
+ * @description Get social login providers
435
+ *
436
+ * @tags System
437
+ * @name GetSocialLoginProviders
438
+ * @summary Get Social Login Providers
439
+ * @request GET:/conf/auth/providers
440
+ * @response `200` `HandlerResponseConfAuthProviders` OK
441
+ * @response `404` `(HandlerMap & {
442
+ msg?: string,
443
+
444
+ })` Not Found
445
+ */
446
+ getSocialLoginProviders: (params?: RequestParams) => Promise<HttpResponse<HandlerResponseConfAuthProviders, HandlerMap & {
447
+ msg?: string | undefined;
448
+ }>>;
326
449
  /**
327
450
  * @description Get Domain Info
328
451
  *
@@ -1078,8 +1201,8 @@ declare interface ApiHandlerPayload {
1078
1201
  img_data?: string;
1079
1202
  iframe?: string;
1080
1203
  };
1081
- need_login: {};
1082
- need_auth_login: {};
1204
+ need_login: object;
1205
+ need_auth_login: object;
1083
1206
  }
1084
1207
 
1085
1208
  declare interface ApiHandlers {
@@ -1207,6 +1330,8 @@ export declare interface ArtalkConfig {
1207
1330
  countEl: string;
1208
1331
  /** PV 数绑定元素 Selector */
1209
1332
  pvEl: string;
1333
+ /** 统计组件 PageKey 属性名 */
1334
+ statPageKeyAttr: string;
1210
1335
  /** 夜间模式 */
1211
1336
  darkMode: boolean | 'auto';
1212
1337
  /** 请求超时(单位:秒) */
@@ -1225,6 +1350,8 @@ export declare interface ArtalkConfig {
1225
1350
  imgUpload: boolean;
1226
1351
  /** 图片上传器 */
1227
1352
  imgUploader?: (file: File) => Promise<string>;
1353
+ /** Image lazy load */
1354
+ imgLazyLoad?: 'native' | 'data-src';
1228
1355
  /** 版本检测 */
1229
1356
  versionCheck: boolean;
1230
1357
  /** 引用后端配置 */
@@ -1237,6 +1364,8 @@ export declare interface ArtalkConfig {
1237
1364
  pluginURLs?: string[];
1238
1365
  /** Replacer for marked */
1239
1366
  markedReplacers?: ((raw: string) => string)[];
1367
+ /** Marked options */
1368
+ markedOptions?: any;
1240
1369
  /** 列表请求参数修改器 */
1241
1370
  listFetchParamsModifier?: (params: any) => void;
1242
1371
  remoteConfModifier?: (conf: Partial<ArtalkConfig>) => void;
@@ -1282,6 +1411,13 @@ declare namespace ArtalkType {
1282
1411
  }
1283
1412
  export { ArtalkType }
1284
1413
 
1414
+ declare interface AuthAuthProviderInfo {
1415
+ icon: string;
1416
+ label: string;
1417
+ name: string;
1418
+ path?: string;
1419
+ }
1420
+
1285
1421
  declare type CancelToken = Symbol | string | number;
1286
1422
 
1287
1423
  declare interface Checker<T = any> {
@@ -1483,7 +1619,7 @@ declare type CommentNode_2 = {
1483
1619
 
1484
1620
  declare interface CommentOptions {
1485
1621
  onAfterRender?: () => void;
1486
- onDelete?: Function;
1622
+ onDelete?: (c: CommentNode) => void;
1487
1623
  /** The comment being replied to (linked comment) */
1488
1624
  replyTo?: CommentData;
1489
1625
  flatMode: boolean;
@@ -1548,7 +1684,7 @@ export declare interface ContextApi extends EventManagerFuncs<EventPayloadMap> {
1548
1684
  /** 配置对象 */
1549
1685
  conf: ArtalkConfig;
1550
1686
  /** marked 依赖对象 */
1551
- getMarked(): TMarked | undefined;
1687
+ getMarked(): any | undefined;
1552
1688
  /** 获取 API 以供 HTTP 请求 */
1553
1689
  getApi(): Api;
1554
1690
  /** Get API handlers */
@@ -1805,6 +1941,8 @@ declare const en: {
1805
1941
  placeholder: string;
1806
1942
  noComment: string;
1807
1943
  send: string;
1944
+ signIn: string;
1945
+ signUp: string;
1808
1946
  save: string;
1809
1947
  nick: string;
1810
1948
  email: string;
@@ -1858,7 +1996,25 @@ declare const en: {
1858
1996
  cancel: string;
1859
1997
  msgCenter: string;
1860
1998
  ctrlCenter: string;
1999
+ noAccountPrompt: string;
2000
+ haveAccountPrompt: string;
2001
+ forgetPassword: string;
2002
+ resetPassword: string;
2003
+ verificationCode: string;
2004
+ verifySend: string;
2005
+ verifyResend: string;
2006
+ waitSeconds: string;
1861
2007
  emailVerified: string;
2008
+ password: string;
2009
+ username: string;
2010
+ nextStep: string;
2011
+ skipNotVerify: string;
2012
+ logoutConfirm: string;
2013
+ accountMergeNotice: string;
2014
+ accountMergeSelectOne: string;
2015
+ accountMergeConfirm: string;
2016
+ dismiss: string;
2017
+ merge: string;
1862
2018
  frontend: string;
1863
2019
  backend: string;
1864
2020
  loading: string;
@@ -1914,6 +2070,7 @@ declare interface EntityCookedNotify {
1914
2070
 
1915
2071
  declare interface EntityCookedPage {
1916
2072
  admin_only: boolean;
2073
+ date: string;
1917
2074
  id: number;
1918
2075
  key: string;
1919
2076
  pv: number;
@@ -2154,7 +2311,7 @@ declare interface HandlerParamsSiteUpdate {
2154
2311
  }
2155
2312
 
2156
2313
  declare interface HandlerParamsTransferImport {
2157
- /** Automatically answer yes for all questions. */
2314
+ /** Automatically answer yes for all questions */
2158
2315
  assumeyes?: boolean;
2159
2316
  /** The JSON data */
2160
2317
  json_data?: string;
@@ -2164,6 +2321,8 @@ declare interface HandlerParamsTransferImport {
2164
2321
  target_site_name?: string;
2165
2322
  /** The target site url */
2166
2323
  target_site_url?: string;
2324
+ /** Keep domain */
2325
+ url_keep_domain?: boolean;
2167
2326
  /** Enable URL resolver */
2168
2327
  url_resolver?: boolean;
2169
2328
  }
@@ -2222,11 +2381,47 @@ declare interface HandlerParamsVote {
2222
2381
  name?: string;
2223
2382
  }
2224
2383
 
2384
+ declare interface HandlerRequestAuthDataMergeApply {
2385
+ user_name: string;
2386
+ }
2387
+
2388
+ declare interface HandlerRequestAuthEmailLogin {
2389
+ code?: string;
2390
+ email: string;
2391
+ password?: string;
2392
+ }
2393
+
2394
+ declare interface HandlerRequestAuthEmailRegister {
2395
+ code: string;
2396
+ email: string;
2397
+ link?: string;
2398
+ name?: string;
2399
+ password: string;
2400
+ }
2401
+
2402
+ declare interface HandlerRequestAuthEmailSend {
2403
+ email: string;
2404
+ }
2405
+
2225
2406
  declare interface HandlerResponseAdminUserList {
2226
2407
  count: number;
2227
2408
  users: EntityCookedUserForAdmin[];
2228
2409
  }
2229
2410
 
2411
+ declare interface HandlerResponseAuthDataMergeApply {
2412
+ deleted_user_count: number;
2413
+ update_comments_count: number;
2414
+ update_notifies_count: number;
2415
+ update_votes_count: number;
2416
+ /** Empty if login user is target user no need to re-login */
2417
+ user_token: string;
2418
+ }
2419
+
2420
+ declare interface HandlerResponseAuthDataMergeCheck {
2421
+ need_merge: boolean;
2422
+ user_names: string[];
2423
+ }
2424
+
2230
2425
  declare interface HandlerResponseCaptchaGet {
2231
2426
  img_data: string;
2232
2427
  }
@@ -2303,6 +2498,11 @@ declare interface HandlerResponseCommentUpdate {
2303
2498
  vote_up: number;
2304
2499
  }
2305
2500
 
2501
+ declare interface HandlerResponseConfAuthProviders {
2502
+ anonymous: boolean;
2503
+ providers: AuthAuthProviderInfo[];
2504
+ }
2505
+
2306
2506
  declare interface HandlerResponseConfDomain {
2307
2507
  /** Is the domain trusted */
2308
2508
  is_trusted: boolean;
@@ -2317,6 +2517,7 @@ declare interface HandlerResponseNotifyList {
2317
2517
 
2318
2518
  declare interface HandlerResponsePageFetch {
2319
2519
  admin_only: boolean;
2520
+ date: string;
2320
2521
  id: number;
2321
2522
  key: string;
2322
2523
  pv: number;
@@ -2349,6 +2550,7 @@ declare interface HandlerResponsePagePV {
2349
2550
 
2350
2551
  declare interface HandlerResponsePageUpdate {
2351
2552
  admin_only: boolean;
2553
+ date: string;
2352
2554
  id: number;
2353
2555
  key: string;
2354
2556
  pv: number;
@@ -2808,6 +3010,7 @@ declare class SidebarLayer extends Component {
2808
3010
  private authCheck;
2809
3011
  private initLayer;
2810
3012
  private createIframe;
3013
+ private getDarkMode;
2811
3014
  private iframeLoad;
2812
3015
  }
2813
3016
 
@@ -2838,8 +3041,6 @@ declare type TKeysOnlyReturn<T extends TObjectWithFuncs, V> = {
2838
3041
  [K in keyof T]: ReturnType<T[K]> extends V ? K : never;
2839
3042
  }[keyof T];
2840
3043
 
2841
- declare type TMarked = typeof marked;
2842
-
2843
3044
  declare type TObjectWithFuncs = {
2844
3045
  [k: string]: (...args: any) => any;
2845
3046
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "artalk",
3
- "version": "2.8.5",
3
+ "version": "2.8.7",
4
4
  "description": "A self-hosted comment system",
5
5
  "keywords": [
6
6
  "comment-system",
@@ -105,22 +105,20 @@
105
105
  "abortcontroller-polyfill": "^1.7.5",
106
106
  "hanabi": "^0.4.0",
107
107
  "insane": "^2.6.2",
108
- "marked": "^12.0.1"
108
+ "marked": "^12.0.2"
109
109
  },
110
110
  "scripts": {
111
- "build": "vite build && pnpm build:lite && pnpm build:i18n",
111
+ "dev": "vite",
112
+ "build": "pnpm build:main && pnpm build:lite && pnpm build:i18n",
113
+ "build:main": "tsc --noEmit && vite build",
112
114
  "build:lite": "cross-env ARTALK_LITE=1 vite build",
113
115
  "build:i18n": "tsx scripts/build-i18n.ts",
114
- "copy:deploy": "cp -r dist deploy && cp CNAME deploy",
115
- "predeploy": "pnpm build && pnpm build:demo && pnpm copy:deploy",
116
- "deploy": "gh-pages -d deploy",
117
- "dev": "vite",
116
+ "preview": "vite preview",
118
117
  "test": "vitest",
119
118
  "coverage": "vitest run --coverage",
120
- "lint": "eslint './src/**/*.{js,ts}'",
121
- "attw": "pnpx @arethetypeswrong/cli --pack .",
122
- "serve": "vite preview",
123
119
  "test:e2e": "playwright test",
124
- "test:report": "playwright show-report"
120
+ "test:e2e-report": "playwright show-report",
121
+ "test:attw": "pnpx @arethetypeswrong/cli --pack .",
122
+ "lint": "eslint ."
125
123
  }
126
124
  }