transone 0.4.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +9 -0
  2. package/README.zh-CN.md +10 -0
  3. package/dist/core/app.d.ts +3 -3
  4. package/dist/core/component/base-component.d.ts +5 -0
  5. package/dist/core/component/base.d.ts +3 -0
  6. package/dist/core/component/index.d.ts +3 -2
  7. package/dist/core/index.d.ts +1 -0
  8. package/dist/core/vnode.d.ts +4 -4
  9. package/dist/index-5dxcnfw6.js +12 -0
  10. package/dist/{index-rmgr0qs2.js.map → index-5dxcnfw6.js.map} +9 -8
  11. package/dist/index-dse0chhf.js +5 -0
  12. package/dist/index-dse0chhf.js.map +10 -0
  13. package/dist/index-fxpn7qkh.js +4 -0
  14. package/dist/index-fxpn7qkh.js.map +11 -0
  15. package/dist/{index-xp7y2crt.js → index-jq6fv0br.js} +4 -4
  16. package/dist/{index-xp7y2crt.js.map → index-jq6fv0br.js.map} +3 -3
  17. package/dist/{index-qmpx307q.js → index-ryj080w6.js} +3 -3
  18. package/dist/{index-qmpx307q.js.map → index-ryj080w6.js.map} +1 -1
  19. package/dist/index.d.ts +2 -1
  20. package/dist/index.js +2 -2
  21. package/dist/index.js.map +3 -3
  22. package/dist/platform/bindings.d.ts +3 -0
  23. package/dist/platform/decorators.d.ts +15 -0
  24. package/dist/platform/definitions.d.ts +32 -0
  25. package/dist/platform/index.d.ts +3 -0
  26. package/dist/platform/index.js +4 -0
  27. package/dist/platform/index.js.map +9 -0
  28. package/dist/request/index.js +2 -2
  29. package/dist/request/index.js.map +1 -1
  30. package/dist/router/index.d.ts +2 -2
  31. package/dist/router/index.js +2 -2
  32. package/dist/router/index.js.map +1 -1
  33. package/dist/style/index.js +2 -2
  34. package/dist/style/index.js.map +1 -1
  35. package/package.json +5 -1
  36. package/dist/index-rmgr0qs2.js +0 -12
