@round2ai/r2-cli 1.0.15 → 1.0.17
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/LICENSE +21 -0
- package/README.md +122 -35
- package/dist/pages/{xianyu-auth.html → third-auth.html} +29 -14
- package/dist/r2-cli.js +66 -38
- package/package.json +10 -6
- package/scripts/install.js +111 -0
- package/skills/r2-auth/SKILL.md +10 -8
- package/skills/r2-auth/_meta.json +1 -1
- package/skills/r2-auth/references/r2-auth-login.md +68 -0
- package/skills/r2-auth/references/r2-auth-logout.md +29 -0
- package/skills/r2-auth/references/r2-auth-status.md +27 -0
- package/skills/r2-goods/SKILL.md +94 -28
- package/skills/r2-goods/_meta.json +1 -1
- package/skills/r2-goods/references/r2-goods-alzc.md +285 -0
- package/skills/r2-goods/references/r2-goods-hangup.md +35 -86
- package/skills/r2-goods/references/r2-goods-listing.md +105 -36
- package/skills/r2-goods/references/r2-goods-query.md +39 -8
- package/skills/r2-goods/scenes/r2-scene-batch-operations.md +79 -0
- package/skills/r2-goods/scenes/r2-scene-edit-with-images.md +51 -0
- package/skills/r2-goods/scenes/r2-scene-hangup-fashion.md +32 -0
- package/skills/r2-shared/SKILL.md +84 -35
- package/skills/r2-shared/_meta.json +2 -2
- package/skills/r2-workflow-batch-up/SKILL.md +77 -0
- package/skills/r2-workflow-batch-up/_meta.json +5 -0
- package/skills/r2-workflow-goods-audit/SKILL.md +79 -0
- package/skills/r2-workflow-goods-audit/_meta.json +5 -0
- package/dist/README.md +0 -246
- package/scripts/install-skills.js +0 -20
package/dist/r2-cli.js
CHANGED
|
@@ -1,50 +1,78 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
`;process.stdout.write(a)}finally{
|
|
3
|
+
var fr=Object.defineProperty;var N=(t,o)=>()=>(t&&(o=t(t=0)),o);var V=(t,o)=>{for(var e in o)fr(t,e,{get:o[e],enumerable:!0})};function lt(t){return t instanceof Q?t.errorType:t instanceof DOMException&&t.name==="AbortError"?"timeout":t instanceof TypeError?"network":"unknown"}var Q,v,F,k,q,B=N(()=>{"use strict";Q=class t extends Error{constructor(e,r,n,i="unknown"){super(e);this.code=r;this.details=n;this.errorType=i;this.name="R2Error",Error.captureStackTrace&&Error.captureStackTrace(this,t)}code;details;errorType},v=class extends Q{constructor(e,r,n,i){super(e,"API_ERROR",n,i??(r===401?"auth_expired":"business"));this.status=r;this.response=n;this.name="ApiError"}status;response},F=class extends Q{constructor(e,r,n){super(e,"STORAGE_ERROR",{path:r,code:n},"storage");this.path=r;this.code=n;this.name="StorageError"}path;code},k=class extends Q{constructor(o){super(o,"AUTH_ERROR",void 0,"auth_expired"),this.name="AuthError"}},q=class extends Q{constructor(e,r,n){super(e,"POLLING_ERROR",{attempts:r,timeout:n},"polling");this.attempts=r;this.timeout=n;this.name="PollingError"}attempts;timeout}});function A(t){let o=new URLSearchParams;for(let[e,r]of Object.entries(t))r!=null&&r!==""&&o.append(e,String(r));return o}function J(t,o){let e=null;return()=>(e||(e=t(),o?.(e)),e)}var E=N(()=>{"use strict"});import{promises as Y}from"node:fs";import oo from"node:path";import Nr from"node:os";var vr,ut,At,eo=N(()=>{"use strict";B();E();vr=".r2-cli",ut=class{configPath;config;configLoaded=!1;dirEnsured=!1;constructor(){let o=Nr.homedir(),e=oo.join(o,vr);this.configPath=oo.join(e,"config.json"),this.config={credentials:null}}getConfigPath(){return this.configPath}async loadConfig(){if(this.configLoaded)return this.config;try{let o=await Y.readFile(this.configPath,"utf-8");return this.config=JSON.parse(o),this.configLoaded=!0,this.config}catch{return this.config={credentials:null},this.configLoaded=!0,this.config}}async ensureDir(){if(this.dirEnsured)return;let o=oo.dirname(this.configPath);try{await Y.stat(o)}catch(e){if(e.code==="ENOENT")await Y.mkdir(o,{recursive:!0});else throw new F("Failed to create directory",o,e.code)}this.dirEnsured=!0}async saveConfig(o){this.config=o,await this.ensureDir();let e=JSON.stringify(o,null,2),r=this.configPath+".tmp";try{await Y.writeFile(r,e,"utf-8"),await Y.rename(r,this.configPath),this.configLoaded=!0}catch(n){throw await Y.unlink(r).catch(i=>{typeof process.env.DEBUG<"u"&&console.error("[config] cleanup tmp failed:",i)}),new F("Failed to save config",this.configPath,n.code)}}},At=J(()=>new ut)});var Rr,pt,Z,ae=N(()=>{"use strict";eo();E();Rr=300*1e3,pt=class{store=At();isTokenExpired(o){return o.expire?Date.now()>=o.expire-Rr:!1}async saveCredentials(o,e){let r=Date.now(),n=e.expire?Number.parseInt(e.expire,10):0,i={token:o,userInfo:e,timestamp:r,...n>0&&{expire:r+n}},s=await this.store.loadConfig();s.credentials=i,await this.store.saveConfig(s)}async getCredentials(){let o=await this.store.loadConfig();return!o.credentials||this.isTokenExpired(o.credentials)?null:o.credentials}async clearCredentials(){let o=await this.store.loadConfig();o.credentials=null,await this.store.saveConfig(o)}async getToken(){return(await this.getCredentials())?.token??null}async getUserInfo(){return(await this.getCredentials())?.userInfo??null}async isLoggedIn(){return await this.getCredentials()!==null}},Z=J(()=>new pt)});var ro={};V(ro,{AuthStorage:()=>pt,ConfigStore:()=>ut,getAuthStorage:()=>Z,getConfigStore:()=>At});var gt=N(()=>{"use strict";eo();ae()});var me={};V(me,{UserInfoCard:()=>Ur});import{Box as tt,Text as z}from"ink";import{jsx as X,jsxs as ot}from"react/jsx-runtime";function Ur({userInfo:t,lastLogin:o,daysSinceLogin:e}){let r=t.mobile?t.mobile.replace(/(\d{3})\d{4}(\d{4})/,"$1****$2"):"-";return ot(tt,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:1,alignSelf:"flex-start",children:[X(z,{bold:!0,color:"cyan",children:"\u7528\u6237\u4FE1\u606F"}),ot(tt,{flexDirection:"row",marginTop:1,children:[X(tt,{width:10,children:X(z,{color:"gray",children:"\u6635\u79F0"})}),X(z,{color:"yellow",children:t.nickname})]}),ot(tt,{flexDirection:"row",children:[X(tt,{width:10,children:X(z,{color:"gray",children:"\u624B\u673A\u53F7"})}),X(z,{color:"yellow",children:r})]}),o&&ot(tt,{flexDirection:"column",marginTop:1,children:[ot(z,{color:"gray",children:["\u6700\u540E\u767B\u5F55: ",o.toLocaleString()]}),e!==void 0&&ot(z,{color:"gray",children:[" \u8DDD\u4ECA: ",e," \u5929"]})]})]})}var le=N(()=>{"use strict"});var ft={};V(ft,{renderComponent:()=>qr,renderOnce:()=>ue});import $r from"react";import io from"chalk";import{render as Dr}from"ink";import{Writable as Er}from"node:stream";function ue(t){let o=io.level;process.env.NO_COLOR||(io.level=3);try{let e=[],r=new Er({write(m,p,T){e.push(Buffer.from(m)),T()}});r.isTTY=!0,r.columns=process.stdout.columns||80,r.rows=process.stdout.rows||24,Dr(t,{stdout:r,patchConsole:!1}).unmount();let i=Buffer.concat(e).toString("utf8"),a=(i.split(/\x1B\[2J\x1B\[3J\x1B\[H/).at(-1)||i).replace(/\x1B\[\?[\d;]+[hl]/g,"").trimEnd()+`
|
|
4
|
+
`;process.stdout.write(a)}finally{io.level=o}}function qr(t,o){ue($r.createElement(t,o))}var ht=N(()=>{"use strict"});import{Box as Uo,Text as $o}from"ink";import{jsx as Te,jsxs as $t}from"react/jsx-runtime";function et(t,o){return t.length>o?t.slice(0,o-1)+"\u2026":t}function rt(t){let o=process.stdout.columns||80,r=Math.max(o-4-t,20),n=t+r;return{fillWidth:r,totalWidth:n}}function nt({title:t,count:o,countLabel:e="\u6761",totalWidth:r,header:n,children:i}){return $t(Uo,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:1,children:[$t(Uo,{flexDirection:"row",children:[Te($o,{bold:!0,color:"cyan",children:t}),$t($o,{color:"gray",children:[" \xB7 ",o," ",e]})]}),$t(Uo,{flexDirection:"column",marginTop:1,children:[n,Te($o,{color:"gray",children:"\u2500".repeat(r)}),i]})]})}var Dt=N(()=>{"use strict"});var ke={};V(ke,{ShopsTable:()=>rn});import{Box as O,Text as _}from"ink";import{jsx as S,jsxs as je}from"react/jsx-runtime";function tn(t){return t.map(o=>"shopName"in o?{id:o.shopId,name:o.shopName,platform:o.platform,expiresIn:o.expiresIn}:{id:o.id,name:o.name,platform:o.thirdUserId,expiresIn:o.expiresIn})}function on({hasPlatform:t,fillWidth:o}){return je(O,{flexDirection:"row",paddingBottom:0,children:[t&&S(O,{width:Do,children:S(_,{bold:!0,color:"white",children:"\u5E73\u53F0"})}),S(O,{width:o,children:S(_,{bold:!0,color:"white",children:"\u5E97\u94FA\u540D"})}),S(O,{width:Eo,children:S(_,{bold:!0,color:"white",children:"ID"})}),S(O,{width:qo,children:S(_,{bold:!0,color:"white",children:"\u72B6\u6001"})})]})}function en({shop:t,hasPlatform:o,fillWidth:e}){let r=Ae[t.platform]??t.platform;return je(O,{flexDirection:"row",children:[o&&S(O,{width:Do,children:S(_,{color:"cyan",children:r})}),S(O,{width:e,children:S(_,{bold:!0,children:t.name})}),S(O,{width:Eo,children:S(_,{color:"gray",children:t.id})}),S(O,{width:qo,children:S(_,{color:"green",children:"\u25CF \u6388\u6743\u4E2D"})})]})}function rn({shops:t,platform:o}){let e=tn(t),r=o==="all",n=o==="all"?"\u6240\u6709\u6388\u6743\u5E97\u94FA":`${Ae[o]??o}\u6388\u6743\u5E97\u94FA`,i=Eo+qo+(r?Do:0),{fillWidth:s,totalWidth:a}=rt(i);return S(nt,{title:n,count:e.length,countLabel:"\u5BB6",fillWidth:s,totalWidth:a,header:S(on,{hasPlatform:r,fillWidth:s}),children:e.map(m=>S(en,{shop:m,hasPlatform:r,fillWidth:s},m.id))})}var Ae,Do,Eo,qo,Ne=N(()=>{"use strict";Dt();Ae={xianyu:"\u95F2\u9C7C",douyin:"\u6296\u97F3"},Do=8,Eo=16,qo=10});var Le={};V(Le,{StocksTable:()=>cn});import{Box as j,Text as U}from"ink";import{jsx as h,jsxs as Oe}from"react/jsx-runtime";function sn({fillWidth:t}){return Oe(j,{flexDirection:"row",paddingBottom:0,children:[h(j,{width:Bo,children:h(U,{bold:!0,color:"white",children:"ID"})}),h(j,{width:Jo,children:h(U,{bold:!0,color:"white",children:"\u7528\u6237ID"})}),h(j,{width:Go,children:h(U,{bold:!0,color:"white",children:"\u4ED3\u5E93ID"})}),h(j,{width:t,children:h(U,{bold:!0,color:"white",children:"\u4ED3\u5E93\u540D\u79F0"})}),h(j,{width:_o,children:h(U,{bold:!0,color:"white",children:"\u521B\u5EFA\u65F6\u95F4"})})]})}function an({stock:t,fillWidth:o}){let e=new Date(t.gmtCreate).toLocaleString("zh-CN");return Oe(j,{flexDirection:"row",children:[h(j,{width:Bo,children:h(U,{color:"gray",children:t.id})}),h(j,{width:Jo,children:h(U,{color:"gray",children:t.userId})}),h(j,{width:Go,children:h(U,{color:"gray",children:t.stockId})}),h(j,{width:o,children:h(U,{bold:!0,children:t.stockName})}),h(j,{width:_o,children:h(U,{color:"gray",children:e})})]})}function cn({stocks:t}){let o=Bo+Jo+Go+_o,{fillWidth:e,totalWidth:r}=rt(o);return h(nt,{title:"\u4ED3\u5E93\u5217\u8868",count:t.length,countLabel:"\u4E2A",fillWidth:e,totalWidth:r,header:h(sn,{fillWidth:e}),children:t.map(n=>h(an,{stock:n,fillWidth:e},n.id))})}var Bo,Jo,Go,_o,Ue=N(()=>{"use strict";Dt();Bo=6,Jo=10,Go=10,_o=22});var Be={};V(Be,{ListingTable:()=>Pn,formatTime:()=>Sn});import{Box as y,Text as b}from"ink";import{jsx as l,jsxs as Fo}from"react/jsx-runtime";function Sn(t){if(!t)return"-";let o=new Date(t),e=r=>String(r).padStart(2,"0");return`${e(o.getMonth()+1)}/${e(o.getDate())} ${e(o.getHours())}:${e(o.getMinutes())}`}function Cn({fillWidth:t}){return Fo(y,{flexDirection:"row",children:[l(y,{width:Mo,children:l(b,{bold:!0,color:"white",children:"ID"})}),l(y,{width:zo,children:l(b,{bold:!0,color:"white",children:"\u72B6\u6001"})}),l(y,{width:Bt,children:l(b,{bold:!0,color:"white",children:"\u54C1\u724C"})}),l(y,{width:t,children:l(b,{bold:!0,color:"white",children:"\u5546\u54C1\u540D\u79F0"})}),l(y,{width:Xo,children:l(b,{bold:!0,color:"white",children:"\u4EF7\u683C"})}),l(y,{width:Wo,children:l(b,{bold:!0,color:"white",children:"\u5E73\u53F0"})}),l(y,{width:Ho,children:l(b,{bold:!0,color:"white",children:"\u5E97\u94FA"})}),l(y,{width:Jt,children:l(b,{bold:!0,color:"white",children:"\u4ED3\u5E93\u5546\u54C1"})}),l(y,{width:Gt,children:l(b,{bold:!0,color:"white",children:"\u8D27\u53F7"})}),l(y,{width:_t,children:l(b,{bold:!0,color:"white",children:"\u4E09\u65B9\u7F16\u53F7"})})]})}function xn({item:t,fillWidth:o}){let e=bn[t.status]??{label:t.status,color:"white"};return Fo(y,{flexDirection:"row",children:[l(y,{width:Mo,children:l(b,{color:"gray",children:t.id})}),l(y,{width:zo,children:l(b,{color:e.color,children:e.label})}),l(y,{width:Bt,children:l(b,{color:"cyan",children:et(t.brandName||"-",Bt-1)})}),l(y,{width:o,children:l(b,{children:et(t.goodsName,o-1)})}),l(y,{width:Xo,children:Fo(b,{color:"yellow",children:["\xA5",t.price]})}),l(y,{width:Wo,children:l(b,{color:"gray",children:t.platform})}),l(y,{width:Ho,children:l(b,{color:"gray",children:t.shopId})}),l(y,{width:Jt,children:l(b,{color:"gray",children:et(`${t.stockGoodsId}`,Jt-1)})}),l(y,{width:Gt,children:l(b,{color:"gray",children:et(t.goodsNo||"-",Gt-1)})}),l(y,{width:_t,children:l(b,{color:"gray",children:et(t.thirdItemNo||"-",_t-1)})})]})}function Pn({items:t,total:o}){let e=Mo+zo+Bt+Xo+Wo+Ho+Jt+Gt+_t,{fillWidth:r,totalWidth:n}=rt(e);return l(nt,{title:"\u4E0A\u67B6\u5217\u8868",count:o,fillWidth:r,totalWidth:n,header:l(Cn,{fillWidth:r}),children:t.map(i=>l(xn,{item:i,fillWidth:r},i.id))})}var bn,Mo,zo,Bt,Xo,Wo,Ho,Jt,Gt,_t,Je=N(()=>{"use strict";Dt();bn={init:{label:"\u5F85\u4E0A\u67B6",color:"yellow"},up:{label:"\u5DF2\u4E0A\u67B6",color:"green"},down:{label:"\u5DF2\u4E0B\u67B6",color:"gray"},fail:{label:"\u5931\u8D25",color:"red"},sold:{label:"\u5DF2\u552E\u51FA",color:"blue"}},Mo=4,zo=8,Bt=8,Xo=8,Wo=8,Ho=11,Jt=10,Gt=10,_t=12});import{Command as Ci}from"commander";import ct from"chalk";import"commander";import{Command as Se}from"commander";import x from"chalk";B();async function hr(t,o,e){let r=new AbortController,n=()=>r.abort();e?.addEventListener("abort",n,{once:!0});let i=setTimeout(()=>r.abort(),o);try{return await t(r.signal)}catch(s){throw r.signal.aborted&&!e?.aborted?new q("\u5355\u6B21\u8F6E\u8BE2\u8BF7\u6C42\u8D85\u65F6"):s}finally{clearTimeout(i),e?.removeEventListener("abort",n)}}async function K(t,o,e){let{interval:r,timeout:n,condition:i}=o,s=Date.now(),a=0;for(;Date.now()-s<n;){if(e?.aborted)throw new q("\u8F6E\u8BE2\u88AB\u4E2D\u6B62");a++;let m=n-(Date.now()-s),p=await hr(t,m,e);if(i(p,a))return p;await yr(r,e)}throw new q(`\u8F6E\u8BE2\u8D85\u65F6 (\u5DF2\u7B49\u5F85 ${Date.now()-s}ms, \u5171 ${a} \u6B21)`)}function yr(t,o){return new Promise((e,r)=>{if(o?.aborted){r(new q("\u8F6E\u8BE2\u88AB\u4E2D\u6B62"));return}let n=()=>{clearTimeout(i),r(new q("\u8F6E\u8BE2\u88AB\u4E2D\u6B62"))},i=setTimeout(()=>{o?.removeEventListener("abort",n),e()},t);o?.addEventListener("abort",n,{once:!0})})}import br from"node:fs";import{fileURLToPath as Sr}from"node:url";import{createRequire as Cr}from"node:module";import ie from"node:path";import{exec as xr}from"node:child_process";E();import Ir from"node:http";var Kt=class t{server=null;pages=new Map;port=0;idleTimer=null;static IDLE_TIMEOUT_MS=1e4;async start(){return this.server?this.port:new Promise((o,e)=>{this.server=Ir.createServer((r,n)=>this.handleRequest(r,n)),this.server.listen(0,"127.0.0.1",()=>{let r=this.server.address();typeof r=="object"&&r?(this.port=r.port,o(this.port)):e(new Error("Failed to get server address"))}),this.server.on("error",e)})}registerPage(o,e,r,n){let i=this.pages.get(o);if(i){i.qrBuffer=r,i.status="waiting",i.config=n;let s=`data: ${JSON.stringify({status:"waiting"})}
|
|
5
5
|
|
|
6
|
-
`;for(let a of
|
|
6
|
+
`;for(let a of i.sseClients)a.write(s)}else this.pages.set(o,{html:e,qrBuffer:r,status:"waiting",sseClients:[],config:n});this.resetIdleTimer()}unregisterPage(o){let e=this.pages.get(o);if(e){for(let r of e.sseClients)r.end();e.sseClients.length=0,this.pages.delete(o),this.pages.size===0&&this.close()}}setStatus(o,e){let r=this.pages.get(o);if(!r)return;r.status=e;let n=`data: ${JSON.stringify({status:e})}
|
|
7
7
|
|
|
8
|
-
`;for(let
|
|
8
|
+
`;for(let i of r.sseClients)i.write(n)}close(){if(this.server){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=null);for(let o of this.pages.values()){for(let e of o.sseClients)e.end();o.sseClients.length=0}this.pages.clear(),this.server.close(),this.server=null,this.port=0}}resetIdleTimer(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=setTimeout(()=>{[...this.pages.values()].some(e=>e.sseClients.length>0)||this.close()},t.IDLE_TIMEOUT_MS)}handleRequest(o,e){let r=o.url??"/";for(let[n,i]of this.pages){if(r===n){e.writeHead(302,{Location:n+"/"}),e.end();return}if(r===n+"/"){e.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}),e.end(i.html);return}if(r===n+"/qr.png"){e.writeHead(200,{"Content-Type":"image/png","Content-Length":i.qrBuffer.length}),e.end(i.qrBuffer);return}if(r===n+"/events"){e.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),e.write(`data: ${JSON.stringify({status:i.status})}
|
|
9
9
|
|
|
10
|
-
`),
|
|
11
|
-
\u{1F50D} \u5DF2\u626B\u7801: ${
|
|
12
|
-
\u2705 \u7528\u6237\u5DF2\u786E\u8BA4\u767B\u5F55`)),
|
|
13
|
-
\u23F0 \u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F`)),
|
|
14
|
-
\u{1F6AB} \u7528\u6237\u5DF2\u53D6\u6D88\u767B\u5F55`)),
|
|
15
|
-
\u{1F510} \u6B63\u5728\u542F\u52A8\u626B\u7801\u767B\u5F55...`));let{qrData:e,qrUrl:r,setStatus:n,closeServer:
|
|
10
|
+
`),i.sseClients.push(e),o.on("close",()=>{let s=i.sseClients.indexOf(e);s>=0&&i.sseClients.splice(s,1)});return}if(r===n+"/config"){e.writeHead(200,{"Content-Type":"application/json"}),e.end(JSON.stringify(i.config??{}));return}}e.writeHead(404,{"Content-Type":"text/plain"}),e.end("Not Found")}},re=!1;function Tt(t){t.close()}function wr(t){re||(re=!0,process.on("exit",()=>Tt(t)),process.on("SIGINT",()=>Tt(t)),process.on("SIGTERM",()=>Tt(t)),setInterval(()=>{process.stdin?.destroyed&&Tt(t)},3e3).unref())}var ne=J(()=>new Kt,wr);var Pr=ie.dirname(Sr(import.meta.url)),Tr="/login",Ar="/login-third",Yt=null;async function kr(t){return br.promises.readFile(ie.join(Pr,"pages",t),"utf-8")}async function jr(t){return Yt||(Yt=Cr(import.meta.url)),Yt("qrcode").toBuffer(t,{width:300,margin:2})}function M(t){let o=process.platform==="win32"?`start "" "${t}"`:process.platform==="darwin"?`open "${t}"`:`xdg-open "${t}"`;xr(o)}async function se(t,o,e,r){let[n,i]=await Promise.all([kr(o),jr(e)]),s=ne(),a=await s.start();s.registerPage(t,n,i,r);let m=`http://127.0.0.1:${a}${t}/`;return{url:e,qrUrl:m,setStatus:p=>s.setStatus(t,p),closeServer:()=>s.unregisterPage(t)}}function Zt(t){return se(Tr,"login.html",t)}function to(t,o,e){return se(Ar,"third-auth.html",t,{authUrl:o,title:e.title,primaryColor:e.primaryColor,platformName:e.platformName})}gt();B();var Lr="https://api.puresnake.com",no=class{config;authStorage=null;constructor(o={}){this.config={baseUrl:o.baseUrl??Lr,version:o.version??"v3",debug:o.debug??!1},this.authStorage=Z()}buildUrl(o){let e=o.startsWith("/")?o.slice(1):o;return`${this.config.baseUrl}/${this.config.version}/${e}`}async getAuthToken(){return this.authStorage?(await this.authStorage.getCredentials())?.token:void 0}async requestRaw(o,e,r={}){let n=this.buildUrl(o),i=r.timeout??3e4,s=await this.getAuthToken(),a={...e.headers,...s?{token:s}:{}},m=new AbortController,p=setTimeout(()=>m.abort(),i),T={...e,headers:a,signal:m.signal};this.config.debug&&console.error(`[API ${e.method??"GET"}]`,n,e.body);try{let d=await fetch(n,T);if(!d.ok){if(d.status===401)throw this.authStorage&&await this.authStorage.clearCredentials().catch(()=>{}),new k("\u767B\u5F55\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u8FD0\u884C r2-cli auth login \u91CD\u65B0\u767B\u5F55");if(d.status===413)throw new v("\u56FE\u7247\u592A\u5927\uFF0C\u4E0A\u4F20\u5931\u8D25\uFF08\u670D\u52A1\u7AEF\u9650\u5236\u7EA6 2MB\uFF09",413);let dt=await d.text();throw new v(dt||`${d.status} ${d.statusText}`,d.status)}let I=await d.json();if(this.config.debug&&console.error("[API Response]",I),!I.success||I.status!==0)throw new v(I.msg||"\u672A\u77E5\u9519\u8BEF",I.status,I);return I}catch(d){throw d instanceof DOMException&&d.name==="AbortError"?new v(`\u8BF7\u6C42\u8D85\u65F6 (${i}ms)`,408,void 0,"timeout"):d instanceof TypeError?new v(`\u7F51\u7EDC\u9519\u8BEF: ${d.message}`,0,void 0,"network"):d}finally{clearTimeout(p)}}async requestFull(o,e){let{method:r,headers:n,body:i,timeout:s=3e4}=e,a={method:r,headers:{"Content-Type":"application/json",...n},...i!==void 0&&{body:JSON.stringify(i)}};return this.requestRaw(o,a,{timeout:s})}async request(o,e){return(await this.requestFull(o,e)).data}async get(o,e,r){let n=e&&e.size>0?`${o}?${e.toString()}`:o;return this.request(n,{method:"GET",headers:r})}async post(o,e,r){return this.request(o,{method:"POST",body:e,headers:r})}async put(o,e,r){return this.request(o,{method:"PUT",body:e,headers:r})}async delete(o,e){return this.request(o,{method:"DELETE",headers:e})}async upload(o,e,r){let n={method:"POST",body:e,...r&&{headers:r}};return(await this.requestRaw(o,n,{timeout:6e4})).data}},u=new no;async function ce(){return u.post("app/qrcode/generate")}async function de(t){let o=new URLSearchParams;o.append("qrToken",t);let e=`app/qrcode/status?${o.toString()}`,r=await u.requestFull(e,{method:"GET"});return r.token&&typeof r.data=="object"&&r.data!==null&&(r.data.token=r.token),r.data}gt();B();E();async function pe(t,o,e){let{UserInfoCard:r}=await Promise.resolve().then(()=>(le(),me)),{renderComponent:n}=await Promise.resolve().then(()=>(ht(),ft)),i=o!=null?{userInfo:t,lastLogin:o,daysSinceLogin:e??0}:{userInfo:t};n(r,i)}var kt=class{storage;constructor(o){this.storage=o??Z()}async generateQR(){let o=await ce(),e=`https://m.puresnake.com/r2/auth/login?qrToken=${o.qrContent}&from=wechat`,r=await Zt(e);return{qrData:o,...r}}async waitForLogin(o,e,r,n,i,s){let a=await K(()=>de(o),{interval:r,timeout:e,condition:m=>{switch(m.status){case"scanned":return s||(console.log(x.cyan(`
|
|
11
|
+
\u{1F50D} \u5DF2\u626B\u7801: ${m.userInfo?.nickname||"\u672A\u77E5\u7528\u6237"}`)),console.log(x.yellow("\u8BF7\u5728 APP \u4E0A\u786E\u8BA4\u767B\u5F55"))),i?.("scanning"),!1;case"confirmed":return s||console.log(x.green(`
|
|
12
|
+
\u2705 \u7528\u6237\u5DF2\u786E\u8BA4\u767B\u5F55`)),i?.("success"),!0;case"expired":return s||console.log(x.red(`
|
|
13
|
+
\u23F0 \u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F`)),i?.("expired"),!0;case"canceled":return s||console.log(x.red(`
|
|
14
|
+
\u{1F6AB} \u7528\u6237\u5DF2\u53D6\u6D88\u767B\u5F55`)),i?.("expired"),!0;default:return!1}}},n??void 0);if(a.status==="confirmed"&&a.token&&a.userInfo)return await this.storage.saveCredentials(a.token,a.userInfo),{userInfo:a.userInfo,token:a.token};throw a.status==="expired"?new k("\u4E8C\u7EF4\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55"):a.status==="canceled"?new k("\u7528\u6237\u5DF2\u53D6\u6D88\u767B\u5F55"):new k("\u767B\u5F55\u5931\u8D25: \u672A\u83B7\u53D6\u5230\u51ED\u8BC1")}async login(o){console.log(x.cyan(`
|
|
15
|
+
\u{1F510} \u6B63\u5728\u542F\u52A8\u626B\u7801\u767B\u5F55...`));let{qrData:e,qrUrl:r,setStatus:n,closeServer:i}=await this.generateQR();console.log(x.green(`\u2705 \u4E8C\u7EF4\u7801\u5DF2\u751F\u6210
|
|
16
16
|
`)),console.log(x.cyan(` \u94FE\u63A5: ${r}
|
|
17
|
-
`)),
|
|
18
|
-
`));let
|
|
17
|
+
`)),M(r),console.log(x.yellow(`\u23F3 \u7B49\u5F85\u626B\u7801...
|
|
18
|
+
`));let s=Number.parseInt(e.expireTime,10),a=Number.parseInt(e.pollInterval,10);try{let m=await this.waitForLogin(e.qrToken,s,a,o,n);return console.log(x.green(`
|
|
19
19
|
\u2705 \u767B\u5F55\u6210\u529F\uFF01
|
|
20
|
-
`)),
|
|
20
|
+
`)),pe(m.userInfo),m}catch(m){throw console.log(x.red(`
|
|
21
21
|
\u274C \u767B\u5F55\u5931\u8D25
|
|
22
|
-
`)),
|
|
22
|
+
`)),m}finally{i()}}async logout(){console.log(x.cyan(`
|
|
23
23
|
\u{1F6AA} \u6B63\u5728\u9000\u51FA\u767B\u5F55...`)),await this.storage.clearCredentials(),console.log(x.green(`\u2705 \u5DF2\u9000\u51FA\u767B\u5F55
|
|
24
24
|
`))}async status(){if(!await this.storage.isLoggedIn()){console.log(x.yellow(`\u26A0\uFE0F \u5C1A\u672A\u767B\u5F55\u6216\u51ED\u8BC1\u5DF2\u8FC7\u671F
|
|
25
|
-
`));return}let e=await this.storage.getCredentials(),r=e.userInfo,n=new Date(e.timestamp),
|
|
26
|
-
`)),await
|
|
27
|
-
\u2705 \u6388\u6743\u6210\u529F\uFF01\u5E97\u94FA: ${s.shopName} (${s.shopId})`)),
|
|
28
|
-
\u23F0 \u6388\u6743\u94FE\u63A5\u5DF2\u8FC7\u671F`)),
|
|
29
|
-
\u{1F517} \u6B63\u5728\u83B7\u53D6\
|
|
30
|
-
`)),console.log(
|
|
25
|
+
`));return}let e=await this.storage.getCredentials(),r=e.userInfo,n=new Date(e.timestamp),i=Math.floor((Date.now()-e.timestamp)/(1e3*60*60*24));console.log(x.green(`\u2705 \u5DF2\u767B\u5F55
|
|
26
|
+
`)),await pe(r,n,i)}},R=J(()=>new kt);import W from"chalk";async function ge(t){return u.get(`mms/third/auth/url/${t}`)}async function fe(t,o){let e=new URLSearchParams({state:t,platform:o});return u.get("mms/third/auth/status",e)}var so={xianyu:{title:"\u95F2\u9C7C\u6388\u6743",primaryColor:"#ffe60f",platformName:"\u95F2\u9C7C"},taobao:{title:"\u6DD8\u5B9D\u6388\u6743",primaryColor:"#ff4200",platformName:"\u6DD8\u5B9D"}};function ao(t){let o=so[t];if(!o){let e=Object.keys(so).join("/");throw new Error(`\u4E0D\u652F\u6301\u7684\u5E73\u53F0: ${t}\uFF08\u652F\u6301: ${e}\uFF09`)}return o}function co(){return Object.keys(so)}B();async function jt(t){let o=ao(t),e=await ge(t),r=await to(e.url,e.url,o);return{authData:e,...r}}async function yt(t,o,e,r,n,i){return K(()=>fe(t,o),{interval:r,timeout:e,condition:s=>s.status==="success"?(console.log(W.green(`
|
|
27
|
+
\u2705 \u6388\u6743\u6210\u529F\uFF01\u5E97\u94FA: ${s.shopName} (${s.shopId})`)),i?.("success"),!0):s.status==="expired"?(console.log(W.red(`
|
|
28
|
+
\u23F0 \u6388\u6743\u94FE\u63A5\u5DF2\u8FC7\u671F`)),i?.("expired"),!0):!1},n)}async function mo(t,o){let e=ao(t);console.log(W.cyan(`
|
|
29
|
+
\u{1F517} \u6B63\u5728\u83B7\u53D6${e.platformName}\u6388\u6743\u5730\u5740...`));let{authData:r,qrUrl:n,setStatus:i,closeServer:s}=await jt(t);console.log(W.green(`\u2705 \u6388\u6743\u4E8C\u7EF4\u7801\u5DF2\u751F\u6210
|
|
30
|
+
`)),console.log(W.cyan(` \u94FE\u63A5: ${n}`)),console.log(W.gray(` \u6216\u590D\u5236\u94FE\u63A5\u6253\u5F00: ${r.url}`)),M(n),console.log(W.yellow(`
|
|
31
31
|
\u23F3 \u7B49\u5F85\u6388\u6743...
|
|
32
|
-
`));let
|
|
33
|
-
\
|
|
34
|
-
`));else if(o instanceof b)console.error(N.red(`\u25B2 \u64CD\u4F5C\u5931\u8D25: ${o.message}`)),o.status&&console.error(N.gray(` \u72B6\u6001\u7801: ${o.status}`));else if(o instanceof B)console.error(N.red(`\u25B2 \u914D\u7F6E\u6587\u4EF6\u5F02\u5E38: ${o.message}`)),o.path&&console.error(N.gray(` \u8DEF\u5F84: ${o.path}`)),console.error(N.gray(`\u2192 \u8BF7\u5C1D\u8BD5\u91CD\u65B0\u767B\u5F55: r2-cli auth login
|
|
35
|
-
`));else{let t=o instanceof Error?o.message:String(o);console.error(N.red(`\u25B2 ${t}`))}process.exit(1)}function Jt(o){console.log(JSON.stringify({success:!1,error:o})),process.exit(1)}function m(o){return async t=>{try{await o(t)}catch(e){if(t.json){let r=e instanceof Error?e.message:String(e),n=e instanceof b?e.status:void 0;console.log(JSON.stringify({success:!1,error:r,...n!=null&&{status:n}})),process.exit(1)}X(e)}}}function P(o,t){o.json&&(console.log(JSON.stringify({success:!1,error:t})),process.exit(1)),console.log(N.yellow(t))}function j(o,t,e){o.json?console.log(JSON.stringify({success:!0,data:t},null,2)):(e&&console.log(N.green(e)),console.log(JSON.stringify(t,null,2)))}function wt(o){return async(...t)=>{try{await o(...t)}catch(e){let r=e instanceof Error?e.message:String(e);Jt(r)}}}var je=new Set(["accessToken","refreshExpireIn"]);function Co(o){return o.map(t=>{let e={};for(let[r,n]of Object.entries(t))je.has(r)||(e[r]=n);return e})}async function xt(o){let{qrInfo:t,qrUrl:e,setStatus:r,closeServer:n,waitArgs:s}=await o.generate();console.log(JSON.stringify(t,null,2)),q(e);try{let i=await o.waitResult(s,r);console.log(JSON.stringify(o.formatSuccess(i)))}catch(i){let a=i instanceof Error?i.message:String(i);console.log(JSON.stringify({success:!1,error:a})),process.exit(1)}finally{setTimeout(n,1e3)}}function Qt(){let o=new To("login");o.description("\u626B\u7801\u767B\u5F55 Round2AI \u8D26\u6237").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");let t=new To("poll").description("\u8F6E\u8BE2\u767B\u5F55\u72B6\u6001\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").requiredOption("--token <qrToken>","\u4E8C\u7EF4\u7801 token").option("--expire <ms>","\u8FC7\u671F\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09","300000").option("--interval <ms>","\u8F6E\u8BE2\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09","1000").action(wt(async e=>{let n=await L().waitForLogin(e.token,Number.parseInt(e.expire,10),Number.parseInt(e.interval,10));console.log(JSON.stringify({success:!0,...n}))}));return o.addCommand(t),o.action(m(async e=>{e.json?await xt({generate:async()=>{let r=L(),{qrData:n,qrUrl:s,setStatus:i,closeServer:a}=await r.generateQR(),c=Number.parseInt(n.expireTime,10),h=Number.parseInt(n.pollInterval,10);return{qrInfo:{qrToken:n.qrToken,expireTimeMs:c,pollIntervalMs:h,qrUrl:s},qrUrl:s,setStatus:i,closeServer:a,waitArgs:{qrToken:n.qrToken,expireMs:c,intervalMs:h}}},waitResult:({qrToken:r,expireMs:n,intervalMs:s},i)=>L().waitForLogin(r,n,s,void 0,i,!0),formatSuccess:r=>({success:!0,userInfo:r.userInfo})}):await L().login()})),o}import{Command as $e}from"commander";function Xt(){let o=new $e("logout");return o.description("\u9000\u51FA\u767B\u5F55"),o.action(async()=>{try{await L().logout()}catch(t){X(t)}}),o}import{Command as Be}from"commander";function _t(){let o=new Be("status");return o.description("\u67E5\u770B\u767B\u5F55\u72B6\u6001"),o.action(async()=>{try{await L().status()}catch(t){X(t)}}),o}import{Command as bo}from"commander";function Mt(){let o=new bo("xianyu");o.description("\u95F2\u9C7C\u5E97\u94FA\u6388\u6743").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");let t=new bo("poll").description("\u8F6E\u8BE2\u95F2\u9C7C\u6388\u6743\u72B6\u6001\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").requiredOption("--state <state>","\u6388\u6743\u8F6E\u8BE2 token").option("--expire <ms>","\u8FC7\u671F\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09","300000").option("--interval <ms>","\u8F6E\u8BE2\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09","1000").action(wt(async e=>{let r=await it(e.state,Number.parseInt(e.expire,10),Number.parseInt(e.interval,10));r.status==="success"?console.log(JSON.stringify({success:!0,shopId:r.shopId,shopName:r.shopName})):Jt(`\u6388\u6743\u72B6\u6001: ${r.status}`)}));return o.addCommand(t),o.action(m(async e=>{e.json?await xt({generate:async()=>{let{authData:r,qrUrl:n,setStatus:s,closeServer:i}=await yt(),a=r.expireTime?Number.parseInt(r.expireTime,10):3e5,c=r.pollInterval?Number.parseInt(r.pollInterval,10):1e3;return{qrInfo:{state:r.state,expireTimeMs:a,pollIntervalMs:c,qrUrl:n},qrUrl:n,setStatus:s,closeServer:i,waitArgs:{state:r.state,expireMs:a,intervalMs:c}}},waitResult:async({state:r,expireMs:n,intervalMs:s},i)=>{let a=await it(r,n,s,void 0,i);if(a.status!=="success")throw new Error(`\u6388\u6743\u72B6\u6001: ${a.status}`);return a},formatSuccess:r=>({success:!0,shopId:r.shopId,shopName:r.shopName})}):await Gt()})),o}import{Command as xr}from"commander";import{Command as Xe}from"commander";import D from"chalk";import{select as Ft,input as _e,confirm as Me}from"@inquirer/prompts";import{basename as Qe}from"node:path";function _(o){let t=new URLSearchParams;for(let[e,r]of Object.entries(o))r!=null&&r!==""&&t.append(e,String(r));return t}import{statSync as qe,readFileSync as Po}from"node:fs";import Ge from"sharp";var Je=2*1024*1024;async function Ao(o,t=Je){let{size:e}=qe(o);if(e<=t)return Po(o);let r=Ge(o);await r.metadata();let n=[100,90,80,70,60,50,40,30],s=null;for(let i of n){let a=await r.jpeg({quality:i,mozjpeg:!0}).toBuffer();if(a.length<=t)return a;s=a}return s??Po(o)}var T=pt;async function zt(o){return T.post("mms/goods/listing/up/xianyu",o)}async function vo(o){return T.get("mms/goods/listing/get",_({...o}))}async function ko(o){return T.post("mms/goods/listing/down/xianyu",o)}async function Ro(o){return T.post("mms/goods/listing/update/xyPrice",o)}async function Lo(o){return T.post("mms/goods/listing/update/goodsInfo",o)}async function No(o){return T.get("mms/goods/listing/list",o?_({...o}):void 0)}async function It(){return await T.get("mms/user/shop/list")??[]}async function St(){return await T.get("mms/user/stock/list")??[]}async function Ct(o){let t=o?_({...o}):void 0;return T.get("mms/seller/goods/select/list",t)}async function Do(o,t){let e=async(i,a=1)=>{for(let c=0;c<=a;c++)try{let h=await Ao(i),u=Qe(i),w=new FormData;return w.append("file",new Blob([new Uint8Array(h)]),u),await T.upload(`platform/xy/media/upload?shopId=${encodeURIComponent(o)}`,w)}catch(h){if(c<a){await new Promise(u=>setTimeout(u,1e3));continue}throw h}throw new Error("unreachable")},r=await Promise.allSettled(t.map(e)),n=[],s=[];for(let i=0;i<r.length;i++){let a=r[i];if(a.status==="fulfilled")n.push(a.value);else{let c=a.reason;s.push({file:t[i],error:c instanceof Error?c.message:`${c}`})}}return{images:n,failed:s}}async function Oo(o){return T.post("mms/goods/listing/hang/up/xianyu",o)}async function Uo(o=16){return await T.get("platform/xy/cat",_({spBizType:o}))??[]}async function Eo(o){return await T.get("platform/xy/props",_({channelCatId:o}))??[]}async function jo(o,t,e){return await T.get("platform/xy/props/value",_({channelCatId:o,propId:t,key:e}))??[]}var ze=2e3,Fe=1e4;function We(o){let t=o.status?.toLowerCase()??"";return t===""||t==="init"||t==="pending"||t==="processing"}async function $o(o,t,e,r){r||process.stdout.write(D.cyan("\u23F3 \u6B63\u5728\u67E5\u8BE2\u4E0A\u67B6\u8FDB\u5EA6..."));let n=await W(()=>vo({stockGoodsId:o,shopId:t,platform:e}),{interval:ze,timeout:Fe,condition:s=>!We(s)});return r||process.stdout.write("\r"+" ".repeat(30)+"\r"),n}function Bo(){let o=new Xe("up");return o.description("\u4E0A\u67B6\u5546\u54C1\u5230\u95F2\u9C7C"),o.option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1ID\uFF08\u4ECE goods list \u83B7\u53D6\uFF09").option("--shop-id <id>","\u5E97\u94FAID\uFF08\u4ECE goods shops \u83B7\u53D6\uFF09").option("--price <amount>","\u4E0A\u67B6\u4EF7\u683C").option("-p, --platform <platform>","\u5E73\u53F0","xianyu").option("--json","\u8F93\u51FA JSON\uFF08Agent \u7528\uFF09").action(m(async t=>{if(t.json&&!(t.stockGoodsId&&t.shopId&&t.price)){P(t,"Agent \u6A21\u5F0F\u9700\u8981 --stock-goods-id, --shop-id, --price");return}if(t.stockGoodsId&&t.shopId&&t.price){let d=Number(t.stockGoodsId),k=t.shopId,At=Number(t.price),z=t.platform,ue=await zt({stockGoodsId:d,shopId:k,price:At,platform:z}),vt=await $o(d,k,z,t.json);if(t.json)console.log(JSON.stringify({success:!0,data:{submit:ue,listing:vt}},null,2));else{let me=vt.status?.toLowerCase()!=="failed";console.log(me?D.green("\u2713 \u4E0A\u67B6\u6210\u529F"):D.red("\u2717 \u4E0A\u67B6\u5931\u8D25")),console.log(JSON.stringify(vt,null,2))}return}let e=await It();if(e.length===0){console.log(D.yellow("\u6CA1\u6709\u5DF2\u6388\u6743\u5E97\u94FA\uFF0C\u8BF7\u5148\u8FD0\u884C r2-cli auth xianyu \u6388\u6743"));return}let r=await Ft({message:"\u9009\u62E9\u5E97\u94FA",choices:e.map(d=>({name:`${d.shopName} (${d.platform})`,value:d.shopId}))}),n=await St();if(n.length===0){console.log(D.yellow("\u6CA1\u6709\u53EF\u7528\u7684\u4ED3\u5E93"));return}let s=await Ft({message:"\u9009\u62E9\u4ED3\u5E93",choices:n.map(d=>({name:d.stockName,value:d.stockId}))}),i=await Ct({stockId:s,size:100});if(!i.items?.length){console.log(D.yellow("\u8BE5\u4ED3\u5E93\u6CA1\u6709\u53EF\u9009\u7684\u5546\u54C1"));return}let a=await Ft({message:"\u9009\u62E9\u5546\u54C1",choices:i.items.map(d=>({name:`${d.goodsName} ${d.size?`| ${d.size}`:""} | \xA5${d.salePrice}`,value:d.stockGoodsId}))}),c=await _e({message:"\u8F93\u5165\u4E0A\u67B6\u4EF7\u683C",default:i.items.find(d=>d.stockGoodsId===a)?.salePrice?.toString()??"",validate:d=>Number(d)>0?!0:"\u4EF7\u683C\u5FC5\u987B\u4E3A\u6B63\u6570"});if(!await Me({message:`\u786E\u8BA4\u4E0A\u67B6\uFF1F\u4EF7\u683C \xA5${c}`,default:!0})){console.log(D.gray("\u5DF2\u53D6\u6D88"));return}let u=Number(a);await zt({stockGoodsId:u,shopId:r,price:Number(c),platform:"xianyu"}),console.log(D.green("\u2713 \u4E0A\u67B6\u5DF2\u63D0\u4EA4\uFF0C\u6B63\u5728\u67E5\u8BE2\u8FDB\u5EA6..."));let w=await $o(u,r,"xianyu"),M=w.status?.toLowerCase()!=="failed";console.log(M?D.green("\u2713 \u4E0A\u67B6\u6210\u529F"):D.red("\u2717 \u4E0A\u67B6\u5931\u8D25")),console.log(JSON.stringify(w,null,2))})),o}import{Command as Ze}from"commander";import Qo from"chalk";function Xo(){let o=new Ze("shops");return o.description("\u67E5\u770B\u6240\u6709\u5DF2\u6388\u6743\u5E97\u94FA\uFF08\u8DE8\u5E73\u53F0\uFF09"),o.option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{let e=await It();if(t.json){console.log(JSON.stringify(Co(e),null,2));return}if(!e.length){console.log(Qo.yellow("\u672A\u627E\u5230\u5DF2\u6388\u6743\u7684\u5E97\u94FA")),console.log(Qo.gray(" \u63D0\u793A: \u8BF7\u5148\u5728\u7B2C\u4E8C\u56DE\u5408 APP \u4E2D\u6388\u6743\u5E97\u94FA"));return}let{ShopsTable:r}=await Promise.resolve().then(()=>(Jo(),Go)),{renderComponent:n}=await Promise.resolve().then(()=>(st(),ft));n(r,{shops:e,platform:"all"})})),o}import{Command as rr}from"commander";import nr from"chalk";function zo(){let o=new rr("stocks");return o.description("\u67E5\u770B\u6240\u6709\u4ED3\u5E93"),o.option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{let e=await St();if(t.json){console.log(JSON.stringify(e,null,2));return}if(!e.length){console.log(nr.yellow("\u672A\u627E\u5230\u4ED3\u5E93\u4FE1\u606F"));return}let{StocksTable:r}=await Promise.resolve().then(()=>(Mo(),_o)),{renderComponent:n}=await Promise.resolve().then(()=>(st(),ft));n(r,{stocks:e})})),o}import{Command as sr}from"commander";import ot from"chalk";function Fo(){let o=new sr("list");return o.description("\u67E5\u770B\u4ED3\u5E93\u4E2D\u7684\u9009\u54C1\u5546\u54C1"),o.option("--stock-id <id>","\u4ED3\u5E93 ID\uFF08\u4ECE goods stocks \u83B7\u53D6\uFF09").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--page <n>","\u9875\u7801","1").option("--size <n>","\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{let r=await Ct({stockId:t.stockId||void 0,stockGoodsId:t.stockGoodsId||void 0,page:Number(t.page)||1,size:Math.min(Number(t.size)||20,50)})??{items:[],total:0};if(t.json){r.items?.length?console.log(JSON.stringify(r,null,2)):console.log(JSON.stringify({...r,hint:"\u9009\u54C1\u5546\u54C1\u4E3A\u7A7A\uFF0C\u8BF7\u5148\u5728\u540E\u53F0\u751F\u6210\u9009\u54C1\u8868\u6570\u636E\u540E\u518D\u8BD5"},null,2));return}if(!r.items?.length){console.log(ot.yellow("\u6682\u65E0\u9009\u54C1\u5546\u54C1\uFF0C\u8BF7\u5148\u7ED1\u5B9A\u4ED3\u5E93\u6216\u5728\u540E\u53F0\u751F\u6210\u9009\u54C1\u8868\u6570\u636E"));return}console.log(ot.cyan(`
|
|
36
|
-
\u9009\u54C1\u5546\u54C1\uFF08\u5171 ${r.total} \u4EF6\uFF0C\u7B2C ${r.page} \u9875\uFF09
|
|
37
|
-
`));for(let n of r.items)console.log(` ${ot.bold(n.goodsName)} ${n.size?ot.gray(`| ${n.size}`):""}`),console.log(` \u54C1\u724C: ${n.brand} \u5EFA\u8BAE\u552E\u4EF7: \xA5${n.salePrice} stockGoodsId: ${ot.green(n.stockGoodsId)}`),console.log(ot.gray(` \u5206\u7C7B: ${n.cate1Name} > ${n.cate2Name} > ${n.cate3Name}`)),console.log()})),o}import{Command as dr}from"commander";import ur from"chalk";st();import{Box as p,Text as y}from"ink";import{jsx as l,jsxs as $}from"react/jsx-runtime";var ir={init:{label:"\u5F85\u4E0A\u67B6",color:"yellow"},up:{label:"\u5DF2\u4E0A\u67B6",color:"green"},down:{label:"\u5DF2\u4E0B\u67B6",color:"gray"},fail:{label:"\u5931\u8D25",color:"red"},sold:{label:"\u5DF2\u552E\u51FA",color:"blue"}},oo=4,eo=8,Tt=12,ro=10,no=6,so=8;function Wo(o,t){return o.length>t?o.slice(0,t-1)+"\u2026":o}function Ho(o){if(!o)return"-";let t=new Date(o),e=r=>String(r).padStart(2,"0");return`${e(t.getMonth()+1)}/${e(t.getDate())} ${e(t.getHours())}:${e(t.getMinutes())}`}function ar({fillWidth:o}){return $(p,{flexDirection:"row",children:[l(p,{width:oo,children:l(y,{bold:!0,color:"white",children:"ID"})}),l(p,{width:eo,children:l(y,{bold:!0,color:"white",children:"\u72B6\u6001"})}),l(p,{width:Tt,children:l(y,{bold:!0,color:"white",children:"\u54C1\u724C"})}),l(p,{width:o,children:l(y,{bold:!0,color:"white",children:"\u5546\u54C1\u540D\u79F0"})}),l(p,{width:ro,children:l(y,{bold:!0,color:"white",children:"\u4EF7\u683C"})}),l(p,{width:no,children:l(y,{bold:!0,color:"white",children:"\u89C4\u683C"})}),l(p,{width:so,children:l(y,{bold:!0,color:"white",children:"\u5E93\u5B58ID"})})]})}function cr({item:o}){return l(p,{flexDirection:"column",children:l(y,{color:"gray",children:` shopId: ${o.shopId} thirdItemNo: ${o.thirdItemNo||"-"} outItemNo: ${o.outItemNo||"-"} \u8D27\u53F7: ${o.goodsNo||"-"} ${o.type||"-"} ${o.platform} \u521B\u5EFA: ${Ho(o.gmtCreate)} \u4FEE\u6539: ${Ho(o.gmtModified)}`})})}function lr({item:o,fillWidth:t}){let e=ir[o.status]??{label:o.status,color:"white"};return $(p,{flexDirection:"column",children:[$(p,{flexDirection:"row",children:[l(p,{width:oo,children:l(y,{color:"gray",children:o.id})}),l(p,{width:eo,children:l(y,{color:e.color,children:e.label})}),l(p,{width:Tt,children:l(y,{color:"cyan",children:Wo(o.brandName||"-",Tt-1)})}),l(p,{width:t,children:l(y,{children:Wo(o.goodsName,t-1)})}),l(p,{width:ro,children:$(y,{color:"yellow",children:["\xA5",o.price]})}),l(p,{width:no,children:l(y,{color:"gray",children:o.spec||"-"})}),l(p,{width:so,children:l(y,{color:"gray",children:o.stockGoodsId})})]}),l(cr,{item:o})]})}function Vo({items:o,total:t}){let e=process.stdout.columns||80,r=4,n=oo+eo+Tt+ro+no+so,s=Math.max(e-r-n,20),i=n+s;return $(p,{flexDirection:"column",marginTop:1,borderStyle:"round",borderColor:"gray",paddingX:1,children:[$(p,{flexDirection:"row",children:[l(y,{bold:!0,color:"cyan",children:"\u4E0A\u67B6\u5217\u8868"}),$(y,{color:"gray",children:[" \xB7 \u5171 ",t," \u6761"]})]}),$(p,{flexDirection:"column",marginTop:1,children:[l(ar,{fillWidth:s}),l(y,{color:"gray",children:"\u2500".repeat(i)}),o.map(a=>l(lr,{item:a,fillWidth:s},a.id))]})]})}function Ko(){let o=new dr("listing");return o.description("\u67E5\u8BE2\u4E0A\u67B6\u5546\u54C1\u5217\u8868"),o.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").option("--stock-id <id>","\u4ED3\u5E93 ID").option("-s, --status <status>","\u72B6\u6001\u8FC7\u6EE4\uFF08init/up/down/fail/sold\uFF09").option("-p, --platform <platform>","\u5E73\u53F0","xianyu").option("--page <n>","\u9875\u7801","1").option("--size <n>","\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{let r=await No({id:t.id,stockGoodsId:t.stockGoodsId?Number(t.stockGoodsId):void 0,shopId:t.shopId,stockId:t.stockId,status:t.status,platform:t.platform,page:Number(t.page)||1,size:Math.min(Number(t.size)||20,50)})??{items:[],total:0};if(t.json){r.items?.length?console.log(JSON.stringify(r,null,2)):console.log(JSON.stringify({...r,hint:"\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"},null,2));return}if(!r.items?.length){console.log(ur.yellow("\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"));return}Bt(Vo,{items:r.items,total:Number(r.total)})})),o}import{Command as mr}from"commander";import gr from"chalk";function Yo(){let o=new mr("down");return o.description("\u4E0B\u67B6\u95F2\u9C7C\u5546\u54C1"),o.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{if(!t.id&&!(t.stockGoodsId&&t.shopId)){P(t,"\u8BF7\u6307\u5B9A\u4E0B\u67B6\u6761\u4EF6\uFF1A--id <id> \u6216 --stock-goods-id <id> --shop-id <id>");return}let e={};t.id&&(e.id=t.id),t.stockGoodsId&&(e.stockGoodsId=Number(t.stockGoodsId)),t.shopId&&(e.shopId=t.shopId),t.json||console.log(gr.cyan("\u{1F4E6} \u6B63\u5728\u4E0B\u67B6\u5546\u54C1..."));let r=await ko(e);j(t,r,"\u2705 \u4E0B\u67B6\u6210\u529F")})),o}import{Command as pr}from"commander";import fr from"chalk";function Zo(){let o=new pr("price");return o.description("\u4FEE\u6539\u95F2\u9C7C\u4E0A\u67B6\u5546\u54C1\u4EF7\u683C"),o.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").option("--price <amount>","\u65B0\u4EF7\u683C\uFF08\u5FC5\u586B\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{if(!t.price){P(t,"--price <amount> \u4E3A\u5FC5\u586B\u53C2\u6570");return}if(!t.id&&!(t.stockGoodsId&&t.shopId)){P(t,"\u8BF7\u6307\u5B9A\u5546\u54C1\uFF1A--id <id> \u6216 --stock-goods-id <id> --shop-id <id>");return}let e={price:Number(t.price)};t.id&&(e.id=t.id),t.stockGoodsId&&(e.stockGoodsId=Number(t.stockGoodsId)),t.shopId&&(e.shopId=t.shopId),t.json||console.log(fr.cyan(`\u{1F4B0} \u6B63\u5728\u4FEE\u6539\u4EF7\u683C\u4E3A ${t.price}...`));let r=await Ro(e);j(t,r,"\u2705 \u4EF7\u683C\u4FEE\u6539\u6210\u529F")})),o}import{Command as hr}from"commander";import yr from"chalk";function te(){let o=new hr("edit");return o.description("\u4FEE\u6539\u5DF2\u4E0A\u67B6\u5546\u54C1\u4FE1\u606F\uFF08\u6807\u9898\u3001\u63CF\u8FF0\u3001\u54C1\u724C\u3001\u7C7B\u76EE\u3001\u56FE\u7247\u3001\u5C5E\u6027\u7B49\uFF09"),o.option("--id <id>","\u5546\u54C1\u4E0A\u67B6 ID\uFF08goodsListingId\uFF0C\u63A8\u8350\uFF09").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID\uFF08\u4E0E --account \u914D\u5408\uFF09").option("--account <shopId>","\u95F2\u9C7C\u7528\u6237\u540D/\u5E97\u94FA ID\uFF08\u4E0E --stock-goods-id \u914D\u5408\uFF09").option("--title <title>","\u5546\u54C1\u6807\u9898").option("--desc <desc>","\u5546\u54C1\u63CF\u8FF0").requiredOption("--category-id <id>","\u5546\u54C1\u7C7B\u76EE ID\uFF08\u5927\u5206\u7C7B\uFF0C\u540E\u7AEF\u5FC5\u586B\uFF09").requiredOption("--channel-cat-id <id>","\u6E20\u9053\u7C7B\u76EE ID\uFF08\u5C0F\u5206\u7C7B\uFF0C\u540E\u7AEF\u5FC5\u586B\uFF09").option("--image-ids <ids>","\u56FE\u7247 ID \u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\uFF09").option("--item-attrs <json>","\u5546\u54C1\u5C5E\u6027\u5217\u8868\uFF08JSON \u5B57\u7B26\u4E32\uFF09").option("--brand-name <name>","\u54C1\u724C\u540D\u79F0").option("--stuff-status <status>","\u6210\u8272\u7B49\u7EA7\uFF1A100=\u5168\u65B0 -1=\u51C6\u65B0 99=99\u65B0 95=95\u65B0 90=9\u65B0").option("--goods-no <no>","\u8D27\u53F7").option("--original-price <price>","\u539F\u4EF7\uFF08\u5355\u4F4D\uFF1A\u5143\uFF09").option("--size <size>","\u5C3A\u7801").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),o.action(m(async t=>{if(!t.id&&!(t.stockGoodsId&&t.account)){P(t,"\u8BF7\u6307\u5B9A\u5546\u54C1\uFF1A--id <goodsListingId> \u6216 --stock-goods-id <id> --account <shopId>");return}let e={categoryId:Number(t.categoryId),channelCatId:t.channelCatId};if(t.id&&(e.goodsListingId=Number(t.id)),t.stockGoodsId&&(e.stockGoodsId=Number(t.stockGoodsId)),t.account&&(e.account=t.account),t.title&&(e.title=t.title),t.desc&&(e.desc=t.desc),t.imageIds&&(e.imageIdList=t.imageIds.split(",").map(s=>s.trim())),t.brandName&&(e.brandName=t.brandName),t.stuffStatus&&(e.stuffStatus=Number(t.stuffStatus)),t.goodsNo&&(e.goodsNo=t.goodsNo),t.originalPrice&&(e.originalPrice=Number(t.originalPrice)),t.size&&(e.size=t.size),t.itemAttrs)try{e.itemAttrList=JSON.parse(t.itemAttrs)}catch{P(t,"--item-attrs JSON \u89E3\u6790\u5931\u8D25");return}if(!Object.keys(e).some(s=>!["goodsListingId","stockGoodsId","account"].includes(s))){P(t,"\u672A\u6307\u5B9A\u9700\u8981\u4FEE\u6539\u7684\u5B57\u6BB5");return}t.json||console.log(yr.cyan("\u6B63\u5728\u4FEE\u6539\u5546\u54C1\u4FE1\u606F..."));let n=await Lo(e);j(t,n,"\u2705 \u5546\u54C1\u4FE1\u606F\u4FEE\u6539\u6210\u529F")})),o}import{Command as et}from"commander";import S from"chalk";var wr={100:"\u5168\u65B0",[-1]:"\u51C6\u65B0",99:"99\u65B0",95:"95\u65B0",90:"9\u65B0"};function oe(){let o=new et("hang-up");return o.description("\u95F2\u9C7C\u6302\u552E\u4E0A\u67B6\uFF08\u5B8C\u6574\u5546\u54C1\u4FE1\u606F\u6A21\u5F0F\uFF09"),o.addCommand(new et("categories").description("\u83B7\u53D6\u95F2\u9C7C\u7C7B\u76EE\u5217\u8868\uFF08\u5927\u5206\u7C7B \u2192 \u5C0F\u5206\u7C7B\uFF09").option("--sp-biz-type <n>","\u4E1A\u52A1\u5206\u7C7B\uFF0C16=\u5962\u54C1","16").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(m(async t=>{let e=await Uo(Number(t.spBizType));if(t.json){console.log(JSON.stringify(e,null,2));return}let r=new Map;for(let n of e){let s=String(n.catId);r.has(s)||r.set(s,{catName:n.catName,children:[]}),r.get(s).children.push({channel:n.channel,channelCatId:n.channelCatId})}for(let[n,s]of r){console.log(S.bold(`${s.catName} (catId: ${S.green(n)})`));for(let i of s.children)console.log(` ${i.channel} (channelCatId: ${S.green(i.channelCatId)})`)}}))),o.addCommand(new et("props").description("\u83B7\u53D6\u6307\u5B9A\u7C7B\u76EE\u4E0B\u7684\u5C5E\u6027\u5217\u8868\uFF08\u542B\u53EF\u9009\u503C\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(m(async t=>{let e=await Eo(t.channelCatId);if(t.json){console.log(JSON.stringify(e,null,2));return}for(let r of e)if(console.log(S.bold(`
|
|
38
|
-
${r.propName} (propId: ${r.propId})`)),r.propsValues?.length)for(let n of r.propsValues)console.log(` ${n.valueName} (valueId: ${n.valueId})`);else console.log(S.gray(" \uFF08\u4F7F\u7528 brands \u5B50\u547D\u4EE4\u641C\u7D22\uFF09"))}))),o.addCommand(new et("brands").description("\u641C\u7D22\u95F2\u9C7C\u54C1\u724C\uFF08\u6309\u5173\u952E\u5B57\u8FC7\u6EE4\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID").requiredOption("--prop-id <id>","\u5C5E\u6027 ID\uFF08\u54C1\u724C\u5C5E\u6027\u7684 propId\uFF09").requiredOption("--key <keyword>","\u641C\u7D22\u5173\u952E\u5B57").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(m(async t=>{let e=await jo(t.channelCatId,t.propId,t.key);if(t.json){console.log(JSON.stringify(e,null,2));return}if(!e.length){console.log(S.yellow("\u672A\u627E\u5230\u5339\u914D\u7684\u54C1\u724C"));return}for(let r of e)console.log(` ${r.valueName} (valueId: ${r.valueId})`)}))),o.addCommand(new et("upload-images").description("\u6279\u91CF\u4E0A\u4F20\u56FE\u7247\u5230\u95F2\u9C7C\uFF08\u6302\u552E\u524D\u5FC5\u987B\u5148\u4E0A\u4F20\u56FE\u7247\uFF09").requiredOption("--shop-id <id>","\u5E97\u94FA ID").requiredOption("--files <paths>","\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84\uFF0C\u9017\u53F7\u5206\u9694").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(m(async t=>{let e=t.files.split(",").map(s=>s.trim()).filter(Boolean);if(e.length===0){P(t,"\u8BF7\u63D0\u4F9B\u81F3\u5C11\u4E00\u5F20\u56FE\u7247");return}t.json||console.log(S.cyan(`\u6B63\u5728\u4E0A\u4F20 ${e.length} \u5F20\u56FE\u7247...`));let{images:r,failed:n}=await Do(t.shopId,e);if(t.json){let s={success:!0,images:r};n.length&&(s.warning=`${n.length} \u5F20\u56FE\u7247\u4E0A\u4F20\u5931\u8D25`,s.failed=n),console.log(JSON.stringify(s,null,2))}else{if(r.length){console.log(S.green(`\u4E0A\u4F20\u6210\u529F\uFF0C\u5171 ${r.length} \u5F20`));for(let s of r)console.log(` \u56FE\u7247ID: ${s.value}`)}if(n.length){console.log(S.yellow(`
|
|
39
|
-
${n.length} \u5F20\u4E0A\u4F20\u5931\u8D25:`));for(let s of n)console.log(` ${s.file}: ${s.error}`)}}}))),o.addCommand(new et("submit").description("\u63D0\u4EA4\u6302\u552E\u4E0A\u67B6").requiredOption("--shop-id <id>","\u5E97\u94FA ID\uFF08\u5373\u95F2\u9C7C\u7528\u6237\u540D account\uFF09").requiredOption("--title <title>","\u5546\u54C1\u6807\u9898").requiredOption("--price <amount>","\u552E\u4EF7").requiredOption("--category-id <id>","\u5927\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").requiredOption("--image-ids <ids>","\u56FE\u7247 ID \u5217\u8868\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u5148\u901A\u8FC7 upload-images \u83B7\u53D6\uFF09").requiredOption("--stuff-status <n>","\u6210\u8272\uFF1A100 \u5168\u65B0 / -1 \u51C6\u65B0 / 99 99\u65B0 / 95 95\u65B0 / 90 9\u65B0").option("--item-attrs <json>",'\u5546\u54C1\u5C5E\u6027\u5217\u8868 JSON\uFF0C\u683C\u5F0F: [{"valueName":"x","valueId":"y","propId":"z"}]').option("--brand-name <name>","\u54C1\u724C\u540D\u79F0").requiredOption("--desc <desc>","\u5546\u54C1\u63CF\u8FF0").option("--size <size>","\u5C3A\u7801").option("--goods-no <no>","\u8D27\u53F7").option("--original-price <amount>","\u539F\u4EF7").option("--trade-type <n>","\u4EA4\u6613\u65B9\u5F0F\uFF1A0 \u4EC5\u5728\u7EBF / 1 \u4EC5\u7EBF\u4E0B / 2 \u7EBF\u4E0A\u6216\u7EBF\u4E0B","0").option("--transport-fee <amount>","\u8FD0\u8D39\uFF08\u9ED8\u8BA4 0 \u5305\u90AE\uFF09","0").option("--yhb","\u662F\u5426\u5F00\u542F\u9A8C\u8D27\u5B9D").requiredOption("--out-item-no <no>","\u5546\u5BB6\u7F16\u7801\uFF08\u540C\u5E97\u94FA\u552F\u4E00\uFF0C\u7528\u6237\u81EA\u5B9A\u4E49\uFF09").option("--division-id <id>","\u884C\u653F\u533A\u5212 ID\uFF08\u5E02\u7EA7 ID\uFF0C\u9ED8\u8BA4\u676D\u5DDE 330100\uFF09","330100").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(m(async t=>{let e=t.imageIds.split(",").map(i=>i.trim()),r=t.itemAttrs?JSON.parse(t.itemAttrs):void 0,n={account:t.shopId,title:t.title,reservePrice:Number(t.price),categoryId:Number(t.categoryId),channelCatId:t.channelCatId,imageIdList:e,stuffStatus:Number(t.stuffStatus),itemBizType:2,spBizType:"16",tradeType:Number(t.tradeType)||0,transportFee:Number(t.transportFee)||0,yhb:t.yhb??!1,...t.brandName&&{brandName:t.brandName},desc:t.desc,...t.size&&{size:t.size},...t.goodsNo&&{goodsNo:t.goodsNo},...t.originalPrice&&{originalPrice:Number(t.originalPrice)},...r?.length&&{itemAttrList:r},outItemNo:t.outItemNo,divisionId:Number(t.divisionId)||330100,apiAfterSalesDo:{supportFd10msPolicy:!1,supportFd24hsPolicy:!1,supportNfrPolicy:!1,supportSdrPolicy:!1,supportVnrPolicy:!1,supportGpaPolicy:!1,supportFd48hsPolicy:!1}};t.json||(console.log(S.cyan("\u6B63\u5728\u63D0\u4EA4\u6302\u552E...")),console.log(S.gray(` \u6807\u9898: ${n.title}`)),console.log(S.gray(` \u552E\u4EF7: \xA5${n.reservePrice}`)),console.log(S.gray(` \u6210\u8272: ${wr[n.stuffStatus]??n.stuffStatus}`)),console.log(S.gray(` \u56FE\u7247: ${e.length} \u5F20`)),r?.length&&console.log(S.gray(` \u5C5E\u6027: ${r.length} \u9879`)));let s=await Oo(n);j(t,s,"\u6302\u552E\u63D0\u4EA4\u6210\u529F")}))),o}function ee(){let o=new xr("goods");return o.description("\u5546\u54C1\u7BA1\u7406"),o.addCommand(Xo()),o.addCommand(zo()),o.addCommand(Fo()),o.addCommand(Ko()),o.addCommand(Yo()),o.addCommand(Zo()),o.addCommand(te()),o.addCommand(Bo()),o.addCommand(oe()),o}import{Command as Ir}from"commander";import O from"chalk";import{promises as Sr}from"node:fs";import Cr from"node:path";import Tr from"node:os";import{spawn as br}from"node:child_process";var bt="@round2ai/r2-cli";function re(){let o=new Ir("uninstall");return o.description("\u5378\u8F7D R2-CLI \u5E76\u6E05\u9664\u6240\u6709\u914D\u7F6E"),o.action(async()=>{try{console.log(O.yellow(`
|
|
40
|
-
\u26A0\uFE0F \u5373\u5C06\u6267\u884C\u4EE5\u4E0B\u64CD\u4F5C\uFF1A`)),console.log(O.gray(" 1. \u5220\u9664\u914D\u7F6E\u76EE\u5F55 ~/.r2-cli/")),console.log(O.gray(` 2. \u5168\u5C40\u5378\u8F7D ${bt}
|
|
41
|
-
`));let{confirm:t}=await import("@inquirer/prompts");if(!await t({message:"\u786E\u8BA4\u5378\u8F7D\uFF1F",default:!1})){console.log(O.gray("\u5DF2\u53D6\u6D88\u5378\u8F7D"));return}let r=Cr.join(Tr.homedir(),".r2-cli");try{await Sr.rm(r,{recursive:!0,force:!0}),console.log(O.green("\u2705 \u914D\u7F6E\u6587\u4EF6\u5DF2\u6E05\u9664"))}catch{console.log(O.yellow("\u26A0\uFE0F \u914D\u7F6E\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u5FFD\u7565\uFF09"))}console.log(O.cyan(`\u6B63\u5728\u5378\u8F7D ${bt}...`)),br("npm",["uninstall","-g",bt],{stdio:"inherit",shell:!0}).on("exit",s=>{s===0?console.log(O.green(`
|
|
42
|
-
\u2705 ${bt} \u5DF2\u5378\u8F7D`)):(console.log(O.yellow(`
|
|
43
|
-
\u26A0\uFE0F npm \u5378\u8F7D\u5931\u8D25 (exit code: ${s})`)),console.log(O.gray(" \u5982\u901A\u8FC7 yarn/pnpm \u5B89\u88C5\uFF0C\u8BF7\u624B\u52A8\u5378\u8F7D"))),process.exit(s??1)})}catch(t){X(t)}}),o}import{Command as vr}from"commander";import at from"chalk";import{spawn as kr,execSync as Rr}from"node:child_process";import{readFileSync as Pr}from"node:fs";import{join as Ar}from"node:path";function Pt(){for(let o of["../package.json","../../package.json"])try{return JSON.parse(Pr(Ar(import.meta.dirname,o),"utf-8")).version}catch{}return"0.0.0"}var ne="@round2ai/r2-cli";function Lr(o,t){return new Promise(e=>{let r=kr(o,t,{stdio:"inherit"});r.on("close",n=>e(n??1)),r.on("error",()=>e(1))})}function se(){return new vr("update").description("\u4E00\u952E\u66F4\u65B0 CLI \u548C\u6280\u80FD").action(async()=>{let o=Pt();console.log(at.cyan(`\u5F53\u524D\u7248\u672C: ${o}`)),console.log(at.cyan("\u6B63\u5728\u66F4\u65B0 CLI...")),await Lr("npm",["install","-g",`${ne}@latest`])!==0&&(console.error(at.red(`
|
|
44
|
-
\u2717 update failed \xB7 Try: npm install -g ${ne}@latest`)),process.exit(1));let e=o;try{e=Rr("r2-cli --version",{encoding:"utf-8"}).trim()||o}catch{}console.log(at.green(`
|
|
45
|
-
\u2713 \u66F4\u65B0\u5B8C\u6210: ${o} \u2192 ${e}`)),console.log(at.green("\u2713 \u6280\u80FD\u5DF2\u540C\u6B65\u66F4\u65B0"))})}function ie(o){let t=o.command("auth").description("\u6388\u6743\u7BA1\u7406");t.addCommand(Qt()),t.addCommand(Xt()),t.addCommand(_t()),t.addCommand(Mt()),o.addCommand(ee()),o.addCommand(re()),o.addCommand(se())}import ae from"chalk";var ce="@round2ai/r2-cli",Nr=[`https://registry.npmmirror.com/${encodeURIComponent(ce)}/latest`,`https://registry.npmjs.org/${encodeURIComponent(ce)}/latest`],Dr=5e3;async function Or(o){let t=new AbortController,e=setTimeout(()=>t.abort(),Dr);try{let r=await fetch(o,{signal:t.signal});return r.ok?(await r.json()).version??null:null}catch{return null}finally{clearTimeout(e)}}async function Ur(){let o=await Promise.allSettled(Nr.map(Or));for(let t of o)if(t.status==="fulfilled"&&t.value)return t.value;return null}function Er(o,t){let e=o.split(".").map(Number),r=t.split(".").map(Number);for(let n=0;n<3;n++)if((e[n]??0)!==(r[n]??0))return(e[n]??0)>(r[n]??0);return!1}async function le(o){let t=await Ur();t&&Er(t,o)&&jr(o,t)}function jr(o,t){console.error(ae.yellow(`
|
|
46
|
-
Update available: ${o} \u2192 ${t}`)+ae.gray(`
|
|
32
|
+
`));let a=3e5,m=1e3;try{let p=await yt(r.state,t,a,m,o,i);if(p.status==="success")return p;throw new k(`${e.platformName}\u6388\u6743\u5931\u8D25: `+(p.status==="expired"?"\u94FE\u63A5\u5DF2\u8FC7\u671F":"\u672A\u77E5\u72B6\u6001"))}finally{s()}}B();import L from"chalk";import he from"chalk";var ye="@round2ai/r2-cli",Jr=[`https://registry.npmmirror.com/${encodeURIComponent(ye)}/latest`,`https://registry.npmjs.org/${encodeURIComponent(ye)}/latest`],Gr=5e3;async function _r(t){let o=new AbortController,e=setTimeout(()=>o.abort(),Gr);try{let r=await fetch(t,{signal:o.signal});return r.ok?(await r.json()).version??null:null}catch{return null}finally{clearTimeout(e)}}async function Qr(){let t=await Promise.allSettled(Jr.map(_r));for(let o of t)if(o.status==="fulfilled"&&o.value)return o.value;return null}function Fr(t,o){let e=t.split(".").map(Number),r=o.split(".").map(Number);for(let n=0;n<3;n++)if((e[n]??0)!==(r[n]??0))return(e[n]??0)>(r[n]??0);return!1}var lo=null,Nt=null;function Ie(){return!lo||!Nt?null:{_notice:{update:{message:`Update available: ${Nt} \u2192 ${lo}`,command:"r2-cli update"}}}}async function we(t){let o=await Qr();o&&(Fr(o,t)?(lo=o,Nt=t,Mr(t,o)):Nt=t)}function Mr(t,o){console.error(he.yellow(`
|
|
33
|
+
Update available: ${t} \u2192 ${o}`)+he.gray(`
|
|
47
34
|
Run: r2-cli update
|
|
48
|
-
`))}
|
|
49
|
-
`))
|
|
50
|
-
\u64CD\u4F5C\
|
|
35
|
+
`))}function zr(t){if(t instanceof k)console.error(L.red(`
|
|
36
|
+
\u25B2 ${t.message}`)),console.error(L.gray(`\u2192 \u8BF7\u5148\u8FD0\u884C: r2-cli auth login
|
|
37
|
+
`));else if(t instanceof v)console.error(L.red(`\u25B2 \u64CD\u4F5C\u5931\u8D25: ${t.message}`)),t.status&&console.error(L.gray(` \u72B6\u6001\u7801: ${t.status}`));else if(t instanceof F)console.error(L.red(`\u25B2 \u914D\u7F6E\u6587\u4EF6\u5F02\u5E38: ${t.message}`)),t.path&&console.error(L.gray(` \u8DEF\u5F84: ${t.path}`)),console.error(L.gray(`\u2192 \u8BF7\u5C1D\u8BD5\u91CD\u65B0\u767B\u5F55: r2-cli auth login
|
|
38
|
+
`));else{let o=t instanceof Error?t.message:String(t);console.error(L.red(`\u25B2 ${o}`))}process.exit(1)}function C(t){let o=Ie();return o?{...t,...o}:t}function w(t){let o=typeof t=="object"&&t!==null?t:{value:t};o=C(o),console.log(JSON.stringify(o,null,2))}function uo(t,o){let e={success:!1,error:t};o&&(e.errorType=o),e=C(e),console.log(JSON.stringify(e)),process.exit(1)}function c(t){return async o=>{try{await t(o)}catch(e){if(o.json){let r=e instanceof Error?e.message:String(e),n=lt(e),i=e instanceof v?e.status:void 0,s={success:!1,error:r,errorType:n};i!=null&&(s.status=i),s=C(s),console.log(JSON.stringify(s)),process.exit(1)}zr(e)}}}function g(t,o){t.json&&(console.log(JSON.stringify({success:!1,error:o,errorType:"validation"})),process.exit(1)),console.log(L.yellow(o))}function f(t,o,e){if(t.json){let r={success:!0,data:o};r=C(r),console.log(JSON.stringify(r,null,2))}else e&&console.log(L.green(e)),console.log(JSON.stringify(o,null,2))}function vt(t){return async(...o)=>{try{await t(...o)}catch(e){let r=e instanceof Error?e.message:String(e),n=lt(e);uo(r,n)}}}var Xr=new Set(["accessToken","refreshExpireIn"]);function be(t){return t.map(o=>{let e={};for(let[r,n]of Object.entries(o))Xr.has(r)||(e[r]=n);return e})}function Rt(t){t.option("--expire <ms>","\u8FC7\u671F\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09","300000").option("--interval <ms>","\u8F6E\u8BE2\u95F4\u9694\uFF08\u6BEB\u79D2\uFF09","1000")}function Lt(t,o){return{expireMs:Number.parseInt(t.expire??String(o?.expireMs??3e5),10),intervalMs:Number.parseInt(t.interval??String(o?.intervalMs??1e3),10)}}async function Ot(t){let{qrInfo:o,qrUrl:e,setStatus:r,closeServer:n,waitArgs:i}=await t.generate();console.log(JSON.stringify(C(o),null,2)),M(e);try{let s=await t.waitResult(i,r);console.log(JSON.stringify(C(t.formatSuccess(s))))}catch(s){let a=s instanceof Error?s.message:String(s);console.log(JSON.stringify(C({success:!1,error:a}))),process.exit(1)}finally{setTimeout(n,1e3)}}function po(){let t=new Se("login");t.description("\u626B\u7801\u767B\u5F55 Round2AI \u8D26\u6237").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");let o=new Se("poll").description("\u8F6E\u8BE2\u767B\u5F55\u72B6\u6001\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").requiredOption("--token <qrToken>","\u4E8C\u7EF4\u7801 token").action(vt(async e=>{let r=R(),{expireMs:n,intervalMs:i}=Lt(e),s=await r.waitForLogin(e.token,n,i);console.log(JSON.stringify(C({success:!0,...s})))}));return Rt(o),t.addCommand(o),t.action(c(async e=>{e.json?await Ot({generate:async()=>{let r=R(),{qrData:n,qrUrl:i,setStatus:s,closeServer:a}=await r.generateQR(),m=Number.parseInt(n.expireTime,10),p=Number.parseInt(n.pollInterval,10);return{qrInfo:{qrToken:n.qrToken,expireTimeMs:m,pollIntervalMs:p,qrUrl:i},qrUrl:i,setStatus:s,closeServer:a,waitArgs:{qrToken:n.qrToken,expireMs:m,intervalMs:p}}},waitResult:({qrToken:r,expireMs:n,intervalMs:i},s)=>R().waitForLogin(r,n,i,void 0,s,!0),formatSuccess:r=>({success:!0,userInfo:r.userInfo})}):await R().login()})),t}import{Command as Wr}from"commander";function go(){let t=new Wr("logout");return t.description("\u9000\u51FA\u767B\u5F55").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{if(o.json){let{getAuthStorage:e}=await Promise.resolve().then(()=>(gt(),ro));await e().clearCredentials(),f(o,null,"\u5DF2\u9000\u51FA\u767B\u5F55")}else await R().logout()})),t}import{Command as Hr}from"commander";function fo(){let t=new Hr("status");return t.description("\u67E5\u770B\u767B\u5F55\u72B6\u6001").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{if(o.json){let{getAuthStorage:e}=await Promise.resolve().then(()=>(gt(),ro)),r=e();if(!await r.isLoggedIn()){f(o,{loggedIn:!1},"\u672A\u767B\u5F55");return}let i=await r.getCredentials();f(o,{loggedIn:!0,userInfo:i.userInfo,timestamp:i.timestamp})}else await R().status()})),t}import{Command as Ce}from"commander";function ho(){let t=new Ce("platform");t.description("\u7B2C\u4E09\u65B9\u5E73\u53F0\u6388\u6743").requiredOption("--name <platform>",`\u5E73\u53F0\u540D\u79F0 (${co().join("/")})`).option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09");let o=new Ce("poll").description("\u8F6E\u8BE2\u6388\u6743\u72B6\u6001\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").requiredOption("--state <state>","\u6388\u6743\u8F6E\u8BE2 token").requiredOption("--name <platform>",`\u5E73\u53F0\u540D\u79F0 (${co().join("/")})`);return Rt(o),o.action(vt(async e=>{let{expireMs:r,intervalMs:n}=Lt(e),i=await yt(e.state,e.name,r,n);i.status==="success"?console.log(JSON.stringify(C({success:!0,shopId:i.shopId,shopName:i.shopName}))):uo(`\u6388\u6743\u72B6\u6001: ${i.status}`)})),t.addCommand(o),t.action(c(async e=>{let r=e.name;e.json?await Ot({generate:async()=>{let{authData:n,qrUrl:i,setStatus:s,closeServer:a}=await jt(r),m=3e5,p=1e3;return{qrInfo:{state:n.state,expireTimeMs:m,pollIntervalMs:p,qrUrl:i},qrUrl:i,setStatus:s,closeServer:a,waitArgs:{state:n.state,platform:r,expireMs:m,intervalMs:p}}},waitResult:async({state:n,platform:i,expireMs:s,intervalMs:a},m)=>{let p=await yt(n,i,s,a,void 0,m);if(p.status!=="success")throw new Error(`\u6388\u6743\u72B6\u6001: ${p.status}`);return p},formatSuccess:n=>({success:!0,shopId:n.shopId,shopName:n.shopName})}):await mo(r)})),t}import{Command as Zn}from"commander";import ti from"chalk";import{Command as nn}from"commander";import ve from"chalk";E();async function Ut(t){return u.post("mms/goods/listing/up/xianyu",t)}async function yo(t){return u.post("mms/goods/listing/down/xianyu",t)}async function Io(t){return u.post("mms/goods/listing/update/xyPrice",t)}async function wo(t){return u.post("mms/goods/listing/update/goodsInfo",t)}async function bo(t){return u.post("mms/goods/listing/hang/up/xianyu",t)}async function So(t){return u.get("mms/goods/listing/get",A(t))}async function It(t){return u.get("mms/goods/listing/list",t?A(t):void 0)}E();async function wt(){return await u.get("mms/user/shop/list")??[]}async function bt(){return await u.get("mms/user/stock/list")??[]}async function St(t){let o=t?A(t):void 0;return u.get("mms/seller/goods/select/list",o)}import{basename as Zr}from"node:path";import{stat as Vr,readFile as xe}from"node:fs/promises";import Kr from"sharp";var Yr=2*1024*1024;async function Pe(t,o=Yr){let{size:e}=await Vr(t);if(e<=o)return xe(t);let r=[90,80,70,60,50,40,30],n=null;for(let i of r){let s=await Kr(t).jpeg({quality:i,mozjpeg:!0}).toBuffer();if(s.length<=o)return s;n=s}return n??xe(t)}async function Co(t,o){let e=`platform/xy/media/upload?shopId=${encodeURIComponent(t)}`,r=async(a,m=1)=>{for(let p=0;p<=m;p++)try{if(a.type==="url")return await u.post(e,{url:a.url});let T=await Pe(a.path),d=Zr(a.path),I=new FormData;return I.append("file",new Blob([new Uint8Array(T)]),d),await u.upload(e,I)}catch(T){if(p<m){await new Promise(d=>setTimeout(d,1e3));continue}throw T}throw new Error("unreachable")},n=await Promise.allSettled(o.map(r)),i=[],s=[];for(let a=0;a<n.length;a++){let m=n[a];if(m.status==="fulfilled")i.push(m.value);else{let p=m.reason,T=o[a],d=T.type==="url"?T.url:T.path;s.push({file:d,error:p instanceof Error?p.message:`${p}`})}}return{images:i,failed:s}}E();async function xo(t=16){return await u.get("platform/xy/cat",A({spBizType:t}))??[]}async function Po(t){return await u.get("platform/xy/props",A({channelCatId:t}))??[]}async function To(t,o,e){return await u.get("platform/xy/props/value",A({channelCatId:t,propId:o,key:e}))??[]}E();var G="mms/taobao/jbp";async function Ao(t){return u.get(`${G}/spu/query`,A(t))}async function ko(t,o){return u.get(`${G}/spu/detail`,A({shopId:t,spuId:o}))}async function jo(t){return u.post(`${G}/apply/sku/add`,t)}async function No(t){return u.get(`${G}/apply/item/query`,A(t))}async function vo(t){return u.post(`${G}/apply/sku/quantity/update`,t)}async function Ro(t){return u.post(`${G}/apply/sku/price/update`,t)}async function Lo(t){return u.post(`${G}/apply/spu/offline`,t)}async function Oo(t){return u.post(`${G}/apply/sku/offline`,t)}function Re(){let t=new nn("shops");return t.description("\u67E5\u770B\u6240\u6709\u5DF2\u6388\u6743\u5E97\u94FA\uFF08\u8DE8\u5E73\u53F0\uFF09"),t.option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let e=await wt();if(o.json){w(be(e));return}if(!e.length){console.log(ve.yellow("\u672A\u627E\u5230\u5DF2\u6388\u6743\u7684\u5E97\u94FA")),console.log(ve.gray(" \u63D0\u793A: \u8BF7\u5148\u5728\u7B2C\u4E8C\u56DE\u5408 APP \u4E2D\u6388\u6743\u5E97\u94FA"));return}let{ShopsTable:r}=await Promise.resolve().then(()=>(Ne(),ke)),{renderComponent:n}=await Promise.resolve().then(()=>(ht(),ft));n(r,{shops:e,platform:"all"})})),t}import{Command as dn}from"commander";import mn from"chalk";function $e(){let t=new dn("stocks");return t.description("\u67E5\u770B\u6240\u6709\u4ED3\u5E93"),t.option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let e=await bt();if(o.json){w(e);return}if(!e.length){console.log(mn.yellow("\u672A\u627E\u5230\u4ED3\u5E93\u4FE1\u606F"));return}let{StocksTable:r}=await Promise.resolve().then(()=>(Ue(),Le)),{renderComponent:n}=await Promise.resolve().then(()=>(ht(),ft));n(r,{stocks:e})})),t}import{Command as ln}from"commander";import it from"chalk";function De(){let t=new ln("list");return t.description("\u67E5\u770B\u4ED3\u5E93\u4E2D\u7684\u9009\u54C1\u5546\u54C1"),t.option("--stock-id <id>","\u4ED3\u5E93 ID\uFF08\u4ECE goods stocks \u83B7\u53D6\uFF09").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--page <n>","\u9875\u7801","1").option("--size <n>","\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let r=await St({stockId:o.stockId||void 0,stockGoodsId:o.stockGoodsId||void 0,page:Number(o.page)||1,size:Math.min(Number(o.size)||20,50)})??{items:[],total:0};if(o.json){let n=r.items?.length?r:{...r,hint:"\u9009\u54C1\u5546\u54C1\u4E3A\u7A7A\uFF0C\u8BF7\u5148\u5728\u540E\u53F0\u751F\u6210\u9009\u54C1\u8868\u6570\u636E\u540E\u518D\u8BD5"};w(n);return}if(!r.items?.length){console.log(it.yellow("\u6682\u65E0\u9009\u54C1\u5546\u54C1\uFF0C\u8BF7\u5148\u7ED1\u5B9A\u4ED3\u5E93\u6216\u5728\u540E\u53F0\u751F\u6210\u9009\u54C1\u8868\u6570\u636E"));return}console.log(it.cyan(`
|
|
39
|
+
\u9009\u54C1\u5546\u54C1\uFF08\u5171 ${r.total} \u4EF6\uFF0C\u7B2C ${r.page} \u9875\uFF09
|
|
40
|
+
`));for(let n of r.items)console.log(` ${it.bold(n.goodsName)} ${n.size?it.gray(`| ${n.size}`):""}`),console.log(` \u54C1\u724C: ${n.brand} \u5EFA\u8BAE\u552E\u4EF7: \xA5${n.salePrice} stockGoodsId: ${it.green(n.stockGoodsId)}`),console.log(it.gray(` \u5206\u7C7B: ${n.cate1Name} > ${n.cate2Name} > ${n.cate3Name}`)),console.log()})),t}import{Command as Jn}from"commander";import{Command as gn}from"commander";import D from"chalk";import{select as Qo,input as fn,confirm as hn}from"@inquirer/prompts";B();function un(t){let o=t.charCodeAt(0);return o>=32&&o<=126}function pn(t){let o=0;for(let e of t)o+=un(e)?.5:1;return o}function Et(t,o=30){let e=pn(t);return e>o?`\u6807\u9898\u8FC7\u957F\uFF08${e}/${o}\uFF09\uFF0C\u95F2\u9C7C\u6807\u9898\u4E0A\u9650 30 \u4E2A\u6C49\u5B57\uFF08\u6216 60 \u4E2A\u82F1\u6587\u5B57\u7B26\uFF09`:null}var Ee=99999999;function $(t,o="\u552E\u4EF7"){return Number.isFinite(t)?t<=0?`${o}\u5FC5\u987B\u5927\u4E8E 0`:t>Ee?`${o}\u4E0D\u80FD\u8D85\u8FC7 ${Ee} \u5143`:null:`${o}\u65E0\u6548`}var yn=2e3,In=1e4;function wn(t){let o=t.status?.toLowerCase()??"";return o===""||o==="init"||o==="pending"||o==="processing"}async function qe(t,o,e){e||process.stdout.write(D.cyan("\u23F3 \u6B63\u5728\u67E5\u8BE2\u4E0A\u67B6\u8FDB\u5EA6..."));let r=await K(()=>So({stockGoodsId:t,shopId:o,platform:"xianyu"}),{interval:yn,timeout:In,condition:n=>!wn(n)});return e||process.stdout.write("\r"+" ".repeat(30)+"\r"),r}function qt(){let t=new gn("up");return t.description("\u4E0A\u67B6\u5546\u54C1"),t.option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1ID\uFF08\u4ECE goods list \u83B7\u53D6\uFF09").option("--shop-id <id>","\u5E97\u94FAID\uFF08\u4ECE goods shops \u83B7\u53D6\uFF09").option("--price <amount>","\u4E0A\u67B6\u4EF7\u683C").option("--transport-fee <amount>","\u8FD0\u8D39\uFF08\u5143\uFF0C\u9ED8\u8BA4 0 \u5305\u90AE\uFF09","0").option("--yhb","\u662F\u5426\u5F00\u542F\u9A8C\u8D27\u5B9D").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async o=>{if(o.json&&!(o.stockGoodsId&&o.shopId&&o.price)){g(o,"Agent \u6A21\u5F0F\u9700\u8981 --stock-goods-id, --shop-id, --price");return}if(o.stockGoodsId&&o.shopId&&o.price){let d=Number(o.stockGoodsId),I=o.shopId,dt=Number(o.price),te=$(dt);if(te){g(o,te);return}let gr=await Ut({stockGoodsId:d,shopId:I,price:dt,platform:"xianyu",transportFee:Number(o.transportFee)||0,yhb:o.yhb??!1}),Vt,oe,ee;try{Vt=await qe(d,I,o.json)}catch(Pt){oe=Pt instanceof Error?Pt.message:String(Pt),ee=lt(Pt)}let mt={submit:gr};Vt?mt.listing=Vt:(mt.listing=null,mt.warning=`\u63D0\u4EA4\u6210\u529F\u4F46\u56DE\u67E5\u5931\u8D25\uFF1A${oe}`,mt.verifyStatus=ee),console.log(JSON.stringify(C({success:!0,data:mt}),null,2));return}let e=await wt();if(e.length===0){console.log(D.yellow("\u6CA1\u6709\u5DF2\u6388\u6743\u5E97\u94FA\uFF0C\u8BF7\u5148\u8FD0\u884C r2-cli auth platform --name <\u5E73\u53F0> \u6388\u6743"));return}let r=await Qo({message:"\u9009\u62E9\u5E97\u94FA",choices:e.map(d=>({name:`${d.shopName} (${d.platform})`,value:d.shopId}))}),n=await bt();if(n.length===0){console.log(D.yellow("\u6CA1\u6709\u53EF\u7528\u7684\u4ED3\u5E93"));return}let i=await Qo({message:"\u9009\u62E9\u4ED3\u5E93",choices:n.map(d=>({name:d.stockName,value:d.stockId}))}),s=await St({stockId:i,size:100});if(!s.items?.length){console.log(D.yellow("\u8BE5\u4ED3\u5E93\u6CA1\u6709\u53EF\u9009\u7684\u5546\u54C1"));return}let a=await Qo({message:"\u9009\u62E9\u5546\u54C1",choices:s.items.map(d=>({name:`${d.goodsName} ${d.size?`| ${d.size}`:""} | \xA5${d.salePrice}`,value:d.stockGoodsId}))}),m=await fn({message:"\u8F93\u5165\u4E0A\u67B6\u4EF7\u683C",default:s.items.find(d=>d.stockGoodsId===a)?.salePrice?.toString()??"",validate:d=>{let I=Number(d);return Number.isNaN(I)||I<=0?"\u4EF7\u683C\u5FC5\u987B\u4E3A\u6B63\u6570":$(I)??!0}});if(!await hn({message:`\u786E\u8BA4\u4E0A\u67B6\uFF1F\u4EF7\u683C \xA5${m}`,default:!0})){console.log(D.gray("\u5DF2\u53D6\u6D88"));return}let T=Number(a);await Ut({stockGoodsId:T,shopId:r,price:Number(m),platform:"xianyu",transportFee:Number(o.transportFee)||0,yhb:o.yhb??!1}),console.log(D.green("\u2713 \u4E0A\u67B6\u5DF2\u63D0\u4EA4\uFF0C\u6B63\u5728\u67E5\u8BE2\u8FDB\u5EA6..."));try{let d=await qe(T,r),I=d.status?.toLowerCase()!=="failed";console.log(I?D.green("\u2713 \u4E0A\u67B6\u6210\u529F"):D.red("\u2717 \u4E0A\u67B6\u5931\u8D25")),console.log(JSON.stringify(d,null,2))}catch(d){let I=d instanceof Error?d.message:String(d);console.log(D.yellow("\u26A0 \u5DF2\u63D0\u4EA4\uFF0C\u4F46\u56DE\u67E5\u5931\u8D25\uFF1A"+I)),console.log(D.gray("\u2192 \u8BF7\u7528 r2-cli goods listing \u786E\u8BA4\u4E0A\u67B6\u7ED3\u679C"))}})),t}import{Command as Tn}from"commander";import An from"chalk";function Qt(){let t=new Tn("listing");return t.description("\u67E5\u8BE2\u4E0A\u67B6\u5546\u54C1\u5217\u8868"),t.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").option("--stock-id <id>","\u4ED3\u5E93 ID").option("-s, --status <status>","\u72B6\u6001\u8FC7\u6EE4\uFF08init=\u5904\u7406\u4E2D, up=\u5DF2\u4E0A\u67B6, down=\u5DF2\u4E0B\u67B6, fail=\u5931\u8D25, sold=\u5DF2\u552E\u51FA\uFF09").option("--page <n>","\u9875\u7801","1").option("--size <n>","\u6BCF\u9875\u6570\u91CF\uFF08\u6700\u5927 50\uFF09","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let r=await It({id:o.id,stockGoodsId:o.stockGoodsId?Number(o.stockGoodsId):void 0,shopId:o.shopId,stockId:o.stockId,status:o.status,page:Number(o.page)||1,size:Math.min(Number(o.size)||20,50)})??{items:[],total:0};if(o.json){let s=r.items?.length?r:{...r,hint:"\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"};w(s);return}if(!r.items?.length){console.log(An.yellow("\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"));return}let{renderComponent:n}=await Promise.resolve().then(()=>(ht(),ft)),{ListingTable:i}=await Promise.resolve().then(()=>(Je(),Be));n(i,{items:r.items,total:Number(r.total)})})),t}import{Command as kn}from"commander";import jn from"chalk";function Ft(){let t=new kn("down");return t.description("\u4E0B\u67B6\u95F2\u9C7C\u5546\u54C1\uFF08\u652F\u6301 --id \u6216 --stock-goods-id + --shop-id \u4E24\u79CD\u5B9A\u4F4D\u65B9\u5F0F\uFF09"),t.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{if(!o.id&&!(o.stockGoodsId&&o.shopId)){g(o,"\u8BF7\u6307\u5B9A\u4E0B\u67B6\u6761\u4EF6\uFF1A--id <id> \u6216 --stock-goods-id <id> --shop-id <id>");return}let e={};o.id&&(e.id=o.id),o.stockGoodsId&&(e.stockGoodsId=Number(o.stockGoodsId)),o.shopId&&(e.shopId=o.shopId),o.json||console.log(jn.cyan("\u6B63\u5728\u4E0B\u67B6\u5546\u54C1..."));let r=await yo(e);f(o,r,"\u4E0B\u67B6\u6210\u529F")})),t}import{Command as Nn}from"commander";import vn from"chalk";function Mt(){let t=new Nn("price");return t.description("\u4FEE\u6539\u95F2\u9C7C\u4E0A\u67B6\u5546\u54C1\u4EF7\u683C\uFF08\u5355\u4F4D\uFF1A\u5143\uFF09"),t.option("--id <id>","\u4E0A\u67B6\u8BB0\u5F55 ID").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID").option("--shop-id <id>","\u5E97\u94FA ID").requiredOption("--price <amount>","\u65B0\u4EF7\u683C\uFF08\u5355\u4F4D\uFF1A\u5143\uFF09").option("--transport-fee <amount>","\u8FD0\u8D39\uFF08\u5143\uFF0C\u9ED8\u8BA4 0 \u5305\u90AE\uFF09","0").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{if(!o.id&&!(o.stockGoodsId&&o.shopId)){g(o,"\u8BF7\u6307\u5B9A\u5546\u54C1\uFF1A--id <id> \u6216 --stock-goods-id <id> --shop-id <id>");return}let e=Number(o.price),r=$(e);if(r){g(o,r);return}let n={price:e,transportFee:Number(o.transportFee)||0};o.id&&(n.id=o.id),o.stockGoodsId&&(n.stockGoodsId=Number(o.stockGoodsId)),o.shopId&&(n.shopId=o.shopId),o.json||console.log(vn.cyan(`\u6B63\u5728\u4FEE\u6539\u4EF7\u683C\u4E3A \xA5${o.price}...`));let i=await Io(n);f(o,i,"\u4EF7\u683C\u4FEE\u6539\u6210\u529F")})),t}import{Command as Rn}from"commander";import Vo from"chalk";function zt(){let t=new Rn("edit");return t.description("\u4FEE\u6539\u5DF2\u4E0A\u67B6\u5546\u54C1\u4FE1\u606F\uFF08\u6807\u9898\u3001\u63CF\u8FF0\u3001\u54C1\u724C\u3001\u7C7B\u76EE\u3001\u56FE\u7247\u3001\u5C5E\u6027\u7B49\uFF09"),t.option("--id <id>","\u5546\u54C1\u4E0A\u67B6 ID\uFF08goodsListingId\uFF0C\u63A8\u8350\uFF09").option("--stock-goods-id <id>","\u5E93\u5B58\u5546\u54C1 ID\uFF08\u4E0E --account \u914D\u5408\uFF09").option("--account <shopId>","\u5E97\u94FA ID\uFF08\u4E0E --stock-goods-id \u914D\u5408\uFF09").option("--outer-id <id>","\u5546\u5BB6\u7F16\u7801/\u8D27\u53F7\uFF08\u901A\u8FC7 outItemNo \u5339\u914D\u5546\u54C1\uFF09").option("--title <title>","\u5546\u54C1\u6807\u9898").option("--desc <desc>","\u5546\u54C1\u63CF\u8FF0").requiredOption("--category-id <id>","\u5546\u54C1\u7C7B\u76EE ID\uFF08\u5927\u5206\u7C7B\uFF0C\u540E\u7AEF\u5FC5\u586B\uFF09").requiredOption("--channel-cat-id <id>","\u6E20\u9053\u7C7B\u76EE ID\uFF08\u5C0F\u5206\u7C7B\uFF0C\u540E\u7AEF\u5FC5\u586B\uFF09").option("--image-ids <ids>","\u56FE\u7247 ID \u5217\u8868\uFF08\u9017\u53F7\u5206\u9694\uFF09").option("--item-attrs <json>","\u5546\u54C1\u5C5E\u6027\u5217\u8868\uFF08JSON \u5B57\u7B26\u4E32\uFF09").option("--brand-name <name>","\u54C1\u724C\u540D\u79F0").option("--stuff-status <status>","\u6210\u8272\u7B49\u7EA7\uFF1A100=\u5168\u65B0 -1=\u51C6\u65B0 99=99\u65B0 95=95\u65B0 90=9\u65B0").option("--goods-no <no>","\u8D27\u53F7").option("--original-price <price>","\u539F\u4EF7\uFF08\u5355\u4F4D\uFF1A\u5143\uFF09").option("--size <size>","\u5C3A\u7801").option("--yhb","\u662F\u5426\u5F00\u542F\u9A8C\u8D27\u5B9D").option("--transport-fee <amount>","\u8FD0\u8D39\uFF08\u5143\uFF0C\u9ED8\u8BA4 0 \u5305\u90AE\uFF09","0").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{if(!o.id&&!(o.stockGoodsId&&o.account)&&!o.outerId){g(o,"\u8BF7\u6307\u5B9A\u5546\u54C1\uFF1A--id <goodsListingId> \u6216 --stock-goods-id <id> --account <shopId> \u6216 --outer-id <id>");return}if(o.outerId&&!o.id){o.json||console.log(Vo.cyan(`\u{1F50D} \u6B63\u5728\u901A\u8FC7\u5546\u5BB6\u7F16\u7801 ${o.outerId} \u67E5\u627E\u5546\u54C1...`));let s=(await It({...o.account?{shopId:o.account}:{}})).items?.find(a=>a.outItemNo===o.outerId);if(!s){g(o,`\u672A\u627E\u5230\u5546\u5BB6\u7F16\u7801\u4E3A ${o.outerId} \u7684\u5546\u54C1`);return}o.id=s.id,o.json||console.log(Vo.gray(` \u5339\u914D\u5230: ${s.goodsName} (${s.id})`))}let e={categoryId:Number(o.categoryId),channelCatId:o.channelCatId};if(o.id&&(e.goodsListingId=Number(o.id)),o.stockGoodsId&&(e.stockGoodsId=Number(o.stockGoodsId)),o.account&&(e.account=o.account),o.title){let i=Et(o.title);if(i){g(o,i);return}e.title=o.title}if(o.desc&&(e.desc=o.desc),o.imageIds&&(e.imageIdList=o.imageIds.split(",").map(i=>i.trim())),o.brandName&&(e.brandName=o.brandName),o.stuffStatus&&(e.stuffStatus=Number(o.stuffStatus)),o.goodsNo&&(e.goodsNo=o.goodsNo),o.originalPrice){let i=Number(o.originalPrice),s=$(i);if(s){g(o,s);return}e.originalPrice=i}if(o.size&&(e.size=o.size),o.yhb!==void 0&&(e.yhb=o.yhb),o.transportFee&&(e.transportFee=Number(o.transportFee)||0),o.itemAttrs)try{e.itemAttrList=JSON.parse(o.itemAttrs)}catch{g(o,"--item-attrs JSON \u89E3\u6790\u5931\u8D25");return}if(!Object.keys(e).some(i=>!["goodsListingId","stockGoodsId","account","categoryId","channelCatId"].includes(i))){g(o,"\u672A\u6307\u5B9A\u9700\u8981\u4FEE\u6539\u7684\u5B57\u6BB5");return}o.json||console.log(Vo.cyan("\u6B63\u5728\u4FEE\u6539\u5546\u54C1\u4FE1\u606F..."));let n=await wo(e);f(o,n,"\u2705 \u5546\u54C1\u4FE1\u606F\u4FEE\u6539\u6210\u529F")})),t}import{Command as Bn}from"commander";import{Command as Ln}from"commander";import Ko from"chalk";function Ge(){return new Ln("categories").description("\u83B7\u53D6\u7C7B\u76EE\u5217\u8868\uFF08\u5927\u5206\u7C7B \u2192 \u5C0F\u5206\u7C7B\uFF09").option("--sp-biz-type <n>","\u4E1A\u52A1\u5206\u7C7B\uFF0C16=\u5962\u54C1","16").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=await xo(Number(t.spBizType));if(t.json){w(o);return}let e=new Map;for(let r of o){let n=String(r.catId);e.has(n)||e.set(n,{catName:r.catName,children:[]}),e.get(n).children.push({channel:r.channel,channelCatId:r.channelCatId})}for(let[r,n]of e){console.log(Ko.bold(`${n.catName} (catId: ${Ko.green(r)})`));for(let i of n.children)console.log(` ${i.channel} (channelCatId: ${Ko.green(i.channelCatId)})`)}}))}import{Command as On}from"commander";import _e from"chalk";function Qe(){return new On("props").description("\u83B7\u53D6\u6307\u5B9A\u7C7B\u76EE\u4E0B\u7684\u5C5E\u6027\u5217\u8868\uFF08\u542B\u53EF\u9009\u503C\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=await Po(t.channelCatId);if(t.json){w(o);return}for(let e of o)if(console.log(_e.bold(`
|
|
41
|
+
${e.propName} (propId: ${e.propId})`)),e.propsValues?.length)for(let r of e.propsValues)console.log(` ${r.valueName} (valueId: ${r.valueId})`);else console.log(_e.gray(" \uFF08\u4F7F\u7528 brands \u5B50\u547D\u4EE4\u641C\u7D22\uFF09"))}))}import{Command as Un}from"commander";import $n from"chalk";function Fe(){return new Un("brands").description("\u641C\u7D22\u54C1\u724C\uFF08\u6309\u5173\u952E\u5B57\u8FC7\u6EE4\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID").requiredOption("--prop-id <id>","\u5C5E\u6027 ID\uFF08\u54C1\u724C\u5C5E\u6027\u7684 propId\uFF09").requiredOption("--key <keyword>","\u641C\u7D22\u5173\u952E\u5B57").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=await To(t.channelCatId,t.propId,t.key);if(t.json){w(o);return}if(!o.length){console.log($n.yellow("\u672A\u627E\u5230\u5339\u914D\u7684\u54C1\u724C"));return}for(let e of o)console.log(` ${e.valueName} (valueId: ${e.valueId})`)}))}import{Command as Dn}from"commander";import Yo from"chalk";function Me(){return new Dn("upload-images").description("\u6279\u91CF\u4E0A\u4F20\u56FE\u7247\uFF08\u6302\u552E\u524D\u5FC5\u987B\u5148\u4E0A\u4F20\u56FE\u7247\uFF09").requiredOption("--shop-id <id>","\u5E97\u94FA ID").option("--files <paths>","\u672C\u5730\u56FE\u7247\u6587\u4EF6\u8DEF\u5F84\uFF0C\u9017\u53F7\u5206\u9694").option("--urls <urls>","CDN \u56FE\u7247 URL\uFF0C\u9017\u53F7\u5206\u9694").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=[];if(t.files)for(let n of t.files.split(",").map(i=>i.trim()).filter(Boolean))o.push({type:"file",path:n});if(t.urls)for(let n of t.urls.split(",").map(i=>i.trim()).filter(Boolean))o.push({type:"url",url:n});if(o.length===0){g(t,"\u8BF7\u63D0\u4F9B\u81F3\u5C11\u4E00\u5F20\u56FE\u7247\uFF1A--files <\u672C\u5730\u8DEF\u5F84> \u6216 --urls <CDN URL>");return}t.json||console.log(Yo.cyan(`\u6B63\u5728\u4E0A\u4F20 ${o.length} \u5F20\u56FE\u7247...`));let{images:e,failed:r}=await Co(t.shopId,o);if(t.json){let n={success:!0,images:e};r.length&&(n.warning=`${r.length} \u5F20\u56FE\u7247\u4E0A\u4F20\u5931\u8D25`,n.failed=r),console.log(JSON.stringify(C(n),null,2))}else{if(e.length){console.log(Yo.green(`\u4E0A\u4F20\u6210\u529F\uFF0C\u5171 ${e.length} \u5F20`));for(let n of e)console.log(` \u56FE\u7247ID: ${n.value}`)}if(r.length){console.log(Yo.yellow(`
|
|
42
|
+
${r.length} \u5F20\u4E0A\u4F20\u5931\u8D25:`));for(let n of r)console.log(` ${n.file}: ${n.error}`)}}}))}import{Command as En}from"commander";import st from"chalk";var qn={100:"\u5168\u65B0",[-1]:"\u51C6\u65B0",99:"99\u65B0",95:"95\u65B0",90:"9\u65B0"};function ze(){return new En("submit").description("\u63D0\u4EA4\u6302\u552E\u4E0A\u67B6").requiredOption("--shop-id <id>","\u5E97\u94FA ID\uFF08\u5373 account\uFF09").requiredOption("--title <title>","\u5546\u54C1\u6807\u9898").requiredOption("--price <amount>","\u552E\u4EF7").requiredOption("--category-id <id>","\u5927\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").requiredOption("--channel-cat-id <id>","\u5C0F\u5206\u7C7B ID\uFF08\u4ECE categories \u83B7\u53D6\uFF09").requiredOption("--image-ids <ids>","\u56FE\u7247 ID \u5217\u8868\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u5148\u901A\u8FC7 upload-images \u83B7\u53D6\uFF09").requiredOption("--stuff-status <n>","\u6210\u8272\uFF1A100 \u5168\u65B0 / -1 \u51C6\u65B0 / 99 99\u65B0 / 95 95\u65B0 / 90 9\u65B0").option("--item-attrs <json>",'\u5546\u54C1\u5C5E\u6027\u5217\u8868 JSON\uFF0C\u683C\u5F0F: [{"valueName":"x","valueId":"y","propId":"z"}]').option("--brand-name <name>","\u54C1\u724C\u540D\u79F0").requiredOption("--desc <desc>","\u5546\u54C1\u63CF\u8FF0").option("--size <size>","\u5C3A\u7801").option("--goods-no <no>","\u8D27\u53F7").option("--original-price <amount>","\u539F\u4EF7").option("--trade-type <n>","\u4EA4\u6613\u65B9\u5F0F\uFF1A0 \u4EC5\u5728\u7EBF / 1 \u4EC5\u7EBF\u4E0B / 2 \u7EBF\u4E0A\u6216\u7EBF\u4E0B","0").option("--transport-fee <amount>","\u8FD0\u8D39\uFF08\u9ED8\u8BA4 0 \u5305\u90AE\uFF09","0").option("--yhb","\u662F\u5426\u5F00\u542F\u9A8C\u8D27\u5B9D").requiredOption("--out-item-no <no>","\u5546\u5BB6\u7F16\u7801\uFF08\u540C\u5E97\u94FA\u552F\u4E00\uFF0C\u7528\u6237\u81EA\u5B9A\u4E49\uFF09").option("--division-id <id>","\u884C\u653F\u533A\u5212 ID\uFF08\u5E02\u7EA7 ID\uFF0C\u9ED8\u8BA4\u676D\u5DDE 330100\uFF09","330100").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=Et(t.title);if(o){g(t,o);return}let e=Number(t.price),r=$(e);if(r){g(t,r);return}if(t.originalPrice){let m=Number(t.originalPrice),p=$(m);if(p){g(t,p);return}}let n=t.imageIds.split(",").map(m=>m.trim()),i;if(t.itemAttrs)try{i=JSON.parse(t.itemAttrs)}catch{g(t,"--item-attrs JSON \u89E3\u6790\u5931\u8D25");return}let s={account:t.shopId,title:t.title,reservePrice:Number(t.price),categoryId:Number(t.categoryId),channelCatId:t.channelCatId,imageIdList:n,stuffStatus:Number(t.stuffStatus),itemBizType:2,spBizType:"16",tradeType:Number(t.tradeType)||0,transportFee:Number(t.transportFee)||0,yhb:t.yhb??!1,...t.brandName?{brandName:t.brandName}:{},desc:t.desc,...t.size?{size:t.size}:{},...t.goodsNo?{goodsNo:t.goodsNo}:{},...t.originalPrice?{originalPrice:Number(t.originalPrice)}:{},...i?.length?{itemAttrList:i}:{},outItemNo:t.outItemNo,divisionId:Number(t.divisionId)||330100,apiAfterSalesDo:{supportFd10msPolicy:!1,supportFd24hsPolicy:!1,supportNfrPolicy:!1,supportSdrPolicy:!1,supportVnrPolicy:!1,supportGpaPolicy:!1,supportFd48hsPolicy:!1}};t.json||(console.log(st.cyan("\u6B63\u5728\u63D0\u4EA4\u6302\u552E...")),console.log(st.gray(` \u6807\u9898: ${s.title}`)),console.log(st.gray(` \u552E\u4EF7: \xA5${s.reservePrice}`)),console.log(st.gray(` \u6210\u8272: ${qn[s.stuffStatus]??s.stuffStatus}`)),console.log(st.gray(` \u56FE\u7247: ${n.length} \u5F20`)),i?.length&&console.log(st.gray(` \u5C5E\u6027: ${i.length} \u9879`)));let a=await bo(s);f(t,a,"\u6302\u552E\u63D0\u4EA4\u6210\u529F")}))}function Xt(){let t=new Bn("hang-up");return t.description("\u6302\u552E\u4E0A\u67B6\uFF08\u5B8C\u6574\u5546\u54C1\u4FE1\u606F\u6A21\u5F0F\uFF09"),t.addCommand(Ge()),t.addCommand(Qe()),t.addCommand(Fe()),t.addCommand(Me()),t.addCommand(ze()),t}function Xe(){let t=new Jn("xianyu");return t.description("\u95F2\u9C7C\uFF08\u4E0A\u67B6 / \u4E0B\u67B6 / \u6539\u4EF7 / \u7F16\u8F91 / \u6302\u552E\uFF09"),t.addCommand(qt()),t.addCommand(Qt()),t.addCommand(Ft()),t.addCommand(Mt()),t.addCommand(zt()),t.addCommand(Xt()),t}import{Command as Yn}from"commander";import{Command as Gn}from"commander";import Wt from"chalk";function We(){let t=new Gn("listing");return t.description("\u67E5\u8BE2\u6DD8\u5B9D\u5DF2\u62A5\u540D\u5546\u54C1\u5217\u8868"),t.requiredOption("--shop-id <id>","\u5E97\u94FA ID").option("--goods-no <no>","\u5546\u54C1\u7F16\u7801\u8FC7\u6EE4").option("--item-id <id>","\u6DD8\u5B9D\u5546\u54C1 ID \u8FC7\u6EE4").option("--goods-name <name>","\u5546\u54C1\u540D\u79F0\u8FC7\u6EE4").option("--status <n>","\u5546\u54C1\u72B6\u6001\u8FC7\u6EE4").option("--code <code>","\u5546\u5BB6\u7F16\u7801\u8FC7\u6EE4").option("--page <n>","\u9875\u7801","1").option("--size <n>","\u6BCF\u9875\u6570\u91CF","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let e=await No({shopId:o.shopId,...o.goodsNo?{goodsNo:o.goodsNo}:{},...o.itemId?{itemId:Number(o.itemId)}:{},...o.goodsName?{goodsName:o.goodsName}:{},...o.status?{status:Number(o.status)}:{},...o.code?{code:o.code}:{},page:Number(o.page)||1,size:Number(o.size)||20});if(o.json){let n=e??{items:[],total:"0"},i=n.items?.length?n:{...n,hint:"\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"};w(i);return}let r=e?.items??[];if(!r.length){console.log(Wt.yellow("\u6682\u65E0\u4E0A\u67B6\u8BB0\u5F55"));return}for(let n of r)console.log(` ${Wt.bold(n.itemNumber??n.itemId)} ${Wt.gray(`(jbpSpuId: ${n.jbpSpuId})`)}
|
|
43
|
+
\u72B6\u6001: ${n.itemStatus} | SKU: ${n.applySkuCount}/${n.totalSkuCount} | \u5DF2\u552E: ${n.sales}`);console.log(Wt.gray(`
|
|
44
|
+
\u5171 ${e?.total??r.length} \u6761`))})),t}import{Command as _n}from"commander";import Qn from"chalk";function He(){let t=new _n("down");return t.description("\u4E0B\u67B6\u963F\u91CC\u8D44\u4EA7\u5546\u54C1"),t.requiredOption("--jbp-spu-id <id>","SPU ID").option("--jbp-sku-id <id>","SKU ID\uFF08\u4E0D\u4F20\u5219\u4E0B\u67B6\u6574\u4E2A SPU\uFF09").requiredOption("--shop-id <id>","\u5E97\u94FA ID").option("--sub-item-id <id>","\u5B50\u5546\u54C1 ID\uFF08\u5373 itemId\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let e=Number(o.jbpSpuId);if(o.jbpSkuId&&!o.subItemId){g(o,"\u4E0B\u67B6\u5355\u4E2A SKU \u9700\u8981\u540C\u65F6\u4F20 --sub-item-id\uFF08\u4ECE spu-detail \u7684 haveApplySkuList \u83B7\u53D6\uFF09");return}o.json||console.log(Qn.cyan("\u6B63\u5728\u4E0B\u67B6\u963F\u91CC\u8D44\u4EA7\u5546\u54C1..."));let r={shopId:o.shopId,jbpSpuId:e,...o.subItemId?{subItemId:Number(o.subItemId)}:{}},n;o.jbpSkuId?n=await Oo({...r,jbpSkuId:Number(o.jbpSkuId)}):n=await Lo(r),f(o,n,"\u4E0B\u67B6\u6210\u529F")})),t}import{Command as Fn}from"commander";import Mn from"chalk";function Ve(){let t=new Fn("price");return t.description("\u4FEE\u6539\u963F\u91CC\u8D44\u4EA7 SKU \u4EF7\u683C"),t.requiredOption("--jbp-spu-id <id>","SPU ID").requiredOption("--jbp-sku-id <id>","SKU ID").requiredOption("--shop-id <id>","\u5E97\u94FA ID").requiredOption("--price <amount>","\u65B0\u4EF7\u683C\uFF08\u5143\uFF09").option("--sub-item-id <id>","\u5B50\u5546\u54C1 ID\uFF08\u5373 itemId\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{o.json||console.log(Mn.cyan(`\u6B63\u5728\u4FEE\u6539\u4EF7\u683C\u4E3A \xA5${o.price}...`));let e=await Ro({shopId:o.shopId,jbpSpuId:Number(o.jbpSpuId),jbpSkuId:Number(o.jbpSkuId),price:Number(o.price),...o.subItemId?{subItemId:Number(o.subItemId)}:{}});f(o,e,"\u4EF7\u683C\u4FEE\u6539\u6210\u529F")})),t}import{Command as zn}from"commander";import Xn from"chalk";function Ke(){let t=new zn("stock");return t.description("\u4FEE\u6539\u963F\u91CC\u8D44\u4EA7 SKU \u5E93\u5B58"),t.requiredOption("--jbp-spu-id <id>","SPU ID").requiredOption("--jbp-sku-id <id>","SKU ID").requiredOption("--shop-id <id>","\u5E97\u94FA ID").requiredOption("--quantity <n>","\u65B0\u5E93\u5B58\u6570\u91CF").option("--sub-item-id <id>","\u5B50\u5546\u54C1 ID\uFF08\u5373 itemId\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{o.json||console.log(Xn.cyan(`\u6B63\u5728\u4FEE\u6539\u5E93\u5B58\u4E3A ${o.quantity}...`));let e=await vo({shopId:o.shopId,jbpSpuId:Number(o.jbpSpuId),jbpSkuId:Number(o.jbpSkuId),quantity:Number(o.quantity),...o.subItemId?{subItemId:Number(o.subItemId)}:{}});f(o,e,"\u5E93\u5B58\u4FEE\u6539\u6210\u529F")})),t}import{Command as Kn}from"commander";import{Command as Wn}from"commander";import Ct from"chalk";function Ye(){return new Wn("spu-query").description("\u67E5\u8BE2\u963F\u91CC\u8D44\u4EA7\u53EF\u7533\u8BF7\u7684 SPU \u5546\u54C1\u5217\u8868").requiredOption("--shop-id <id>","\u6DD8\u5B9D\u5E97\u94FA ID").requiredOption("--goods-no <no>","\u5546\u54C1\u7F16\u7801\uFF08\u4E0D\u4F20\u65E0\u6CD5\u67E5\u8BE2\u5230\u5546\u54C1\uFF09").option("--spu-id <id>","\u963F\u91CC\u8D44\u4EA7 SPU ID\uFF08\u9009\u586B\uFF09").option("--page <n>","\u9875\u7801\uFF08\u4ECE 1 \u5F00\u59CB\uFF09","1").option("--size <n>","\u6BCF\u9875\u6761\u6570","20").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{t.json||console.log(Ct.cyan("\u6B63\u5728\u67E5\u8BE2\u963F\u91CC\u8D44\u4EA7 SPU \u5217\u8868..."));let o=await Ao({shopId:t.shopId,goodsNo:t.goodsNo,...t.spuId?{spuId:Number(t.spuId)}:{},page:Number(t.page)||1,size:Number(t.size)||20});if(t.json){w(o);return}let e=o?.items??[];if(!e.length){console.log(Ct.yellow("\u6682\u65E0\u53EF\u7533\u8BF7\u7684 SPU"));return}for(let r of e){let n=r.minPrice?`\xA5${(r.minPrice/100).toFixed(2)}`:"-";console.log(` ${Ct.bold(r.spuTitle)} ${Ct.gray(`(${r.jbpSpuId})`)}
|
|
45
|
+
\u54C1\u724C: ${r.brandName} | \u7C7B\u76EE: ${r.categoryName} | \u6700\u4F4E\u4EF7: ${n}
|
|
46
|
+
\u7F16\u7801: ${r.itemNumber}`)}console.log(Ct.gray(`
|
|
47
|
+
\u5171 ${o?.total??e.length} \u6761`))}))}import{Command as Hn}from"commander";import H from"chalk";function Ze(){return new Hn("spu-detail").description("\u67E5\u8BE2\u963F\u91CC\u8D44\u4EA7 SPU \u8BE6\u60C5\uFF08\u542B\u53EF\u7533\u8BF7 SKU \u5217\u8868\uFF09").requiredOption("--shop-id <id>","\u6DD8\u5B9D\u5E97\u94FA ID").requiredOption("--jbp-spu-id <id>","\u963F\u91CC\u8D44\u4EA7 SPU ID").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=Number(t.jbpSpuId);t.json||console.log(H.cyan("\u6B63\u5728\u67E5\u8BE2 SPU \u8BE6\u60C5..."));let e=await ko(t.shopId,o);if(t.json){w(e);return}if(console.log(H.bold(`SPU: ${e.jbpSpuId} (itemId: ${e.itemId})`)),console.log(H.gray(` spuVersion: ${e.spuVersion} | needIdentify: ${e.needIdentify} | identifyOrgId: ${e.identifyOrgId}`)),e.canApplySkuList?.length){console.log(H.green(`
|
|
48
|
+
\u53EF\u7533\u8BF7 SKU (${e.canApplySkuList.length}):`));for(let r of e.canApplySkuList){let n=r.minPrice?(r.minPrice/100).toFixed(2):"-",i=r.maxPrice?(r.maxPrice/100).toFixed(2):"-",s=r.pvs?.map(m=>`${m.name}:${m.value}`).join(", ")??"",a=r.canApply?H.green("\u53EF\u7533\u8BF7"):H.red("\u4E0D\u53EF\u7533\u8BF7");console.log(` SKU ${r.jbpSkuId} (${a}) | \u4EF7\u683C\u8303\u56F4: \xA5${n} ~ \xA5${i} | ${s}`)}}if(e.haveApplySkuList?.length){console.log(H.yellow(`
|
|
49
|
+
\u5DF2\u7533\u8BF7 SKU (${e.haveApplySkuList.length}):`));for(let r of e.haveApplySkuList){let n=r.price?(r.price/100).toFixed(2):"-";console.log(` SKU ${r.jbpSkuId} | \u4EF7\u683C: \xA5${n} | \u5E93\u5B58: ${r.quantity} | \u5DF2\u552E: ${r.sales} | \u7F16\u7801: ${r.commodityCode}`)}}}))}import{Command as Vn}from"commander";import tr from"chalk";function or(){return new Vn("apply").description("\u7533\u8BF7\u4E0A\u67B6\u963F\u91CC\u8D44\u4EA7 SKU").requiredOption("--shop-id <id>","\u6DD8\u5B9D\u5E97\u94FA ID").requiredOption("--jbp-spu-id <id>","\u963F\u91CC\u8D44\u4EA7 SPU ID").requiredOption("--apply-skus <json>","SKU \u5217\u8868 JSON: [{jbpSkuId, price(\u5143), quantity, ...}]").option("--sub-item-id <id>","\u5B50\u5546\u54C1 ID").option("--city-code <code>","\u57CE\u5E02\u7F16\u7801").option("--city-name <name>","\u57CE\u5E02\u540D\u79F0").option("--delivery-id <id>","\u53D1\u8D27\u5730 ID").option("--identify-org-id <id>","\u9274\u5B9A\u673A\u6784 ID").option("--pro-code <code>","\u7701\u4EFD\u7F16\u7801").option("--pro-name <name>","\u7701\u4EFD\u540D\u79F0").option("--spu-version <n>","SPU \u7248\u672C\u53F7").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=Number(t.jbpSpuId),e;try{let i=JSON.parse(t.applySkus);if(!Array.isArray(i)||i.length===0){g(t,"--apply-skus \u5FC5\u987B\u4E3A\u975E\u7A7A\u6570\u7EC4");return}e=i.map(s=>({jbpSkuId:Number(s.jbpSkuId),price:Number(s.price),quantity:Number(s.quantity),...s.commodityCode?{commodityCode:String(s.commodityCode)}:{},...s.skuVersion?{skuVersion:Number(s.skuVersion)}:{}}))}catch{g(t,"--apply-skus JSON \u89E3\u6790\u5931\u8D25");return}let r={shopId:t.shopId,jbpSpuId:o,applySkuList:e,...t.subItemId?{subItemId:Number(t.subItemId)}:{},...t.cityCode?{cityCode:Number(t.cityCode)}:{},...t.cityName?{cityName:t.cityName}:{},...t.deliveryId?{deliveryId:t.deliveryId}:{},...t.identifyOrgId?{identifyOrgId:t.identifyOrgId}:{},...t.proCode?{proCode:Number(t.proCode)}:{},...t.proName?{proName:t.proName}:{},...t.spuVersion?{spuVersion:Number(t.spuVersion)}:{}};if(!t.json){console.log(tr.cyan("\u6B63\u5728\u7533\u8BF7\u4E0A\u67B6..."));for(let i of e)console.log(tr.gray(` SKU ${i.jbpSkuId}: \xA5${i.price} x ${i.quantity}`))}let n=await jo(r);f(t,n,"\u7533\u8BF7\u4E0A\u67B6\u6210\u529F")}))}function er(){let t=new Kn("alzc");return t.description("\u963F\u91CC\u8D44\u4EA7\u5546\u54C1\u7BA1\u7406"),t.addCommand(Ye()),t.addCommand(Ze()),t.addCommand(or()),t}function rr(){let t=new Yn("taobao");return t.description("\u6DD8\u5B9D / \u963F\u91CC\u8D44\u4EA7\uFF08\u4E0A\u67B6 / \u4E0B\u67B6 / \u6539\u4EF7 / SPU \u67E5\u8BE2\uFF09"),t.addCommand(We()),t.addCommand(He()),t.addCommand(Ve()),t.addCommand(Ke()),t.addCommand(er()),t}function at(t,o,e){let r=e();return r.name(t),r.description(`[\u5DF2\u5E9F\u5F03] \u8BF7\u4F7F\u7528 ${o}\u3002${r.description()}`),r.hook("preAction",(n,i)=>{i.opts?.()?.json||console.log(ti.yellow(`\u26A0 "goods ${t}" \u5DF2\u8FC1\u79FB\u81F3 "${o}"\uFF0C\u8BF7\u5C3D\u5FEB\u66F4\u65B0
|
|
50
|
+
`))}),r}function nr(){let t=new Zn("goods");return t.description("\u5546\u54C1\u7BA1\u7406\uFF08\u5E97\u94FA / \u4ED3\u5E93 / \u9009\u54C1 / \u4E0A\u67B6 / \u4E0B\u67B6 / \u6539\u4EF7 / \u6302\u552E\uFF09"),t.addHelpText("after",`
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
$ r2-cli goods shops --json \u67E5\u770B\u5E97\u94FA\uFF08Agent \u6A21\u5F0F\uFF09
|
|
54
|
+
$ r2-cli goods list --stock-id <id> \u6309\u4ED3\u5E93\u67E5\u770B\u9009\u54C1\u5546\u54C1
|
|
55
|
+
$ r2-cli goods xianyu up \u95F2\u9C7C\u4EA4\u4E92\u5F0F\u4E0A\u67B6
|
|
56
|
+
$ r2-cli goods taobao alzc spu-query \u963F\u91CC\u8D44\u4EA7 SPU \u67E5\u8BE2
|
|
57
|
+
`),t.addCommand(Re()),t.addCommand($e()),t.addCommand(De()),t.addCommand(Xe()),t.addCommand(rr()),t.addCommand(at("up","goods xianyu up",qt)),t.addCommand(at("listing","goods xianyu listing",Qt)),t.addCommand(at("down","goods xianyu down",Ft)),t.addCommand(at("price","goods xianyu price",Mt)),t.addCommand(at("edit","goods xianyu edit",zt)),t.addCommand(at("hang-up","goods xianyu hang-up",Xt)),t}import{Command as oi}from"commander";import{resolve as ei,dirname as ri}from"node:path";import{fileURLToPath as ni}from"node:url";import{execSync as ir}from"node:child_process";import Zo from"chalk";var ii=ri(ni(import.meta.url)),si=ei(ii,"../../scripts/install.js");function sr(){return new oi("install").description("\u4E00\u952E\u5B89\u88C5\u5E76\u914D\u7F6E R2-CLI\uFF08\u63A8\u8350\u901A\u8FC7 npx \u4F7F\u7528\uFF09").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(async t=>{let o=!t.json&&!!process.stdin.isTTY,e=t.json?["--json","--from-cli"]:["--from-cli"];try{ir(`node "${si}" ${e.join(" ")}`,{stdio:"inherit"})}catch{process.exit(1)}if(o){console.log(Zo.cyan(`
|
|
58
|
+
\u4E0B\u4E00\u6B65\uFF1A\u626B\u7801\u767B\u5F55`)),console.log(Zo.gray(` \u5C06\u81EA\u52A8\u6253\u5F00\u6D4F\u89C8\u5668\uFF0C\u4F7F\u7528\u7B2C\u4E8C\u56DE\u5408 APP / \u5FAE\u4FE1 / \u652F\u4ED8\u5B9D\u626B\u7801
|
|
59
|
+
`));try{ir("r2-cli auth login",{stdio:"inherit"})}catch{console.log(Zo.yellow(`
|
|
60
|
+
\u767B\u5F55\u8DF3\u8FC7\uFF0C\u540E\u7EED\u53EF\u8FD0\u884C r2-cli auth login \u5B8C\u6210`))}}})}import{Command as ai}from"commander";import xt from"chalk";import{promises as ci}from"node:fs";import di from"node:path";import mi from"node:os";import{spawn as li}from"node:child_process";var ar="@round2ai/r2-cli";function ui(){return new Promise(t=>{let o=li("npm",["uninstall","-g",ar],{stdio:"inherit",shell:!0});o.on("exit",e=>t(e??1)),o.on("error",()=>t(1))})}function cr(){let t=new ai("uninstall");return t.description("\u5378\u8F7D R2-CLI \u5E76\u6E05\u9664\u6240\u6709\u914D\u7F6E").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09"),t.action(c(async o=>{let e=di.join(mi.homedir(),".r2-cli"),r=!0;try{await ci.rm(e,{recursive:!0,force:!0})}catch{r=!1}let n=await ui(),i=n===0;if(o.json){f(o,{configCleared:r,npmUninstalled:i,exitCode:n});return}console.log(r?xt.green("\u2705 \u914D\u7F6E\u6587\u4EF6\u5DF2\u6E05\u9664"):xt.yellow("\u26A0\uFE0F \u914D\u7F6E\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u65E0\u6CD5\u5220\u9664\uFF08\u53EF\u5FFD\u7565\uFF09")),i?console.log(xt.green(`\u2705 ${ar} \u5DF2\u5378\u8F7D`)):(console.log(xt.yellow(`\u26A0\uFE0F npm \u5378\u8F7D\u5931\u8D25 (exit code: ${n})`)),console.log(xt.gray(" \u5982\u901A\u8FC7 yarn/pnpm \u5B89\u88C5\uFF0C\u8BF7\u624B\u52A8\u5378\u8F7D")))})),t}import{Command as Ii}from"commander";import dr from"chalk";import{spawn as wi,execSync as bi}from"node:child_process";import{readFileSync as pi}from"node:fs";import{dirname as gi,join as fi}from"node:path";import{fileURLToPath as hi}from"node:url";var yi=gi(hi(import.meta.url));function Ht(){for(let t of["../package.json","../../package.json"])try{return JSON.parse(pi(fi(yi,t),"utf-8")).version}catch{}return"0.0.0"}var mr="@round2ai/r2-cli";function Si(t,o){return new Promise(e=>{let r=wi(t,o,{stdio:"inherit"});r.on("close",n=>e(n??1)),r.on("error",()=>e(1))})}function lr(){return new Ii("update").description("\u4E00\u952E\u66F4\u65B0 CLI \u548C\u6280\u80FD").option("--json","\u8F93\u51FA JSON\uFF08\u4F9B AI Agent \u4F7F\u7528\uFF09").action(c(async t=>{let o=Ht();if(t.json||(console.log(dr.cyan(`\u5F53\u524D\u7248\u672C: ${o}`)),console.log(dr.cyan("\u6B63\u5728\u66F4\u65B0 CLI..."))),await Si("npm",["install","-g",`${mr}@latest`])!==0)throw new Error(`\u66F4\u65B0\u5931\u8D25\uFF0C\u8BF7\u624B\u52A8\u8FD0\u884C: npm install -g ${mr}@latest`);let r=o;try{r=bi("r2-cli --version",{encoding:"utf-8"}).trim()||o}catch{}f(t,{oldVersion:o,newVersion:r},`
|
|
61
|
+
\u2713 \u66F4\u65B0\u5B8C\u6210: ${o} \u2192 ${r}
|
|
62
|
+
\u2713 \u6280\u80FD\u5DF2\u540C\u6B65\u66F4\u65B0`)}))}function ur(t){let o=t.command("auth").description("\u8BA4\u8BC1\u7BA1\u7406\uFF08\u767B\u5F55 / \u767B\u51FA / \u72B6\u6001 / \u5E73\u53F0\u6388\u6743\uFF09");o.addCommand(po()),o.addCommand(go()),o.addCommand(fo()),o.addCommand(ho()),t.addCommand(nr()),t.addCommand(sr()),t.addCommand(cr()),t.addCommand(lr())}async function xi(){let{default:t}=await import("figlet");console.log(ct.cyan.bold(t.textSync("R2-CLI",{font:"Standard",horizontalLayout:"full"}))),console.log(ct.gray(` \u5411 AI \u5F00\u653E\u4E8C\u624B\u6F6E\u5962\u4EA4\u6613\u5168\u94FE\u8DEF\u80FD\u529B
|
|
63
|
+
`))}function Pi(){let t=new Ci;t.name("r2-cli").description("R2-CLI \u2014 \u4E8C\u624B\u6F6E\u5962\u4EA4\u6613\u547D\u4EE4\u884C\u5DE5\u5177").usage("[command] [options]"),t.addHelpText("after",`
|
|
64
|
+
|
|
65
|
+
Examples:
|
|
66
|
+
$ r2-cli auth login \u626B\u7801\u767B\u5F55
|
|
67
|
+
$ r2-cli goods shops \u67E5\u770B\u5E97\u94FA
|
|
68
|
+
$ r2-cli goods xianyu up \u4EA4\u4E92\u5F0F\u4E0A\u67B6\uFF08\u95F2\u9C7C\uFF09
|
|
69
|
+
$ r2-cli goods list --json Agent \u6A21\u5F0F\u67E5\u8BE2\u9009\u54C1\u5546\u54C1
|
|
70
|
+
|
|
71
|
+
Quick Start:
|
|
72
|
+
npx @round2ai/r2-cli@latest install \u4E00\u952E\u5B89\u88C5
|
|
73
|
+
r2-cli auth login \u626B\u7801\u767B\u5F55
|
|
74
|
+
r2-cli goods xianyu up \u5F00\u59CB\u4E0A\u67B6
|
|
75
|
+
|
|
76
|
+
Docs: https://github.com/Round2AI/r2-cli
|
|
77
|
+
`);let o=Ht();o==="0.0.0"&&console.error(ct.yellow("Warning: unable to read version from package.json")),t.version(`r2-cli version ${o}`,"-v, --version");let e=we(o);return t.configureOutput({writeErr:r=>{console.error(ct.red(r.replace("error:","").trim()))}}),t.action(async()=>{await xi(),t.help()}),ur(t),{program:t,updateCheckPromise:e}}function pr(){console.log(ct.gray(`
|
|
78
|
+
\u64CD\u4F5C\u5DF2\u53D6\u6D88`)),process.exit(130)}process.on("SIGINT",pr);process.on("SIGTERM",pr);var{program:Ti,updateCheckPromise:Ai}=Pi();Ti.parse(process.argv);Ai.catch(t=>{console.error(ct.gray(`[update-check] ${t instanceof Error?t.message:String(t)}`))});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@round2ai/r2-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.17",
|
|
4
4
|
"description": "R2-CLI,向 AI 开放二手潮奢交易全链路能力",
|
|
5
5
|
"main": "dist/r2-cli.js",
|
|
6
6
|
"type": "module",
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
"r2-cli": "dist/r2-cli.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"postinstall": "node scripts/install
|
|
12
|
-
"build": "cross-env NODE_ENV=
|
|
13
|
-
"build:
|
|
11
|
+
"postinstall": "node scripts/install.js",
|
|
12
|
+
"build": "cross-env NODE_ENV=production node scripts/build.js",
|
|
13
|
+
"build:dev": "cross-env NODE_ENV=development node scripts/build.js",
|
|
14
14
|
"dev": "node scripts/dev.js",
|
|
15
15
|
"test": "vitest run",
|
|
16
|
-
"test:watch": "vitest"
|
|
16
|
+
"test:watch": "vitest",
|
|
17
|
+
"typecheck": "tsc --noEmit"
|
|
17
18
|
},
|
|
18
19
|
"keywords": [
|
|
19
20
|
"round2ai",
|
|
@@ -27,13 +28,16 @@
|
|
|
27
28
|
],
|
|
28
29
|
"files": [
|
|
29
30
|
"dist",
|
|
30
|
-
"scripts/install
|
|
31
|
+
"scripts/install.js",
|
|
31
32
|
"skills",
|
|
32
33
|
"package.json",
|
|
33
34
|
"README.md"
|
|
34
35
|
],
|
|
35
36
|
"author": "Round2AI - PURESNAKE Team",
|
|
36
37
|
"license": "MIT",
|
|
38
|
+
"publishConfig": {
|
|
39
|
+
"access": "public"
|
|
40
|
+
},
|
|
37
41
|
"engines": {
|
|
38
42
|
"node": ">=18.0.0"
|
|
39
43
|
},
|