@mx-space/api-client 0.7.0 → 0.7.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.
Files changed (239) hide show
  1. package/adaptors/axios.ts +34 -32
  2. package/adaptors/umi-request.ts +25 -22
  3. package/build/index.cjs.js +30 -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 +30 -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 +30 -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/index.ts +4 -0
  20. package/controllers/link.ts +11 -4
  21. package/controllers/note.ts +11 -7
  22. package/controllers/page.ts +10 -5
  23. package/controllers/post.ts +15 -8
  24. package/controllers/project.ts +10 -3
  25. package/controllers/recently.ts +10 -5
  26. package/controllers/say.ts +10 -5
  27. package/controllers/search.ts +14 -7
  28. package/controllers/severless.ts +31 -0
  29. package/controllers/snippet.ts +11 -6
  30. package/controllers/user.ts +10 -5
  31. package/core/attach-request.ts +1 -1
  32. package/core/client.ts +37 -47
  33. package/coverage/clover.xml +357 -337
  34. package/coverage/coverage-final.json +27 -26
  35. package/coverage/lcov-report/adaptors/axios.ts.html +50 -44
  36. package/coverage/lcov-report/adaptors/index.html +24 -24
  37. package/coverage/lcov-report/adaptors/umi-request.ts.html +42 -33
  38. package/coverage/lcov-report/auto-bind.ts.html +229 -0
  39. package/coverage/lcov-report/controllers/aggregate.ts.html +23 -11
  40. package/coverage/lcov-report/controllers/base.ts.html +6 -6
  41. package/coverage/lcov-report/controllers/category.ts.html +48 -15
  42. package/coverage/lcov-report/controllers/comment.ts.html +23 -11
  43. package/coverage/lcov-report/controllers/index.html +26 -11
  44. package/coverage/lcov-report/controllers/index.ts.html +40 -28
  45. package/coverage/lcov-report/controllers/link.ts.html +31 -10
  46. package/coverage/lcov-report/controllers/note.ts.html +24 -12
  47. package/coverage/lcov-report/controllers/page.ts.html +25 -10
  48. package/coverage/lcov-report/controllers/post.ts.html +39 -18
  49. package/coverage/lcov-report/controllers/project.ts.html +30 -9
  50. package/coverage/lcov-report/controllers/recently.ts.html +25 -10
  51. package/coverage/lcov-report/controllers/say.ts.html +26 -11
  52. package/coverage/lcov-report/controllers/search.ts.html +33 -12
  53. package/coverage/lcov-report/controllers/severless.ts.html +178 -0
  54. package/coverage/lcov-report/controllers/snippet.ts.html +26 -11
  55. package/coverage/lcov-report/controllers/user.ts.html +25 -10
  56. package/coverage/lcov-report/core/attach-request.ts.html +14 -14
  57. package/coverage/lcov-report/core/client.ts.html +120 -150
  58. package/coverage/lcov-report/core/error.ts.html +2 -2
  59. package/coverage/lcov-report/core/index.html +18 -18
  60. package/coverage/lcov-report/core/index.ts.html +3 -3
  61. package/coverage/lcov-report/index.html +34 -34
  62. package/coverage/lcov-report/index.ts.html +244 -0
  63. package/coverage/lcov-report/models/aggregate.ts.html +1 -1
  64. package/coverage/lcov-report/models/category.ts.html +4 -4
  65. package/coverage/lcov-report/models/index.html +1 -1
  66. package/coverage/lcov-report/utils/auto-bind.ts.html +20 -20
  67. package/coverage/lcov-report/utils/index.html +1 -1
  68. package/coverage/lcov-report/utils/index.ts.html +7 -7
  69. package/coverage/lcov.info +615 -577
  70. package/esm/adaptors/axios.d.ts +2 -2
  71. package/esm/adaptors/axios.js +1 -0
  72. package/esm/adaptors/axios.js.map +1 -1
  73. package/esm/adaptors/umi-request.d.ts +2 -2
  74. package/esm/adaptors/umi-request.js +1 -0
  75. package/esm/adaptors/umi-request.js.map +1 -1
  76. package/esm/controllers/aggregate.d.ts +25 -8
  77. package/esm/controllers/aggregate.js.map +1 -1
  78. package/esm/controllers/base.d.ts +17 -5
  79. package/esm/controllers/category.d.ts +64 -13
  80. package/esm/controllers/category.js.map +1 -1
  81. package/esm/controllers/comment.d.ts +42 -10
  82. package/esm/controllers/comment.js.map +1 -1
  83. package/esm/controllers/index.d.ts +4 -3
  84. package/esm/controllers/index.js +4 -1
  85. package/esm/controllers/index.js.map +1 -1
  86. package/esm/controllers/link.d.ts +5 -4
  87. package/esm/controllers/link.js.map +1 -1
  88. package/esm/controllers/note.d.ts +42 -12
  89. package/esm/controllers/note.js.map +1 -1
  90. package/esm/controllers/page.d.ts +22 -8
  91. package/esm/controllers/page.js.map +1 -1
  92. package/esm/controllers/post.d.ts +24 -11
  93. package/esm/controllers/post.js.map +1 -1
  94. package/esm/controllers/project.d.ts +4 -3
  95. package/esm/controllers/project.js.map +1 -1
  96. package/esm/controllers/recently.d.ts +30 -8
  97. package/esm/controllers/recently.js.map +1 -1
  98. package/esm/controllers/say.d.ts +15 -5
  99. package/esm/controllers/say.js.map +1 -1
  100. package/esm/controllers/search.d.ts +168 -9
  101. package/esm/controllers/search.js.map +1 -1
  102. package/esm/controllers/severless.d.ts +24 -0
  103. package/esm/controllers/severless.js +16 -0
  104. package/esm/controllers/severless.js.map +1 -0
  105. package/esm/controllers/snippet.d.ts +17 -7
  106. package/esm/controllers/snippet.js.map +1 -1
  107. package/esm/controllers/user.d.ts +28 -8
  108. package/esm/controllers/user.js.map +1 -1
  109. package/esm/core/attach-request.d.ts +1 -1
  110. package/esm/core/attach-request.js.map +1 -1
  111. package/esm/core/client.d.ts +9 -6
  112. package/esm/core/client.js +13 -32
  113. package/esm/core/client.js.map +1 -1
  114. package/esm/index.d.ts +2 -1
  115. package/esm/index.js +1 -1
  116. package/esm/index.js.map +1 -1
  117. package/esm/interfaces/adapter.d.ts +9 -8
  118. package/esm/interfaces/client.d.ts +1 -1
  119. package/esm/interfaces/request.d.ts +22 -13
  120. package/esm/interfaces/types.d.ts +2 -0
  121. package/esm/interfaces/types.js +2 -0
  122. package/esm/interfaces/types.js.map +1 -0
  123. package/esm/models/post.d.ts +0 -1
  124. package/index.ts +2 -1
  125. package/interfaces/adapter.ts +29 -24
  126. package/interfaces/client.ts +1 -1
  127. package/interfaces/request.ts +45 -20
  128. package/{types/helper.d.ts → interfaces/types.ts} +0 -0
  129. package/lib/adaptors/axios.d.ts +2 -2
  130. package/lib/adaptors/axios.js +1 -0
  131. package/lib/adaptors/axios.js.map +1 -1
  132. package/lib/adaptors/umi-request.d.ts +2 -2
  133. package/lib/adaptors/umi-request.js +1 -0
  134. package/lib/adaptors/umi-request.js.map +1 -1
  135. package/lib/controllers/aggregate.d.ts +25 -8
  136. package/lib/controllers/aggregate.js.map +1 -1
  137. package/lib/controllers/base.d.ts +17 -5
  138. package/lib/controllers/category.d.ts +64 -13
  139. package/lib/controllers/category.js.map +1 -1
  140. package/lib/controllers/comment.d.ts +42 -10
  141. package/lib/controllers/comment.js.map +1 -1
  142. package/lib/controllers/index.d.ts +4 -3
  143. package/lib/controllers/index.js +5 -1
  144. package/lib/controllers/index.js.map +1 -1
  145. package/lib/controllers/link.d.ts +5 -4
  146. package/lib/controllers/link.js.map +1 -1
  147. package/lib/controllers/note.d.ts +42 -12
  148. package/lib/controllers/note.js.map +1 -1
  149. package/lib/controllers/page.d.ts +22 -8
  150. package/lib/controllers/page.js.map +1 -1
  151. package/lib/controllers/post.d.ts +24 -11
  152. package/lib/controllers/post.js.map +1 -1
  153. package/lib/controllers/project.d.ts +4 -3
  154. package/lib/controllers/project.js.map +1 -1
  155. package/lib/controllers/recently.d.ts +30 -8
  156. package/lib/controllers/recently.js.map +1 -1
  157. package/lib/controllers/say.d.ts +15 -5
  158. package/lib/controllers/say.js.map +1 -1
  159. package/lib/controllers/search.d.ts +168 -9
  160. package/lib/controllers/search.js.map +1 -1
  161. package/lib/controllers/severless.d.ts +24 -0
  162. package/lib/controllers/severless.js +20 -0
  163. package/lib/controllers/severless.js.map +1 -0
  164. package/lib/controllers/snippet.d.ts +17 -7
  165. package/lib/controllers/snippet.js.map +1 -1
  166. package/lib/controllers/user.d.ts +28 -8
  167. package/lib/controllers/user.js.map +1 -1
  168. package/lib/core/attach-request.d.ts +1 -1
  169. package/lib/core/attach-request.js.map +1 -1
  170. package/lib/core/client.d.ts +9 -6
  171. package/lib/core/client.js +13 -33
  172. package/lib/core/client.js.map +1 -1
  173. package/lib/core/index.js +5 -1
  174. package/lib/core/index.js.map +1 -1
  175. package/lib/index.d.ts +2 -1
  176. package/lib/index.js +6 -3
  177. package/lib/index.js.map +1 -1
  178. package/lib/interfaces/adapter.d.ts +9 -8
  179. package/lib/interfaces/client.d.ts +1 -1
  180. package/lib/interfaces/request.d.ts +22 -13
  181. package/lib/interfaces/types.d.ts +2 -0
  182. package/lib/interfaces/types.js +3 -0
  183. package/lib/interfaces/types.js.map +1 -0
  184. package/lib/models/index.js +5 -1
  185. package/lib/models/index.js.map +1 -1
  186. package/lib/models/post.d.ts +0 -1
  187. package/models/post.ts +0 -1
  188. package/package.json +12 -12
  189. package/tsconfig.json +25 -4
  190. package/tsconfig.types.json +18 -0
  191. package/types/adaptors/axios.d.ts +3 -0
  192. package/types/adaptors/umi-request.d.ts +3 -0
  193. package/types/controllers/aggregate.d.ts +64 -0
  194. package/types/controllers/base.d.ts +39 -0
  195. package/types/controllers/category.d.ts +114 -0
  196. package/types/controllers/comment.d.ts +81 -0
  197. package/types/controllers/index.d.ts +17 -0
  198. package/types/controllers/link.d.ts +16 -0
  199. package/types/controllers/note.d.ts +94 -0
  200. package/types/controllers/page.d.ts +59 -0
  201. package/types/controllers/post.d.ts +72 -0
  202. package/types/controllers/project.d.ts +15 -0
  203. package/types/controllers/recently.d.ts +61 -0
  204. package/types/controllers/say.d.ts +37 -0
  205. package/types/controllers/search.d.ts +247 -0
  206. package/types/controllers/severless.d.ts +24 -0
  207. package/types/controllers/snippet.d.ts +33 -0
  208. package/types/controllers/user.d.ts +54 -0
  209. package/types/core/attach-request.d.ts +2 -0
  210. package/types/core/client.d.ts +29 -0
  211. package/types/core/error.d.ts +6 -0
  212. package/types/core/index.d.ts +2 -0
  213. package/types/dtos/comment.d.ts +6 -0
  214. package/types/index.d.ts +7 -0
  215. package/types/interfaces/adapter.d.ts +14 -0
  216. package/types/interfaces/client.d.ts +5 -0
  217. package/types/interfaces/controller.d.ts +4 -0
  218. package/types/interfaces/instance.d.ts +7 -0
  219. package/types/interfaces/options.d.ts +1 -0
  220. package/types/interfaces/params.d.ts +4 -0
  221. package/types/interfaces/request.d.ts +43 -0
  222. package/types/interfaces/types.d.ts +2 -0
  223. package/types/models/aggregate.d.ts +53 -0
  224. package/types/models/base.d.ts +37 -0
  225. package/types/models/category.d.ts +22 -0
  226. package/types/models/comment.d.ts +34 -0
  227. package/types/models/index.d.ts +14 -0
  228. package/types/models/link.d.ts +20 -0
  229. package/types/models/note.d.ts +30 -0
  230. package/types/models/page.d.ts +14 -0
  231. package/types/models/post.d.ts +14 -0
  232. package/types/models/project.d.ts +11 -0
  233. package/types/models/recently.d.ts +6 -0
  234. package/types/models/say.d.ts +6 -0
  235. package/types/models/setting.d.ts +66 -0
  236. package/types/models/snippet.d.ts +16 -0
  237. package/types/models/user.d.ts +21 -0
  238. package/types/utils/auto-bind.d.ts +4 -0
  239. package/types/utils/index.d.ts +5 -0