@@ -0,0 +1,5 @@
1
+ var i=new Map;function m(r){let p=r.map(([n,s])=>{let e={implementation:s},o=i.get(n)??[];return o.push(e),i.set(n,o),{reference:n,layer:e}}),t=!1;return()=>{if(t)return;t=!0;for(let{reference:n,layer:s}of p){let e=i.get(n);if(!e)continue;let o=e.indexOf(s);if(o!==-1)e.splice(o,1);if(e.length===0)i.delete(n)}}}function a(r,p){let t=i.get(r);return new(t?.[t.length-1]?.implementation??r)(p)}
2
+ export{m as fb,a as gb};
3
+
4
+ //# debugId=8AE88D86C79951E064756E2164756E21
5
+ //# sourceMappingURL=index-dse0chhf.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../lib/platform/bindings.ts"],
4
+ "sourcesContent": [
5
+ "import type {\n Component,\n ComponentConstructor,\n ComponentReference,\n ComponentProps,\n ComponentState,\n} from '../core/component/base';\n\ninterface BindingLayer {\n implementation: Function;\n}\n\n// Deliberately module-local: each generated application/SSR bundle owns its bindings.\nconst bindings = new Map<Function, BindingLayer[]>();\n\nexport function bindComponentImplementations(\n pairs: readonly (readonly [Function, Function])[]\n): () => void {\n const installed = pairs.map(([reference, implementation]) => {\n const layer = { implementation };\n const layers = bindings.get(reference) ?? [];\n layers.push(layer);\n bindings.set(reference, layers);\n return { reference, layer };\n });\n let restored = false;\n return () => {\n if (restored) return;\n restored = true;\n for (const { reference, layer } of installed) {\n const layers = bindings.get(reference);\n if (!layers) continue;\n const index = layers.indexOf(layer);\n if (index !== -1) layers.splice(index, 1);\n if (layers.length === 0) bindings.delete(reference);\n }\n };\n}\n\nexport function createComponentInstance<\n P extends ComponentProps = ComponentProps,\n S extends ComponentState = ComponentState,\n>(reference: ComponentReference<P, S>, props?: P): Component<P, S> {\n // Exact identity only; never follow inheritance or rebind an explicit implementation.\n const layers = bindings.get(reference);\n const implementation = (layers?.[layers.length - 1]?.implementation ??\n reference) as ComponentConstructor<P, S>;\n return new implementation(props);\n}\n"
6
+ ],
7
+ "mappings": "AAaA,IAAM,EAAW,IAAI,IAEd,SAAS,CAA4B,CAC1C,EACY,CACZ,IAAM,EAAY,EAAM,IAAI,EAAE,EAAW,KAAoB,CAC3D,IAAM,EAAQ,CAAE,gBAAe,EACzB,EAAS,EAAS,IAAI,CAAS,GAAK,CAAC,EAG3C,OAFA,EAAO,KAAK,CAAK,EACjB,EAAS,IAAI,EAAW,CAAM,EACvB,CAAE,YAAW,OAAM,EAC3B,EACG,EAAW,GACf,MAAO,IAAM,CACX,GAAI,EAAU,OACd,EAAW,GACX,QAAa,YAAW,WAAW,EAAW,CAC5C,IAAM,EAAS,EAAS,IAAI,CAAS,EACrC,GAAI,CAAC,EAAQ,SACb,IAAM,EAAQ,EAAO,QAAQ,CAAK,EAClC,GAAI,IAAU,GAAI,EAAO,OAAO,EAAO,CAAC,EACxC,GAAI,EAAO,SAAW,EAAG,EAAS,OAAO,CAAS,IAKjD,SAAS,CAGf,CAAC,EAAqC,EAA4B,CAEjE,IAAM,EAAS,EAAS,IAAI,CAAS,EAGrC,OAAO,IAFiB,IAAS,EAAO,OAAS,IAAI,gBACnD,GACwB,CAAK",
8
+ "debugId": "8AE88D86C79951E064756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var e;((a)=>{a.Web="web";a.WebMobile="web-mobile";a.WebPc="web-pc";a.MiniprogramWeixin="miniprogram-weixin";a.MiniprogramAlipay="miniprogram-alipay";a.MiniprogramBytedance="miniprogram-bytedance";a.MiniprogramXiaohongshu="miniprogram-xiaohongshu";a.AppIos="app-ios";a.AppAndroid="app-android";a.AppHarmony="app-harmony"})(e||={});var p=[{platform:"web",decorator:"Web",family:"web",target:"web"},{platform:"web-mobile",decorator:"WebMobile",family:"web",target:"web"},{platform:"web-pc",decorator:"WebPc",family:"web",target:"web"},{platform:"miniprogram-weixin",decorator:"MiniprogramWeixin",family:"miniprogram",target:"mp-weixin"},{platform:"miniprogram-alipay",decorator:"MiniprogramAlipay",family:"miniprogram",target:"mp-alipay"},{platform:"miniprogram-bytedance",decorator:"MiniprogramBytedance",family:"miniprogram",target:"mp-bytedance"},{platform:"miniprogram-xiaohongshu",decorator:"MiniprogramXiaohongshu",family:"miniprogram",target:"mp-xiaohongshu"},{platform:"app-ios",decorator:"AppIos",family:"app",target:"app-ios"},{platform:"app-android",decorator:"AppAndroid",family:"app",target:"app-android"},{platform:"app-harmony",decorator:"AppHarmony",family:"app",target:"app-harmony"}],n=[...p.map(({platform:o,decorator:t})=>({platform:o,decorator:t})),{platform:"miniprogram",decorator:"Miniprogram"},{platform:"app",decorator:"App"}];function m(o){if(typeof o!=="string")return;return p.find((t)=>t.platform===o)?.platform??p.find((t)=>t.target===o)?.platform}function f(o){let t=p.find((i)=>i.platform===o);if(!t)throw Error(`Unknown platform: ${String(o)}`);return t}function r(){return(o,t)=>o}var g=r,c=r,d=r,y=r,x=r,s=r,b=r,M=r,A=r,P=r,w=r,h=r;export{e as Qa,p as Ra,n as Sa,m as Ta,f as Ua,g as Va,c as Wa,d as Xa,y as Ya,x as Za,s as _a,b as $a,M as ab,A as bb,P as cb,w as db,h as eb};
2
+
3
+ //# debugId=93F4DFD0EEFD15BF64756E2164756E21
4
+ //# sourceMappingURL=index-fxpn7qkh.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../lib/platform/definitions.ts", "../lib/platform/decorators.ts"],
4
+ "sourcesContent": [
5
+ "/** Application platform, independent of the generator backend. */\nexport enum Platform {\n Web = 'web',\n WebMobile = 'web-mobile',\n WebPc = 'web-pc',\n MiniprogramWeixin = 'miniprogram-weixin',\n MiniprogramAlipay = 'miniprogram-alipay',\n MiniprogramBytedance = 'miniprogram-bytedance',\n MiniprogramXiaohongshu = 'miniprogram-xiaohongshu',\n AppIos = 'app-ios',\n AppAndroid = 'app-android',\n AppHarmony = 'app-harmony',\n}\n\nexport type PlatformName = `${Platform}`;\nexport type PlatformFamily = 'web' | 'miniprogram' | 'app';\n/** Component markers may identify a concrete platform or its shared family. */\nexport type ComponentPlatform = Platform | PlatformFamily;\nexport type BackendTarget =\n | 'web'\n | 'mp-weixin'\n | 'mp-alipay'\n | 'mp-bytedance'\n | 'mp-xiaohongshu'\n | 'app-ios'\n | 'app-android'\n | 'app-harmony';\n\nexport interface PlatformDefinition {\n platform: Platform;\n decorator: string;\n family: PlatformFamily;\n target: BackendTarget;\n}\n\nexport const PLATFORM_DEFINITIONS: readonly PlatformDefinition[] = [\n { platform: Platform.Web, decorator: 'Web', family: 'web', target: 'web' },\n {\n platform: Platform.WebMobile,\n decorator: 'WebMobile',\n family: 'web',\n target: 'web',\n },\n {\n platform: Platform.WebPc,\n decorator: 'WebPc',\n family: 'web',\n target: 'web',\n },\n {\n platform: Platform.MiniprogramWeixin,\n decorator: 'MiniprogramWeixin',\n family: 'miniprogram',\n target: 'mp-weixin',\n },\n {\n platform: Platform.MiniprogramAlipay,\n decorator: 'MiniprogramAlipay',\n family: 'miniprogram',\n target: 'mp-alipay',\n },\n {\n platform: Platform.MiniprogramBytedance,\n decorator: 'MiniprogramBytedance',\n family: 'miniprogram',\n target: 'mp-bytedance',\n },\n {\n platform: Platform.MiniprogramXiaohongshu,\n decorator: 'MiniprogramXiaohongshu',\n family: 'miniprogram',\n target: 'mp-xiaohongshu',\n },\n {\n platform: Platform.AppIos,\n decorator: 'AppIos',\n family: 'app',\n target: 'app-ios',\n },\n {\n platform: Platform.AppAndroid,\n decorator: 'AppAndroid',\n family: 'app',\n target: 'app-android',\n },\n {\n platform: Platform.AppHarmony,\n decorator: 'AppHarmony',\n family: 'app',\n target: 'app-harmony',\n },\n];\n\n/** Family markers do not select a concrete generator and are not build targets. */\nexport const COMPONENT_PLATFORM_DEFINITIONS: readonly {\n platform: ComponentPlatform;\n decorator: string;\n}[] = [\n ...PLATFORM_DEFINITIONS.map(({ platform, decorator }) => ({\n platform,\n decorator,\n })),\n { platform: 'miniprogram', decorator: 'Miniprogram' },\n { platform: 'app', decorator: 'App' },\n];\n\nexport function normalizePlatform(value: unknown): Platform | undefined {\n if (typeof value !== 'string') return undefined;\n return (\n PLATFORM_DEFINITIONS.find((definition) => definition.platform === value)\n ?.platform ??\n PLATFORM_DEFINITIONS.find((definition) => definition.target === value)\n ?.platform\n );\n}\n\nexport function getPlatformDefinition(value: Platform): PlatformDefinition {\n const definition = PLATFORM_DEFINITIONS.find(\n (definition) => definition.platform === value\n );\n if (!definition) throw new Error(`Unknown platform: ${String(value)}`);\n return definition;\n}\n",
6
+ "/** Compile-time markers. Return the same class and never register runtime targets. */\nfunction platformDecorator() {\n return <T extends abstract new (...args: any[]) => any>(\n value: T,\n _context: ClassDecoratorContext<T>\n ): T => value;\n}\n\nexport const Web = platformDecorator;\nexport const WebMobile = platformDecorator;\nexport const WebPc = platformDecorator;\nexport const Miniprogram = platformDecorator;\nexport const MiniprogramWeixin = platformDecorator;\nexport const MiniprogramAlipay = platformDecorator;\nexport const MiniprogramBytedance = platformDecorator;\nexport const MiniprogramXiaohongshu = platformDecorator;\nexport const App = platformDecorator;\nexport const AppIos = platformDecorator;\nexport const AppAndroid = platformDecorator;\nexport const AppHarmony = platformDecorator;\n"
7
+ ],
8
+ "mappings": "AACO,IAAK,GAAL,CAAK,IAAL,CACL,MAAM,MACN,YAAY,aACZ,QAAQ,SACR,oBAAoB,qBACpB,oBAAoB,qBACpB,uBAAuB,wBACvB,yBAAyB,0BACzB,SAAS,UACT,aAAa,cACb,aAAa,gBAVH,QAkCL,IAAM,EAAsD,CACjE,CAAE,SAAU,MAAc,UAAW,MAAO,OAAQ,MAAO,OAAQ,KAAM,EACzE,CACE,SAAU,aACV,UAAW,YACX,OAAQ,MACR,OAAQ,KACV,EACA,CACE,SAAU,SACV,UAAW,QACX,OAAQ,MACR,OAAQ,KACV,EACA,CACE,SAAU,qBACV,UAAW,oBACX,OAAQ,cACR,OAAQ,WACV,EACA,CACE,SAAU,qBACV,UAAW,oBACX,OAAQ,cACR,OAAQ,WACV,EACA,CACE,SAAU,wBACV,UAAW,uBACX,OAAQ,cACR,OAAQ,cACV,EACA,CACE,SAAU,0BACV,UAAW,yBACX,OAAQ,cACR,OAAQ,gBACV,EACA,CACE,SAAU,UACV,UAAW,SACX,OAAQ,MACR,OAAQ,SACV,EACA,CACE,SAAU,cACV,UAAW,aACX,OAAQ,MACR,OAAQ,aACV,EACA,CACE,SAAU,cACV,UAAW,aACX,OAAQ,MACR,OAAQ,aACV,CACF,EAGa,EAGP,CACJ,GAAG,EAAqB,IAAI,EAAG,WAAU,gBAAiB,CACxD,WACA,WACF,EAAE,EACF,CAAE,SAAU,cAAe,UAAW,aAAc,EACpD,CAAE,SAAU,MAAO,UAAW,KAAM,CACtC,EAEO,SAAS,CAAiB,CAAC,EAAsC,CACtE,GAAI,OAAO,IAAU,SAAU,OAC/B,OACE,EAAqB,KAAK,CAAC,IAAe,EAAW,WAAa,CAAK,GACnE,UACJ,EAAqB,KAAK,CAAC,IAAe,EAAW,SAAW,CAAK,GACjE,SAID,SAAS,CAAqB,CAAC,EAAqC,CACzE,IAAM,EAAa,EAAqB,KACtC,CAAC,IAAe,EAAW,WAAa,CAC1C,EACA,GAAI,CAAC,EAAY,MAAU,MAAM,qBAAqB,OAAO,CAAK,GAAG,EACrE,OAAO,ECxHT,SAAS,CAAiB,EAAG,CAC3B,MAAO,CACL,EACA,IACM,EAGH,IAAM,EAAM,EACN,EAAY,EACZ,EAAQ,EACR,EAAc,EACd,EAAoB,EACpB,EAAoB,EACpB,EAAuB,EACvB,EAAyB,EACzB,EAAM,EACN,EAAS,EACT,EAAa,EACb,EAAa",
9
+ "debugId": "93F4DFD0EEFD15BF64756E2164756E21",
10
+ "names": []
11
+ }
@@ -1,5 +1,5 @@
1
- class i extends Error{code;config;response;cause;constructor(e){super(e.message);this.name="RequestError",this.code=e.code,this.config=e.config,this.response=e.response,this.cause=e.cause}}function S(e){return e instanceof i}var F=new Set(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]);function g(e){if(e===void 0)return"GET";let t=e.toUpperCase();if(!F.has(t))throw Error(`Unsupported HTTP method: ${e}`);return t}var U=/^[a-z][a-z\d+.-]*:\/\//i;function N(e){return U.test(e)}function L(e,t){if(!e||N(t))return t;return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function O(e){if(e instanceof Date)return e.toISOString();if(typeof e==="object")return JSON.stringify(e);return String(e)}function j(e){if(!e)return"";let t=[];return Object.keys(e).forEach((r)=>{let s=e[r];if(s===void 0||s===null)return;let o=encodeURIComponent(r);if(Array.isArray(s)){s.forEach((n)=>{if(n===void 0||n===null)return;t.push(`${o}=${encodeURIComponent(O(n))}`)});return}t.push(`${o}=${encodeURIComponent(O(s))}`)}),t.join("&")}function T(e,t,r){let s=L(e,t),o=j(r);if(!o)return s;let n=s.includes("?")?"&":"?";return`${s}${n}${o}`}function v(e){if(e===void 0||e===null)return;return String(e)}function f(...e){let t={},r=new Map;return e.forEach((s)=>{if(!s)return;Object.keys(s).forEach((o)=>{let n=v(s[o]);if(n===void 0)return;let a=o.toLowerCase(),p=r.get(a);if(p!==void 0&&p!==o)delete t[p];r.set(a,o),t[o]=n})}),t}function _(e,t){return Object.keys(e).some((r)=>r.toLowerCase()===t.toLowerCase())}function D(e,t,r){if(r==="GET"||r==="HEAD")return;if(e===void 0||e===null)return;if(typeof e==="string")return e;if(typeof FormData<"u"&&e instanceof FormData)return e;if(typeof Blob<"u"&&e instanceof Blob)return e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e;if(!_(t,"Content-Type"))t["Content-Type"]="application/json";return JSON.stringify(e)}class P{platform="web";async request(e){let t=g(e.method),r=T(e.baseURL,e.url,e.params),s=f(e.headers),o=D(e.data,s,t),n=new AbortController,a=!1,p=!1,l;if(e.signal)if(e.signal.aborted)p=!0,n.abort();else e.signal.addEventListener("abort",()=>{p=!0,n.abort()},{once:!0});if(typeof e.timeout==="number"&&e.timeout>0)l=setTimeout(()=>{a=!0,n.abort()},e.timeout);let q=e.credentials??(e.withCredentials===!0?"include":"same-origin");try{let d=await fetch(r,{method:t,headers:s,body:o,signal:n.signal,credentials:q}),u={};return d.headers.forEach((E,b)=>{u[b]=E}),{data:await B(d,e),statusCode:d.status,statusText:d.statusText,headers:u,config:e}}catch(d){if(a)throw new i({code:"TIMEOUT",message:`Request timeout after ${String(e.timeout)}ms`,config:e,cause:d});if(p||n.signal.aborted)throw new i({code:"ABORTED",message:"Request aborted",config:e,cause:d});throw new i({code:"NETWORK_ERROR",message:d instanceof Error?d.message:String(d),config:e,cause:d})}finally{if(l!==void 0)clearTimeout(l)}}}async function B(e,t){if(t.responseType==="arraybuffer")return e.arrayBuffer();let r=await e.text();if(t.dataType==="text"||!r)return r;try{return JSON.parse(r)}catch{return r}}function z(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof global<"u")return global;return{}}function C(e){let t=z()[e];return typeof t==="object"&&t!==null?t:null}function y(){if(A("wx"))return"weixin";if(A("my"))return"alipay";if(A("tt"))return"bytedance";if(typeof fetch==="function")return"web";return"unknown"}function A(e){let t=C(e);return t!==null&&typeof t.request==="function"}var M={platform:"weixin",globalName:"wx",headerField:"header",statusField:"statusCode",responseHeaderField:"header"},H={platform:"alipay",globalName:"my",headerField:"headers",statusField:"status",responseHeaderField:"headers"},k={platform:"bytedance",globalName:"tt",headerField:"header",statusField:"statusCode",responseHeaderField:"header"};class m{dialect;platform;constructor(e){this.dialect=e;this.platform=e.platform}request(e){let t=C(this.dialect.globalName);if(!t||typeof t.request!=="function")return Promise.reject(new i({code:"UNSUPPORTED_PLATFORM",message:`${this.dialect.globalName}.request is not available in current environment`,config:e}));let r=t.request;return new Promise((s,o)=>{let n=!1,a=!1,p,l,q=(u)=>{if(a)return;if(a=!0,l!==void 0)clearTimeout(l);u()},d={url:T(e.baseURL,e.url,e.params),method:e.method??"GET",data:e.data,[this.dialect.headerField]:V(e.headers),dataType:e.dataType??"json",...e.responseType!==void 0?{responseType:e.responseType}:{},...e.timeout!==void 0&&e.timeout>0?{timeout:e.timeout}:{},success:(u)=>{q(()=>{let c=u[this.dialect.statusField],E=Number(c??u.statusCode??0),b=K(u[this.dialect.responseHeaderField]);s({data:u.data,statusCode:E,headers:b,config:e,...Array.isArray(u.cookies)?{cookies:u.cookies}:{},...typeof u.errMsg==="string"?{errMsg:u.errMsg}:{}})})},fail:(u)=>{q(()=>{let c=W(u);o(new i({code:n?"TIMEOUT":G(c),message:c||"Network request failed",config:e,cause:u}))})}};if(e.timeout!==void 0&&e.timeout>0)l=setTimeout(()=>{n=!0,p?.abort?.()},e.timeout);if(p=r(d)??void 0,e.signal)if(e.signal.aborted)p?.abort?.();else e.signal.addEventListener("abort",()=>{p?.abort?.()},{once:!0})})}}function V(e){return f(e)}function K(e){if(typeof e!=="object"||e===null)return{};let t={};return Object.keys(e).forEach((r)=>{let s=e[r];if(s!==void 0&&s!==null)t[r]=String(s)}),t}function W(e){if(typeof e.errMsg==="string")return e.errMsg;if(typeof e.errorMessage==="string")return e.errorMessage;if(typeof e.error==="string")return e.error;return""}function G(e){if(!e)return"UNKNOWN";if(/timeout/i.test(e))return"TIMEOUT";if(/abort/i.test(e))return"ABORTED";return"NETWORK_ERROR"}var I={web:new P,weixin:new m(M),alipay:new m(H),bytedance:new m(k)};function w(e){let t=I[e];if(!t)throw new i({code:"UNSUPPORTED_PLATFORM",message:`Unsupported request platform: ${String(e)}`,config:{url:""}});return t}async function x(e,t,r){if(e.platform!==void 0&&e.platform!=="auto")return w(e.platform);if(t!==void 0)return typeof t==="function"?await t(e):t;if(r!==void 0&&r!=="auto")return w(r);let s=y();if(s==="unknown")throw new i({code:"UNSUPPORTED_PLATFORM",message:"No supported request platform detected (web fetch / wx.request / my.request / tt.request)",config:e});return w(s)}class R{handlers=[];use(e,t){return this.handlers.push({onFulfilled:e,onRejected:t}),this.handlers.length-1}eject(e){if(this.handlers[e]!==void 0)this.handlers[e]=null}clear(){this.handlers.length=0}forEach(e){this.handlers.forEach((t,r)=>{if(t!==null)e(t,r)})}}class h{interceptors={request:new R,response:new R};instanceDefaults;instanceAdapter;instancePlatform;constructor(e={}){let{adapter:t,platform:r,...s}=e;this.instanceAdapter=t,this.instancePlatform=r,this.instanceDefaults={...s}}request(e){let t;try{t=this.mergeConfig(e)}catch(n){return Promise.reject(n)}let r=[];this.interceptors.request.forEach((n)=>{r.push(n.onFulfilled,n.onRejected)}),r.push((n)=>this.dispatch(n),void 0);let s=[];this.interceptors.response.forEach((n)=>{s.push({onFulfilled:n.onFulfilled,onRejected:n.onRejected})});for(let n=s.length-1;n>=0;n-=1){let a=s[n];r.push(a.onFulfilled,a.onRejected)}let o=Promise.resolve(t);while(r.length>0){let n=r.shift(),a=r.shift();o=o.then(n,a)}return o}get(e,t){return this.request({...t,url:e,method:"GET"})}delete(e,t){return this.request({...t,url:e,method:"DELETE"})}head(e,t){return this.request({...t,url:e,method:"HEAD"})}options(e,t){return this.request({...t,url:e,method:"OPTIONS"})}post(e,t,r){return this.request({...r,url:e,method:"POST",data:t})}put(e,t,r){return this.request({...r,url:e,method:"PUT",data:t})}patch(e,t,r){return this.request({...r,url:e,method:"PATCH",data:t})}dispatch(e){return x(e,this.instanceAdapter,this.instancePlatform).then((t)=>t.request(e))}mergeConfig(e){if(!e||typeof e!=="object")throw new i({code:"BAD_REQUEST",message:"Request config must be an object",config:e});let t={...this.instanceDefaults,...e,headers:f(this.instanceDefaults.headers,e.headers),params:{...this.instanceDefaults.params,...e.params}};if(typeof t.url!=="string"||t.url.length===0)throw new i({code:"BAD_REQUEST",message:"Request url is required",config:t});try{t.method=g(t.method)}catch(r){throw new i({code:"BAD_REQUEST",message:r.message,config:t,cause:r})}return t}}function ge(e={}){return new h(e)}var Te=new h;
2
- export{i as Fa,S as Ga,y as Ha,I as Ia,w as Ja,x as Ka,R as La,h as Ma,ge as Na,Te as Oa};
1
+ class i extends Error{code;config;response;cause;constructor(e){super(e.message);this.name="RequestError",this.code=e.code,this.config=e.config,this.response=e.response,this.cause=e.cause}}function S(e){return e instanceof i}var U=new Set(["GET","POST","PUT","DELETE","PATCH","HEAD","OPTIONS"]);function q(e){if(e===void 0)return"GET";let t=e.toUpperCase();if(!U.has(t))throw Error(`Unsupported HTTP method: ${e}`);return t}var F=/^[a-z][a-z\d+.-]*:\/\//i;function N(e){return F.test(e)}function L(e,t){if(!e||N(t))return t;return`${e.replace(/\/+$/,"")}/${t.replace(/^\/+/,"")}`}function O(e){if(e instanceof Date)return e.toISOString();if(typeof e==="object")return JSON.stringify(e);return String(e)}function j(e){if(!e)return"";let t=[];return Object.keys(e).forEach((r)=>{let n=e[r];if(n===void 0||n===null)return;let o=encodeURIComponent(r);if(Array.isArray(n)){n.forEach((s)=>{if(s===void 0||s===null)return;t.push(`${o}=${encodeURIComponent(O(s))}`)});return}t.push(`${o}=${encodeURIComponent(O(n))}`)}),t.join("&")}function T(e,t,r){let n=L(e,t),o=j(r);if(!o)return n;let s=n.includes("?")?"&":"?";return`${n}${s}${o}`}function _(e){if(e===void 0||e===null)return;return String(e)}function f(...e){let t={},r=new Map;return e.forEach((n)=>{if(!n)return;Object.keys(n).forEach((o)=>{let s=_(n[o]);if(s===void 0)return;let a=o.toLowerCase(),p=r.get(a);if(p!==void 0&&p!==o)delete t[p];r.set(a,o),t[o]=s})}),t}function v(e,t){return Object.keys(e).some((r)=>r.toLowerCase()===t.toLowerCase())}function D(e,t,r){if(r==="GET"||r==="HEAD")return;if(e===void 0||e===null)return;if(typeof e==="string")return e;if(typeof FormData<"u"&&e instanceof FormData)return e;if(typeof Blob<"u"&&e instanceof Blob)return e;if(e instanceof ArrayBuffer||ArrayBuffer.isView(e))return e;if(!v(t,"Content-Type"))t["Content-Type"]="application/json";return JSON.stringify(e)}class A{platform="web";async request(e){let t=q(e.method),r=T(e.baseURL,e.url,e.params),n=f(e.headers),o=D(e.data,n,t),s=new AbortController,a=!1,p=!1,l;if(e.signal)if(e.signal.aborted)p=!0,s.abort();else e.signal.addEventListener("abort",()=>{p=!0,s.abort()},{once:!0});if(typeof e.timeout==="number"&&e.timeout>0)l=setTimeout(()=>{a=!0,s.abort()},e.timeout);let g=e.credentials??(e.withCredentials===!0?"include":"same-origin");try{let d=await fetch(r,{method:t,headers:n,body:o,signal:s.signal,credentials:g}),u={};return d.headers.forEach((E,b)=>{u[b]=E}),{data:await B(d,e),statusCode:d.status,statusText:d.statusText,headers:u,config:e}}catch(d){if(a)throw new i({code:"TIMEOUT",message:`Request timeout after ${String(e.timeout)}ms`,config:e,cause:d});if(p||s.signal.aborted)throw new i({code:"ABORTED",message:"Request aborted",config:e,cause:d});throw new i({code:"NETWORK_ERROR",message:d instanceof Error?d.message:String(d),config:e,cause:d})}finally{if(l!==void 0)clearTimeout(l)}}}async function B(e,t){if(t.responseType==="arraybuffer")return e.arrayBuffer();let r=await e.text();if(t.dataType==="text"||!r)return r;try{return JSON.parse(r)}catch{return r}}function z(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof global<"u")return global;return{}}function C(e){let t=z()[e];return typeof t==="object"&&t!==null?t:null}function y(){if(P("wx"))return"weixin";if(P("my"))return"alipay";if(P("tt"))return"bytedance";if(typeof fetch==="function")return"web";return"unknown"}function P(e){let t=C(e);return t!==null&&typeof t.request==="function"}var M={platform:"weixin",globalName:"wx",headerField:"header",statusField:"statusCode",responseHeaderField:"header"},H={platform:"alipay",globalName:"my",headerField:"headers",statusField:"status",responseHeaderField:"headers"},k={platform:"bytedance",globalName:"tt",headerField:"header",statusField:"statusCode",responseHeaderField:"header"};class m{dialect;platform;constructor(e){this.dialect=e;this.platform=e.platform}request(e){let t=C(this.dialect.globalName);if(!t||typeof t.request!=="function")return Promise.reject(new i({code:"UNSUPPORTED_PLATFORM",message:`${this.dialect.globalName}.request is not available in current environment`,config:e}));let r=t.request;return new Promise((n,o)=>{let s=!1,a=!1,p,l,g=(u)=>{if(a)return;if(a=!0,l!==void 0)clearTimeout(l);u()},d={url:T(e.baseURL,e.url,e.params),method:e.method??"GET",data:e.data,[this.dialect.headerField]:V(e.headers),dataType:e.dataType??"json",...e.responseType!==void 0?{responseType:e.responseType}:{},...e.timeout!==void 0&&e.timeout>0?{timeout:e.timeout}:{},success:(u)=>{g(()=>{let c=u[this.dialect.statusField],E=Number(c??u.statusCode??0),b=K(u[this.dialect.responseHeaderField]);n({data:u.data,statusCode:E,headers:b,config:e,...Array.isArray(u.cookies)?{cookies:u.cookies}:{},...typeof u.errMsg==="string"?{errMsg:u.errMsg}:{}})})},fail:(u)=>{g(()=>{let c=W(u);o(new i({code:s?"TIMEOUT":G(c),message:c||"Network request failed",config:e,cause:u}))})}};if(e.timeout!==void 0&&e.timeout>0)l=setTimeout(()=>{s=!0,p?.abort?.()},e.timeout);if(p=r(d)??void 0,e.signal)if(e.signal.aborted)p?.abort?.();else e.signal.addEventListener("abort",()=>{p?.abort?.()},{once:!0})})}}function V(e){return f(e)}function K(e){if(typeof e!=="object"||e===null)return{};let t={};return Object.keys(e).forEach((r)=>{let n=e[r];if(n!==void 0&&n!==null)t[r]=String(n)}),t}function W(e){if(typeof e.errMsg==="string")return e.errMsg;if(typeof e.errorMessage==="string")return e.errorMessage;if(typeof e.error==="string")return e.error;return""}function G(e){if(!e)return"UNKNOWN";if(/timeout/i.test(e))return"TIMEOUT";if(/abort/i.test(e))return"ABORTED";return"NETWORK_ERROR"}var I={web:new A,weixin:new m(M),alipay:new m(H),bytedance:new m(k)};function w(e){let t=I[e];if(!t)throw new i({code:"UNSUPPORTED_PLATFORM",message:`Unsupported request platform: ${String(e)}`,config:{url:""}});return t}async function x(e,t,r){if(e.platform!==void 0&&e.platform!=="auto")return w(e.platform);if(t!==void 0)return typeof t==="function"?await t(e):t;if(r!==void 0&&r!=="auto")return w(r);let n=y();if(n==="unknown")throw new i({code:"UNSUPPORTED_PLATFORM",message:"No supported request platform detected (web fetch / wx.request / my.request / tt.request)",config:e});return w(n)}class R{handlers=[];use(e,t){return this.handlers.push({onFulfilled:e,onRejected:t}),this.handlers.length-1}eject(e){if(this.handlers[e]!==void 0)this.handlers[e]=null}clear(){this.handlers.length=0}forEach(e){this.handlers.forEach((t,r)=>{if(t!==null)e(t,r)})}}class h{interceptors={request:new R,response:new R};instanceDefaults;instanceAdapter;instancePlatform;constructor(e={}){let{adapter:t,platform:r,...n}=e;this.instanceAdapter=t,this.instancePlatform=r,this.instanceDefaults={...n}}request(e){let t;try{t=this.mergeConfig(e)}catch(s){return Promise.reject(s)}let r=[];this.interceptors.request.forEach((s)=>{r.push(s.onFulfilled,s.onRejected)}),r.push((s)=>this.dispatch(s),void 0);let n=[];this.interceptors.response.forEach((s)=>{n.push({onFulfilled:s.onFulfilled,onRejected:s.onRejected})});for(let s=n.length-1;s>=0;s-=1){let a=n[s];r.push(a.onFulfilled,a.onRejected)}let o=Promise.resolve(t);while(r.length>0){let s=r.shift(),a=r.shift();o=o.then(s,a)}return o}get(e,t){return this.request({...t,url:e,method:"GET"})}delete(e,t){return this.request({...t,url:e,method:"DELETE"})}head(e,t){return this.request({...t,url:e,method:"HEAD"})}options(e,t){return this.request({...t,url:e,method:"OPTIONS"})}post(e,t,r){return this.request({...r,url:e,method:"POST",data:t})}put(e,t,r){return this.request({...r,url:e,method:"PUT",data:t})}patch(e,t,r){return this.request({...r,url:e,method:"PATCH",data:t})}dispatch(e){return x(e,this.instanceAdapter,this.instancePlatform).then((t)=>t.request(e))}mergeConfig(e){if(!e||typeof e!=="object")throw new i({code:"BAD_REQUEST",message:"Request config must be an object",config:e});let t=globalThis,r=typeof t.getApp==="function"?t.getApp()?.__transoneConfig?.host:void 0,n={...r!==void 0?{baseURL:r}:{},...this.instanceDefaults,...e,headers:f(this.instanceDefaults.headers,e.headers),params:{...this.instanceDefaults.params,...e.params}};if(typeof n.url!=="string"||n.url.length===0)throw new i({code:"BAD_REQUEST",message:"Request url is required",config:n});try{n.method=q(n.method)}catch(o){throw new i({code:"BAD_REQUEST",message:o.message,config:n,cause:o})}return n}}function qe(e={}){return new h(e)}var Te=new h;
2
+ export{i as Ga,S as Ha,y as Ia,I as Ja,w as Ka,x as La,R as Ma,h as Na,qe as Oa,Te as Pa};
3
3
 
