@polyv/product-sdk 1.0.0-rc-20250612.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.js +1 -0
- package/index.es.d.ts +1520 -0
- package/index.es.js +1201 -0
- package/index.umd.js +1 -0
- package/package.json +25 -0
package/index.umd.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).PolyvProductSDK={})}(this,(function(e){"use strict";var t=Object.defineProperty,r=(e,r,i)=>((e,r,i)=>r in e?t(e,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[r]=i)(e,"symbol"!=typeof r?r+"":r,i),i=(e=>(e.GetProductTagList="/live/v4/watch/channel/product/tag/list",e.GetProductListByShowId="/live/v3/sdk/watch/interactive/product/list-by-showId",e.GetProductListByTag="/live/v4/watch/channel/product/list",e.GetProductDataById="/live/v3/sdk/watch/interactive/product/get-by-product-id",e.GetOrderList="/live/v4/watch/channel/viewer/product/order/list",e.GetOrderDetail="/live/v4/watch/channel/viewer/product/order/get-detail",e.ConfirmOrder="/live/v4/watch/channel/viewer/product/order/finish",e.CreateOrder="/live/v4/watch/channel/product/order/create",e.PayOrder="/live/v4/watch/channel/product/order/pay",e.ApplyOrderRefund="/live/v4/watch/channel/product/order/refund",e.GetOrderPaymentProviders="/live/v4/watch/channel/product/order/payment-providers/get",e.GetAddressList="/live/v4/watch/channel/viewer/address/list",e.GetDefaultAddress="/live/v4/watch/channel/viewer/address/get-default",e.AddAddress="/live/v4/watch/channel/viewer/address/save",e.UpdateAddress="/live/v4/watch/channel/viewer/address/update",e.DeleteAddress="/live/v4/watch/channel/viewer/address/delete",e))(i||{});function a(e){if("boolean"!=typeof e)throw new Error("The value argument must be a boolean type");return e?"Y":"N"}function o(e,t){let r=String(e).toUpperCase();if("Y"!==r&&"N"!==r){if(null==t)throw new Error('The value argument must be "Y" or "N"');r=String(t).toUpperCase()}return"Y"===r}var n=(e=>(e.Normal="normal",e.Finance="finance",e.Position="position",e))(n||{}),s=(e=>(e[e.Normal=10]="Normal",e[e.MultiPlatform=11]="MultiPlatform",e[e.Native=12]="Native",e))(s||{}),d=(e=>(e.PopUp="POP_UP",e.NewWindow="NEW_WINDOW",e.CurrentWindow="CURRENT_WINDOW",e))(d||{}),c=(e=>(e[e.OnSale=1]="OnSale",e[e.OffSale=0]="OffSale",e))(c||{}),u=(e=>(e.Image="image",e.MaterialVideo="material-video",e))(u||{}),l=(e=>(e.NotExplained="notExplained",e.Explaining="explaining",e.Explained="explained",e))(l||{}),p=(e=>(e.Live="live",e.Playback="recordFile",e))(p||{}),h=(e=>(e.DirectBuy="inner",e.Link="link",e))(h||{}),y=(e=>(e.Amount="AMOUNT",e.Custom="CUSTOM",e))(y||{}),m=(e=>(e.Express="express",e.Virtual="virtual",e))(m||{}),P=(e=>(e.WxWorkCode="wxWorkCode",e.Custom="custom",e))(P||{}),v=(e=>(e.None="none",e.Custom="custom",e.External="external",e.Direct="direct",e.EnterpriseWeChat="enterpriseWeChat",e))(v||{});function f(e){let t=[];try{t=JSON.parse(e).filter((e=>!!e))}catch(r){console.error("parseFeature error",r)}return t}function g(e){const t={productId:e.productId,cover:e.cover,coverList:[e.cover],videoList:[],mediaList:[],name:e.name,description:e.productDesc,detail:e.productDetail,status:e.status,displayNumber:e.showId,buttonText:e.btnShow,featureTags:f(e.features)},r={linkType:e.linkType,jumpWay:d.NewWindow,link:e.link,pcLink:e.pcLink,mobileLink:e.mobileLink,mobileAppLink:e.mobileAppLink,androidLink:e.androidLink,iosLink:e.iosLink,otherLink:e.otherLink,wxMiniprogramOriginalId:e.wxMiniprogramOriginalId,wxMiniprogramAppId:e.wxMiniprogramAppId,wxMiniprogramLink:e.wxMiniprogramLink};if(e.ext)try{const i=JSON.parse(e.ext);t.coverList=i.coverList||[e.cover],t.videoList=(i.videoList||[]).map((e=>e.videoId)),r.jumpWay=i.jumpWay;const a=[];t.videoList.forEach((e=>{a.push({type:u.MaterialVideo,materialId:e})})),t.coverList.forEach((e=>{a.push({type:u.Image,url:e})})),t.mediaList=a}catch(s){console.error("filterInternlData error",s)}const i={explainStatus:e.explainStatus,explainType:e.explainType};let a;switch(e.productType){case n.Normal:a={...t,...r,...i,productType:n.Normal,priceType:e.priceType,buyType:e.buyType,realPrice:e.realPrice,originPrice:e.price,customPrice:e.customPrice,priceVisible:o(e.openPriceEnable,"Y"),deliveryType:e.deliveryType,customerServiceContact:e.customerServiceContact,customerServiceType:e.customerServiceType,stockEnabled:o(e.stockEnabled,"N"),stock:e.stock};break;case n.Finance:a={...t,...r,...i,productType:n.Finance,yield:e.yield};break;case n.Position:{t.description="",t.detail=e.productDesc;let o="";try{o=JSON.parse(e.params).treatment}catch(s){console.error(s)}a={...t,...r,...i,productType:n.Position,treatment:o};break}}if(!a)throw new Error("generate data fail");return a}class C{constructor(){this.__eventStore={}}__addOnEvent(e,t,r,i){if(!t||!r)return;let a=this.__eventStore[t];a||(a=[]),a.push({type:e,handler:r,callbackHandler:r.bind(i)}),this.__eventStore[t]=a}on(e,t,r=this){this.__addOnEvent("normal",e,t,r)}once(e,t,r=this){this.__addOnEvent("once",e,t,r)}off(e,t){let r=this.__eventStore[e];r&&(r=r.filter((e=>e.handler!==t)),this.__eventStore[e]=r)}emit(e,t){const r=this.__eventStore[e];r&&r.forEach((r=>{const{type:i,handler:a,callbackHandler:o}=r;"function"==typeof o&&o(t),"once"===i&&this.off(e,a)}))}destroy(){this.__eventStore={}}}const w=Object.prototype.hasOwnProperty;function S(e,t){return w.call(e,t)}function T(e,t,r,i){null==r&&(r=""),""===r&&i.ignoreEmpty||("function"==typeof i.encode&&(t=i.encode(t),r=-1!==["boolean","string","number"].indexOf(typeof r)?i.encode(String(r)):""),e.push(t+"="+r))}function E(e,t,r,i){r.forEach((r=>{T(e,t,r,i)}))}function b(e,t){const r=function(e,...t){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(let r=0;r<t.length;r++){const i=t[r];if(null!=i)for(const t in i)"__proto__"!==t&&S(i,t)&&(e[t]=i[t])}return e}({encode:encodeURIComponent},t),i=[];let a,o;for(a in e)S(e,a)&&(o=e[a],Array.isArray(o)?E(i,a,o,r):T(i,a,o,r));return i.join("&")}function k(e,t,r){if(e=String(e),null==t)return e;if(!(t="string"==typeof t?t.replace(/^[?&]/,""):b(t,r)))return e;const i=function(e){const t={leftContext:""};let r=e.indexOf("#");return-1!==r&&(t.hash=e.slice(r+1),e=e.slice(0,r)),r=e.indexOf("?"),-1!==r&&(t.search=e.slice(r+1),e=e.slice(0,r)),t.leftContext=e,t}(e);let a=i.search||"";return a&&"&"!==a.slice(-1)&&(a+="&"),a+=t,i.search=a,function(e){let t=e.leftContext;return null!=e.search&&(t+="?"+e.search),null!=e.hash&&(t+="#"+e.hash),t}(i)}var A=(e=>(e.OnSaleProduct="OnSaleProduct",e.OffSaleProduct="OffSaleProduct",e.AddProduct="AddProduct",e.DeleteProduct="DeleteProduct",e.ChangeProduct="ChangeProduct",e.MoveProduct="MoveProduct",e.ChangeProductRank="ChangeProductRank",e.ProductSoldOut="ProductSoldOut",e.PushProduct="PushProduct",e.CancelPushProduct="CancelPushProduct",e.ProductListEnabled="ProductListEnabled",e.RefreshProductList="RefreshProductList",e.ProductClick="ProductClick",e.ProductClickTimes="ProductClickTimes",e))(A||{});const I="product";var L=(e=>(e.Wechat="WECHAT",e.Alipay="ALIPAY",e))(L||{}),O=(e=>(e.WaitPay="wait_pay",e.WaitDelivery="wait_delivery",e.Delivering="delivering",e.Finish="finish",e.Close="close",e.Refunding="refunding",e.Refunded="refunded",e))(O||{}),_=(e=>(e.WaitPay="wait_pay",e.Payed="payed",e.Free="free",e))(_||{}),x=(e=>(e.Success="SUCCESS",e.Fail="FAIL",e.Processing="PROCESSING",e))(x||{}),N=(e=>(e.Unknown="unknown",e))(N||{}),R=(e=>(e.Unknown="unknown",e))(R||{});function D(e){return{customerServiceContact:e.customerServiceContact,customerServiceType:e.customerServiceType,deliveryType:e.deliveryType,cover:e.productCover,name:e.productName,productId:e.productId,productSnapshotId:e.productSnapshotId,quantity:e.quantity,realPrice:e.amount,totalAmount:e.totalAmount}}function W(e){return e?{id:"",address:e.address,area:e.area,mobile:e.mobile,name:e.name}:{id:"",address:"",area:"",mobile:"",name:""}}function U(e){const t={amount:e.amount,channelId:e.channelId,products:e.products.map(D),orderNo:e.orderNo,expressInfo:W()};switch(e.status){case O.WaitPay:return{...t,status:O.WaitPay,expiredAt:e.expireTime};case O.Close:return{...t,status:O.Close,expiredAt:e.expireTime};default:return{...t,status:e.status}}}function M(e){return{type:e.type,aliPayLink:e.codeUrl,orderNo:e.payId,payStatus:e.payStatus,wxAppId:e.appId,nonceStr:e.nonceStr,package:e.prepayId,paySign:e.paySign,signType:e.signType,timeStamp:Number(e.timeStamp),payProvider:e.payProvider}}function G(e){return e?{id:e.id,address:e.address,area:e.area,mobile:e.mobile,name:e.name}:{id:"",address:"",area:"",mobile:"",name:""}}var F=(e=>(e.BigCard="bigCard",e.SmallCard="smallCard",e))(F||{});e.Address=class{constructor(e,t){this.iarCore=e,this.config=t}async getAddressList(e={}){const{pageNumber:t=1,pageSize:r=10}=e,a=await this.iarCore.polyvApi.get(i.GetAddressList,{pageNumber:t,pageSize:r});return{...a,contents:a.contents.map(G)}}async getDefaultAddress(){return G(await this.iarCore.polyvApi.get(i.GetDefaultAddress,{}))}async addAddress(e){return G(await this.iarCore.polyvApi.post(i.AddAddress,e))}async updateAddress(e){return await this.iarCore.polyvApi.post(i.UpdateAddress,e)}async deleteAddress(e){return await this.iarCore.polyvApi.post(i.DeleteAddress,{id:e})}},e.AuthType=v,e.CreateOrderFailReason=N,e.Order=class{constructor(e,t){r(this,"OrderStatus",O),r(this,"PayStatus",_),r(this,"PaymentProvider",L),r(this,"ProductBuyType",h),r(this,"ProductType",n),r(this,"ProductDeliveryType",m),r(this,"RefundStatus",x),r(this,"CreateOrderFailReason",N),r(this,"OrderRefundFailReason",R),this.iarCore=e,this.config=t}async getOrderList(e={}){const{pageNumber:t=1,pageSize:r=10,orderStatus:a}=e,o=await this.iarCore.polyvApi.get(i.GetOrderList,{pageNumber:t,pageSize:r,orderStatus:a});return{pageNumber:o.pageNumber,pageSize:o.pageSize,totalItems:o.totalItems,totalPages:o.totalPages,contents:o.contents.map(U)}}async getOrderDetail(e){return function(e){const t=W(e.addressExt),r={amount:e.amount,channelId:null,products:e.products.map(D),orderNo:e.orderNo,createAt:e.createTime,transactionId:e.transactionId,expressEnabled:o(e.expressEnabled,"N"),expressInfo:t};switch(e.status){case O.WaitPay:return{...r,status:O.WaitPay,expiredAt:e.expireTime};case O.WaitDelivery:return{...r,status:O.WaitDelivery,payAt:e.payTime};case O.Delivering:return{...r,status:O.Delivering,payAt:e.payTime,deliveryAt:e.deliveryTime};case O.Finish:return{...r,status:O.Finish,payAt:e.payTime,deliveryAt:e.deliveryTime,finishAt:e.finishTime};case O.Close:return{...r,status:O.Close,expiredAt:e.expireTime};case O.Refunding:return{...r,status:O.Refunding,payAt:e.payTime,refundAt:e.refundTime,deliveryAt:e.deliveryTime};case O.Refunded:return{...r,status:O.Refunded,payAt:e.payTime,refundAt:e.refundTime,deliveryAt:e.deliveryTime,expiredAt:e.expireTime};default:return console.error(`Unknown order status:${e.status}`),{...r,status:e.status}}}(await this.iarCore.polyvApi.get(i.GetOrderDetail,{orderNo:e.orderNo,syncPayStatus:a(e.syncPayStatus)}))}async createOrder(e){try{return{success:!0,...M(await this.iarCore.polyvApi.post(i.CreateOrder,e))}}catch(t){return{success:!1,failReason:N.Unknown,failMessage:t instanceof Error?t.message:void 0}}}async confirmOrder(e){return this.iarCore.polyvApi.post(k(i.ConfirmOrder,{orderNo:e}),{})}async applyOrderRefund(e){try{return{success:!0,...await this.iarCore.polyvApi.post(i.ApplyOrderRefund,{orderNo:e})}}catch(t){return{success:!1,failReason:R.Unknown,failMessage:t instanceof Error?t.message:void 0}}}},e.OrderRefundFailReason=R,e.OrderStatus=O,e.PayStatus=_,e.Payment=class{constructor(e,t){r(this,"PaymentProvider",L),r(this,"__payProviderCache"),this.iarCore=e,this.config=t}async getPayOrderParams(e){return M(await this.iarCore.polyvApi.get(i.PayOrder,e))}async getPayProviders(){if(this.__payProviderCache)return this.__payProviderCache;const e=this.iarCore.polyvApi.get(i.GetOrderPaymentProviders,{}).catch((e=>{throw this.__payProviderCache=void 0,e}));return this.__payProviderCache=e,await e}},e.PaymentProvider=L,e.Product=class{constructor(e,t){r(this,"ProductType",n),r(this,"ProductLinkType",s),r(this,"ProductLinkJumpWay",d),r(this,"ProductBuyType",h),r(this,"ProductStatus",c),r(this,"ProductEvents",A),r(this,"ProductPriceType",y),r(this,"ProductExplainStatus",l),r(this,"ProductMediaType",u),r(this,"ProductDeliveryType",m),r(this,"ProductServiceType",P),r(this,"eventEmitter",new C),r(this,"__handleProductMessage",(e=>{switch(Number(e.status)){case 1:this.eventEmitter.emit(A.OnSaleProduct,{productData:g(e.content)}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 2:this.eventEmitter.emit(A.OffSaleProduct,{productData:g(e.content)}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 3:this.eventEmitter.emit(A.DeleteProduct,{productId:e.content.productId}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 4:this.eventEmitter.emit(A.AddProduct,{productData:g(e.content)}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 5:this.eventEmitter.emit(A.ChangeProduct,{productData:g(e.content)}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 6:case 7:{const t=e.content,r=[g(t[0]),g(t[1])];this.eventEmitter.emit(A.MoveProduct,{targetProducts:r}),this.eventEmitter.emit(A.RefreshProductList,{});break}case 15:this.eventEmitter.emit(A.ChangeProductRank,{productData:g(e.content)}),this.eventEmitter.emit(A.RefreshProductList,{});break;case 9:{const t=e.content;this.eventEmitter.emit(A.PushProduct,{productData:g(t),pushRule:t.productPushRule}),this.eventEmitter.emit(A.RefreshProductList,{});break}case 10:{const t=e.content;this.eventEmitter.emit(A.ProductListEnabled,{enabled:"Y"===t.enabled}),this.eventEmitter.emit(A.RefreshProductList,{});break}case 11:this.eventEmitter.emit(A.CancelPushProduct,{productId:e.content.productId}),this.eventEmitter.emit(A.RefreshProductList,{})}})),r(this,"__handleRefreshProductList",(()=>{this.eventEmitter.emit(A.RefreshProductList,{})})),r(this,"__handleProductClickEvent",(e=>{this.eventEmitter.emit(A.ProductClick,{productId:e.productId,name:e.positionName,productType:e.type})})),r(this,"__handleProductClickTimes",(e=>{this.eventEmitter.emit(A.ProductClickTimes,{productId:e.productId,name:e.positionName,productType:e.type,times:e.times})})),this.iarCore=e,this.config=t,e.addSocketHandles(I,{PRODUCT_MESSAGE:this.__handleProductMessage}),e.addSocketHandles(I,{REFRESH_PRODUCT_LIST:this.__handleRefreshProductList,PRODUCT_CLICK:this.__handleProductClickEvent,PRODUCT_CLICK_TIMES:this.__handleProductClickTimes},"product")}async getProductTagList(e={}){const t=e.pageNumber??1,r=e.pageSize??10;return this.iarCore.polyvApi.get(i.GetProductTagList,{pageNumber:t,pageSize:r})}async getProductList(e={}){const{count:t=10}=e;let r,a=[],o=0;if(e.keyword||e.tagId){const{page:r=1}=e,n=await this.iarCore.polyvApi.get(i.GetProductListByTag,{keyword:e.keyword,tagId:e.tagId,pageNumber:r,pageSize:t});a=n.contents,o=n.totalItems}else{const n=await this.iarCore.polyvApi.get(i.GetProductListByShowId,{count:t,showId:e.displayNumber},{useAESDecrypt:!0});a=n.content,r=n.toppingProduct,o=n.total}return{contents:a.map((e=>g(e))),toppingProduct:r?g(r):void 0,total:o}}async getProductData(e){var t;const r=g(await this.iarCore.polyvApi.get(i.GetProductDataById,{productId:e},{useAESDecrypt:!0}));if(null==(t=r.detail)?void 0:t.endsWith(".json")){const e=await this.iarCore.otherApi.get(r.detail,{});r.detail=e.productDetail}return r}async sendProductClickEvent(e){const t=await this.iarCore.getUserInfo(),r=await this.iarCore.getChannelInfo();this.iarCore.emitSocket({EVENT:"PRODUCT_CLICK",data:{productId:e.productId,type:e.productType,nickName:t.nick,positionName:e.name},roomId:r.channelId},"product")}closeProductPush(){this.eventEmitter.emit(A.CancelPushProduct,{})}async getProductExplainEnabled(){const e=await this.config.getProductConfig();return(null==e?void 0:e.productExplainEnabled)??!1}async getOutLinkProductRedirectEnabled(){const e=await this.config.getProductConfig();return(null==e?void 0:e.outLinkProductRedirectEnabled)??!1}async generateProductExplainPageUrl(e){const t=this.iarCore.getDomainInfo(),r={channelId:(await this.iarCore.getChannelInfo()).channelId,...e||{}};return k(`${t.watchPageDomain}/landing/product/explain`,r)}async getProductPayOrderEnabled(){const e=await this.config.getProductConfig();return!!e&&e.productPayOrderEnabled}async getCurrentPushingProduct(){const e=await this.config.getProductConfig();if(e)return e.channelProductPushingStatusVO}async getSupportToDirectBuy(){if(!(await this.getProductPayOrderEnabled()))return!1;const e=await this.iarCore.getUserInfo();if(!e.unionId)return!1;const t=e.authType;if(!t||t===v.None)return!0;return![v.Custom,v.External,v.Direct,v.EnterpriseWeChat].includes(t)}},e.ProductBuyType=h,e.ProductDeliveryType=m,e.ProductEvents=A,e.ProductExplainStatus=l,e.ProductExplainType=p,e.ProductLinkJumpWay=d,e.ProductLinkType=s,e.ProductMediaType=u,e.ProductPriceType=y,e.ProductPushRule=F,e.ProductServiceType=P,e.ProductStatus=c,e.ProductType=n,e.RefundStatus=x,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})})),console.log("%c@polyv/product-sdk","background:#67C23A;padding: 2px 6px;border-radius: 3px;color: #fff","[version: 1.0.0-rc-20250612.3]","[buildTime: 2025-06-12 02:28:28]");
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@polyv/product-sdk",
|
|
3
|
+
"version": "1.0.0-rc-20250612.3",
|
|
4
|
+
"description": "商品 SDK 核心逻辑层",
|
|
5
|
+
"author": "polyv",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"polyv",
|
|
8
|
+
"product",
|
|
9
|
+
"sdk"
|
|
10
|
+
],
|
|
11
|
+
"main": "./index.es.js",
|
|
12
|
+
"devDependencies": {
|
|
13
|
+
"@types/jest": "^29.5.12",
|
|
14
|
+
"@types/sinon": "^17.0.3",
|
|
15
|
+
"jest": "^29.7.0",
|
|
16
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
17
|
+
"sinon": "^17.0.1",
|
|
18
|
+
"ts-jest": "^29.1.2"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20.10.0",
|
|
22
|
+
"pnpm": ">=7.29.0"
|
|
23
|
+
},
|
|
24
|
+
"types": "./index.es.d.ts"
|
|
25
|
+
}
|