package/core/client.ts CHANGED
@@ -1,44 +1,27 @@
1
1
  import camelcaseKeys from 'camelcase-keys'
2
- import { IRequestAdapter } from '~/interfaces/adapter'
2
+ import {
3
+ IAdaptorRequestResponseType,
4
+ IRequestAdapter,
5
+ } from '~/interfaces/adapter'
3
6
  import { ClientOptions } from '~/interfaces/client'
4
7
  import { IController } from '~/interfaces/controller'
5
8
  import { RequestOptions } from '~/interfaces/instance'
6
9
  import { IRequestHandler, Method } from '~/interfaces/request'
7
- import { Class } from '~/types/helper'
10
+ import { Class } from '~/interfaces/types'
8
11
  import { isPlainObject } from '~/utils'
9
12
  import { allContollerNames } from '../controllers'
10
13
  import { attachRequestMethod } from './attach-request'
11
14
  import { RequestError } from './error'
12
15
 
13
- // export interface HTTPClient {
14
- // aggregate: AggregateController
15
- // category: CategoryController
16
- // comment: CommentController
17
- // link: LinkController
18
- // note: NoteController
19
- // page: PageController
20
- // post: PostController
21
- // project: ProjectController
22
- // recently: RecentlyController
23
- // say: SayController
24
- // search: SearchController
25
- // snippet: SnippetController
26
- // user: UserController
27
-
28
- // master: HTTPClient['user']
29
-
30
- // friend: HTTPClient['link']
31
-
32
- // shorthand: HTTPClient['recently']
33
- // }
34
-
35
16
  const methodPrefix = '_$'
