@mx-space/api-client 1.0.0-beta.2 → 1.0.0
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/.eslintcache +1 -0
- package/__tests__/adaptors/axios.spec.ts +7 -0
- package/__tests__/adaptors/ky.spec.ts +9 -0
- package/__tests__/adaptors/umi-request.spec.ts +7 -0
- package/__tests__/contronllers/aggregate.test.ts +389 -0
- package/__tests__/contronllers/category.test.ts +284 -0
- package/__tests__/contronllers/comment.test.ts +113 -0
- package/__tests__/contronllers/link.test.ts +95 -0
- package/__tests__/contronllers/note.test.ts +120 -0
- package/__tests__/contronllers/page.test.ts +49 -0
- package/__tests__/contronllers/post.test.ts +77 -0
- package/__tests__/contronllers/recently.test.ts +49 -0
- package/__tests__/contronllers/say.test.ts +106 -0
- package/__tests__/contronllers/search.test.ts +81 -0
- package/__tests__/contronllers/serverless.test.ts +19 -0
- package/__tests__/contronllers/snippet.test.ts +38 -0
- package/__tests__/contronllers/topic.test.ts +17 -0
- package/__tests__/contronllers/user.test.ts +59 -0
- package/__tests__/core/client.test.ts +293 -0
- package/__tests__/helpers/adaptor-test.ts +108 -0
- package/__tests__/helpers/e2e-mock-server.ts +22 -0
- package/__tests__/helpers/global-fetch.ts +39 -0
- package/__tests__/helpers/instance.ts +11 -0
- package/__tests__/helpers/response.ts +76 -0
- package/__tests__/mock/algolia.json +446 -0
- package/__tests__/utils/auto-bind.spec.ts +27 -0
- package/__tests__/utils/camelcase-keys.spec.ts +86 -0
- package/__tests__/utils/index.test.ts +33 -0
- package/__tests__/utils/path.spec.ts +8 -0
- package/adaptors/axios.ts +44 -0
- package/adaptors/ky.ts +76 -0
- package/adaptors/umi-request.ts +38 -0
- package/controllers/aggregate.ts +6 -6
- package/controllers/base.ts +3 -3
- package/controllers/category.ts +7 -7
- package/controllers/comment.ts +8 -8
- package/controllers/link.ts +3 -3
- package/controllers/note.ts +15 -11
- package/controllers/page.ts +7 -7
- package/controllers/post.ts +9 -9
- package/controllers/project.ts +3 -3
- package/controllers/recently.ts +5 -5
- package/controllers/say.ts +5 -5
- package/controllers/search.ts +8 -8
- package/controllers/severless.ts +4 -4
- package/controllers/snippet.ts +4 -4
- package/controllers/topic.ts +5 -5
- package/controllers/user.ts +5 -5
- package/core/attach-request.ts +43 -0
- package/core/client.ts +252 -0
- package/core/error.ts +10 -0
- package/core/index.ts +2 -0
- package/coverage/lcov-report/__tests__/helpers/adaptor-test.ts.html +405 -0
- package/coverage/lcov-report/__tests__/helpers/e2e-mock-server.ts.html +150 -0
- package/coverage/lcov-report/__tests__/helpers/index.html +236 -0
- package/coverage/lcov-report/__tests__/helpers/instance.ts.html +120 -0
- package/coverage/lcov-report/__tests__/helpers/response.ts.html +231 -0
- package/dist/adaptors/axios.cjs.map +1 -1
- package/dist/adaptors/axios.d.ts +2 -2
- package/dist/adaptors/axios.js.map +1 -1
- package/dist/adaptors/axios.min.cjs.map +1 -1
- package/dist/adaptors/axios.min.js.map +1 -1
- package/dist/adaptors/axios.umd.js.map +1 -1
- package/dist/adaptors/axios.umd.min.js.map +1 -1
- package/dist/adaptors/ky.cjs.map +1 -1
- package/dist/adaptors/ky.d.ts +1 -1
- package/dist/adaptors/ky.js.map +1 -1
- package/dist/adaptors/ky.min.cjs +1 -1
- package/dist/adaptors/ky.min.cjs.map +1 -1
- package/dist/adaptors/ky.min.js +1 -1
- package/dist/adaptors/ky.min.js.map +1 -1
- package/dist/adaptors/ky.umd.js.map +1 -1
- package/dist/adaptors/ky.umd.min.js +1 -1
- package/dist/adaptors/ky.umd.min.js.map +1 -1
- package/dist/adaptors/umi-request.cjs.map +1 -1
- package/dist/adaptors/umi-request.d.ts +2 -2
- package/dist/adaptors/umi-request.js.map +1 -1
- package/dist/adaptors/umi-request.min.cjs.map +1 -1
- package/dist/adaptors/umi-request.min.js.map +1 -1
- package/dist/adaptors/umi-request.umd.js.map +1 -1
- package/dist/adaptors/umi-request.umd.min.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.min.cjs.map +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/index.ts +1 -0
- package/interfaces/adapter.ts +1 -1
- package/interfaces/client.ts +2 -2
- package/interfaces/request.ts +1 -1
- package/models/aggregate.ts +7 -7
- package/models/base.ts +4 -0
- package/models/category.ts +2 -2
- package/models/comment.ts +2 -2
- package/models/link.ts +1 -1
- package/models/note.ts +8 -2
- package/models/page.ts +1 -1
- package/models/post.ts +2 -2
- package/models/project.ts +1 -1
- package/models/recently.ts +5 -10
- package/models/say.ts +1 -1
- package/models/snippet.ts +1 -1
- package/models/topic.ts +1 -1
- package/models/user.ts +1 -1
- package/package.json +9 -29
- package/rollup.config.js +150 -0
- package/utils/auto-bind.ts +48 -0
- package/utils/camelcase-keys.ts +26 -0
- package/utils/index.ts +53 -0
- package/utils/path.ts +6 -0
- package/build/index.cjs.js +0 -980
- package/build/index.cjs.js.map +0 -1
- package/build/index.cjs.min.js +0 -2
- package/build/index.cjs.min.js.map +0 -1
- package/build/index.esm.min.mjs +0 -2
- package/build/index.esm.min.mjs.map +0 -1
- package/build/index.esm.mjs +0 -958
- package/build/index.esm.mjs.map +0 -1
- package/build/index.umd.js +0 -986
- package/build/index.umd.js.map +0 -1
- package/build/index.umd.min.js +0 -2
- package/build/index.umd.min.js.map +0 -1
- package/esm/adaptors/axios.d.ts +0 -4
- package/esm/adaptors/axios.js +0 -36
- package/esm/adaptors/axios.js.map +0 -1
- package/esm/adaptors/ky.d.ts +0 -23
- package/esm/adaptors/ky.js +0 -61
- package/esm/adaptors/ky.js.map +0 -1
- package/esm/adaptors/umi-request.d.ts +0 -4
- package/esm/adaptors/umi-request.js +0 -30
- package/esm/adaptors/umi-request.js.map +0 -1
- package/esm/controllers/aggregate.d.ts +0 -64
- package/esm/controllers/aggregate.js +0 -42
- package/esm/controllers/aggregate.js.map +0 -1
- package/esm/controllers/base.d.ts +0 -43
- package/esm/controllers/base.js +0 -27
- package/esm/controllers/base.js.map +0 -1
- package/esm/controllers/category.d.ts +0 -115
- package/esm/controllers/category.js +0 -68
- package/esm/controllers/category.js.map +0 -1
- package/esm/controllers/comment.d.ts +0 -81
- package/esm/controllers/comment.js +0 -47
- package/esm/controllers/comment.js.map +0 -1
- package/esm/controllers/index.d.ts +0 -18
- package/esm/controllers/index.js +0 -55
- package/esm/controllers/index.js.map +0 -1
- package/esm/controllers/link.d.ts +0 -20
- package/esm/controllers/link.js +0 -21
- package/esm/controllers/link.js.map +0 -1
- package/esm/controllers/note.d.ts +0 -103
- package/esm/controllers/note.js +0 -68
- package/esm/controllers/note.js.map +0 -1
- package/esm/controllers/page.d.ts +0 -59
- package/esm/controllers/page.js +0 -42
- package/esm/controllers/page.js.map +0 -1
- package/esm/controllers/post.d.ts +0 -72
- package/esm/controllers/post.js +0 -52
- package/esm/controllers/post.js.map +0 -1
- package/esm/controllers/project.d.ts +0 -15
- package/esm/controllers/project.js +0 -12
- package/esm/controllers/project.js.map +0 -1
- package/esm/controllers/recently.d.ts +0 -61
- package/esm/controllers/recently.js +0 -31
- package/esm/controllers/recently.js.map +0 -1
- package/esm/controllers/say.d.ts +0 -37
- package/esm/controllers/say.js +0 -21
- package/esm/controllers/say.js.map +0 -1
- package/esm/controllers/search.d.ts +0 -247
- package/esm/controllers/search.js +0 -28
- package/esm/controllers/search.js.map +0 -1
- package/esm/controllers/severless.d.ts +0 -24
- package/esm/controllers/severless.js +0 -16
- package/esm/controllers/severless.js.map +0 -1
- package/esm/controllers/snippet.d.ts +0 -24
- package/esm/controllers/snippet.js +0 -19
- package/esm/controllers/snippet.js.map +0 -1
- package/esm/controllers/topic.d.ts +0 -26
- package/esm/controllers/topic.js +0 -18
- package/esm/controllers/topic.js.map +0 -1
- package/esm/controllers/user.d.ts +0 -70
- package/esm/controllers/user.js +0 -40
- package/esm/controllers/user.js.map +0 -1
- package/esm/core/attach-request.d.ts +0 -2
- package/esm/core/attach-request.js +0 -36
- package/esm/core/attach-request.js.map +0 -1
- package/esm/core/client.d.ts +0 -29
- package/esm/core/client.js +0 -186
- package/esm/core/client.js.map +0 -1
- package/esm/core/error.d.ts +0 -6
- package/esm/core/error.js +0 -9
- package/esm/core/error.js.map +0 -1
- package/esm/core/index.d.ts +0 -2
- package/esm/core/index.js +0 -3
- package/esm/core/index.js.map +0 -1
- package/esm/dtos/comment.d.ts +0 -6
- package/esm/dtos/comment.js +0 -3
- package/esm/dtos/comment.js.map +0 -1
- package/esm/index.d.ts +0 -7
- package/esm/index.js +0 -7
- package/esm/index.js.map +0 -1
- package/esm/interfaces/adapter.d.ts +0 -14
- package/esm/interfaces/adapter.js +0 -2
- package/esm/interfaces/adapter.js.map +0 -1
- package/esm/interfaces/client.d.ts +0 -13
- package/esm/interfaces/client.js +0 -2
- package/esm/interfaces/client.js.map +0 -1
- package/esm/interfaces/controller.d.ts +0 -4
- package/esm/interfaces/controller.js +0 -2
- package/esm/interfaces/controller.js.map +0 -1
- package/esm/interfaces/instance.d.ts +0 -7
- package/esm/interfaces/instance.js +0 -2
- package/esm/interfaces/instance.js.map +0 -1
- package/esm/interfaces/options.d.ts +0 -1
- package/esm/interfaces/options.js +0 -2
- package/esm/interfaces/options.js.map +0 -1
- package/esm/interfaces/params.d.ts +0 -4
- package/esm/interfaces/params.js +0 -2
- package/esm/interfaces/params.js.map +0 -1
- package/esm/interfaces/request.d.ts +0 -43
- package/esm/interfaces/request.js +0 -2
- package/esm/interfaces/request.js.map +0 -1
- package/esm/interfaces/types.d.ts +0 -2
- package/esm/interfaces/types.js +0 -2
- package/esm/interfaces/types.js.map +0 -1
- package/esm/models/aggregate.d.ts +0 -53
- package/esm/models/aggregate.js +0 -6
- package/esm/models/aggregate.js.map +0 -1
- package/esm/models/base.d.ts +0 -38
- package/esm/models/base.js +0 -2
- package/esm/models/base.js.map +0 -1
- package/esm/models/category.d.ts +0 -22
- package/esm/models/category.js +0 -6
- package/esm/models/category.js.map +0 -1
- package/esm/models/comment.d.ts +0 -37
- package/esm/models/comment.js +0 -13
- package/esm/models/comment.js.map +0 -1
- package/esm/models/index.d.ts +0 -14
- package/esm/models/index.js +0 -15
- package/esm/models/index.js.map +0 -1
- package/esm/models/link.d.ts +0 -22
- package/esm/models/link.js +0 -14
- package/esm/models/link.js.map +0 -1
- package/esm/models/note.d.ts +0 -33
- package/esm/models/note.js +0 -2
- package/esm/models/note.js.map +0 -1
- package/esm/models/page.d.ts +0 -14
- package/esm/models/page.js +0 -7
- package/esm/models/page.js.map +0 -1
- package/esm/models/post.d.ts +0 -17
- package/esm/models/post.js +0 -2
- package/esm/models/post.js.map +0 -1
- package/esm/models/project.d.ts +0 -11
- package/esm/models/project.js +0 -2
- package/esm/models/project.js.map +0 -1
- package/esm/models/recently.d.ts +0 -26
- package/esm/models/recently.js +0 -7
- package/esm/models/recently.js.map +0 -1
- package/esm/models/say.d.ts +0 -6
- package/esm/models/say.js +0 -2
- package/esm/models/say.js.map +0 -1
- package/esm/models/setting.d.ts +0 -66
- package/esm/models/setting.js +0 -2
- package/esm/models/setting.js.map +0 -1
- package/esm/models/snippet.d.ts +0 -18
- package/esm/models/snippet.js +0 -8
- package/esm/models/snippet.js.map +0 -1
- package/esm/models/topic.d.ts +0 -8
- package/esm/models/topic.js +0 -2
- package/esm/models/topic.js.map +0 -1
- package/esm/models/user.d.ts +0 -21
- package/esm/models/user.js +0 -2
- package/esm/models/user.js.map +0 -1
- package/esm/utils/auto-bind.d.ts +0 -4
- package/esm/utils/auto-bind.js +0 -36
- package/esm/utils/auto-bind.js.map +0 -1
- package/esm/utils/camelcase-keys.d.ts +0 -6
- package/esm/utils/camelcase-keys.js +0 -23
- package/esm/utils/camelcase-keys.js.map +0 -1
- package/esm/utils/index.d.ts +0 -5
- package/esm/utils/index.js +0 -43
- package/esm/utils/index.js.map +0 -1
- package/esm/utils/path.d.ts +0 -1
- package/esm/utils/path.js +0 -7
- package/esm/utils/path.js.map +0 -1
- package/esm/vitest.config.d.ts +0 -2
- package/esm/vitest.config.js +0 -12
- package/esm/vitest.config.js.map +0 -1
- package/lib/adaptors/axios.d.ts +0 -4
- package/lib/adaptors/axios.js +0 -42
- package/lib/adaptors/axios.js.map +0 -1
- package/lib/adaptors/ky.d.ts +0 -23
- package/lib/adaptors/ky.js +0 -68
- package/lib/adaptors/ky.js.map +0 -1
- package/lib/adaptors/umi-request.d.ts +0 -4
- package/lib/adaptors/umi-request.js +0 -33
- package/lib/adaptors/umi-request.js.map +0 -1
- package/lib/controllers/aggregate.d.ts +0 -64
- package/lib/controllers/aggregate.js +0 -46
- package/lib/controllers/aggregate.js.map +0 -1
- package/lib/controllers/base.d.ts +0 -43
- package/lib/controllers/base.js +0 -31
- package/lib/controllers/base.js.map +0 -1
- package/lib/controllers/category.d.ts +0 -115
- package/lib/controllers/category.js +0 -72
- package/lib/controllers/category.js.map +0 -1
- package/lib/controllers/comment.d.ts +0 -81
- package/lib/controllers/comment.js +0 -51
- package/lib/controllers/comment.js.map +0 -1
- package/lib/controllers/index.d.ts +0 -18
- package/lib/controllers/index.js +0 -72
- package/lib/controllers/index.js.map +0 -1
- package/lib/controllers/link.d.ts +0 -20
- package/lib/controllers/link.js +0 -25
- package/lib/controllers/link.js.map +0 -1
- package/lib/controllers/note.d.ts +0 -103
- package/lib/controllers/note.js +0 -72
- package/lib/controllers/note.js.map +0 -1
- package/lib/controllers/page.d.ts +0 -59
- package/lib/controllers/page.js +0 -46
- package/lib/controllers/page.js.map +0 -1
- package/lib/controllers/post.d.ts +0 -72
- package/lib/controllers/post.js +0 -56
- package/lib/controllers/post.js.map +0 -1
- package/lib/controllers/project.d.ts +0 -15
- package/lib/controllers/project.js +0 -16
- package/lib/controllers/project.js.map +0 -1
- package/lib/controllers/recently.d.ts +0 -61
- package/lib/controllers/recently.js +0 -35
- package/lib/controllers/recently.js.map +0 -1
- package/lib/controllers/say.d.ts +0 -37
- package/lib/controllers/say.js +0 -25
- package/lib/controllers/say.js.map +0 -1
- package/lib/controllers/search.d.ts +0 -247
- package/lib/controllers/search.js +0 -32
- package/lib/controllers/search.js.map +0 -1
- package/lib/controllers/severless.d.ts +0 -24
- package/lib/controllers/severless.js +0 -20
- package/lib/controllers/severless.js.map +0 -1
- package/lib/controllers/snippet.d.ts +0 -24
- package/lib/controllers/snippet.js +0 -23
- package/lib/controllers/snippet.js.map +0 -1
- package/lib/controllers/topic.d.ts +0 -26
- package/lib/controllers/topic.js +0 -22
- package/lib/controllers/topic.js.map +0 -1
- package/lib/controllers/user.d.ts +0 -70
- package/lib/controllers/user.js +0 -44
- package/lib/controllers/user.js.map +0 -1
- package/lib/core/attach-request.d.ts +0 -2
- package/lib/core/attach-request.js +0 -40
- package/lib/core/attach-request.js.map +0 -1
- package/lib/core/client.d.ts +0 -29
- package/lib/core/client.js +0 -190
- package/lib/core/client.js.map +0 -1
- package/lib/core/error.d.ts +0 -6
- package/lib/core/error.js +0 -13
- package/lib/core/error.js.map +0 -1
- package/lib/core/index.d.ts +0 -2
- package/lib/core/index.js +0 -19
- package/lib/core/index.js.map +0 -1
- package/lib/dtos/comment.d.ts +0 -6
- package/lib/dtos/comment.js +0 -7
- package/lib/dtos/comment.js.map +0 -1
- package/lib/index.d.ts +0 -7
- package/lib/index.js +0 -27
- package/lib/index.js.map +0 -1
- package/lib/interfaces/adapter.d.ts +0 -14
- package/lib/interfaces/adapter.js +0 -3
- package/lib/interfaces/adapter.js.map +0 -1
- package/lib/interfaces/client.d.ts +0 -13
- package/lib/interfaces/client.js +0 -3
- package/lib/interfaces/client.js.map +0 -1
- package/lib/interfaces/controller.d.ts +0 -4
- package/lib/interfaces/controller.js +0 -3
- package/lib/interfaces/controller.js.map +0 -1
- package/lib/interfaces/instance.d.ts +0 -7
- package/lib/interfaces/instance.js +0 -3
- package/lib/interfaces/instance.js.map +0 -1
- package/lib/interfaces/options.d.ts +0 -1
- package/lib/interfaces/options.js +0 -3
- package/lib/interfaces/options.js.map +0 -1
- package/lib/interfaces/params.d.ts +0 -4
- package/lib/interfaces/params.js +0 -3
- package/lib/interfaces/params.js.map +0 -1
- package/lib/interfaces/request.d.ts +0 -43
- package/lib/interfaces/request.js +0 -3
- package/lib/interfaces/request.js.map +0 -1
- package/lib/interfaces/types.d.ts +0 -2
- package/lib/interfaces/types.js +0 -3
- package/lib/interfaces/types.js.map +0 -1
- package/lib/models/aggregate.d.ts +0 -53
- package/lib/models/aggregate.js +0 -9
- package/lib/models/aggregate.js.map +0 -1
- package/lib/models/base.d.ts +0 -38
- package/lib/models/base.js +0 -3
- package/lib/models/base.js.map +0 -1
- package/lib/models/category.d.ts +0 -22
- package/lib/models/category.js +0 -9
- package/lib/models/category.js.map +0 -1
- package/lib/models/comment.d.ts +0 -37
- package/lib/models/comment.js +0 -16
- package/lib/models/comment.js.map +0 -1
- package/lib/models/index.d.ts +0 -14
- package/lib/models/index.js +0 -31
- package/lib/models/index.js.map +0 -1
- package/lib/models/link.d.ts +0 -22
- package/lib/models/link.js +0 -17
- package/lib/models/link.js.map +0 -1
- package/lib/models/note.d.ts +0 -33
- package/lib/models/note.js +0 -3
- package/lib/models/note.js.map +0 -1
- package/lib/models/page.d.ts +0 -14
- package/lib/models/page.js +0 -10
- package/lib/models/page.js.map +0 -1
- package/lib/models/post.d.ts +0 -17
- package/lib/models/post.js +0 -3
- package/lib/models/post.js.map +0 -1
- package/lib/models/project.d.ts +0 -11
- package/lib/models/project.js +0 -3
- package/lib/models/project.js.map +0 -1
- package/lib/models/recently.d.ts +0 -26
- package/lib/models/recently.js +0 -10
- package/lib/models/recently.js.map +0 -1
- package/lib/models/say.d.ts +0 -6
- package/lib/models/say.js +0 -3
- package/lib/models/say.js.map +0 -1
- package/lib/models/setting.d.ts +0 -66
- package/lib/models/setting.js +0 -3
- package/lib/models/setting.js.map +0 -1
- package/lib/models/snippet.d.ts +0 -18
- package/lib/models/snippet.js +0 -11
- package/lib/models/snippet.js.map +0 -1
- package/lib/models/topic.d.ts +0 -8
- package/lib/models/topic.js +0 -3
- package/lib/models/topic.js.map +0 -1
- package/lib/models/user.d.ts +0 -21
- package/lib/models/user.js +0 -3
- package/lib/models/user.js.map +0 -1
- package/lib/utils/auto-bind.d.ts +0 -4
- package/lib/utils/auto-bind.js +0 -40
- package/lib/utils/auto-bind.js.map +0 -1
- package/lib/utils/camelcase-keys.d.ts +0 -6
- package/lib/utils/camelcase-keys.js +0 -28
- package/lib/utils/camelcase-keys.js.map +0 -1
- package/lib/utils/index.d.ts +0 -5
- package/lib/utils/index.js +0 -50
- package/lib/utils/index.js.map +0 -1
- package/lib/utils/path.d.ts +0 -1
- package/lib/utils/path.js +0 -11
- package/lib/utils/path.js.map +0 -1
- package/lib/vitest.config.d.ts +0 -2
- package/lib/vitest.config.js +0 -17
- package/lib/vitest.config.js.map +0 -1
- package/types/adaptors/axios.d.ts +0 -4
- package/types/adaptors/ky.d.ts +0 -23
- package/types/adaptors/umi-request.d.ts +0 -4
- package/types/controllers/aggregate.d.ts +0 -64
- package/types/controllers/base.d.ts +0 -43
- package/types/controllers/category.d.ts +0 -115
- package/types/controllers/comment.d.ts +0 -81
- package/types/controllers/index.d.ts +0 -18
- package/types/controllers/link.d.ts +0 -20
- package/types/controllers/note.d.ts +0 -103
- package/types/controllers/page.d.ts +0 -59
- package/types/controllers/post.d.ts +0 -72
- package/types/controllers/project.d.ts +0 -15
- package/types/controllers/recently.d.ts +0 -61
- package/types/controllers/say.d.ts +0 -37
- package/types/controllers/search.d.ts +0 -247
- package/types/controllers/severless.d.ts +0 -24
- package/types/controllers/snippet.d.ts +0 -24
- package/types/controllers/topic.d.ts +0 -26
- package/types/controllers/user.d.ts +0 -70
- package/types/core/attach-request.d.ts +0 -2
- package/types/core/client.d.ts +0 -29
- package/types/core/error.d.ts +0 -6
- package/types/core/index.d.ts +0 -2
- package/types/dtos/comment.d.ts +0 -6
- package/types/index.d.ts +0 -7
- package/types/interfaces/adapter.d.ts +0 -14
- package/types/interfaces/client.d.ts +0 -13
- package/types/interfaces/controller.d.ts +0 -4
- package/types/interfaces/instance.d.ts +0 -7
- package/types/interfaces/options.d.ts +0 -1
- package/types/interfaces/params.d.ts +0 -4
- package/types/interfaces/request.d.ts +0 -43
- package/types/interfaces/types.d.ts +0 -2
- package/types/models/aggregate.d.ts +0 -53
- package/types/models/base.d.ts +0 -38
- package/types/models/category.d.ts +0 -22
- package/types/models/comment.d.ts +0 -37
- package/types/models/index.d.ts +0 -14
- package/types/models/link.d.ts +0 -22
- package/types/models/note.d.ts +0 -33
- package/types/models/page.d.ts +0 -14
- package/types/models/post.d.ts +0 -17
- package/types/models/project.d.ts +0 -11
- package/types/models/recently.d.ts +0 -26
- package/types/models/say.d.ts +0 -6
- package/types/models/setting.d.ts +0 -66
- package/types/models/snippet.d.ts +0 -18
- package/types/models/topic.d.ts +0 -8
- package/types/models/user.d.ts +0 -21
- package/types/utils/auto-bind.d.ts +0 -4
- package/types/utils/camelcase-keys.d.ts +0 -6
- package/types/utils/index.d.ts +0 -5
- package/types/utils/path.d.ts +0 -1
- package/types/vitest.config.d.ts +0 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HTTPClient } from '.'
|
|
2
|
+
|
|
3
|
+
export function attachRequestMethod<T extends HTTPClient<any, any>>(target: T) {
|
|
4
|
+
Object.defineProperty(target, '$$get', {
|
|
5
|
+
value(url: string, options?: any) {
|
|
6
|
+
// HINT: method get only accept search params;
|
|
7
|
+
const { params = {}, ...rest } = options
|
|
8
|
+
const qs = handleSearchParams(params)
|
|
9
|
+
|
|
10
|
+
return target.instance.get(`${url}${qs ? `${`?${qs}`}` : ''}`, rest)
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
;(['put', 'post', 'patch', 'delete'] as const).forEach((method) => {
|
|
14
|
+
Object.defineProperty(target, `$$${method}`, {
|
|
15
|
+
value(path: string, options?: any) {
|
|
16
|
+
return target.instance[method](path, options)
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
// FIXME: only support string value
|
|
22
|
+
function handleSearchParams(obj: URLSearchParams | Record<string, string>) {
|
|
23
|
+
if (!obj && typeof obj !== 'object') {
|
|
24
|
+
throw new TypeError('params must be object.')
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
if (obj instanceof URLSearchParams) {
|
|
28
|
+
return obj.toString()
|
|
29
|
+
}
|
|
30
|
+
const search = new URLSearchParams()
|
|
31
|
+
|
|
32
|
+
Object.entries<any>(obj).forEach(([k, v]) => {
|
|
33
|
+
if (
|
|
34
|
+
typeof v === 'undefined' ||
|
|
35
|
+
Object.prototype.toString.call(v) === '[object Null]'
|
|
36
|
+
) {
|
|
37
|
+
return
|
|
38
|
+
}
|
|
39
|
+
search.set(k, v)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
return search.toString()
|
|
43
|
+
}
|
package/core/client.ts
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IAdaptorRequestResponseType,
|
|
3
|
+
IRequestAdapter,
|
|
4
|
+
} from '~/interfaces/adapter'
|
|
5
|
+
import { ClientOptions } from '~/interfaces/client'
|
|
6
|
+
import { IController } from '~/interfaces/controller'
|
|
7
|
+
import { RequestOptions } from '~/interfaces/instance'
|
|
8
|
+
import { IRequestHandler, Method } from '~/interfaces/request'
|
|
9
|
+
import { Class } from '~/interfaces/types'
|
|
10
|
+
import { isPlainObject } from '~/utils'
|
|
11
|
+
import { camelcaseKeys } from '~/utils/camelcase-keys'
|
|
12
|
+
import { resolveFullPath } from '~/utils/path'
|
|
13
|
+
|
|
14
|
+
import { allContollerNames } from '../controllers'
|
|
15
|
+
import { attachRequestMethod } from './attach-request'
|
|
16
|
+
import { RequestError } from './error'
|
|
17
|
+
|
|
18
|
+
const methodPrefix = '_$'
|
|
19
|
+
export type { HTTPClient }
|
|
20
|
+
class HTTPClient<
|
|
21
|
+
T extends IRequestAdapter = IRequestAdapter,
|
|
22
|
+
ResponseWrapper = unknown,
|
|
23
|
+
> {
|
|
24
|
+
private readonly _proxy: IRequestHandler<ResponseWrapper>
|
|
25
|
+
|
|
26
|
+
constructor(
|
|
27
|
+
private readonly _endpoint: string,
|
|
28
|
+
private _adaptor: T,
|
|
29
|
+
private options: Omit<ClientOptions, 'controllers'> = {},
|
|
30
|
+
) {
|
|
31
|
+
this._endpoint = _endpoint
|
|
32
|
+
.replace(/\/*$/, '')
|
|
33
|
+
.replace('localhost', '127.0.0.1')
|
|
34
|
+
this._proxy = this.buildRoute(this)()
|
|
35
|
+
options.transformResponse =
|
|
36
|
+
options.transformResponse || ((data) => camelcaseKeys(data))
|
|
37
|
+
|
|
38
|
+
this.initGetClient()
|
|
39
|
+
|
|
40
|
+
attachRequestMethod(this)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private initGetClient() {
|
|
44
|
+
for (const name of allContollerNames) {
|
|
45
|
+
Object.defineProperty(this, name, {
|
|
46
|
+
get() {
|
|
47
|
+
const client = Reflect.get(this, `${methodPrefix}${name}`)
|
|
48
|
+
if (!client) {
|
|
49
|
+
throw new ReferenceError(
|
|
50
|
+
`${
|
|
51
|
+
name.charAt(0).toUpperCase() + name.slice(1)
|
|
52
|
+
} Client not inject yet, please inject with client.injectClients(...)`,
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
return client
|
|
56
|
+
},
|
|
57
|
+
configurable: false,
|
|
58
|
+
enumerable: false,
|
|
59
|
+
})
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public injectControllers(...Controller: Class<IController>[]): void
|
|
64
|
+
public injectControllers(Controller: Class<IController>[]): void
|
|
65
|
+
public injectControllers(Controller: any, ...rest: any[]) {
|
|
66
|
+
Controller = Array.isArray(Controller) ? Controller : [Controller, ...rest]
|
|
67
|
+
for (const Client of Controller) {
|
|
68
|
+
const cl = new Client(this)
|
|
69
|
+
|
|
70
|
+
if (Array.isArray(cl.name)) {
|
|
71
|
+
for (const name of cl.name) {
|
|
72
|
+
attach.call(this, name, cl)
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
attach.call(this, cl.name, cl)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function attach(this: any, name: string, cl: IController) {
|
|
80
|
+
Object.defineProperty(this, `${methodPrefix}${name.toLowerCase()}`, {
|
|
81
|
+
get() {
|
|
82
|
+
return cl
|
|
83
|
+
},
|
|
84
|
+
enumerable: false,
|
|
85
|
+
configurable: false,
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
get endpoint() {
|
|
91
|
+
return this._endpoint
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
get instance() {
|
|
95
|
+
return this._adaptor
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public request(options: {
|
|
99
|
+
url: string
|
|
100
|
+
method?: string
|
|
101
|
+
data?: any
|
|
102
|
+
params?: any
|
|
103
|
+
}) {
|
|
104
|
+
return (this as any)[`$$${String(options.method || 'get').toLowerCase()}`](
|
|
105
|
+
options.url,
|
|
106
|
+
options,
|
|
107
|
+
) as Promise<IAdaptorRequestResponseType<any>>
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public get proxy() {
|
|
111
|
+
return this._proxy
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private buildRoute(manager: this): () => IRequestHandler<ResponseWrapper> {
|
|
115
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
116
|
+
const noop = () => {}
|
|
117
|
+
const methods = ['get', 'post', 'delete', 'patch', 'put']
|
|
118
|
+
const reflectors = [
|
|
119
|
+
'toString',
|
|
120
|
+
'valueOf',
|
|
121
|
+
'inspect',
|
|
122
|
+
'constructor',
|
|
123
|
+
Symbol.toPrimitive,
|
|
124
|
+
]
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
126
|
+
const that = this
|
|
127
|
+
|
|
128
|
+
return () => {
|
|
129
|
+
const route = ['']
|
|
130
|
+
|
|
131
|
+
const handler: any = {
|
|
132
|
+
get(target: any, name: Method) {
|
|
133
|
+
if (reflectors.includes(name))
|
|
134
|
+
return (withBase?: boolean) => {
|
|
135
|
+
if (withBase) {
|
|
136
|
+
const path = resolveFullPath(that.endpoint, route.join('/'))
|
|
137
|
+
route.length = 0
|
|
138
|
+
return path
|
|
139
|
+
} else {
|
|
140
|
+
const path = route.join('/')
|
|
141
|
+
route.length = 0
|
|
142
|
+
return path.startsWith('/') ? path : `/${path}`
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (methods.includes(name)) {
|
|
146
|
+
return async (options: RequestOptions) => {
|
|
147
|
+
const url = resolveFullPath(that.endpoint, route.join('/'))
|
|
148
|
+
route.length = 0
|
|
149
|
+
let res: Record<string, any> & { data: any }
|
|
150
|
+
try {
|
|
151
|
+
res = await manager.request({
|
|
152
|
+
method: name,
|
|
153
|
+
...options,
|
|
154
|
+
url,
|
|
155
|
+
})
|
|
156
|
+
} catch (e: any) {
|
|
157
|
+
let message = e.message
|
|
158
|
+
let code =
|
|
159
|
+
e.code ||
|
|
160
|
+
e.status ||
|
|
161
|
+
e.statusCode ||
|
|
162
|
+
e.response?.status ||
|
|
163
|
+
e.response?.statusCode ||
|
|
164
|
+
e.response?.code ||
|
|
165
|
+
500
|
|
166
|
+
|
|
167
|
+
if (that.options.getCodeMessageFromException) {
|
|
168
|
+
const errorInfo = that.options.getCodeMessageFromException(e)
|
|
169
|
+
message = errorInfo.message || message
|
|
170
|
+
code = errorInfo.code || code
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
throw that.options.customThrowResponseError
|
|
174
|
+
? that.options.customThrowResponseError(e)
|
|
175
|
+
: new RequestError(message, code, url, e)
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const data = res.data
|
|
179
|
+
if (!data) {
|
|
180
|
+
return null
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const transform =
|
|
184
|
+
(Array.isArray(data) || isPlainObject(data)) &&
|
|
185
|
+
that.options.transformResponse
|
|
186
|
+
? that.options.transformResponse(data)
|
|
187
|
+
: data
|
|
188
|
+
|
|
189
|
+
if (transform && typeof transform === 'object') {
|
|
190
|
+
Object.defineProperty(transform, '$raw', {
|
|
191
|
+
get() {
|
|
192
|
+
return res
|
|
193
|
+
},
|
|
194
|
+
enumerable: false,
|
|
195
|
+
configurable: false,
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// attach request config onto response
|
|
199
|
+
|
|
200
|
+
Object.defineProperty(transform, '$request', {
|
|
201
|
+
get() {
|
|
202
|
+
return {
|
|
203
|
+
url,
|
|
204
|
+
method: name,
|
|
205
|
+
options,
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
enumerable: false,
|
|
209
|
+
})
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return transform
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
route.push(name)
|
|
216
|
+
return new Proxy(noop, handler)
|
|
217
|
+
},
|
|
218
|
+
// @ts-ignore
|
|
219
|
+
apply(target: any, _, args) {
|
|
220
|
+
route.push(...args.filter((x: string) => x !== null))
|
|
221
|
+
return new Proxy(noop, handler)
|
|
222
|
+
},
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return new Proxy(noop, handler) as any
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
export function createClient<T extends IRequestAdapter>(adapter: T) {
|
|
231
|
+
return <
|
|
232
|
+
ResponseWrapper = T extends { responseWrapper: infer Type }
|
|
233
|
+
? Type extends undefined
|
|
234
|
+
? unknown
|
|
235
|
+
: Type
|
|
236
|
+
: unknown,
|
|
237
|
+
>(
|
|
238
|
+
endpoint: string,
|
|
239
|
+
options?: ClientOptions,
|
|
240
|
+
) => {
|
|
241
|
+
const client = new HTTPClient<T, ResponseWrapper>(
|
|
242
|
+
endpoint,
|
|
243
|
+
adapter,
|
|
244
|
+
options,
|
|
245
|
+
)
|
|
246
|
+
const { controllers } = options || {}
|
|
247
|
+
if (controllers) {
|
|
248
|
+
client.injectControllers(controllers)
|
|
249
|
+
}
|
|
250
|
+
return client
|
|
251
|
+
}
|
|
252
|
+
}
|
package/core/error.ts
ADDED
package/core/index.ts
ADDED