4
- //# debugId=C2EF7110F3404F9F64756E2164756E21
5
- //# sourceMappingURL=index-xp7y2crt.js.map
4
+ //# debugId=1C18002991FF49A764756E2164756E21
5
+ //# sourceMappingURL=index-jq6fv0br.js.map
@@ -9,10 +9,10 @@
9
9
  "import { RequestError, type RequestErrorCode } from '../errors';\nimport { buildURL, mergeHeaders } from '../helpers';\nimport type {\n HeaderValue,\n RequestAdapter,\n RequestConfig,\n RequestResponse,\n} from '../types';\nimport { getMiniProgramApi } from './platform';\n\n/**\n * 小程序差异层:微信 / 阿里 / 字节的请求 API 语义一致(wx.request /\n * my.request / tt.request),仅字段名与回调形状不同。与 CLI 的 MpDialect\n * 同思路,把差异收敛为参数化方言,避免三个适配器重复实现。\n */\nexport interface MiniProgramDialect {\n /** 目标端标识 */\n platform: 'weixin' | 'alipay' | 'bytedance';\n /** 全局对象名:wx / my / tt */\n globalName: 'wx' | 'my' | 'tt';\n /** 请求参数中请求头字段名:微信/字节 header,阿里 headers */\n headerField: 'header' | 'headers';\n /** 成功回调中状态码字段:微信/字节 statusCode,阿里 status */\n statusField: 'statusCode' | 'status';\n /** 成功回调中响应头字段名:微信/字节 header,阿里 headers */\n responseHeaderField: 'header' | 'headers';\n}\n\nexport const WEIXIN_DIALECT: MiniProgramDialect = {\n platform: 'weixin',\n globalName: 'wx',\n headerField: 'header',\n statusField: 'statusCode',\n responseHeaderField: 'header',\n};\n\nexport const ALIPAY_DIALECT: MiniProgramDialect = {\n platform: 'alipay',\n globalName: 'my',\n headerField: 'headers',\n statusField: 'status',\n responseHeaderField: 'headers',\n};\n\nexport const BYTEDANCE_DIALECT: MiniProgramDialect = {\n platform: 'bytedance',\n globalName: 'tt',\n headerField: 'header',\n statusField: 'statusCode',\n responseHeaderField: 'header',\n};\n\n/**\n * 小程序端适配器(策略):wx.request / my.request / tt.request 的统一封装。\n *\n * - 超时:手动 timer + 底层任务 abort,三端行为一致;成功/失败回调都会清理 timer\n * - 取消:config.signal 触发时 abort 底层任务\n * - 失败归一化:按平台 errMsg 关键字归类 TIMEOUT / ABORTED / NETWORK_ERROR\n */\nexport class MiniProgramAdapter implements RequestAdapter {\n public readonly platform: 'weixin' | 'alipay' | 'bytedance';\n\n public constructor(private readonly dialect: MiniProgramDialect) {\n this.platform = dialect.platform;\n }\n\n public request<T>(config: RequestConfig<T>): Promise<RequestResponse<T>> {\n const api = getMiniProgramApi(this.dialect.globalName);\n if (!api || typeof api.request !== 'function') {\n return Promise.reject(\n new RequestError({\n code: 'UNSUPPORTED_PLATFORM',\n message: `${this.dialect.globalName}.request is not available in current environment`,\n config,\n })\n );\n }\n // 守卫后收窄为函数;Promise 执行器闭包内无法复用前面的窄化\n const requestFn = api.request;\n\n return new Promise<RequestResponse<T>>((resolve, reject) => {\n let timedOut = false;\n let settled = false;\n let task: { abort?: () => void } | undefined;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n // 保证成功/失败/超时只结算一次,并清理超时 timer\n const settle = (fn: () => void): void => {\n if (settled) {\n return;\n }\n settled = true;\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n fn();\n };\n\n const options: Record<string, unknown> = {\n url: buildURL(config.baseURL, config.url, config.params),\n method: config.method ?? 'GET',\n data: config.data,\n [this.dialect.headerField]: normalizeHeaders(config.headers),\n dataType: config.dataType ?? 'json',\n ...(config.responseType !== undefined\n ? { responseType: config.responseType }\n : {}),\n ...(config.timeout !== undefined && config.timeout > 0\n ? { timeout: config.timeout }\n : {}),\n success: (res: Record<string, unknown>) => {\n settle(() => {\n const rawStatus = res[this.dialect.statusField];\n const statusCode = Number(rawStatus ?? res.statusCode ?? 0);\n const responseHeaders = normalizeResponseHeaders(\n res[this.dialect.responseHeaderField]\n );\n resolve({\n data: res.data as T,\n statusCode,\n headers: responseHeaders,\n config,\n ...(Array.isArray(res.cookies)\n ? { cookies: res.cookies as string[] }\n : {}),\n ...(typeof res.errMsg === 'string' ? { errMsg: res.errMsg } : {}),\n });\n });\n },\n fail: (err: Record<string, unknown>) => {\n settle(() => {\n const errMsg = extractFailMessage(err);\n reject(\n new RequestError({\n code: timedOut ? 'TIMEOUT' : classifyMpError(errMsg),\n message: errMsg || 'Network request failed',\n config,\n cause: err,\n })\n );\n });\n },\n };\n\n if (config.timeout !== undefined && config.timeout > 0) {\n timer = setTimeout(() => {\n timedOut = true;\n task?.abort?.();\n }, config.timeout);\n }\n\n task = requestFn(options) ?? undefined;\n\n if (config.signal) {\n if (config.signal.aborted) {\n task?.abort?.();\n } else {\n config.signal.addEventListener(\n 'abort',\n () => {\n task?.abort?.();\n },\n { once: true }\n );\n }\n }\n });\n }\n}\n\nfunction normalizeHeaders(\n headers: Record<string, HeaderValue> | undefined\n): Record<string, string> {\n return mergeHeaders(headers);\n}\n\nfunction normalizeResponseHeaders(value: unknown): Record<string, string> {\n if (typeof value !== 'object' || value === null) {\n return {};\n }\n const result: Record<string, string> = {};\n Object.keys(value as Record<string, unknown>).forEach((key) => {\n const item = (value as Record<string, unknown>)[key];\n if (item !== undefined && item !== null) {\n result[key] = String(item);\n }\n });\n return result;\n}\n\nfunction extractFailMessage(err: Record<string, unknown>): string {\n if (typeof err.errMsg === 'string') {\n return err.errMsg;\n }\n if (typeof err.errorMessage === 'string') {\n return err.errorMessage;\n }\n if (typeof err.error === 'string') {\n return err.error;\n }\n return '';\n}\n\n/** 按平台 errMsg 关键字归类错误码 */\nfunction classifyMpError(errMsg: string): RequestErrorCode {\n if (!errMsg) {\n return 'UNKNOWN';\n }\n if (/timeout/i.test(errMsg)) {\n return 'TIMEOUT';\n }\n if (/abort/i.test(errMsg)) {\n return 'ABORTED';\n }\n return 'NETWORK_ERROR';\n}\n",
