stock-sdk 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{a as j,b as T,c as D,d as $,e as q,f as K,g as L,h as U,i as x,k as F,l as C,m as g}from"./chunk-EDUJJOAJ.js";import{t as I}from"./chunk-3VUFYFFD.js";import"./chunk-6ZSZEHZW.js";import{d as N,e as O,f as b,h as M}from"./chunk-ZZ2IBUMV.js";import"./chunk-DU7MCVLJ.js";import{f as R,k as w}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var p=class extends Error{constructor(t,o){super(t),this.name="CliUsageError",this.hint=o}},On={INVALID_ARGUMENT:2,INVALID_SYMBOL:2,NOT_FOUND:2,NETWORK_ERROR:3,TIMEOUT:3,ABORTED:3,UPSTREAM_ERROR:4,UPSTREAM_EMPTY:4,PARSE_ERROR:4,HTTP_ERROR:4,RATE_LIMITED:5,CIRCUIT_OPEN:5};function V(n){if(n instanceof p)return 2;let t=w(n);return On[t]??1}function G(n,t){let o=n instanceof Error?n.message:String(n);if(n instanceof p){if(t==="json")return{text:JSON.stringify({error:{code:"USAGE",message:o}})};let r=n.hint?`
2
+ import{a as j,b as T,c as D,d as $,e as q,f as K,g as L,h as U,i as x,k as F,l as C,m as g}from"./chunk-IWHFCLJM.js";import{t as I}from"./chunk-3ASJZ3YA.js";import"./chunk-QGYIBFXP.js";import{d as N,e as O,f as b,h as M}from"./chunk-ZZ2IBUMV.js";import"./chunk-DU7MCVLJ.js";import{f as R,k as w}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var p=class extends Error{constructor(t,o){super(t),this.name="CliUsageError",this.hint=o}},On={INVALID_ARGUMENT:2,INVALID_SYMBOL:2,NOT_FOUND:2,NETWORK_ERROR:3,TIMEOUT:3,ABORTED:3,UPSTREAM_ERROR:4,UPSTREAM_EMPTY:4,PARSE_ERROR:4,HTTP_ERROR:4,RATE_LIMITED:5,CIRCUIT_OPEN:5};function V(n){if(n instanceof p)return 2;let t=w(n);return On[t]??1}function G(n,t){let o=n instanceof Error?n.message:String(n);if(n instanceof p){if(t==="json")return{text:JSON.stringify({error:{code:"USAGE",message:o}})};let r=n.hint?`
3
3
  ${n.hint}`:"";return{text:`stock-sdk: ${o}${r}`}}let e=w(n);return t==="json"?{text:JSON.stringify({error:{code:e,message:o}})}:{text:`stock-sdk: ${e}: ${o}`}}var bn={start:"startDate",end:"endDate"},Cn=new Set(["format","f","pretty","quiet","q","help","h","version","V","timeout"]),En=new Set(["limit"]);function B(n){return Cn.has(n)||En.has(n)}function An(n,t){let o={},e=new Map;for(let r of n.options??[])e.set(r.flag,r);for(let[r,s]of Object.entries(t)){if(B(r))continue;let c=e.get(r);if(!c){if(s===!0)continue;o[bn[r]??r]=s;continue}o[c.field??c.flag]=Pn(c,s)}for(let r of n.options??[]){let s=r.field??r.flag;o[s]===void 0&&r.default!==void 0&&(o[s]=r.default)}return o}function Pn(n,t){switch(n.type){case"boolean":return t===!0||t==="true";case"number":return Number(S(t));case"number[]":return E(t);case"enum":case"string":{let o=S(t),e=typeof o=="boolean"?o:String(o);if(n.upper&&typeof e=="string"&&(e=e.toUpperCase()),n.type==="enum"&&n.enum&&typeof e=="string"&&!n.enum.includes(e))throw new p(`--${n.flag} \u975E\u6CD5\u503C\u300C${e}\u300D`,`\u53EF\u9009: ${n.enum.join(" / ")}`);return n.map&&typeof e=="string"&&e in n.map&&(e=n.map[e]),e}default:return t}}function S(n){return Array.isArray(n)?n[n.length-1]:n}function E(n){return(Array.isArray(n)?n.join(","):String(n)).split(",").map(o=>o.trim()).filter(o=>o.length>0).map(o=>Number(o)).filter(o=>Number.isInteger(o)&&o>0)}function H(n,t){let o=n.positional??[],e=[],r=0;for(let s of o){if(s.variadic){let d=t.slice(r);if(s.required&&d.length===0)throw new p(`\u7F3A\u5C11\u53C2\u6570 <${s.name}>`);for(let i of d)e.push(J(s,i));return e}let c=t[r];if(c===void 0){if(s.required)throw new p(`\u7F3A\u5C11\u53C2\u6570 <${s.name}>`);e.push(void 0)}else e.push(J(s,c));r++}return e}function J(n,t){let o=t;if(n.upper&&(o=o.toUpperCase()),n.enum&&!n.enum.includes(o))throw new p(`<${n.name}> \u975E\u6CD5\u503C\u300C${t}\u300D`,`\u53EF\u9009: ${n.enum.join(" / ")}`);return o}function m(n,t,o){let e=j(n,t);if(!e)throw new p(`\u672A\u77E5\u547D\u4EE4: ${t.join(" ")}`);return Promise.resolve(e.fn.apply(e.parent,o))}function vn(n,t){let o=new Map;for(let r of n.options??[])o.set(r.flag,r);let e=o.size>0;for(let[r,s]of Object.entries(t)){if(B(r))continue;let c=o.get(r);if(!c){if(e)throw new p(`\u672A\u77E5\u9009\u9879 --${r}`,`\u8FD0\u884C \`stock-sdk ${n.path.join(" ")} --help\` \u67E5\u770B\u53EF\u7528\u9009\u9879`);continue}if(s===!0&&c.type!=="boolean"&&c.type!=="number[]")throw new p(`--${r} \u7F3A\u5C11\u503C`);if(c.type!=="number[]"){let d=S(s);if(c.upper&&typeof d=="string"&&(d=d.toUpperCase()),d!==s&&(t[r]=d),c.type==="enum"&&c.enum){let i=typeof d=="string"?d:String(d);if(!c.enum.includes(i))throw new p(`--${r} \u975E\u6CD5\u503C\u300C${i}\u300D`,`\u53EF\u9009: ${c.enum.join(" / ")}`)}if(c.type==="number"&&d!==!0&&Number.isNaN(Number(d)))throw new p(`--${r} \u9700\u8981\u6570\u503C\uFF0C\u5F97\u5230\u300C${String(d)}\u300D`)}}for(let r of n.options??[])if(r.required&&t[r.flag]===void 0)throw new p(`\u7F3A\u5C11\u5FC5\u586B\u9009\u9879 --${r.flag}`,r.desc)}function _n(n,t){let o=n.positional??[];for(let e=0;e<o.length;e++){let r=o[e],s=t[e];if(s===void 0||!r.enum)continue;let c=r.upper?s.toUpperCase():s;if(!r.enum.includes(c))throw new p(`<${r.name}> \u975E\u6CD5\u503C\u300C${s}\u300D`,`\u53EF\u9009: ${r.enum.join(" / ")}`)}}function Rn(n,t){let o=t.limit;if(o===void 0||o===!0||!Array.isArray(n))return n;let e=Number(S(o));return!Number.isNaN(e)&&e>=1?n.slice(0,e):n}function W(n,t,o){vn(t,o.options),_n(t,o.positional);let e=t.invoke?t.invoke(n,o):Nn(n,t,o);return Promise.resolve(e).then(r=>Rn(r,o.options))}function Nn(n,t,o){let e=An(t,o.options);switch(t.argShape){case"none":return m(n,t.path,[]);case"codes[]":return z(o.positional,t),m(n,t.path,[o.positional]);case"codes+options":return z(o.positional,t),m(n,t.path,[o.positional,e]);case"symbol+options":{let r=H(t,o.positional);return m(n,t.path,[...r,e])}case"options":return m(n,t.path,[e]);case"positional":return m(n,t.path,H(t,o.positional));default:throw new p(`\u4E0D\u652F\u6301\u7684\u547D\u4EE4\u5F62\u6001: ${t.argShape}`)}}function z(n,t){if(n.length===0)throw new p(`\u547D\u4EE4 "${t.path.join(" ")}" \u9700\u8981\u81F3\u5C11\u4E00\u4E2A\u4EE3\u7801\u53C2\u6570`)}function Z(n,t,o){if(t==="json")return o?JSON.stringify(n,null,2):JSON.stringify(n);let e=Mn(n);return e.length===0?"":t==="csv"?Dn(e):jn(e)}function nn(n){return n==null||Array.isArray(n)&&n.length===0}function Mn(n){return Array.isArray(n)?n.map(t=>Y(t)?t:{value:t}):Y(n)?[n]:n==null?[]:[{value:n}]}function Y(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function tn(n){let t=[],o=new Set;for(let e of n)for(let r of Object.keys(e))o.has(r)||(o.add(r),t.push(r));return t}function on(n){return n==null?"":typeof n=="object"?JSON.stringify(n):String(n)}function A(n){let t=0;for(let o of n){let e=o.codePointAt(0)??0;t+=In(e)?2:1}return t}function In(n){return n>=4352&&n<=4447||n>=11904&&n<=42191||n>=44032&&n<=55203||n>=63744&&n<=64255||n>=65072&&n<=65103||n>=65280&&n<=65376||n>=65504&&n<=65510||n>=131072&&n<=262141}function Q(n,t,o){let e=Math.max(0,t-A(n)),r=" ".repeat(e);return o?r+n:n+r}function jn(n){let t=tn(n),o=n.map(i=>t.map(a=>on(i[a]))),e=t.map((i,a)=>o.every(u=>u[a]===""||Tn(u[a]))),r=t.map((i,a)=>Math.max(A(i),...o.map(u=>A(u[a])))),s=t.map((i,a)=>Q(i,r[a],e[a])).join(" "),c=r.map(i=>"-".repeat(i)).join(" "),d=o.map(i=>i.map((a,u)=>Q(a,r[u],e[u])).join(" ")).join(`
4
4
  `);return[s,c,d].join(`
5
5
  `)}function Tn(n){return n!==""&&!Number.isNaN(Number(n))}function Dn(n){let t=tn(n),o=[t.map(X).join(",")];for(let e of n)o.push(t.map(r=>X(on(e[r]))).join(","));return o.join(`
@@ -7,7 +7,7 @@ ${n.hint}`:"";return{text:`stock-sdk: ${o}${r}`}}let e=w(n);return t==="json"?{t
7
7
  `)}return i}},{path:["kline","cn"],alias:["kline"],summary:"K\u7EBF(--market a/hk/us\uFF1B--limit \u622A\u65AD)",argShape:"symbol+options",positional:P,options:[qn,rn,sn,an,un,v],invoke:async(n,t)=>{let o=_(t,"kline"),e=cn(t.options.market)??pn(o),r=fn(t);return m(n,["kline",e==="hk"?"hk":e==="us"?"us":"cn"],[o,r])}},{path:["kline","cnMinute"],alias:["minute"],summary:"\u5206\u949FK\u7EBF/\u5206\u65F6(--period 1/5/15/30/60\uFF1B--market\uFF1B\u6E2F/\u7F8E --ndays)",argShape:"symbol+options",positional:P,options:[Kn,rn,sn,an,un,v,Ln],invoke:async(n,t)=>{let o=_(t,"minute"),e=cn(t.options.market)??pn(o),r=fn(t),s=e==="hk"?"hkMinute":e==="us"?"usMinute":"cnMinute";if(t.options.ndays!==void 0){if(s==="cnMinute")throw new p("--ndays \u4EC5\u652F\u6301\u6E2F/\u7F8E\u80A1\u5206\u65F6","\u793A\u4F8B: stock-sdk minute 00700 --ndays 5");r.ndays=Number(t.options.ndays)}return m(n,["kline",s],[o,r])}},{path:["kline","withIndicators"],alias:["indicators"],summary:"\u5E26\u6307\u6807K\u7EBF(--ma 5,10,20 --macd --kdj --rsi --boll ...\uFF1B--market)",argShape:"symbol+options",positional:P,options:Fn,invoke:ln},{path:["search"],alias:["search"],summary:"\u641C\u7D22\u80A1\u7968/\u6307\u6570/\u57FA\u91D1(--limit \u622A\u65AD)",argShape:"positional",positional:[{name:"keyword",required:!0}],options:[v],invoke:async(n,t)=>{let o=t.positional[0];if(!o)throw new p("\u7F3A\u5C11\u641C\u7D22\u5173\u952E\u8BCD","\u7528\u6CD5: stock-sdk search <keyword>");return n.search(o)}},{path:["quotes","timeline"],alias:["timeline"],summary:"\u5F53\u65E5\u5206\u65F6",argShape:"positional",positional:Un,invoke:async(n,t)=>{let o=t.positional[0];if(!o)throw new p("\u7F3A\u5C11\u80A1\u7968\u4EE3\u7801","\u7528\u6CD5: stock-sdk timeline <code>");return n.quotes.timeline(o)}},{path:["codes","cn"],alias:["codes"],summary:"\u4EE3\u7801\u5217\u8868(market: a/hk/us/fund\uFF1B--simple\uFF1B--board sh/sz/bj/kc/cy)",argShape:"positional",positional:[{name:"market",required:!0,enum:["a","hk","us","fund"]}],options:[{flag:"simple",type:"boolean",desc:"\u53BB\u524D\u7F00"},{flag:"board",field:"market",type:"string",desc:"\u677F\u5757 sh/sz/bj/kc/cy(\u4EC5A\u80A1)"}],invoke:async(n,t)=>{let o=t.positional[0],e={};if(t.options.simple===!0&&(e.simple=!0),t.options.board!==void 0){if(o!=="a")throw new p("--board \u4EC5\u652F\u6301 A \u80A1(market=a)","\u53EF\u9009: sh / sz / bj / kc / cy");e.market=t.options.board}switch(o){case"a":return m(n,["codes","cn"],[e]);case"us":return m(n,["codes","us"],[e]);case"hk":return n.codes.hk();case"fund":return n.codes.fund();default:throw new p(`\u672A\u77E5\u5E02\u573A: ${o}`,"\u53EF\u9009: a / hk / us / fund")}}},{path:["calendar","marketStatus"],alias:["status"],summary:"\u5E02\u573A\u72B6\u6001(a/hk/us\uFF0C\u9ED8\u8BA4 a)",argShape:"positional",positional:[{name:"market",upper:!0,enum:T}],invoke:async(n,t)=>{let o=t.positional[0],e=o?o.toUpperCase():"A";return n.calendar.marketStatus(e)}},{path:["marketEvent","ztPool"],alias:["ztpool"],summary:"\u6DA8\u505C\u80A1\u6C60 zt/yesterday/strong/sub_new/broken/dt(--date)",argShape:"positional",positional:[{name:"type",enum:D}],options:[{flag:"date",type:"string",desc:"\u4EA4\u6613\u65E5 YYYYMMDD"}],invoke:async(n,t)=>{let o=t.positional[0],e=t.options.date;return n.marketEvent.ztPool(o,e)}},{path:["call"],alias:["call"],summary:"\u539F\u59CB\u76F4\u901A\uFF1A\u8C03\u7528\u4EFB\u610F\u547D\u540D\u7A7A\u95F4\u65B9\u6CD5\uFF08--args \u4F20 JSON \u5B9E\u53C2\u6570\u7EC4\uFF09",argShape:"positional",positional:[{name:"method",required:!0}],options:[{flag:"args",type:"string",desc:`JSON \u5B9E\u53C2\u6570\u7EC4\uFF0C\u5982 '[["sh600519"]]'`}],invoke:(n,t)=>{let o=t.positional[0];if(!o)throw new p("call \u7F3A\u5C11\u65B9\u6CD5\u8DEF\u5F84","\u7528\u6CD5: stock-sdk call <ns.method> --args '[...]'");let e=[],r=t.options.args;if(typeof r=="string")try{let c=JSON.parse(r);e=Array.isArray(c)?c:[c]}catch{throw new p("--args \u4E0D\u662F\u5408\u6CD5 JSON",`\u793A\u4F8B: --args '[["sh600519"]]'`)}if(!new Set(Bn()).has(o))throw new p(`\u672A\u77E5\u65B9\u6CD5: ${o}`,"\u5F62\u5982 quotes.cn / kline.cn(\u4EC5\u547D\u540D\u7A7A\u95F4\u65B9\u6CD5,\u89C1 stock-sdk --help)");return m(n,o.split("."),e)}}],hn="mcp",zn=[...y,...k];function Bn(){return g.map(n=>n.path.join("."))}function _(n,t){let o=n.positional[0];if(!o)throw new p("\u7F3A\u5C11\u4EE3\u7801\u53C2\u6570",`\u7528\u6CD5: stock-sdk ${t} <symbol>`);return o}function kn(){let n=new Set(["help","h","version","V","quiet","q","pretty"]);for(let t of zn)for(let o of t.options??[])o.type==="boolean"&&n.add(o.flag);for(let t of C)n.add(t);return n}function gn(n){if(n.length===0)return null;for(let o=Math.min(3,n.length);o>=2;o--){let e=n.slice(0,o).join("."),r=k.find(s=>s.path.join(".")===e);if(r)return{spec:r,rest:n.slice(o)}}for(let o of y)if(o.alias?.includes(n[0]))return{spec:o,rest:n.slice(1)};let t=k.find(o=>o.path.join(".")===n[0]);return t?{spec:t,rest:n.slice(1)}:null}function Sn(){let n=["stock-sdk \u2014\u2014 \u80A1\u7968\u884C\u60C5\u547D\u4EE4\u884C\uFF08\u57FA\u4E8E stock-sdk v2 \u547D\u540D\u7A7A\u95F4 API\uFF09","","\u7528\u6CD5:"," stock-sdk <command> [args] [--flags]"," stock-sdk <namespace> <method> [args] [--flags] # \u76F4\u8FBE\u4EFB\u610F\u547D\u540D\u7A7A\u95F4\u65B9\u6CD5","","\u5E38\u7528\u547D\u4EE4:"];for(let o of y){let e=o.alias?.[0]??o.path.join(" ");n.push(` ${e.padEnd(12)} ${o.summary}`)}n.push(" mcp \u542F\u52A8 MCP server (stdio)"),n.push(""),n.push("\u547D\u540D\u7A7A\u95F4\uFF08stock-sdk <ns> <method> ...\uFF09:");let t=[...new Set(k.map(o=>o.path[0]))];return n.push(" "+t.join(" / ")),n.push(""),n.push("\u5168\u5C40\u9009\u9879:"),n.push(" -f, --format json|table|csv \u8F93\u51FA\u683C\u5F0F (\u9ED8\u8BA4 json)"),n.push(" --pretty JSON \u7F29\u8FDB\u7F8E\u5316"),n.push(" --timeout <ms> \u8BF7\u6C42\u8D85\u65F6"),n.push(" -q, --quiet \u9759\u9ED8(\u53EA\u8F93\u51FA\u6570\u636E)"),n.push(" -h, --help \u663E\u793A\u5E2E\u52A9"),n.push(" -V, --version \u663E\u793A\u7248\u672C"),n.push(""),n.push("\u793A\u4F8B:"),n.push(" stock-sdk quote 600519 000858 00700"),n.push(" stock-sdk kline 600519 --period weekly --adjust hfq --limit 30"),n.push(" stock-sdk indicators 600519 --ma 5,10,20 --macd"),n.push(" stock-sdk board industry list --format table"),n.push(" stock-sdk options etf dailyKline 10004336"),n.push(""),n.push("\u8FD0\u884C `stock-sdk <command> --help` \u67E5\u770B\u5355\u6761\u547D\u4EE4\u7528\u6CD5\u3002"),n.join(`
8
8
  `)}function yn(n){let t=n.alias?.[0]??n.path.join(" "),o=[`${t} \u2014\u2014 ${n.summary}`,""],e=(n.positional??[]).map(r=>{let s=r.required?`<${r.name}>`:`[${r.name}]`;return r.variadic?`${s}...`:s}).join(" ");if(o.push(`\u7528\u6CD5: stock-sdk ${t}${e?" "+e:""} [--flags]`),n.options?.length){o.push(""),o.push("\u9009\u9879:");for(let r of n.options){let s=r.enum?` (${r.enum.join("/")})`:"";o.push(` --${r.flag.padEnd(12)} ${r.desc}${s}`)}}return o.join(`
9
9
  `)}function wn(n,t=new Set){let o=[],e={},r=!1,s=(i,a)=>{let u=e[i];if(u===void 0){e[i]=a;return}if(typeof a!="string"){e[i]=a;return}Array.isArray(u)?u.push(a):typeof u=="string"?e[i]=[u,a]:e[i]=a},c=i=>i!==void 0&&(i==="-"||!i.startsWith("-")||/^-\d/.test(i)),d=(i,a)=>{if(t.has(i))return s(i,!0),a;let u=n[a+1];return c(u)?(s(i,u),a+1):(s(i,!0),a)};for(let i=0;i<n.length;i++){let a=n[i];if(r){o.push(a);continue}if(a==="--"){r=!0;continue}if(a.startsWith("--")&&a.length>2){let u=a.slice(2),f=u.indexOf("=");f>=0?s(u.slice(0,f),u.slice(f+1)):i=d(u,i)}else if(a.startsWith("-")&&a.length>1&&!Wn(a)){let u=a.slice(1),f=u.indexOf("=");f>=0?s(u.slice(0,f),u.slice(f+1)):i=d(u,i)}else o.push(a)}return{positional:o,options:e}}function Wn(n){return/^-\d/.test(n)}var Yn=kn();process.stdout.on("error",n=>{n.code==="EPIPE"&&process.exit(0),process.stderr.write(`stock-sdk: stdout error: ${n.message}
10
- `)});function Qn(){return"2.2.2"}function Xn(n){let t=n.format??n.f,o=t==="table"||t==="csv"?t:"json",e;if(typeof n.timeout=="string"||typeof n.timeout=="number"){let r=Number(n.timeout);!Number.isNaN(r)&&r>0&&(e=r)}return{format:o,pretty:n.pretty===!0,quiet:n.quiet===!0||n.q===!0,help:n.help===!0||n.h===!0,version:n.version===!0||n.V===!0,timeout:e}}async function Zn(){try{return(await import("./mcp.js")).startMcpServer(),0}catch(n){let t=n instanceof Error?n.message:String(n);return process.stderr.write(`stock-sdk: \u65E0\u6CD5\u542F\u52A8 MCP server: ${t}
10
+ `)});function Qn(){return"2.3.0"}function Xn(n){let t=n.format??n.f,o=t==="table"||t==="csv"?t:"json",e;if(typeof n.timeout=="string"||typeof n.timeout=="number"){let r=Number(n.timeout);!Number.isNaN(r)&&r>0&&(e=r)}return{format:o,pretty:n.pretty===!0,quiet:n.quiet===!0||n.q===!0,help:n.help===!0||n.h===!0,version:n.version===!0||n.V===!0,timeout:e}}async function Zn(){try{return(await import("./mcp.js")).startMcpServer(),0}catch(n){let t=n instanceof Error?n.message:String(n);return process.stderr.write(`stock-sdk: \u65E0\u6CD5\u542F\u52A8 MCP server: ${t}
11
11
  `),1}}async function nt(n){let t="json";try{let o=wn(n,Yn),e=Xn(o.options);if(t=e.format,e.version)return process.stdout.write(Qn()+`
12
12
  `),0;if(o.positional.length===0)return process.stdout.write(Sn()+`
13
13
  `),0;if(o.positional[0]===hn)return e.help?(process.stdout.write(`stock-sdk mcp \u2014\u2014 \u542F\u52A8 MCP server (stdio transport)
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkSR7FGCVZcjs = require('./chunk-SR7FGCVZ.cjs');var _chunkC4CA7QBBcjs = require('./chunk-C4CA7QBB.cjs');var _chunkWCBK5KYAcjs = require('./chunk-WCBK5KYA.cjs');var _chunkUSK6JHLGcjs = require('./chunk-USK6JHLG.cjs');var _chunkKKGWFS2Mcjs = require('./chunk-KKGWFS2M.cjs');var _chunkT5CH7H3Xcjs = require('./chunk-T5CH7H3X.cjs');var _chunkTVIEKKDQcjs = require('./chunk-TVIEKKDQ.cjs');var _chunk4Q7UQ5Q3cjs = require('./chunk-4Q7UQ5Q3.cjs');require('./chunk-4VDLQK6F.cjs');var le={0:"sz",1:"sh",100:"global",105:"us",116:"hk"},me={sh:"CN",sz:"CN",hk:"HK",us:"US"},de={IXIC:".IXIC",NDX:".NDX",NDX100:".NDX"},ke={IXIC:"NDX",NDX:"NDX",NDX100:"NDX"};function he(t){return t==="sh"||t==="sz"||t==="hk"||t==="us"||t==="global"}function Se(t){switch(t.market){case"CN":return t.exchange==="SSE"?"sh":t.exchange==="SZSE"?"sz":"unknown";case"HK":return"hk";case"US":return"us";case"GLOBAL":return"global";default:return"unknown"}}function ye(t){let e=t.code.trim(),o=t.market.trim().toLowerCase(),s=_nullishCoalesce(le[t.market], () => (o)),r=he(s)?s:void 0;if(r==="global")return{code:e.replace(/^\d{3}\./,"").toUpperCase(),market:"global"};let c=r===void 0||r==="us"?e.replace(/^us(?=[A-Za-z.]+$)/i,""):e;try{let n=_chunkT5CH7H3Xcjs.e.call(void 0, c,r?{market:me[r]}:void 0);if(n.assetType!=="stock")return{code:e,market:"unknown"};let i=_nullishCoalesce(r, () => (Se(n)));return i==="unknown"?{code:e,market:"unknown"}:{code:n.market==="US"?n.code.toUpperCase():n.code,market:i}}catch (e2){return{code:e,market:"unknown"}}}function Oe(t,e){return e==="sh"&&t.startsWith("000")||e==="sz"&&t.startsWith("399")}function fe(t){let{code:e,market:o}=t;return(o==="sh"||o==="sz")&&Oe(e,o)?`https://quote.eastmoney.com/zs${e}.html`:o==="sh"||o==="sz"?`https://quote.eastmoney.com/${o}${e}.html`:o==="hk"?`https://quote.eastmoney.com/hk/${e}.html`:o==="us"?`https://quote.eastmoney.com/us/${e}.html`:o==="global"?`https://quote.eastmoney.com/gb/zs${_nullishCoalesce(ke[e], () => (e))}.html`:`https://so.eastmoney.com/web/s?keyword=${encodeURIComponent(e)}`}function Me(t){let{code:e,market:o}=t;return o==="sh"||o==="sz"?`https://xueqiu.com/S/${o.toUpperCase()}${e}`:o==="hk"?`https://xueqiu.com/S/${e}`:o==="us"?`https://xueqiu.com/S/${e}`:o==="global"?`https://xueqiu.com/S/${_nullishCoalesce(de[e], () => (e))}`:`https://xueqiu.com/k?q=${encodeURIComponent(e)}`}function Ce(t){let e=ye(t);return[{name:"\u4E1C\u65B9\u8D22\u5BCC",url:fe(e)},{name:"\u96EA\u7403",url:Me(e)}]}exports.BROWSER_JSVARS_MUTEX_KEY = _chunkUSK6JHLGcjs.j; exports.FundService = _chunkUSK6JHLGcjs.s; exports.HttpError = _chunk4Q7UQ5Q3cjs.b; exports.INDICATOR_REGISTRY = _chunkKKGWFS2Mcjs.s; exports.MARKET_TZ = _chunkUSK6JHLGcjs.m; exports.MemoryCache = _chunkTVIEKKDQcjs.a; exports.MemoryCacheStore = _chunkWCBK5KYAcjs.a; exports.SdkError = _chunk4Q7UQ5Q3cjs.a; exports.StockSDK = _chunkUSK6JHLGcjs.t; exports.TradingCalendarService = _chunkUSK6JHLGcjs.r; exports.addIndicators = _chunkKKGWFS2Mcjs.w; exports.asyncPool = _chunkUSK6JHLGcjs.f; exports.backtest = _chunkC4CA7QBBcjs.b; exports.buildIndicatorContext = _chunkKKGWFS2Mcjs.r; exports.buildTimeMeta = _chunkUSK6JHLGcjs.o; exports.buildTimeMetaFromDateAndTime = _chunkUSK6JHLGcjs.p; exports.cacheThrough = _chunkWCBK5KYAcjs.b; exports.calcATR = _chunkKKGWFS2Mcjs.l; exports.calcBIAS = _chunkKKGWFS2Mcjs.j; exports.calcBOLL = _chunkKKGWFS2Mcjs.f; exports.calcCCI = _chunkKKGWFS2Mcjs.k; exports.calcDMI = _chunkKKGWFS2Mcjs.o; exports.calcEMA = _chunkKKGWFS2Mcjs.b; exports.calcKC = _chunkKKGWFS2Mcjs.q; exports.calcKDJ = _chunkKKGWFS2Mcjs.g; exports.calcMA = _chunkKKGWFS2Mcjs.d; exports.calcMACD = _chunkKKGWFS2Mcjs.e; exports.calcOBV = _chunkKKGWFS2Mcjs.m; exports.calcROC = _chunkKKGWFS2Mcjs.n; exports.calcRSI = _chunkKKGWFS2Mcjs.h; exports.calcSAR = _chunkKKGWFS2Mcjs.p; exports.calcSMA = _chunkKKGWFS2Mcjs.a; exports.calcSignals = _chunkSR7FGCVZcjs.a; exports.calcWMA = _chunkKKGWFS2Mcjs.c; exports.calcWR = _chunkKKGWFS2Mcjs.i; exports.chunkArray = _chunkUSK6JHLGcjs.e; exports.createCacheKey = _chunkTVIEKKDQcjs.d; exports.decodeGBK = _chunkUSK6JHLGcjs.a; exports.default = _chunkUSK6JHLGcjs.u; exports.estimateIndicatorLookback = _chunkKKGWFS2Mcjs.v; exports.extractJsonFromJsonp = _chunkUSK6JHLGcjs.g; exports.fetchJsVars = _chunkUSK6JHLGcjs.k; exports.formatInTz = _chunkUSK6JHLGcjs.q; exports.generateSearchExternalLinks = Ce; exports.getEnabledIndicatorKeys = _chunkKKGWFS2Mcjs.u; exports.getSdkErrorCode = _chunk4Q7UQ5Q3cjs.k; exports.getSharedCache = _chunkTVIEKKDQcjs.b; exports.jsonpRequest = _chunkUSK6JHLGcjs.h; exports.normalizeSymbol = _chunkT5CH7H3Xcjs.e; exports.parseJsVars = _chunkUSK6JHLGcjs.l; exports.parseMarketTime = _chunkUSK6JHLGcjs.n; exports.parseResponse = _chunkUSK6JHLGcjs.b; exports.safeNumber = _chunkUSK6JHLGcjs.c; exports.safeNumberOrNull = _chunkUSK6JHLGcjs.d; exports.screen = _chunkC4CA7QBBcjs.a; exports.toEastmoneySecid = _chunkT5CH7H3Xcjs.i; exports.toTencentSymbol = _chunkT5CH7H3Xcjs.h; exports.withScriptMutex = _chunkUSK6JHLGcjs.i;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunkSR7FGCVZcjs = require('./chunk-SR7FGCVZ.cjs');var _chunkC4CA7QBBcjs = require('./chunk-C4CA7QBB.cjs');var _chunkWCBK5KYAcjs = require('./chunk-WCBK5KYA.cjs');var _chunkLMUFSVKQcjs = require('./chunk-LMUFSVKQ.cjs');var _chunkZESMWMHPcjs = require('./chunk-ZESMWMHP.cjs');var _chunkT5CH7H3Xcjs = require('./chunk-T5CH7H3X.cjs');var _chunkTVIEKKDQcjs = require('./chunk-TVIEKKDQ.cjs');var _chunk4Q7UQ5Q3cjs = require('./chunk-4Q7UQ5Q3.cjs');require('./chunk-4VDLQK6F.cjs');var me={0:"sz",1:"sh",100:"global",105:"us",116:"hk"},de={sh:"CN",sz:"CN",hk:"HK",us:"US"},he={IXIC:".IXIC",NDX:".NDX",NDX100:".NDX"},ke={IXIC:"NDX",NDX:"NDX",NDX100:"NDX"};function Se(t){return t==="sh"||t==="sz"||t==="hk"||t==="us"||t==="global"}function ye(t){switch(t.market){case"CN":return t.exchange==="SSE"?"sh":t.exchange==="SZSE"?"sz":"unknown";case"HK":return"hk";case"US":return"us";case"GLOBAL":return"global";default:return"unknown"}}function Oe(t){let e=t.code.trim(),o=t.market.trim().toLowerCase(),s=_nullishCoalesce(me[t.market], () => (o)),r=Se(s)?s:void 0;if(r==="global")return{code:e.replace(/^\d{3}\./,"").toUpperCase(),market:"global"};let c=r===void 0||r==="us"?e.replace(/^us(?=[A-Za-z.]+$)/i,""):e;try{let n=_chunkT5CH7H3Xcjs.e.call(void 0, c,r?{market:de[r]}:void 0);if(n.assetType!=="stock")return{code:e,market:"unknown"};let a=_nullishCoalesce(r, () => (ye(n)));return a==="unknown"?{code:e,market:"unknown"}:{code:n.market==="US"?n.code.toUpperCase():n.code,market:a}}catch (e2){return{code:e,market:"unknown"}}}function fe(t,e){return e==="sh"&&t.startsWith("000")||e==="sz"&&t.startsWith("399")}function Ce(t){let{code:e,market:o}=t;return(o==="sh"||o==="sz")&&fe(e,o)?`https://quote.eastmoney.com/zs${e}.html`:o==="sh"||o==="sz"?`https://quote.eastmoney.com/${o}${e}.html`:o==="hk"?`https://quote.eastmoney.com/hk/${e}.html`:o==="us"?`https://quote.eastmoney.com/us/${e}.html`:o==="global"?`https://quote.eastmoney.com/gb/zs${_nullishCoalesce(ke[e], () => (e))}.html`:`https://so.eastmoney.com/web/s?keyword=${encodeURIComponent(e)}`}function Me(t){let{code:e,market:o}=t;return o==="sh"||o==="sz"?`https://xueqiu.com/S/${o.toUpperCase()}${e}`:o==="hk"?`https://xueqiu.com/S/${e}`:o==="us"?`https://xueqiu.com/S/${e}`:o==="global"?`https://xueqiu.com/S/${_nullishCoalesce(he[e], () => (e))}`:`https://xueqiu.com/k?q=${encodeURIComponent(e)}`}function ge(t){let e=Oe(t);return[{name:"\u4E1C\u65B9\u8D22\u5BCC",url:Ce(e)},{name:"\u96EA\u7403",url:Me(e)}]}exports.BROWSER_JSVARS_MUTEX_KEY = _chunkLMUFSVKQcjs.j; exports.FundService = _chunkLMUFSVKQcjs.s; exports.HttpError = _chunk4Q7UQ5Q3cjs.b; exports.INDICATOR_REGISTRY = _chunkZESMWMHPcjs.t; exports.MARKET_TZ = _chunkLMUFSVKQcjs.m; exports.MemoryCache = _chunkTVIEKKDQcjs.a; exports.MemoryCacheStore = _chunkWCBK5KYAcjs.a; exports.SdkError = _chunk4Q7UQ5Q3cjs.a; exports.StockSDK = _chunkLMUFSVKQcjs.t; exports.TradingCalendarService = _chunkLMUFSVKQcjs.r; exports.addIndicators = _chunkZESMWMHPcjs.x; exports.asyncPool = _chunkLMUFSVKQcjs.f; exports.backtest = _chunkC4CA7QBBcjs.b; exports.buildIndicatorContext = _chunkZESMWMHPcjs.s; exports.buildTimeMeta = _chunkLMUFSVKQcjs.o; exports.buildTimeMetaFromDateAndTime = _chunkLMUFSVKQcjs.p; exports.cacheThrough = _chunkWCBK5KYAcjs.b; exports.calcATR = _chunkZESMWMHPcjs.l; exports.calcBIAS = _chunkZESMWMHPcjs.j; exports.calcBOLL = _chunkZESMWMHPcjs.f; exports.calcCCI = _chunkZESMWMHPcjs.k; exports.calcChipDistribution = _chunkZESMWMHPcjs.r; exports.calcDMI = _chunkZESMWMHPcjs.o; exports.calcEMA = _chunkZESMWMHPcjs.b; exports.calcKC = _chunkZESMWMHPcjs.q; exports.calcKDJ = _chunkZESMWMHPcjs.g; exports.calcMA = _chunkZESMWMHPcjs.d; exports.calcMACD = _chunkZESMWMHPcjs.e; exports.calcOBV = _chunkZESMWMHPcjs.m; exports.calcROC = _chunkZESMWMHPcjs.n; exports.calcRSI = _chunkZESMWMHPcjs.h; exports.calcSAR = _chunkZESMWMHPcjs.p; exports.calcSMA = _chunkZESMWMHPcjs.a; exports.calcSignals = _chunkSR7FGCVZcjs.a; exports.calcWMA = _chunkZESMWMHPcjs.c; exports.calcWR = _chunkZESMWMHPcjs.i; exports.chunkArray = _chunkLMUFSVKQcjs.e; exports.createCacheKey = _chunkTVIEKKDQcjs.d; exports.decodeGBK = _chunkLMUFSVKQcjs.a; exports.default = _chunkLMUFSVKQcjs.u; exports.estimateIndicatorLookback = _chunkZESMWMHPcjs.w; exports.extractJsonFromJsonp = _chunkLMUFSVKQcjs.g; exports.fetchJsVars = _chunkLMUFSVKQcjs.k; exports.formatInTz = _chunkLMUFSVKQcjs.q; exports.generateSearchExternalLinks = ge; exports.getEnabledIndicatorKeys = _chunkZESMWMHPcjs.v; exports.getSdkErrorCode = _chunk4Q7UQ5Q3cjs.k; exports.getSharedCache = _chunkTVIEKKDQcjs.b; exports.jsonpRequest = _chunkLMUFSVKQcjs.h; exports.normalizeSymbol = _chunkT5CH7H3Xcjs.e; exports.parseJsVars = _chunkLMUFSVKQcjs.l; exports.parseMarketTime = _chunkLMUFSVKQcjs.n; exports.parseResponse = _chunkLMUFSVKQcjs.b; exports.safeNumber = _chunkLMUFSVKQcjs.c; exports.safeNumberOrNull = _chunkLMUFSVKQcjs.d; exports.screen = _chunkC4CA7QBBcjs.a; exports.toEastmoneySecid = _chunkT5CH7H3Xcjs.i; exports.toTencentSymbol = _chunkT5CH7H3Xcjs.h; exports.withScriptMutex = _chunkLMUFSVKQcjs.i;
package/dist/index.d.cts CHANGED
@@ -1,10 +1,11 @@
1
- import { a as RequestClient, b as SearchResult, E as ExternalLink } from './sdk-BOfyUDzu.cjs';
2
- export { A as AShareMarket, aM as BlockTradeDailyStatItem, B as BlockTradeDateOptions, aL as BlockTradeDetailItem, aK as BlockTradeMarketStatItem, aD as BoardChangeItem, aj as CFFEXOptionQuote, u as CFFEXOptionQuotesOptions, aa as ComexInventory, t as ComexInventoryOptions, $ as ConceptBoard, a1 as ConceptBoardConstituent, a2 as ConceptBoardKline, C as ConceptBoardKlineOptions, a4 as ConceptBoardMinuteKline, o as ConceptBoardMinuteKlineOptions, a3 as ConceptBoardMinuteTimeline, a0 as ConceptBoardSpot, am as DividendDetail, aI as DragonTigerBranchItem, D as DragonTigerDateOptions, aF as DragonTigerDetailItem, aH as DragonTigerInstitutionItem, aE as DragonTigerPeriod, aJ as DragonTigerSeatItem, aG as DragonTigerStockStatItem, ai as ETFOptionCate, ah as ETFOptionExpireDay, ag as ETFOptionMonth, y as FullQuote, a$ as FundAssetAllocation, a_ as FundBondHolding, b5 as FundBuySedemption, aS as FundDividend, aR as FundDividendListOptions, aT as FundDividendListResult, aP as FundDividendRank, aW as FundEstimate, J as FundFlow, v as FundFlowOptions, ao as FundFlowRankItem, w as FundFlowRankOptions, b3 as FundHolderStructure, aZ as FundHolding, b1 as FundManager, aV as FundNavHistory, aU as FundNavPoint, b2 as FundPerformanceEvaluation, b0 as FundPositionPoint, h as FundProfile, O as FundQuote, aY as FundRankHistory, aX as FundRankPoint, b8 as FundSameType, b7 as FundSameTypePeer, b4 as FundScaleChange, F as FundService, aQ as FundSortDirection, b6 as FundStageReturns, a5 as FuturesExchange, a9 as FuturesInventory, s as FuturesInventoryOptions, a8 as FuturesInventorySymbol, a6 as FuturesKline, p as FuturesKlineOptions, c as GetAShareCodeListOptions, G as GetAllAShareQuotesOptions, e as GetAllUSQuotesOptions, bd as GetHotThemesOptions, bf as GetThemeFundsOptions, bc as GetThemeListOptions, d as GetUSCodeListOptions, r as GlobalFuturesKlineOptions, a7 as GlobalFuturesQuote, q as GlobalFuturesSpotOptions, j as HKKlineOptions, k as HKMinuteKlineOptions, K as HKQuote, H as HistoryKlineOptions, bi as HotThemesResult, ab as IndexOptionProduct, V as IndustryBoard, X as IndustryBoardConstituent, Y as IndustryBoardKline, I as IndustryBoardKlineOptions, _ as IndustryBoardMinuteKline, n as IndustryBoardMinuteKlineOptions, Z as IndustryBoardMinuteTimeline, W as IndustryBoardSpot, aN as MarginAccountItem, aO as MarginTargetItem, aq as MarketFundFlow, f as MarketStatus, M as MarketType, i as MinuteKlineOptions, ar as NorthboundDirection, av as NorthboundFlowSummary, ax as NorthboundHistoryItem, x as NorthboundHistoryOptions, aw as NorthboundHoldingRankItem, N as NorthboundHoldingRankOptions, ay as NorthboundIndividualItem, as as NorthboundMarket, au as NorthboundMinuteItem, at as NorthboundRankPeriod, ae as OptionKline, ak as OptionLHBItem, af as OptionMinute, ac as OptionTQuote, ad as OptionTQuoteResult, P as PanelLargeOrder, Q as Quote, R as RequestClientOptions, al as SearchResultType, ap as SectorFundFlowItem, z as SimpleQuote, aC as StockChangeItem, aB as StockChangeType, an as StockFundFlowDaily, S as StockSDK, g as SupportedMarket, bb as ThemeCategory, bg as ThemeFund, bj as ThemeFundItem, bk as ThemeFundItemList, bh as ThemeFundListResult, ba as ThemeFundOrder, be as ThemeFundRankSort, b9 as ThemeFundSort, T as TradingCalendarService, l as USKlineOptions, U as USMarket, m as USMinuteKlineOptions, L as USQuote, aA as ZTPoolItem, az as ZTPoolType, S as default } from './sdk-BOfyUDzu.cjs';
1
+ import { a as RequestClient, b as SearchResult, E as ExternalLink } from './sdk-6Qozazec.cjs';
2
+ export { A as AShareMarket, aT as BlockTradeDailyStatItem, D as BlockTradeDateOptions, aS as BlockTradeDetailItem, aR as BlockTradeMarketStatItem, aK as BoardChangeItem, am as CFFEXOptionQuote, x as CFFEXOptionQuotesOptions, aI as ChangeTypeCount, C as ChipDistributionRequestOptions, ad as ComexInventory, w as ComexInventoryOptions, a2 as ConceptBoard, a4 as ConceptBoardConstituent, a5 as ConceptBoardKline, q as ConceptBoardKlineOptions, a7 as ConceptBoardMinuteKline, r as ConceptBoardMinuteKlineOptions, a6 as ConceptBoardMinuteTimeline, a3 as ConceptBoardSpot, ap as DividendDetail, aP as DragonTigerBranchItem, J as DragonTigerDateOptions, aM as DragonTigerDetailItem, aO as DragonTigerInstitutionItem, aL as DragonTigerPeriod, aQ as DragonTigerSeatItem, aN as DragonTigerStockStatItem, al as ETFOptionCate, ak as ETFOptionExpireDay, aj as ETFOptionMonth, K as FullQuote, b6 as FundAssetAllocation, b5 as FundBondHolding, bc as FundBuySedemption, aZ as FundDividend, aY as FundDividendListOptions, a_ as FundDividendListResult, aW as FundDividendRank, b1 as FundEstimate, O as FundFlow, y as FundFlowOptions, ar as FundFlowRankItem, z as FundFlowRankOptions, ba as FundHolderStructure, b4 as FundHolding, b8 as FundManager, b0 as FundNavHistory, a$ as FundNavPoint, b9 as FundPerformanceEvaluation, b7 as FundPositionPoint, i as FundProfile, W as FundQuote, b3 as FundRankHistory, b2 as FundRankPoint, bf as FundSameType, be as FundSameTypePeer, bb as FundScaleChange, F as FundService, aX as FundSortDirection, bd as FundStageReturns, a8 as FuturesExchange, ac as FuturesInventory, v as FuturesInventoryOptions, ab as FuturesInventorySymbol, a9 as FuturesKline, s as FuturesKlineOptions, d as GetAShareCodeListOptions, G as GetAllAShareQuotesOptions, f as GetAllUSQuotesOptions, bk as GetHotThemesOptions, bm as GetThemeFundsOptions, bj as GetThemeListOptions, e as GetUSCodeListOptions, u as GlobalFuturesKlineOptions, aa as GlobalFuturesQuote, t as GlobalFuturesSpotOptions, k as HKKlineOptions, l as HKMinuteKlineOptions, Q as HKQuote, H as HistoryKlineOptions, bp as HotThemesResult, ae as IndexOptionProduct, aH as IndividualChangesDay, aJ as IndividualChangesHistory, c as IndividualChangesHistoryOptions, I as IndividualChangesOptions, aG as IndividualStockChangeItem, Y as IndustryBoard, _ as IndustryBoardConstituent, $ as IndustryBoardKline, o as IndustryBoardKlineOptions, a1 as IndustryBoardMinuteKline, p as IndustryBoardMinuteKlineOptions, a0 as IndustryBoardMinuteTimeline, Z as IndustryBoardSpot, aU as MarginAccountItem, aV as MarginTargetItem, at as MarketFundFlow, g as MarketStatus, M as MarketType, j as MinuteKlineOptions, au as NorthboundDirection, ay as NorthboundFlowSummary, aA as NorthboundHistoryItem, B as NorthboundHistoryOptions, az as NorthboundHoldingRankItem, N as NorthboundHoldingRankOptions, aB as NorthboundIndividualItem, av as NorthboundMarket, ax as NorthboundMinuteItem, aw as NorthboundRankPeriod, ah as OptionKline, an as OptionLHBItem, ai as OptionMinute, af as OptionTQuote, ag as OptionTQuoteResult, P as PanelLargeOrder, X as Quote, R as RequestClientOptions, ao as SearchResultType, as as SectorFundFlowItem, L as SimpleQuote, aF as StockChangeItem, aE as StockChangeType, aq as StockFundFlowDaily, S as StockSDK, h as SupportedMarket, bi as ThemeCategory, bn as ThemeFund, bq as ThemeFundItem, br as ThemeFundItemList, bo as ThemeFundListResult, bh as ThemeFundOrder, bl as ThemeFundRankSort, bg as ThemeFundSort, T as TradingCalendarService, m as USKlineOptions, U as USMarket, n as USMinuteKlineOptions, V as USQuote, aD as ZTPoolItem, aC as ZTPoolType, S as default } from './sdk-6Qozazec.cjs';
3
3
  export { H as HttpError, P as ProviderName, a as ProviderRequestPolicy, b as RequestError, R as RetryOptions, S as SdkError, g as getSdkErrorCode } from './index-mlzPfoON.cjs';
4
4
  export { CacheOptions, CacheStore, MaybePromise, MemoryCache, MemoryCacheStore, cacheThrough, createCacheKey, getSharedCache } from './cache.cjs';
5
5
  export { e as ATROptions, A as AnyHistoryKline, d as BIASOptions, B as BOLLOptions, C as CCIOptions, D as DMIOptions, i as DMIResult, w as HKHistoryKline, x as HKMinuteKline, y as HKMinuteTimeline, H as HistoryKline, I as IndicatorOptions, k as KCOptions, l as KCResult, c as KDJOptions, K as KlineWithIndicators, b as MACDOptions, M as MAOptions, m as MARKET_TZ, n as MarketTz, t as MinuteKline, s as MinuteTimeline, O as OBVOptions, f as OBVResult, g as ROCOptions, h as ROCResult, R as RSIOptions, S as SAROptions, j as SARResult, T as TimeMeta, u as TodayTimeline, v as TodayTimelineResponse, U as USHistoryKline, z as USMinuteKline, E as USMinuteTimeline, W as WROptions, a as addIndicators, o as buildTimeMeta, q as buildTimeMetaFromDateAndTime, r as formatInTz, p as parseMarketTime } from './addIndicators-_V3HEi0q.cjs';
6
- export { INDICATOR_REGISTRY, IndicatorKey, buildIndicatorContext, calcATR, calcBIAS, calcBOLL, calcCCI, calcDMI, calcEMA, calcKC, calcKDJ, calcMA, calcMACD, calcOBV, calcROC, calcRSI, calcSAR, calcSMA, calcWMA, calcWR, estimateIndicatorLookback, getEnabledIndicatorKeys } from './indicators.cjs';
7
6
  export { A as AssetType, E as Exchange, M as Market, N as NormalizedSymbol, a as SymbolInput, S as SymbolRef, n as normalizeSymbol, b as toEastmoneySecid, t as toTencentSymbol } from './adapters-BiH4keVd.cjs';
7
+ export { INDICATOR_REGISTRY, IndicatorKey, buildIndicatorContext, calcATR, calcBIAS, calcBOLL, calcCCI, calcDMI, calcEMA, calcKC, calcKDJ, calcMA, calcMACD, calcOBV, calcROC, calcRSI, calcSAR, calcSMA, calcWMA, calcWR, estimateIndicatorLookback, getEnabledIndicatorKeys } from './indicators.cjs';
8
+ export { d as ChipDistributionItem, b as ChipDistributionOptions, a as ChipHistogram, C as ChipKlineLike, c as calcChipDistribution } from './chip-BbA23rr1.cjs';
8
9
  export { Signal, SignalOptions, SignalType, calcSignals } from './signals.cjs';
9
10
  export { BacktestOptions, BacktestReport, ScreenerBuilder, Strategy, StrategySignal, Trade, backtest, screen } from './screener.cjs';
10
11
 
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { a as RequestClient, b as SearchResult, E as ExternalLink } from './sdk-CmYFd7V2.js';
2
- export { A as AShareMarket, aM as BlockTradeDailyStatItem, B as BlockTradeDateOptions, aL as BlockTradeDetailItem, aK as BlockTradeMarketStatItem, aD as BoardChangeItem, aj as CFFEXOptionQuote, u as CFFEXOptionQuotesOptions, aa as ComexInventory, t as ComexInventoryOptions, $ as ConceptBoard, a1 as ConceptBoardConstituent, a2 as ConceptBoardKline, C as ConceptBoardKlineOptions, a4 as ConceptBoardMinuteKline, o as ConceptBoardMinuteKlineOptions, a3 as ConceptBoardMinuteTimeline, a0 as ConceptBoardSpot, am as DividendDetail, aI as DragonTigerBranchItem, D as DragonTigerDateOptions, aF as DragonTigerDetailItem, aH as DragonTigerInstitutionItem, aE as DragonTigerPeriod, aJ as DragonTigerSeatItem, aG as DragonTigerStockStatItem, ai as ETFOptionCate, ah as ETFOptionExpireDay, ag as ETFOptionMonth, y as FullQuote, a$ as FundAssetAllocation, a_ as FundBondHolding, b5 as FundBuySedemption, aS as FundDividend, aR as FundDividendListOptions, aT as FundDividendListResult, aP as FundDividendRank, aW as FundEstimate, J as FundFlow, v as FundFlowOptions, ao as FundFlowRankItem, w as FundFlowRankOptions, b3 as FundHolderStructure, aZ as FundHolding, b1 as FundManager, aV as FundNavHistory, aU as FundNavPoint, b2 as FundPerformanceEvaluation, b0 as FundPositionPoint, h as FundProfile, O as FundQuote, aY as FundRankHistory, aX as FundRankPoint, b8 as FundSameType, b7 as FundSameTypePeer, b4 as FundScaleChange, F as FundService, aQ as FundSortDirection, b6 as FundStageReturns, a5 as FuturesExchange, a9 as FuturesInventory, s as FuturesInventoryOptions, a8 as FuturesInventorySymbol, a6 as FuturesKline, p as FuturesKlineOptions, c as GetAShareCodeListOptions, G as GetAllAShareQuotesOptions, e as GetAllUSQuotesOptions, bd as GetHotThemesOptions, bf as GetThemeFundsOptions, bc as GetThemeListOptions, d as GetUSCodeListOptions, r as GlobalFuturesKlineOptions, a7 as GlobalFuturesQuote, q as GlobalFuturesSpotOptions, j as HKKlineOptions, k as HKMinuteKlineOptions, K as HKQuote, H as HistoryKlineOptions, bi as HotThemesResult, ab as IndexOptionProduct, V as IndustryBoard, X as IndustryBoardConstituent, Y as IndustryBoardKline, I as IndustryBoardKlineOptions, _ as IndustryBoardMinuteKline, n as IndustryBoardMinuteKlineOptions, Z as IndustryBoardMinuteTimeline, W as IndustryBoardSpot, aN as MarginAccountItem, aO as MarginTargetItem, aq as MarketFundFlow, f as MarketStatus, M as MarketType, i as MinuteKlineOptions, ar as NorthboundDirection, av as NorthboundFlowSummary, ax as NorthboundHistoryItem, x as NorthboundHistoryOptions, aw as NorthboundHoldingRankItem, N as NorthboundHoldingRankOptions, ay as NorthboundIndividualItem, as as NorthboundMarket, au as NorthboundMinuteItem, at as NorthboundRankPeriod, ae as OptionKline, ak as OptionLHBItem, af as OptionMinute, ac as OptionTQuote, ad as OptionTQuoteResult, P as PanelLargeOrder, Q as Quote, R as RequestClientOptions, al as SearchResultType, ap as SectorFundFlowItem, z as SimpleQuote, aC as StockChangeItem, aB as StockChangeType, an as StockFundFlowDaily, S as StockSDK, g as SupportedMarket, bb as ThemeCategory, bg as ThemeFund, bj as ThemeFundItem, bk as ThemeFundItemList, bh as ThemeFundListResult, ba as ThemeFundOrder, be as ThemeFundRankSort, b9 as ThemeFundSort, T as TradingCalendarService, l as USKlineOptions, U as USMarket, m as USMinuteKlineOptions, L as USQuote, aA as ZTPoolItem, az as ZTPoolType, S as default } from './sdk-CmYFd7V2.js';
1
+ import { a as RequestClient, b as SearchResult, E as ExternalLink } from './sdk-CtqVdrof.js';
2
+ export { A as AShareMarket, aT as BlockTradeDailyStatItem, D as BlockTradeDateOptions, aS as BlockTradeDetailItem, aR as BlockTradeMarketStatItem, aK as BoardChangeItem, am as CFFEXOptionQuote, x as CFFEXOptionQuotesOptions, aI as ChangeTypeCount, C as ChipDistributionRequestOptions, ad as ComexInventory, w as ComexInventoryOptions, a2 as ConceptBoard, a4 as ConceptBoardConstituent, a5 as ConceptBoardKline, q as ConceptBoardKlineOptions, a7 as ConceptBoardMinuteKline, r as ConceptBoardMinuteKlineOptions, a6 as ConceptBoardMinuteTimeline, a3 as ConceptBoardSpot, ap as DividendDetail, aP as DragonTigerBranchItem, J as DragonTigerDateOptions, aM as DragonTigerDetailItem, aO as DragonTigerInstitutionItem, aL as DragonTigerPeriod, aQ as DragonTigerSeatItem, aN as DragonTigerStockStatItem, al as ETFOptionCate, ak as ETFOptionExpireDay, aj as ETFOptionMonth, K as FullQuote, b6 as FundAssetAllocation, b5 as FundBondHolding, bc as FundBuySedemption, aZ as FundDividend, aY as FundDividendListOptions, a_ as FundDividendListResult, aW as FundDividendRank, b1 as FundEstimate, O as FundFlow, y as FundFlowOptions, ar as FundFlowRankItem, z as FundFlowRankOptions, ba as FundHolderStructure, b4 as FundHolding, b8 as FundManager, b0 as FundNavHistory, a$ as FundNavPoint, b9 as FundPerformanceEvaluation, b7 as FundPositionPoint, i as FundProfile, W as FundQuote, b3 as FundRankHistory, b2 as FundRankPoint, bf as FundSameType, be as FundSameTypePeer, bb as FundScaleChange, F as FundService, aX as FundSortDirection, bd as FundStageReturns, a8 as FuturesExchange, ac as FuturesInventory, v as FuturesInventoryOptions, ab as FuturesInventorySymbol, a9 as FuturesKline, s as FuturesKlineOptions, d as GetAShareCodeListOptions, G as GetAllAShareQuotesOptions, f as GetAllUSQuotesOptions, bk as GetHotThemesOptions, bm as GetThemeFundsOptions, bj as GetThemeListOptions, e as GetUSCodeListOptions, u as GlobalFuturesKlineOptions, aa as GlobalFuturesQuote, t as GlobalFuturesSpotOptions, k as HKKlineOptions, l as HKMinuteKlineOptions, Q as HKQuote, H as HistoryKlineOptions, bp as HotThemesResult, ae as IndexOptionProduct, aH as IndividualChangesDay, aJ as IndividualChangesHistory, c as IndividualChangesHistoryOptions, I as IndividualChangesOptions, aG as IndividualStockChangeItem, Y as IndustryBoard, _ as IndustryBoardConstituent, $ as IndustryBoardKline, o as IndustryBoardKlineOptions, a1 as IndustryBoardMinuteKline, p as IndustryBoardMinuteKlineOptions, a0 as IndustryBoardMinuteTimeline, Z as IndustryBoardSpot, aU as MarginAccountItem, aV as MarginTargetItem, at as MarketFundFlow, g as MarketStatus, M as MarketType, j as MinuteKlineOptions, au as NorthboundDirection, ay as NorthboundFlowSummary, aA as NorthboundHistoryItem, B as NorthboundHistoryOptions, az as NorthboundHoldingRankItem, N as NorthboundHoldingRankOptions, aB as NorthboundIndividualItem, av as NorthboundMarket, ax as NorthboundMinuteItem, aw as NorthboundRankPeriod, ah as OptionKline, an as OptionLHBItem, ai as OptionMinute, af as OptionTQuote, ag as OptionTQuoteResult, P as PanelLargeOrder, X as Quote, R as RequestClientOptions, ao as SearchResultType, as as SectorFundFlowItem, L as SimpleQuote, aF as StockChangeItem, aE as StockChangeType, aq as StockFundFlowDaily, S as StockSDK, h as SupportedMarket, bi as ThemeCategory, bn as ThemeFund, bq as ThemeFundItem, br as ThemeFundItemList, bo as ThemeFundListResult, bh as ThemeFundOrder, bl as ThemeFundRankSort, bg as ThemeFundSort, T as TradingCalendarService, m as USKlineOptions, U as USMarket, n as USMinuteKlineOptions, V as USQuote, aD as ZTPoolItem, aC as ZTPoolType, S as default } from './sdk-CtqVdrof.js';
3
3
  export { H as HttpError, P as ProviderName, a as ProviderRequestPolicy, b as RequestError, R as RetryOptions, S as SdkError, g as getSdkErrorCode } from './index-mlzPfoON.js';
4
4
  export { CacheOptions, CacheStore, MaybePromise, MemoryCache, MemoryCacheStore, cacheThrough, createCacheKey, getSharedCache } from './cache.js';
5
5
  export { e as ATROptions, A as AnyHistoryKline, d as BIASOptions, B as BOLLOptions, C as CCIOptions, D as DMIOptions, i as DMIResult, w as HKHistoryKline, x as HKMinuteKline, y as HKMinuteTimeline, H as HistoryKline, I as IndicatorOptions, k as KCOptions, l as KCResult, c as KDJOptions, K as KlineWithIndicators, b as MACDOptions, M as MAOptions, m as MARKET_TZ, n as MarketTz, t as MinuteKline, s as MinuteTimeline, O as OBVOptions, f as OBVResult, g as ROCOptions, h as ROCResult, R as RSIOptions, S as SAROptions, j as SARResult, T as TimeMeta, u as TodayTimeline, v as TodayTimelineResponse, U as USHistoryKline, z as USMinuteKline, E as USMinuteTimeline, W as WROptions, a as addIndicators, o as buildTimeMeta, q as buildTimeMetaFromDateAndTime, r as formatInTz, p as parseMarketTime } from './addIndicators-_V3HEi0q.js';
6
- export { INDICATOR_REGISTRY, IndicatorKey, buildIndicatorContext, calcATR, calcBIAS, calcBOLL, calcCCI, calcDMI, calcEMA, calcKC, calcKDJ, calcMA, calcMACD, calcOBV, calcROC, calcRSI, calcSAR, calcSMA, calcWMA, calcWR, estimateIndicatorLookback, getEnabledIndicatorKeys } from './indicators.js';
7
6
  export { A as AssetType, E as Exchange, M as Market, N as NormalizedSymbol, a as SymbolInput, S as SymbolRef, n as normalizeSymbol, b as toEastmoneySecid, t as toTencentSymbol } from './adapters-BiH4keVd.js';
7
+ export { INDICATOR_REGISTRY, IndicatorKey, buildIndicatorContext, calcATR, calcBIAS, calcBOLL, calcCCI, calcDMI, calcEMA, calcKC, calcKDJ, calcMA, calcMACD, calcOBV, calcROC, calcRSI, calcSAR, calcSMA, calcWMA, calcWR, estimateIndicatorLookback, getEnabledIndicatorKeys } from './indicators.js';
8
+ export { d as ChipDistributionItem, b as ChipDistributionOptions, a as ChipHistogram, C as ChipKlineLike, c as calcChipDistribution } from './chip-BbA23rr1.js';
8
9
  export { Signal, SignalOptions, SignalType, calcSignals } from './signals.js';
9
10
  export { BacktestOptions, BacktestReport, ScreenerBuilder, Strategy, StrategySignal, Trade, backtest, screen } from './screener.js';
10
11
 
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a as ae}from"./chunk-LAT6L2TO.js";import{a as ie,b as ce}from"./chunk-LCX5Q36O.js";import{a as pe,b as ue}from"./chunk-F3KZXCVO.js";import{a as p,b as u,c as l,d as m,e as S,f as y,g as C,h as g,i as R,j as x,k as I,l as b,m as A,n as T,o as N,p as K,q as E,r as oe,s as re,t as ne,u as se}from"./chunk-3VUFYFFD.js";import{a as z,b as B,c as q,d as U,e as X,f as w,g as F,h as _,i as $,j as G,k as H,l as J,m as P,n as V,o as W,p as Q,q as v,r as Y,s as Z,u as j,v as ee,w as te}from"./chunk-6ZSZEHZW.js";import{e as a,h as L,i as D}from"./chunk-ZZ2IBUMV.js";import{a as O,b as f,d as M}from"./chunk-DU7MCVLJ.js";import{a as d,b as k,k as h}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var le={0:"sz",1:"sh",100:"global",105:"us",116:"hk"},me={sh:"CN",sz:"CN",hk:"HK",us:"US"},de={IXIC:".IXIC",NDX:".NDX",NDX100:".NDX"},ke={IXIC:"NDX",NDX:"NDX",NDX100:"NDX"};function he(t){return t==="sh"||t==="sz"||t==="hk"||t==="us"||t==="global"}function Se(t){switch(t.market){case"CN":return t.exchange==="SSE"?"sh":t.exchange==="SZSE"?"sz":"unknown";case"HK":return"hk";case"US":return"us";case"GLOBAL":return"global";default:return"unknown"}}function ye(t){let e=t.code.trim(),o=t.market.trim().toLowerCase(),s=le[t.market]??o,r=he(s)?s:void 0;if(r==="global")return{code:e.replace(/^\d{3}\./,"").toUpperCase(),market:"global"};let c=r===void 0||r==="us"?e.replace(/^us(?=[A-Za-z.]+$)/i,""):e;try{let n=a(c,r?{market:me[r]}:void 0);if(n.assetType!=="stock")return{code:e,market:"unknown"};let i=r??Se(n);return i==="unknown"?{code:e,market:"unknown"}:{code:n.market==="US"?n.code.toUpperCase():n.code,market:i}}catch{return{code:e,market:"unknown"}}}function Oe(t,e){return e==="sh"&&t.startsWith("000")||e==="sz"&&t.startsWith("399")}function fe(t){let{code:e,market:o}=t;return(o==="sh"||o==="sz")&&Oe(e,o)?`https://quote.eastmoney.com/zs${e}.html`:o==="sh"||o==="sz"?`https://quote.eastmoney.com/${o}${e}.html`:o==="hk"?`https://quote.eastmoney.com/hk/${e}.html`:o==="us"?`https://quote.eastmoney.com/us/${e}.html`:o==="global"?`https://quote.eastmoney.com/gb/zs${ke[e]??e}.html`:`https://so.eastmoney.com/web/s?keyword=${encodeURIComponent(e)}`}function Me(t){let{code:e,market:o}=t;return o==="sh"||o==="sz"?`https://xueqiu.com/S/${o.toUpperCase()}${e}`:o==="hk"?`https://xueqiu.com/S/${e}`:o==="us"?`https://xueqiu.com/S/${e}`:o==="global"?`https://xueqiu.com/S/${de[e]??e}`:`https://xueqiu.com/k?q=${encodeURIComponent(e)}`}function Ce(t){let e=ye(t);return[{name:"\u4E1C\u65B9\u8D22\u5BCC",url:fe(e)},{name:"\u96EA\u7403",url:Me(e)}]}export{x as BROWSER_JSVARS_MUTEX_KEY,re as FundService,k as HttpError,Z as INDICATOR_REGISTRY,A as MARKET_TZ,O as MemoryCache,pe as MemoryCacheStore,d as SdkError,ne as StockSDK,oe as TradingCalendarService,te as addIndicators,y as asyncPool,ce as backtest,Y as buildIndicatorContext,N as buildTimeMeta,K as buildTimeMetaFromDateAndTime,ue as cacheThrough,J as calcATR,G as calcBIAS,w as calcBOLL,H as calcCCI,W as calcDMI,B as calcEMA,v as calcKC,F as calcKDJ,U as calcMA,X as calcMACD,P as calcOBV,V as calcROC,_ as calcRSI,Q as calcSAR,z as calcSMA,ae as calcSignals,q as calcWMA,$ as calcWR,S as chunkArray,M as createCacheKey,p as decodeGBK,se as default,ee as estimateIndicatorLookback,C as extractJsonFromJsonp,I as fetchJsVars,E as formatInTz,Ce as generateSearchExternalLinks,j as getEnabledIndicatorKeys,h as getSdkErrorCode,f as getSharedCache,g as jsonpRequest,a as normalizeSymbol,b as parseJsVars,T as parseMarketTime,u as parseResponse,l as safeNumber,m as safeNumberOrNull,ie as screen,D as toEastmoneySecid,L as toTencentSymbol,R as withScriptMutex};
1
+ import{a as ae}from"./chunk-LAT6L2TO.js";import{a as ce,b as pe}from"./chunk-LCX5Q36O.js";import{a as ue,b as le}from"./chunk-F3KZXCVO.js";import{a as p,b as u,c as l,d as m,e as S,f as y,g as M,h as g,i as R,j as x,k as I,l as b,m as A,n as T,o as K,p as N,q as E,r as re,s as ne,t as se,u as ie}from"./chunk-3ASJZ3YA.js";import{a as z,b as B,c as q,d as U,e as X,f as w,g as F,h as _,i as $,j as G,k as H,l as J,m as P,n as V,o as W,p as v,q as Q,r as Y,s as Z,t as j,v as ee,w as te,x as oe}from"./chunk-QGYIBFXP.js";import{e as i,h as D,i as L}from"./chunk-ZZ2IBUMV.js";import{a as O,b as f,d as C}from"./chunk-DU7MCVLJ.js";import{a as d,b as h,k}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var me={0:"sz",1:"sh",100:"global",105:"us",116:"hk"},de={sh:"CN",sz:"CN",hk:"HK",us:"US"},he={IXIC:".IXIC",NDX:".NDX",NDX100:".NDX"},ke={IXIC:"NDX",NDX:"NDX",NDX100:"NDX"};function Se(t){return t==="sh"||t==="sz"||t==="hk"||t==="us"||t==="global"}function ye(t){switch(t.market){case"CN":return t.exchange==="SSE"?"sh":t.exchange==="SZSE"?"sz":"unknown";case"HK":return"hk";case"US":return"us";case"GLOBAL":return"global";default:return"unknown"}}function Oe(t){let e=t.code.trim(),o=t.market.trim().toLowerCase(),s=me[t.market]??o,r=Se(s)?s:void 0;if(r==="global")return{code:e.replace(/^\d{3}\./,"").toUpperCase(),market:"global"};let c=r===void 0||r==="us"?e.replace(/^us(?=[A-Za-z.]+$)/i,""):e;try{let n=i(c,r?{market:de[r]}:void 0);if(n.assetType!=="stock")return{code:e,market:"unknown"};let a=r??ye(n);return a==="unknown"?{code:e,market:"unknown"}:{code:n.market==="US"?n.code.toUpperCase():n.code,market:a}}catch{return{code:e,market:"unknown"}}}function fe(t,e){return e==="sh"&&t.startsWith("000")||e==="sz"&&t.startsWith("399")}function Ce(t){let{code:e,market:o}=t;return(o==="sh"||o==="sz")&&fe(e,o)?`https://quote.eastmoney.com/zs${e}.html`:o==="sh"||o==="sz"?`https://quote.eastmoney.com/${o}${e}.html`:o==="hk"?`https://quote.eastmoney.com/hk/${e}.html`:o==="us"?`https://quote.eastmoney.com/us/${e}.html`:o==="global"?`https://quote.eastmoney.com/gb/zs${ke[e]??e}.html`:`https://so.eastmoney.com/web/s?keyword=${encodeURIComponent(e)}`}function Me(t){let{code:e,market:o}=t;return o==="sh"||o==="sz"?`https://xueqiu.com/S/${o.toUpperCase()}${e}`:o==="hk"?`https://xueqiu.com/S/${e}`:o==="us"?`https://xueqiu.com/S/${e}`:o==="global"?`https://xueqiu.com/S/${he[e]??e}`:`https://xueqiu.com/k?q=${encodeURIComponent(e)}`}function ge(t){let e=Oe(t);return[{name:"\u4E1C\u65B9\u8D22\u5BCC",url:Ce(e)},{name:"\u96EA\u7403",url:Me(e)}]}export{x as BROWSER_JSVARS_MUTEX_KEY,ne as FundService,h as HttpError,j as INDICATOR_REGISTRY,A as MARKET_TZ,O as MemoryCache,ue as MemoryCacheStore,d as SdkError,se as StockSDK,re as TradingCalendarService,oe as addIndicators,y as asyncPool,pe as backtest,Z as buildIndicatorContext,K as buildTimeMeta,N as buildTimeMetaFromDateAndTime,le as cacheThrough,J as calcATR,G as calcBIAS,w as calcBOLL,H as calcCCI,Y as calcChipDistribution,W as calcDMI,B as calcEMA,Q as calcKC,F as calcKDJ,U as calcMA,X as calcMACD,P as calcOBV,V as calcROC,_ as calcRSI,v as calcSAR,z as calcSMA,ae as calcSignals,q as calcWMA,$ as calcWR,S as chunkArray,C as createCacheKey,p as decodeGBK,ie as default,te as estimateIndicatorLookback,M as extractJsonFromJsonp,I as fetchJsVars,E as formatInTz,ge as generateSearchExternalLinks,ee as getEnabledIndicatorKeys,k as getSdkErrorCode,f as getSharedCache,g as jsonpRequest,i as normalizeSymbol,b as parseJsVars,T as parseMarketTime,u as parseResponse,l as safeNumber,m as safeNumberOrNull,ce as screen,L as toEastmoneySecid,D as toTencentSymbol,R as withScriptMutex};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkKKGWFS2Mcjs = require('./chunk-KKGWFS2M.cjs');require('./chunk-4VDLQK6F.cjs');exports.INDICATOR_REGISTRY = _chunkKKGWFS2Mcjs.s; exports.addIndicators = _chunkKKGWFS2Mcjs.w; exports.buildIndicatorContext = _chunkKKGWFS2Mcjs.r; exports.calcATR = _chunkKKGWFS2Mcjs.l; exports.calcBIAS = _chunkKKGWFS2Mcjs.j; exports.calcBOLL = _chunkKKGWFS2Mcjs.f; exports.calcCCI = _chunkKKGWFS2Mcjs.k; exports.calcDMI = _chunkKKGWFS2Mcjs.o; exports.calcEMA = _chunkKKGWFS2Mcjs.b; exports.calcKC = _chunkKKGWFS2Mcjs.q; exports.calcKDJ = _chunkKKGWFS2Mcjs.g; exports.calcMA = _chunkKKGWFS2Mcjs.d; exports.calcMACD = _chunkKKGWFS2Mcjs.e; exports.calcOBV = _chunkKKGWFS2Mcjs.m; exports.calcROC = _chunkKKGWFS2Mcjs.n; exports.calcRSI = _chunkKKGWFS2Mcjs.h; exports.calcSAR = _chunkKKGWFS2Mcjs.p; exports.calcSMA = _chunkKKGWFS2Mcjs.a; exports.calcWMA = _chunkKKGWFS2Mcjs.c; exports.calcWR = _chunkKKGWFS2Mcjs.i; exports.estimateIndicatorLookback = _chunkKKGWFS2Mcjs.v; exports.getEnabledIndicatorKeys = _chunkKKGWFS2Mcjs.u; exports.hasCumulativeIndicator = _chunkKKGWFS2Mcjs.t;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkZESMWMHPcjs = require('./chunk-ZESMWMHP.cjs');require('./chunk-4VDLQK6F.cjs');exports.INDICATOR_REGISTRY = _chunkZESMWMHPcjs.t; exports.addIndicators = _chunkZESMWMHPcjs.x; exports.buildIndicatorContext = _chunkZESMWMHPcjs.s; exports.calcATR = _chunkZESMWMHPcjs.l; exports.calcBIAS = _chunkZESMWMHPcjs.j; exports.calcBOLL = _chunkZESMWMHPcjs.f; exports.calcCCI = _chunkZESMWMHPcjs.k; exports.calcChipDistribution = _chunkZESMWMHPcjs.r; exports.calcDMI = _chunkZESMWMHPcjs.o; exports.calcEMA = _chunkZESMWMHPcjs.b; exports.calcKC = _chunkZESMWMHPcjs.q; exports.calcKDJ = _chunkZESMWMHPcjs.g; exports.calcMA = _chunkZESMWMHPcjs.d; exports.calcMACD = _chunkZESMWMHPcjs.e; exports.calcOBV = _chunkZESMWMHPcjs.m; exports.calcROC = _chunkZESMWMHPcjs.n; exports.calcRSI = _chunkZESMWMHPcjs.h; exports.calcSAR = _chunkZESMWMHPcjs.p; exports.calcSMA = _chunkZESMWMHPcjs.a; exports.calcWMA = _chunkZESMWMHPcjs.c; exports.calcWR = _chunkZESMWMHPcjs.i; exports.estimateIndicatorLookback = _chunkZESMWMHPcjs.w; exports.getEnabledIndicatorKeys = _chunkZESMWMHPcjs.v; exports.hasCumulativeIndicator = _chunkZESMWMHPcjs.u;
@@ -1,5 +1,6 @@
1
1
  import { M as MAOptions, F as MAResult, b as MACDOptions, G as MACDResult, B as BOLLOptions, J as BOLLResult, L as OHLCV, c as KDJOptions, N as KDJResult, R as RSIOptions, P as RSIResult, W as WROptions, Q as WRResult, d as BIASOptions, V as BIASResult, C as CCIOptions, X as CCIResult, e as ATROptions, Y as ATRResult, I as IndicatorOptions, Z as PeriodsShorthand, A as AnyHistoryKline } from './addIndicators-_V3HEi0q.cjs';
2
2
  export { D as DMIOptions, i as DMIResult, k as KCOptions, l as KCResult, K as KlineWithIndicators, O as OBVOptions, f as OBVResult, g as ROCOptions, h as ROCResult, S as SAROptions, j as SARResult, a as addIndicators } from './addIndicators-_V3HEi0q.cjs';
3
+ export { d as ChipDistributionItem, b as ChipDistributionOptions, a as ChipHistogram, C as ChipKlineLike, c as calcChipDistribution } from './chip-BbA23rr1.cjs';
3
4
 
4
5
  /**
5
6
  * 计算简单移动平均线 SMA
@@ -1,5 +1,6 @@
1
1
  import { M as MAOptions, F as MAResult, b as MACDOptions, G as MACDResult, B as BOLLOptions, J as BOLLResult, L as OHLCV, c as KDJOptions, N as KDJResult, R as RSIOptions, P as RSIResult, W as WROptions, Q as WRResult, d as BIASOptions, V as BIASResult, C as CCIOptions, X as CCIResult, e as ATROptions, Y as ATRResult, I as IndicatorOptions, Z as PeriodsShorthand, A as AnyHistoryKline } from './addIndicators-_V3HEi0q.js';
2
2
  export { D as DMIOptions, i as DMIResult, k as KCOptions, l as KCResult, K as KlineWithIndicators, O as OBVOptions, f as OBVResult, g as ROCOptions, h as ROCResult, S as SAROptions, j as SARResult, a as addIndicators } from './addIndicators-_V3HEi0q.js';
3
+ export { d as ChipDistributionItem, b as ChipDistributionOptions, a as ChipHistogram, C as ChipKlineLike, c as calcChipDistribution } from './chip-BbA23rr1.js';
3
4
 
4
5
  /**
5
6
  * 计算简单移动平均线 SMA
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"./chunk-6ZSZEHZW.js";import"./chunk-WOT6VMZA.js";export{s as INDICATOR_REGISTRY,w as addIndicators,r as buildIndicatorContext,l as calcATR,j as calcBIAS,f as calcBOLL,k as calcCCI,o as calcDMI,b as calcEMA,q as calcKC,g as calcKDJ,d as calcMA,e as calcMACD,m as calcOBV,n as calcROC,h as calcRSI,p as calcSAR,a as calcSMA,c as calcWMA,i as calcWR,v as estimateIndicatorLookback,u as getEnabledIndicatorKeys,t as hasCumulativeIndicator};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x}from"./chunk-QGYIBFXP.js";import"./chunk-WOT6VMZA.js";export{t as INDICATOR_REGISTRY,x as addIndicators,s as buildIndicatorContext,l as calcATR,j as calcBIAS,f as calcBOLL,k as calcCCI,r as calcChipDistribution,o as calcDMI,b as calcEMA,q as calcKC,g as calcKDJ,d as calcMA,e as calcMACD,m as calcOBV,n as calcROC,h as calcRSI,p as calcSAR,a as calcSMA,c as calcWMA,i as calcWR,w as estimateIndicatorLookback,v as getEnabledIndicatorKeys,u as hasCumulativeIndicator};
package/dist/mcp.cjs CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkJP3ZPNWPcjs = require('./chunk-JP3ZPNWP.cjs');var _chunkUSK6JHLGcjs = require('./chunk-USK6JHLG.cjs');require('./chunk-KKGWFS2M.cjs');require('./chunk-T5CH7H3X.cjs');require('./chunk-TVIEKKDQ.cjs');var _chunk4Q7UQ5Q3cjs = require('./chunk-4Q7UQ5Q3.cjs');require('./chunk-4VDLQK6F.cjs');var v=["2025-11-25","2025-06-18"],X=v[0],R={name:"stock-sdk",version:"2.2.2"},K=-32700,S=-32600,$=-32601,u=-32602,Y=-32603;function L(e){return typeof e=="string"&&v.includes(e)?e:X}function p(...e){process.stderr.write(e.map(o=>typeof o=="string"?o:JSON.stringify(o)).join(" ")+`
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk6IFA2HGDcjs = require('./chunk-6IFA2HGD.cjs');var _chunkLMUFSVKQcjs = require('./chunk-LMUFSVKQ.cjs');require('./chunk-ZESMWMHP.cjs');require('./chunk-T5CH7H3X.cjs');require('./chunk-TVIEKKDQ.cjs');var _chunk4Q7UQ5Q3cjs = require('./chunk-4Q7UQ5Q3.cjs');require('./chunk-4VDLQK6F.cjs');var v=["2025-11-25","2025-06-18"],X=v[0],R={name:"stock-sdk",version:"2.3.0"},K=-32700,S=-32600,$=-32601,u=-32602,Y=-32603;function L(e){return typeof e=="string"&&v.includes(e)?e:X}function p(...e){process.stderr.write(e.map(o=>typeof o=="string"?o:JSON.stringify(o)).join(" ")+`
2
2
  `)}function l(e){process.stdout.write(JSON.stringify(e)+`
3
3
  `)}var k=1e6;function q(e){let o="",t=!1;process.stdin.setEncoding("utf8"),process.stdin.on("data",r=>{o+=r;let n=o.indexOf(`
4
4
  `);for(;n>=0;){let i=o.slice(0,n);o=o.slice(n+1),t?(t=!1,l({jsonrpc:"2.0",id:null,error:{code:S,message:`Message too large (limit ${k} bytes)`}})):i.trim()&&e(i),n=o.indexOf(`
5
- `)}!t&&o.length>k?(p(`[stock-sdk mcp] \u8F93\u5165\u8D85\u957F\uFF08${o.length} bytes \u65E0\u6362\u884C\uFF0C\u8D85 ${k} \u4E0A\u9650\uFF09\uFF0C\u4E22\u5F03\u81F3\u4E0B\u4E00\u6362\u884C`),t=!0,o=""):t&&(o="")}),process.stdin.on("error",r=>p("[stock-sdk mcp] stdin error:",r.message)),process.stdout.on("error",r=>{r.code==="EPIPE"?(p("[stock-sdk mcp] stdout EPIPE\uFF08client \u65AD\u5F00\uFF09\uFF0C\u9000\u51FA"),process.exit(0)):p("[stock-sdk mcp] stdout error:",r.message)})}var H={string:"string",enum:"string",number:"integer",boolean:"boolean"};function _(e){return _nullishCoalesce(_nullishCoalesce(e.jsonKey, () => (e.field)), () => (e.flag))}function z(e){return _optionalChain([e, 'access', _2 => _2.enum, 'optionalAccess', _3 => _3.map, 'call', _4 => _4(o=>_nullishCoalesce(_optionalChain([e, 'access', _5 => _5.map, 'optionalAccess', _6 => _6[o]]), () => (o)))])}function d(e){let o=H[e.type];if(!o)throw new Error(`\u53C2\u6570 --${e.flag} \u7684\u7C7B\u578B ${e.type} \u4E0D\u80FD\u6D3E\u751F MCP schema\uFF08\u8BF7\u6807\u8BB0 mcp:false\uFF09`);let t={type:o},r=z(e);r&&(t.enum=r),e.default!==void 0&&(t.default=e.default);let n=_nullishCoalesce(e.mcpDesc, () => (e.desc));return n&&(t.description=n),t}function Q(e){let o={type:"string"};return e.enum&&(o.enum=e.enum),e.default!==void 0&&(o.default=e.default),e.desc&&(o.description=e.desc),o}var G={type:"array",items:{type:"string"},description:"\u4EE3\u7801\u6570\u7EC4\uFF0C\u5E26\u4E0D\u5E26\u4EA4\u6613\u6240\u524D\u7F00\u5747\u53EF\uFF0C\u5982 ['sh600519','000001','600036']"};function V(e){return(_nullishCoalesce(e.params, () => ([]))).filter(o=>o.mcp!==!1)}function Z(e){let o={},t=[];(e.argShape==="codes[]"||e.argShape==="codes+options")&&(o.codes=G,t.push("codes"));for(let r of _nullishCoalesce(e.positional, () => ([])))o[r.name]=Q(r),r.required&&t.push(r.name);for(let r of V(e))o[_(r)]=d(r),r.required&&t.push(_(r));return{type:"object",properties:o,required:t.length>0?t:void 0,additionalProperties:!1}}function ee(e,o){let t=_chunkJP3ZPNWPcjs.a.call(void 0, e,o);if(!t)throw new Error(`SDK \u4E0A\u4E0D\u5B58\u5728\u65B9\u6CD5: ${o.join(".")}`);return r=>t.fn.apply(t.parent,r)}function oe(e){let o=_nullishCoalesce(e.positional, () => ([])),t=V(e);return(r,n)=>{let i=ee(r,e.path),c=o.map(a=>n[a.name]),s={};for(let a of t)s[_nullishCoalesce(a.field, () => (a.flag))]=n[_(a)];switch(e.argShape){case"none":return i([]);case"codes[]":return i([n.codes]);case"codes+options":return i([n.codes,s]);case"symbol+options":return i([...c,s]);case"options":return i([s]);case"positional":return i(c);default:throw new Error(`\u4E0D\u652F\u6301\u7684 argShape: ${e.argShape}`)}}}function U(e){if(e.mcp===!1||!e.toolName)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u672A\u58F0\u660E MCP \u5DE5\u5177\uFF0C\u4E0D\u80FD\u6D3E\u751F ToolDef`);if(e.mcpCustom)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u7684 MCP \u5DE5\u5177\u4E3A\u624B\u5199\u5B9E\u73B0\uFF0C\u4E0D\u80FD\u81EA\u52A8\u6D3E\u751F`);return{name:e.toolName,description:_nullishCoalesce(e.mcpDesc, () => (e.summary)),inputSchema:Z(e),tier:_nullishCoalesce(e.tier, () => ("full")),invoke:oe(e)}}var te=["ma","macd","boll","kdj","rsi","wr","bias","cci","atr","obv","roc","dmi","sar","kc"],g=_chunkJP3ZPNWPcjs.n.call(void 0, "kline.withIndicators"),W={name:g.toolName,tier:_nullishCoalesce(g.tier, () => ("full")),description:_nullishCoalesce(g.mcpDesc, () => (g.summary)),inputSchema:{type:"object",properties:{symbol:{type:"string",description:"\u80A1\u7968\u4EE3\u7801\uFF08A \u80A1 / \u6E2F\u80A1 / \u7F8E\u80A1\uFF09"},market:d(_chunkJP3ZPNWPcjs.j),period:d(_chunkJP3ZPNWPcjs.e),adjust:d(_chunkJP3ZPNWPcjs.d),startDate:{...d(_chunkJP3ZPNWPcjs.g),description:"\u8D77\u59CB\u65E5\u671F YYYYMMDD \u6216 YYYY-MM-DD"},endDate:{...d(_chunkJP3ZPNWPcjs.h),description:"\u7ED3\u675F\u65E5\u671F YYYYMMDD \u6216 YYYY-MM-DD"},indicators:{type:"object",description:"\u6307\u6807\u914D\u7F6E\u5BF9\u8C61\uFF0C\u952E\u53D6\u81EA "+te.join(" / ")+"\uFF1B\u503C\u4E3A true\uFF08\u9ED8\u8BA4\u53C2\u6570\uFF09\u6216\u914D\u7F6E\u5BF9\u8C61\u3002\u820D\u5165\u578B\u6307\u6807\u53EF\u4F20 decimals \u6307\u5B9A\u8F93\u51FA\u5C0F\u6570\u4F4D\uFF08\u9ED8\u8BA4 3\uFF09",properties:{ma:{description:"MA \u5747\u7EBF\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods: [5,10,20], type: sma|ema|wma, decimals }"},macd:{description:"MACD\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { short, long, signal, decimals }"},boll:{description:"\u5E03\u6797\u5E26\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, stdDev, decimals }"},kdj:{description:"KDJ\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, kPeriod, dPeriod, decimals }"},rsi:{description:"RSI\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},wr:{description:"\u5A01\u5EC9\u6307\u6807 WR\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},bias:{description:"BIAS \u4E56\u79BB\u7387\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},cci:{description:"CCI\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, decimals }"},atr:{description:"ATR \u771F\u5B9E\u6CE2\u5E45\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, decimals }"},obv:{description:"OBV\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { maPeriod }"},roc:{description:"ROC\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, signalPeriod }"},dmi:{description:"DMI / ADX\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, adxPeriod }"},sar:{description:"SAR \u629B\u7269\u7EBF\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { afStart, afIncrement, afMax }"},kc:{description:"Keltner \u901A\u9053 KC\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { emaPeriod, atrPeriod, multiplier }"}}}},required:["symbol"],additionalProperties:!1},invoke:(e,o)=>e.kline.withIndicators(o.symbol,{market:o.market,period:o.period,adjust:o.adjust,startDate:o.startDate,endDate:o.endDate,indicators:o.indicators})};var re={"kline.withIndicators":W},h=_chunkJP3ZPNWPcjs.m.filter(e=>e.mcp!==!1).map(e=>{if(e.mcpCustom){let o=re[e.path.join(".")];if(!o)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u6807\u8BB0\u4E86 mcpCustom \u4F46\u672A\u6CE8\u518C\u624B\u5199\u5DE5\u5177`);return o}return U(e)}),_e=new Map(h.map(e=>[e.name,e]));function B(e){if(Array.isArray(e)){let o=new Set(e);return h.filter(t=>o.has(t.name))}return e==="full"?h:h.filter(o=>o.tier==="core")}var O=200,ne=8e4;function se(e){return Array.isArray(e)&&e.length>O?{total:e.length,truncated:!0,note:`\u7ED3\u679C\u8FC7\u5927\uFF0C\u4EC5\u8FD4\u56DE\u524D ${O} \u6761\uFF1B\u8BF7\u7528\u65E5\u671F / \u5206\u9875 / \u5E02\u573A\u7B49\u53C2\u6570\u7F29\u5C0F\u8303\u56F4`,sample:e.slice(0,O)}:e}function F(e){let o=_nullishCoalesce(JSON.stringify(se(e)), () => ("null"));return o.length>ne?{content:[{type:"text",text:JSON.stringify({truncated:!0,reason:"oversized",approxKB:Math.round(o.length/1024),note:"\u7ED3\u679C\u4F53\u79EF\u8FC7\u5927\uFF0C\u5DF2\u7701\u7565\u6570\u636E\u4F53\uFF1B\u8BF7\u7528\u66F4\u5C0F\u7684\u65E5\u671F / \u5206\u9875 / \u8303\u56F4\u53C2\u6570\uFF0C\u6216\u76F4\u63A5\u7528 SDK \u83B7\u53D6\u5B8C\u6574\u6570\u636E"})}],_meta:{truncated:!0,approxChars:o.length}}:{content:[{type:"text",text:o}]}}function E(e){let o=_chunk4Q7UQ5Q3cjs.i.call(void 0, e)?e.code:"UNKNOWN",t=e instanceof Error?e.message:String(e),r=_chunk4Q7UQ5Q3cjs.i.call(void 0, e)?{code:e.code,provider:e.provider,url:e.url,status:e.status,details:e.details}:{code:o};return{content:[{type:"text",text:`Error[${o}]: ${t}`}],isError:!0,_meta:r}}function m(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ie(e,o){switch(o){case"array":return Array.isArray(e);case"string":return typeof e=="string";case"integer":return Number.isInteger(e);case"number":return typeof e=="number";case"boolean":return typeof e=="boolean";case"object":return m(e);default:return!0}}function ce(e,o){if(e.additionalProperties===!1){let t=new Set(Object.keys(e.properties));for(let r of Object.keys(o))if(!t.has(r))return`\u672A\u77E5\u53C2\u6570 "${r}"`}for(let t of _nullishCoalesce(e.required, () => ([])))if(o[t]===void 0||o[t]===null)return`\u7F3A\u5C11\u5FC5\u586B\u53C2\u6570 "${t}"`;for(let[t,r]of Object.entries(e.properties)){let n=o[t];if(n!==void 0){if(r.type&&!ie(n,r.type))return`\u53C2\u6570 "${t}" \u7C7B\u578B\u5E94\u4E3A ${r.type}`;if(r.enum&&!r.enum.includes(n))return`\u53C2\u6570 "${t}" \u53D6\u503C\u975E\u6CD5\u300C${String(n)}\u300D\uFF0C\u53EF\u9009: ${r.enum.join(" / ")}`}}return null}async function ae(e,o){let t=_nullishCoalesce(e.id, () => (null)),r=e.id!==void 0&&e.id!==null,n=s=>({jsonrpc:"2.0",id:t,result:s}),i=(s,a)=>({jsonrpc:"2.0",id:t,error:{code:s,message:a}});if(e.jsonrpc!=="2.0"||typeof e.method!="string"||e.method.length===0)return r?i(S,"Invalid Request"):null;let c=e.params;switch(e.method){case"initialize":{let s=m(c)?c.protocolVersion:void 0;return n({protocolVersion:L(s),capabilities:{tools:{}},serverInfo:R})}case"notifications/initialized":case"notifications/cancelled":return null;case"ping":return n({});case"tools/list":return n({tools:o.tools.map(s=>({name:s.name,description:s.description,inputSchema:s.inputSchema}))});case"tools/call":{if(!m(c))return i(u,"params must be an object");let s=c.name;if(typeof s!="string")return i(u,"params.name must be a string");let a=o.toolMap.get(s);if(!a)return i(u,`Unknown tool: ${s}`);let f=c.arguments;if(f!==void 0&&!m(f))return i(u,"params.arguments must be an object");let D=m(f)?f:{},P=ce(a.inputSchema,D);if(P)return n(E(new (0, _chunk4Q7UQ5Q3cjs.e)(P)));try{let y=await a.invoke(o.sdk,D);return n(F(y))}catch(y){return n(E(y))}}default:return r?i($,`Unknown method: ${e.method}`):null}}function pe(e){if(e)return e;let o=process.env.STOCK_SDK_MCP_TOOLS;if(!o)return"core";if(o==="core"||o==="full")return o;let t=o.split(",").map(r=>r.trim()).filter(Boolean);return t.length>0?t:"core"}function de(e){if(e)return e;let o=process.env.STOCK_SDK_MCP_TIMEOUT,t=o?Number(o):void 0;return t&&!Number.isNaN(t)&&t>0?{timeout:t}:{}}function be(e={}){let o=new (0, _chunkUSK6JHLGcjs.t)(de(e.sdk)),t=B(pe(e.tools)),r={sdk:o,tools:t,toolMap:new Map(t.map(i=>[i.name,i]))};p(`[stock-sdk mcp] ready \xB7 ${t.length} tools \xB7 ${R.name}@${R.version}`),q(i=>{n(i)}),process.stdin.on("end",()=>p("[stock-sdk mcp] stdin closed, exiting"));async function n(i){let c;try{c=JSON.parse(i)}catch (e2){l({jsonrpc:"2.0",id:null,error:{code:K,message:"Parse error"}});return}try{let s=await ae(c,r);s&&l(s)}catch(s){p("[stock-sdk mcp] internal error:",_nullishCoalesce(_optionalChain([s, 'optionalAccess', _7 => _7.message]), () => (String(s)))),c.id!==void 0&&c.id!==null&&l({jsonrpc:"2.0",id:c.id,error:{code:Y,message:String(_nullishCoalesce(_optionalChain([s, 'optionalAccess', _8 => _8.message]), () => (s)))}})}}}exports.dispatchMessage = ae; exports.startMcpServer = be;
5
+ `)}!t&&o.length>k?(p(`[stock-sdk mcp] \u8F93\u5165\u8D85\u957F\uFF08${o.length} bytes \u65E0\u6362\u884C\uFF0C\u8D85 ${k} \u4E0A\u9650\uFF09\uFF0C\u4E22\u5F03\u81F3\u4E0B\u4E00\u6362\u884C`),t=!0,o=""):t&&(o="")}),process.stdin.on("error",r=>p("[stock-sdk mcp] stdin error:",r.message)),process.stdout.on("error",r=>{r.code==="EPIPE"?(p("[stock-sdk mcp] stdout EPIPE\uFF08client \u65AD\u5F00\uFF09\uFF0C\u9000\u51FA"),process.exit(0)):p("[stock-sdk mcp] stdout error:",r.message)})}var H={string:"string",enum:"string",number:"integer",boolean:"boolean"};function _(e){return _nullishCoalesce(_nullishCoalesce(e.jsonKey, () => (e.field)), () => (e.flag))}function z(e){return _optionalChain([e, 'access', _2 => _2.enum, 'optionalAccess', _3 => _3.map, 'call', _4 => _4(o=>_nullishCoalesce(_optionalChain([e, 'access', _5 => _5.map, 'optionalAccess', _6 => _6[o]]), () => (o)))])}function d(e){let o=H[e.type];if(!o)throw new Error(`\u53C2\u6570 --${e.flag} \u7684\u7C7B\u578B ${e.type} \u4E0D\u80FD\u6D3E\u751F MCP schema\uFF08\u8BF7\u6807\u8BB0 mcp:false\uFF09`);let t={type:o},r=z(e);r&&(t.enum=r),e.default!==void 0&&(t.default=e.default);let n=_nullishCoalesce(e.mcpDesc, () => (e.desc));return n&&(t.description=n),t}function Q(e){let o={type:"string"};return e.enum&&(o.enum=e.enum),e.default!==void 0&&(o.default=e.default),e.desc&&(o.description=e.desc),o}var G={type:"array",items:{type:"string"},description:"\u4EE3\u7801\u6570\u7EC4\uFF0C\u5E26\u4E0D\u5E26\u4EA4\u6613\u6240\u524D\u7F00\u5747\u53EF\uFF0C\u5982 ['sh600519','000001','600036']"};function V(e){return(_nullishCoalesce(e.params, () => ([]))).filter(o=>o.mcp!==!1)}function Z(e){let o={},t=[];(e.argShape==="codes[]"||e.argShape==="codes+options")&&(o.codes=G,t.push("codes"));for(let r of _nullishCoalesce(e.positional, () => ([])))o[r.name]=Q(r),r.required&&t.push(r.name);for(let r of V(e))o[_(r)]=d(r),r.required&&t.push(_(r));return{type:"object",properties:o,required:t.length>0?t:void 0,additionalProperties:!1}}function ee(e,o){let t=_chunk6IFA2HGDcjs.a.call(void 0, e,o);if(!t)throw new Error(`SDK \u4E0A\u4E0D\u5B58\u5728\u65B9\u6CD5: ${o.join(".")}`);return r=>t.fn.apply(t.parent,r)}function oe(e){let o=_nullishCoalesce(e.positional, () => ([])),t=V(e);return(r,n)=>{let i=ee(r,e.path),c=o.map(a=>n[a.name]),s={};for(let a of t)s[_nullishCoalesce(a.field, () => (a.flag))]=n[_(a)];switch(e.argShape){case"none":return i([]);case"codes[]":return i([n.codes]);case"codes+options":return i([n.codes,s]);case"symbol+options":return i([...c,s]);case"options":return i([s]);case"positional":return i(c);default:throw new Error(`\u4E0D\u652F\u6301\u7684 argShape: ${e.argShape}`)}}}function U(e){if(e.mcp===!1||!e.toolName)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u672A\u58F0\u660E MCP \u5DE5\u5177\uFF0C\u4E0D\u80FD\u6D3E\u751F ToolDef`);if(e.mcpCustom)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u7684 MCP \u5DE5\u5177\u4E3A\u624B\u5199\u5B9E\u73B0\uFF0C\u4E0D\u80FD\u81EA\u52A8\u6D3E\u751F`);return{name:e.toolName,description:_nullishCoalesce(e.mcpDesc, () => (e.summary)),inputSchema:Z(e),tier:_nullishCoalesce(e.tier, () => ("full")),invoke:oe(e)}}var te=["ma","macd","boll","kdj","rsi","wr","bias","cci","atr","obv","roc","dmi","sar","kc"],g=_chunk6IFA2HGDcjs.n.call(void 0, "kline.withIndicators"),W={name:g.toolName,tier:_nullishCoalesce(g.tier, () => ("full")),description:_nullishCoalesce(g.mcpDesc, () => (g.summary)),inputSchema:{type:"object",properties:{symbol:{type:"string",description:"\u80A1\u7968\u4EE3\u7801\uFF08A \u80A1 / \u6E2F\u80A1 / \u7F8E\u80A1\uFF09"},market:d(_chunk6IFA2HGDcjs.j),period:d(_chunk6IFA2HGDcjs.e),adjust:d(_chunk6IFA2HGDcjs.d),startDate:{...d(_chunk6IFA2HGDcjs.g),description:"\u8D77\u59CB\u65E5\u671F YYYYMMDD \u6216 YYYY-MM-DD"},endDate:{...d(_chunk6IFA2HGDcjs.h),description:"\u7ED3\u675F\u65E5\u671F YYYYMMDD \u6216 YYYY-MM-DD"},indicators:{type:"object",description:"\u6307\u6807\u914D\u7F6E\u5BF9\u8C61\uFF0C\u952E\u53D6\u81EA "+te.join(" / ")+"\uFF1B\u503C\u4E3A true\uFF08\u9ED8\u8BA4\u53C2\u6570\uFF09\u6216\u914D\u7F6E\u5BF9\u8C61\u3002\u820D\u5165\u578B\u6307\u6807\u53EF\u4F20 decimals \u6307\u5B9A\u8F93\u51FA\u5C0F\u6570\u4F4D\uFF08\u9ED8\u8BA4 3\uFF09",properties:{ma:{description:"MA \u5747\u7EBF\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods: [5,10,20], type: sma|ema|wma, decimals }"},macd:{description:"MACD\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { short, long, signal, decimals }"},boll:{description:"\u5E03\u6797\u5E26\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, stdDev, decimals }"},kdj:{description:"KDJ\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, kPeriod, dPeriod, decimals }"},rsi:{description:"RSI\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},wr:{description:"\u5A01\u5EC9\u6307\u6807 WR\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},bias:{description:"BIAS \u4E56\u79BB\u7387\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { periods, decimals }"},cci:{description:"CCI\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, decimals }"},atr:{description:"ATR \u771F\u5B9E\u6CE2\u5E45\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, decimals }"},obv:{description:"OBV\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { maPeriod }"},roc:{description:"ROC\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, signalPeriod }"},dmi:{description:"DMI / ADX\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { period, adxPeriod }"},sar:{description:"SAR \u629B\u7269\u7EBF\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { afStart, afIncrement, afMax }"},kc:{description:"Keltner \u901A\u9053 KC\uFF0Ctrue \u6216\u914D\u7F6E\u5BF9\u8C61 { emaPeriod, atrPeriod, multiplier }"}}}},required:["symbol"],additionalProperties:!1},invoke:(e,o)=>e.kline.withIndicators(o.symbol,{market:o.market,period:o.period,adjust:o.adjust,startDate:o.startDate,endDate:o.endDate,indicators:o.indicators})};var re={"kline.withIndicators":W},h=_chunk6IFA2HGDcjs.m.filter(e=>e.mcp!==!1).map(e=>{if(e.mcpCustom){let o=re[e.path.join(".")];if(!o)throw new Error(`\u65B9\u6CD5 ${e.path.join(".")} \u6807\u8BB0\u4E86 mcpCustom \u4F46\u672A\u6CE8\u518C\u624B\u5199\u5DE5\u5177`);return o}return U(e)}),_e=new Map(h.map(e=>[e.name,e]));function B(e){if(Array.isArray(e)){let o=new Set(e);return h.filter(t=>o.has(t.name))}return e==="full"?h:h.filter(o=>o.tier==="core")}var O=200,ne=8e4;function se(e){return Array.isArray(e)&&e.length>O?{total:e.length,truncated:!0,note:`\u7ED3\u679C\u8FC7\u5927\uFF0C\u4EC5\u8FD4\u56DE\u524D ${O} \u6761\uFF1B\u8BF7\u7528\u65E5\u671F / \u5206\u9875 / \u5E02\u573A\u7B49\u53C2\u6570\u7F29\u5C0F\u8303\u56F4`,sample:e.slice(0,O)}:e}function F(e){let o=_nullishCoalesce(JSON.stringify(se(e)), () => ("null"));return o.length>ne?{content:[{type:"text",text:JSON.stringify({truncated:!0,reason:"oversized",approxKB:Math.round(o.length/1024),note:"\u7ED3\u679C\u4F53\u79EF\u8FC7\u5927\uFF0C\u5DF2\u7701\u7565\u6570\u636E\u4F53\uFF1B\u8BF7\u7528\u66F4\u5C0F\u7684\u65E5\u671F / \u5206\u9875 / \u8303\u56F4\u53C2\u6570\uFF0C\u6216\u76F4\u63A5\u7528 SDK \u83B7\u53D6\u5B8C\u6574\u6570\u636E"})}],_meta:{truncated:!0,approxChars:o.length}}:{content:[{type:"text",text:o}]}}function E(e){let o=_chunk4Q7UQ5Q3cjs.i.call(void 0, e)?e.code:"UNKNOWN",t=e instanceof Error?e.message:String(e),r=_chunk4Q7UQ5Q3cjs.i.call(void 0, e)?{code:e.code,provider:e.provider,url:e.url,status:e.status,details:e.details}:{code:o};return{content:[{type:"text",text:`Error[${o}]: ${t}`}],isError:!0,_meta:r}}function m(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ie(e,o){switch(o){case"array":return Array.isArray(e);case"string":return typeof e=="string";case"integer":return Number.isInteger(e);case"number":return typeof e=="number";case"boolean":return typeof e=="boolean";case"object":return m(e);default:return!0}}function ce(e,o){if(e.additionalProperties===!1){let t=new Set(Object.keys(e.properties));for(let r of Object.keys(o))if(!t.has(r))return`\u672A\u77E5\u53C2\u6570 "${r}"`}for(let t of _nullishCoalesce(e.required, () => ([])))if(o[t]===void 0||o[t]===null)return`\u7F3A\u5C11\u5FC5\u586B\u53C2\u6570 "${t}"`;for(let[t,r]of Object.entries(e.properties)){let n=o[t];if(n!==void 0){if(r.type&&!ie(n,r.type))return`\u53C2\u6570 "${t}" \u7C7B\u578B\u5E94\u4E3A ${r.type}`;if(r.enum&&!r.enum.includes(n))return`\u53C2\u6570 "${t}" \u53D6\u503C\u975E\u6CD5\u300C${String(n)}\u300D\uFF0C\u53EF\u9009: ${r.enum.join(" / ")}`}}return null}async function ae(e,o){let t=_nullishCoalesce(e.id, () => (null)),r=e.id!==void 0&&e.id!==null,n=s=>({jsonrpc:"2.0",id:t,result:s}),i=(s,a)=>({jsonrpc:"2.0",id:t,error:{code:s,message:a}});if(e.jsonrpc!=="2.0"||typeof e.method!="string"||e.method.length===0)return r?i(S,"Invalid Request"):null;let c=e.params;switch(e.method){case"initialize":{let s=m(c)?c.protocolVersion:void 0;return n({protocolVersion:L(s),capabilities:{tools:{}},serverInfo:R})}case"notifications/initialized":case"notifications/cancelled":return null;case"ping":return n({});case"tools/list":return n({tools:o.tools.map(s=>({name:s.name,description:s.description,inputSchema:s.inputSchema}))});case"tools/call":{if(!m(c))return i(u,"params must be an object");let s=c.name;if(typeof s!="string")return i(u,"params.name must be a string");let a=o.toolMap.get(s);if(!a)return i(u,`Unknown tool: ${s}`);let f=c.arguments;if(f!==void 0&&!m(f))return i(u,"params.arguments must be an object");let D=m(f)?f:{},P=ce(a.inputSchema,D);if(P)return n(E(new (0, _chunk4Q7UQ5Q3cjs.e)(P)));try{let y=await a.invoke(o.sdk,D);return n(F(y))}catch(y){return n(E(y))}}default:return r?i($,`Unknown method: ${e.method}`):null}}function pe(e){if(e)return e;let o=process.env.STOCK_SDK_MCP_TOOLS;if(!o)return"core";if(o==="core"||o==="full")return o;let t=o.split(",").map(r=>r.trim()).filter(Boolean);return t.length>0?t:"core"}function de(e){if(e)return e;let o=process.env.STOCK_SDK_MCP_TIMEOUT,t=o?Number(o):void 0;return t&&!Number.isNaN(t)&&t>0?{timeout:t}:{}}function be(e={}){let o=new (0, _chunkLMUFSVKQcjs.t)(de(e.sdk)),t=B(pe(e.tools)),r={sdk:o,tools:t,toolMap:new Map(t.map(i=>[i.name,i]))};p(`[stock-sdk mcp] ready \xB7 ${t.length} tools \xB7 ${R.name}@${R.version}`),q(i=>{n(i)}),process.stdin.on("end",()=>p("[stock-sdk mcp] stdin closed, exiting"));async function n(i){let c;try{c=JSON.parse(i)}catch (e2){l({jsonrpc:"2.0",id:null,error:{code:K,message:"Parse error"}});return}try{let s=await ae(c,r);s&&l(s)}catch(s){p("[stock-sdk mcp] internal error:",_nullishCoalesce(_optionalChain([s, 'optionalAccess', _7 => _7.message]), () => (String(s)))),c.id!==void 0&&c.id!==null&&l({jsonrpc:"2.0",id:c.id,error:{code:Y,message:String(_nullishCoalesce(_optionalChain([s, 'optionalAccess', _8 => _8.message]), () => (s)))}})}}}exports.dispatchMessage = ae; exports.startMcpServer = be;
package/dist/mcp.d.cts CHANGED
@@ -1,5 +1,6 @@
1
- import { S as StockSDK, R as RequestClientOptions } from './sdk-BOfyUDzu.cjs';
1
+ import { S as StockSDK, R as RequestClientOptions } from './sdk-6Qozazec.cjs';
2
2
  import './index-mlzPfoON.cjs';
3
+ import './chip-BbA23rr1.cjs';
3
4
  import './addIndicators-_V3HEi0q.cjs';
4
5
 
5
6
  type JsonRpcId = string | number | null;
package/dist/mcp.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { S as StockSDK, R as RequestClientOptions } from './sdk-CmYFd7V2.js';
1
+ import { S as StockSDK, R as RequestClientOptions } from './sdk-CtqVdrof.js';
2
2
  import './index-mlzPfoON.js';
3
+ import './chip-BbA23rr1.js';
3
4
  import './addIndicators-_V3HEi0q.js';
4
5
 
5
6
  type JsonRpcId = string | number | null;
package/dist/mcp.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as x,d as I,e as C,g as b,h as A,j as N,m as J,n as j}from"./chunk-EDUJJOAJ.js";import{t as M}from"./chunk-3VUFYFFD.js";import"./chunk-6ZSZEHZW.js";import"./chunk-ZZ2IBUMV.js";import"./chunk-DU7MCVLJ.js";import{e as w,i as T}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var v=["2025-11-25","2025-06-18"],X=v[0],R={name:"stock-sdk",version:"2.2.2"},K=-32700,S=-32600,$=-32601,u=-32602,Y=-32603;function L(e){return typeof e=="string"&&v.includes(e)?e:X}function p(...e){process.stderr.write(e.map(o=>typeof o=="string"?o:JSON.stringify(o)).join(" ")+`
1
+ import{a as x,d as I,e as C,g as b,h as A,j as N,m as J,n as j}from"./chunk-IWHFCLJM.js";import{t as M}from"./chunk-3ASJZ3YA.js";import"./chunk-QGYIBFXP.js";import"./chunk-ZZ2IBUMV.js";import"./chunk-DU7MCVLJ.js";import{e as w,i as T}from"./chunk-UBIQBXQ7.js";import"./chunk-WOT6VMZA.js";var v=["2025-11-25","2025-06-18"],X=v[0],R={name:"stock-sdk",version:"2.3.0"},K=-32700,S=-32600,$=-32601,u=-32602,Y=-32603;function L(e){return typeof e=="string"&&v.includes(e)?e:X}function p(...e){process.stderr.write(e.map(o=>typeof o=="string"?o:JSON.stringify(o)).join(" ")+`
2
2
  `)}function l(e){process.stdout.write(JSON.stringify(e)+`
3
3
  `)}var k=1e6;function q(e){let o="",t=!1;process.stdin.setEncoding("utf8"),process.stdin.on("data",r=>{o+=r;let n=o.indexOf(`
4
4
  `);for(;n>=0;){let i=o.slice(0,n);o=o.slice(n+1),t?(t=!1,l({jsonrpc:"2.0",id:null,error:{code:S,message:`Message too large (limit ${k} bytes)`}})):i.trim()&&e(i),n=o.indexOf(`
@@ -1,4 +1,5 @@
1
1
  import { c as SdkErrorCode, R as RetryOptions, d as RateLimiterOptions, C as CircuitBreakerOptions, P as ProviderName, a as ProviderRequestPolicy, S as SdkError } from './index-mlzPfoON.cjs';
2
+ import { b as ChipDistributionOptions, d as ChipDistributionItem } from './chip-BbA23rr1.cjs';
2
3
  import { n as MarketTz, v as TodayTimelineResponse, I as IndicatorOptions, H as HistoryKline, s as MinuteTimeline, t as MinuteKline, w as HKHistoryKline, y as HKMinuteTimeline, x as HKMinuteKline, U as USHistoryKline, E as USMinuteTimeline, z as USMinuteKline, K as KlineWithIndicators, A as AnyHistoryKline } from './addIndicators-_V3HEi0q.cjs';
3
4
 
4
5
  interface HostHealthState {
@@ -1102,13 +1103,95 @@ interface StockChangeItem {
1102
1103
  code: string;
1103
1104
  /** 股票名称 */
1104
1105
  name: string;
1105
- /** 异动类型 */
1106
- changeType: StockChangeType;
1107
- /** 异动类型对应的中文标签 */
1106
+ /** 异动类型(由响应 t 码反查;服务端新增的未知码为 'unknown',原始码见 typeCode) */
1107
+ changeType: StockChangeType | 'unknown';
1108
+ /** 原始类型码(服务端 t 字段) */
1109
+ typeCode: string;
1110
+ /** 异动类型对应的中文标签(未知码为空串) */
1108
1111
  changeTypeLabel: string;
1109
1112
  /** 相关信息(来自原始接口) */
1110
1113
  info: string;
1111
1114
  }
1115
+ /**
1116
+ * 个股盘口异动事件(个股按日接口,字段比全市场接口更丰富)
1117
+ */
1118
+ interface IndividualStockChangeItem {
1119
+ /** 发生时间 HH:MM:SS */
1120
+ time: string;
1121
+ /** 原始类型码(个股接口会返回 22 类之外的码,如 8219) */
1122
+ typeCode: string;
1123
+ /** 异动类型(未知码为 'unknown') */
1124
+ changeType: StockChangeType | 'unknown';
1125
+ /** 中文标签(未知码为空串) */
1126
+ changeTypeLabel: string;
1127
+ /** 触发价(元) */
1128
+ price: number | null;
1129
+ /** 触发时涨跌幅(%) */
1130
+ changePercent: number | null;
1131
+ /** 相关信息(来自原始接口,CSV 格式因类型而异) */
1132
+ info: string;
1133
+ /** 上游未文档化字段(疑似异动量级),原样透传 */
1134
+ v: number | null;
1135
+ }
1136
+ /**
1137
+ * 个股单个交易日的异动数据
1138
+ */
1139
+ interface IndividualChangesDay {
1140
+ /** 交易日 YYYY-MM-DD */
1141
+ date: string;
1142
+ /**
1143
+ * 服务端该交易日是否有数据。false = 无数据(changes 恒为空),与
1144
+ * "当日无异动"(true + 空数组)区分。
1145
+ *
1146
+ * 注意:服务端仅保留约最近数周(实测 1 个月左右),且窗口**不保证连续**
1147
+ * ——实测存在个别日期空洞(更早的日期反而有数据)。永远以逐日返回的
1148
+ * available 为准,不要按固定天数推断。
1149
+ */
1150
+ available: boolean;
1151
+ /** 股票代码 */
1152
+ code: string;
1153
+ /** 股票名称(超窗时为空串) */
1154
+ name: string;
1155
+ /** 异动事件流(服务端顺序,最新在前) */
1156
+ changes: IndividualStockChangeItem[];
1157
+ }
1158
+ /**
1159
+ * 单个异动类型的计数(IndividualChangesHistory.stats 的值)
1160
+ */
1161
+ interface ChangeTypeCount {
1162
+ /** 出现次数 */
1163
+ count: number;
1164
+ /** 中文标签(未知类型码为空串) */
1165
+ label: string;
1166
+ }
1167
+ /**
1168
+ * 个股近 N 天异动历史(逐交易日聚合)
1169
+ */
1170
+ interface IndividualChangesHistory {
1171
+ /** 股票代码 */
1172
+ code: string;
1173
+ /** 股票名称 */
1174
+ name: string;
1175
+ /** 请求的自然日跨度 */
1176
+ requestedDays: number;
1177
+ /** 实际覆盖情况 */
1178
+ coverage: {
1179
+ /** 请求窗口起点(自然日)YYYY-MM-DD */
1180
+ from: string;
1181
+ /** 请求窗口终点(北京时间今天)YYYY-MM-DD */
1182
+ to: string;
1183
+ /** 窗口内首个有数据的交易日(其后仍可能有个别空洞日);全部无数据时为 null */
1184
+ availableFrom: string | null;
1185
+ };
1186
+ /** 逐交易日数据(按日期升序;available=false 表示服务端该日无数据) */
1187
+ days: IndividualChangesDay[];
1188
+ /**
1189
+ * 异动类型计数概览(仅统计 available 日)。
1190
+ * key 为**原始类型码**(typeCode,稳定、可跨会话程序化比较),
1191
+ * 中文标签见值内 label(未知码为空串)。
1192
+ */
1193
+ stats: Record<string, ChangeTypeCount>;
1194
+ }
1112
1195
  /**
1113
1196
  * 板块异动项
1114
1197
  */
@@ -2276,6 +2359,42 @@ interface KlineWithIndicatorsOptions {
2276
2359
  indicators?: IndicatorOptions;
2277
2360
  }
2278
2361
 
2362
+ /**
2363
+ * 筹码分布 Service:拉取对应市场日 K 线(含暖机段)→ 本地计算 → 裁剪返回。
2364
+ * 计算本体在 `src/indicators/chip.ts`(纯函数,零网络),本 service 只做编排。
2365
+ */
2366
+
2367
+ /** `chips.cn / hk / us` 的请求参数 */
2368
+ interface ChipDistributionRequestOptions extends Pick<ChipDistributionOptions, 'range' | 'includeHistogram' | 'decimals'> {
2369
+ /**
2370
+ * 返回最近多少个交易日的筹码分布序列。
2371
+ * @default 90
2372
+ */
2373
+ days?: number;
2374
+ /**
2375
+ * 复权方式(与对应市场 `kline.*` 一致,默认 `'qfq'` 前复权)。
2376
+ * 分布数值随复权口径变化;需对齐 akshare `stock_cyq_em` 默认输出时传 `''`。
2377
+ * @default 'qfq'
2378
+ */
2379
+ adjust?: '' | 'qfq' | 'hfq';
2380
+ }
2381
+
2382
+ /** `marketEvent.individualChanges` 的请求参数 */
2383
+ interface IndividualChangesOptions {
2384
+ /** 交易日 YYYYMMDD 或 YYYY-MM-DD;不传为北京时间今天 */
2385
+ date?: string;
2386
+ }
2387
+ /** `marketEvent.individualChangesHistory` 的请求参数 */
2388
+ interface IndividualChangesHistoryOptions {
2389
+ /**
2390
+ * 最近 N 个自然日(1~60)。内部按 A 股交易日历枚举其中的交易日逐日请求。
2391
+ * 注意服务端仅保留约最近数周(且可能存在个别日期空洞),
2392
+ * 无数据的日期返回 available: false。
2393
+ * @default 7
2394
+ */
2395
+ days?: number;
2396
+ }
2397
+
2279
2398
  /**
2280
2399
  * 交易日历 / 市场状态工具
2281
2400
  *
@@ -2356,6 +2475,7 @@ declare class StockSDK {
2356
2475
  private readonly futuresService;
2357
2476
  private readonly optionsService;
2358
2477
  private readonly indicatorService;
2478
+ private readonly chipService;
2359
2479
  private readonly fundFlowService;
2360
2480
  private readonly northboundService;
2361
2481
  private readonly marketEventService;
@@ -2410,6 +2530,12 @@ declare class StockSDK {
2410
2530
  usMinute: (symbol: string, options?: USMinuteKlineOptions) => Promise<USMinuteTimeline[] | USMinuteKline[]>;
2411
2531
  withIndicators: (symbol: string, options?: KlineWithIndicatorsOptions) => Promise<KlineWithIndicators<AnyHistoryKline>[]>;
2412
2532
  };
2533
+ /** 筹码分布(A 股 / 港股 / 美股,基于日 K + 换手率本地计算) */
2534
+ get chips(): {
2535
+ cn: (symbol: string, options?: ChipDistributionRequestOptions) => Promise<ChipDistributionItem[]>;
2536
+ hk: (symbol: string, options?: ChipDistributionRequestOptions) => Promise<ChipDistributionItem[]>;
2537
+ us: (symbol: string, options?: ChipDistributionRequestOptions) => Promise<ChipDistributionItem[]>;
2538
+ };
2413
2539
  /** 板块(行业 / 概念) */
2414
2540
  get board(): {
2415
2541
  industry: {
@@ -2477,8 +2603,10 @@ declare class StockSDK {
2477
2603
  /** 涨停 / 盘口异动 */
2478
2604
  get marketEvent(): {
2479
2605
  ztPool: (type?: ZTPoolType, date?: string) => Promise<ZTPoolItem[]>;
2480
- stockChanges: (type?: StockChangeType) => Promise<StockChangeItem[]>;
2606
+ stockChanges: (type?: StockChangeType | StockChangeType[] | "all") => Promise<StockChangeItem[]>;
2481
2607
  boardChanges: () => Promise<BoardChangeItem[]>;
2608
+ individualChanges: (symbol: string, options?: IndividualChangesOptions) => Promise<IndividualStockChangeItem[]>;
2609
+ individualChangesHistory: (symbol: string, options?: IndividualChangesHistoryOptions) => Promise<IndividualChangesHistory>;
2482
2610
  };
2483
2611
  /** 龙虎榜 */
2484
2612
  get dragonTiger(): {
@@ -2527,4 +2655,4 @@ declare class StockSDK {
2527
2655
  search(keyword: string): Promise<SearchResult[]>;
2528
2656
  }
2529
2657
 
2530
- export { type ConceptBoard as $, type AShareMarket as A, type BlockTradeDateOptions as B, type ConceptBoardKlineOptions as C, type DragonTigerDateOptions as D, type ExternalLink as E, FundService as F, type GetAllAShareQuotesOptions as G, type HistoryKlineOptions as H, type IndustryBoardKlineOptions as I, type FundFlow as J, type HKQuote as K, type USQuote as L, type MarketType as M, type NorthboundHoldingRankOptions as N, type FundQuote as O, type PanelLargeOrder as P, type Quote as Q, type RequestClientOptions as R, StockSDK as S, TradingCalendarService as T, type USMarket as U, type IndustryBoard as V, type IndustryBoardSpot as W, type IndustryBoardConstituent as X, type IndustryBoardKline as Y, type IndustryBoardMinuteTimeline as Z, type IndustryBoardMinuteKline as _, RequestClient as a, type FundAssetAllocation as a$, type ConceptBoardSpot as a0, type ConceptBoardConstituent as a1, type ConceptBoardKline as a2, type ConceptBoardMinuteTimeline as a3, type ConceptBoardMinuteKline as a4, type FuturesExchange as a5, type FuturesKline as a6, type GlobalFuturesQuote as a7, type FuturesInventorySymbol as a8, type FuturesInventory as a9, type ZTPoolItem as aA, type StockChangeType as aB, type StockChangeItem as aC, type BoardChangeItem as aD, type DragonTigerPeriod as aE, type DragonTigerDetailItem as aF, type DragonTigerStockStatItem as aG, type DragonTigerInstitutionItem as aH, type DragonTigerBranchItem as aI, type DragonTigerSeatItem as aJ, type BlockTradeMarketStatItem as aK, type BlockTradeDetailItem as aL, type BlockTradeDailyStatItem as aM, type MarginAccountItem as aN, type MarginTargetItem as aO, type FundDividendRank as aP, type FundSortDirection as aQ, type FundDividendListOptions as aR, type FundDividend as aS, type FundDividendListResult as aT, type FundNavPoint as aU, type FundNavHistory as aV, type FundEstimate as aW, type FundRankPoint as aX, type FundRankHistory as aY, type FundHolding as aZ, type FundBondHolding as a_, type ComexInventory as aa, type IndexOptionProduct as ab, type OptionTQuote as ac, type OptionTQuoteResult as ad, type OptionKline as ae, type OptionMinute as af, type ETFOptionMonth as ag, type ETFOptionExpireDay as ah, type ETFOptionCate as ai, type CFFEXOptionQuote as aj, type OptionLHBItem as ak, type SearchResultType as al, type DividendDetail as am, type StockFundFlowDaily as an, type FundFlowRankItem as ao, type SectorFundFlowItem as ap, type MarketFundFlow as aq, type NorthboundDirection as ar, type NorthboundMarket as as, type NorthboundRankPeriod as at, type NorthboundMinuteItem as au, type NorthboundFlowSummary as av, type NorthboundHoldingRankItem as aw, type NorthboundHistoryItem as ax, type NorthboundIndividualItem as ay, type ZTPoolType as az, type SearchResult as b, type FundPositionPoint as b0, type FundManager as b1, type FundPerformanceEvaluation as b2, type FundHolderStructure as b3, type FundScaleChange as b4, type FundBuySedemption as b5, type FundStageReturns as b6, type FundSameTypePeer as b7, type FundSameType as b8, type ThemeFundSort as b9, type ThemeFundOrder as ba, type ThemeCategory as bb, type GetThemeListOptions as bc, type GetHotThemesOptions as bd, type ThemeFundRankSort as be, type GetThemeFundsOptions as bf, type ThemeFund as bg, type ThemeFundListResult as bh, type HotThemesResult as bi, type ThemeFundItem as bj, type ThemeFundItemList as bk, type GetAShareCodeListOptions as c, type GetUSCodeListOptions as d, type GetAllUSQuotesOptions as e, type MarketStatus as f, type SupportedMarket as g, type FundProfile as h, type MinuteKlineOptions as i, type HKKlineOptions as j, type HKMinuteKlineOptions as k, type USKlineOptions as l, type USMinuteKlineOptions as m, type IndustryBoardMinuteKlineOptions as n, type ConceptBoardMinuteKlineOptions as o, type FuturesKlineOptions as p, type GlobalFuturesSpotOptions as q, type GlobalFuturesKlineOptions as r, type FuturesInventoryOptions as s, type ComexInventoryOptions as t, type CFFEXOptionQuotesOptions as u, type FundFlowOptions as v, type FundFlowRankOptions as w, type NorthboundHistoryOptions as x, type FullQuote as y, type SimpleQuote as z };
2658
+ export { type IndustryBoardKline as $, type AShareMarket as A, type NorthboundHistoryOptions as B, type ChipDistributionRequestOptions as C, type BlockTradeDateOptions as D, type ExternalLink as E, FundService as F, type GetAllAShareQuotesOptions as G, type HistoryKlineOptions as H, type IndividualChangesOptions as I, type DragonTigerDateOptions as J, type FullQuote as K, type SimpleQuote as L, type MarketType as M, type NorthboundHoldingRankOptions as N, type FundFlow as O, type PanelLargeOrder as P, type HKQuote as Q, type RequestClientOptions as R, StockSDK as S, TradingCalendarService as T, type USMarket as U, type USQuote as V, type FundQuote as W, type Quote as X, type IndustryBoard as Y, type IndustryBoardSpot as Z, type IndustryBoardConstituent as _, RequestClient as a, type FundNavPoint as a$, type IndustryBoardMinuteTimeline as a0, type IndustryBoardMinuteKline as a1, type ConceptBoard as a2, type ConceptBoardSpot as a3, type ConceptBoardConstituent as a4, type ConceptBoardKline as a5, type ConceptBoardMinuteTimeline as a6, type ConceptBoardMinuteKline as a7, type FuturesExchange as a8, type FuturesKline as a9, type NorthboundHistoryItem as aA, type NorthboundIndividualItem as aB, type ZTPoolType as aC, type ZTPoolItem as aD, type StockChangeType as aE, type StockChangeItem as aF, type IndividualStockChangeItem as aG, type IndividualChangesDay as aH, type ChangeTypeCount as aI, type IndividualChangesHistory as aJ, type BoardChangeItem as aK, type DragonTigerPeriod as aL, type DragonTigerDetailItem as aM, type DragonTigerStockStatItem as aN, type DragonTigerInstitutionItem as aO, type DragonTigerBranchItem as aP, type DragonTigerSeatItem as aQ, type BlockTradeMarketStatItem as aR, type BlockTradeDetailItem as aS, type BlockTradeDailyStatItem as aT, type MarginAccountItem as aU, type MarginTargetItem as aV, type FundDividendRank as aW, type FundSortDirection as aX, type FundDividendListOptions as aY, type FundDividend as aZ, type FundDividendListResult as a_, type GlobalFuturesQuote as aa, type FuturesInventorySymbol as ab, type FuturesInventory as ac, type ComexInventory as ad, type IndexOptionProduct as ae, type OptionTQuote as af, type OptionTQuoteResult as ag, type OptionKline as ah, type OptionMinute as ai, type ETFOptionMonth as aj, type ETFOptionExpireDay as ak, type ETFOptionCate as al, type CFFEXOptionQuote as am, type OptionLHBItem as an, type SearchResultType as ao, type DividendDetail as ap, type StockFundFlowDaily as aq, type FundFlowRankItem as ar, type SectorFundFlowItem as as, type MarketFundFlow as at, type NorthboundDirection as au, type NorthboundMarket as av, type NorthboundRankPeriod as aw, type NorthboundMinuteItem as ax, type NorthboundFlowSummary as ay, type NorthboundHoldingRankItem as az, type SearchResult as b, type FundNavHistory as b0, type FundEstimate as b1, type FundRankPoint as b2, type FundRankHistory as b3, type FundHolding as b4, type FundBondHolding as b5, type FundAssetAllocation as b6, type FundPositionPoint as b7, type FundManager as b8, type FundPerformanceEvaluation as b9, type FundHolderStructure as ba, type FundScaleChange as bb, type FundBuySedemption as bc, type FundStageReturns as bd, type FundSameTypePeer as be, type FundSameType as bf, type ThemeFundSort as bg, type ThemeFundOrder as bh, type ThemeCategory as bi, type GetThemeListOptions as bj, type GetHotThemesOptions as bk, type ThemeFundRankSort as bl, type GetThemeFundsOptions as bm, type ThemeFund as bn, type ThemeFundListResult as bo, type HotThemesResult as bp, type ThemeFundItem as bq, type ThemeFundItemList as br, type IndividualChangesHistoryOptions as c, type GetAShareCodeListOptions as d, type GetUSCodeListOptions as e, type GetAllUSQuotesOptions as f, type MarketStatus as g, type SupportedMarket as h, type FundProfile as i, type MinuteKlineOptions as j, type HKKlineOptions as k, type HKMinuteKlineOptions as l, type USKlineOptions as m, type USMinuteKlineOptions as n, type IndustryBoardKlineOptions as o, type IndustryBoardMinuteKlineOptions as p, type ConceptBoardKlineOptions as q, type ConceptBoardMinuteKlineOptions as r, type FuturesKlineOptions as s, type GlobalFuturesSpotOptions as t, type GlobalFuturesKlineOptions as u, type FuturesInventoryOptions as v, type ComexInventoryOptions as w, type CFFEXOptionQuotesOptions as x, type FundFlowOptions as y, type FundFlowRankOptions as z };