36
-
37
- export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
38
- private _proxy: IRequestHandler
17
+ export type { HTTPClient }
18
+ class HTTPClient<
19
+ T extends IRequestAdapter = IRequestAdapter,
20
+ ResponseWrapper = unknown,
21
+ > {
22
+ private _proxy: IRequestHandler<ResponseWrapper>
39
23
 
40
24
  constructor(private _endpoint: string, private _adaptor: T) {
41
- // super()
42
25
  this._endpoint = _endpoint
43
26
  .replace(/\/*$/, '')
44
27
  .replace('localhost', '127.0.0.1')
@@ -47,18 +30,6 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
47
30
  this.initGetClient()
48
31
 
49
32
  attachRequestMethod(this)
50
-
51
- // const proxy = new Proxy(this, {
52
- // get(target, key, r) {
53
- // return (
54
- // Reflect.get(target, key, r) ||
55
- // (typeof key === 'string' &&
56
- // Reflect.get(target, methodPrefix + key, r))
57
- // )
58
- // },
59
- // })
60
-
61
- // return proxy
62
33
  }
63
34
 
64
35
  private initGetClient() {
@@ -125,7 +96,7 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
125
96
  return (this as any)['$$' + String(options.method || 'get').toLowerCase()](
126
97
  options.url,
127
98
  options,
128
- )
99
+ ) as Promise<IAdaptorRequestResponseType<any>>
129
100
  }
130
101
 
131
102
  public get proxy() {
@@ -139,7 +110,7 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
139
110
  return `${this.endpoint}${path}`
140
111
  }
141
112
 
142
- private buildRoute(manager: this): () => IRequestHandler {
113
+ private buildRoute(manager: this): () => IRequestHandler<ResponseWrapper> {
143
114
  // eslint-disable-next-line @typescript-eslint/no-empty-function
144
115
  const noop = () => {}
145
116
  const methods = ['get', 'post', 'delete', 'patch', 'put']
@@ -149,7 +120,6 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
149
120
  'inspect',
150
121
  'constructor',
151
122
  Symbol.toPrimitive,
152
- Symbol.for('util.inspect.custom'),
153
123
  ]
154
124
  // eslint-disable-next-line @typescript-eslint/no-this-alias
155
125
  const that = this
@@ -159,12 +129,23 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
159
129
 
160
130
  const handler: any = {
161
131
  get(target: any, name: Method) {
162
- if (reflectors.includes(name)) return () => route.join('/')
132
+ if (reflectors.includes(name))
133
+ return (withBase?: boolean) => {
134
+ if (withBase) {
135
+ const path = that.resolveFullPath(route.join('/'))
136
+ route.length = 0
137
+ return path
138
+ } else {
139
+ const path = route.join('/')
140
+ route.length = 0
141
+ return path.startsWith('/') ? path : '/' + path
142
+ }
143
+ }
163
144
  if (methods.includes(name)) {
164
145
  return async (options: RequestOptions) => {
165
146
  const url = that.resolveFullPath(route.join('/'))
166
147
  route.length = 0
167
- let res: any
148
+ let res: Record<string, any> & { data: any }
168
149
  try {
169
150
  res = await manager.request({
170
151
  method: name,
@@ -238,8 +219,17 @@ export class HTTPClient<T extends IRequestAdapter = IRequestAdapter> {
238
219
  }
239
220
 
240
221
  export function createClient<T extends IRequestAdapter>(adapter: T) {
241
- return (endpoint: string, options?: ClientOptions) => {
242
- const client = new HTTPClient(endpoint, adapter)
222
+ return <
223
+ ResponseWrapper = T extends { responseWrapper: infer Type }
224
+ ? Type extends undefined
225
+ ? unknown
226
+ : Type
227
+ : unknown,
228
+ >(
229
+ endpoint: string,
230
+ options?: ClientOptions,
231
+ ) => {
232
+ const client = new HTTPClient<T, ResponseWrapper>(endpoint, adapter)
243
233
  const { controllers } = options || {}
244
234
  if (controllers) {
245
235
  client.injectControllers(controllers)