@mx-space/api-client 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/adaptors/axios.ts +34 -32
  2. package/adaptors/umi-request.ts +25 -22
  3. package/build/index.cjs.js +12 -32
  4. package/build/index.cjs.js.map +1 -1
  5. package/build/index.cjs.min.js +1 -1
  6. package/build/index.cjs.min.js.map +1 -1
  7. package/build/index.esm.js +13 -32
  8. package/build/index.esm.js.map +1 -1
  9. package/build/index.esm.min.js +1 -1
  10. package/build/index.esm.min.js.map +1 -1
  11. package/build/index.umd.js +12 -32
  12. package/build/index.umd.js.map +1 -1
  13. package/build/index.umd.min.js +1 -1
  14. package/build/index.umd.min.js.map +1 -1
  15. package/controllers/aggregate.ts +9 -5
  16. package/controllers/base.ts +3 -3
  17. package/controllers/category.ts +18 -7
  18. package/controllers/comment.ts +10 -6
  19. package/controllers/link.ts +11 -4
  20. package/controllers/note.ts +11 -7
  21. package/controllers/page.ts +10 -5
  22. package/controllers/post.ts +15 -8
  23. package/controllers/project.ts +10 -3
  24. package/controllers/recently.ts +10 -5
  25. package/controllers/say.ts +10 -5
  26. package/controllers/search.ts +14 -7
  27. package/controllers/snippet.ts +9 -4
  28. package/controllers/user.ts +10 -5
  29. package/core/attach-request.ts +1 -1
  30. package/core/client.ts +37 -47
  31. package/coverage/clover.xml +281 -274
  32. package/coverage/coverage-final.json +20 -20
  33. package/coverage/lcov-report/adaptors/axios.ts.html +48 -42
  34. package/coverage/lcov-report/adaptors/index.html +24 -24
  35. package/coverage/lcov-report/adaptors/umi-request.ts.html +42 -33
  36. package/coverage/lcov-report/auto-bind.ts.html +229 -0
  37. package/coverage/lcov-report/controllers/aggregate.ts.html +20 -8
  38. package/coverage/lcov-report/controllers/base.ts.html +4 -4
  39. package/coverage/lcov-report/controllers/category.ts.html +43 -10
  40. package/coverage/lcov-report/controllers/comment.ts.html +21 -9
  41. package/coverage/lcov-report/controllers/index.html +1 -1
  42. package/coverage/lcov-report/controllers/index.ts.html +2 -2
  43. package/coverage/lcov-report/controllers/link.ts.html +28 -7
  44. package/coverage/lcov-report/controllers/note.ts.html +21 -9
  45. package/coverage/lcov-report/controllers/page.ts.html +22 -7
  46. package/coverage/lcov-report/controllers/post.ts.html +37 -16
  47. package/coverage/lcov-report/controllers/project.ts.html +27 -6
  48. package/coverage/lcov-report/controllers/recently.ts.html +23 -8
  49. package/coverage/lcov-report/controllers/say.ts.html +23 -8
  50. package/coverage/lcov-report/controllers/search.ts.html +31 -10
  51. package/coverage/lcov-report/controllers/snippet.ts.html +22 -7
  52. package/coverage/lcov-report/controllers/user.ts.html +23 -8
  53. package/coverage/lcov-report/core/attach-request.ts.html +13 -13
  54. package/coverage/lcov-report/core/client.ts.html +120 -150
  55. package/coverage/lcov-report/core/error.ts.html +1 -1
  56. package/coverage/lcov-report/core/index.html +18 -18
  57. package/coverage/lcov-report/core/index.ts.html +1 -1
  58. package/coverage/lcov-report/index.html +26 -26
  59. package/coverage/lcov-report/index.ts.html +244 -0
  60. package/coverage/lcov-report/models/aggregate.ts.html +1 -1
  61. package/coverage/lcov-report/models/category.ts.html +1 -1
  62. package/coverage/lcov-report/models/index.html +1 -1
  63. package/coverage/lcov-report/utils/auto-bind.ts.html +18 -18
  64. package/coverage/lcov-report/utils/index.html +1 -1
  65. package/coverage/lcov-report/utils/index.ts.html +3 -3
  66. package/coverage/lcov.info +496 -485
  67. package/esm/adaptors/axios.d.ts +2 -2
  68. package/esm/adaptors/axios.js +1 -0
  69. package/esm/adaptors/axios.js.map +1 -1
  70. package/esm/adaptors/umi-request.d.ts +2 -2
  71. package/esm/adaptors/umi-request.js +1 -0
  72. package/esm/adaptors/umi-request.js.map +1 -1
  73. package/esm/controllers/aggregate.d.ts +25 -8
  74. package/esm/controllers/aggregate.js.map +1 -1
  75. package/esm/controllers/base.d.ts +17 -5
  76. package/esm/controllers/category.d.ts +64 -13
  77. package/esm/controllers/category.js.map +1 -1
  78. package/esm/controllers/comment.d.ts +42 -10
  79. package/esm/controllers/comment.js.map +1 -1
  80. package/esm/controllers/link.d.ts +5 -4
  81. package/esm/controllers/link.js.map +1 -1
  82. package/esm/controllers/note.d.ts +42 -12
  83. package/esm/controllers/note.js.map +1 -1
  84. package/esm/controllers/page.d.ts +22 -8
  85. package/esm/controllers/page.js.map +1 -1
  86. package/esm/controllers/post.d.ts +24 -11
  87. package/esm/controllers/post.js.map +1 -1
  88. package/esm/controllers/project.d.ts +4 -3
  89. package/esm/controllers/project.js.map +1 -1
  90. package/esm/controllers/recently.d.ts +30 -8
  91. package/esm/controllers/recently.js.map +1 -1
  92. package/esm/controllers/say.d.ts +15 -5
  93. package/esm/controllers/say.js.map +1 -1
  94. package/esm/controllers/search.d.ts +168 -9
  95. package/esm/controllers/search.js.map +1 -1
  96. package/esm/controllers/snippet.d.ts +16 -6
  97. package/esm/controllers/snippet.js.map +1 -1
  98. package/esm/controllers/user.d.ts +28 -8
  99. package/esm/controllers/user.js.map +1 -1
  100. package/esm/core/attach-request.d.ts +1 -1
  101. package/esm/core/attach-request.js.map +1 -1
  102. package/esm/core/client.d.ts +9 -6
  103. package/esm/core/client.js +13 -32
  104. package/esm/core/client.js.map +1 -1
  105. package/esm/index.d.ts +2 -1
  106. package/esm/index.js +1 -1
  107. package/esm/index.js.map +1 -1
  108. package/esm/interfaces/adapter.d.ts +9 -8
  109. package/esm/interfaces/client.d.ts +1 -1
  110. package/esm/interfaces/request.d.ts +22 -13
  111. package/esm/interfaces/types.d.ts +2 -0
  112. package/esm/interfaces/types.js +2 -0
  113. package/esm/interfaces/types.js.map +1 -0
  114. package/index.ts +2 -1
  115. package/interfaces/adapter.ts +29 -24
  116. package/interfaces/client.ts +1 -1
  117. package/interfaces/request.ts +45 -20
  118. package/{types/helper.d.ts → interfaces/types.ts} +0 -0
  119. package/lib/adaptors/axios.d.ts +2 -2
  120. package/lib/adaptors/axios.js +1 -0
  121. package/lib/adaptors/axios.js.map +1 -1
  122. package/lib/adaptors/umi-request.d.ts +2 -2
  123. package/lib/adaptors/umi-request.js +1 -0
  124. package/lib/adaptors/umi-request.js.map +1 -1
  125. package/lib/controllers/aggregate.d.ts +25 -8
  126. package/lib/controllers/aggregate.js.map +1 -1
  127. package/lib/controllers/base.d.ts +17 -5
  128. package/lib/controllers/category.d.ts +64 -13
  129. package/lib/controllers/category.js.map +1 -1
  130. package/lib/controllers/comment.d.ts +42 -10
  131. package/lib/controllers/comment.js.map +1 -1
  132. package/lib/controllers/link.d.ts +5 -4
  133. package/lib/controllers/link.js.map +1 -1
  134. package/lib/controllers/note.d.ts +42 -12
  135. package/lib/controllers/note.js.map +1 -1
  136. package/lib/controllers/page.d.ts +22 -8
  137. package/lib/controllers/page.js.map +1 -1
  138. package/lib/controllers/post.d.ts +24 -11
  139. package/lib/controllers/post.js.map +1 -1
  140. package/lib/controllers/project.d.ts +4 -3
  141. package/lib/controllers/project.js.map +1 -1
  142. package/lib/controllers/recently.d.ts +30 -8
  143. package/lib/controllers/recently.js.map +1 -1
  144. package/lib/controllers/say.d.ts +15 -5
  145. package/lib/controllers/say.js.map +1 -1
  146. package/lib/controllers/search.d.ts +168 -9
  147. package/lib/controllers/search.js.map +1 -1
  148. package/lib/controllers/snippet.d.ts +16 -6
  149. package/lib/controllers/snippet.js.map +1 -1
  150. package/lib/controllers/user.d.ts +28 -8
  151. package/lib/controllers/user.js.map +1 -1
  152. package/lib/core/attach-request.d.ts +1 -1
  153. package/lib/core/attach-request.js.map +1 -1
  154. package/lib/core/client.d.ts +9 -6
  155. package/lib/core/client.js +13 -33
  156. package/lib/core/client.js.map +1 -1
  157. package/lib/index.d.ts +2 -1
  158. package/lib/index.js +1 -2
  159. package/lib/index.js.map +1 -1
  160. package/lib/interfaces/adapter.d.ts +9 -8
  161. package/lib/interfaces/client.d.ts +1 -1
  162. package/lib/interfaces/request.d.ts +22 -13
  163. package/lib/interfaces/types.d.ts +2 -0
  164. package/lib/interfaces/types.js +3 -0
  165. package/lib/interfaces/types.js.map +1 -0
  166. package/package.json +5 -5
  167. package/tsconfig.json +25 -4
  168. package/tsconfig.types.json +18 -0
  169. package/types/adaptors/axios.d.ts +3 -0
  170. package/types/adaptors/umi-request.d.ts +3 -0
  171. package/types/controllers/aggregate.d.ts +64 -0
  172. package/types/controllers/base.d.ts +39 -0
  173. package/types/controllers/category.d.ts +114 -0
  174. package/types/controllers/comment.d.ts +81 -0
  175. package/types/controllers/index.d.ts +16 -0
  176. package/types/controllers/link.d.ts +16 -0
  177. package/types/controllers/note.d.ts +94 -0
  178. package/types/controllers/page.d.ts +59 -0
  179. package/types/controllers/post.d.ts +72 -0
  180. package/types/controllers/project.d.ts +15 -0
  181. package/types/controllers/recently.d.ts +61 -0
  182. package/types/controllers/say.d.ts +37 -0
  183. package/types/controllers/search.d.ts +247 -0
  184. package/types/controllers/snippet.d.ts +33 -0
  185. package/types/controllers/user.d.ts +54 -0
  186. package/types/core/attach-request.d.ts +2 -0
  187. package/types/core/client.d.ts +29 -0
  188. package/types/core/error.d.ts +6 -0
  189. package/types/core/index.d.ts +2 -0
  190. package/types/dtos/comment.d.ts +6 -0
  191. package/types/index.d.ts +7 -0
  192. package/types/interfaces/adapter.d.ts +14 -0
  193. package/types/interfaces/client.d.ts +5 -0
  194. package/types/interfaces/controller.d.ts +4 -0
  195. package/types/interfaces/instance.d.ts +7 -0
  196. package/types/interfaces/options.d.ts +1 -0
  197. package/types/interfaces/params.d.ts +4 -0
  198. package/types/interfaces/request.d.ts +43 -0
  199. package/types/interfaces/types.d.ts +2 -0
  200. package/types/models/aggregate.d.ts +53 -0
  201. package/types/models/base.d.ts +37 -0
  202. package/types/models/category.d.ts +22 -0
  203. package/types/models/comment.d.ts +34 -0
  204. package/types/models/index.d.ts +14 -0
  205. package/types/models/link.d.ts +20 -0
  206. package/types/models/note.d.ts +30 -0
  207. package/types/models/page.d.ts +14 -0
  208. package/types/models/post.d.ts +15 -0
  209. package/types/models/project.d.ts +11 -0
  210. package/types/models/recently.d.ts +6 -0
  211. package/types/models/say.d.ts +6 -0
  212. package/types/models/setting.d.ts +66 -0
  213. package/types/models/snippet.d.ts +16 -0
  214. package/types/models/user.d.ts +21 -0
  215. package/types/utils/auto-bind.d.ts +4 -0
  216. package/types/utils/index.d.ts +5 -0
