jmash-core-mp 0.1.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.
Files changed (58) hide show
  1. package/.editorconfig +9 -0
  2. package/README.md +49 -0
  3. package/babel.config.json +34 -0
  4. package/eslint.config.mjs +7 -0
  5. package/mpx.config.js +27 -0
  6. package/package.json +69 -0
  7. package/postcss.config.js +11 -0
  8. package/project.config.json +25 -0
  9. package/project.private.config.json +14 -0
  10. package/public/index.html +15 -0
  11. package/src/api/auth/index.ts +166 -0
  12. package/src/api/auth/types.ts +115 -0
  13. package/src/api/cms/index.ts +58 -0
  14. package/src/api/cms/types.ts +137 -0
  15. package/src/api/constant.ts +6 -0
  16. package/src/api/dict/index.ts +44 -0
  17. package/src/api/dict/types.ts +50 -0
  18. package/src/api/dicts.ts +72 -0
  19. package/src/api/files/index.ts +177 -0
  20. package/src/api/files/types.ts +68 -0
  21. package/src/api/index.ts +11 -0
  22. package/src/api/myorgan/index.ts +0 -0
  23. package/src/api/myorgan/types.ts +43 -0
  24. package/src/app.mpx +62 -0
  25. package/src/components/auth-user/jmash-update-user/index.mpx +31 -0
  26. package/src/components/auth-user/jmash-user.mpx +119 -0
  27. package/src/components/common/auth-avatar/avatar-edit/index.mpx +31 -0
  28. package/src/components/common/auth-search/index.mpx +31 -0
  29. package/src/components/common/jmash-tab-bar.mpx +50 -0
  30. package/src/components/core/jmash-cms-protocol.mpx +67 -0
  31. package/src/components/core/jmash-login.mpx +343 -0
  32. package/src/components/core/jmash-popup-login.mpx +414 -0
  33. package/src/custom-tab-bar/index.mpx +11 -0
  34. package/src/global.d.ts +4 -0
  35. package/src/index.ts +9 -0
  36. package/src/packages/index.mpx +8 -0
  37. package/src/packages/pages/auth/cms-protocol.mpx +31 -0
  38. package/src/packages/pages/auth/login.mpx +53 -0
  39. package/src/pages/basic-component.mpx +31 -0
  40. package/src/pages/half-home.mpx +58 -0
  41. package/src/pages/home.mpx +38 -0
  42. package/src/pages/index.mpx +45 -0
  43. package/src/pages/tabbar/home.mpx +69 -0
  44. package/src/pages/tabbar/my.mpx +40 -0
  45. package/src/stores/setup.js +15 -0
  46. package/src/styles/index.scss +27 -0
  47. package/src/types/core.ts +41 -0
  48. package/src/utils/auth.ts +270 -0
  49. package/src/utils/config.ts +31 -0
  50. package/src/utils/db.ts +100 -0
  51. package/src/utils/grpc.ts +21 -0
  52. package/src/utils/request.ts +123 -0
  53. package/static/ali/mini.project.json +4 -0
  54. package/static/dd/project.config.json +15 -0
  55. package/static/swan/project.swan.json +14 -0
  56. package/static/tt/project.config.json +11 -0
  57. package/static/wx/project.config.json +41 -0
  58. package/uno.config.js +9 -0