10
10
  "import { RequestError } from '../errors';\nimport type {\n DetectedPlatform,\n RequestAdapter,\n RequestAdapterResolver,\n RequestConfig,\n RequestPlatform,\n} from '../types';\nimport { FetchAdapter } from './fetch';\nimport {\n ALIPAY_DIALECT,\n BYTEDANCE_DIALECT,\n MiniProgramAdapter,\n WEIXIN_DIALECT,\n} from './mp';\nimport { detectPlatform } from './platform';\n\nexport { detectPlatform } from './platform';\nexport type { MiniProgramRequestApi } from './platform';\nexport type { MiniProgramDialect } from './mp';\n\n/** 各端适配器注册表:'auto' 不在此列,由运行时探测决定 */\nexport const adapters: Record<\n Exclude<RequestPlatform, 'auto'>,\n RequestAdapter\n> = {\n web: new FetchAdapter(),\n weixin: new MiniProgramAdapter(WEIXIN_DIALECT),\n alipay: new MiniProgramAdapter(ALIPAY_DIALECT),\n bytedance: new MiniProgramAdapter(BYTEDANCE_DIALECT),\n};\n\n/** 按目标端创建适配器;不支持的端抛 UNSUPPORTED_PLATFORM */\nexport function createAdapter(\n platform: Exclude<RequestPlatform, 'auto'>\n): RequestAdapter {\n const adapter = adapters[platform];\n if (!adapter) {\n throw new RequestError({\n code: 'UNSUPPORTED_PLATFORM',\n message: `Unsupported request platform: ${String(platform)}`,\n config: { url: '' },\n });\n }\n return adapter;\n}\n\n/**\n * 解析请求应使用的适配器(优先级从高到低):\n * 1. 请求级 config.platform(显式指定非 auto 时)\n * 2. 实例级自定义 adapter(对象或解析函数)\n * 3. 实例级默认 platform;仍为 auto 时运行时探测\n */\nexport async function resolveAdapter(\n config: RequestConfig,\n instanceAdapter?: RequestAdapter | RequestAdapterResolver,\n instancePlatform?: RequestPlatform\n): Promise<RequestAdapter> {\n if (config.platform !== undefined && config.platform !== 'auto') {\n return createAdapter(config.platform);\n }\n if (instanceAdapter !== undefined) {\n return typeof instanceAdapter === 'function'\n ? await instanceAdapter(config)\n : instanceAdapter;\n }\n if (instancePlatform !== undefined && instancePlatform !== 'auto') {\n return createAdapter(instancePlatform);\n }\n const detected: DetectedPlatform = detectPlatform();\n if (detected === 'unknown') {\n throw new RequestError({\n code: 'UNSUPPORTED_PLATFORM',\n message:\n 'No supported request platform detected (web fetch / wx.request / my.request / tt.request)',\n config,\n });\n }\n return createAdapter(detected);\n}\n",
11
11
  "import type {\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n} from './types';\n\n/**\n * 拦截器管理器:维护同类型(请求 / 响应)拦截器列表。\n * - use 注册并返回 id,eject 按 id 移除(软删除,保留占位)\n * - forEach 跳过已移除的项\n */\nexport class InterceptorManager<T> {\n private readonly handlers: Array<InterceptorHandler<T> | null> = [];\n\n public use(\n onFulfilled?: InterceptorFulfilled<T>,\n onRejected?: InterceptorRejected\n ): number {\n this.handlers.push({ onFulfilled, onRejected });\n return this.handlers.length - 1;\n }\n\n public eject(id: number): void {\n if (this.handlers[id] !== undefined) {\n this.handlers[id] = null;\n }\n }\n\n public clear(): void {\n this.handlers.length = 0;\n }\n\n public forEach(\n fn: (handler: InterceptorHandler<T>, id: number) => void\n ): void {\n this.handlers.forEach((handler, id) => {\n if (handler !== null) {\n fn(handler, id);\n }\n });\n }\n}\n",