@@ -3,25 +3,33 @@ declare type NoStringIndex<T> = {
3
3
  [K in keyof T as string extends K ? never : K]: T[K];
4
4
  };
5
5
  export declare type Method = 'get' | 'delete' | 'post' | 'put' | 'patch';
6
- export interface IRequestHandler {
7
- (path?: string | number): IRequestHandler;
8
- get<P = unknown>(options?: Omit<NoStringIndex<RequestOptions>, 'data'>): RequestProxyResult<P>;
9
- post<P = unknown>(options?: RequestOptions): RequestProxyResult<P>;
10
- patch<P = unknown>(options?: RequestOptions): RequestProxyResult<P>;
11
- delete<P = unknown>(options?: Omit<NoStringIndex<RequestOptions>, 'data'>): RequestProxyResult<P>;
12
- put<P = unknown>(options?: RequestOptions): RequestProxyResult<P>;
13
- [key: string]: IRequestHandler;
6
+ export interface IRequestHandler<ResponseWrapper> {
7
+ (path?: string | number): IRequestHandler<ResponseWrapper>;
8
+ get<P = unknown>(options?: Omit<NoStringIndex<RequestOptions>, 'data'>): RequestProxyResult<P, ResponseWrapper>;
9
+ post<P = unknown>(options?: RequestOptions): RequestProxyResult<P, ResponseWrapper>;
10
+ patch<P = unknown>(options?: RequestOptions): RequestProxyResult<P, ResponseWrapper>;
11
+ delete<P = unknown>(options?: Omit<NoStringIndex<RequestOptions>, 'data'>): RequestProxyResult<P, ResponseWrapper>;
12
+ put<P = unknown>(options?: RequestOptions): RequestProxyResult<P, ResponseWrapper>;
13
+ toString(withBase?: boolean): string;
14
+ valueOf(withBase?: boolean): string;
15
+ [key: string]: IRequestHandler<ResponseWrapper>;
14
16
  }
15
- export declare type RequestProxyResult<T, R = {
17
+ export declare type RequestProxyResult<T, ResponseWrapper, R = ResponseWrapper extends unknown ? {
16
18
  data: T;
17
19
  [key: string]: any;
18
- }> = Promise<ResponseProxyExtraRaw<T, R>>;
20
+ } : ResponseWrapper extends {
21
+ data: T;
22
+ } ? ResponseWrapper : Omit<ResponseWrapper, 'data'> & {
23
+ data: T;
24
+ }> = Promise<ResponseProxyExtraRaw<T, R, ResponseWrapper>>;
19
25
  declare type CamelToSnake<T extends string, P extends string = ''> = string extends T ? string : T extends `${infer C0}${infer R}` ? CamelToSnake<R, `${P}${C0 extends Lowercase<C0> ? '' : '_'}${Lowercase<C0>}`> : P;
20
26
  declare type CamelKeysToSnake<T> = {
21
27
  [K in keyof T as CamelToSnake<Extract<K, string>>]: T[K];
22
28
  };
23
- export declare type ResponseProxyExtraRaw<T, RawData = unknown, Response = unknown> = T extends object ? T & {
24
- $raw: Response extends unknown ? {
29
+ declare type ResponseWrapperType<Response, RawData, T> = {
30
+ $raw: Response extends {
31
+ data: infer T;
32
+ } ? Response : Response extends unknown ? {
25
33
  [i: string]: any;
26
34
  data: RawData extends unknown ? CamelKeysToSnake<T> : RawData;
27
35
  } : Response;
@@ -30,5 +38,6 @@ export declare type ResponseProxyExtraRaw<T, RawData = unknown, Response = unkno
30
38
  method: string;
31
39
  [k: string]: string;
32
40
  };
33
- } : T;
41
+ };
42
+ export declare type ResponseProxyExtraRaw<T, RawData = unknown, Response = unknown> = T extends object ? T & ResponseWrapperType<Response, RawData, T> : T extends unknown ? T & ResponseWrapperType<Response, RawData, T> : unknown;
34
43
  export {};
@@ -0,0 +1,2 @@
1
+ export declare type Class<T> = new (...args: any[]) => T;
2
+ export declare type SelectFields<T extends string> = `${'+' | '-' | ''}${T}`[];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../interfaces/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@mx-space/api-client",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "A api client for mx-space server@next",
5
5
  "author": "Innei",
6
6
  "license": "MIT",
7
7
  "main": "build/index.cjs.js",
8
8
  "module": "build/index.esm.js",
9
- "types": "index.ts",
9
+ "types": "types/index.d.ts",
10
10
  "unpkg": "build/index.umd.min.js",
11
11
  "husky": {
12
12
  "hooks": {
@@ -33,10 +33,10 @@
33
33
  "pnpm": ">=6"
34
34
  },
35
35
  "scripts": {
36
- "predeploy": "rm -rf dist",
37
- "prebuild": "rm -rf rm -rf lib && rm -rf esm",
36
+ "prebuild": "rm -rf lib && rm -rf esm",
38
37
  "build": "tsc --build tsconfig.build.json && tsc --build tsconfig.cjs.json",
39
- "postbuild": "tsconfig-replace-paths -p tsconfig.build.json && tsconfig-replace-paths -p tsconfig.cjs.json",
38
+ "postbuild": "tsconfig-replace-paths -p tsconfig.build.json && tsconfig-replace-paths -p tsconfig.cjs.json && npm run types",
39
+ "types": "rm -rf types && tsc --build tsconfig.types.json && tsconfig-replace-paths -p tsconfig.types.json",
40
40
  "package": "NODE_ENV=production npm run build && rollup -c",
41
41
  "prepackage": "rm -rf build",
42
42
  "release": "vv",
package/tsconfig.json CHANGED
@@ -1,12 +1,33 @@
1
1
  {
2
- "extends": "../tsconfig.json",
3
2
  "compilerOptions": {
4
3
  "declaration": true,
5
4
  "outDir": "./esm",
6
5
  "baseUrl": ".",
7
- "jsx": "react"
6
+ "jsx": "react",
7
+ "target": "ES2020",
8
+ "lib": [
9
+ "ESNext",
10
+ "DOM",
11
+ "DOM.Iterable"
12
+ ],
13
+ "module": "ESNext",
14
+ "moduleResolution": "node",
15
+ "strict": true,
16
+ "resolveJsonModule": true,
17
+ "esModuleInterop": true,
18
+ "skipLibCheck": true,
19
+ "forceConsistentCasingInFileNames": true,
20
+ "sourceMap": true,
21
+ "paths": {
22
+ "~/*": [
23
+ "*"
24
+ ]
25
+ }
8
26
  },
9
- "include": [
10
- "./**/*.ts"
27
+ "exclude": [
28
+ "esm/*",
29
+ "build/*",
30
+ "node_modules/*",
31
+ "lib/*"
11
32
  ]
12
33
  }
@@ -0,0 +1,18 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "rootDir": ".",
6
+ "outDir": "types",
7
+ "declaration": true,
8
+ "declarationMap": false,
9
+ "isolatedModules": false,
10
+ "noEmit": false,
11
+ "allowJs": false,
12
+ "emitDeclarationOnly": true
13
+ },
14
+ "exclude": [
15
+ "__tests__/**/*",
16
+ "**/*.test.ts"
17
+ ]
18
+ }
@@ -0,0 +1,3 @@
1
+ import { AxiosInstance, AxiosResponse } from 'axios';
2
+ import { IRequestAdapter } from '../interfaces/adapter';
3
+ export declare const axiosAdaptor: IRequestAdapter<AxiosInstance, AxiosResponse<unknown>>;
@@ -0,0 +1,3 @@
1
+ import { RequestMethod, RequestResponse } from 'umi-request';
2
+ import { IRequestAdapter } from '../interfaces/adapter';
3
+ export declare const umiAdaptor: IRequestAdapter<RequestMethod<true>, RequestResponse>;
@@ -0,0 +1,64 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { IController } from '../interfaces/controller';
3
+ import { SortOrder } from '../interfaces/options';
4
+ import { IRequestHandler, RequestProxyResult } from '../interfaces/request';
5
+ import { AggregateRoot, AggregateStat, AggregateTop, TimelineData, TimelineType } from '../models/aggregate';
6
+ import { HTTPClient } from '../core';
7
+ declare module '../core/client' {
8
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
9
+ aggregate: AggregateController<ResponseWrapper>;
10
+ }
11
+ }
12
+ export declare class AggregateController<ResponseWrapper> implements IController {
13
+ private client;
14
+ base: string;
15
+ name: string;
16
+ constructor(client: HTTPClient);
17
+ get proxy(): IRequestHandler<ResponseWrapper>;
18
+ /**
19
+ * 获取聚合数据
20
+ */
21
+ getAggregateData(): RequestProxyResult<AggregateRoot, ResponseWrapper>;
22
+ /**
23
+ * 获取最新发布的内容
24
+ */
25
+ getTop(size?: number): RequestProxyResult<AggregateTop, ResponseWrapper, ResponseWrapper extends unknown ? {
26
+ [key: string]: any;
27
+ data: AggregateTop;
28
+ } : ResponseWrapper extends {
29
+ data: AggregateTop;
30
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
31
+ data: AggregateTop;
32
+ }>;
33
+ getTimeline(options?: {
34
+ sort?: SortOrder;
35
+ type?: TimelineType;
36
+ year?: number;
37
+ }): RequestProxyResult<{
38
+ data: TimelineData;
39
+ }, ResponseWrapper, ResponseWrapper extends unknown ? {
40
+ [key: string]: any;
41
+ data: {
42
+ data: TimelineData;
43
+ };
44
+ } : ResponseWrapper extends {
45
+ data: {
46
+ data: TimelineData;
47
+ };
48
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
49
+ data: {
50
+ data: TimelineData;
51
+ };
52
+ }>;
53
+ /**
54
+ * 获取聚合数据统计
55
+ */
56
+ getStat(): RequestProxyResult<AggregateStat, ResponseWrapper, ResponseWrapper extends unknown ? {
57
+ [key: string]: any;
58
+ data: AggregateStat;
59
+ } : ResponseWrapper extends {
60
+ data: AggregateStat;
61
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
62
+ data: AggregateStat;
63
+ }>;
64
+ }
@@ -0,0 +1,39 @@
1
+ import { IRequestHandler, RequestProxyResult } from '../interfaces/request';
2
+ import { PaginateResult } from '../models/base';
3
+ import { HTTPClient } from '../core';
4
+ export declare abstract class BaseCrudController<T, ResponseWrapper> {
5
+ protected client: HTTPClient;
6
+ base: string;
7
+ constructor(client: HTTPClient);
8
+ get proxy(): IRequestHandler<ResponseWrapper>;
9
+ getById(id: string): RequestProxyResult<T, ResponseWrapper>;
10
+ getAll(): RequestProxyResult<{
11
+ data: T[];
12
+ }, ResponseWrapper, ResponseWrapper extends unknown ? {
13
+ [key: string]: any;
14
+ data: {
15
+ data: T[];
16
+ };
17
+ } : ResponseWrapper extends {
18
+ data: {
19
+ data: T[];
20
+ };
21
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
22
+ data: {
23
+ data: T[];
24
+ };
25
+ }>;
26
+ /**
27
+ * 带分页的查询
28
+ * @param page
29
+ * @param perPage
30
+ */
31
+ getAllPaginated(page?: number, perPage?: number): RequestProxyResult<PaginateResult<T>, ResponseWrapper, ResponseWrapper extends unknown ? {
32
+ [key: string]: any;
33
+ data: PaginateResult<T>;
34
+ } : ResponseWrapper extends {
35
+ data: PaginateResult<T>;
36
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
37
+ data: PaginateResult<T>;
38
+ }>;
39
+ }
@@ -0,0 +1,114 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { IController } from '../interfaces/controller';
3
+ import { IRequestHandler, RequestProxyResult, ResponseProxyExtraRaw } from '../interfaces/request';
4
+ import { HTTPClient } from '../core/client';
5
+ import { CategoryModel, CategoryType, CategoryWithChildrenModel, TagModel } from '../models/category';
6
+ import { PostModel } from '../models/post';
7
+ declare module '../core/client' {
8
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
9
+ category: CategoryController<ResponseWrapper>;
10
+ }
11
+ }
12
+ export declare class CategoryController<ResponseWrapper> implements IController {
13
+ private client;
14
+ name: string;
15
+ base: string;
16
+ constructor(client: HTTPClient);
17
+ get proxy(): IRequestHandler<ResponseWrapper>;
18
+ getAllCategories(): RequestProxyResult<{
19
+ data: CategoryModel[];
20
+ }, ResponseWrapper>;
21
+ getAllTags(): RequestProxyResult<{
22
+ data: TagModel[];
23
+ }, ResponseWrapper>;
24
+ getCategoryDetail(id: string): Promise<ResponseProxyExtraRaw<CategoryWithChildrenModel>>;
25
+ getCategoryDetail(ids: string[]): Promise<ResponseProxyExtraRaw<Map<string, CategoryWithChildrenModel>>>;
26
+ getCategoryByIdOrSlug(idOrSlug: string): Promise<CategoryModel & {
27
+ children: Pick<PostModel, "id" | "title" | "slug" | "modified" | "created">[];
28
+ } & {
29
+ $raw: ResponseWrapper extends {
30
+ data: infer T;
31
+ } ? ResponseWrapper : ResponseWrapper extends unknown ? {
32
+ [i: string]: any;
33
+ data: (ResponseWrapper extends unknown ? {
34
+ [key: string]: any;
35
+ data: CategoryWithChildrenModel;
36
+ } : ResponseWrapper extends {
37
+ data: CategoryWithChildrenModel;
38
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
39
+ data: CategoryWithChildrenModel;
40
+ }) extends unknown ? {
41
+ type: CategoryType;
42
+ count: number;
43
+ slug: string;
44
+ name: string;
45
+ created: string;
46
+ id: string;
47
+ children: Pick<PostModel, "id" | "title" | "slug" | "modified" | "created">[];
48
+ } : ResponseWrapper extends unknown ? {
49
+ [key: string]: any;
50
+ data: CategoryWithChildrenModel;
51
+ } : ResponseWrapper extends {
52
+ data: CategoryWithChildrenModel;
53
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
54
+ data: CategoryWithChildrenModel;
55
+ };
56
+ } : ResponseWrapper;
57
+ $request: {
58
+ [k: string]: string;
59
+ path: string;
60
+ method: string;
61
+ };
62
+ }>;
63
+ getTagByName(name: string): Promise<{
64
+ tag: string;
65
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
66
+ } & {
67
+ $raw: ResponseWrapper extends {
68
+ data: infer T;
69
+ } ? ResponseWrapper : ResponseWrapper extends unknown ? {
70
+ [i: string]: any;
71
+ data: (ResponseWrapper extends unknown ? {
72
+ [key: string]: any;
73
+ data: {
74
+ tag: string;
75
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
76
+ };
77
+ } : ResponseWrapper extends {
78
+ data: {
79
+ tag: string;
80
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
81
+ };
82
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
83
+ data: {
84
+ tag: string;
85
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
86
+ };
87
+ }) extends unknown ? {
88
+ tag: string;
89
+ data: Pick<PostModel, "id" | "title" | "slug" | "created" | "category">[];
90
+ } : ResponseWrapper extends unknown ? {
91
+ [key: string]: any;
92
+ data: {
93
+ tag: string;
94
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
95
+ };
96
+ } : ResponseWrapper extends {
97
+ data: {
98
+ tag: string;
99
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
100
+ };
101
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
102
+ data: {
103
+ tag: string;
104
+ data: Pick<PostModel, 'id' | 'title' | 'slug' | 'category' | 'created'>[];
105
+ };
106
+ };
107
+ } : ResponseWrapper;
108
+ $request: {
109
+ [k: string]: string;
110
+ path: string;
111
+ method: string;
112
+ };
113
+ }>;
114
+ }
@@ -0,0 +1,81 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { IController } from '../interfaces/controller';
3
+ import { PaginationParams } from '../interfaces/params';
4
+ import { IRequestHandler } from '../interfaces/request';
5
+ import { PaginateResult } from '../models/base';
6
+ import { CommentModel } from '../models/comment';
7
+ import { HTTPClient } from '../core';
8
+ import { CommentDto } from '../dtos/comment';
9
+ declare module '../core/client' {
10
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
11
+ comment: CommentController<ResponseWrapper>;
12
+ }
13
+ }
14
+ export declare class CommentController<ResponseWrapper> implements IController {
15
+ private readonly client;
16
+ base: string;
17
+ name: string;
18
+ constructor(client: HTTPClient);
19
+ get proxy(): IRequestHandler<ResponseWrapper>;
20
+ /**
21
+ * 根据 comment id 获取评论, 包括子评论
22
+ */
23
+ getById(id: string): import("../interfaces/request").RequestProxyResult<CommentModel & {
24
+ ref: string;
25
+ }, ResponseWrapper, ResponseWrapper extends unknown ? {
26
+ [key: string]: any;
27
+ data: CommentModel & {
28
+ ref: string;
29
+ };
30
+ } : ResponseWrapper extends {
31
+ data: CommentModel & {
32
+ ref: string;
33
+ };
34
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
35
+ data: CommentModel & {
36
+ ref: string;
37
+ };
38
+ }>;
39
+ /**
40
+ * 获取文章的评论列表
41
+ * @param refId 文章 Id
42
+ */
43
+ getByRefId(refId: string, pagination?: PaginationParams): import("../interfaces/request").RequestProxyResult<PaginateResult<CommentModel & {
44
+ ref: string;
45
+ }>, ResponseWrapper, ResponseWrapper extends unknown ? {
46
+ [key: string]: any;
47
+ data: PaginateResult<CommentModel & {
48
+ ref: string;
49
+ }>;
50
+ } : ResponseWrapper extends {
51
+ data: PaginateResult<CommentModel & {
52
+ ref: string;
53
+ }>;
54
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
55
+ data: PaginateResult<CommentModel & {
56
+ ref: string;
57
+ }>;
58
+ }>;
59
+ /**
60
+ * 评论
61
+ */
62
+ comment(refId: string, data: CommentDto): import("../interfaces/request").RequestProxyResult<CommentModel, ResponseWrapper, ResponseWrapper extends unknown ? {
63
+ [key: string]: any;
64
+ data: CommentModel;
65
+ } : ResponseWrapper extends {
66
+ data: CommentModel;
67
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
68
+ data: CommentModel;
69
+ }>;
70
+ /**
71
+ * 回复评论
72
+ */
73
+ reply(commentId: string, data: CommentDto): import("../interfaces/request").RequestProxyResult<CommentModel, ResponseWrapper, ResponseWrapper extends unknown ? {
74
+ [key: string]: any;
75
+ data: CommentModel;
76
+ } : ResponseWrapper extends {
77
+ data: CommentModel;
78
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
79
+ data: CommentModel;
80
+ }>;
81
+ }
@@ -0,0 +1,16 @@
1
+ import { AggregateController } from './aggregate';
2
+ import { CategoryController } from './category';
3
+ import { CommentController } from './comment';
4
+ import { LinkController } from './link';
5
+ import { NoteController } from './note';
6
+ import { PageController } from './page';
7
+ import { PostController } from './post';
8
+ import { ProjectController } from './project';
9
+ import { RecentlyController } from './recently';
10
+ import { SayController } from './say';
11
+ import { SearchController } from './search';
12
+ import { SnippetController } from './snippet';
13
+ import { UserController } from './user';
14
+ export declare const allControllers: (typeof AggregateController | typeof CategoryController | typeof CommentController | typeof LinkController | typeof NoteController | typeof PageController | typeof PostController | typeof ProjectController | typeof RecentlyController | typeof SayController | typeof SearchController | typeof SnippetController | typeof UserController)[];
15
+ export declare const allContollerNames: readonly ["aggregate", "category", "comment", "link", "note", "page", "post", "project", "recently", "say", "search", "snippet", "user", "friend", "master", "shorthand"];
16
+ export { AggregateController, CategoryController, CommentController, LinkController, NoteController, PageController, PostController, ProjectController, RecentlyController, SayController, SearchController, SnippetController, UserController, };
@@ -0,0 +1,16 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { LinkModel } from '../models/link';
3
+ import { HTTPClient } from '../core';
4
+ import { BaseCrudController } from './base';
5
+ declare module '../core/client' {
6
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
7
+ link: LinkController<ResponseWrapper>;
8
+ friend: LinkController<ResponseWrapper>;
9
+ }
10
+ }
11
+ export declare class LinkController<ResponseWrapper> extends BaseCrudController<LinkModel, ResponseWrapper> {
12
+ protected readonly client: HTTPClient;
13
+ constructor(client: HTTPClient);
14
+ name: string[];
15
+ base: string;
16
+ }
@@ -0,0 +1,94 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { IController } from '../interfaces/controller';
3
+ import { IRequestHandler } from '../interfaces/request';
4
+ import { SelectFields } from '../interfaces/types';
5
+ import { PaginateResult } from '../models/base';
6
+ import { NoteModel, NoteWrappedPayload } from '../models/note';
7
+ import { HTTPClient } from '../core/client';
8
+ declare module '../core/client' {
9
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
10
+ note: NoteController<ResponseWrapper>;
11
+ }
12
+ }
13
+ export declare type NoteListOptions = {
14
+ select?: SelectFields<keyof NoteModel>;
15
+ year?: number;
16
+ sortBy?: 'weather' | 'mood' | 'title' | 'created' | 'modified';
17
+ sortOrder?: 1 | -1;
18
+ };
19
+ export declare class NoteController<ResponseWrapper> implements IController {
20
+ private client;
21
+ base: string;
22
+ name: string;
23
+ constructor(client: HTTPClient);
24
+ get proxy(): IRequestHandler<ResponseWrapper>;
25
+ /**
26
+ * 最新日记
27
+ */
28
+ getLatest(): import("../interfaces/request").RequestProxyResult<NoteWrappedPayload, ResponseWrapper, ResponseWrapper extends unknown ? {
29
+ [key: string]: any;
30
+ data: NoteWrappedPayload;
31
+ } : ResponseWrapper extends {
32
+ data: NoteWrappedPayload;
33
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
34
+ data: NoteWrappedPayload;
35
+ }>;
36
+ /**
37
+ * 获取一篇日记
38
+ * @param id id | nid
39
+ * @param password 访问密码
40
+ */
41
+ getNoteById(id: string | number, password?: string): import("../interfaces/request").RequestProxyResult<NoteWrappedPayload, ResponseWrapper, ResponseWrapper extends unknown ? {
42
+ [key: string]: any;
43
+ data: NoteWrappedPayload;
44
+ } : ResponseWrapper extends {
45
+ data: NoteWrappedPayload;
46
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
47
+ data: NoteWrappedPayload;
48
+ }>;
49
+ /**
50
+ * 日记列表分页
51
+ */
52
+ getList(page?: number, perPage?: number, options?: NoteListOptions): import("../interfaces/request").RequestProxyResult<PaginateResult<NoteModel>, ResponseWrapper, ResponseWrapper extends unknown ? {
53
+ [key: string]: any;
54
+ data: PaginateResult<NoteModel>;
55
+ } : ResponseWrapper extends {
56
+ data: PaginateResult<NoteModel>;
57
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
58
+ data: PaginateResult<NoteModel>;
59
+ }>;
60
+ /**
61
+ * 获取当前日记的上下各 n / 2 篇日记
62
+ */
63
+ getMiddleList(id: string, size?: number): import("../interfaces/request").RequestProxyResult<{
64
+ data: Pick<NoteModel, 'id' | 'title' | 'nid' | 'created'>[];
65
+ size: number;
66
+ }, ResponseWrapper, ResponseWrapper extends unknown ? {
67
+ [key: string]: any;
68
+ data: {
69
+ data: Pick<NoteModel, 'id' | 'title' | 'nid' | 'created'>[];
70
+ size: number;
71
+ };
72
+ } : ResponseWrapper extends {
73
+ data: {
74
+ data: Pick<NoteModel, 'id' | 'title' | 'nid' | 'created'>[];
75
+ size: number;
76
+ };
77
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
78
+ data: {
79
+ data: Pick<NoteModel, 'id' | 'title' | 'nid' | 'created'>[];
80
+ size: number;
81
+ };
82
+ }>;
83
+ /**
84
+ * 喜欢这篇日记
85
+ */
86
+ likeIt(id: string | number): import("../interfaces/request").RequestProxyResult<never, ResponseWrapper, ResponseWrapper extends unknown ? {
87
+ [key: string]: any;
88
+ data: never;
89
+ } : ResponseWrapper extends {
90
+ data: never;
91
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
92
+ data: never;
93
+ }>;
94
+ }
@@ -0,0 +1,59 @@
1
+ import { IRequestAdapter } from '../interfaces/adapter';
2
+ import { IController } from '../interfaces/controller';
3
+ import { IRequestHandler } from '../interfaces/request';
4
+ import { SelectFields } from '../interfaces/types';
5
+ import { PaginateResult } from '../models/base';
6
+ import { PageModel } from '../models/page';
7
+ import { HTTPClient } from '../core';
8
+ declare module '../core/client' {
9
+ interface HTTPClient<T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown> {
10
+ page: PageController<ResponseWrapper>;
11
+ }
12
+ }
13
+ export declare type PageListOptions = {
14
+ select?: SelectFields<keyof PageModel>;
15
+ sortBy?: 'order' | 'subtitle' | 'title' | 'created' | 'modified';
16
+ sortOrder?: 1 | -1;
17
+ };
18
+ export declare class PageController<ResponseWrapper> implements IController {
19
+ private readonly client;
20
+ constructor(client: HTTPClient);
21
+ base: string;
22
+ name: string;
23
+ get proxy(): IRequestHandler<ResponseWrapper>;
24
+ /**
25
+ * 页面列表
26
+ */
27
+ getList(page?: number, perPage?: number, options?: PageListOptions): import("../interfaces/request").RequestProxyResult<PaginateResult<PageModel>, ResponseWrapper, ResponseWrapper extends unknown ? {
28
+ [key: string]: any;
29
+ data: PaginateResult<PageModel>;
30
+ } : ResponseWrapper extends {
31
+ data: PaginateResult<PageModel>;
32
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
33
+ data: PaginateResult<PageModel>;
34
+ }>;
35
+ /**
36
+ * 页面详情
37
+ */
38
+ getById(id: string): import("../interfaces/request").RequestProxyResult<PageModel, ResponseWrapper, ResponseWrapper extends unknown ? {
39
+ [key: string]: any;
40
+ data: PageModel;
41
+ } : ResponseWrapper extends {
42
+ data: PageModel;
43
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
44
+ data: PageModel;
45
+ }>;
46
+ /**
47
+ * 根据路径获取页面
48
+ * @param slug 路径
49
+ * @returns
50
+ */
51
+ getBySlug(slug: string): import("../interfaces/request").RequestProxyResult<PageModel, ResponseWrapper, ResponseWrapper extends unknown ? {
52
+ [key: string]: any;
53
+ data: PageModel;
54
+ } : ResponseWrapper extends {
55
+ data: PageModel;
56
+ } ? ResponseWrapper : Omit<ResponseWrapper, "data"> & {
57
+ data: PageModel;
58
+ }>;
59
+ }