package/.editorconfig ADDED
@@ -0,0 +1,9 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
package/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # jmash-core-mp
2
+
3
+ 采用 MPX 构建的 Jmash 高性能跨端小程序。
4
+ https://mpxjs.cn/
5
+
6
+ ## Project setup
7
+
8
+ ```javascript
9
+ // 开发构建,默认输出微信小程序
10
+ npm run serve
11
+
12
+ // 开发构建,跨平台输出支付宝小程序
13
+ npm run serve:ali
14
+
15
+ // 开发构建,跨平台输出 Web
16
+ npm run serve:web
17
+
18
+ // 开发构建,跨平台输出其他平台小程序target = swan|tt|qq|jd|ks
19
+ npm run serve -- --targets={target}
20
+
21
+ // 开发构建,同时输出多平台产物
22
+ npm run serve -- --targets=wx,ali,web
23
+
24
+ // 生产构建,默认输出微信小程序
25
+ npm run build
26
+
27
+ // 生产构建,跨平台输出
28
+ npm run build:ali
29
+ npm run build:web
30
+ npm run build -- --targets=wx,ali,web
31
+ ```
32
+
33
+ # ALi 小程序
34
+
35
+ 登录
36
+ minidev login
37
+ 预览
38
+ minidev preview --app-id 2021006137629651
39
+
40
+ rm -rf .cache
41
+
42
+ # pnpm publish --no-git-checks
43
+
44
+ 官方镜像
45
+ npm config set registry https://registry.npmjs.org/
46
+ 国内镜像
47
+ npm config set registry https://registry.npmmirror.com/
48
+ 代理镜像
49
+ npm config set registry https://npm.crenjoy.com/
@@ -0,0 +1,34 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ "modules": false,
7
+ "shippedProposals": true
8
+ }
9
+ ],
10
+ ],
11
+ "plugins": [
12
+ [
13
+ "@babel/transform-runtime",
14
+ {
15
+ "corejs": 3,
16
+ "version": "^7.10.4"
17
+ }
18
+ ],
19
+ "@mpxjs/babel-plugin-inject-page-events",
20
+ ],
21
+ "sourceType": "unambiguous",
22
+ "env": {
23
+ "test": {
24
+ "presets": [
25
+ [
26
+ "@babel/env",
27
+ {
28
+ "shippedProposals": true
29
+ }
30
+ ]
31
+ ]
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,7 @@
1
+ import { mpxConfig } from '@mpxjs/eslint-config'
2
+ export default mpxConfig(
3
+ {
4
+ mpx: true,
5
+ typescript: true
6
+ }
7
+ )
package/mpx.config.js ADDED
@@ -0,0 +1,27 @@
1
+ const { defineConfig } = require("@vue/cli-service");
2
+ module.exports = defineConfig({
3
+ outputDir: `dist/${process.env.MPX_CURRENT_TARGET_MODE}`,
4
+ transpileDependencies: ["@mpxjs/mpx-cube-ui"],
5
+ pluginOptions: {
6
+ mpx: {
7
+ plugin: {
8
+ srcMode: "wx",
9
+ hackResolveBuildDependencies: ({ files, resolveDependencies }) => {
10
+ const path = require("path");
11
+ const packageJSONPath = path.resolve("package.json");
12
+ if (files.has(packageJSONPath)) files.delete(packageJSONPath);
13
+ if (resolveDependencies.files.has(packageJSONPath)) {
14
+ resolveDependencies.files.delete(packageJSONPath);
15
+ }
16
+ },
17
+ },
18
+ loader: {},
19
+ unocss: {},
20
+ },
21
+ },
22
+ /**
23
+ * 如果希望node_modules下的文件时对应的缓存可以失效,
24
+ * 可以将configureWebpack.snap.managedPaths修改为 []
25
+ */
26
+ configureWebpack(config) {},
27
+ });
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "jmash-core-mp",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "dependencies": {
6
+ "@mpxjs/api-proxy": "^2.10.19",
7
+ "@mpxjs/core": "^2.10.19",
8
+ "@mpxjs/fetch": "^2.10.19",
9
+ "@mpxjs/mpx-cube-ui": "^1.4.15",
10
+ "@mpxjs/pinia": "^2.10.18",
11
+ "@mpxjs/store": "^2.10.18",
12
+ "@mpxjs/utils": "^2.10.18",
13
+ "pinia": "^2.0.14",
14
+ "vue": "^2.7.0",
15
+ "vue-demi": "^0.14.6",
16
+ "vue-i18n": "^8.27.2",
17
+ "vue-i18n-bridge": "^9.2.2",
18
+ "vue-router": "^3.1.3"
19
+ },
20
+ "devDependencies": {
21
+ "@babel/core": "^7.10.4",
22
+ "@babel/plugin-transform-runtime": "^7.10.4",
23
+ "@babel/preset-env": "^7.10.4",
24
+ "@babel/runtime-corejs3": "^7.10.4",
25
+ "@mpxjs/babel-plugin-inject-page-events": "^2.9.0",
26
+ "@mpxjs/eslint-config": "^2.0.3",
27
+ "@mpxjs/miniprogram-simulate": "^1.4.17",
28
+ "@mpxjs/mpx-cli-service": "^2.0.0",
29
+ "@mpxjs/mpx-jest": "^0.0.32",
30
+ "@mpxjs/size-report": "^2.10.0",
31
+ "@mpxjs/unocss-base": "^2.9.0",
32
+ "@mpxjs/unocss-plugin": "^2.9.0",
33
+ "@mpxjs/vue-cli-plugin-mpx": "^2.0.0",
34
+ "@mpxjs/vue-cli-plugin-mpx-eslint": "^2.0.0",
35
+ "@mpxjs/vue-cli-plugin-mpx-typescript": "^2.0.0",
36
+ "@mpxjs/vue-cli-plugin-mpx-unit-test": "^2.0.0",
37
+ "@mpxjs/vue-cli-plugin-mpx-utility-first-css": "^2.0.0",
38
+ "@mpxjs/webpack-plugin": "^2.10.0",
39
+ "@types/jest": "^27.5.1",
40
+ "@vue/cli-service": "~5.0.0",
41
+ "autoprefixer": "^10.2.4",
42
+ "babel-jest": "^27.4.5",
43
+ "eslint": "^9.0.0",
44
+ "jest": "^27.4.5",
45
+ "postcss": "^8.2.6",
46
+ "process": "^0.11.10",
47
+ "sass": "^1.99.0",
48
+ "sass-loader": "^16.0.7",
49
+ "stylus": "^0.55.0",
50
+ "stylus-loader": "^6.1.0",
51
+ "ts-jest": "^27.1.2",
52
+ "typescript": "^4.1.3",
53
+ "webpack": "^5.43.0"
54
+ },
55
+ "browserslist": [
56
+ "ios >= 8",
57
+ "chrome >= 47"
58
+ ],
59
+ "scripts": {
60
+ "serve": "mpx-cli-service serve",
61
+ "build": "mpx-cli-service build",
62
+ "lint": "eslint --ext .js,.ts,.mpx src/",
63
+ "build:ali": "mpx-cli-service build --targets=ali",
64
+ "build:web": "mpx-cli-service build --targets=web",
65
+ "serve:ali": "mpx-cli-service serve --targets=ali",
66
+ "serve:web": "mpx-cli-service serve --targets=web",
67
+ "test": "jest test/components"
68
+ }
69
+ }
@@ -0,0 +1,11 @@
1
+ const autoprefixer = require('autoprefixer')
2
+ const RN = ['android', 'ios', 'harmony']
3
+ const isRN = RN.includes(
4
+ process.env.MPX_CURRENT_TARGET_MODE
5
+ )
6
+ // RN环境下去除postcss的autoprefix插件
7
+ module.exports = {
8
+ plugins: [
9
+ !isRN && autoprefixer({ remove: false })
10
+ ].filter(Boolean)
11
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "setting": {
3
+ "es6": true,
4
+ "postcss": true,
5
+ "minified": true,
6
+ "uglifyFileName": false,
7
+ "enhance": true,
8
+ "packNpmRelationList": [],
9
+ "babelSetting": {
10
+ "ignore": [],
11
+ "disablePlugins": [],
12
+ "outputPath": ""
13
+ },
14
+ "useCompilerPlugins": false,
15
+ "minifyWXML": true
16
+ },
17
+ "compileType": "miniprogram",
18
+ "simulatorPluginLibVersion": {},
19
+ "packOptions": {
20
+ "ignore": [],
21
+ "include": []
22
+ },
23
+ "appid": "wx2a8b3d689b8959eb",
24
+ "editorSetting": {}
25
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "libVersion": "3.15.2",
3
+ "projectname": "jmash-core-mp",
4
+ "setting": {
5
+ "urlCheck": true,
6
+ "coverView": true,
7
+ "lazyloadPlaceholderEnable": false,
8
+ "skylineRenderEnable": false,
9
+ "preloadBackgroundData": false,
10
+ "autoAudits": false,
11
+ "showShadowRootInWxmlPanel": true,
12
+ "compileHotReLoad": true
13
+ }
14
+ }
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport"
6
+ content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover">
7
+ <meta name="format-detection" content="telephone=no">
8
+ <meta name="x5-cache" content="disable">
9
+ <title></title>
10
+ </head>
11
+ <body>
12
+ <div id="app"></div>
13
+ <!-- built files will be auto injected -->
14
+ </body>
15
+ </html>
@@ -0,0 +1,166 @@
1
+ import { ResponseData } from "../../types/core";
2
+ import type {
3
+ LoginReq,
4
+ LoginRes,
5
+ RolesPerms,
6
+ TokenModel,
7
+ PhoneNumberReq,
8
+ UpdateUserReq,
9
+ UserInfoReq,
10
+ UserInfo,
11
+ } from "./types";
12
+ import { db } from "../../utils/db";
13
+ import { grpc } from "../../utils/grpc";
14
+ import { config } from "../../utils/config";
15
+ import mpx from "@mpxjs/core";
16
+
17
+ class AuthApi {
18
+ // 登录
19
+ miniappLogin(data: LoginReq): Promise<ResponseData<LoginRes>> {
20
+ return mpx.xfetch.fetch({
21
+ url: "/v1/front/rbac/miniapp_login/" + config.tenant,
22
+ method: "POST",
23
+ data,
24
+ header: { "content-type": "application/json" },
25
+ });
26
+ }
27
+ // 手机号注册登录
28
+ miniappPhoneNumber(data: PhoneNumberReq): Promise<ResponseData<LoginRes>> {
29
+ return mpx.xfetch.fetch({
30
+ url: "/v1/front/rbac/miniapp_phonenumber/" + config.tenant,
31
+ method: "POST",
32
+ data: data,
33
+ });
34
+ }
35
+ // 刷新token
36
+ refreshToken(): Promise<ResponseData<TokenModel>> {
37
+ return mpx.xfetch.fetch({
38
+ url: "/v1/front/rbac/auth/refresh_token",
39
+ method: "POST",
40
+ data: {
41
+ refreshToken: db.getRefreshToken(),
42
+ tenant: config.tenant,
43
+ clientId: config.appId,
44
+ },
45
+ header: { "content-type": "application/json" },
46
+ });
47
+ }
48
+
49
+ // 获取当前会话用户
50
+ userInfo(): Promise<ResponseData<UserInfo>> {
51
+ return mpx.xfetch.fetch({
52
+ url: "/v1/rbac/auth/user?tenant=" + config.tenant,
53
+ method: "GET",
54
+ });
55
+ }
56
+
57
+ // 当前用户角色权限
58
+ userRolesPerms(): Promise<ResponseData<RolesPerms>> {
59
+ return mpx.xfetch.fetch({
60
+ url: "/v1/rbac/auth/roles_perms?tenant=" + config.tenant,
61
+ method: "GET",
62
+ });
63
+ }
64
+ // 允许切换身份的用户列表
65
+ allowRunAsUser() {
66
+ return mpx.xfetch.fetch({
67
+ url: "/v1/rbac/auth/allow_run_as_user?tenant=" + config.tenant,
68
+ method: "GET",
69
+ });
70
+ }
71
+
72
+ // 运行某种身份
73
+ runAsUser(userId: string) {
74
+ const data = {
75
+ tenant: config.tenant,
76
+ userId: userId,
77
+ };
78
+ return mpx.xfetch.fetch({
79
+ url: "/v1/rbac/auth/run_as",
80
+ method: "POST",
81
+ data: data,
82
+ });
83
+ }
84
+ // 更新用户
85
+ updateUser(data: any) {
86
+ return mpx.xfetch.fetch({
87
+ url: "/v1/rbac/auth/user",
88
+ method: "PATCH",
89
+ data: data,
90
+ });
91
+ }
92
+
93
+ // 修改密码
94
+ updatePwd(encodeOldPwd: string, encodeNewPwd: string) {
95
+ const data = {
96
+ tenant: db.getUserTenant(),
97
+ encodeOldPwd: encodeOldPwd,
98
+ encodeNewPwd: encodeNewPwd,
99
+ };
100
+ return mpx.xfetch.fetch({
101
+ url: "/v1/rbac/auth/change_pwd",
102
+ method: "PATCH",
103
+ data: data,
104
+ });
105
+ }
106
+ // 部门Tree
107
+ deptTree(deptId?: string, tenant?: string) {
108
+ const query = {
109
+ tenant: tenant ? tenant : config.tenant,
110
+ excludeId: deptId,
111
+ };
112
+ return mpx.xfetch.fetch({
113
+ url: "/v1/rbac/dept/treelist",
114
+ method: "GET",
115
+ data: query,
116
+ });
117
+ }
118
+
119
+ // 职务Tree
120
+ jobTree(jobId?: string, tenant?: string) {
121
+ const query = {
122
+ tenant: tenant ? tenant : config.tenant,
123
+ roleType: "job",
124
+ hasRoleType: true,
125
+ excludeId: jobId,
126
+ };
127
+ return mpx.xfetch.fetch({
128
+ url: "/v1/rbac/role/treelist",
129
+ method: "GET",
130
+ data: query,
131
+ });
132
+ }
133
+ // 修改个人信息
134
+ updateUserInfo(data: UpdateUserReq): Promise<ResponseData<UserInfo>> {
135
+ data.tenant = config.tenant;
136
+ grpc.clearEmpty(data);
137
+ return mpx.xfetch.fetch({
138
+ url: "/v1/rbac/auth/user",
139
+ method: "PATCH",
140
+ data: data,
141
+ });
142
+ }
143
+
144
+ // 已登陆状态小程序更换绑定手机号
145
+ replaceBindphone(data: PhoneNumberReq): Promise<ResponseData<string>> {
146
+ data.tenant = config.tenant;
147
+ grpc.clearEmpty(data);
148
+ return mpx.xfetch.fetch({
149
+ url: "/v1/front/rbac/miniapp_bindphone",
150
+ method: "POST",
151
+ data: data,
152
+ });
153
+ }
154
+
155
+ // 获取当前会话用户的信息
156
+ findUserInfo(data: UserInfoReq): Promise<ResponseData<UserInfo>> {
157
+ data.tenant = config.tenant;
158
+ return mpx.xfetch.fetch({
159
+ url: "/v1/front/rbac/auth/user",
160
+ method: "GET",
161
+ data,
162
+ });
163
+ }
164
+ }
165
+
166
+ export const authApi = new AuthApi();
@@ -0,0 +1,115 @@
1
+ // Token 响应实体
2
+ export interface TokenModel {
3
+ // 访问token
4
+ accessToken: string;
5
+ // 过期时间(单位:毫秒)
6
+ expiresIn: number;
7
+ // 刷新token
8
+ refreshToken: string;
9
+ // token 类型
10
+ tokenType: string;
11
+ }
12
+
13
+ // 登录接口传参定义
14
+ export interface LoginReq {
15
+ // 小程序APPID
16
+ appId: string;
17
+ // 登录码
18
+ loginCode: string;
19
+ // 小程序托管微信第三方平台(可选)
20
+ componentAppid?: string;
21
+ }
22
+
23
+ // 登录接口接收参数定义
24
+ export interface LoginRes {
25
+ // 缓存键
26
+ cacheKey: string;
27
+ // token
28
+ token: TokenModel;
29
+ // 状态
30
+ status: boolean;
31
+ // 信息
32
+ message: string;
33
+ }
34
+
35
+ // 获取手机号定义
36
+ export interface PhoneNumberReq {
37
+ // 租户
38
+ tenant?: string;
39
+ // 小程序APPID
40
+ appId: string;
41
+ // 登录码
42
+ loginCode?: string;
43
+ // 获取手机号码
44
+ phoneCode: string;
45
+ // 昵称
46
+ nickName?: string;
47
+ // 小程序托管微信第三方平台(可选)
48
+ componentAppid?: string;
49
+ }
50
+
51
+ // 刷新token
52
+ export interface RefreshTokenReq {
53
+ // 租户
54
+ tenant: string;
55
+ // 刷新Token
56
+ refreshToken: string;
57
+ // 客户ID
58
+ clientId: string;
59
+ }
60
+
61
+ // 登录用户信息
62
+ export interface UserInfo {
63
+ // 用户ID
64
+ userId: string;
65
+ // 用户名
66
+ loginName: string;
67
+ // 昵称
68
+ nickName: string;
69
+ // 真实姓名
70
+ realName: string;
71
+ // 头像
72
+ avatar: string;
73
+ // 手机号
74
+ mobilePhone: string;
75
+ // 手机号加密
76
+ mobilePhoneIns: string;
77
+ // 用户租户
78
+ storage: string;
79
+ // 推荐人ID
80
+ unifiedId: string;
81
+ }
82
+
83
+ // 角色权限
84
+ export interface RolesPerms {
85
+ // 角色数组
86
+ roleCodes: string[];
87
+ // 权限数组
88
+ permCodes: string[];
89
+ }
90
+
91
+ // 修改个人信息请求
92
+ export interface UpdateUserReq {
93
+ // 租户
94
+ tenant?: string;
95
+ // 请求ID
96
+ requestId?: string;
97
+ // 掩码
98
+ updateMask?: string;
99
+ // 昵称
100
+ nickName?: string;
101
+ // 头像
102
+ avatar?: string;
103
+ // 姓名
104
+ realName?: string;
105
+ // 性别
106
+ gender?: string;
107
+ // 出生日期
108
+ birthDate?: string;
109
+ }
110
+
111
+ // 用户信息请求
112
+ export interface UserInfoReq {
113
+ // 租户
114
+ tenant?: string;
115
+ }
@@ -0,0 +1,58 @@
1
+ import {
2
+ CmsSiteList,
3
+ CmsChannelReq,
4
+ CmsChannelList,
5
+ CmsContentInfoReq,
6
+ CmsContentInfoModel,
7
+ } from "./types";
8
+ import { ResponseData } from "../../types/core";
9
+ import { grpc } from "../../utils/grpc";
10
+ import { config } from "../../utils/config";
11
+ import mpx from "@mpxjs/core";
12
+ // 获取网站内容信息
13
+ class CmsApiImpl {
14
+ // 查询企业官网、微网站列表
15
+ findCmsSiteList(tenant: string): Promise<ResponseData<CmsSiteList>> {
16
+ return mpx.xfetch.fetch({
17
+ url: "/v1/front/cms/cms_site/list/" + tenant,
18
+ method: "GET",
19
+ });
20
+ }
21
+
22
+ // 查询列表信息网站栏目 (没有传递别名就是将所有的栏目信息查询出来,给了栏目别名查询传递别名的栏目信息)
23
+ findCmsChannelList(
24
+ data: CmsChannelReq
25
+ ): Promise<ResponseData<CmsChannelList>> {
26
+ grpc.clearEmpty(data);
27
+ if (data) {
28
+ data.hasStatus = data.status !== undefined;
29
+ data.hasIsOpen = data.isOpen !== undefined;
30
+ }
31
+ return mpx.xfetch.fetch({
32
+ url: "/v1/front/cms/cms_channel/list/" + data.tenant,
33
+ method: "GET",
34
+ data,
35
+ });
36
+ }
37
+
38
+ // 根据栏目别名查询翻页信息信息主表-单页栏目内容
39
+ findCmsContentInfo(
40
+ data: CmsContentInfoReq
41
+ ): Promise<ResponseData<CmsContentInfoModel>> {
42
+ data.tenant = data.tenant || config.tenant;
43
+ grpc.clearEmpty(data);
44
+ return mpx.xfetch.fetch({
45
+ url:
46
+ "/v1/front/cms/cms_info/alias/" +
47
+ data.tenant +
48
+ "/" +
49
+ data.siteId +
50
+ "/" +
51
+ data.channelAlias,
52
+ method: "GET",
53
+ });
54
+ }
55
+ }
56
+
57
+ const cmsApi = new CmsApiImpl();
58
+ export { cmsApi };