icms-api 0.1.8 → 0.1.10
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/dist/icms-api.cjs.js +1 -1
- package/dist/icms-api.cjs.js.map +1 -1
- package/dist/icms-api.client.cjs.js +1 -1
- package/dist/icms-api.client.cjs.js.map +1 -1
- package/dist/icms-api.client.es.js +3 -0
- package/dist/icms-api.client.es.js.map +1 -1
- package/dist/icms-api.es.js +42 -41
- package/dist/icms-api.es.js.map +1 -1
- package/dist/icms-api.umd.js +1 -1
- package/dist/icms-api.umd.js.map +1 -1
- package/dist/types/client.d.ts +6 -0
- package/package.json +2 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={IBOOT_DEVICE_ID:`dvid`,IBOOT_LANG:`lang`,IBOOT_WEBSITE_ID:`wid`,IBOOT_WEBSITE_NO:`wno`,IBOOT_TOKEN:`token`,IBOOT_USER:`user`},t=`Content-Type`,n={applicationJson:`application/json`,multipartFormData:`multipart/form-data`,applicationXwwwFormUrlencoded:`application/x-www-form-urlencoded`};var r={info:(e,t)=>{process.env.NODE_ENV!==`production`&&console.info(t,e)},debug:(e,t)=>{process.env.NODE_ENV!==`production`&&console.debug(t,e)},error:e=>{console.error(e)}};const i=t=>{if(t.get){let n=t.get(e.IBOOT_USER);if(n&&n.length>0)return JSON.parse(n)}};var a=e=>`${process.env.BASE_URL||`/api/services`}?m=${e}`,o=async(e,t)=>{let n=a(e);if(t?.data){let e=new URLSearchParams(t.data);n+=`&${e}`}let i=t?.headers;r.info({url:n,headers:i},`GET`);let o=await fetch(n,{method:`GET`,headers:i,cache:t?.useCache?`force-cache`:`default`});if(o.ok){let e=Object.fromEntries(o.headers.entries()),t={...await o.json(),headers:e};return r.debug(t,`GET_RESULT`),t}let s={code:o.status,success:!1,msg:o.statusText};return r.error(s),s},s=async(e,t)=>{let i=t?.data??{},a,o=new Headers(t?.headers);i instanceof FormData?a=i:(a=JSON.stringify(i),o.set(`Content-Type`,n.applicationJson)),r.info({url:e,headers:o},`POST`);let s=await fetch(e,{method:`POST`,headers:o,body:a});if(s.ok){let e=Object.fromEntries(s.headers.entries()),t={...await s.json(),headers:e};return r.debug(t,`POST_RESULT`),t}let c={code:s.status,success:!1,msg:s.statusText};return r.error(c),c};const c=async(e,t)=>{let n=await o(e,t);if(n.success)return n.data;if(t?.showError){t.showError(n.msg??`Get request error!`);return}throw Error(n.msg??`Get request error!`)},l=async(e,t)=>{let n=await s(e,t);if(n.success)return n.data;if(t?.showError){t.showError(n.msg??`Post request error!`);return}throw Error(n.msg??`Post request error!`)},u=async(e,t)=>{let n=await s(e,t);return n.success?(t?.showSuccess&&t.showSuccess(n.msg??`SUCCESS`),!0):(t?.showError&&t.showError(n.msg??`Post request error!`),!1)};var d=class{cookies=null;constructor(){}setICookies(e){return this.cookies=e,this}async login({username:e,password:t}){if(await l(`login`,{data:{username:e,password:t}}),this.cookies)return i(this.cookies)}async logout(){await l(`logout`)}async register({username:e,password:t,nickname:n}){if(await l(`register`,{data:{username:e,password:t,nickname:n}}),this.cookies)return i(this.cookies)}async checkRegistered(e){return await c(`checkRegister`,{data:{username:e}})??!1}async loadI18nList(){return await c(`loadI18nList`)??[]}async loadWebsite(e){return c(`loadWebsite`,{showNav:String(e?.showNav??!0),showFriendLink:String(e?.showFriendLink??!1)})}async loadChannels(e){let t={};return e?.channelNo&&(t.channelNo=e.channelNo),e?.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),await c(`loadChannels`,t)??[]}async loadChannelById(e){let t={channelId:e.channelId};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelById`,t)}async loadChannelByNo(e){let t={channelNo:e.channelNo};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelByNo`,t)}async loadChannelByUri(e){let t={uri:e.uri};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelByUri`,t)}async loadProductDetail(e){return c(`loadProductDetail`,{data:{proId:e}})}async loadProductPageInfo(e){return c(`loadProductPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadProductPageInfoByGroup(e){return c(`loadProductPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadProductListByGroupId(e){return await c(`loadProductListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadNewsDetail(e){return c(`loadNewsDetail`,{data:{newId:e}})}async loadNewsPageInfo(e){return c(`loadNewsPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadNewsPageInfoByGroupId(e){return c(`loadNewsPageInfoByGroupId`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadNewsListByGroupId(e){return await c(`loadNewsListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadPhotoDetail(e){return c(`loadPhotoDetail`,{data:{photoId:e}})}async loadPhotoPageInfo(e){return c(`loadPhotoPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadPhotoPageInfoByGroup(e){return c(`loadPhotoPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadPhotoListByGroupId(e){return await c(`loadPhotoListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadVideoDetail(e){return c(`loadVideoDetail`,{data:{videoId:e}})}async loadVideoPageInfo(e){return c(`loadVideoPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadVideoPageInfoByGroup(e){return c(`loadVideoPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadVideoListByGroupId(e){return await c(`loadVideoListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadActivityDetail(e){return c(`loadActivityDetail`,{data:{activityId:e}})}async loadActivityPageInfo(e){return c(`loadActivityPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadActivityPageInfoByGroup(e){return c(`loadActivityPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadActivityListByGroupId(e){return await c(`loadActivityListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadReviewList(e){return await c(`loadReviewList`,{data:{...e}})??[]}async submitComment(e){return await u(`submitComment`,e)}async subscribe(e){return await u(`subscribe`,e)}async submitContactUs(e){return await u(`submitContactUs`,e)}async loadLinkGroups(){return await c(`loadLinkGroups`)??[]}async loadFriendLinks(e){return await c(`loadFriendLinks`,{data:e?{count:String(e)}:{}})??[]}async submitLink(e){return await u(`submitLink`,e)}async getSpecDescription(e){return c(`getSpecDescription`,{data:{code:e}})}async loadGoodsTagList(){return await c(`getGoodsTagList`)??[]}async loadGoodsShelves(){return await c(`getGoodsShelves`)??[]}async loadCategoryGoods(e){let t={};return e?.cateCode&&(t.cateCode=e.cateCode),e?.count!==void 0&&(t.count=String(e.count)),await c(`getCategoryGoods`,{data:t})??[]}async searchGoods(e){return c(`searchGoods`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}};const f=new d;exports.ICMSClient=d,exports.icmsClient=f;
|
|
1
|
+
const e={IBOOT_DEVICE_ID:`dvid`,IBOOT_LANG:`lang`,IBOOT_WEBSITE_ID:`wid`,IBOOT_WEBSITE_NO:`wno`,IBOOT_TOKEN:`token`,IBOOT_USER:`user`},t=`Content-Type`,n={applicationJson:`application/json`,multipartFormData:`multipart/form-data`,applicationXwwwFormUrlencoded:`application/x-www-form-urlencoded`};var r={info:(e,t)=>{process.env.NODE_ENV!==`production`&&console.info(t,e)},debug:(e,t)=>{process.env.NODE_ENV!==`production`&&console.debug(t,e)},error:e=>{console.error(e)}};const i=t=>{if(t.get){let n=t.get(e.IBOOT_USER);if(n&&n.length>0)return JSON.parse(n)}};var a=e=>`${process.env.BASE_URL||`/api/services`}?m=${e}`,o=async(e,t)=>{let n=a(e);if(t?.data){let e=new URLSearchParams(t.data);n+=`&${e}`}let i=t?.headers;r.info({url:n,headers:i},`GET`);let o=await fetch(n,{method:`GET`,headers:i,cache:t?.useCache?`force-cache`:`default`});if(o.ok){let e=Object.fromEntries(o.headers.entries()),t={...await o.json(),headers:e};return r.debug(t,`GET_RESULT`),t}let s={code:o.status,success:!1,msg:o.statusText};return r.error(s),s},s=async(e,t)=>{let i=t?.data??{},a,o=new Headers(t?.headers);i instanceof FormData?a=i:(a=JSON.stringify(i),o.set(`Content-Type`,n.applicationJson)),r.info({url:e,headers:o},`POST`);let s=await fetch(e,{method:`POST`,headers:o,body:a});if(s.ok){let e=Object.fromEntries(s.headers.entries()),t={...await s.json(),headers:e};return r.debug(t,`POST_RESULT`),t}let c={code:s.status,success:!1,msg:s.statusText};return r.error(c),c};const c=async(e,t)=>{let n=await o(e,t);if(n.success)return n.data;if(t?.showError){t.showError(n.msg??`Get request error!`);return}throw Error(n.msg??`Get request error!`)},l=async(e,t)=>{let n=await s(e,t);if(n.success)return n.data;if(t?.showError){t.showError(n.msg??`Post request error!`);return}throw Error(n.msg??`Post request error!`)},u=async(e,t)=>{let n=await s(e,t);return n.success?(t?.showSuccess&&t.showSuccess(n.msg??`SUCCESS`),!0):(t?.showError&&t.showError(n.msg??`Post request error!`),!1)};var d=class{cookies=null;constructor(){}setICookies(e){return this.cookies=e,this}async login({username:e,password:t}){if(await l(`login`,{data:{username:e,password:t}}),this.cookies)return i(this.cookies)}async logout(){await l(`logout`)}async register({username:e,password:t,nickname:n}){if(await l(`register`,{data:{username:e,password:t,nickname:n}}),this.cookies)return i(this.cookies)}async sendVCode(e){return await l(`sendcode`,{data:{account:e}})===1}async checkRegistered(e){return await c(`checkRegister`,{data:{username:e}})??!1}async loadI18nList(){return await c(`loadI18nList`)??[]}async loadWebsite(e){return c(`loadWebsite`,{showNav:String(e?.showNav??!0),showFriendLink:String(e?.showFriendLink??!1)})}async loadChannels(e){let t={};return e?.channelNo&&(t.channelNo=e.channelNo),e?.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),await c(`loadChannels`,t)??[]}async loadChannelById(e){let t={channelId:e.channelId};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelById`,t)}async loadChannelByNo(e){let t={channelNo:e.channelNo};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelByNo`,t)}async loadChannelByUri(e){let t={uri:e.uri};return e.showChildren!==void 0&&(t.showChildren=String(e.showChildren)),c(`loadChannelByUri`,t)}async loadProductDetail(e){return c(`loadProductDetail`,{data:{proId:e}})}async loadProductPageInfo(e){return c(`loadProductPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadProductPageInfoByGroup(e){return c(`loadProductPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadProductListByGroupId(e){return await c(`loadProductListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadNewsDetail(e){return c(`loadNewsDetail`,{data:{newId:e}})}async loadNewsPageInfo(e){return c(`loadNewsPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadNewsPageInfoByGroupId(e){return c(`loadNewsPageInfoByGroupId`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadNewsListByGroupId(e){return await c(`loadNewsListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadPhotoDetail(e){return c(`loadPhotoDetail`,{data:{photoId:e}})}async loadPhotoPageInfo(e){return c(`loadPhotoPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadPhotoPageInfoByGroup(e){return c(`loadPhotoPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadPhotoListByGroupId(e){return await c(`loadPhotoListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadVideoDetail(e){return c(`loadVideoDetail`,{data:{videoId:e}})}async loadVideoPageInfo(e){return c(`loadVideoPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadVideoPageInfoByGroup(e){return c(`loadVideoPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadVideoListByGroupId(e){return await c(`loadVideoListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadActivityDetail(e){return c(`loadActivityDetail`,{data:{activityId:e}})}async loadActivityPageInfo(e){return c(`loadActivityPageInfo`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadActivityPageInfoByGroup(e){return c(`loadActivityPageInfoByGroup`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}async loadActivityListByGroupId(e){return await c(`loadActivityListByGroupId`,{data:{groupId:e.groupId}})??[]}async loadReviewList(e){return await c(`loadReviewList`,{data:{...e}})??[]}async submitComment(e){return await u(`submitComment`,e)}async subscribe(e){return await u(`subscribe`,e)}async submitContactUs(e){return await u(`submitContactUs`,e)}async loadLinkGroups(){return await c(`loadLinkGroups`)??[]}async loadFriendLinks(e){return await c(`loadFriendLinks`,{data:e?{count:String(e)}:{}})??[]}async submitLink(e){return await u(`submitLink`,e)}async getSpecDescription(e){return c(`getSpecDescription`,{data:{code:e}})}async loadGoodsTagList(){return await c(`getGoodsTagList`)??[]}async loadGoodsShelves(){return await c(`getGoodsShelves`)??[]}async loadCategoryGoods(e){let t={};return e?.cateCode&&(t.cateCode=e.cateCode),e?.count!==void 0&&(t.count=String(e.count)),await c(`getCategoryGoods`,{data:t})??[]}async searchGoods(e){return c(`searchGoods`,{data:{...e,pageNo:String(e.pageNo),pageSize:String(e.pageSize)}})}};const f=new d;exports.ICMSClient=d,exports.icmsClient=f;
|
|
2
2
|
//# sourceMappingURL=icms-api.client.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icms-api.client.cjs.js","names":["body: string | FormData","data: Record<string, string>"],"sources":["../src/client-helper.ts","../src/client.ts"],"sourcesContent":["/**\r\n * 客户端 HTTP 辅助函数\r\n * 从 @rock.chen/icms-http-client/web-client 内联,\r\n * 避免引入 pino/pino-pretty/sonic-boom 等 Node.js 服务端模块\r\n */\r\n\r\n// ---- 类型 ----\r\n\r\n/** Cookie 读写接口 */\r\nexport interface ICookies {\r\n get(key: string): string | undefined;\r\n set?(key: string, value: string): void;\r\n delete?(key: string): void;\r\n}\r\n\r\n/** API 返回模型 */\r\nexport interface ResultModel<T = unknown> {\r\n code: number;\r\n success: boolean;\r\n msg: string;\r\n data?: T;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/** GET 请求参数 */\r\nexport interface ClientGetParams {\r\n data?: Record<string, string>;\r\n headers?: Record<string, string>;\r\n useCache?: boolean;\r\n showError?: (msg: string) => void;\r\n}\r\n\r\n/** POST 请求参数 */\r\nexport interface ClientPostParams {\r\n data?: Record<string, unknown> | FormData;\r\n headers?: Record<string, string>;\r\n showError?: (msg: string) => void;\r\n showSuccess?: (msg: string) => void;\r\n}\r\n\r\n/** Cookie 名称常量 */\r\nexport const COOKIE_NAMES = {\r\n IBOOT_DEVICE_ID: \"dvid\",\r\n IBOOT_LANG: \"lang\",\r\n IBOOT_WEBSITE_ID: \"wid\",\r\n IBOOT_WEBSITE_NO: \"wno\",\r\n IBOOT_TOKEN: \"token\",\r\n IBOOT_USER: \"user\",\r\n} as const;\r\n\r\n/** Content-Type 常量 */\r\nexport const CONTENT_TYPE_KEY = \"Content-Type\";\r\nexport const CONTENT_TYPE_MAP = {\r\n applicationJson: \"application/json\",\r\n multipartFormData: \"multipart/form-data\",\r\n applicationXwwwFormUrlencoded: \"application/x-www-form-urlencoded\",\r\n} as const;\r\n\r\n/** 用户信息 */\r\nexport interface User {\r\n id: string;\r\n name: string;\r\n userType: number;\r\n username?: string;\r\n nickname?: string;\r\n sex?: number;\r\n headImg?: string;\r\n lastLoginTime?: string;\r\n tokenExpired?: string;\r\n deviceId?: string;\r\n status?: number;\r\n accountType?: number;\r\n enabled?: boolean;\r\n userFrom?: number;\r\n needToReview?: boolean;\r\n socketOnline?: boolean;\r\n createTime?: string;\r\n mustChangePwd?: boolean;\r\n}\r\n\r\n// ---- Logger(浏览器 console 实现,唔引入 pino) ----\r\n\r\nconst logger = {\r\n info: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.info(tag, msg);\r\n },\r\n debug: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.debug(tag, msg);\r\n },\r\n error: (msg: unknown) => {\r\n console.error(msg);\r\n },\r\n};\r\n\r\n// ---- 函数 ----\r\n\r\n/** 从 cookie 中读取已登录用户信息 */\r\nexport const getLoginUser = (cookies: ICookies): User | undefined => {\r\n if (cookies.get) {\r\n const userjson = cookies.get(COOKIE_NAMES.IBOOT_USER);\r\n if (userjson && userjson.length > 0) {\r\n return JSON.parse(userjson);\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nconst getBaseUrl = (urlName: string) => {\r\n const baseUrl = process.env.BASE_URL || \"/api/services\";\r\n return `${baseUrl}?m=${urlName}`;\r\n};\r\n\r\n/** 客户端 GET 请求 */\r\nconst get = async <T>(\r\n urlName: string,\r\n opts?: ClientGetParams,\r\n): Promise<ResultModel<T>> => {\r\n let url = getBaseUrl(urlName);\r\n if (opts?.data) {\r\n const params = new URLSearchParams(opts.data);\r\n url += `&${params}`;\r\n }\r\n const heads = opts?.headers;\r\n logger.info({ url, headers: heads }, \"GET\");\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: heads,\r\n cache: opts?.useCache ? \"force-cache\" : \"default\",\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"GET_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** 客户端 POST 请求 */\r\nconst post = async <T>(\r\n urlName: string,\r\n opts?: ClientPostParams,\r\n): Promise<ResultModel<T>> => {\r\n const data = opts?.data ?? {};\r\n let body: string | FormData;\r\n const proxyHeaders = new Headers(opts?.headers);\r\n if (!(data instanceof FormData)) {\r\n body = JSON.stringify(data);\r\n proxyHeaders.set(CONTENT_TYPE_KEY, CONTENT_TYPE_MAP.applicationJson);\r\n } else {\r\n body = data;\r\n }\r\n logger.info({ url: urlName, headers: proxyHeaders }, \"POST\");\r\n const res = await fetch(urlName, {\r\n method: \"POST\",\r\n headers: proxyHeaders,\r\n body,\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"POST_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** GET 请求快捷方法(自动解包 data) */\r\nexport const iGet = async <T>(\r\n url: string,\r\n opts?: ClientGetParams,\r\n): Promise<T | undefined> => {\r\n const res = await get<T>(url, opts);\r\n if (res.success) {\r\n return res.data as T;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Get request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Get request error!\");\r\n};\r\n\r\n/** POST 请求快捷方法(自动解包 data) */\r\nexport const iPost = async <T>(\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<T | undefined> => {\r\n const res = await post<T>(url, opts);\r\n if (res.success) {\r\n return res.data;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Post request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Post request error!\");\r\n};\r\n\r\n/** POST 请求,返回 boolean */\r\nexport const iPostSuccess = async (\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<boolean> => {\r\n const res = await post(url, opts);\r\n if (res.success) {\r\n if (opts?.showSuccess) opts.showSuccess(res.msg ?? \"SUCCESS\");\r\n return true;\r\n }\r\n if (opts?.showError) opts.showError(res.msg ?? \"Post request error!\");\r\n return false;\r\n};\r\n","import type { Member, FriendLink, LinkGroup, I18NWebsite, Webchannel, WebsiteInfo } from \"./types/site\"\r\nimport type { ProductContent } from \"./types/cms-product\"\r\nimport type { PageInfo, PageParams } from \"./types/cms-base\"\r\nimport type { NewsContent } from \"./types/cms-news\"\r\nimport type { PhotoContent } from \"./types/cms-photo\"\r\nimport type { VideoContent } from \"./types/cms-video\"\r\nimport type { ActivityContent } from \"./types/cms-activity\"\r\nimport type { Reviews, SubscribeUser, ContactUs } from \"./types/cms-message\"\r\nimport type { SpecDescription, GoodsItem, GoodsCategory, GoodsTag } from \"./types/cms-mall\"\r\nimport { getLoginUser, ICookies, iGet, iPost, iPostSuccess } from \"./client-helper\"\r\n\r\n\r\nexport class ICMSClient {\r\n private cookies: ICookies | null = null\r\n\r\n constructor() {\r\n }\r\n\r\n setICookies(c: ICookies): ICMSClient {\r\n this.cookies = c;\r\n return this;\r\n }\r\n\r\n // ========== 用户认证 ==========\r\n\r\n async login({ username, password }: Readonly<{ username: string, password: string }>): Promise<Member | undefined> {\r\n await iPost('login', {\r\n data: { username, password }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await iPost('logout');\r\n }\r\n\r\n // ========== 用户注册 ==========\r\n\r\n /**\r\n * 注册 C 端会员(手机号/邮箱 + 密码)\r\n * @param username 手机号或邮箱\r\n * @param password 密码\r\n * @param nickname 昵称(可选)\r\n * @returns 注册成功且已登录时返回 Member,否则 undefined\r\n */\r\n async register({ username, password, nickname }: Readonly<{ username: string, password: string, nickname?: string }>): Promise<Member | undefined> {\r\n await iPost('register', {\r\n data: { username, password, nickname }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * 检查用户名(手机号/邮箱)是否已注册\r\n */\r\n async checkRegistered(username: string): Promise<boolean> {\r\n const result = await iGet<boolean>('checkRegister', {\r\n data: { username }\r\n })\r\n return result ?? false\r\n }\r\n\r\n // ========== 网站信息 ==========\r\n\r\n async loadI18nList(): Promise<Array<I18NWebsite>> {\r\n return (await iGet<Array<I18NWebsite>>(\"loadI18nList\")) ?? []\r\n }\r\n\r\n async loadWebsite(params?: Readonly<{ showNav?: boolean; showFriendLink?: boolean; showI18NList?: boolean }>): Promise<WebsiteInfo | undefined> {\r\n const data: Record<string, string> = {\r\n showNav: String(params?.showNav ?? true),\r\n showFriendLink: String(params?.showFriendLink ?? false),\r\n }\r\n return iGet<WebsiteInfo>(\"loadWebsite\", data)\r\n }\r\n\r\n async loadChannels(params?: Readonly<{ channelNo?: string; showChildren?: boolean }>): Promise<Array<Webchannel>> {\r\n const data: Record<string, string> = {}\r\n if (params?.channelNo) data.channelNo = params.channelNo\r\n if (params?.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return (await iGet<Array<Webchannel>>(\"loadChannels\", data)) ?? []\r\n }\r\n\r\n async loadChannelById(params: Readonly<{ channelId: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelId: params.channelId }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelById\", data)\r\n }\r\n\r\n async loadChannelByNo(params: Readonly<{ channelNo: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelNo: params.channelNo }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByNo\", data)\r\n }\r\n\r\n async loadChannelByUri(params: Readonly<{ uri: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { uri: params.uri }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByUri\", data)\r\n }\r\n\r\n // ========== 产品 ==========\r\n\r\n async loadProductDetail(proId: string): Promise<ProductContent | undefined> {\r\n return iGet<ProductContent>(\"loadProductDetail\", { data: { proId } })\r\n }\r\n\r\n async loadProductPageInfo(params: Readonly<{ channelId?: string; keyword?: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ProductContent>> {\r\n return (await iGet<Array<ProductContent>>(\"loadProductListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 图文 ==========\r\n\r\n async loadNewsDetail(newId: string): Promise<NewsContent | undefined> {\r\n return iGet<NewsContent>(\"loadNewsDetail\", { data: { newId } })\r\n }\r\n\r\n async loadNewsPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsPageInfoByGroupId(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfoByGroupId\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<NewsContent>> {\r\n return (await iGet<Array<NewsContent>>(\"loadNewsListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 相册 ==========\r\n\r\n async loadPhotoDetail(photoId: string): Promise<PhotoContent | undefined> {\r\n return iGet<PhotoContent>(\"loadPhotoDetail\", { data: { photoId } })\r\n }\r\n\r\n async loadPhotoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<PhotoContent>> {\r\n return (await iGet<Array<PhotoContent>>(\"loadPhotoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 视频 ==========\r\n\r\n async loadVideoDetail(videoId: string): Promise<VideoContent | undefined> {\r\n return iGet<VideoContent>(\"loadVideoDetail\", { data: { videoId } })\r\n }\r\n\r\n async loadVideoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<VideoContent>> {\r\n return (await iGet<Array<VideoContent>>(\"loadVideoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 活动 ==========\r\n\r\n async loadActivityDetail(activityId: string): Promise<ActivityContent | undefined> {\r\n return iGet<ActivityContent>(\"loadActivityDetail\", { data: { activityId } })\r\n }\r\n\r\n async loadActivityPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ActivityContent>> {\r\n return (await iGet<Array<ActivityContent>>(\"loadActivityListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 评论/订阅/联系 ==========\r\n\r\n async loadReviewList(params: Readonly<{ entityNo?: string; rowCount?: string }>): Promise<Array<Reviews>> {\r\n return (await iGet<Array<Reviews>>(\"loadReviewList\", { data: { ...params } })) ?? []\r\n }\r\n\r\n async submitComment(data: Readonly<Partial<Reviews>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitComment\", data as Record<string, any>)\r\n }\r\n\r\n async subscribe(data: Readonly<Pick<SubscribeUser, 'email'> & Partial<Pick<SubscribeUser, 'nickname'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"subscribe\", data as Record<string, any>)\r\n }\r\n\r\n async submitContactUs(data: Readonly<Partial<ContactUs>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitContactUs\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 友链 ==========\r\n\r\n async loadLinkGroups(): Promise<Array<LinkGroup>> {\r\n return (await iGet<Array<LinkGroup>>(\"loadLinkGroups\")) ?? []\r\n }\r\n\r\n async loadFriendLinks(count?: number): Promise<Array<FriendLink>> {\r\n return (await iGet<Array<FriendLink>>(\"loadFriendLinks\", { data: count ? { count: String(count) } : {} })) ?? []\r\n }\r\n\r\n async submitLink(data: Readonly<Pick<FriendLink, 'name' | 'url'> & Partial<Pick<FriendLink, 'description'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitLink\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 商城 ==========\r\n\r\n async getSpecDescription(code: string): Promise<SpecDescription | undefined> {\r\n return iGet<SpecDescription>(\"getSpecDescription\", { data: { code } })\r\n }\r\n\r\n /** 获取商品标签字典 */\r\n async loadGoodsTagList(): Promise<Array<GoodsTag>> {\r\n return (await iGet<Array<GoodsTag>>(\"getGoodsTagList\")) ?? []\r\n }\r\n\r\n /** 获取所有货架(类目)列表 */\r\n async loadGoodsShelves(): Promise<Array<GoodsCategory>> {\r\n return (await iGet<Array<GoodsCategory>>(\"getGoodsShelves\")) ?? []\r\n }\r\n\r\n /** 获取指定货架的商品列表 */\r\n async loadCategoryGoods(params?: Readonly<{ cateCode: string; count?: number }>): Promise<Array<GoodsItem>> {\r\n const data: Record<string, string> = {}\r\n if (params?.cateCode) data.cateCode = params.cateCode\r\n if (params?.count !== undefined) data.count = String(params.count)\r\n return (await iGet<Array<GoodsItem>>(\"getCategoryGoods\", { data })) ?? []\r\n }\r\n\r\n /** 分页搜索商品 */\r\n async searchGoods(params: Readonly<{ cateCode?: string; keyword?: string } & PageParams>): Promise<PageInfo<GoodsItem> | undefined> {\r\n return iGet<PageInfo<GoodsItem>>(\"searchGoods\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n}\r\n\r\nexport const icmsClient = new ICMSClient()\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icms-api.client.cjs.js","names":["body: string | FormData","data: Record<string, string>"],"sources":["../src/client-helper.ts","../src/client.ts"],"sourcesContent":["/**\r\n * 客户端 HTTP 辅助函数\r\n * 从 @rock.chen/icms-http-client/web-client 内联,\r\n * 避免引入 pino/pino-pretty/sonic-boom 等 Node.js 服务端模块\r\n */\r\n\r\n// ---- 类型 ----\r\n\r\n/** Cookie 读写接口 */\r\nexport interface ICookies {\r\n get(key: string): string | undefined;\r\n set?(key: string, value: string): void;\r\n delete?(key: string): void;\r\n}\r\n\r\n/** API 返回模型 */\r\nexport interface ResultModel<T = unknown> {\r\n code: number;\r\n success: boolean;\r\n msg: string;\r\n data?: T;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/** GET 请求参数 */\r\nexport interface ClientGetParams {\r\n data?: Record<string, string>;\r\n headers?: Record<string, string>;\r\n useCache?: boolean;\r\n showError?: (msg: string) => void;\r\n}\r\n\r\n/** POST 请求参数 */\r\nexport interface ClientPostParams {\r\n data?: Record<string, unknown> | FormData;\r\n headers?: Record<string, string>;\r\n showError?: (msg: string) => void;\r\n showSuccess?: (msg: string) => void;\r\n}\r\n\r\n/** Cookie 名称常量 */\r\nexport const COOKIE_NAMES = {\r\n IBOOT_DEVICE_ID: \"dvid\",\r\n IBOOT_LANG: \"lang\",\r\n IBOOT_WEBSITE_ID: \"wid\",\r\n IBOOT_WEBSITE_NO: \"wno\",\r\n IBOOT_TOKEN: \"token\",\r\n IBOOT_USER: \"user\",\r\n} as const;\r\n\r\n/** Content-Type 常量 */\r\nexport const CONTENT_TYPE_KEY = \"Content-Type\";\r\nexport const CONTENT_TYPE_MAP = {\r\n applicationJson: \"application/json\",\r\n multipartFormData: \"multipart/form-data\",\r\n applicationXwwwFormUrlencoded: \"application/x-www-form-urlencoded\",\r\n} as const;\r\n\r\n/** 用户信息 */\r\nexport interface User {\r\n id: string;\r\n name: string;\r\n userType: number;\r\n username?: string;\r\n nickname?: string;\r\n sex?: number;\r\n headImg?: string;\r\n lastLoginTime?: string;\r\n tokenExpired?: string;\r\n deviceId?: string;\r\n status?: number;\r\n accountType?: number;\r\n enabled?: boolean;\r\n userFrom?: number;\r\n needToReview?: boolean;\r\n socketOnline?: boolean;\r\n createTime?: string;\r\n mustChangePwd?: boolean;\r\n}\r\n\r\n// ---- Logger(浏览器 console 实现,唔引入 pino) ----\r\n\r\nconst logger = {\r\n info: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.info(tag, msg);\r\n },\r\n debug: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.debug(tag, msg);\r\n },\r\n error: (msg: unknown) => {\r\n console.error(msg);\r\n },\r\n};\r\n\r\n// ---- 函数 ----\r\n\r\n/** 从 cookie 中读取已登录用户信息 */\r\nexport const getLoginUser = (cookies: ICookies): User | undefined => {\r\n if (cookies.get) {\r\n const userjson = cookies.get(COOKIE_NAMES.IBOOT_USER);\r\n if (userjson && userjson.length > 0) {\r\n return JSON.parse(userjson);\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nconst getBaseUrl = (urlName: string) => {\r\n const baseUrl = process.env.BASE_URL || \"/api/services\";\r\n return `${baseUrl}?m=${urlName}`;\r\n};\r\n\r\n/** 客户端 GET 请求 */\r\nconst get = async <T>(\r\n urlName: string,\r\n opts?: ClientGetParams,\r\n): Promise<ResultModel<T>> => {\r\n let url = getBaseUrl(urlName);\r\n if (opts?.data) {\r\n const params = new URLSearchParams(opts.data);\r\n url += `&${params}`;\r\n }\r\n const heads = opts?.headers;\r\n logger.info({ url, headers: heads }, \"GET\");\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: heads,\r\n cache: opts?.useCache ? \"force-cache\" : \"default\",\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"GET_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** 客户端 POST 请求 */\r\nconst post = async <T>(\r\n urlName: string,\r\n opts?: ClientPostParams,\r\n): Promise<ResultModel<T>> => {\r\n const data = opts?.data ?? {};\r\n let body: string | FormData;\r\n const proxyHeaders = new Headers(opts?.headers);\r\n if (!(data instanceof FormData)) {\r\n body = JSON.stringify(data);\r\n proxyHeaders.set(CONTENT_TYPE_KEY, CONTENT_TYPE_MAP.applicationJson);\r\n } else {\r\n body = data;\r\n }\r\n logger.info({ url: urlName, headers: proxyHeaders }, \"POST\");\r\n const res = await fetch(urlName, {\r\n method: \"POST\",\r\n headers: proxyHeaders,\r\n body,\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"POST_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** GET 请求快捷方法(自动解包 data) */\r\nexport const iGet = async <T>(\r\n url: string,\r\n opts?: ClientGetParams,\r\n): Promise<T | undefined> => {\r\n const res = await get<T>(url, opts);\r\n if (res.success) {\r\n return res.data as T;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Get request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Get request error!\");\r\n};\r\n\r\n/** POST 请求快捷方法(自动解包 data) */\r\nexport const iPost = async <T>(\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<T | undefined> => {\r\n const res = await post<T>(url, opts);\r\n if (res.success) {\r\n return res.data;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Post request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Post request error!\");\r\n};\r\n\r\n/** POST 请求,返回 boolean */\r\nexport const iPostSuccess = async (\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<boolean> => {\r\n const res = await post(url, opts);\r\n if (res.success) {\r\n if (opts?.showSuccess) opts.showSuccess(res.msg ?? \"SUCCESS\");\r\n return true;\r\n }\r\n if (opts?.showError) opts.showError(res.msg ?? \"Post request error!\");\r\n return false;\r\n};\r\n","import type { Member, FriendLink, LinkGroup, I18NWebsite, Webchannel, WebsiteInfo } from \"./types/site\"\r\nimport type { ProductContent } from \"./types/cms-product\"\r\nimport type { PageInfo, PageParams } from \"./types/cms-base\"\r\nimport type { NewsContent } from \"./types/cms-news\"\r\nimport type { PhotoContent } from \"./types/cms-photo\"\r\nimport type { VideoContent } from \"./types/cms-video\"\r\nimport type { ActivityContent } from \"./types/cms-activity\"\r\nimport type { Reviews, SubscribeUser, ContactUs } from \"./types/cms-message\"\r\nimport type { SpecDescription, GoodsItem, GoodsCategory, GoodsTag } from \"./types/cms-mall\"\r\nimport { getLoginUser, ICookies, iGet, iPost, iPostSuccess } from \"./client-helper\"\r\n\r\n\r\nexport class ICMSClient {\r\n private cookies: ICookies | null = null\r\n\r\n constructor() {\r\n }\r\n\r\n setICookies(c: ICookies): ICMSClient {\r\n this.cookies = c;\r\n return this;\r\n }\r\n\r\n // ========== 用户认证 ==========\r\n\r\n async login({ username, password }: Readonly<{ username: string, password: string }>): Promise<Member | undefined> {\r\n await iPost('login', {\r\n data: { username, password }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await iPost('logout');\r\n }\r\n\r\n // ========== 用户注册 ==========\r\n\r\n /**\r\n * 注册 C 端会员(手机号/邮箱 + 密码)\r\n * @param username 手机号或邮箱\r\n * @param password 密码\r\n * @param nickname 昵称(可选)\r\n * @returns 注册成功且已登录时返回 Member,否则 undefined\r\n */\r\n async register({ username, password, nickname }: Readonly<{ username: string, password: string, nickname?: string }>): Promise<Member | undefined> {\r\n await iPost('register', {\r\n data: { username, password, nickname }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * 发送邮箱验证码(注册/找回密码用)\r\n * @param account 邮箱地址\r\n * @returns 是否发送成功\r\n */\r\n async sendVCode(account: string): Promise<boolean> {\r\n const result = await iPost<number>('sendcode', {\r\n data: { account }\r\n })\r\n return result === 1\r\n }\r\n\r\n /**\r\n * 检查用户名(手机号/邮箱)是否已注册\r\n */\r\n async checkRegistered(username: string): Promise<boolean> {\r\n const result = await iGet<boolean>('checkRegister', {\r\n data: { username }\r\n })\r\n return result ?? false\r\n }\r\n\r\n // ========== 网站信息 ==========\r\n\r\n async loadI18nList(): Promise<Array<I18NWebsite>> {\r\n return (await iGet<Array<I18NWebsite>>(\"loadI18nList\")) ?? []\r\n }\r\n\r\n async loadWebsite(params?: Readonly<{ showNav?: boolean; showFriendLink?: boolean; showI18NList?: boolean }>): Promise<WebsiteInfo | undefined> {\r\n const data: Record<string, string> = {\r\n showNav: String(params?.showNav ?? true),\r\n showFriendLink: String(params?.showFriendLink ?? false),\r\n }\r\n return iGet<WebsiteInfo>(\"loadWebsite\", data)\r\n }\r\n\r\n async loadChannels(params?: Readonly<{ channelNo?: string; showChildren?: boolean }>): Promise<Array<Webchannel>> {\r\n const data: Record<string, string> = {}\r\n if (params?.channelNo) data.channelNo = params.channelNo\r\n if (params?.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return (await iGet<Array<Webchannel>>(\"loadChannels\", data)) ?? []\r\n }\r\n\r\n async loadChannelById(params: Readonly<{ channelId: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelId: params.channelId }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelById\", data)\r\n }\r\n\r\n async loadChannelByNo(params: Readonly<{ channelNo: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelNo: params.channelNo }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByNo\", data)\r\n }\r\n\r\n async loadChannelByUri(params: Readonly<{ uri: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { uri: params.uri }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByUri\", data)\r\n }\r\n\r\n // ========== 产品 ==========\r\n\r\n async loadProductDetail(proId: string): Promise<ProductContent | undefined> {\r\n return iGet<ProductContent>(\"loadProductDetail\", { data: { proId } })\r\n }\r\n\r\n async loadProductPageInfo(params: Readonly<{ channelId?: string; keyword?: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ProductContent>> {\r\n return (await iGet<Array<ProductContent>>(\"loadProductListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 图文 ==========\r\n\r\n async loadNewsDetail(newId: string): Promise<NewsContent | undefined> {\r\n return iGet<NewsContent>(\"loadNewsDetail\", { data: { newId } })\r\n }\r\n\r\n async loadNewsPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsPageInfoByGroupId(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfoByGroupId\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<NewsContent>> {\r\n return (await iGet<Array<NewsContent>>(\"loadNewsListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 相册 ==========\r\n\r\n async loadPhotoDetail(photoId: string): Promise<PhotoContent | undefined> {\r\n return iGet<PhotoContent>(\"loadPhotoDetail\", { data: { photoId } })\r\n }\r\n\r\n async loadPhotoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<PhotoContent>> {\r\n return (await iGet<Array<PhotoContent>>(\"loadPhotoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 视频 ==========\r\n\r\n async loadVideoDetail(videoId: string): Promise<VideoContent | undefined> {\r\n return iGet<VideoContent>(\"loadVideoDetail\", { data: { videoId } })\r\n }\r\n\r\n async loadVideoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<VideoContent>> {\r\n return (await iGet<Array<VideoContent>>(\"loadVideoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 活动 ==========\r\n\r\n async loadActivityDetail(activityId: string): Promise<ActivityContent | undefined> {\r\n return iGet<ActivityContent>(\"loadActivityDetail\", { data: { activityId } })\r\n }\r\n\r\n async loadActivityPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ActivityContent>> {\r\n return (await iGet<Array<ActivityContent>>(\"loadActivityListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 评论/订阅/联系 ==========\r\n\r\n async loadReviewList(params: Readonly<{ entityNo?: string; rowCount?: string }>): Promise<Array<Reviews>> {\r\n return (await iGet<Array<Reviews>>(\"loadReviewList\", { data: { ...params } })) ?? []\r\n }\r\n\r\n async submitComment(data: Readonly<Partial<Reviews>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitComment\", data as Record<string, any>)\r\n }\r\n\r\n async subscribe(data: Readonly<Pick<SubscribeUser, 'email'> & Partial<Pick<SubscribeUser, 'nickname'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"subscribe\", data as Record<string, any>)\r\n }\r\n\r\n async submitContactUs(data: Readonly<Partial<ContactUs>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitContactUs\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 友链 ==========\r\n\r\n async loadLinkGroups(): Promise<Array<LinkGroup>> {\r\n return (await iGet<Array<LinkGroup>>(\"loadLinkGroups\")) ?? []\r\n }\r\n\r\n async loadFriendLinks(count?: number): Promise<Array<FriendLink>> {\r\n return (await iGet<Array<FriendLink>>(\"loadFriendLinks\", { data: count ? { count: String(count) } : {} })) ?? []\r\n }\r\n\r\n async submitLink(data: Readonly<Pick<FriendLink, 'name' | 'url'> & Partial<Pick<FriendLink, 'description'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitLink\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 商城 ==========\r\n\r\n async getSpecDescription(code: string): Promise<SpecDescription | undefined> {\r\n return iGet<SpecDescription>(\"getSpecDescription\", { data: { code } })\r\n }\r\n\r\n /** 获取商品标签字典 */\r\n async loadGoodsTagList(): Promise<Array<GoodsTag>> {\r\n return (await iGet<Array<GoodsTag>>(\"getGoodsTagList\")) ?? []\r\n }\r\n\r\n /** 获取所有货架(类目)列表 */\r\n async loadGoodsShelves(): Promise<Array<GoodsCategory>> {\r\n return (await iGet<Array<GoodsCategory>>(\"getGoodsShelves\")) ?? []\r\n }\r\n\r\n /** 获取指定货架的商品列表 */\r\n async loadCategoryGoods(params?: Readonly<{ cateCode: string; count?: number }>): Promise<Array<GoodsItem>> {\r\n const data: Record<string, string> = {}\r\n if (params?.cateCode) data.cateCode = params.cateCode\r\n if (params?.count !== undefined) data.count = String(params.count)\r\n return (await iGet<Array<GoodsItem>>(\"getCategoryGoods\", { data })) ?? []\r\n }\r\n\r\n /** 分页搜索商品 */\r\n async searchGoods(params: Readonly<{ cateCode?: string; keyword?: string } & PageParams>): Promise<PageInfo<GoodsItem> | undefined> {\r\n return iGet<PageInfo<GoodsItem>>(\"searchGoods\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n}\r\n\r\nexport const icmsClient = new ICMSClient()\r\n"],"mappings":"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"}
|
|
@@ -123,6 +123,9 @@ var ICMSClient = class {
|
|
|
123
123
|
nickname: a
|
|
124
124
|
} }), this.cookies) return getLoginUser(this.cookies);
|
|
125
125
|
}
|
|
126
|
+
async sendVCode(e) {
|
|
127
|
+
return await iPost("sendcode", { data: { account: e } }) === 1;
|
|
128
|
+
}
|
|
126
129
|
async checkRegistered(e) {
|
|
127
130
|
return await iGet("checkRegister", { data: { username: e } }) ?? !1;
|
|
128
131
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"icms-api.client.es.js","names":["body: string | FormData","data: Record<string, string>"],"sources":["../src/client-helper.ts","../src/client.ts"],"sourcesContent":["/**\r\n * 客户端 HTTP 辅助函数\r\n * 从 @rock.chen/icms-http-client/web-client 内联,\r\n * 避免引入 pino/pino-pretty/sonic-boom 等 Node.js 服务端模块\r\n */\r\n\r\n// ---- 类型 ----\r\n\r\n/** Cookie 读写接口 */\r\nexport interface ICookies {\r\n get(key: string): string | undefined;\r\n set?(key: string, value: string): void;\r\n delete?(key: string): void;\r\n}\r\n\r\n/** API 返回模型 */\r\nexport interface ResultModel<T = unknown> {\r\n code: number;\r\n success: boolean;\r\n msg: string;\r\n data?: T;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/** GET 请求参数 */\r\nexport interface ClientGetParams {\r\n data?: Record<string, string>;\r\n headers?: Record<string, string>;\r\n useCache?: boolean;\r\n showError?: (msg: string) => void;\r\n}\r\n\r\n/** POST 请求参数 */\r\nexport interface ClientPostParams {\r\n data?: Record<string, unknown> | FormData;\r\n headers?: Record<string, string>;\r\n showError?: (msg: string) => void;\r\n showSuccess?: (msg: string) => void;\r\n}\r\n\r\n/** Cookie 名称常量 */\r\nexport const COOKIE_NAMES = {\r\n IBOOT_DEVICE_ID: \"dvid\",\r\n IBOOT_LANG: \"lang\",\r\n IBOOT_WEBSITE_ID: \"wid\",\r\n IBOOT_WEBSITE_NO: \"wno\",\r\n IBOOT_TOKEN: \"token\",\r\n IBOOT_USER: \"user\",\r\n} as const;\r\n\r\n/** Content-Type 常量 */\r\nexport const CONTENT_TYPE_KEY = \"Content-Type\";\r\nexport const CONTENT_TYPE_MAP = {\r\n applicationJson: \"application/json\",\r\n multipartFormData: \"multipart/form-data\",\r\n applicationXwwwFormUrlencoded: \"application/x-www-form-urlencoded\",\r\n} as const;\r\n\r\n/** 用户信息 */\r\nexport interface User {\r\n id: string;\r\n name: string;\r\n userType: number;\r\n username?: string;\r\n nickname?: string;\r\n sex?: number;\r\n headImg?: string;\r\n lastLoginTime?: string;\r\n tokenExpired?: string;\r\n deviceId?: string;\r\n status?: number;\r\n accountType?: number;\r\n enabled?: boolean;\r\n userFrom?: number;\r\n needToReview?: boolean;\r\n socketOnline?: boolean;\r\n createTime?: string;\r\n mustChangePwd?: boolean;\r\n}\r\n\r\n// ---- Logger(浏览器 console 实现,唔引入 pino) ----\r\n\r\nconst logger = {\r\n info: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.info(tag, msg);\r\n },\r\n debug: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.debug(tag, msg);\r\n },\r\n error: (msg: unknown) => {\r\n console.error(msg);\r\n },\r\n};\r\n\r\n// ---- 函数 ----\r\n\r\n/** 从 cookie 中读取已登录用户信息 */\r\nexport const getLoginUser = (cookies: ICookies): User | undefined => {\r\n if (cookies.get) {\r\n const userjson = cookies.get(COOKIE_NAMES.IBOOT_USER);\r\n if (userjson && userjson.length > 0) {\r\n return JSON.parse(userjson);\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nconst getBaseUrl = (urlName: string) => {\r\n const baseUrl = process.env.BASE_URL || \"/api/services\";\r\n return `${baseUrl}?m=${urlName}`;\r\n};\r\n\r\n/** 客户端 GET 请求 */\r\nconst get = async <T>(\r\n urlName: string,\r\n opts?: ClientGetParams,\r\n): Promise<ResultModel<T>> => {\r\n let url = getBaseUrl(urlName);\r\n if (opts?.data) {\r\n const params = new URLSearchParams(opts.data);\r\n url += `&${params}`;\r\n }\r\n const heads = opts?.headers;\r\n logger.info({ url, headers: heads }, \"GET\");\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: heads,\r\n cache: opts?.useCache ? \"force-cache\" : \"default\",\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"GET_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** 客户端 POST 请求 */\r\nconst post = async <T>(\r\n urlName: string,\r\n opts?: ClientPostParams,\r\n): Promise<ResultModel<T>> => {\r\n const data = opts?.data ?? {};\r\n let body: string | FormData;\r\n const proxyHeaders = new Headers(opts?.headers);\r\n if (!(data instanceof FormData)) {\r\n body = JSON.stringify(data);\r\n proxyHeaders.set(CONTENT_TYPE_KEY, CONTENT_TYPE_MAP.applicationJson);\r\n } else {\r\n body = data;\r\n }\r\n logger.info({ url: urlName, headers: proxyHeaders }, \"POST\");\r\n const res = await fetch(urlName, {\r\n method: \"POST\",\r\n headers: proxyHeaders,\r\n body,\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"POST_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** GET 请求快捷方法(自动解包 data) */\r\nexport const iGet = async <T>(\r\n url: string,\r\n opts?: ClientGetParams,\r\n): Promise<T | undefined> => {\r\n const res = await get<T>(url, opts);\r\n if (res.success) {\r\n return res.data as T;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Get request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Get request error!\");\r\n};\r\n\r\n/** POST 请求快捷方法(自动解包 data) */\r\nexport const iPost = async <T>(\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<T | undefined> => {\r\n const res = await post<T>(url, opts);\r\n if (res.success) {\r\n return res.data;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Post request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Post request error!\");\r\n};\r\n\r\n/** POST 请求,返回 boolean */\r\nexport const iPostSuccess = async (\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<boolean> => {\r\n const res = await post(url, opts);\r\n if (res.success) {\r\n if (opts?.showSuccess) opts.showSuccess(res.msg ?? \"SUCCESS\");\r\n return true;\r\n }\r\n if (opts?.showError) opts.showError(res.msg ?? \"Post request error!\");\r\n return false;\r\n};\r\n","import type { Member, FriendLink, LinkGroup, I18NWebsite, Webchannel, WebsiteInfo } from \"./types/site\"\r\nimport type { ProductContent } from \"./types/cms-product\"\r\nimport type { PageInfo, PageParams } from \"./types/cms-base\"\r\nimport type { NewsContent } from \"./types/cms-news\"\r\nimport type { PhotoContent } from \"./types/cms-photo\"\r\nimport type { VideoContent } from \"./types/cms-video\"\r\nimport type { ActivityContent } from \"./types/cms-activity\"\r\nimport type { Reviews, SubscribeUser, ContactUs } from \"./types/cms-message\"\r\nimport type { SpecDescription, GoodsItem, GoodsCategory, GoodsTag } from \"./types/cms-mall\"\r\nimport { getLoginUser, ICookies, iGet, iPost, iPostSuccess } from \"./client-helper\"\r\n\r\n\r\nexport class ICMSClient {\r\n private cookies: ICookies | null = null\r\n\r\n constructor() {\r\n }\r\n\r\n setICookies(c: ICookies): ICMSClient {\r\n this.cookies = c;\r\n return this;\r\n }\r\n\r\n // ========== 用户认证 ==========\r\n\r\n async login({ username, password }: Readonly<{ username: string, password: string }>): Promise<Member | undefined> {\r\n await iPost('login', {\r\n data: { username, password }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await iPost('logout');\r\n }\r\n\r\n // ========== 用户注册 ==========\r\n\r\n /**\r\n * 注册 C 端会员(手机号/邮箱 + 密码)\r\n * @param username 手机号或邮箱\r\n * @param password 密码\r\n * @param nickname 昵称(可选)\r\n * @returns 注册成功且已登录时返回 Member,否则 undefined\r\n */\r\n async register({ username, password, nickname }: Readonly<{ username: string, password: string, nickname?: string }>): Promise<Member | undefined> {\r\n await iPost('register', {\r\n data: { username, password, nickname }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * 检查用户名(手机号/邮箱)是否已注册\r\n */\r\n async checkRegistered(username: string): Promise<boolean> {\r\n const result = await iGet<boolean>('checkRegister', {\r\n data: { username }\r\n })\r\n return result ?? false\r\n }\r\n\r\n // ========== 网站信息 ==========\r\n\r\n async loadI18nList(): Promise<Array<I18NWebsite>> {\r\n return (await iGet<Array<I18NWebsite>>(\"loadI18nList\")) ?? []\r\n }\r\n\r\n async loadWebsite(params?: Readonly<{ showNav?: boolean; showFriendLink?: boolean; showI18NList?: boolean }>): Promise<WebsiteInfo | undefined> {\r\n const data: Record<string, string> = {\r\n showNav: String(params?.showNav ?? true),\r\n showFriendLink: String(params?.showFriendLink ?? false),\r\n }\r\n return iGet<WebsiteInfo>(\"loadWebsite\", data)\r\n }\r\n\r\n async loadChannels(params?: Readonly<{ channelNo?: string; showChildren?: boolean }>): Promise<Array<Webchannel>> {\r\n const data: Record<string, string> = {}\r\n if (params?.channelNo) data.channelNo = params.channelNo\r\n if (params?.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return (await iGet<Array<Webchannel>>(\"loadChannels\", data)) ?? []\r\n }\r\n\r\n async loadChannelById(params: Readonly<{ channelId: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelId: params.channelId }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelById\", data)\r\n }\r\n\r\n async loadChannelByNo(params: Readonly<{ channelNo: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelNo: params.channelNo }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByNo\", data)\r\n }\r\n\r\n async loadChannelByUri(params: Readonly<{ uri: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { uri: params.uri }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByUri\", data)\r\n }\r\n\r\n // ========== 产品 ==========\r\n\r\n async loadProductDetail(proId: string): Promise<ProductContent | undefined> {\r\n return iGet<ProductContent>(\"loadProductDetail\", { data: { proId } })\r\n }\r\n\r\n async loadProductPageInfo(params: Readonly<{ channelId?: string; keyword?: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ProductContent>> {\r\n return (await iGet<Array<ProductContent>>(\"loadProductListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 图文 ==========\r\n\r\n async loadNewsDetail(newId: string): Promise<NewsContent | undefined> {\r\n return iGet<NewsContent>(\"loadNewsDetail\", { data: { newId } })\r\n }\r\n\r\n async loadNewsPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsPageInfoByGroupId(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfoByGroupId\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<NewsContent>> {\r\n return (await iGet<Array<NewsContent>>(\"loadNewsListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 相册 ==========\r\n\r\n async loadPhotoDetail(photoId: string): Promise<PhotoContent | undefined> {\r\n return iGet<PhotoContent>(\"loadPhotoDetail\", { data: { photoId } })\r\n }\r\n\r\n async loadPhotoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<PhotoContent>> {\r\n return (await iGet<Array<PhotoContent>>(\"loadPhotoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 视频 ==========\r\n\r\n async loadVideoDetail(videoId: string): Promise<VideoContent | undefined> {\r\n return iGet<VideoContent>(\"loadVideoDetail\", { data: { videoId } })\r\n }\r\n\r\n async loadVideoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<VideoContent>> {\r\n return (await iGet<Array<VideoContent>>(\"loadVideoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 活动 ==========\r\n\r\n async loadActivityDetail(activityId: string): Promise<ActivityContent | undefined> {\r\n return iGet<ActivityContent>(\"loadActivityDetail\", { data: { activityId } })\r\n }\r\n\r\n async loadActivityPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ActivityContent>> {\r\n return (await iGet<Array<ActivityContent>>(\"loadActivityListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 评论/订阅/联系 ==========\r\n\r\n async loadReviewList(params: Readonly<{ entityNo?: string; rowCount?: string }>): Promise<Array<Reviews>> {\r\n return (await iGet<Array<Reviews>>(\"loadReviewList\", { data: { ...params } })) ?? []\r\n }\r\n\r\n async submitComment(data: Readonly<Partial<Reviews>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitComment\", data as Record<string, any>)\r\n }\r\n\r\n async subscribe(data: Readonly<Pick<SubscribeUser, 'email'> & Partial<Pick<SubscribeUser, 'nickname'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"subscribe\", data as Record<string, any>)\r\n }\r\n\r\n async submitContactUs(data: Readonly<Partial<ContactUs>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitContactUs\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 友链 ==========\r\n\r\n async loadLinkGroups(): Promise<Array<LinkGroup>> {\r\n return (await iGet<Array<LinkGroup>>(\"loadLinkGroups\")) ?? []\r\n }\r\n\r\n async loadFriendLinks(count?: number): Promise<Array<FriendLink>> {\r\n return (await iGet<Array<FriendLink>>(\"loadFriendLinks\", { data: count ? { count: String(count) } : {} })) ?? []\r\n }\r\n\r\n async submitLink(data: Readonly<Pick<FriendLink, 'name' | 'url'> & Partial<Pick<FriendLink, 'description'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitLink\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 商城 ==========\r\n\r\n async getSpecDescription(code: string): Promise<SpecDescription | undefined> {\r\n return iGet<SpecDescription>(\"getSpecDescription\", { data: { code } })\r\n }\r\n\r\n /** 获取商品标签字典 */\r\n async loadGoodsTagList(): Promise<Array<GoodsTag>> {\r\n return (await iGet<Array<GoodsTag>>(\"getGoodsTagList\")) ?? []\r\n }\r\n\r\n /** 获取所有货架(类目)列表 */\r\n async loadGoodsShelves(): Promise<Array<GoodsCategory>> {\r\n return (await iGet<Array<GoodsCategory>>(\"getGoodsShelves\")) ?? []\r\n }\r\n\r\n /** 获取指定货架的商品列表 */\r\n async loadCategoryGoods(params?: Readonly<{ cateCode: string; count?: number }>): Promise<Array<GoodsItem>> {\r\n const data: Record<string, string> = {}\r\n if (params?.cateCode) data.cateCode = params.cateCode\r\n if (params?.count !== undefined) data.count = String(params.count)\r\n return (await iGet<Array<GoodsItem>>(\"getCategoryGoods\", { data })) ?? []\r\n }\r\n\r\n /** 分页搜索商品 */\r\n async searchGoods(params: Readonly<{ cateCode?: string; keyword?: string } & PageParams>): Promise<PageInfo<GoodsItem> | undefined> {\r\n return iGet<PageInfo<GoodsItem>>(\"searchGoods\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n}\r\n\r\nexport const icmsClient = new ICMSClient()\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"icms-api.client.es.js","names":["body: string | FormData","data: Record<string, string>"],"sources":["../src/client-helper.ts","../src/client.ts"],"sourcesContent":["/**\r\n * 客户端 HTTP 辅助函数\r\n * 从 @rock.chen/icms-http-client/web-client 内联,\r\n * 避免引入 pino/pino-pretty/sonic-boom 等 Node.js 服务端模块\r\n */\r\n\r\n// ---- 类型 ----\r\n\r\n/** Cookie 读写接口 */\r\nexport interface ICookies {\r\n get(key: string): string | undefined;\r\n set?(key: string, value: string): void;\r\n delete?(key: string): void;\r\n}\r\n\r\n/** API 返回模型 */\r\nexport interface ResultModel<T = unknown> {\r\n code: number;\r\n success: boolean;\r\n msg: string;\r\n data?: T;\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/** GET 请求参数 */\r\nexport interface ClientGetParams {\r\n data?: Record<string, string>;\r\n headers?: Record<string, string>;\r\n useCache?: boolean;\r\n showError?: (msg: string) => void;\r\n}\r\n\r\n/** POST 请求参数 */\r\nexport interface ClientPostParams {\r\n data?: Record<string, unknown> | FormData;\r\n headers?: Record<string, string>;\r\n showError?: (msg: string) => void;\r\n showSuccess?: (msg: string) => void;\r\n}\r\n\r\n/** Cookie 名称常量 */\r\nexport const COOKIE_NAMES = {\r\n IBOOT_DEVICE_ID: \"dvid\",\r\n IBOOT_LANG: \"lang\",\r\n IBOOT_WEBSITE_ID: \"wid\",\r\n IBOOT_WEBSITE_NO: \"wno\",\r\n IBOOT_TOKEN: \"token\",\r\n IBOOT_USER: \"user\",\r\n} as const;\r\n\r\n/** Content-Type 常量 */\r\nexport const CONTENT_TYPE_KEY = \"Content-Type\";\r\nexport const CONTENT_TYPE_MAP = {\r\n applicationJson: \"application/json\",\r\n multipartFormData: \"multipart/form-data\",\r\n applicationXwwwFormUrlencoded: \"application/x-www-form-urlencoded\",\r\n} as const;\r\n\r\n/** 用户信息 */\r\nexport interface User {\r\n id: string;\r\n name: string;\r\n userType: number;\r\n username?: string;\r\n nickname?: string;\r\n sex?: number;\r\n headImg?: string;\r\n lastLoginTime?: string;\r\n tokenExpired?: string;\r\n deviceId?: string;\r\n status?: number;\r\n accountType?: number;\r\n enabled?: boolean;\r\n userFrom?: number;\r\n needToReview?: boolean;\r\n socketOnline?: boolean;\r\n createTime?: string;\r\n mustChangePwd?: boolean;\r\n}\r\n\r\n// ---- Logger(浏览器 console 实现,唔引入 pino) ----\r\n\r\nconst logger = {\r\n info: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.info(tag, msg);\r\n },\r\n debug: (msg: unknown, tag: string) => {\r\n if (process.env.NODE_ENV !== \"production\") console.debug(tag, msg);\r\n },\r\n error: (msg: unknown) => {\r\n console.error(msg);\r\n },\r\n};\r\n\r\n// ---- 函数 ----\r\n\r\n/** 从 cookie 中读取已登录用户信息 */\r\nexport const getLoginUser = (cookies: ICookies): User | undefined => {\r\n if (cookies.get) {\r\n const userjson = cookies.get(COOKIE_NAMES.IBOOT_USER);\r\n if (userjson && userjson.length > 0) {\r\n return JSON.parse(userjson);\r\n }\r\n }\r\n return undefined;\r\n};\r\n\r\nconst getBaseUrl = (urlName: string) => {\r\n const baseUrl = process.env.BASE_URL || \"/api/services\";\r\n return `${baseUrl}?m=${urlName}`;\r\n};\r\n\r\n/** 客户端 GET 请求 */\r\nconst get = async <T>(\r\n urlName: string,\r\n opts?: ClientGetParams,\r\n): Promise<ResultModel<T>> => {\r\n let url = getBaseUrl(urlName);\r\n if (opts?.data) {\r\n const params = new URLSearchParams(opts.data);\r\n url += `&${params}`;\r\n }\r\n const heads = opts?.headers;\r\n logger.info({ url, headers: heads }, \"GET\");\r\n const res = await fetch(url, {\r\n method: \"GET\",\r\n headers: heads,\r\n cache: opts?.useCache ? \"force-cache\" : \"default\",\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"GET_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** 客户端 POST 请求 */\r\nconst post = async <T>(\r\n urlName: string,\r\n opts?: ClientPostParams,\r\n): Promise<ResultModel<T>> => {\r\n const data = opts?.data ?? {};\r\n let body: string | FormData;\r\n const proxyHeaders = new Headers(opts?.headers);\r\n if (!(data instanceof FormData)) {\r\n body = JSON.stringify(data);\r\n proxyHeaders.set(CONTENT_TYPE_KEY, CONTENT_TYPE_MAP.applicationJson);\r\n } else {\r\n body = data;\r\n }\r\n logger.info({ url: urlName, headers: proxyHeaders }, \"POST\");\r\n const res = await fetch(urlName, {\r\n method: \"POST\",\r\n headers: proxyHeaders,\r\n body,\r\n });\r\n\r\n if (res.ok) {\r\n const headersMap = Object.fromEntries(res.headers.entries());\r\n const result = { ...(await res.json()), headers: headersMap };\r\n logger.debug(result, \"POST_RESULT\");\r\n return result;\r\n }\r\n const msg = { code: res.status, success: false, msg: res.statusText };\r\n logger.error(msg);\r\n return msg;\r\n};\r\n\r\n/** GET 请求快捷方法(自动解包 data) */\r\nexport const iGet = async <T>(\r\n url: string,\r\n opts?: ClientGetParams,\r\n): Promise<T | undefined> => {\r\n const res = await get<T>(url, opts);\r\n if (res.success) {\r\n return res.data as T;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Get request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Get request error!\");\r\n};\r\n\r\n/** POST 请求快捷方法(自动解包 data) */\r\nexport const iPost = async <T>(\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<T | undefined> => {\r\n const res = await post<T>(url, opts);\r\n if (res.success) {\r\n return res.data;\r\n }\r\n if (opts?.showError) {\r\n opts.showError(res.msg ?? \"Post request error!\");\r\n return;\r\n }\r\n throw Error(res.msg ?? \"Post request error!\");\r\n};\r\n\r\n/** POST 请求,返回 boolean */\r\nexport const iPostSuccess = async (\r\n url: string,\r\n opts?: ClientPostParams,\r\n): Promise<boolean> => {\r\n const res = await post(url, opts);\r\n if (res.success) {\r\n if (opts?.showSuccess) opts.showSuccess(res.msg ?? \"SUCCESS\");\r\n return true;\r\n }\r\n if (opts?.showError) opts.showError(res.msg ?? \"Post request error!\");\r\n return false;\r\n};\r\n","import type { Member, FriendLink, LinkGroup, I18NWebsite, Webchannel, WebsiteInfo } from \"./types/site\"\r\nimport type { ProductContent } from \"./types/cms-product\"\r\nimport type { PageInfo, PageParams } from \"./types/cms-base\"\r\nimport type { NewsContent } from \"./types/cms-news\"\r\nimport type { PhotoContent } from \"./types/cms-photo\"\r\nimport type { VideoContent } from \"./types/cms-video\"\r\nimport type { ActivityContent } from \"./types/cms-activity\"\r\nimport type { Reviews, SubscribeUser, ContactUs } from \"./types/cms-message\"\r\nimport type { SpecDescription, GoodsItem, GoodsCategory, GoodsTag } from \"./types/cms-mall\"\r\nimport { getLoginUser, ICookies, iGet, iPost, iPostSuccess } from \"./client-helper\"\r\n\r\n\r\nexport class ICMSClient {\r\n private cookies: ICookies | null = null\r\n\r\n constructor() {\r\n }\r\n\r\n setICookies(c: ICookies): ICMSClient {\r\n this.cookies = c;\r\n return this;\r\n }\r\n\r\n // ========== 用户认证 ==========\r\n\r\n async login({ username, password }: Readonly<{ username: string, password: string }>): Promise<Member | undefined> {\r\n await iPost('login', {\r\n data: { username, password }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await iPost('logout');\r\n }\r\n\r\n // ========== 用户注册 ==========\r\n\r\n /**\r\n * 注册 C 端会员(手机号/邮箱 + 密码)\r\n * @param username 手机号或邮箱\r\n * @param password 密码\r\n * @param nickname 昵称(可选)\r\n * @returns 注册成功且已登录时返回 Member,否则 undefined\r\n */\r\n async register({ username, password, nickname }: Readonly<{ username: string, password: string, nickname?: string }>): Promise<Member | undefined> {\r\n await iPost('register', {\r\n data: { username, password, nickname }\r\n })\r\n if (this.cookies) {\r\n return getLoginUser(this.cookies)\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * 发送邮箱验证码(注册/找回密码用)\r\n * @param account 邮箱地址\r\n * @returns 是否发送成功\r\n */\r\n async sendVCode(account: string): Promise<boolean> {\r\n const result = await iPost<number>('sendcode', {\r\n data: { account }\r\n })\r\n return result === 1\r\n }\r\n\r\n /**\r\n * 检查用户名(手机号/邮箱)是否已注册\r\n */\r\n async checkRegistered(username: string): Promise<boolean> {\r\n const result = await iGet<boolean>('checkRegister', {\r\n data: { username }\r\n })\r\n return result ?? false\r\n }\r\n\r\n // ========== 网站信息 ==========\r\n\r\n async loadI18nList(): Promise<Array<I18NWebsite>> {\r\n return (await iGet<Array<I18NWebsite>>(\"loadI18nList\")) ?? []\r\n }\r\n\r\n async loadWebsite(params?: Readonly<{ showNav?: boolean; showFriendLink?: boolean; showI18NList?: boolean }>): Promise<WebsiteInfo | undefined> {\r\n const data: Record<string, string> = {\r\n showNav: String(params?.showNav ?? true),\r\n showFriendLink: String(params?.showFriendLink ?? false),\r\n }\r\n return iGet<WebsiteInfo>(\"loadWebsite\", data)\r\n }\r\n\r\n async loadChannels(params?: Readonly<{ channelNo?: string; showChildren?: boolean }>): Promise<Array<Webchannel>> {\r\n const data: Record<string, string> = {}\r\n if (params?.channelNo) data.channelNo = params.channelNo\r\n if (params?.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return (await iGet<Array<Webchannel>>(\"loadChannels\", data)) ?? []\r\n }\r\n\r\n async loadChannelById(params: Readonly<{ channelId: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelId: params.channelId }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelById\", data)\r\n }\r\n\r\n async loadChannelByNo(params: Readonly<{ channelNo: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { channelNo: params.channelNo }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByNo\", data)\r\n }\r\n\r\n async loadChannelByUri(params: Readonly<{ uri: string; showChildren?: boolean }>): Promise<Webchannel | undefined> {\r\n const data: Record<string, string> = { uri: params.uri }\r\n if (params.showChildren !== undefined) data.showChildren = String(params.showChildren)\r\n return iGet<Webchannel>(\"loadChannelByUri\", data)\r\n }\r\n\r\n // ========== 产品 ==========\r\n\r\n async loadProductDetail(proId: string): Promise<ProductContent | undefined> {\r\n return iGet<ProductContent>(\"loadProductDetail\", { data: { proId } })\r\n }\r\n\r\n async loadProductPageInfo(params: Readonly<{ channelId?: string; keyword?: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ProductContent> | undefined> {\r\n return iGet<PageInfo<ProductContent>>(\"loadProductPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadProductListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ProductContent>> {\r\n return (await iGet<Array<ProductContent>>(\"loadProductListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 图文 ==========\r\n\r\n async loadNewsDetail(newId: string): Promise<NewsContent | undefined> {\r\n return iGet<NewsContent>(\"loadNewsDetail\", { data: { newId } })\r\n }\r\n\r\n async loadNewsPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsPageInfoByGroupId(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<NewsContent> | undefined> {\r\n return iGet<PageInfo<NewsContent>>(\"loadNewsPageInfoByGroupId\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadNewsListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<NewsContent>> {\r\n return (await iGet<Array<NewsContent>>(\"loadNewsListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 相册 ==========\r\n\r\n async loadPhotoDetail(photoId: string): Promise<PhotoContent | undefined> {\r\n return iGet<PhotoContent>(\"loadPhotoDetail\", { data: { photoId } })\r\n }\r\n\r\n async loadPhotoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<PhotoContent> | undefined> {\r\n return iGet<PageInfo<PhotoContent>>(\"loadPhotoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadPhotoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<PhotoContent>> {\r\n return (await iGet<Array<PhotoContent>>(\"loadPhotoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 视频 ==========\r\n\r\n async loadVideoDetail(videoId: string): Promise<VideoContent | undefined> {\r\n return iGet<VideoContent>(\"loadVideoDetail\", { data: { videoId } })\r\n }\r\n\r\n async loadVideoPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<VideoContent> | undefined> {\r\n return iGet<PageInfo<VideoContent>>(\"loadVideoPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadVideoListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<VideoContent>> {\r\n return (await iGet<Array<VideoContent>>(\"loadVideoListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 活动 ==========\r\n\r\n async loadActivityDetail(activityId: string): Promise<ActivityContent | undefined> {\r\n return iGet<ActivityContent>(\"loadActivityDetail\", { data: { activityId } })\r\n }\r\n\r\n async loadActivityPageInfo(params: Readonly<{ channelNo?: string; keyword?: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfo\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityPageInfoByGroup(params: Readonly<{ groupId: string } & PageParams>): Promise<PageInfo<ActivityContent> | undefined> {\r\n return iGet<PageInfo<ActivityContent>>(\"loadActivityPageInfoByGroup\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n\r\n async loadActivityListByGroupId(params: Readonly<{ groupId: string }>): Promise<Array<ActivityContent>> {\r\n return (await iGet<Array<ActivityContent>>(\"loadActivityListByGroupId\", { data: { groupId: params.groupId } })) ?? []\r\n }\r\n\r\n // ========== 评论/订阅/联系 ==========\r\n\r\n async loadReviewList(params: Readonly<{ entityNo?: string; rowCount?: string }>): Promise<Array<Reviews>> {\r\n return (await iGet<Array<Reviews>>(\"loadReviewList\", { data: { ...params } })) ?? []\r\n }\r\n\r\n async submitComment(data: Readonly<Partial<Reviews>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitComment\", data as Record<string, any>)\r\n }\r\n\r\n async subscribe(data: Readonly<Pick<SubscribeUser, 'email'> & Partial<Pick<SubscribeUser, 'nickname'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"subscribe\", data as Record<string, any>)\r\n }\r\n\r\n async submitContactUs(data: Readonly<Partial<ContactUs>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitContactUs\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 友链 ==========\r\n\r\n async loadLinkGroups(): Promise<Array<LinkGroup>> {\r\n return (await iGet<Array<LinkGroup>>(\"loadLinkGroups\")) ?? []\r\n }\r\n\r\n async loadFriendLinks(count?: number): Promise<Array<FriendLink>> {\r\n return (await iGet<Array<FriendLink>>(\"loadFriendLinks\", { data: count ? { count: String(count) } : {} })) ?? []\r\n }\r\n\r\n async submitLink(data: Readonly<Pick<FriendLink, 'name' | 'url'> & Partial<Pick<FriendLink, 'description'>>>): Promise<boolean> {\r\n return await iPostSuccess(\"submitLink\", data as Record<string, any>)\r\n }\r\n\r\n // ========== 商城 ==========\r\n\r\n async getSpecDescription(code: string): Promise<SpecDescription | undefined> {\r\n return iGet<SpecDescription>(\"getSpecDescription\", { data: { code } })\r\n }\r\n\r\n /** 获取商品标签字典 */\r\n async loadGoodsTagList(): Promise<Array<GoodsTag>> {\r\n return (await iGet<Array<GoodsTag>>(\"getGoodsTagList\")) ?? []\r\n }\r\n\r\n /** 获取所有货架(类目)列表 */\r\n async loadGoodsShelves(): Promise<Array<GoodsCategory>> {\r\n return (await iGet<Array<GoodsCategory>>(\"getGoodsShelves\")) ?? []\r\n }\r\n\r\n /** 获取指定货架的商品列表 */\r\n async loadCategoryGoods(params?: Readonly<{ cateCode: string; count?: number }>): Promise<Array<GoodsItem>> {\r\n const data: Record<string, string> = {}\r\n if (params?.cateCode) data.cateCode = params.cateCode\r\n if (params?.count !== undefined) data.count = String(params.count)\r\n return (await iGet<Array<GoodsItem>>(\"getCategoryGoods\", { data })) ?? []\r\n }\r\n\r\n /** 分页搜索商品 */\r\n async searchGoods(params: Readonly<{ cateCode?: string; keyword?: string } & PageParams>): Promise<PageInfo<GoodsItem> | undefined> {\r\n return iGet<PageInfo<GoodsItem>>(\"searchGoods\", { data: { ...params, pageNo: String(params.pageNo), pageSize: String(params.pageSize) } })\r\n }\r\n}\r\n\r\nexport const icmsClient = new ICMSClient()\r\n"],"mappings":"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"}
|
package/dist/icms-api.es.js
CHANGED
|
@@ -44,11 +44,11 @@ var k = {
|
|
|
44
44
|
IBOOT_WEBSITE_NO: "wno",
|
|
45
45
|
IBOOT_TOKEN: "token",
|
|
46
46
|
IBOOT_USER: "user"
|
|
47
|
-
},
|
|
47
|
+
}, K = "Content-Type", M = {
|
|
48
48
|
applicationJson: "application/json",
|
|
49
49
|
multipartFormData: "multipart/form-data",
|
|
50
50
|
applicationXwwwFormUrlencoded: "application/x-www-form-urlencoded"
|
|
51
|
-
}, nr = "zh-CN",
|
|
51
|
+
}, nr = "zh-CN", $ = {
|
|
52
52
|
DEVICE_ID: "Device-Id",
|
|
53
53
|
LANG: "Lang",
|
|
54
54
|
WEBSITE_ID: "Website-Id",
|
|
@@ -64,7 +64,7 @@ var k = {
|
|
|
64
64
|
sameSite: "strict"
|
|
65
65
|
}), ir = (e) => {
|
|
66
66
|
if (e.get) {
|
|
67
|
-
let t = e.get(
|
|
67
|
+
let t = e.get($.DEVICE_ID), n = e.get($.LANG), r = e.get($.WEBSITE_ID), i = e.get($.WEBSITE_NO), a = {};
|
|
68
68
|
return t && t.length > 0 && (a.deviceId = t), n && n.length > 0 && (a.lang = n), r && r.length > 0 && (a.websiteId = r), i && i.length > 0 && (a.websiteNo = i), a;
|
|
69
69
|
}
|
|
70
70
|
throw Error("The get method of IStorage has not been implemented.");
|
|
@@ -173,7 +173,7 @@ var k = {
|
|
|
173
173
|
"User-From": this.userFrom,
|
|
174
174
|
"Api-Key": this.apiKey
|
|
175
175
|
};
|
|
176
|
-
return n[
|
|
176
|
+
return n[K] = M.applicationXwwwFormUrlencoded, this.lang && this.lang.length > 0 && (n.Lang = this.lang), this.websiteId && this.websiteId.length > 0 && (n["Web-Id"] = this.websiteId), this.websiteNo && this.websiteNo.length > 0 && (n["Web-No"] = this.websiteNo), t && (t.token && t.token.length > 0 && t.username && t.username.length > 0 && (n.Authorization = t.token, n.Username = t.username), t.xcsrf && (n[t.xcsrf.csrfHeader] = t.xcsrf.csrfToken)), n.Sign = await this.sign(e), n;
|
|
177
177
|
}
|
|
178
178
|
async helloIboot() {
|
|
179
179
|
if (this.helloMethod.length <= 0) return this.apiKey;
|
|
@@ -181,7 +181,7 @@ var k = {
|
|
|
181
181
|
"Res-Type": "json",
|
|
182
182
|
"Api-Key": this.apiKey
|
|
183
183
|
};
|
|
184
|
-
t[
|
|
184
|
+
t[K] = M.applicationXwwwFormUrlencoded;
|
|
185
185
|
let n = {
|
|
186
186
|
url: e,
|
|
187
187
|
headers: t
|
|
@@ -245,7 +245,7 @@ var k = {
|
|
|
245
245
|
urlParams: c,
|
|
246
246
|
token: n
|
|
247
247
|
});
|
|
248
|
-
a && s && (l[
|
|
248
|
+
a && s && (l[K] = `multipart/form-data; boundary=${s}`);
|
|
249
249
|
let u = this.getApiUrl(e), f = {
|
|
250
250
|
url: u,
|
|
251
251
|
headers: l,
|
|
@@ -1457,7 +1457,7 @@ function Ir() {
|
|
|
1457
1457
|
}
|
|
1458
1458
|
})(Ve)), Ve;
|
|
1459
1459
|
}
|
|
1460
|
-
var
|
|
1460
|
+
var $e = {}, Ke = { exports: {} }, Ct;
|
|
1461
1461
|
function Ar() {
|
|
1462
1462
|
return Ct || (Ct = 1, (() => {
|
|
1463
1463
|
var e = { 226: function(e, t) {
|
|
@@ -1477,7 +1477,7 @@ function Ar() {
|
|
|
1477
1477
|
return typeof e === u ? e.replace(/[^\d\.]/g, a).split(".")[0] : r;
|
|
1478
1478
|
}, J = function(e, t) {
|
|
1479
1479
|
if (typeof e === u) return e = e.replace(/^\s\s*/, a), typeof t === c ? e : e.substring(0, w);
|
|
1480
|
-
},
|
|
1480
|
+
}, Y = function(e, t) {
|
|
1481
1481
|
for (var n = 0, i, a, o, c, u, d; n < t.length && !u;) {
|
|
1482
1482
|
var f = t[n], p = t[n + 1];
|
|
1483
1483
|
for (i = a = 0; i < f.length && !u && f[i];) if (u = f[i++].exec(e), u) for (o = 0; o < p.length; o++) d = u[++a], c = p[o], typeof c === l && c.length > 0 ? c.length === 2 ? typeof c[1] == s ? this[c[0]] = c[1].call(this, d) : this[c[0]] = c[1] : c.length === 3 ? typeof c[1] === s && !(c[1].exec && c[1].test) ? this[c[0]] = d ? c[1].call(this, d, c[2]) : r : this[c[0]] = d ? d.replace(c[1], c[2]) : r : c.length === 4 && (this[c[0]] = d ? c[3].call(this, d.replace(c[1], c[2])) : r) : this[c] = d || r;
|
|
@@ -2368,24 +2368,24 @@ function Ar() {
|
|
|
2368
2368
|
],
|
|
2369
2369
|
[p, g]
|
|
2370
2370
|
]
|
|
2371
|
-
},
|
|
2372
|
-
if (typeof e === l && (t = e, e = r), !(this instanceof
|
|
2371
|
+
}, X = function(e, t) {
|
|
2372
|
+
if (typeof e === l && (t = e, e = r), !(this instanceof X)) return new X(e, t).getResult();
|
|
2373
2373
|
var i = typeof n !== c && n.navigator ? n.navigator : r, o = e || (i && i.userAgent ? i.userAgent : a), v = i && i.userAgentData ? i.userAgentData : r, x = t ? H(Cn, t) : Cn, S = i && i.userAgent == o;
|
|
2374
2374
|
return this.getBrowser = function() {
|
|
2375
2375
|
var e = {};
|
|
2376
|
-
return e[p] = r, e[g] = r,
|
|
2376
|
+
return e[p] = r, e[g] = r, Y.call(e, o, x.browser), e[d] = yn(e[g]), S && i && i.brave && typeof i.brave.isBrave == s && (e[p] = "Brave"), e;
|
|
2377
2377
|
}, this.getCPU = function() {
|
|
2378
2378
|
var e = {};
|
|
2379
|
-
return e[_] = r,
|
|
2379
|
+
return e[_] = r, Y.call(e, o, x.cpu), e;
|
|
2380
2380
|
}, this.getDevice = function() {
|
|
2381
2381
|
var e = {};
|
|
2382
|
-
return e[h] = r, e[f] = r, e[m] = r,
|
|
2382
|
+
return e[h] = r, e[f] = r, e[m] = r, Y.call(e, o, x.device), S && !e[m] && v && v.mobile && (e[m] = y), S && e[f] == "Macintosh" && i && typeof i.standalone !== c && i.maxTouchPoints && i.maxTouchPoints > 2 && (e[f] = "iPad", e[m] = b), e;
|
|
2383
2383
|
}, this.getEngine = function() {
|
|
2384
2384
|
var e = {};
|
|
2385
|
-
return e[p] = r, e[g] = r,
|
|
2385
|
+
return e[p] = r, e[g] = r, Y.call(e, o, x.engine), e;
|
|
2386
2386
|
}, this.getOS = function() {
|
|
2387
2387
|
var e = {};
|
|
2388
|
-
return e[p] = r, e[g] = r,
|
|
2388
|
+
return e[p] = r, e[g] = r, Y.call(e, o, x.os), S && !e[p] && v && v.platform != "Unknown" && (e[p] = v.platform.replace(/chrome os/i, _n).replace(/macos/i, vn)), e;
|
|
2389
2389
|
}, this.getResult = function() {
|
|
2390
2390
|
return {
|
|
2391
2391
|
ua: this.getUA(),
|
|
@@ -2401,11 +2401,11 @@ function Ar() {
|
|
|
2401
2401
|
return o = typeof e === u && e.length > w ? J(e, w) : e, this;
|
|
2402
2402
|
}, this.setUA(o), this;
|
|
2403
2403
|
};
|
|
2404
|
-
|
|
2404
|
+
X.VERSION = i, X.BROWSER = W([
|
|
2405
2405
|
p,
|
|
2406
2406
|
g,
|
|
2407
2407
|
d
|
|
2408
|
-
]),
|
|
2408
|
+
]), X.CPU = W([_]), X.DEVICE = W([
|
|
2409
2409
|
f,
|
|
2410
2410
|
h,
|
|
2411
2411
|
m,
|
|
@@ -2415,16 +2415,16 @@ function Ar() {
|
|
|
2415
2415
|
b,
|
|
2416
2416
|
S,
|
|
2417
2417
|
C
|
|
2418
|
-
]),
|
|
2419
|
-
var
|
|
2420
|
-
if (
|
|
2421
|
-
var
|
|
2422
|
-
|
|
2423
|
-
return
|
|
2424
|
-
},
|
|
2425
|
-
|
|
2426
|
-
var t =
|
|
2427
|
-
for (var n in t)
|
|
2418
|
+
]), X.ENGINE = X.OS = W([p, g]), typeof t === c ? typeof n !== c && (n.UAParser = X) : (e.exports && (t = e.exports = X), t.UAParser = X);
|
|
2419
|
+
var Z = typeof n !== c && (n.jQuery || n.Zepto);
|
|
2420
|
+
if (Z && !Z.ua) {
|
|
2421
|
+
var Q = new X();
|
|
2422
|
+
Z.ua = Q.getResult(), Z.ua.get = function() {
|
|
2423
|
+
return Q.getUA();
|
|
2424
|
+
}, Z.ua.set = function(e) {
|
|
2425
|
+
Q.setUA(e);
|
|
2426
|
+
var t = Q.getResult();
|
|
2427
|
+
for (var n in t) Z.ua[n] = t[n];
|
|
2428
2428
|
};
|
|
2429
2429
|
}
|
|
2430
2430
|
})(typeof window == "object" ? window : this);
|
|
@@ -2440,8 +2440,8 @@ function Ar() {
|
|
|
2440
2440
|
}
|
|
2441
2441
|
return a.exports;
|
|
2442
2442
|
}
|
|
2443
|
-
typeof n < "u" && (n.ab = {}.dirname + "/"),
|
|
2444
|
-
})()),
|
|
2443
|
+
typeof n < "u" && (n.ab = {}.dirname + "/"), Ke.exports = n(226);
|
|
2444
|
+
})()), Ke.exports;
|
|
2445
2445
|
}
|
|
2446
2446
|
var Lt;
|
|
2447
2447
|
function kt() {
|
|
@@ -2480,9 +2480,9 @@ function kt() {
|
|
|
2480
2480
|
function o({ headers: e }) {
|
|
2481
2481
|
return a(e.get("user-agent") || void 0);
|
|
2482
2482
|
}
|
|
2483
|
-
})(
|
|
2483
|
+
})($e)), $e;
|
|
2484
2484
|
}
|
|
2485
|
-
var
|
|
2485
|
+
var Ye = {}, Ut;
|
|
2486
2486
|
function Or() {
|
|
2487
2487
|
return Ut || (Ut = 1, (function(e) {
|
|
2488
2488
|
Object.defineProperty(e, "__esModule", { value: !0 }), Object.defineProperty(e, "URLPattern", {
|
|
@@ -2492,7 +2492,7 @@ function Or() {
|
|
|
2492
2492
|
}
|
|
2493
2493
|
});
|
|
2494
2494
|
let t = typeof URLPattern > "u" ? void 0 : URLPattern;
|
|
2495
|
-
})(
|
|
2495
|
+
})(Ye)), Ye;
|
|
2496
2496
|
}
|
|
2497
2497
|
var Dt;
|
|
2498
2498
|
function xr() {
|
|
@@ -2509,11 +2509,11 @@ function xr() {
|
|
|
2509
2509
|
})(ve, ve.exports)), ve.exports;
|
|
2510
2510
|
}
|
|
2511
2511
|
xr();
|
|
2512
|
-
var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "logout", e))(et || {}),
|
|
2512
|
+
var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "logout", e))(et || {}), Je = {
|
|
2513
2513
|
login: "login",
|
|
2514
2514
|
logout: "logout",
|
|
2515
2515
|
unknown: ""
|
|
2516
|
-
},
|
|
2516
|
+
}, Yr = class {
|
|
2517
2517
|
config;
|
|
2518
2518
|
http;
|
|
2519
2519
|
adapter;
|
|
@@ -2538,7 +2538,7 @@ var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "l
|
|
|
2538
2538
|
}
|
|
2539
2539
|
async processRequest(e) {
|
|
2540
2540
|
let t = e.url.searchParams, n = t.get("m") ?? "unknown", r = {
|
|
2541
|
-
|
|
2541
|
+
...Je,
|
|
2542
2542
|
...this.config.APIMAP
|
|
2543
2543
|
}[n], i = e.cookies;
|
|
2544
2544
|
if (this.http.setHttpOptsToCookies(i), !r || r.length === 0) return this.createErrorResponse(404, "API not found", i);
|
|
@@ -2550,7 +2550,7 @@ var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "l
|
|
|
2550
2550
|
}, "processRequest");
|
|
2551
2551
|
let s = e.method;
|
|
2552
2552
|
if (s === "GET") {
|
|
2553
|
-
let n =
|
|
2553
|
+
let n = new URLSearchParams(t);
|
|
2554
2554
|
n.delete("m");
|
|
2555
2555
|
let i = await this.http.get({
|
|
2556
2556
|
url: r,
|
|
@@ -2593,7 +2593,7 @@ var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "l
|
|
|
2593
2593
|
}
|
|
2594
2594
|
createResponse({ url: e, result: t, config: n, req: r }) {
|
|
2595
2595
|
let i = {};
|
|
2596
|
-
i[
|
|
2596
|
+
i[K] = M.applicationJson;
|
|
2597
2597
|
let a = {
|
|
2598
2598
|
status: t.success ? 200 : t.code,
|
|
2599
2599
|
headers: i,
|
|
@@ -2603,11 +2603,11 @@ var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "l
|
|
|
2603
2603
|
};
|
|
2604
2604
|
if (t.success) {
|
|
2605
2605
|
switch (e) {
|
|
2606
|
-
case
|
|
2606
|
+
case Je[et[0]]:
|
|
2607
2607
|
let e = t.data;
|
|
2608
2608
|
ar(e, a);
|
|
2609
2609
|
break;
|
|
2610
|
-
case
|
|
2610
|
+
case Je[et[1]]:
|
|
2611
2611
|
a.cleanCookies = (e) => ur(e);
|
|
2612
2612
|
break;
|
|
2613
2613
|
}
|
|
@@ -2622,7 +2622,7 @@ var et = /* @__PURE__ */ ((e) => (e[e.login = 0] = "login", e[e.logout = 1] = "l
|
|
|
2622
2622
|
}
|
|
2623
2623
|
createErrorResponse(e, t, n) {
|
|
2624
2624
|
let r = {};
|
|
2625
|
-
return r[
|
|
2625
|
+
return r[K] = M.applicationJson, {
|
|
2626
2626
|
status: e,
|
|
2627
2627
|
headers: r,
|
|
2628
2628
|
cookies: n ? this.setCookies(n) : {},
|
|
@@ -3023,6 +3023,7 @@ var ICMSServer = class {
|
|
|
3023
3023
|
}, APIMAP = {
|
|
3024
3024
|
register: "guest/register",
|
|
3025
3025
|
checkRegister: "guest/checkRegister",
|
|
3026
|
+
sendcode: "guest/sendVCode",
|
|
3026
3027
|
loadI18nList: "guest/site/i18nList",
|
|
3027
3028
|
loadWebsite: "guest/site/currentWebSite",
|
|
3028
3029
|
loadChannels: "guest/site/getChannelListByNo",
|
|
@@ -3058,7 +3059,7 @@ var ICMSServer = class {
|
|
|
3058
3059
|
submitLink: "guest/site/addLink",
|
|
3059
3060
|
getSpecDescription: "guest/site/shop/getSpecDescription"
|
|
3060
3061
|
};
|
|
3061
|
-
const icmsRouter = async ({ request: e, routeAdapter: t, storage: n }) => await new
|
|
3062
|
+
const icmsRouter = async ({ request: e, routeAdapter: t, storage: n }) => await new Yr({
|
|
3062
3063
|
config: {
|
|
3063
3064
|
userType: Zt.TYPE_C,
|
|
3064
3065
|
APIMAP,
|