12
- "import { resolveAdapter } from './adapters';\nimport { RequestError } from './errors';\nimport { mergeHeaders, normalizeMethod } from './helpers';\nimport { InterceptorManager } from './interceptors';\nimport type {\n RequestAdapter,\n RequestConfig,\n RequestOptions,\n RequestResponse,\n} from './types';\n\ntype ChainStep = (value: unknown) => unknown;\n\n/**\n * 统一请求客户端:跨端请求入口。\n *\n * 职责:\n * - 实例级默认值(baseURL / headers / timeout / platform 等)与单次配置合并\n * - 请求拦截器(注册顺序)→ 平台适配器 → 响应拦截器(后注册先执行)的链路编排\n * - 目标端解析:config.platform > 实例 adapter > 实例 platform > 运行时探测\n *\n * 用法:\n * ```ts\n * const http = createRequest({ baseURL: '/api', timeout: 10000 });\n * http.interceptors.request.use((config) => {\n * config.headers.Authorization = `Bearer ${token}`;\n * return config;\n * });\n * const res = await http.get<{ list: Item[] }>('/items');\n * ```\n */\nexport class Request {\n /** 请求 / 响应拦截器管理器 */\n public readonly interceptors: {\n request: InterceptorManager<RequestConfig>;\n response: InterceptorManager<RequestResponse>;\n } = {\n request: new InterceptorManager<RequestConfig>(),\n response: new InterceptorManager<RequestResponse>(),\n };\n\n private readonly instanceDefaults: RequestOptions;\n private readonly instanceAdapter?: RequestOptions['adapter'];\n private readonly instancePlatform?: RequestOptions['platform'];\n\n public constructor(options: RequestOptions = {}) {\n const {\n adapter: instanceAdapter,\n platform: instancePlatform,\n ...rest\n } = options;\n this.instanceAdapter = instanceAdapter;\n this.instancePlatform = instancePlatform;\n this.instanceDefaults = { ...rest };\n }\n\n /** 发起请求:合并配置 → 请求拦截器 → 适配器 → 响应拦截器 */\n public request<T = unknown>(\n config: RequestConfig<T>\n ): Promise<RequestResponse<T>> {\n let merged: RequestConfig<T>;\n try {\n merged = this.mergeConfig(config);\n } catch (error) {\n // 配置非法统一走 rejected promise,调用方用 .catch / try-await 即可处理\n return Promise.reject(error);\n }\n\n // 拦截器链:请求拦截器按注册顺序在最前,适配器居中进行实际请求,\n // 响应拦截器后注册的先执行(离调用方最近,最外层)。\n // 链以 (fulfilled, rejected) 成对消费;onRejected 捕获的是其之前链路的错误。\n const chain: Array<ChainStep | undefined> = [];\n this.interceptors.request.forEach((handler) => {\n chain.push(\n handler.onFulfilled as unknown as ChainStep,\n handler.onRejected as ChainStep | undefined\n );\n });\n chain.push(\n (value: unknown) => this.dispatch(value as RequestConfig<T>),\n undefined\n );\n const responseHandlers: Array<{\n onFulfilled?: ChainStep;\n onRejected?: ChainStep | undefined;\n }> = [];\n this.interceptors.response.forEach((handler) => {\n responseHandlers.push({\n onFulfilled: handler.onFulfilled as unknown as ChainStep,\n onRejected: handler.onRejected as ChainStep | undefined,\n });\n });\n for (let index = responseHandlers.length - 1; index >= 0; index -= 1) {\n const handler = responseHandlers[index];\n chain.push(handler.onFulfilled, handler.onRejected);\n }\n\n let promise: Promise<unknown> = Promise.resolve(merged);\n while (chain.length > 0) {\n const fulfilled = chain.shift();\n const rejected = chain.shift();\n promise = promise.then(\n fulfilled as ((value: unknown) => unknown) | undefined,\n rejected as ((reason: unknown) => unknown) | undefined\n );\n }\n return promise as Promise<RequestResponse<T>>;\n }\n\n public get<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'GET' });\n }\n\n public delete<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'DELETE' });\n }\n\n public head<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'HEAD' });\n }\n\n public options<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'OPTIONS' });\n }\n\n public post<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'POST', data });\n }\n\n public put<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PUT', data });\n }\n\n public patch<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PATCH', data });\n }\n\n private dispatch<T>(config: RequestConfig<T>): Promise<RequestResponse<T>> {\n return resolveAdapter(\n config,\n this.instanceAdapter,\n this.instancePlatform\n ).then((adapter: RequestAdapter) => adapter.request<T>(config));\n }\n\n /** 合并实例级默认值与单次配置,并校验 url / method */\n private mergeConfig<T>(config: RequestConfig<T>): RequestConfig<T> {\n if (!config || typeof config !== 'object') {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request config must be an object',\n config: config as RequestConfig,\n });\n }\n\n const merged: RequestConfig = {\n ...this.instanceDefaults,\n ...config,\n headers: mergeHeaders(this.instanceDefaults.headers, config.headers),\n params: { ...this.instanceDefaults.params, ...config.params },\n };\n\n if (typeof merged.url !== 'string' || merged.url.length === 0) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request url is required',\n config: merged,\n });\n }\n\n try {\n merged.method = normalizeMethod(merged.method);\n } catch (cause) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: (cause as Error).message,\n config: merged,\n cause,\n });\n }\n\n return merged as RequestConfig<T>;\n }\n}\n",
12
+ "import { resolveAdapter } from './adapters';\nimport { RequestError } from './errors';\nimport { mergeHeaders, normalizeMethod } from './helpers';\nimport { InterceptorManager } from './interceptors';\nimport type {\n RequestAdapter,\n RequestConfig,\n RequestOptions,\n RequestResponse,\n} from './types';\n\ntype ChainStep = (value: unknown) => unknown;\n\n/**\n * 统一请求客户端:跨端请求入口。\n *\n * 职责:\n * - 实例级默认值(baseURL / headers / timeout / platform 等)与单次配置合并\n * - 请求拦截器(注册顺序)→ 平台适配器 → 响应拦截器(后注册先执行)的链路编排\n * - 目标端解析:config.platform > 实例 adapter > 实例 platform > 运行时探测\n *\n * 用法:\n * ```ts\n * const http = createRequest({ baseURL: '/api', timeout: 10000 });\n * http.interceptors.request.use((config) => {\n * config.headers.Authorization = `Bearer ${token}`;\n * return config;\n * });\n * const res = await http.get<{ list: Item[] }>('/items');\n * ```\n */\nexport class Request {\n /** 请求 / 响应拦截器管理器 */\n public readonly interceptors: {\n request: InterceptorManager<RequestConfig>;\n response: InterceptorManager<RequestResponse>;\n } = {\n request: new InterceptorManager<RequestConfig>(),\n response: new InterceptorManager<RequestResponse>(),\n };\n\n private readonly instanceDefaults: RequestOptions;\n private readonly instanceAdapter?: RequestOptions['adapter'];\n private readonly instancePlatform?: RequestOptions['platform'];\n\n public constructor(options: RequestOptions = {}) {\n const {\n adapter: instanceAdapter,\n platform: instancePlatform,\n ...rest\n } = options;\n this.instanceAdapter = instanceAdapter;\n this.instancePlatform = instancePlatform;\n this.instanceDefaults = { ...rest };\n }\n\n /** 发起请求:合并配置 → 请求拦截器 → 适配器 → 响应拦截器 */\n public request<T = unknown>(\n config: RequestConfig<T>\n ): Promise<RequestResponse<T>> {\n let merged: RequestConfig<T>;\n try {\n merged = this.mergeConfig(config);\n } catch (error) {\n // 配置非法统一走 rejected promise,调用方用 .catch / try-await 即可处理\n return Promise.reject(error);\n }\n\n // 拦截器链:请求拦截器按注册顺序在最前,适配器居中进行实际请求,\n // 响应拦截器后注册的先执行(离调用方最近,最外层)。\n // 链以 (fulfilled, rejected) 成对消费;onRejected 捕获的是其之前链路的错误。\n const chain: Array<ChainStep | undefined> = [];\n this.interceptors.request.forEach((handler) => {\n chain.push(\n handler.onFulfilled as unknown as ChainStep,\n handler.onRejected as ChainStep | undefined\n );\n });\n chain.push(\n (value: unknown) => this.dispatch(value as RequestConfig<T>),\n undefined\n );\n const responseHandlers: Array<{\n onFulfilled?: ChainStep;\n onRejected?: ChainStep | undefined;\n }> = [];\n this.interceptors.response.forEach((handler) => {\n responseHandlers.push({\n onFulfilled: handler.onFulfilled as unknown as ChainStep,\n onRejected: handler.onRejected as ChainStep | undefined,\n });\n });\n for (let index = responseHandlers.length - 1; index >= 0; index -= 1) {\n const handler = responseHandlers[index];\n chain.push(handler.onFulfilled, handler.onRejected);\n }\n\n let promise: Promise<unknown> = Promise.resolve(merged);\n while (chain.length > 0) {\n const fulfilled = chain.shift();\n const rejected = chain.shift();\n promise = promise.then(\n fulfilled as ((value: unknown) => unknown) | undefined,\n rejected as ((reason: unknown) => unknown) | undefined\n );\n }\n return promise as Promise<RequestResponse<T>>;\n }\n\n public get<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'GET' });\n }\n\n public delete<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'DELETE' });\n }\n\n public head<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'HEAD' });\n }\n\n public options<T = unknown>(\n url: string,\n config?: Omit<RequestConfig, 'url' | 'method'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'OPTIONS' });\n }\n\n public post<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'POST', data });\n }\n\n public put<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PUT', data });\n }\n\n public patch<T = unknown>(\n url: string,\n data?: T,\n config?: Omit<RequestConfig<T>, 'url' | 'method' | 'data'>\n ): Promise<RequestResponse<T>> {\n return this.request<T>({ ...config, url, method: 'PATCH', data });\n }\n\n private dispatch<T>(config: RequestConfig<T>): Promise<RequestResponse<T>> {\n return resolveAdapter(\n config,\n this.instanceAdapter,\n this.instancePlatform\n ).then((adapter: RequestAdapter) => adapter.request<T>(config));\n }\n\n /** 合并实例级默认值与单次配置,并校验 url / method */\n private mergeConfig<T>(config: RequestConfig<T>): RequestConfig<T> {\n if (!config || typeof config !== 'object') {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request config must be an object',\n config: config as RequestConfig,\n });\n }\n\n const runtime = globalThis as unknown as {\n getApp?: () => { __transoneConfig?: { host?: string } } | undefined;\n };\n const host = typeof runtime.getApp === 'function'\n ? runtime.getApp()?.__transoneConfig?.host\n : undefined;\n const merged: RequestConfig = {\n ...(host !== undefined ? { baseURL: host } : {}),\n ...this.instanceDefaults,\n ...config,\n headers: mergeHeaders(this.instanceDefaults.headers, config.headers),\n params: { ...this.instanceDefaults.params, ...config.params },\n };\n\n if (typeof merged.url !== 'string' || merged.url.length === 0) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: 'Request url is required',\n config: merged,\n });\n }\n\n try {\n merged.method = normalizeMethod(merged.method);\n } catch (cause) {\n throw new RequestError({\n code: 'BAD_REQUEST',\n message: (cause as Error).message,\n config: merged,\n cause,\n });\n }\n\n return merged as RequestConfig<T>;\n }\n}\n",
13
13
  "import { Request } from './request';\nimport type { RequestOptions } from './types';\n\n/** 创建独立请求实例;不传配置时等价于使用默认实例 */\nexport function createRequest(options: RequestOptions = {}): Request {\n return new Request(options);\n}\n\n/**\n * 全局默认请求实例:直接使用无需创建。\n * ```ts\n * import { request } from 'transone/request';\n * const res = await request.get('/api/items');\n * ```\n */\nexport const request: Request = new Request();\n\nexport { Request } from './request';\nexport { InterceptorManager } from './interceptors';\nexport { RequestError, isRequestError } from './errors';\nexport type { RequestErrorCode, RequestErrorOptions } from './errors';\nexport {\n adapters,\n createAdapter,\n detectPlatform,\n resolveAdapter,\n} from './adapters';\nexport type { MiniProgramDialect, MiniProgramRequestApi } from './adapters';\nexport type {\n DetectedPlatform,\n HeaderValue,\n HttpMethod,\n InterceptorFulfilled,\n InterceptorHandler,\n InterceptorRejected,\n RequestAdapter,\n RequestAdapterResolver,\n RequestConfig,\n RequestDataType,\n RequestOptions,\n RequestPlatform,\n RequestResponse,\n RequestResponseType,\n} from './types';\n"
14
14
  ],
15
- "mappings": "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",
16
- "debugId": "C2EF7110F3404F9F64756E2164756E21",
15
+ "mappings": "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",
16
+ "debugId": "1C18002991FF49A764756E2164756E21",
17
17
  "names": []
18
18
  }
