@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.
- package/adaptors/axios.ts +34 -32
- package/adaptors/umi-request.ts +25 -22
- package/build/index.cjs.js +30 -32
- package/build/index.cjs.js.map +1 -1
- package/build/index.cjs.min.js +1 -1
- package/build/index.cjs.min.js.map +1 -1
- package/build/index.esm.js +30 -32
- package/build/index.esm.js.map +1 -1
- package/build/index.esm.min.js +1 -1
- package/build/index.esm.min.js.map +1 -1
- package/build/index.umd.js +30 -32
- package/build/index.umd.js.map +1 -1
- package/build/index.umd.min.js +1 -1
- package/build/index.umd.min.js.map +1 -1
- package/controllers/aggregate.ts +9 -5
- package/controllers/base.ts +3 -3
- package/controllers/category.ts +18 -7
- package/controllers/comment.ts +10 -6
- package/controllers/index.ts +4 -0
- package/controllers/link.ts +11 -4
- package/controllers/note.ts +11 -7
- package/controllers/page.ts +10 -5
- package/controllers/post.ts +15 -8
- package/controllers/project.ts +10 -3
- package/controllers/recently.ts +10 -5
- package/controllers/say.ts +10 -5
- package/controllers/search.ts +14 -7
- package/controllers/severless.ts +31 -0
- package/controllers/snippet.ts +11 -6
- package/controllers/user.ts +10 -5
- package/core/attach-request.ts +1 -1
- package/core/client.ts +37 -47
- package/coverage/clover.xml +357 -337
- package/coverage/coverage-final.json +27 -26
- package/coverage/lcov-report/adaptors/axios.ts.html +50 -44
- package/coverage/lcov-report/adaptors/index.html +24 -24
- package/coverage/lcov-report/adaptors/umi-request.ts.html +42 -33
- package/coverage/lcov-report/auto-bind.ts.html +229 -0
- package/coverage/lcov-report/controllers/aggregate.ts.html +23 -11
- package/coverage/lcov-report/controllers/base.ts.html +6 -6
- package/coverage/lcov-report/controllers/category.ts.html +48 -15
- package/coverage/lcov-report/controllers/comment.ts.html +23 -11
- package/coverage/lcov-report/controllers/index.html +26 -11
- package/coverage/lcov-report/controllers/index.ts.html +40 -28
- package/coverage/lcov-report/controllers/link.ts.html +31 -10
- package/coverage/lcov-report/controllers/note.ts.html +24 -12
- package/coverage/lcov-report/controllers/page.ts.html +25 -10
- package/coverage/lcov-report/controllers/post.ts.html +39 -18
- package/coverage/lcov-report/controllers/project.ts.html +30 -9
- package/coverage/lcov-report/controllers/recently.ts.html +25 -10
- package/coverage/lcov-report/controllers/say.ts.html +26 -11
- package/coverage/lcov-report/controllers/search.ts.html +33 -12
- package/coverage/lcov-report/controllers/severless.ts.html +178 -0
- package/coverage/lcov-report/controllers/snippet.ts.html +26 -11
- package/coverage/lcov-report/controllers/user.ts.html +25 -10
- package/coverage/lcov-report/core/attach-request.ts.html +14 -14
- package/coverage/lcov-report/core/client.ts.html +120 -150
- package/coverage/lcov-report/core/error.ts.html +2 -2
- package/coverage/lcov-report/core/index.html +18 -18
- package/coverage/lcov-report/core/index.ts.html +3 -3
- package/coverage/lcov-report/index.html +34 -34
- package/coverage/lcov-report/index.ts.html +244 -0
- package/coverage/lcov-report/models/aggregate.ts.html +1 -1
- package/coverage/lcov-report/models/category.ts.html +4 -4
- package/coverage/lcov-report/models/index.html +1 -1
- package/coverage/lcov-report/utils/auto-bind.ts.html +20 -20
- package/coverage/lcov-report/utils/index.html +1 -1
- package/coverage/lcov-report/utils/index.ts.html +7 -7
- package/coverage/lcov.info +615 -577
- package/esm/adaptors/axios.d.ts +2 -2
- package/esm/adaptors/axios.js +1 -0
- package/esm/adaptors/axios.js.map +1 -1
- package/esm/adaptors/umi-request.d.ts +2 -2
- package/esm/adaptors/umi-request.js +1 -0
- package/esm/adaptors/umi-request.js.map +1 -1
- package/esm/controllers/aggregate.d.ts +25 -8
- package/esm/controllers/aggregate.js.map +1 -1
- package/esm/controllers/base.d.ts +17 -5
- package/esm/controllers/category.d.ts +64 -13
- package/esm/controllers/category.js.map +1 -1
- package/esm/controllers/comment.d.ts +42 -10
- package/esm/controllers/comment.js.map +1 -1
- package/esm/controllers/index.d.ts +4 -3
- package/esm/controllers/index.js +4 -1
- package/esm/controllers/index.js.map +1 -1
- package/esm/controllers/link.d.ts +5 -4
- package/esm/controllers/link.js.map +1 -1
- package/esm/controllers/note.d.ts +42 -12
- package/esm/controllers/note.js.map +1 -1
- package/esm/controllers/page.d.ts +22 -8
- package/esm/controllers/page.js.map +1 -1
- package/esm/controllers/post.d.ts +24 -11
- package/esm/controllers/post.js.map +1 -1
- package/esm/controllers/project.d.ts +4 -3
- package/esm/controllers/project.js.map +1 -1
- package/esm/controllers/recently.d.ts +30 -8
- package/esm/controllers/recently.js.map +1 -1
- package/esm/controllers/say.d.ts +15 -5
- package/esm/controllers/say.js.map +1 -1
- package/esm/controllers/search.d.ts +168 -9
- package/esm/controllers/search.js.map +1 -1
- package/esm/controllers/severless.d.ts +24 -0
- package/esm/controllers/severless.js +16 -0
- package/esm/controllers/severless.js.map +1 -0
- package/esm/controllers/snippet.d.ts +17 -7
- package/esm/controllers/snippet.js.map +1 -1
- package/esm/controllers/user.d.ts +28 -8
- package/esm/controllers/user.js.map +1 -1
- package/esm/core/attach-request.d.ts +1 -1
- package/esm/core/attach-request.js.map +1 -1
- package/esm/core/client.d.ts +9 -6
- package/esm/core/client.js +13 -32
- package/esm/core/client.js.map +1 -1
- package/esm/index.d.ts +2 -1
- package/esm/index.js +1 -1
- package/esm/index.js.map +1 -1
- package/esm/interfaces/adapter.d.ts +9 -8
- package/esm/interfaces/client.d.ts +1 -1
- package/esm/interfaces/request.d.ts +22 -13
- package/esm/interfaces/types.d.ts +2 -0
- package/esm/interfaces/types.js +2 -0
- package/esm/interfaces/types.js.map +1 -0
- package/esm/models/post.d.ts +0 -1
- package/index.ts +2 -1
- package/interfaces/adapter.ts +29 -24
- package/interfaces/client.ts +1 -1
- package/interfaces/request.ts +45 -20
- package/{types/helper.d.ts → interfaces/types.ts} +0 -0
- package/lib/adaptors/axios.d.ts +2 -2
- package/lib/adaptors/axios.js +1 -0
- package/lib/adaptors/axios.js.map +1 -1
- package/lib/adaptors/umi-request.d.ts +2 -2
- package/lib/adaptors/umi-request.js +1 -0
- package/lib/adaptors/umi-request.js.map +1 -1
- package/lib/controllers/aggregate.d.ts +25 -8
- package/lib/controllers/aggregate.js.map +1 -1
- package/lib/controllers/base.d.ts +17 -5
- package/lib/controllers/category.d.ts +64 -13
- package/lib/controllers/category.js.map +1 -1
- package/lib/controllers/comment.d.ts +42 -10
- package/lib/controllers/comment.js.map +1 -1
- package/lib/controllers/index.d.ts +4 -3
- package/lib/controllers/index.js +5 -1
- package/lib/controllers/index.js.map +1 -1
- package/lib/controllers/link.d.ts +5 -4
- package/lib/controllers/link.js.map +1 -1
- package/lib/controllers/note.d.ts +42 -12
- package/lib/controllers/note.js.map +1 -1
- package/lib/controllers/page.d.ts +22 -8
- package/lib/controllers/page.js.map +1 -1
- package/lib/controllers/post.d.ts +24 -11
- package/lib/controllers/post.js.map +1 -1
- package/lib/controllers/project.d.ts +4 -3
- package/lib/controllers/project.js.map +1 -1
- package/lib/controllers/recently.d.ts +30 -8
- package/lib/controllers/recently.js.map +1 -1
- package/lib/controllers/say.d.ts +15 -5
- package/lib/controllers/say.js.map +1 -1
- package/lib/controllers/search.d.ts +168 -9
- package/lib/controllers/search.js.map +1 -1
- package/lib/controllers/severless.d.ts +24 -0
- package/lib/controllers/severless.js +20 -0
- package/lib/controllers/severless.js.map +1 -0
- package/lib/controllers/snippet.d.ts +17 -7
- package/lib/controllers/snippet.js.map +1 -1
- package/lib/controllers/user.d.ts +28 -8
- package/lib/controllers/user.js.map +1 -1
- package/lib/core/attach-request.d.ts +1 -1
- package/lib/core/attach-request.js.map +1 -1
- package/lib/core/client.d.ts +9 -6
- package/lib/core/client.js +13 -33
- package/lib/core/client.js.map +1 -1
- package/lib/core/index.js +5 -1
- package/lib/core/index.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -3
- package/lib/index.js.map +1 -1
- package/lib/interfaces/adapter.d.ts +9 -8
- package/lib/interfaces/client.d.ts +1 -1
- package/lib/interfaces/request.d.ts +22 -13
- package/lib/interfaces/types.d.ts +2 -0
- package/lib/interfaces/types.js +3 -0
- package/lib/interfaces/types.js.map +1 -0
- package/lib/models/index.js +5 -1
- package/lib/models/index.js.map +1 -1
- package/lib/models/post.d.ts +0 -1
- package/models/post.ts +0 -1
- package/package.json +12 -12
- package/tsconfig.json +25 -4
- package/tsconfig.types.json +18 -0
- package/types/adaptors/axios.d.ts +3 -0
- package/types/adaptors/umi-request.d.ts +3 -0
- package/types/controllers/aggregate.d.ts +64 -0
- package/types/controllers/base.d.ts +39 -0
- package/types/controllers/category.d.ts +114 -0
- package/types/controllers/comment.d.ts +81 -0
- package/types/controllers/index.d.ts +17 -0
- package/types/controllers/link.d.ts +16 -0
- package/types/controllers/note.d.ts +94 -0
- package/types/controllers/page.d.ts +59 -0
- package/types/controllers/post.d.ts +72 -0
- package/types/controllers/project.d.ts +15 -0
- package/types/controllers/recently.d.ts +61 -0
- package/types/controllers/say.d.ts +37 -0
- package/types/controllers/search.d.ts +247 -0
- package/types/controllers/severless.d.ts +24 -0
- package/types/controllers/snippet.d.ts +33 -0
- package/types/controllers/user.d.ts +54 -0
- package/types/core/attach-request.d.ts +2 -0
- package/types/core/client.d.ts +29 -0
- package/types/core/error.d.ts +6 -0
- package/types/core/index.d.ts +2 -0
- package/types/dtos/comment.d.ts +6 -0
- package/types/index.d.ts +7 -0
- package/types/interfaces/adapter.d.ts +14 -0
- package/types/interfaces/client.d.ts +5 -0
- package/types/interfaces/controller.d.ts +4 -0
- package/types/interfaces/instance.d.ts +7 -0
- package/types/interfaces/options.d.ts +1 -0
- package/types/interfaces/params.d.ts +4 -0
- package/types/interfaces/request.d.ts +43 -0
- package/types/interfaces/types.d.ts +2 -0
- package/types/models/aggregate.d.ts +53 -0
- package/types/models/base.d.ts +37 -0
- package/types/models/category.d.ts +22 -0
- package/types/models/comment.d.ts +34 -0
- package/types/models/index.d.ts +14 -0
- package/types/models/link.d.ts +20 -0
- package/types/models/note.d.ts +30 -0
- package/types/models/page.d.ts +14 -0
- package/types/models/post.d.ts +14 -0
- package/types/models/project.d.ts +11 -0
- package/types/models/recently.d.ts +6 -0
- package/types/models/say.d.ts +6 -0
- package/types/models/setting.d.ts +66 -0
- package/types/models/snippet.d.ts +16 -0
- package/types/models/user.d.ts +21 -0
- package/types/utils/auto-bind.d.ts +4 -0
- 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 {
|
|
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
|
|
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
|
-
|
|
38
|
-
|
|
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))
|
|
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
|
|
242
|
-
|
|
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)
|