@@ -21,7 +21,7 @@ ${t}}`}let r=Object.entries(e.properties).map(([n,s])=>`${t} ${u(n)}: ${String(
21
21
  `);return`${t}${e.selector} {
22
22
  ${r}
23
23
  ${t}}`}function u(e){if(e.startsWith("--")||e.includes("-"))return e;return e.replace(/[A-Z]/g,(t)=>`-${t.toLowerCase()}`)}
24
- export{i as Ca,p as Da,m as Ea};
24
+ export{i as Da,p as Ea,m as Fa};
25
25
 
26
- //# debugId=4D73144E690F1BEE64756E2164756E21
27
- //# sourceMappingURL=index-qmpx307q.js.map
26
+ //# debugId=5F87421C8779CA2664756E2164756E21
27
+ //# sourceMappingURL=index-ryj080w6.js.map
@@ -7,6 +7,6 @@
7
7
  "export type StyleValue = string | number;\n\nexport type StyleProperties = Record<string, StyleValue>;\n\nexport interface StyleRule {\n selector: string;\n properties: StyleProperties;\n}\n\nexport interface StyleAtRule {\n atRule: string;\n rules: StyleRule[];\n}\n\nexport type StyleSheetEntry = StyleRule | StyleAtRule;\n\nexport type StyleSheet = StyleSheetEntry[];\n\nexport function renderStyleSheet(styles: StyleSheet): string {\n return styles.map((entry) => renderStyleEntry(entry)).join('\\n\\n');\n}\n\nfunction renderStyleEntry(entry: StyleSheetEntry, indent = ''): string {\n if ('atRule' in entry) {\n const rules = entry.rules\n .map((rule) => renderStyleEntry(rule, `${indent} `))\n .join('\\n\\n');\n\n return `${indent}${entry.atRule} {\\n${rules}\\n${indent}}`;\n }\n\n const declarations = Object.entries(entry.properties)\n .map(\n ([property, value]) =>\n `${indent} ${toCssProperty(property)}: ${String(value)};`\n )\n .join('\\n');\n\n return `${indent}${entry.selector} {\\n${declarations}\\n${indent}}`;\n}\n\nfunction toCssProperty(property: string): string {\n if (property.startsWith('--') || property.includes('-')) {\n return property;\n }\n\n return property.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n"
8
8
  ],
9
9
  "mappings": "AAOO,IAAM,EACX,iDAEI,EAAc,wBAGb,SAAS,CAAU,CAAC,EAAgC,CACzD,OAAO,OAAO,CAAK,EAAE,QACnB,EACA,CAAC,EAAQ,IAAmB,QAAQ,oBACtC,ECRK,MAAM,CAAa,CACjB,aAAwC,KACxC,OAAoC,IAAI,IAE/C,WAAW,EAAG,EAIP,QAAQ,CAAC,EAAc,EAA6B,CACzD,KAAK,OAAO,IAAI,EAAM,CAAO,EAC7B,KAAK,aAAa,EAGb,WAAW,CAAC,EAAoB,CACrC,KAAK,OAAO,OAAO,CAAI,EACvB,KAAK,aAAa,EAGb,WAAW,EAAS,CAEzB,GADA,KAAK,OAAO,MAAM,EACd,KAAK,aACP,KAAK,aAAa,YAAc,GAI7B,OAAO,EAAS,CAErB,GADA,KAAK,YAAY,EACb,KAAK,aACP,KAAK,aAAa,OAAO,EACzB,KAAK,aAAe,KAIhB,kBAAkB,EAAqB,CAC7C,GAAI,CAAC,KAAK,aAAc,CACtB,IAAM,EAAU,SAAS,cAAc,OAAO,EAC9C,SAAS,KAAK,YAAY,CAAO,EACjC,KAAK,aAAe,EAEtB,OAAO,KAAK,aAGN,YAAY,CAAC,EAAqD,CACxE,OAAO,OAAO,QAAQ,CAAU,EAC7B,IAAI,EAAE,EAAK,KAEH,GADQ,EAAI,QAAQ,WAAY,KAAK,EAAE,YAAY,MACrC,EAAW,CAAK,IACtC,EACA,KAAK;AAAA,CAAI,EAGN,YAAY,EAAS,CAC3B,GAAI,KAAK,OAAO,OAAS,EAAG,CAC1B,GAAI,KAAK,aACP,KAAK,aAAa,YAAc,GAElC,OAGF,IAAM,EAAU,KAAK,mBAAmB,EACpC,EAAU,EAAgB;AAAA,EAE9B,KAAK,OAAO,QAAQ,CAAC,IAAU,CAK7B,GAHA,GAAW,GAAG,EAAM;AAAA,EAAe,KAAK,aAAa,EAAM,UAAU;AAAA;AAAA,EAGjE,EAAM,MACR,GAAW,GAAG,EAAM;AAAA,EAAqB,KAAK,aAAa,EAAM,KAAK;AAAA;AAAA,EAIxE,GAAI,EAAM,MACR,OAAO,QAAQ,EAAM,KAAK,EAAE,QAAQ,EAAE,EAAO,KAAgB,CAC3D,GAAW,UAAU;AAAA,EAAY,EAAM;AAAA,EAAe,KAAK,aAAa,CAAU;AAAA;AAAA;AAAA,EACnF,EAEJ,EAED,EAAQ,YAAc,EAE1B,CCxEO,SAAS,CAAgB,CAAC,EAA4B,CAC3D,OAAO,EAAO,IAAI,CAAC,IAAU,EAAiB,CAAK,CAAC,EAAE,KAAK;AAAA;AAAA,CAAM,EAGnE,SAAS,CAAgB,CAAC,EAAwB,EAAS,GAAY,CACrE,GAAI,WAAY,EAAO,CACrB,IAAM,EAAQ,EAAM,MACjB,IAAI,CAAC,IAAS,EAAiB,EAAM,GAAG,KAAU,CAAC,EACnD,KAAK;AAAA;AAAA,CAAM,EAEd,MAAO,GAAG,IAAS,EAAM;AAAA,EAAa;AAAA,EAAU,KAGlD,IAAM,EAAe,OAAO,QAAQ,EAAM,UAAU,EACjD,IACC,EAAE,EAAU,KACV,GAAG,MAAW,EAAc,CAAQ,MAAM,OAAO,CAAK,IAC1D,EACC,KAAK;AAAA,CAAI,EAEZ,MAAO,GAAG,IAAS,EAAM;AAAA,EAAe;AAAA,EAAiB,KAG3D,SAAS,CAAa,CAAC,EAA0B,CAC/C,GAAI,EAAS,WAAW,IAAI,GAAK,EAAS,SAAS,GAAG,EACpD,OAAO,EAGT,OAAO,EAAS,QAAQ,SAAU,CAAC,IAAU,IAAI,EAAM,YAAY,GAAG",
10
- "debugId": "4D73144E690F1BEE64756E2164756E21",
10
+ "debugId": "5F87421C8779CA2664756E2164756E21",
11
11
  "names": []
12
12
  }
package/dist/index.d.ts CHANGED
@@ -4,5 +4,6 @@ export * from './core';
4
4
  export * from './router';
5
5
  export * from './request';
6
6
  export declare function createApp<TState extends object = Record<string, unknown>, TConfig extends object = Record<string, unknown>, TRootProps extends ComponentProps = ComponentProps>(options?: AppOptions<TState, TConfig, TRootProps>): OneApp<TState, TConfig, TRootProps>;
7
- export declare const version = "0.4.0";
7
+ export declare const version = "0.8.0";
8
8
  export declare const name = "transone";
9
+ export * from './platform';
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{$ as ze,A as pe,Aa as pr,B as fe,Ba as u,C as ce,D as ge,E as me,F as xe,G as Re,H as Te,I as Ve,J as ye,K as be,L as Fe,M as Me,N as je,O as ke,P as he,Q as ve,R as Ce,S as we,T as Ae,U as Ee,V as Oe,W as Pe,X as Se,Y as qe,Z as Le,_ as $e,a as B,aa as Be,b as D,ba as De,c as G,ca as Ge,d as H,da as He,e as I,ea as Ie,f as J,fa as Je,g as K,ga as Ke,h as N,ha as Ne,i as Q,ia as Qe,j as U,ja as Ue,k as W,ka as We,l as X,la as d,m as Y,ma as Xe,n as Z,na as Ye,o as _,oa as Ze,p as ee,pa as _e,q as re,qa as er,r as te,ra as rr,s as oe,sa as tr,t as ne,ta as or,u as ie,ua as nr,v as le,va as ir,w as se,wa as lr,x as ae,xa as sr,y as de,ya as ar,z as ue,za as dr}from"./index-rmgr0qs2.js";import{Ea as ur}from"./index-qmpx307q.js";import{Fa as fr,Ga as cr,Ha as gr,Ia as mr,Ja as xr,Ka as Rr,La as Tr,Ma as Vr,Na as yr,Oa as br}from"./index-xp7y2crt.js";function p(e){return e instanceof Error?e.message:String(e)}function f(e,r,t){try{let n=e(r,t);if(n===!0)return;return n===!1?"Validation failed":n}catch(n){return p(n)}}function g(e="This field is required"){return(r)=>{if(r===null||r===void 0)return e;if(typeof r==="string"&&r.trim().length===0)return e;if(Array.isArray(r)&&r.length===0)return e;return!0}}function m(e,r=`Must be at least ${e} characters`){return(t)=>typeof t==="string"&&t.length>=e?!0:r}function x(e){return e}function R(e,r){let t={},n=(o)=>{let i=r[o]??[],l=d(e,o),s=i.map((a)=>f(a,l,e)).filter((a)=>a!==void 0);if(s.length===0)delete t[o];else t[o]=s;return{valid:s.length===0,errors:s}};return{model:e,errors:t,validate(){let o={};return Object.keys(r).forEach((i)=>{let l=n(i);if(!l.valid)o[i]=l.errors}),{valid:Object.keys(o).length===0,errors:o}},validateField:n,resetErrors(){Object.keys(t).forEach((o)=>delete t[o])}}}function E(e={}){return new u(e)}var O="0.4.0",P="transone";export{Pe as A,xe as Article,Re as Aside,we as Blockquote,de as Button,Ce as Code,dr as Component,lr as ComponentRenderStrategy,le as Div,or as ElementRenderStrategy,ke as Em,ge as Footer,qe as Form,Te as H1,Ve as H2,ye as H3,be as H4,Fe as H5,Me as H6,ce as Header,Se as Img,ue as Input,Tr as InterceptorManager,Le as Label,Oe as Li,fe as Main,Ye as ModelBindingController,me as Nav,Ee as Ol,u as OneApp,Be as Option,ae as P,ve as Pre,H as ReactiveSystem,nr as RendererContext,Vr as Request,fr as RequestError,Ze as Router,_e as RouterLink,er as RouterView,pe as Section,ze as Select,sr as SlotRenderStrategy,he as Small,se as Span,je as Strong,De as Table,ie as Tag,He as Tbody,Ke as Td,ar as TemplateEngine,ir as TextRenderStrategy,$e as Textarea,Je as Th,Ge as Thead,Ie as Tr,Ae as Ul,mr as adapters,N as computed,xr as createAdapter,E as createApp,Ne as createComponent,R as createForm,yr as createRequest,rr as createRouter,gr as detectPlatform,Ue as each,K as effect,G as flushSync,d as getModelValue,ne as h,re as isComponentNode,te as isHTMLNode,Z as isReactive,_ as isReadonly,U as isRef,cr as isRequestError,oe as isSlotProvider,m as minLength,We as modelPath,P as name,D as nextTick,I as reactive,B as reactiveScheduler,J as readonly,Q as ref,pr as renderHtmlDocument,ur as renderStyleSheet,br as request,g as required,Rr as resolveAdapter,Xe as setModelValue,Qe as slot,X as stop,ee as toChildren,W as unref,tr as useRouter,x as validate,O as version,Y as watch};
1
+ import{$ as Ge,A as ge,Aa as mr,B as xe,Ba as xr,C as Re,Ca as u,D as Te,E as Ve,F as ye,G as be,H as Fe,I as Me,J as je,K as ke,L as he,M as ve,N as Ce,O as we,P as Ae,Q as Ee,R as Oe,S as Pe,T as Se,U as qe,V as Ie,W as Le,X as $e,Y as ze,Z as Be,_ as De,a as H,aa as He,b as J,ba as Je,c as K,ca as Ke,d as N,da as Ne,e as Q,ea as Qe,f as U,fa as Ue,g as W,ga as We,h as X,ha as Xe,i as Y,ia as Ye,j as Z,ja as Ze,k as _,ka as _e,l as ee,la as d,m as re,ma as er,n as te,na as rr,o as oe,oa as tr,p as ne,pa as or,q as ie,qa as nr,r as le,ra as ir,s as se,sa as lr,t as ae,ta as sr,u as de,ua as ar,v as ue,va as dr,w as pe,wa as ur,x as fe,xa as pr,y as ce,ya as fr,z as me,za as cr}from"./index-5dxcnfw6.js";import{Fa as gr}from"./index-ryj080w6.js";import{Ga as Rr,Ha as Tr,Ia as Vr,Ja as yr,Ka as br,La as Fr,Ma as Mr,Na as jr,Oa as kr,Pa as hr}from"./index-jq6fv0br.js";import{$a as $r,Qa as vr,Ra as Cr,Sa as wr,Ta as Ar,Ua as Er,Va as Or,Wa as Pr,Xa as Sr,Ya as qr,Za as Ir,_a as Lr,ab as zr,bb as Br,cb as Dr,db as Gr,eb as Hr}from"./index-fxpn7qkh.js";import{fb as G,gb as c}from"./index-dse0chhf.js";function p(e){return e instanceof Error?e.message:String(e)}function f(e,r,t){try{let n=e(r,t);if(n===!0)return;return n===!1?"Validation failed":n}catch(n){return p(n)}}function g(e="This field is required"){return(r)=>{if(r===null||r===void 0)return e;if(typeof r==="string"&&r.trim().length===0)return e;if(Array.isArray(r)&&r.length===0)return e;return!0}}function x(e,r=`Must be at least ${e} characters`){return(t)=>typeof t==="string"&&t.length>=e?!0:r}function R(e){return e}function T(e,r){let t={},n=(o)=>{let i=r[o]??[],l=d(e,o),s=i.map((a)=>f(a,l,e)).filter((a)=>a!==void 0);if(s.length===0)delete t[o];else t[o]=s;return{valid:s.length===0,errors:s}};return{model:e,errors:t,validate(){let o={};return Object.keys(r).forEach((i)=>{let l=n(i);if(!l.valid)o[i]=l.errors}),{valid:Object.keys(o).length===0,errors:o}},validateField:n,resetErrors(){Object.keys(t).forEach((o)=>delete t[o])}}}function P(e={}){return new u(e)}var S="0.8.0",q="transone";export{Le as A,Br as App,Gr as AppAndroid,Hr as AppHarmony,Dr as AppIos,ye as Article,be as Aside,mr as BaseComponent,Pe as Blockquote,ce as Button,wr as COMPONENT_PLATFORM_DEFINITIONS,Oe as Code,cr as Component,ur as ComponentRenderStrategy,ue as Div,sr as ElementRenderStrategy,we as Em,Te as Footer,ze as Form,Fe as H1,Me as H2,je as H3,ke as H4,he as H5,ve as H6,Re as Header,$e as Img,me as Input,Mr as InterceptorManager,Be as Label,Ie as Li,xe as Main,qr as Miniprogram,Lr as MiniprogramAlipay,$r as MiniprogramBytedance,Ir as MiniprogramWeixin,zr as MiniprogramXiaohongshu,rr as ModelBindingController,Ve as Nav,qe as Ol,u as OneApp,He as Option,fe as P,Cr as PLATFORM_DEFINITIONS,vr as Platform,Ee as Pre,N as ReactiveSystem,ar as RendererContext,jr as Request,Rr as RequestError,tr as Router,or as RouterLink,nr as RouterView,ge as Section,Ge as Select,pr as SlotRenderStrategy,Ae as Small,pe as Span,Ce as Strong,Je as Table,de as Tag,Ne as Tbody,We as Td,fr as TemplateEngine,dr as TextRenderStrategy,De as Textarea,Ue as Th,Ke as Thead,Qe as Tr,Se as Ul,Or as Web,Pr as WebMobile,Sr as WebPc,yr as adapters,G as bindComponentImplementations,X as computed,br as createAdapter,P as createApp,Xe as createComponent,c as createComponentInstance,T as createForm,kr as createRequest,ir as createRouter,Vr as detectPlatform,Ze as each,W as effect,K as flushSync,d as getModelValue,Er as getPlatformDefinition,ae as h,ie as isComponentNode,le as isHTMLNode,te as isReactive,oe as isReadonly,Z as isRef,Tr as isRequestError,se as isSlotProvider,x as minLength,_e as modelPath,q as name,J as nextTick,Ar as normalizePlatform,Q as reactive,H as reactiveScheduler,U as readonly,Y as ref,xr as renderHtmlDocument,gr as renderStyleSheet,hr as request,g as required,Fr as resolveAdapter,er as setModelValue,Ye as slot,ee as stop,ne as toChildren,_ as unref,lr as useRouter,R as validate,S as version,re as watch};
2
2
 
3
- //# debugId=119FD941ECAE2BD264756E2164756E21
3
+ //# debugId=60AE1F2CC6961D3F64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -3,9 +3,9 @@
3
3
  "sources": ["../lib/core/form.ts", "../lib/index.ts"],
4
4
  "sourcesContent": [
5
5
  "import { getModelValue } from './model';\n\nexport type ValidationResult = boolean | string;\n\nexport type ValidationRule<T = unknown> = (\n value: T,\n model: object\n) => ValidationResult;\n\nexport type ValidationRules<TModel extends object> = {\n [TPath in keyof TModel & string]?: readonly ValidationRule[];\n} & Record<string, readonly ValidationRule[] | undefined>;\n\nexport interface FieldValidationResult {\n valid: boolean;\n errors: string[];\n}\n\nexport interface FormValidationResult {\n valid: boolean;\n errors: Record<string, string[]>;\n}\n\nexport interface FormController<TModel extends object> {\n readonly model: TModel;\n readonly errors: Record<string, string[]>;\n validate(): FormValidationResult;\n validateField(path: string): FieldValidationResult;\n resetErrors(): void;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction runRule(\n rule: ValidationRule,\n value: unknown,\n model: object\n): string | undefined {\n try {\n const result = rule(value, model);\n if (result === true) {\n return undefined;\n }\n return result === false ? 'Validation failed' : result;\n } catch (error) {\n return errorMessage(error);\n }\n}\n\nexport function required(message = 'This field is required'): ValidationRule {\n return (value) => {\n if (value === null || value === undefined) {\n return message;\n }\n if (typeof value === 'string' && value.trim().length === 0) {\n return message;\n }\n if (Array.isArray(value) && value.length === 0) {\n return message;\n }\n return true;\n };\n}\n\nexport function minLength(\n length: number,\n message = `Must be at least ${length} characters`\n): ValidationRule {\n return (value) =>\n typeof value === 'string' && value.length >= length ? true : message;\n}\n\nexport function validate(rule: ValidationRule): ValidationRule {\n return rule;\n}\n\nexport function createForm<TModel extends object>(\n model: TModel,\n rules: ValidationRules<TModel>\n): FormController<TModel> {\n const errors: Record<string, string[]> = {};\n\n const validateField = (path: string): FieldValidationResult => {\n const fieldRules = rules[path] ?? [];\n const value = getModelValue(model as Record<string, unknown>, path);\n const fieldErrors = fieldRules\n .map((rule) => runRule(rule, value, model))\n .filter((message): message is string => message !== undefined);\n\n if (fieldErrors.length === 0) {\n delete errors[path];\n } else {\n errors[path] = fieldErrors;\n }\n\n return { valid: fieldErrors.length === 0, errors: fieldErrors };\n };\n\n return {\n model,\n errors,\n validate(): FormValidationResult {\n const allErrors: Record<string, string[]> = {};\n Object.keys(rules).forEach((path) => {\n const result = validateField(path);\n if (!result.valid) {\n allErrors[path] = result.errors;\n }\n });\n return { valid: Object.keys(allErrors).length === 0, errors: allErrors };\n },\n validateField,\n resetErrors(): void {\n Object.keys(errors).forEach((path) => delete errors[path]);\n },\n };\n}\n",
6
- "import { OneApp, AppOptions } from './core/app';\nimport type { ComponentProps } from './core/component';\n\n// 导出核心功能\nexport * from './core';\n\n// 导出路由功能\nexport * from './router';\n\n// 导出跨端请求模块\nexport * from './request';\n\n// 创建应用实例的主函数\nexport function createApp<\n TState extends object = Record<string, unknown>,\n TConfig extends object = Record<string, unknown>,\n TRootProps extends ComponentProps = ComponentProps,\n>(\n options: AppOptions<TState, TConfig, TRootProps> = {}\n): OneApp<TState, TConfig, TRootProps> {\n return new OneApp(options);\n}\n\n// 导出框架名称和版本\nexport const version = '0.4.0';\nexport const name = 'transone';\n"
6
+ "import { OneApp, AppOptions } from './core/app';\nimport type { ComponentProps } from './core/component';\n\n// 导出核心功能\nexport * from './core';\n\n// 导出路由功能\nexport * from './router';\n\n// 导出跨端请求模块\nexport * from './request';\n\n// 创建应用实例的主函数\nexport function createApp<\n TState extends object = Record<string, unknown>,\n TConfig extends object = Record<string, unknown>,\n TRootProps extends ComponentProps = ComponentProps,\n>(\n options: AppOptions<TState, TConfig, TRootProps> = {}\n): OneApp<TState, TConfig, TRootProps> {\n return new OneApp(options);\n}\n\n// 导出框架名称和版本\nexport const version = '0.8.0';\nexport const name = 'transone';\n\nexport * from './platform';\n"
7
7
  ],
8
- "mappings": "i2BA+BA,SAAS,CAAY,CAAC,EAAwB,CAC5C,OAAO,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAG9D,SAAS,CAAO,CACd,EACA,EACA,EACoB,CACpB,GAAI,CACF,IAAM,EAAS,EAAK,EAAO,CAAK,EAChC,GAAI,IAAW,GACb,OAEF,OAAO,IAAW,GAAQ,oBAAsB,EAChD,MAAO,EAAO,CACd,OAAO,EAAa,CAAK,GAItB,SAAS,CAAQ,CAAC,EAAU,yBAA0C,CAC3E,MAAO,CAAC,IAAU,CAChB,GAAI,IAAU,MAAQ,IAAU,OAC9B,OAAO,EAET,GAAI,OAAO,IAAU,UAAY,EAAM,KAAK,EAAE,SAAW,EACvD,OAAO,EAET,GAAI,MAAM,QAAQ,CAAK,GAAK,EAAM,SAAW,EAC3C,OAAO,EAET,MAAO,IAIJ,SAAS,CAAS,CACvB,EACA,EAAU,oBAAoB,eACd,CAChB,MAAO,CAAC,IACN,OAAO,IAAU,UAAY,EAAM,QAAU,EAAS,GAAO,EAG1D,SAAS,CAAQ,CAAC,EAAsC,CAC7D,OAAO,EAGF,SAAS,CAAiC,CAC/C,EACA,EACwB,CACxB,IAAM,EAAmC,CAAC,EAEpC,EAAgB,CAAC,IAAwC,CAC7D,IAAM,EAAa,EAAM,IAAS,CAAC,EAC7B,EAAQ,EAAc,EAAkC,CAAI,EAC5D,EAAc,EACjB,IAAI,CAAC,IAAS,EAAQ,EAAM,EAAO,CAAK,CAAC,EACzC,OAAO,CAAC,IAA+B,IAAY,MAAS,EAE/D,GAAI,EAAY,SAAW,EACzB,OAAO,EAAO,GAEd,OAAO,GAAQ,EAGjB,MAAO,CAAE,MAAO,EAAY,SAAW,EAAG,OAAQ,CAAY,GAGhE,MAAO,CACL,QACA,SACA,QAAQ,EAAyB,CAC/B,IAAM,EAAsC,CAAC,EAO7C,OANA,OAAO,KAAK,CAAK,EAAE,QAAQ,CAAC,IAAS,CACnC,IAAM,EAAS,EAAc,CAAI,EACjC,GAAI,CAAC,EAAO,MACV,EAAU,GAAQ,EAAO,OAE5B,EACM,CAAE,MAAO,OAAO,KAAK,CAAS,EAAE,SAAW,EAAG,OAAQ,CAAU,GAEzE,gBACA,WAAW,EAAS,CAClB,OAAO,KAAK,CAAM,EAAE,QAAQ,CAAC,IAAS,OAAO,EAAO,EAAK,EAE7D,ECxGK,SAAS,CAIf,CACC,EAAmD,CAAC,EACf,CACrC,OAAO,IAAI,EAAO,CAAO,EAIpB,IAAM,EAAU,QACV,EAAO",
9
- "debugId": "119FD941ECAE2BD264756E2164756E21",
8
+ "mappings": "ylCA+BA,SAAS,CAAY,CAAC,EAAwB,CAC5C,OAAO,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAG9D,SAAS,CAAO,CACd,EACA,EACA,EACoB,CACpB,GAAI,CACF,IAAM,EAAS,EAAK,EAAO,CAAK,EAChC,GAAI,IAAW,GACb,OAEF,OAAO,IAAW,GAAQ,oBAAsB,EAChD,MAAO,EAAO,CACd,OAAO,EAAa,CAAK,GAItB,SAAS,CAAQ,CAAC,EAAU,yBAA0C,CAC3E,MAAO,CAAC,IAAU,CAChB,GAAI,IAAU,MAAQ,IAAU,OAC9B,OAAO,EAET,GAAI,OAAO,IAAU,UAAY,EAAM,KAAK,EAAE,SAAW,EACvD,OAAO,EAET,GAAI,MAAM,QAAQ,CAAK,GAAK,EAAM,SAAW,EAC3C,OAAO,EAET,MAAO,IAIJ,SAAS,CAAS,CACvB,EACA,EAAU,oBAAoB,eACd,CAChB,MAAO,CAAC,IACN,OAAO,IAAU,UAAY,EAAM,QAAU,EAAS,GAAO,EAG1D,SAAS,CAAQ,CAAC,EAAsC,CAC7D,OAAO,EAGF,SAAS,CAAiC,CAC/C,EACA,EACwB,CACxB,IAAM,EAAmC,CAAC,EAEpC,EAAgB,CAAC,IAAwC,CAC7D,IAAM,EAAa,EAAM,IAAS,CAAC,EAC7B,EAAQ,EAAc,EAAkC,CAAI,EAC5D,EAAc,EACjB,IAAI,CAAC,IAAS,EAAQ,EAAM,EAAO,CAAK,CAAC,EACzC,OAAO,CAAC,IAA+B,IAAY,MAAS,EAE/D,GAAI,EAAY,SAAW,EACzB,OAAO,EAAO,GAEd,OAAO,GAAQ,EAGjB,MAAO,CAAE,MAAO,EAAY,SAAW,EAAG,OAAQ,CAAY,GAGhE,MAAO,CACL,QACA,SACA,QAAQ,EAAyB,CAC/B,IAAM,EAAsC,CAAC,EAO7C,OANA,OAAO,KAAK,CAAK,EAAE,QAAQ,CAAC,IAAS,CACnC,IAAM,EAAS,EAAc,CAAI,EACjC,GAAI,CAAC,EAAO,MACV,EAAU,GAAQ,EAAO,OAE5B,EACM,CAAE,MAAO,OAAO,KAAK,CAAS,EAAE,SAAW,EAAG,OAAQ,CAAU,GAEzE,gBACA,WAAW,EAAS,CAClB,OAAO,KAAK,CAAM,EAAE,QAAQ,CAAC,IAAS,OAAO,EAAO,EAAK,EAE7D,ECxGK,SAAS,CAIf,CACC,EAAmD,CAAC,EACf,CACrC,OAAO,IAAI,EAAO,CAAO,EAIpB,IAAM,EAAU,QACV,EAAO",
9
+ "debugId": "60AE1F2CC6961D3F64756E2164756E21",
10
10
  "names": []
11
11
  }
@@ -0,0 +1,3 @@
1
+ import type { Component, ComponentReference, ComponentProps, ComponentState } from '../core/component/base';
2
+ export declare function bindComponentImplementations(pairs: readonly (readonly [Function, Function])[]): () => void;
3
+ export declare function createComponentInstance<P extends ComponentProps = ComponentProps, S extends ComponentState = ComponentState>(reference: ComponentReference<P, S>, props?: P): Component<P, S>;
@@ -0,0 +1,15 @@
1
+ /** Compile-time markers. Return the same class and never register runtime targets. */
2
+ declare function platformDecorator(): <T extends abstract new (...args: any[]) => any>(value: T, _context: ClassDecoratorContext<T>) => T;
3
+ export declare const Web: typeof platformDecorator;
4
+ export declare const WebMobile: typeof platformDecorator;
5
+ export declare const WebPc: typeof platformDecorator;
6
+ export declare const Miniprogram: typeof platformDecorator;
7
+ export declare const MiniprogramWeixin: typeof platformDecorator;
8
+ export declare const MiniprogramAlipay: typeof platformDecorator;
9
+ export declare const MiniprogramBytedance: typeof platformDecorator;
10
+ export declare const MiniprogramXiaohongshu: typeof platformDecorator;
11
+ export declare const App: typeof platformDecorator;
12
+ export declare const AppIos: typeof platformDecorator;
13
+ export declare const AppAndroid: typeof platformDecorator;
14
+ export declare const AppHarmony: typeof platformDecorator;
15
+ export {};
@@ -0,0 +1,32 @@
1
+ /** Application platform, independent of the generator backend. */
2
+ export declare enum Platform {
3
+ Web = "web",
4
+ WebMobile = "web-mobile",
5
+ WebPc = "web-pc",
6
+ MiniprogramWeixin = "miniprogram-weixin",
7
+ MiniprogramAlipay = "miniprogram-alipay",
8
+ MiniprogramBytedance = "miniprogram-bytedance",
9
+ MiniprogramXiaohongshu = "miniprogram-xiaohongshu",
10
+ AppIos = "app-ios",
11
+ AppAndroid = "app-android",
12
+ AppHarmony = "app-harmony"
13
+ }
14
+ export type PlatformName = `${Platform}`;
15
+ export type PlatformFamily = 'web' | 'miniprogram' | 'app';
16
+ /** Component markers may identify a concrete platform or its shared family. */
17
+ export type ComponentPlatform = Platform | PlatformFamily;
18
+ export type BackendTarget = 'web' | 'mp-weixin' | 'mp-alipay' | 'mp-bytedance' | 'mp-xiaohongshu' | 'app-ios' | 'app-android' | 'app-harmony';
19
+ export interface PlatformDefinition {
20
+ platform: Platform;
21
+ decorator: string;
22
+ family: PlatformFamily;
23
+ target: BackendTarget;
24
+ }
25
+ export declare const PLATFORM_DEFINITIONS: readonly PlatformDefinition[];
26
+ /** Family markers do not select a concrete generator and are not build targets. */
27
+ export declare const COMPONENT_PLATFORM_DEFINITIONS: readonly {
28
+ platform: ComponentPlatform;
29
+ decorator: string;
30
+ }[];
31
+ export declare function normalizePlatform(value: unknown): Platform | undefined;
32
+ export declare function getPlatformDefinition(value: Platform): PlatformDefinition;
@@ -0,0 +1,3 @@
1
+ export * from './definitions';
2
+ export * from './decorators';
3
+ export * from './bindings';
@@ -0,0 +1,4 @@
1
+ import{$a as n,Qa as c,Ra as d,Sa as e,Ta as f,Ua as g,Va as h,Wa as i,Xa as j,Ya as k,Za as l,_a as m,ab as o,bb as p,cb as q,db as r,eb as s}from"../index-fxpn7qkh.js";import{fb as a,gb as b}from"../index-dse0chhf.js";export{p as App,r as AppAndroid,s as AppHarmony,q as AppIos,e as COMPONENT_PLATFORM_DEFINITIONS,k as Miniprogram,m as MiniprogramAlipay,n as MiniprogramBytedance,l as MiniprogramWeixin,o as MiniprogramXiaohongshu,d as PLATFORM_DEFINITIONS,c as Platform,h as Web,i as WebMobile,j as WebPc,a as bindComponentImplementations,b as createComponentInstance,g as getPlatformDefinition,f as normalizePlatform};
2
+
3
+ //# debugId=D183834A7310234E64756E2164756E21
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "D183834A7310234E64756E2164756E21",
8
+ "names": []
9
+ }
@@ -1,4 +1,4 @@
1
- import{Fa as a,Ga as b,Ha as c,Ia as d,Ja as e,Ka as f,La as g,Ma as h,Na as i,Oa as j}from"../index-xp7y2crt.js";export{g as InterceptorManager,h as Request,a as RequestError,d as adapters,e as createAdapter,i as createRequest,c as detectPlatform,b as isRequestError,j as request,f as resolveAdapter};
1
+ import{Ga as a,Ha as b,Ia as c,Ja as d,Ka as e,La as f,Ma as g,Na as h,Oa as i,Pa as j}from"../index-jq6fv0br.js";export{g as InterceptorManager,h as Request,a as RequestError,d as adapters,e as createAdapter,i as createRequest,c as detectPlatform,b as isRequestError,j as request,f as resolveAdapter};
2
2
 
3
- //# debugId=3E481CB7C031442F64756E2164756E21
3
+ //# debugId=883CE296895C1FE164756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "3E481CB7C031442F64756E2164756E21",
7
+ "debugId": "883CE296895C1FE164756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,11 +1,11 @@
1
- import { AnyComponentConstructor, Component } from '../core/component';
1
+ import { AnyComponentReference, Component } from '../core/component';
2
2
  import { OneApp } from '../core/app';
3
3
  import type { VNode } from '../core/vnode';
4
4
  export { useRouter } from './instance';
5
5
  export type RouteMeta = Record<string, unknown>;
6
6
  export interface RouteRecord {
7
7
  path: string;
8
- component?: AnyComponentConstructor;
8
+ component?: AnyComponentReference;
9
9
  redirect?: string;
10
10
  name?: string;
11
11
  meta?: RouteMeta;
@@ -1,4 +1,4 @@
1
- import{oa as a,pa as b,qa as c,ra as d,sa as e}from"../index-rmgr0qs2.js";import"../index-qmpx307q.js";export{a as Router,b as RouterLink,c as RouterView,d as createRouter,e as useRouter};
1
+ import{oa as a,pa as b,qa as c,ra as d,sa as e}from"../index-5dxcnfw6.js";import"../index-ryj080w6.js";import"../index-dse0chhf.js";export{a as Router,b as RouterLink,c as RouterView,d as createRouter,e as useRouter};
2
2
 
3
- //# debugId=C414913A2B2EE6FA64756E2164756E21
3
+ //# debugId=B7413070AF1615C764756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "C414913A2B2EE6FA64756E2164756E21",
7
+ "debugId": "B7413070AF1615C764756E2164756E21",
8
8
  "names": []
9
9
  }
@@ -1,4 +1,4 @@
1
- import{Da as f,Ea as m}from"../index-qmpx307q.js";export{f as StyleManager,m as renderStyleSheet};
1
+ import{Ea as f,Fa as m}from"../index-ryj080w6.js";export{f as StyleManager,m as renderStyleSheet};
2
2
 
3
- //# debugId=17CBBF4901184E9464756E2164756E21
3
+ //# debugId=7E9C0674F57BBB7C64756E2164756E21
4
4
  //# sourceMappingURL=index.js.map
@@ -4,6 +4,6 @@
4
4
  "sourcesContent": [
5
5
  ],
6
6
  "mappings": "",
7
- "debugId": "17CBBF4901184E9464756E2164756E21",
7
+ "debugId": "7E9C0674F57BBB7C64756E2164756E21",
8
8
  "names": []
9
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "transone",
3
- "version": "0.4.0",
3
+ "version": "0.8.0",
4
4
  "description": "TransOne 是跨端前端框架:一份 TypeScript 源码,编译期静态转换为 Web 与多端小程序原生产物,产物不携带框架运行时",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -26,6 +26,10 @@
26
26
  "./request": {
27
27
  "import": "./dist/request/index.js",
28
28
  "types": "./dist/request/index.d.ts"
29
+ },
30
+ "./platform": {
31
+ "import": "./dist/platform/index.js",
32
+ "types": "./dist/platform/index.d.ts"
29
33
  }
30
34
  },
31
35
  "scripts": {