@doubao-apps/kit 0.0.23 → 0.0.24

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/971.js CHANGED
@@ -18,7 +18,7 @@ const View = ${v}({
18
18
  }
19
19
  });
20
20
 
21
- const FC = bootstrapReactLynx(View, viewId);
21
+ const FC = bootstrapReactLynx(View, viewId, ${JSON.stringify(!a)});
22
22
 
23
23
  root.render(<FC />);`,e?`
24
24
  if (import.meta.webpackHot) {
@@ -60,35 +60,35 @@ ${a}
60
60
  Please upgrade ${x} to latest version.
61
61
 
62
62
  See ${ar(av().yellow("Upgrade Rspeedy"),A)} for more details.
63
- `)}let{LynxTemplatePlugin:s}=n;r.plugin("lynx:config").use(an,[{LynxTemplatePlugin:s,config:x,compilerOptionsKeys:a,configKeys:e}])})}}}({enableMultiTouch:!0,enableNewGesture:!0}),...aF()?[]:[C({externals:e_(n===_l.DEV),globalObject:"lynx"})],Z(),K(),function x(_,a,e,r){return{name:x.name,setup(x){x.modifyBundlerChain(t=>{let A=x.useExposed(Symbol.for("LynxTemplatePlugin"));t.plugin(a1.name).use(a1,[A.LynxTemplatePlugin,_,a,e,r])})}}}(s,i,x.context.rootPath,x.context.signingEncryptionOptions),(_=this.pluginSystem,a=x.context,{name:"output-plugin",setup(x){let e={pluginSystem:_,context:a};x.modifyBundlerChain(x=>{x.plugin("output-plugin").use(a5,[e])})}}),az({context:x.context}),(e=this.pluginSystem,r=x.context,{name:"view-hooks-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin("view-hooks-plugin").use(a7,[{pluginSystem:e,context:r}])})}}),(({getMainThreadAssetPath:x,getMainThreadMapAssetPath:_,engineVersion:a,distPath:e,metadata:r,signingEncryptionOptions:t})=>({name:"lynx:encode-worker",async setup(A){aw()||A.modifyBundlerChain(A=>{A.plugin(a0.name).use(a0,[{getMainThreadAssetPath:x,getMainThreadMapAssetPath:_,engineVersion:a,distPath:e,metadata:r,signingEncryptionOptions:t}]).end()})}}))({getMainThreadAssetPath:()=>x.context.mainThreadAssetPath,getMainThreadMapAssetPath:()=>x.context.mainThreadMapAssetPath,distPath:x.context.rootPath,metadata:x.context.metadata,signingEncryptionOptions:x.context.signingEncryptionOptions}),...x.rsbuildPlugins||[]]});return await this.pluginSystem.callViewHooks("beforeBuild",{buildConfig:l}),l}}async function en(x,_){let a=new eA(_),e=await a.createConfig({config:x}),r=await k({rspeedyConfig:e,cwd:x.context.appDirectory});return r.removePlugins(["lynx:react-alias"]),r}class es extends x9{toString(){return this.contents.join("\n").trim()}}class ec{options;constructor(x){this.options=x}apply(x){x.hooks.make.tapPromise(ec.name,async()=>{await this.options.pluginSystem.callWorkerHooks("collectMetaData",{collector:this.options.context.metadata})}),x.hooks.compilation.tap(ec.name,x=>{x.hooks.optimizeTree.tapPromise(ec.name,async _=>{await this.options.pluginSystem.callWorkerHooks("build",{metadata:this.options.context.metadata,fileDependencies:x.fileDependencies})})}),x.hooks.shouldEmit.tap(ec.name,()=>!1),x.hooks.done.tapPromise(ec.name,async x=>{await this.options.pluginSystem.callWorkerHooks("afterBuild",{stats:x})}),x.hooks.thisCompilation.tap(ec.name,_=>{_.hooks.processAssets.tap({name:ec.name,stage:x.webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{let{context:x}=this.options;_.getAssets().forEach(_=>{let{name:a}=_;return a.endsWith(".js")?x.setMainThreadAssetPath(a):a.endsWith(".js.map")?x.setMainThreadMapAssetPath(a):void 0})})})}}class ei{pluginSystem;constructor(x){this.pluginSystem=x}async createEntry(){let{entry:x}=await this.pluginSystem.callWorkerHooks("modifyEntryOption",{entry:{[_D]:new es(`.${n.sep}${_D}.js`,"")}});return x}async createConfig({config:x}){var _,a,e;let r;await this.pluginSystem.callWorkerHooks("modifyEnvironment",{environment:x.context.environment});let t=await this.createEntry(),A=N({root:x.context.appDirectory,source:{...x.options.source,entry:Object.fromEntries(Object.entries(t).map(([x,_])=>[x,{import:_.filename,layer:q.BACKGROUND}])),define:{...x.options.source?.define,__DEV__:JSON.stringify(!aN()),__MAIN_PROCESS__:JSON.stringify(!0),__LEPUS__:JSON.stringify(!1),__LYNXVIEW__:JSON.stringify(!1),"process.env":"({})"}},resolve:{alias:{...x.options.source?.alias,...x.options.resolve?.alias,"@byted-doubao-apps/framework$":"@byted-doubao-apps/framework/worker"}},output:{cleanDistPath:!1,target:"web-worker",distPath:{root:x.context.rootPath,js:"base"},filename:{js:aw()?"[name].js":"[name].template.js"},sourceMap:{js:"production"===process.env.NODE_ENV?"hidden-source-map":"cheap-module-source-map"},legalComments:"none",assetPrefix:"./",overrideBrowserslist:aN()?_P:_F,polyfill:"usage"},dev:{hmr:!1},tools:{htmlPlugin:!1,rspack:{watchOptions:{ignored:["**/.git"]},plugins:[new I.experiments.VirtualModulesPlugin(Object.fromEntries(Object.entries(t).map(([x,_])=>[_.filename,_.toString()]))),(_=x.context.appDirectory,r=n.join(_,_3),{name:"worker-style-proxy-plugin",apply(x){new x.webpack.experiments.VirtualModulesPlugin({[r]:"export {};\n"}).apply(x),x.hooks.normalModuleFactory.tap("worker-style-proxy-plugin",_=>{_.hooks.beforeResolve.tap({name:"worker-style-proxy-plugin",stage:-1e3},_=>{var a;let e;return a=_4.get(x),void((e=function(x){let _=x.request;if(!_||!_2.test(_))return;let a=/^(.*?)([?#].*)?$/.exec(_),e=a?.[1]??_,r=a?.[2]??"";return n.isAbsolute(e)?`${e}${r}`:e.startsWith(".")?`${n.resolve(x.context??process.cwd(),e)}${r}`:_}(_))&&(a?.add(e),_.request=r))})})}}),new I.optimize.LimitChunkCountPlugin({maxChunks:1}),new z]},swc:{jsc:{target:"es2020"},env:void 0}},plugins:[Y(x.options.tools?.tsChecker),(a=this.pluginSystem,e=x.context,{name:"worker-hooks-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin("worker-hooks-plugin").use(ec,[{pluginSystem:a,context:e}])})}}),{name:"expose-layers",setup(x){x.expose(Symbol.for("LAYERS"),q)}},...aF()?[]:[C({externals:e_(x.commandType===_l.DEV),globalObject:"lynx"})]],performance:{bundleAnalyze:x.commandType===_l.ANALYZE?{}:void 0,printFileSize:aI()}});return await this.pluginSystem.callWorkerHooks("beforeBuild",{buildConfig:A}),A}}async function eo(x,_){let a=new ei(_),e=await a.createConfig({config:x});return await S({cwd:x.context.appDirectory,config:e})}async function ev(x,_){var a;let e=await eo(x,_),[r]=await e.initConfigs({action:x.commandType===_l.DEV?"dev":"build"});return await en({...x,rsbuildPlugins:[...x.rsbuildPlugins||[],(a=x.context,{name:"worker-sub-compiler-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin(_6.name).use(_6,[{workerConfig:r,context:a}])})}})]},_)}function el(){return process.env.X_TT_ENV?{"x-use-ppe":"1","x-tt-env":process.env.X_TT_ENV}:{}}let ef=x=>{try{return L.statSync(x,{throwIfNoEntry:!1})?.isFile()}catch(x){return!1}};async function eb({internal:x}){let _=`https://${x?"doubao-developer.bytedance.net":"hello.doubao-dev.com"}/developer/resource_api/apps/:app_key/dek/public_key`;try{let x=await fetch(_,{method:"GET",headers:{...el()}}),a=x.headers.get("x-tt-logid")||"";if(!x.ok){let _=await x.text(),e=JSON.stringify({code:x.status,message:"HTTP Error",data:_,log_id:a});throw Error(e)}let e=await x.json();if(0!==e.code){let x=JSON.stringify({...e,log_id:a});throw Error(x)}return e}catch(x){throw console.error("getKEK error:",x?.message||x),x}}async function ed(x,_){if(!aP()){if(x)return x;if(aN()&&_===_l.DEPLOY){let{data:x}=await eb({internal:!1}),_=Number(Object.keys(x.keys)[0]);return{signing:{enabled:!1},encryption:{enabled:!0,wrap_key:x.keys[_],key_id:_,salt:""}}}}}async function eE({cwd:x=process.cwd(),customConfigFile:_}){let a=function(x,_){if(_){let a=xc.default.isAbsolute(_)?_:xc.default.resolve(x,_);if(xU.default.existsSync(a))return a;y.warn(`Cannot find config file: ${W.dim(a)}
64
- `)}for(let _ of _K.map(_=>xc.default.resolve(x,`${_X}${_}`)))if(ef(_))return _;return!1}(x,_);if(!a)return{};try{let x=xx(A(import.meta.url),{requireCache:!1,interopDefault:!0});return await x.import(a,{default:!0})}catch(x){throw y.error(`Failed to load file: ${W.dim(a)}`),x}}function em(x,_,a=!1){let e=x8(_);return Object.keys(x).reduce((r,t)=>{let{filename:A}=x[t],s=`${xi}${n.sep}${t}${n.extname(A)}`,c=x1(n.join(_,s,".."),A);return r[t]=new x9(s),r[t].appendImports({moduleSpecifier:"@lynx-js/react",importSpecifiers:[{propertyName:"root",name:"root"}]},{moduleSpecifier:c,importSpecifiers:[{propertyName:"default",name:"View"}]},{moduleSpecifier:e,importSpecifiers:[{propertyName:"bootstrapReactLynx",name:"bootstrapReactLynx"},{propertyName:"getViewContext",name:"getViewContext"}]}),r[t].appendContent(`
63
+ `)}let{LynxTemplatePlugin:s}=n;r.plugin("lynx:config").use(an,[{LynxTemplatePlugin:s,config:x,compilerOptionsKeys:a,configKeys:e}])})}}}({enableMultiTouch:!0,enableNewGesture:!0}),...aF()?[]:[C({externals:e_(n===_l.DEV),globalObject:"lynx"})],Z(),K(),function x(_,a,e,r){return{name:x.name,setup(x){x.modifyBundlerChain(t=>{let A=x.useExposed(Symbol.for("LynxTemplatePlugin"));t.plugin(a1.name).use(a1,[A.LynxTemplatePlugin,_,a,e,r])})}}}(s,i,x.context.rootPath,x.context.signingEncryptionOptions),(_=this.pluginSystem,a=x.context,{name:"output-plugin",setup(x){let e={pluginSystem:_,context:a};x.modifyBundlerChain(x=>{x.plugin("output-plugin").use(a5,[e])})}}),az({context:x.context}),(e=this.pluginSystem,r=x.context,{name:"view-hooks-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin("view-hooks-plugin").use(a7,[{pluginSystem:e,context:r}])})}}),(({getMainThreadAssetPath:x,getMainThreadMapAssetPath:_,engineVersion:a,distPath:e,metadata:r,signingEncryptionOptions:t})=>({name:"lynx:encode-worker",async setup(A){aw()||A.modifyBundlerChain(A=>{A.plugin(a0.name).use(a0,[{getMainThreadAssetPath:x,getMainThreadMapAssetPath:_,engineVersion:a,distPath:e,metadata:r,signingEncryptionOptions:t}]).end()})}}))({getMainThreadAssetPath:()=>x.context.mainThreadAssetPath,getMainThreadMapAssetPath:()=>x.context.mainThreadMapAssetPath,distPath:x.context.rootPath,metadata:x.context.metadata,signingEncryptionOptions:x.context.signingEncryptionOptions}),...x.rsbuildPlugins||[]]});return await this.pluginSystem.callViewHooks("beforeBuild",{buildConfig:l}),l}}async function en(x,_){let a=new eA(_),e=await a.createConfig({config:x}),r=await k({rspeedyConfig:e,cwd:x.context.appDirectory});return r.removePlugins(["lynx:react-alias"]),r}class es extends x9{toString(){return this.contents.join("\n").trim()}}class ec{options;constructor(x){this.options=x}apply(x){x.hooks.make.tapPromise(ec.name,async()=>{await this.options.pluginSystem.callWorkerHooks("collectMetaData",{collector:this.options.context.metadata})}),x.hooks.compilation.tap(ec.name,x=>{x.hooks.optimizeTree.tapPromise(ec.name,async _=>{await this.options.pluginSystem.callWorkerHooks("build",{metadata:this.options.context.metadata,fileDependencies:x.fileDependencies})})}),x.hooks.shouldEmit.tap(ec.name,()=>!1),x.hooks.done.tapPromise(ec.name,async x=>{await this.options.pluginSystem.callWorkerHooks("afterBuild",{stats:x})}),x.hooks.thisCompilation.tap(ec.name,_=>{_.hooks.processAssets.tap({name:ec.name,stage:x.webpack.Compilation.PROCESS_ASSETS_STAGE_SUMMARIZE},()=>{let{context:x}=this.options;_.getAssets().forEach(_=>{let{name:a}=_;return a.endsWith(".js")?x.setMainThreadAssetPath(a):a.endsWith(".js.map")?x.setMainThreadMapAssetPath(a):void 0})})})}}class ei{pluginSystem;constructor(x){this.pluginSystem=x}async createEntry(){let{entry:x}=await this.pluginSystem.callWorkerHooks("modifyEntryOption",{entry:{[_D]:new es(`.${n.sep}${_D}.js`,"")}});return x}async createConfig({config:x}){var _,a,e;let r;await this.pluginSystem.callWorkerHooks("modifyEnvironment",{environment:x.context.environment});let t=await this.createEntry(),A=N({root:x.context.appDirectory,source:{...x.options.source,entry:Object.fromEntries(Object.entries(t).map(([x,_])=>[x,{import:_.filename,layer:q.BACKGROUND}])),define:{...x.options.source?.define,__DEV__:JSON.stringify(!aN()),__MAIN_PROCESS__:JSON.stringify(!0),__LEPUS__:JSON.stringify(!1),__LYNXVIEW__:JSON.stringify(!1),"process.env":"({})"}},resolve:{alias:{...x.options.source?.alias,...x.options.resolve?.alias,"@byted-doubao-apps/framework$":"@byted-doubao-apps/framework/worker"}},output:{minify:!1,cleanDistPath:!1,target:"web-worker",distPath:{root:x.context.rootPath,js:"base"},filename:{js:aw()?"[name].js":"[name].template.js"},sourceMap:{js:"production"===process.env.NODE_ENV?"hidden-source-map":"cheap-module-source-map"},legalComments:"none",assetPrefix:"./",overrideBrowserslist:aN()?_P:_F,polyfill:"usage"},dev:{hmr:!1},tools:{htmlPlugin:!1,rspack:{watchOptions:{ignored:["**/.git"]},plugins:[new I.experiments.VirtualModulesPlugin(Object.fromEntries(Object.entries(t).map(([x,_])=>[_.filename,_.toString()]))),(_=x.context.appDirectory,r=n.join(_,_3),{name:"worker-style-proxy-plugin",apply(x){new x.webpack.experiments.VirtualModulesPlugin({[r]:"export {};\n"}).apply(x),x.hooks.normalModuleFactory.tap("worker-style-proxy-plugin",_=>{_.hooks.beforeResolve.tap({name:"worker-style-proxy-plugin",stage:-1e3},_=>{var a;let e;return a=_4.get(x),void((e=function(x){let _=x.request;if(!_||!_2.test(_))return;let a=/^(.*?)([?#].*)?$/.exec(_),e=a?.[1]??_,r=a?.[2]??"";return n.isAbsolute(e)?`${e}${r}`:e.startsWith(".")?`${n.resolve(x.context??process.cwd(),e)}${r}`:_}(_))&&(a?.add(e),_.request=r))})})}}),new I.optimize.LimitChunkCountPlugin({maxChunks:1}),new z]},swc:{jsc:{target:"es2020"},env:void 0}},plugins:[Y(x.options.tools?.tsChecker),(a=this.pluginSystem,e=x.context,{name:"worker-hooks-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin("worker-hooks-plugin").use(ec,[{pluginSystem:a,context:e}])})}}),{name:"expose-layers",setup(x){x.expose(Symbol.for("LAYERS"),q)}},...aF()?[]:[C({externals:e_(x.commandType===_l.DEV),globalObject:"lynx"})]],performance:{bundleAnalyze:x.commandType===_l.ANALYZE?{}:void 0,printFileSize:aI()}});return await this.pluginSystem.callWorkerHooks("beforeBuild",{buildConfig:A}),A}}async function eo(x,_){let a=new ei(_),e=await a.createConfig({config:x});return await S({cwd:x.context.appDirectory,config:e})}async function ev(x,_){var a;let e=await eo(x,_),[r]=await e.initConfigs({action:x.commandType===_l.DEV?"dev":"build"});return await en({...x,rsbuildPlugins:[...x.rsbuildPlugins||[],(a=x.context,{name:"worker-sub-compiler-plugin",setup(x){x.modifyBundlerChain(x=>{x.plugin(_6.name).use(_6,[{workerConfig:r,context:a}])})}})]},_)}function el(){return process.env.X_TT_ENV?{"x-use-ppe":"1","x-tt-env":process.env.X_TT_ENV}:{}}let ef=x=>{try{return L.statSync(x,{throwIfNoEntry:!1})?.isFile()}catch(x){return!1}};async function eb({internal:x}){let _=`https://${x?"doubao-developer.bytedance.net":"hello.doubao-dev.com"}/developer/resource_api/apps/:app_key/dek/public_key`;try{let x=await fetch(_,{method:"GET",headers:{...el()}}),a=x.headers.get("x-tt-logid")||"";if(!x.ok){let _=await x.text(),e=JSON.stringify({code:x.status,message:"HTTP Error",data:_,log_id:a});throw Error(e)}let e=await x.json();if(0!==e.code){let x=JSON.stringify({...e,log_id:a});throw Error(x)}return e}catch(x){throw console.error("getKEK error:",x?.message||x),x}}async function ed(x,_){if(!aP()){if(x)return x;if(aN()&&_===_l.DEPLOY){let{data:x}=await eb({internal:!1}),_=Number(Object.keys(x.keys)[0]);return{signing:{enabled:!1},encryption:{enabled:!0,wrap_key:x.keys[_],key_id:_,salt:""}}}}}async function eE({cwd:x=process.cwd(),customConfigFile:_}){let a=function(x,_){if(_){let a=xc.default.isAbsolute(_)?_:xc.default.resolve(x,_);if(xU.default.existsSync(a))return a;y.warn(`Cannot find config file: ${W.dim(a)}
64
+ `)}for(let _ of _K.map(_=>xc.default.resolve(x,`${_X}${_}`)))if(ef(_))return _;return!1}(x,_);if(!a)return{};try{let x=xx(A(import.meta.url),{requireCache:!1,interopDefault:!0});return await x.import(a,{default:!0})}catch(x){throw y.error(`Failed to load file: ${W.dim(a)}`),x}}function em(x,_,a=!1,e=!1){let r=x8(_);return Object.keys(x).reduce((t,A)=>{let{filename:s}=x[A],c=`${xi}${n.sep}${A}${n.extname(s)}`,i=x1(n.join(_,c,".."),s);return t[A]=new x9(c),t[A].appendImports({moduleSpecifier:"@lynx-js/react",importSpecifiers:[{propertyName:"root",name:"root"}]},{moduleSpecifier:i,importSpecifiers:[{propertyName:"default",name:"View"}]},{moduleSpecifier:r,importSpecifiers:[{propertyName:"bootstrapReactLynx",name:"bootstrapReactLynx"},{propertyName:"getViewContext",name:"getViewContext"}]}),t[A].appendContent(`
65
65
  const viewId = __LEPUS__ ? '' : getViewContext()?.viewId ?? '';
66
66
 
67
- const FC = bootstrapReactLynx(View, viewId);
67
+ const FC = bootstrapReactLynx(View, viewId, ${JSON.stringify(e)});
68
68
 
69
69
  root.render(<FC />);
70
- `),a&&r[t].appendContent(`
70
+ `),a&&t[A].appendContent(`
71
71
  if (import.meta.webpackHot) {
72
72
  import.meta.webpackHot.accept()
73
73
  }
74
- `),r},{})}function eu(x){return x?.type==="Identifier"}function eh(x){return x?.type==="StringLiteral"}function ep(x){return x?.type==="NumericLiteral"}function ej(x){return x?.type==="BooleanLiteral"}function eS(x){return x?.type==="ObjectExpression"}function eg(x){return x?.type==="ArrayExpression"}function ey(x){return x?.type==="CallExpression"}function eN(x){return x?.type==="KeyValueProperty"}function eI(x){return x?.type==="SpreadElement"}function eB(x){return x.value}let eF=x=>{if(eS(x)){let _={};for(let a of x.properties){if(eI(a)||!eN(a))return null;let{key:x,value:e}=a;if(!eu(x)&&!eh(x))return null;let r=eB(x);eS(e)||eg(e)?_[r]=eF(e):eh(e)||ep(e)||ej(e)?_[r]=e.value:eu(e)&&(_[r]=e)}return _}if(eg(x)){let _=[];for(let a of x.elements){if(!a||a.spread)return null;let x=a.expression;eS(x)||eg(x)?_.push(eF(x)):eh(x)||ep(x)||ej(x)?_.push(x.value):eu(x)&&_.push(x)}return _}};function eP(x,_,a){let{widgets:e,pages:r,collector:t,define:A}=a,n=r[_],s=e[_],c=x;return(n||s)&&(A&&Object.keys(A).length>0&&(c=Object.keys(A).reduce((x,_)=>x.replaceAll(_,A[_]),x)),xr(xe(c,{syntax:"typescript",tsx:!0,decorators:!0}),{CallExpression(x){if(eu(x.callee)&&["defineWidget","definePage"].includes(x.callee.value)){let _=x.arguments[0]?.expression;if(eS(_)){for(let x of _.properties)if(eN(x)&&eu(x.key)&&"aiMeta"===x.key.value){let _=eF(x.value);n?t.addPageMeta(n,_):s&&t.addWidgetMeta(s,_)}}}eu(x.callee)&&x.callee.value in xs&&(s&&t.addWidgetMeta(s,xs[x.callee.value]),n&&t.addPageMeta(n,xs[x.callee.value]))}})),x}async function ew({pages:x,widgets:_,entries:a,define:e={},collector:r}){let t={collector:r,widgets:Object.fromEntries(Object.entries(_).map(([x,_])=>[_.filename,x])),pages:Object.fromEntries(Object.entries(x).map(([x,_])=>[_.filename,x])),define:e};await Promise.all(Object.values({..._,...x}).filter(({filename:x})=>/\.(ts|tsx|jsx|js)$/i.test(x)).map(({filename:x,isVirtualFile:_})=>{if(_){let _=t.widgets[x]??t.pages[x],e=a[`${xv}/${_}`]??a[`${xv}/${_}`];return e?eP(e.toString(),x,t):void y.warn(`Can not find virtual file ${_}`)}return eP(xU.default.readFileSync(x,"utf-8"),x,t)})).catch(x=>{y.error(x)})}let eL="LynxPlugin",eD={name:eL,async setup(x){let{appDirectory:_,command:a,metadata:e,userConfig:r,widgets:t,pages:A}=x.context,n=Object.keys(t).length>0||Object.keys(A).length>0;if(x.view.hooks.modifyEnvironment.tapPromise(eL,async({environment:x})=>{x.useLynx=n}),n){let n=a===_f.DEV,s={};x.view.hooks.modifyEntryOption.tapPromise({name:eL,stage:x.view.MODIFY_ENTRY_OPTION_STAGE_CREATE_BASE},async({entry:x})=>(s=x=Object.assign(x,Object.fromEntries([...Object.entries({...em(t,_,n)}).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries({...em(A,_,n)}).map(([x,_])=>[`${xv}/${x}`,_])])),{entry:x})),x.view.hooks.collectMetaData.tapPromise(eL,async({collector:x})=>{await ew({widgets:t,pages:A,entries:s,define:r.source?.define,collector:x})}),x.assets.hooks.beforeEmit.tapPromise({name:eL,stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_VIEW_ASSETS},async({assets:_})=>{let{widgets:a,pages:r,app:t}=e.getInstance();Object.keys(a).forEach(e=>{let r=`${xv}/${e}/template.js`,t=_.getAsset(r),A=a[e];if(A&&t){let a=`${A.metadata.id}/template.js`;t.destination=a,_.getManifestAsset(x.context.manifestAssetPath).appendWidget(A.toManifest(a,t.hashCode,xA.LYNX))}}),Object.keys(r).forEach(a=>{let e=r[a],A=`${xv}/${a}/template.js`,n=_.getAsset(A);if(e&&n){let a=`${t.metadata.package}/${e.metadata.id}/template.js`;n.destination=a,_.getManifestAsset(x.context.manifestAssetPath).appendPage(e.toManifest(a,n.hashCode,xA.LYNX))}})}),x.assets.hooks.afterEmit.tapPromise(eL,async({assets:x})=>{}),x.view.hooks.afterBuild.tapPromise(eL,async({stats:x})=>{})}}},ek=({dirname:x,app:_,functionalTools:a})=>{let e=[],r=[],t=x8(xc.default.resolve(_,"..",".."));return Object.keys(a).forEach((_,t)=>{a[_]&&(e.push(`Tool${t}`),r.push(`import Tool${t} from "${x1(x,a[_])}";`))}),`
74
+ `),t},{})}function eu(x){return x?.type==="Identifier"}function eh(x){return x?.type==="StringLiteral"}function ep(x){return x?.type==="NumericLiteral"}function ej(x){return x?.type==="BooleanLiteral"}function eS(x){return x?.type==="ObjectExpression"}function eg(x){return x?.type==="ArrayExpression"}function ey(x){return x?.type==="CallExpression"}function eN(x){return x?.type==="KeyValueProperty"}function eI(x){return x?.type==="SpreadElement"}function eB(x){return x.value}let eF=x=>{if(eS(x)){let _={};for(let a of x.properties){if(eI(a)||!eN(a))return null;let{key:x,value:e}=a;if(!eu(x)&&!eh(x))return null;let r=eB(x);eS(e)||eg(e)?_[r]=eF(e):eh(e)||ep(e)||ej(e)?_[r]=e.value:eu(e)&&(_[r]=e)}return _}if(eg(x)){let _=[];for(let a of x.elements){if(!a||a.spread)return null;let x=a.expression;eS(x)||eg(x)?_.push(eF(x)):eh(x)||ep(x)||ej(x)?_.push(x.value):eu(x)&&_.push(x)}return _}};function eP(x,_,a){let{widgets:e,pages:r,collector:t,define:A}=a,n=r[_],s=e[_],c=x;return(n||s)&&(A&&Object.keys(A).length>0&&(c=Object.keys(A).reduce((x,_)=>x.replaceAll(_,A[_]),x)),xr(xe(c,{syntax:"typescript",tsx:!0,decorators:!0}),{CallExpression(x){if(eu(x.callee)&&["defineWidget","definePage"].includes(x.callee.value)){let _=x.arguments[0]?.expression;if(eS(_)){for(let x of _.properties)if(eN(x)&&eu(x.key)&&"aiMeta"===x.key.value){let _=eF(x.value);n?t.addPageMeta(n,_):s&&t.addWidgetMeta(s,_)}}}eu(x.callee)&&x.callee.value in xs&&(s&&t.addWidgetMeta(s,xs[x.callee.value]),n&&t.addPageMeta(n,xs[x.callee.value]))}})),x}async function ew({pages:x,widgets:_,entries:a,define:e={},collector:r}){let t={collector:r,widgets:Object.fromEntries(Object.entries(_).map(([x,_])=>[_.filename,x])),pages:Object.fromEntries(Object.entries(x).map(([x,_])=>[_.filename,x])),define:e};await Promise.all(Object.values({..._,...x}).filter(({filename:x})=>/\.(ts|tsx|jsx|js)$/i.test(x)).map(({filename:x,isVirtualFile:_})=>{if(_){let _=t.widgets[x]??t.pages[x],e=a[`${xv}/${_}`]??a[`${xv}/${_}`];return e?eP(e.toString(),x,t):void y.warn(`Can not find virtual file ${_}`)}return eP(xU.default.readFileSync(x,"utf-8"),x,t)})).catch(x=>{y.error(x)})}let eL="LynxPlugin",eD={name:eL,async setup(x){let{appDirectory:_,command:a,metadata:e,userConfig:r,widgets:t,pages:A}=x.context,n=Object.keys(t).length>0||Object.keys(A).length>0;if(x.view.hooks.modifyEnvironment.tapPromise(eL,async({environment:x})=>{x.useLynx=n}),n){let n=a===_f.DEV,s={};x.view.hooks.modifyEntryOption.tapPromise({name:eL,stage:x.view.MODIFY_ENTRY_OPTION_STAGE_CREATE_BASE},async({entry:x})=>(s=x=Object.assign(x,Object.fromEntries([...Object.entries({...em(t,_,n,!1)}).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries({...em(A,_,n,!0)}).map(([x,_])=>[`${xv}/${x}`,_])])),{entry:x})),x.view.hooks.collectMetaData.tapPromise(eL,async({collector:x})=>{await ew({widgets:t,pages:A,entries:s,define:r.source?.define,collector:x})}),x.assets.hooks.beforeEmit.tapPromise({name:eL,stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_VIEW_ASSETS},async({assets:_})=>{let{widgets:a,pages:r,app:t}=e.getInstance();Object.keys(a).forEach(e=>{let r=`${xv}/${e}/template.js`,t=_.getAsset(r),A=a[e];if(A&&t){let a=`${A.metadata.id}/template.js`;t.destination=a,_.getManifestAsset(x.context.manifestAssetPath).appendWidget(A.toManifest(a,t.hashCode,xA.LYNX))}}),Object.keys(r).forEach(a=>{let e=r[a],A=`${xv}/${a}/template.js`,n=_.getAsset(A);if(e&&n){let a=`${t.metadata.package}/${e.metadata.id}/template.js`;n.destination=a,_.getManifestAsset(x.context.manifestAssetPath).appendPage(e.toManifest(a,n.hashCode,xA.LYNX))}})}),x.assets.hooks.afterEmit.tapPromise(eL,async({assets:x})=>{}),x.view.hooks.afterBuild.tapPromise(eL,async({stats:x})=>{})}}},ek=({dirname:x,app:_,functionalTools:a})=>{let e=[],r=[],t=x8(xc.default.resolve(_,"..",".."));return Object.keys(a).forEach((_,t)=>{a[_]&&(e.push(`Tool${t}`),r.push(`import Tool${t} from "${x1(x,a[_])}";`))}),`
75
75
  import { Applet } from "${t}";
76
76
  import App from "${x1(x,_)}";
77
77
 
78
78
  ${r.join("\n")}
79
79
 
80
80
  new Applet(App, [${e.join(", ")}]).bootstrap();
81
- `},eT=(x,_,a)=>{let e=ek({dirname:xc.default.dirname(x),app:_,functionalTools:a});return new x9(x,e)},e$=u("fs/promises"),eC=async(x,_="")=>{if(!xU.default.existsSync(x))return{};let a={},e=await e$.default.readdir(x),r=xc.default.basename(x);for(let t of e.filter(x=>!_||x.includes(_))){let _=xc.default.resolve(x,t);if(!xU.default.statSync(_).isDirectory())continue;let e=xc.default.resolve(_,_y),A=xc.default.resolve(_,_N),n=null;xU.default.existsSync(e)?n=e:xU.default.existsSync(A)&&(n=A),n&&(a[`${r}/${t}`]={folderName:t,renderType:xA.REACT_LYNX,filename:n})}return a},eG=async(x,_="")=>{if(!xU.default.existsSync(x))return{viewEntries:{},apiEntries:{}};let a=await eC(x,_),e={},r=xc.default.basename(x),t=xc.default.resolve(x,_j);xU.default.existsSync(t)&&(e[`${r}/${_T}`]={filename:t,folderName:x});let A=xc.default.resolve(x,_p);return xU.default.existsSync(A)&&(e[`${r}/${_k}`]={filename:A,folderName:x}),{viewEntries:a,apiEntries:e}},eq=async(x,_)=>xU.default.existsSync(x)?(await e$.default.readdir(x)).reduce((a,e)=>{let r=xc.default.resolve(x,e);return xU.default.statSync(r).isDirectory()&&xU.default.existsSync(xc.default.resolve(r,_))&&(a[e]=xc.default.resolve(r,_)),a},{}):{},eX=(x,_,a=".jsx")=>Object.keys(x).reduce((e,r)=>(e[r]={renderType:x[r].renderType,folderName:_,filename:xc.default.resolve(_,`${r}${a}`)},e),{});function eK(x){return n.resolve(x,_b)}let eZ=async x=>{let _=n.resolve(x,_h),a=await eq(_,_N),e=eK(x);return{tools:a,app:L.existsSync(e)?e:void 0}},eR=async(x,_="")=>{let a=n.resolve(x,_E),e=n.resolve(x,_m),r=n.resolve(x,_u),[t,A,s]=await Promise.all([eC(a,_),eC(e,_),eG(r,_)]);return{widgets:{...A},pages:{...t},mcpUI:s}};async function eO(x,_,a){let{app:e,tools:r,collector:t,define:A}=a,n=r[_],s=x;(n||e===_)&&(A&&Object.keys(A).length>0&&(s=Object.keys(A).reduce((x,_)=>x.replaceAll(_,A[_]),x)),xr(xe(s,{syntax:"typescript",tsx:!0,decorators:!0}),{CallExpression(x){if(eu(x.callee)&&["defineTool","defineApp"].includes(x.callee.value)){let _=x.arguments[0]?.expression;if(eS(_)){for(let x of _.properties)if(eN(x)&&eu(x.key)&&"aiMeta"===x.key.value){let _=eF(x.value);n?t.addToolMeta(n,_):t.addAppMeta(_)}}}}}))}async function eJ({tools:x,app:_,collector:a,define:e}){let r={collector:a,tools:Object.fromEntries(Object.entries(x).map(([x,_])=>[_,x])),app:_,define:e};xU.default.existsSync(_)?await Promise.all(Object.values({...x,app:_}).filter(x=>/\.(ts|tsx|jsx|js)$/i.test(x)&&xU.default.existsSync(x)).map(x=>eO(xU.default.readFileSync(x,"utf-8"),x,r))):console.error(`app file ${_} not exists`)}let eH={name:"AppletMainPlugin",setup:async x=>{let{app:_,tools:a}=x.context;_&&(x.worker.hooks.modifyEntryOption.tapPromise("AppletMainPlugin",async({entry:e})=>{delete e[_D];let r=eT(`${x.context.appDirectory}${n.sep}${xi}${n.sep}${xF}.js`,_,a);return Object.assign(e,{[xF]:r}),{entry:e}}),x.worker.hooks.modifyEnvironment.tapPromise("AppletMainPlugin",async({environment:x})=>{}),x.worker.hooks.collectMetaData.tapPromise("AppletMainPlugin",async({collector:e})=>{await eJ({tools:a,app:_,collector:e,define:x.context.userConfig.source?.define})}),x.assets.hooks.beforeEmit.tapPromise({name:"AppletMainPlugin",stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_WORKER_ASSETS},async({assets:_})=>{var a,e;let{app:r,tools:t}=x.context.metadata.getInstance(),A=_.getAsset(x.context.mainThreadAssetPath),n=_.getManifestAsset(x.context.manifestAssetPath),{manifest:s}=n,c=[];s.applet.pages.forEach(x=>{c.push(x.digest)}),n.setBasicManifest({manifestVersion:_$,packageName:r.metadata.package,scmVersion:process.env.BUILD_VERSION,versionCode:Date.now().toString(),runtimeVersion:_C});let i=x.context.mainThreadAssetPath,o=r.toManifest({toolsMetadata:t,hashCode:A?.hashCode??(a=A?.hashCode??s?.applet?.digest,e=c.join(""),a2.default.createHash("sha256").update(a+e).digest("hex").substring(0,8)),appRuntimeEntry:i,appRuntimeType:x.context.environment.useLynx?"lynx":"js"});n.setAppletManifest(o)}),x.assets.hooks.afterEmit.tapPromise({name:"AppletMainPlugin",stage:x.assets.AFTER_EMIT_STAGE_PROCESS_WORKER_ASSETS},async({assets:x})=>{}),x.worker.hooks.afterBuild.tapPromise("AppletMainPlugin",async({stats:x})=>{}))}},eV={name:"AppletMainEntryCheckPlugin",setup:async x=>{let{srcDirectory:_}=x.context,a=eK(_);if(!xU.default.existsSync(a))throw Error("ENOENT: no such file or directory")}},eM={name:"McpUIPlugin",async setup(x){let{appDirectory:_,command:a,widgets:e,pages:r,mcpUI:t}=x.context,A=a===_f.DEV,n=Object.keys(t.viewEntries).length>0||Object.keys(t.apiEntries).length>0;x.view.hooks.modifyEnvironment.tapPromise(eM.name,async({environment:x})=>{x.useMcpUI=n}),n&&x.view.hooks.modifyEntryOption.tapPromise({name:eM.name,stage:x.view.MODIFY_ENTRY_OPTION_STAGE_CREATE_BASE},async({entry:x})=>{let a,n,s,c,i,o,v;return Object.assign(r,t.viewEntries),{entry:x=Object.assign(x,Object.fromEntries([...Object.entries({...(a=x8(_),n=`${xi}${xc.default.sep}${xp}${xc.default.sep}${xP}.tsx`,e[s=`${xp}${xc.default.sep}${xP}`]={filename:n,renderType:xA.REACT_LYNX,folderName:xP,isVirtualFile:!0},c=new x9(n),i=xc.default.join(_,xc.default.dirname(n)),o=Object.values(t.apiEntries).find(x=>"login"===xc.default.parse(x.filename).name),v=Object.values(t.apiEntries).find(x=>"privacy"===xc.default.parse(x.filename).name),o&&c.appendImports({moduleSpecifier:x1(i,o.filename),importSpecifiers:[{propertyName:"default",name:"loginApi"}]}),v&&c.appendImports({moduleSpecifier:x1(i,v.filename),importSpecifiers:[{propertyName:"default",name:"privacyApi"}]}),c.appendImports({moduleSpecifier:"@lynx-js/react",importSpecifiers:[{propertyName:"root",name:"root"}]},{moduleSpecifier:a,importSpecifiers:[{propertyName:"bootstrapReactLynx",name:"bootstrapReactLynx"},{propertyName:"getViewContext",name:"getViewContext"},{propertyName:"definePrivacyLoginWidget",name:"definePrivacyLoginWidget"}]},{moduleSpecifier:"@byted-doubao-apps/components",importSpecifiers:[{propertyName:"MCPAuthCard",name:"MCPAuthCard"}]}),c.appendContent(`
81
+ `},eT=(x,_,a)=>{let e=ek({dirname:xc.default.dirname(x),app:_,functionalTools:a});return new x9(x,e)},e$=u("fs/promises"),eC=async(x,_="")=>{if(!xU.default.existsSync(x))return{};let a={},e=await e$.default.readdir(x),r=xc.default.basename(x);for(let t of e.filter(x=>!_||x.includes(_))){let _=xc.default.resolve(x,t);if(!xU.default.statSync(_).isDirectory())continue;let e=xc.default.resolve(_,_y),A=xc.default.resolve(_,_N),n=null;xU.default.existsSync(e)?n=e:xU.default.existsSync(A)&&(n=A),n&&(a[`${r}/${t}`]={folderName:t,renderType:xA.REACT_LYNX,filename:n})}return a},eG=async(x,_="")=>{if(!xU.default.existsSync(x))return{viewEntries:{},apiEntries:{}};let a=await eC(x,_),e={},r=xc.default.basename(x),t=xc.default.resolve(x,_j);xU.default.existsSync(t)&&(e[`${r}/${_T}`]={filename:t,folderName:x});let A=xc.default.resolve(x,_p);return xU.default.existsSync(A)&&(e[`${r}/${_k}`]={filename:A,folderName:x}),{viewEntries:a,apiEntries:e}},eq=async(x,_)=>xU.default.existsSync(x)?(await e$.default.readdir(x)).reduce((a,e)=>{let r=xc.default.resolve(x,e);return xU.default.statSync(r).isDirectory()&&xU.default.existsSync(xc.default.resolve(r,_))&&(a[e]=xc.default.resolve(r,_)),a},{}):{},eX=(x,_,a=".jsx")=>Object.keys(x).reduce((e,r)=>(e[r]={renderType:x[r].renderType,folderName:_,filename:xc.default.resolve(_,`${r}${a}`)},e),{});function eK(x){return n.resolve(x,_b)}let eZ=async x=>{let _=n.resolve(x,_h),a=await eq(_,_N),e=eK(x);return{tools:a,app:L.existsSync(e)?e:void 0}},eR=async(x,_="")=>{let a=n.resolve(x,_E),e=n.resolve(x,_m),r=n.resolve(x,_u),[t,A,s]=await Promise.all([eC(a,_),eC(e,_),eG(r,_)]);return{widgets:{...A},pages:{...t},mcpUI:s}};async function eO(x,_,a){let{app:e,tools:r,collector:t,define:A}=a,n=r[_],s=x;(n||e===_)&&(A&&Object.keys(A).length>0&&(s=Object.keys(A).reduce((x,_)=>x.replaceAll(_,A[_]),x)),xr(xe(s,{syntax:"typescript",tsx:!0,decorators:!0}),{CallExpression(x){if(eu(x.callee)&&["defineTool","defineApp"].includes(x.callee.value)){let _=x.arguments[0]?.expression;if(eS(_)){for(let x of _.properties)if(eN(x)&&eu(x.key)&&"aiMeta"===x.key.value){let _=eF(x.value);n?t.addToolMeta(n,_):t.addAppMeta(_)}}}}}))}async function eJ({tools:x,app:_,collector:a,define:e}){let r={collector:a,tools:Object.fromEntries(Object.entries(x).map(([x,_])=>[_,x])),app:_,define:e};xU.default.existsSync(_)?await Promise.all(Object.values({...x,app:_}).filter(x=>/\.(ts|tsx|jsx|js)$/i.test(x)&&xU.default.existsSync(x)).map(x=>eO(xU.default.readFileSync(x,"utf-8"),x,r))):console.error(`app file ${_} not exists`)}let eH={name:"AppletMainPlugin",setup:async x=>{let{app:_,tools:a}=x.context;_&&(x.worker.hooks.modifyEntryOption.tapPromise("AppletMainPlugin",async({entry:e})=>{delete e[_D];let r=eT(`${x.context.appDirectory}${n.sep}${xi}${n.sep}${xF}.js`,_,a);return Object.assign(e,{[xF]:r}),{entry:e}}),x.worker.hooks.modifyEnvironment.tapPromise("AppletMainPlugin",async({environment:x})=>{}),x.worker.hooks.collectMetaData.tapPromise("AppletMainPlugin",async({collector:e})=>{await eJ({tools:a,app:_,collector:e,define:x.context.userConfig.source?.define})}),x.assets.hooks.beforeEmit.tapPromise({name:"AppletMainPlugin",stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_WORKER_ASSETS},async({assets:_})=>{var a,e;let{app:r,tools:t}=x.context.metadata.getInstance(),A=_.getAsset(x.context.mainThreadAssetPath),n=_.getManifestAsset(x.context.manifestAssetPath),{manifest:s}=n,c=[];s.applet.pages.forEach(x=>{c.push(x.digest)}),n.setBasicManifest({manifestVersion:_$,packageName:r.metadata.package,scmVersion:process.env.BUILD_VERSION,versionCode:Date.now().toString(),runtimeVersion:_C});let i=x.context.mainThreadAssetPath,o=r.toManifest({toolsMetadata:t,hashCode:A?.hashCode??(a=A?.hashCode??s?.applet?.digest,e=c.join(""),a2.default.createHash("sha256").update(a+e).digest("hex").substring(0,8)),appRuntimeEntry:i,appRuntimeType:x.context.environment.useLynx?"lynx":"js"});n.setAppletManifest(o)}),x.assets.hooks.afterEmit.tapPromise({name:"AppletMainPlugin",stage:x.assets.AFTER_EMIT_STAGE_PROCESS_WORKER_ASSETS},async({assets:x})=>{}),x.worker.hooks.afterBuild.tapPromise("AppletMainPlugin",async({stats:x})=>{}))}},eV={name:"AppletMainEntryCheckPlugin",setup:async x=>{let{srcDirectory:_}=x.context,a=eK(_);if(!xU.default.existsSync(a))throw Error("ENOENT: no such file or directory")}},eM={name:"McpUIPlugin",async setup(x){x.view.hooks.modifyEnvironment.tapPromise(eM.name,async({environment:x})=>{x.useMcpUI=!0}),x.view.hooks.modifyEntryOption.tapPromise({name:eM.name,stage:x.view.MODIFY_ENTRY_OPTION_STAGE_CREATE_BASE},async({entry:_})=>{let a,e,r,t,A,n,s,{appDirectory:c,isDev:i,widgets:o,pages:v,mcpUI:l}=x.context;return Object.assign(v,l.viewEntries),{entry:_=Object.assign(_,Object.fromEntries([...Object.entries({...(a=x8(c),e=`${xi}${xc.default.sep}${xp}${xc.default.sep}${xP}.tsx`,o[r=`${xp}${xc.default.sep}${xP}`]={filename:e,renderType:xA.REACT_LYNX,folderName:xP,isVirtualFile:!0},t=new x9(e),A=xc.default.join(c,xc.default.dirname(e)),n=Object.values(l.apiEntries).find(x=>"login"===xc.default.parse(x.filename).name),s=Object.values(l.apiEntries).find(x=>"privacy"===xc.default.parse(x.filename).name),n&&t.appendImports({moduleSpecifier:x1(A,n.filename),importSpecifiers:[{propertyName:"default",name:"loginApi"}]}),s&&t.appendImports({moduleSpecifier:x1(A,s.filename),importSpecifiers:[{propertyName:"default",name:"privacyApi"}]}),t.appendImports({moduleSpecifier:"@lynx-js/react",importSpecifiers:[{propertyName:"root",name:"root"}]},{moduleSpecifier:a,importSpecifiers:[{propertyName:"bootstrapReactLynx",name:"bootstrapReactLynx"},{propertyName:"getViewContext",name:"getViewContext"},{propertyName:"definePrivacyLoginWidget",name:"definePrivacyLoginWidget"}]},{moduleSpecifier:"@byted-doubao-apps/components",importSpecifiers:[{propertyName:"MCPAuthCard",name:"MCPAuthCard"}]}),t.appendContent(`
82
82
  const viewId = __LEPUS__ ? '' : getViewContext()?.viewId ?? '';
83
83
 
84
84
  const View = definePrivacyLoginWidget({
85
85
  render() {
86
86
  return (
87
87
  <MCPAuthCard
88
- ${v?"onAgreePrivacy={privacyApi.onAgreePrivacy}":""}
89
- ${v?"onRefusePrivacy={privacyApi.onRefusePrivacy}":""}
90
- ${o?"onLogin={loginApi.onLogin}":""}
91
- ${o?"onRefuseLogin={loginApi.onRefuseLogin}":""}
88
+ ${s?"onAgreePrivacy={privacyApi.onAgreePrivacy}":""}
89
+ ${s?"onRefusePrivacy={privacyApi.onRefusePrivacy}":""}
90
+ ${n?"onLogin={loginApi.onLogin}":""}
91
+ ${n?"onRefuseLogin={loginApi.onRefuseLogin}":""}
92
92
  />
93
93
  );
94
94
  }
@@ -96,11 +96,11 @@ const View = definePrivacyLoginWidget({
96
96
 
97
97
  const FC = bootstrapReactLynx(View, viewId);
98
98
  root.render(<FC />);
99
- `,A?`
99
+ `,i?`
100
100
  if (import.meta.webpackHot) {
101
101
  import.meta.webpackHot.accept()
102
102
  }
103
- `:""),{[s]:c})}).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries({...em(t.viewEntries,_,A)}).map(([x,_])=>[`${xv}/${x}`,_])]))}})}},eU={name:"AppletManifestPlugin",setup:async x=>{x.assets.hooks.beforeEmit.tapPromise({name:"AppletManifestPlugin",stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_MANIFEST_ASSETS},async({assets:_})=>{let{signingEncryptionOptions:a}=x.context,{signing:e}=a||{};if(e?.enabled){let a=_.getManifestAsset(x.context.manifestAssetPath),r=a.getManifest(),{buffer:t,status:A,error_msg:n}=await (0,aY.signData)(Buffer.from(a.content),{key_path:e.key_path,key_id:e.key_id,extra_config:{app_id:r.packageName,bundle_id:"manifest"},output_mode:"sign_block"});if(0!==A)throw Error(n);let s=new a3(xB,t.toString());s.destination=xB,_.addAsset(xB,s)}})}},eQ={name:"AppletViewEntryPlugin",async setup(x){let{srcDirectory:_}=x.context,{pages:a,widgets:e,mcpUI:r}=await eR(_);x.context.setViewEntries({pages:a,widgets:e}),x.context.setMcpUIApi(r)}},ez=()=>[eH,eQ,eD,eV,eM,eU];class eY{allowDevServerLog=!1;deploy={};_userConfig={};_command;_metadata;_versionTag;_environment={useLynx:!1,useMcpUI:!1};_srcDirectory="";_virtualEntryDir="";_appDirectory=process.cwd();_rootPath="";_mainThreadAssetPath="";_mainThreadMapAssetPath="";_manifestPath="";_manifest;_widgets={};_app="";_tools={};_pages={};_mcpUI={viewEntries:{},apiEntries:{}};_viewEntriesByType={};_signingEncryptionOptions;_dek=Buffer.from("");get userConfig(){return this._userConfig}get isDev(){return this._command===_l.DEV}get command(){return this._command}get metadata(){return this._metadata}get manifestPath(){return this._manifestPath}get appDirectory(){return this._appDirectory}get virtualEntryDir(){return this._virtualEntryDir}get srcDirectory(){return this._srcDirectory}get rootPath(){return this._rootPath}get manifest(){if(this._manifest)return{...this._manifest};try{return this._manifest=JSON.parse(L.readFileSync(this._manifestPath,"utf-8")),{...this._manifest}}catch(x){return{}}}get useLynx(){return this._environment.useLynx}get useMcpUI(){return this._environment.useMcpUI}get manifestAssetPath(){return xI}get mainThreadAssetPath(){return this._mainThreadAssetPath}get mainThreadMapAssetPath(){return this._mainThreadMapAssetPath}get environment(){return this._environment}get widgets(){return this._widgets}get pages(){return this._pages}get mcpUI(){return this._mcpUI}get viewEntriesByType(){return this._viewEntriesByType}get app(){return this._app}get tools(){return this._tools}get signingEncryptionOptions(){if(this._signingEncryptionOptions)return{...this._signingEncryptionOptions,encryption:{...this._signingEncryptionOptions?.encryption,dek:this.dek}}}get dek(){return this._dek}get isSignedEncryption(){return this.signingEncryptionOptions?.signing.enabled||this.signingEncryptionOptions?.encryption.enabled}setViewEntries({pages:x,widgets:_}){this.setPages(x),this.setWidgets(_)}setPages(x){this._pages=x}setWidgets(x){this._widgets=x}appendPages(x){Object.assign(this._pages,x)}appendWidgets(x){Object.assign(this._widgets,x)}getViewEntriesByType(x){return this._viewEntriesByType[x]??{pages:{},widgets:{}}}setViewEntriesByType(x,_){this._viewEntriesByType[x]=_}setMainThreadAssetPath(x){this._mainThreadAssetPath=x}setMainThreadMapAssetPath(x){this._mainThreadMapAssetPath=x}setManifest(x){this._manifest=x}setMcpUIApi(x){this._mcpUI=x}setSigningEncryptionOptions(x){this._signingEncryptionOptions=x}get versionTag(){return this._versionTag}async bootstrap({srcDirectory:x,appDirectory:_,rootPath:a,userConfig:e,command:r,metadata:t,signingEncryptionOptions:A,versionTag:s}){this._srcDirectory=x,this._appDirectory=_,this._virtualEntryDir=n.resolve(_,xi),this._rootPath=a,this._manifestPath=n.resolve(`${a}/${xI}`),this._userConfig=e,this._command=r,this._metadata=t,this._versionTag=s,this._signingEncryptionOptions=await ed(A,r),this._signingEncryptionOptions?.encryption.enabled&&(this._dek=(0,aY.generateDEK)(),aI()&&console.log("DEK base64:",Buffer.from(this.dek.buffer,this.dek.byteOffset,this.dek.byteLength).toString("base64")));let{app:c,tools:i}=await eZ(x);c&&(this._app=c),this._tools=i}}class eW{pluginSystem;rootPath=xl;context;appDirectory;_userConfig;constructor(x=process.cwd()){this.appDirectory=x}get manifest(){return this.context.manifest}async prepare(x,_={},a,e=ez()){Date.now();let r=await this.getUserConfig(_);this.rootPath=aI()?xc.default.resolve(this.appDirectory,xl):function({appKey:x,appDirectory:_=process.cwd()}={}){let a=n.basename(n.resolve(_))||"temp";return`${x_.tmpdir()}/${_w}/${x||a}`}({appDirectory:this.appDirectory}),L.existsSync(xc.default.resolve(this.rootPath))&&L.rmSync(xc.default.resolve(this.rootPath),{recursive:!0,force:!0}),this.context=new eY;let t=xc.default.resolve(this.appDirectory,xS);await this.context.bootstrap({srcDirectory:t,appDirectory:this.appDirectory,rootPath:this.rootPath,userConfig:r,command:x,metadata:new xX,signingEncryptionOptions:_.signingEncryptionOptions,versionTag:_.versionTag}),this.pluginSystem=new xM(this.context,[...e,...r.experiments?.taro?[function({name:x,appId:_,widgets:a}){return{name:__,setup:e=>{let r=w(import.meta.url),{appDirectory:t,isDev:A,pages:s,widgets:c}=e.context;e.view.hooks.modifyEntryOption.tapPromise({name:__,stage:e.view.MODIFY_ENTRY_OPTION_STAGE_PROCESS_ENTRY},async({entry:x})=>{let _=_x(s,t,!1,A),a=_x(c,t,!0,A);return{entry:x=Object.assign(x,Object.fromEntries([...Object.entries(_).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries(a).map(([x,_])=>[`${xv}/${x}`,_])]))}}),e.view.hooks.beforeBuild.tapPromise({name:__,stage:e.view.BEFORE_BUILD_STAGE_MODIFY_BUNDLE_CONFIG},async({buildConfig:x})=>{x0(x,{resolve:{alias:{"@tarojs/components":r.resolve("@doubao-apps/taro-runtime/components",{paths:[t]}),"@tarojs/taro":(0,xc.dirname)(r.resolve("@doubao-apps/taro-runtime/package.json",{paths:[t]}))}}})}),e.worker.hooks.modifyEntryOption.tapPromise({name:__,stage:-1},async()=>{let a={},{app:r}=e.context;return r&&(a.app=function(x,_,a,e,r=!1){var t;let A=`${xi}${n.sep}${xF}.js`,s=(t=x1(n.dirname(A),x)).startsWith(".")?t:`./${t}`,c=x8(_);return new x9(A,`
103
+ `:""),{[r]:t})}).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries({...em(l.viewEntries,c,i)}).map(([x,_])=>[`${xv}/${x}`,_])]))}})}},eU={name:"AppletManifestPlugin",setup:async x=>{x.assets.hooks.beforeEmit.tapPromise({name:"AppletManifestPlugin",stage:x.assets.BEFORE_EMIT_STAGE_PROCESS_MANIFEST_ASSETS},async({assets:_})=>{let{signingEncryptionOptions:a}=x.context,{signing:e}=a||{};if(e?.enabled){let a=_.getManifestAsset(x.context.manifestAssetPath),r=a.getManifest(),{buffer:t,status:A,error_msg:n}=await (0,aY.signData)(Buffer.from(a.content),{key_path:e.key_path,key_id:e.key_id,extra_config:{app_id:r.packageName,bundle_id:"manifest"},output_mode:"sign_block"});if(0!==A)throw Error(n);let s=new a3(xB,t.toString());s.destination=xB,_.addAsset(xB,s)}})}},eQ={name:"AppletViewEntryPlugin",async setup(x){let{srcDirectory:_}=x.context,{pages:a,widgets:e,mcpUI:r}=await eR(_);x.context.setViewEntries({pages:a,widgets:e}),x.context.setMcpUIApi(r)}},ez=()=>[eH,eQ,eD,eV,eM,eU];class eY{allowDevServerLog=!1;deploy={};_userConfig={};_command;_metadata;_versionTag;_environment={useLynx:!1,useMcpUI:!1};_srcDirectory="";_virtualEntryDir="";_appDirectory=process.cwd();_rootPath="";_mainThreadAssetPath="";_mainThreadMapAssetPath="";_manifestPath="";_manifest;_widgets={};_app="";_tools={};_pages={};_mcpUI={viewEntries:{},apiEntries:{}};_viewEntriesByType={};_signingEncryptionOptions;_dek=Buffer.from("");get userConfig(){return this._userConfig}get isDev(){return this._command===_l.DEV}get command(){return this._command}get metadata(){return this._metadata}get manifestPath(){return this._manifestPath}get appDirectory(){return this._appDirectory}get virtualEntryDir(){return this._virtualEntryDir}get srcDirectory(){return this._srcDirectory}get rootPath(){return this._rootPath}get manifest(){if(this._manifest)return{...this._manifest};try{return this._manifest=JSON.parse(L.readFileSync(this._manifestPath,"utf-8")),{...this._manifest}}catch(x){return{}}}get useLynx(){return this._environment.useLynx}get useMcpUI(){return this._environment.useMcpUI}get manifestAssetPath(){return xI}get mainThreadAssetPath(){return this._mainThreadAssetPath}get mainThreadMapAssetPath(){return this._mainThreadMapAssetPath}get environment(){return this._environment}get widgets(){return this._widgets}get pages(){return this._pages}get mcpUI(){return this._mcpUI}get viewEntriesByType(){return this._viewEntriesByType}get app(){return this._app}get tools(){return this._tools}get signingEncryptionOptions(){if(this._signingEncryptionOptions)return{...this._signingEncryptionOptions,encryption:{...this._signingEncryptionOptions?.encryption,dek:this.dek}}}get dek(){return this._dek}get isSignedEncryption(){return this.signingEncryptionOptions?.signing.enabled||this.signingEncryptionOptions?.encryption.enabled}setViewEntries({pages:x,widgets:_}){this.setPages(x),this.setWidgets(_)}setPages(x){this._pages=x}setWidgets(x){this._widgets=x}appendPages(x){Object.assign(this._pages,x)}appendWidgets(x){Object.assign(this._widgets,x)}getViewEntriesByType(x){return this._viewEntriesByType[x]??{pages:{},widgets:{}}}setViewEntriesByType(x,_){this._viewEntriesByType[x]=_}setMainThreadAssetPath(x){this._mainThreadAssetPath=x}setMainThreadMapAssetPath(x){this._mainThreadMapAssetPath=x}setManifest(x){this._manifest=x}setMcpUIApi(x){this._mcpUI=x}setSigningEncryptionOptions(x){this._signingEncryptionOptions=x}get versionTag(){return this._versionTag}async bootstrap({srcDirectory:x,appDirectory:_,rootPath:a,userConfig:e,command:r,metadata:t,signingEncryptionOptions:A,versionTag:s}){this._srcDirectory=x,this._appDirectory=_,this._virtualEntryDir=n.resolve(_,xi),this._rootPath=a,this._manifestPath=n.resolve(`${a}/${xI}`),this._userConfig=e,this._command=r,this._metadata=t,this._versionTag=s,this._signingEncryptionOptions=await ed(A,r),this._signingEncryptionOptions?.encryption.enabled&&(this._dek=(0,aY.generateDEK)(),aI()&&console.log("DEK base64:",Buffer.from(this.dek.buffer,this.dek.byteOffset,this.dek.byteLength).toString("base64")));let{app:c,tools:i}=await eZ(x);c&&(this._app=c),this._tools=i}}class eW{pluginSystem;rootPath=xl;context;appDirectory;_userConfig;constructor(x=process.cwd()){this.appDirectory=x}get manifest(){return this.context.manifest}async prepare(x,_={},a,e=ez()){Date.now();let r=await this.getUserConfig(_);this.rootPath=aI()?xc.default.resolve(this.appDirectory,xl):function({appKey:x,appDirectory:_=process.cwd()}={}){let a=n.basename(n.resolve(_))||"temp";return`${x_.tmpdir()}/${_w}/${x||a}`}({appDirectory:this.appDirectory}),L.existsSync(xc.default.resolve(this.rootPath))&&L.rmSync(xc.default.resolve(this.rootPath),{recursive:!0,force:!0}),this.context=new eY;let t=xc.default.resolve(this.appDirectory,xS);await this.context.bootstrap({srcDirectory:t,appDirectory:this.appDirectory,rootPath:this.rootPath,userConfig:r,command:x,metadata:new xX,signingEncryptionOptions:_.signingEncryptionOptions,versionTag:_.versionTag}),this.pluginSystem=new xM(this.context,[...e,...r.experiments?.taro?[function({name:x,appId:_,icons:a,widgets:e}){return{name:__,setup:r=>{let t=w(import.meta.url),{appDirectory:A,isDev:s,pages:c,widgets:i}=r.context;r.view.hooks.modifyEntryOption.tapPromise({name:__,stage:r.view.MODIFY_ENTRY_OPTION_STAGE_PROCESS_ENTRY},async({entry:x})=>{let _=_x(c,A,!1,s),a=_x(i,A,!0,s);return{entry:x=Object.assign(x,Object.fromEntries([...Object.entries(_).map(([x,_])=>[`${xv}/${x}`,_]),...Object.entries(a).map(([x,_])=>[`${xv}/${x}`,_])]))}}),r.view.hooks.beforeBuild.tapPromise({name:__,stage:r.view.BEFORE_BUILD_STAGE_MODIFY_BUNDLE_CONFIG},async({buildConfig:x})=>{x0(x,{resolve:{alias:{"@tarojs/components":t.resolve("@doubao-apps/taro-runtime/components",{paths:[A]}),"@tarojs/taro":(0,xc.dirname)(t.resolve("@doubao-apps/taro-runtime/package.json",{paths:[A]}))}}})}),r.worker.hooks.modifyEntryOption.tapPromise({name:__,stage:-1},async()=>{let a={},{app:e}=r.context;return e&&(a.app=function(x,_,a,e,r=!1){var t;let A=`${xi}${n.sep}${xF}.js`,s=(t=x1(n.dirname(A),x)).startsWith(".")?t:`./${t}`,c=x8(_);return new x9(A,`
104
104
  import { Applet } from "${c}";
105
105
  import { defineApp } from '${c}';
106
106
  import { APP_ID, getLifecycle } from '@doubao-apps/taro-runtime/internal';
@@ -140,5 +140,5 @@ if (import.meta.webpackHot) {
140
140
  import.meta.webpackHot.accept()
141
141
  }
142
142
  `:""}
143
- `)}(r,t,x,_,A)),{entry:a}}),e.worker.hooks.beforeBuild.tapPromise({name:__,stage:e.worker.BEFORE_BUILD_STAGE_MODIFY_BUILD_CONFIG},async({buildConfig:x})=>{x0(x,{resolve:{alias:{"@tarojs/taro":r.resolve("@doubao-apps/taro-runtime/app",{paths:[t]})}}})}),e.worker.hooks.collectMetaData.tapPromise(__,async({collector:a})=>{a.addAppMeta({name:x,package:_})}),e.view.hooks.collectMetaData.tapPromise(__,async({collector:x})=>{Object.entries(s).forEach(([_,a])=>{let{folderName:e}=a;x.addPageMeta(_,{id:e})}),Object.entries(c).forEach(([_,e])=>{let{folderName:r}=e;x.addWidgetMeta(_,{...a?.[r]??a?.[_]??{},id:r})})})}}}({name:r.experiments.taro.name,appId:r.experiments.taro.appId,widgets:r.experiments.taro.widgets})]:[]]),Array.isArray(r.plugins)&&this.pluginSystem.addPlugins(r.plugins),await this.pluginSystem.bootstrap();let A=await ev({options:r,commandType:x,context:this.context,rsbuildPlugins:a},this.pluginSystem);return{userConfig:r,builder:A}}async dev(x){let{builder:_}=await this.prepare(_l.DEV,x,x.rsbuildPlugins),a=await _.startDevServer(),e=async()=>{console.log("Shutting down..."),await a.server.close(),console.log("dev server closed")};return{host:ah(a.port),closeServer:e}}async build(x){let{builder:_}=await this.prepare(_l.BUILD,x,x.rsbuildPlugins);try{await _.build()}finally{if(x.skipCleanupRootPath||aI()||aB()){if(x.archive&&x.channel){let{channel:_}=x;await xz({channelName:_,manifest:this.manifest,rootPath:this.rootPath})}}else L.rmSync(this.rootPath,{recursive:!0,force:!0})}}async analyze(x){let{builder:_}=await this.prepare(_l.ANALYZE,x);await _.build()}async perf(x){let{builder:_}=await this.prepare(_l.PERF,x);await _.build()}async deploy(x){let{builder:_}=await this.prepare(_l.DEPLOY,x);x.build&&await _.build();let a=x.deployType||xW.SELF_BUILT_ONLY;if(await this.pluginSystem.callDeployHooks("beforeDeploy",{config:this.context.deploy}),0===Object.keys(this.context.deploy).length)return void console.error("Please use deploy plugin in doubao.config.ts");this.context.deploy={...this.context.deploy,versionCode:x.versionCode,packageName:x.packageName};try{await this.pluginSystem.callDeployHooks("deploy",{deployType:a})}finally{await this.pluginSystem.callDeployHooks("afterDeploy",{})}}async run(x,_){switch(x){case _f.DEV:return await this.dev(_);case _f.BUILD:return await this.build(_);case _f.ANALYZE:return await this.analyze(_);case _f.PERF:return await this.perf(_);case _f.DEPLOY:return await this.deploy(_)}}async getUserConfig(x){if(!this._userConfig){let _=g({cwd:this.appDirectory,mode:x.envMode}),a=await eE({cwd:this.appDirectory,customConfigFile:x.config});a.source||={},a.source.define={..._.publicVars,...a.source.define},a.hdt=x.hdt,this._userConfig=a}return this._userConfig}}function e0(x=eW){return async function({cliOptions:_={},appDirectory:a=process.cwd(),command:e}){let r=new x(a);await r.run(e,_)}}export{_g as AI_MANIFEST,_S as AI_MANIFEST_ATTRIBUTE,_Z as AI_META_JSON_FILENAME,_R as AI_META_JSON_FILENAME_4_RTS,_X as APPLET_CONFIG_NAME,_0 as APPLET_DOCTOR_URL,_I as APPLET_EXTERNAL_MODULE_NAME,_B as APPLET_EXTERNAL_SCRIPT_NAME,xg as APPLET_FOLDER,xd as APPLET_OUTPUT_FOLDER,_q as APPLET_TOOLS_PLUGIN_NAME,_1 as APP_PACKAGE_NAME,eD as AppletLynxPlugin,eV as AppletMainEntryCheckPlugin,eH as AppletMainPlugin,xN as BASE_FOLDER,eY as BuildContext,_K as CONFIG_FILE_EXTENSIONS,_u as CONVENTIONAL_DIR_NAME_MCP_UI,_E as CONVENTIONAL_DIR_NAME_PAGE,_h as CONVENTIONAL_DIR_NAME_TOOLS,_m as CONVENTIONAL_DIR_NAME_WIDGET,_b as CONVENTIONAL_FILE_NAME_APP,_d as CONVENTIONAL_FILE_NAME_APP_4_RTS,_j as CONVENTIONAL_FILE_NAME_LOGIN,_p as CONVENTIONAL_FILE_NAME_PRIVACY,_f as Command,_F as DEVELOPMENT_BROWSER_LIST,_W as DOCUMENT_URL,_w as DOUBAO_APPS_SDK_TEMPLATE_FOLDER,xE as DOUBAO_APP_OUTPUT_FOLDER,az as DevServerLogPlugin,_N as ENTRY_FILE_TS,_y as ENTRY_FILE_TSX,xb as GECKO,_O as INJECT_GLOBAL_VARIABLES_CONTENT,x2 as INTERNAL_FRAMEWORK_PACKAGE,_T as LOGIN,_V as LYNX_APP_SERVICE_JS,_J as LYNX_GLOBAL,_H as LYNX_JS_CODE_INJECT_PLACEHOLDER,_M as LYNX_JS_RENDER_TYPE,_U as LYNX_PROCESSOR_LEPUS,eW as Launcher,_z as MAIN_THREAD_COMPILER_NAME,_Y as MAIN_THREAD_COMPILER_NAME_4_RTS,xF as MAIN_THREAD_ENTRY_KEY,_D as MAIN_THREAD_VIRTUAL_ENTRY_KEY,_$ as MANIFEST_DEFAULT_VERSION,xI as MANIFEST_FILE,xj as PAGES,xy as PLUGINS_FOLDER,_k as PRIVACY,_P as PRODUCTION_BROWSER_LIST,x3 as PUBLIC_FRAMEWORK_PACKAGE,_C as RUNTIME_DEFAULT_VERSION,xu as SCM_GECKO_FOLDER,xh as SCM_SELF_BUILT_FOLDER,xf as SELF_BUILT,xS as SOURCE_DIRECTORY,xm as TRANSFORM_FOLDER,_Q as VIEW_COMPILER_NAME,_L as VIEW_THREAD_VIRTUAL_ENTRY_KEY,eA as ViewConfigCreator,xp as WIDGETS,ei as WorkerConfigCreator,eZ as analyzeMainThreadConvention,eG as analyzeMcpUIEntries,eq as analyzeToolEntries,eR as analyzeViewConvention,eC as analyzeViewEntries,xz as archivePackage,F as chalk_1,eF as collectProperties,ew as collectViewAIMeta,eJ as collectWorkerMetadata,_G as MANIFEST_DEFAULT_APPLET_ICON,xl as ROOT_PATH,ev as createBuilder,e0 as createLaunch,ek as createMainCode,eT as createMainEntryObject,em as createReactLynxEntries,aQ as getDebugDriver,aR as executeDebugScene,A as fileURLToPath,eK as getAppEntry,ah as getAppletLocalAreaNetworkUrl,aK as getDebugScenes,e_ as getExternalBundleExternals,x5 as getFrameworkApiPackage,er as getFrameworkPackageJSONRequests,eB as getKeyName,am as getLocalAreaNetworkAddress,el as getPPEEnvironmentHeader,au as getPreferredLanAddress,eX as getViewEntries,aw as isAppTemplateJsDisabled,eg as isArrayExpression,ej as isBooleanLiteral,ey as isCallExpression,aI as isDebugMode,aF as isExternalBundleDisabled,x6 as isFrameworkPackage,eu as isIdentifier,eN as isKeyValueProperty,ep as isNumericLiteral,eS as isObjectExpression,aN as isProd,aB as isRspeedyDebugMode,aP as isSigningEncryptionDisabled,eI as isSpreadElement,eh as isStringLiteral,y as logger,L as node_fs,n as node_path,D as promises,et as resolveComponentsLoader,x8 as resolveFrameworkPackage,ee as resolveRequest,_l as ECommand};
143
+ `)}(e,A,x,_,s)),{entry:a}}),r.worker.hooks.beforeBuild.tapPromise({name:__,stage:r.worker.BEFORE_BUILD_STAGE_MODIFY_BUILD_CONFIG},async({buildConfig:x})=>{x0(x,{resolve:{alias:{"@tarojs/taro":t.resolve("@doubao-apps/taro-runtime/app",{paths:[A]})}}})}),r.worker.hooks.collectMetaData.tapPromise(__,async({collector:e})=>{e.addAppMeta({name:x,package:_,icons:a})}),r.view.hooks.collectMetaData.tapPromise(__,async({collector:x})=>{Object.entries(c).forEach(([_,a])=>{let{folderName:e}=a;x.addPageMeta(_,{id:e})}),Object.entries(i).forEach(([_,a])=>{let{folderName:r}=a;x.addWidgetMeta(_,{...e?.[r]??e?.[_]??{},id:r})})})}}}(r.experiments.taro)]:[]]),Array.isArray(r.plugins)&&this.pluginSystem.addPlugins(r.plugins),await this.pluginSystem.bootstrap();let A=await ev({options:r,commandType:x,context:this.context,rsbuildPlugins:a},this.pluginSystem);return{userConfig:r,builder:A}}async dev(x){let{builder:_}=await this.prepare(_l.DEV,x,x.rsbuildPlugins),a=await _.startDevServer(),e=async()=>{console.log("Shutting down..."),await a.server.close(),console.log("dev server closed")};return{host:ah(a.port),closeServer:e}}async build(x){let{builder:_}=await this.prepare(_l.BUILD,x,x.rsbuildPlugins);try{await _.build()}finally{if(x.skipCleanupRootPath||aI()||aB()){if(x.archive&&x.channel){let{channel:_}=x;await xz({channelName:_,manifest:this.manifest,rootPath:this.rootPath})}}else L.rmSync(this.rootPath,{recursive:!0,force:!0})}}async analyze(x){let{builder:_}=await this.prepare(_l.ANALYZE,x);await _.build()}async perf(x){let{builder:_}=await this.prepare(_l.PERF,x);await _.build()}async deploy(x){let{builder:_}=await this.prepare(_l.DEPLOY,x);x.build&&await _.build();let a=x.deployType||xW.SELF_BUILT_ONLY;if(await this.pluginSystem.callDeployHooks("beforeDeploy",{config:this.context.deploy}),0===Object.keys(this.context.deploy).length)return void console.error("Please use deploy plugin in doubao.config.ts");this.context.deploy={...this.context.deploy,versionCode:x.versionCode,packageName:x.packageName};try{await this.pluginSystem.callDeployHooks("deploy",{deployType:a})}finally{await this.pluginSystem.callDeployHooks("afterDeploy",{})}}async run(x,_){switch(x){case _f.DEV:return await this.dev(_);case _f.BUILD:return await this.build(_);case _f.ANALYZE:return await this.analyze(_);case _f.PERF:return await this.perf(_);case _f.DEPLOY:return await this.deploy(_)}}async getUserConfig(x){if(!this._userConfig){let _=g({cwd:this.appDirectory,mode:x.envMode}),a=await eE({cwd:this.appDirectory,customConfigFile:x.config});a.source||={},a.source.define={..._.publicVars,...a.source.define},a.hdt=x.hdt,this._userConfig=a}return this._userConfig}}function e0(x=eW){return async function({cliOptions:_={},appDirectory:a=process.cwd(),command:e}){let r=new x(a);await r.run(e,_)}}export{_g as AI_MANIFEST,_S as AI_MANIFEST_ATTRIBUTE,_Z as AI_META_JSON_FILENAME,_R as AI_META_JSON_FILENAME_4_RTS,_X as APPLET_CONFIG_NAME,_0 as APPLET_DOCTOR_URL,_I as APPLET_EXTERNAL_MODULE_NAME,_B as APPLET_EXTERNAL_SCRIPT_NAME,xg as APPLET_FOLDER,xd as APPLET_OUTPUT_FOLDER,_q as APPLET_TOOLS_PLUGIN_NAME,_1 as APP_PACKAGE_NAME,eD as AppletLynxPlugin,eV as AppletMainEntryCheckPlugin,eH as AppletMainPlugin,xN as BASE_FOLDER,eY as BuildContext,_K as CONFIG_FILE_EXTENSIONS,_u as CONVENTIONAL_DIR_NAME_MCP_UI,_E as CONVENTIONAL_DIR_NAME_PAGE,_h as CONVENTIONAL_DIR_NAME_TOOLS,_m as CONVENTIONAL_DIR_NAME_WIDGET,_b as CONVENTIONAL_FILE_NAME_APP,_d as CONVENTIONAL_FILE_NAME_APP_4_RTS,_j as CONVENTIONAL_FILE_NAME_LOGIN,_p as CONVENTIONAL_FILE_NAME_PRIVACY,_f as Command,_F as DEVELOPMENT_BROWSER_LIST,_W as DOCUMENT_URL,_w as DOUBAO_APPS_SDK_TEMPLATE_FOLDER,xE as DOUBAO_APP_OUTPUT_FOLDER,az as DevServerLogPlugin,_N as ENTRY_FILE_TS,_y as ENTRY_FILE_TSX,xb as GECKO,_O as INJECT_GLOBAL_VARIABLES_CONTENT,x2 as INTERNAL_FRAMEWORK_PACKAGE,_T as LOGIN,_V as LYNX_APP_SERVICE_JS,_J as LYNX_GLOBAL,_H as LYNX_JS_CODE_INJECT_PLACEHOLDER,_M as LYNX_JS_RENDER_TYPE,_U as LYNX_PROCESSOR_LEPUS,eW as Launcher,_z as MAIN_THREAD_COMPILER_NAME,_Y as MAIN_THREAD_COMPILER_NAME_4_RTS,xF as MAIN_THREAD_ENTRY_KEY,_D as MAIN_THREAD_VIRTUAL_ENTRY_KEY,_$ as MANIFEST_DEFAULT_VERSION,xI as MANIFEST_FILE,xj as PAGES,xy as PLUGINS_FOLDER,_k as PRIVACY,_P as PRODUCTION_BROWSER_LIST,x3 as PUBLIC_FRAMEWORK_PACKAGE,_C as RUNTIME_DEFAULT_VERSION,xu as SCM_GECKO_FOLDER,xh as SCM_SELF_BUILT_FOLDER,xf as SELF_BUILT,xS as SOURCE_DIRECTORY,xm as TRANSFORM_FOLDER,_Q as VIEW_COMPILER_NAME,_L as VIEW_THREAD_VIRTUAL_ENTRY_KEY,eA as ViewConfigCreator,xp as WIDGETS,ei as WorkerConfigCreator,eZ as analyzeMainThreadConvention,eG as analyzeMcpUIEntries,eq as analyzeToolEntries,eR as analyzeViewConvention,eC as analyzeViewEntries,xz as archivePackage,F as chalk_1,eF as collectProperties,ew as collectViewAIMeta,eJ as collectWorkerMetadata,_G as MANIFEST_DEFAULT_APPLET_ICON,xl as ROOT_PATH,ev as createBuilder,e0 as createLaunch,ek as createMainCode,eT as createMainEntryObject,em as createReactLynxEntries,aQ as getDebugDriver,aR as executeDebugScene,A as fileURLToPath,eK as getAppEntry,ah as getAppletLocalAreaNetworkUrl,aK as getDebugScenes,e_ as getExternalBundleExternals,x5 as getFrameworkApiPackage,er as getFrameworkPackageJSONRequests,eB as getKeyName,am as getLocalAreaNetworkAddress,el as getPPEEnvironmentHeader,au as getPreferredLanAddress,eX as getViewEntries,aw as isAppTemplateJsDisabled,eg as isArrayExpression,ej as isBooleanLiteral,ey as isCallExpression,aI as isDebugMode,aF as isExternalBundleDisabled,x6 as isFrameworkPackage,eu as isIdentifier,eN as isKeyValueProperty,ep as isNumericLiteral,eS as isObjectExpression,aN as isProd,aB as isRspeedyDebugMode,aP as isSigningEncryptionDisabled,eI as isSpreadElement,eh as isStringLiteral,y as logger,L as node_fs,n as node_path,D as promises,et as resolveComponentsLoader,x8 as resolveFrameworkPackage,ee as resolveRequest,_l as ECommand};
144
144
  //# sourceMappingURL=971.js.map
package/dist/cli/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import"node:module";import{program as e}from"commander";import"../131.js";import{logger as o,chalk_1 as r}from"../971.js";import{dev as a,build as t,analyze as i}from"../938.js";function n(){if(!process.env.NODE_ENV){let e=process.argv[2];process.env.NODE_ENV=["build","package","deploy","analyze","perf"].includes(e)?"production":"development"}o.greet("Doubao Apps SDK v0.0.23")}function c(e){return e.option("-c --config <config>","specify the configuration file, can be a relative or absolute path").option("--env-mode <mode>","specify the env mode to load the `.env.[mode]` file"),e}function p(n=process.cwd(),d={},s="0.0.23"){e.name("doubao").usage("<command> [options]").version(s),c(e.command("dev")).description("starting the dev server...").action(async e=>{try{await a(e)}catch(e){o.error("Failed to dev"),o.error(e),process.exit(1)}}),c(e.command("build")).description("starting build the applet").option("-a --archive","Archive all package",!1).option("-ch --channel <string>","Need channel name").action(async e=>{try{await t(e)}catch(e){o.error("Failed to build"),o.error(e),process.exit(1)}}),c(e.command("analyze")).description("analyze the applet package").action(async e=>{try{await i(e)}catch(e){o.error(r.red("Failed to analyze")),o.error(e),process.exit(1)}}),e.parse()}export{n as prepareCli,p as runCli};
1
+ import"node:module";import{program as e}from"commander";import"../131.js";import{logger as o,chalk_1 as r}from"../971.js";import{dev as a,build as t,analyze as i}from"../938.js";function n(){if(!process.env.NODE_ENV){let e=process.argv[2];process.env.NODE_ENV=["build","package","deploy","analyze","perf"].includes(e)?"production":"development"}o.greet("Doubao Apps SDK v0.0.24")}function c(e){return e.option("-c --config <config>","specify the configuration file, can be a relative or absolute path").option("--env-mode <mode>","specify the env mode to load the `.env.[mode]` file"),e}function p(n=process.cwd(),d={},s="0.0.24"){e.name("doubao").usage("<command> [options]").version(s),c(e.command("dev")).description("starting the dev server...").action(async e=>{try{await a(e)}catch(e){o.error("Failed to dev"),o.error(e),process.exit(1)}}),c(e.command("build")).description("starting build the applet").option("-a --archive","Archive all package",!1).option("-ch --channel <string>","Need channel name").action(async e=>{try{await t(e)}catch(e){o.error("Failed to build"),o.error(e),process.exit(1)}}),c(e.command("analyze")).description("analyze the applet package").action(async e=>{try{await i(e)}catch(e){o.error(r.red("Failed to analyze")),o.error(e),process.exit(1)}}),e.parse()}export{n as prepareCli,p as runCli};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
- import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{node_path as t,fileURLToPath as a,promises as r,getPPEEnvironmentHeader as o,node_fs as i,getDebugScenes as n,Launcher as c,executeDebugScene as s,isDebugMode as l,archivePackage as p,getDebugDriver as u}from"./971.js";import"./131.js";let d=t.join("src","app.ts");function h(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}async function g(e,a,o=""){let i,n=t.join(e,d);try{i=await r.readFile(n,"utf8")}catch(e){if(e?.code==="ENOENT")return;throw e}let c=i.replace("<%= appId %>",h(a)).replace("<%= name %>",h(o));c!==i&&await r.writeFile(n,c,"utf8")}let y=new Set(["node_modules","dist",".git"]);async function m(e,a,o={}){let{includeAI:i=!0}=o,n=async(e,a)=>{for(let o of(await r.mkdir(a,{recursive:!0}),await r.readdir(e,{withFileTypes:!0}))){let c=t.join(e,o.name),s=t.join(a,o.name);if(o.isDirectory()){if(y.has(o.name)||".ai"===o.name&&!i)continue;await n(c,s)}else{if("AGENTS.md"===o.name&&!i)continue;await r.copyFile(c,s)}}};await n(e,a)}async function w(e,a){let r=t.join(e,"package.json");if(!i.existsSync(r))throw Error("package.json not found in template");let o=JSON.parse(i.readFileSync(r,"utf-8"));o.name=a,i.writeFileSync(r,`${JSON.stringify(o,null,2)}
2
- `)}let f=["starter","empty"],E=a(import.meta.url),_=t.dirname(E);async function D({template:e,projectDir:a,includeAI:o,appId:i,name:n,packageName:c,overwrite:s}){if(!t.isAbsolute(a))throw Error(`Project directory must be an absolute path: ${a}`);if(!f.includes(e))throw Error(`Invalid template: ${e}. Valid options: ${f.join(", ")}`);let l=t.resolve(_,`template-${e}`);try{if(!(await r.stat(l)).isDirectory())throw Error(`Template path is not a directory: ${l}`)}catch(e){if(e?.code==="ENOENT")throw Error(`Template directory not found: ${l}`,{cause:e});throw Error(`Unable to access template directory: ${l}`,{cause:e})}if(await r.stat(a).then(e=>{if(!e.isDirectory())throw Error(`Project path is not a directory: ${a}`);return!0}).catch(e=>{if(e?.code==="ENOENT")return!1;throw Error(`Unable to access project directory: ${a}`,{cause:e})})){if((await r.readdir(a)).length>0&&!s)throw Error(`Project directory is not empty: ${a}`)}else await r.mkdir(a,{recursive:!0});await m(l,a,{includeAI:o});let p=c??t.basename(a).trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z0-9-~._]+/g,"-");await w(a,p),await g(a,i??`com.doubao.${p}`,n??"")}let v=e("fs");function b(e){return[{name:"DoubaoAppsDevPlugin",setup(t){t.onDevCompileDone(()=>{e?.onDevCompileDone?.()})}}]}class S{appDirectory;launcher;constructor(e,t=c){this.appDirectory=e,this.launcher=new t(e)}async dev(e={}){let{compileHooks:t,...a}=e;return await this.launcher.dev({...a,rsbuildPlugins:b(t),signingEncryptionOptions:e.signingEncryptionOptions})}async build(e={}){process.env.NODE_ENV="production";let{compileHooks:t,...a}=e;await this.launcher.build({...a,rsbuildPlugins:b(t),signingEncryptionOptions:e.signingEncryptionOptions,versionTag:e.versionTag})}async discoverWidgets(){return Object.values(this.launcher.context.metadata.getData().widgets)}async discoverPages(){return Object.values(this.launcher.context.metadata.getData().pages)}async pushWidget(e){let{widgetId:t,deviceId:a,botId:r,widgetData:o,hdt:i}=e,n=await u({hdt:i,deviceId:a}),c=this.launcher.context.metadata.getData().app.package;n.pushWidget({packageName:c,widgetId:t,widgetData:o,botId:r})}async openPage(e){let{pageId:t,pageData:a,pageSettings:r,mode:o,hdt:i,deviceId:n}=e,c=await u({hdt:i,deviceId:n}),s=this.launcher.context.metadata.getData().app.package;c.openPage({packageName:s,pageId:t,pageData:a,pageSettings:r,mode:o})}async executeDebugScene(e){let{matchedScene:t,deviceId:a,hdt:r}=e,o=this.launcher.context.metadata.getData().app.package,i=await u({hdt:r,deviceId:a});await s({matchedScene:t,packageName:o,driver:i})}async getDebugScenes(){return await n(this.appDirectory||process.cwd())}async deploy(e){let{versionTag:t,cookie:a,appKey:r,signingEncryptionOptions:i}=e;process.env.NODE_ENV="production",await this.launcher.build({skipCleanupRootPath:!0,signingEncryptionOptions:i,versionTag:e.versionTag});let{manifest:n}=this.launcher.context,{packageName:c,versionCode:s}=n,{packageResource:u}=await p({channelName:"doubao_app",manifest:n,rootPath:this.launcher.rootPath});if(!u)throw Error("Failed to archive package");let{resource:d}=u,h=new FormData,g=new Blob([new Uint8Array(v.default.readFileSync(d))],{type:"application/zip"});h.append("applet_file",g,"doubao_app.zip"),h.append("applet_version_code",s.toString());let y=encodeURIComponent(r||c),m=encodeURIComponent(t),w=`https://hello.doubao-dev.com/developer/resource_api/apps/${y}/versions/${m}/package/upload_applet`,f={...o(),Cookie:a};try{let e=await fetch(w,{method:"POST",body:h,headers:f}),t=e.headers.get("x-tt-logid")||"";if(!e.ok){let a=await e.text(),r=JSON.stringify({code:e.status,message:"HTTP Error",data:a,log_id:t});throw Error(r)}let a=await e.json();if(0!==a.code){let e=JSON.stringify({...a,log_id:t});throw Error(e)}return console.log("Deploy success:",a),a}catch(e){return console.error("Deploy error:",e?.message||e),JSON.parse(e.message)}finally{l()||v.default.rmSync(this.launcher.rootPath,{recursive:!0,force:!0})}}}let N=e=>e;export{analyze,build,dev}from"./938.js";export{S as DoubaoAppsSDK,D as create,N as defineConfig};
1
+ import"node:module";import{__webpack_require__ as e}from"./rslib-runtime.js";import{execFileSync as t}from"node:child_process";import{node_path as a,fileURLToPath as r,promises as o,getPPEEnvironmentHeader as i,node_fs as n,getDebugScenes as s,Launcher as c,executeDebugScene as p,isDebugMode as l,archivePackage as u,getDebugDriver as d}from"./971.js";import"./131.js";let f=a.join("src","app.ts");function y(e){return e.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}async function g(e,t,r=""){let i,n=a.join(e,f);try{i=await o.readFile(n,"utf8")}catch(e){if(e?.code==="ENOENT")return;throw e}let s=i.replace("<%= appId %>",y(t)).replace("<%= name %>",y(r));s!==i&&await o.writeFile(n,s,"utf8")}let h=new Set(["node_modules","dist",".git"]);async function m(e,t,r={}){let{includeAI:i=!0}=r,n=async(e,t)=>{for(let r of(await o.mkdir(t,{recursive:!0}),await o.readdir(e,{withFileTypes:!0}))){let s=a.join(e,r.name),c=a.join(t,r.name);if(r.isDirectory()){if(h.has(r.name)||".ai"===r.name&&!i)continue;await n(s,c)}else{if("AGENTS.md"===r.name&&!i)continue;await o.copyFile(s,c)}}};await n(e,t)}let w=new Set([".js",".cjs",".mjs",".ts",".tsx",".jsx",".json",".md",".txt",".scss",".css",".less",".html",".yml",".yaml"]),b=[["@byted-doubao-apps/framework","@doubao-apps/framework"],["@byted-doubao-apps/kit","@doubao-apps/kit"],["@byted-doubao-apps/ai","@doubao-apps/ai"],["@byted-doubao-apps/create","@doubao-apps/create"],["@byted-doubao-apps/taro-runtime","@doubao-apps/taro-runtime"]],E=["doubao.config.ts"],j=["@byted-doubao-apps/deploy","@doubao-apps/deploy"],_=["deploy"],D=["pnpm run deploy","doubao.config.ts","部署到豆包平台"];function v(e){let t=e;for(let[e,a]of b)t=t.replace(RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),a);return t}async function S(e,t){for(let i of(await o.readdir(e,{withFileTypes:!0}))){var r;let n=a.join(e,i.name);if(function(e){return E.some(t=>t===e)}(i.name)){await o.rm(n,{recursive:!0,force:!0});continue}if(i.isDirectory()){await S(n,t);continue}if(r=i.name,!w.has(a.extname(r))&&"package.json"!==r&&"tsconfig.json"!==r)continue;let s=await o.readFile(n,"utf-8");await o.writeFile(n,function(e,t,a){if("package.json"===e){let e=JSON.parse(v(t));if(e.scripts&&"object"==typeof e.scripts){for(let t of _)delete e.scripts[t];0===Object.keys(e.scripts).length&&delete e.scripts}for(let t of["dependencies","devDependencies","peerDependencies"])if(e[t]&&"object"==typeof e[t]){for(let r of Object.keys(e[t]))j.some(e=>e===r)?delete e[t][r]:r.startsWith("@doubao-apps/")&&(e[t][r]=`^${a}`);0===Object.keys(e[t]).length&&delete e[t]}return`${JSON.stringify(e,null,2)}
2
+ `}return"README.md"===e||"AGENTS.md"===e?v(t).split("\n").filter(e=>!D.some(t=>e.includes(t))).join("\n"):v(t)}(i.name,s,t))}}async function N(e,t){let r=a.join(e,"package.json");if(!n.existsSync(r))throw Error("package.json not found in template");let o=JSON.parse(n.readFileSync(r,"utf-8"));o.name=t,n.writeFileSync(r,`${JSON.stringify(o,null,2)}
3
+ `)}let O=["starter","empty"],k=r(import.meta.url),$=a.dirname(k),P={".gitignore":["dist","node_modules",".DS_Store"]};async function T(e){for(let[t,r]of Object.entries(P))await o.writeFile(a.join(e,t),`${r.join("\n")}
4
+ `)}async function x(){let e=a.resolve($,"..","package.json");return JSON.parse(await o.readFile(e,"utf-8")).version??"0.0.1"}async function C(e){let r=a.join(e,".git");if(!await o.stat(r).then(e=>e.isDirectory()).catch(e=>{if(e?.code==="ENOENT")return!1;throw e}))try{t("git",["init"],{cwd:e,stdio:"ignore"})}catch(t){if(t?.code==="ENOENT")return;throw Error(`Failed to initialize git repository: ${e}`,{cause:t})}}async function F({template:e,projectDir:t,public:r=!0,includeAI:i,appId:n,name:s,packageName:c,overwrite:p}){if(!a.isAbsolute(t))throw Error(`Project directory must be an absolute path: ${t}`);if(!O.includes(e))throw Error(`Invalid template: ${e}. Valid options: ${O.join(", ")}`);let l=a.resolve($,`template-${e}`);try{if(!(await o.stat(l)).isDirectory())throw Error(`Template path is not a directory: ${l}`)}catch(e){if(e?.code==="ENOENT")throw Error(`Template directory not found: ${l}`,{cause:e});throw Error(`Unable to access template directory: ${l}`,{cause:e})}if(await o.stat(t).then(e=>{if(!e.isDirectory())throw Error(`Project path is not a directory: ${t}`);return!0}).catch(e=>{if(e?.code==="ENOENT")return!1;throw Error(`Unable to access project directory: ${t}`,{cause:e})})){if((await o.readdir(t)).length>0&&!p)throw Error(`Project directory is not empty: ${t}`)}else await o.mkdir(t,{recursive:!0});await m(l,t,{includeAI:i}),r&&await S(t,await x()),await T(t),await C(t);let u=c??a.basename(t).trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z0-9-~._]+/g,"-");await N(t,u),await g(t,n??`com.doubao.${u}`,s??"")}let A=e("fs");function K(e){return[{name:"DoubaoAppsDevPlugin",setup(t){t.onDevCompileDone(()=>{e?.onDevCompileDone?.()})}}]}class R{appDirectory;launcher;constructor(e,t=c){this.appDirectory=e,this.launcher=new t(e)}async dev(e={}){let{compileHooks:t,...a}=e;return await this.launcher.dev({...a,rsbuildPlugins:K(t),signingEncryptionOptions:e.signingEncryptionOptions})}async build(e={}){process.env.NODE_ENV="production";let{compileHooks:t,...a}=e;await this.launcher.build({...a,rsbuildPlugins:K(t),signingEncryptionOptions:e.signingEncryptionOptions,versionTag:e.versionTag})}async discoverWidgets(){return Object.values(this.launcher.context.metadata.getData().widgets)}async discoverPages(){return Object.values(this.launcher.context.metadata.getData().pages)}async pushWidget(e){let{widgetId:t,deviceId:a,botId:r,widgetData:o,hdt:i}=e,n=await d({hdt:i,deviceId:a}),s=this.launcher.context.metadata.getData().app.package;n.pushWidget({packageName:s,widgetId:t,widgetData:o,botId:r})}async openPage(e){let{pageId:t,pageData:a,pageSettings:r,mode:o,hdt:i,deviceId:n}=e,s=await d({hdt:i,deviceId:n}),c=this.launcher.context.metadata.getData().app.package;s.openPage({packageName:c,pageId:t,pageData:a,pageSettings:r,mode:o})}async executeDebugScene(e){let{matchedScene:t,deviceId:a,hdt:r}=e,o=this.launcher.context.metadata.getData().app.package,i=await d({hdt:r,deviceId:a});await p({matchedScene:t,packageName:o,driver:i})}async getDebugScenes(){return await s(this.appDirectory||process.cwd())}async deploy(e){let{versionTag:t,cookie:a,appKey:r,signingEncryptionOptions:o}=e;process.env.NODE_ENV="production",await this.launcher.build({skipCleanupRootPath:!0,signingEncryptionOptions:o,versionTag:e.versionTag});let{manifest:n}=this.launcher.context,{packageName:s,versionCode:c}=n,{packageResource:p}=await u({channelName:"doubao_app",manifest:n,rootPath:this.launcher.rootPath});if(!p)throw Error("Failed to archive package");let{resource:d}=p,f=new FormData,y=new Blob([new Uint8Array(A.default.readFileSync(d))],{type:"application/zip"});f.append("applet_file",y,"doubao_app.zip"),f.append("applet_version_code",c.toString());let g=encodeURIComponent(r||s),h=encodeURIComponent(t),m=`https://hello.doubao-dev.com/developer/resource_api/apps/${g}/versions/${h}/package/upload_applet`,w={...i(),Cookie:a};try{let e=await fetch(m,{method:"POST",body:f,headers:w}),t=e.headers.get("x-tt-logid")||"";if(!e.ok){let a=await e.text(),r=JSON.stringify({code:e.status,message:"HTTP Error",data:a,log_id:t});throw Error(r)}let a=await e.json();if(0!==a.code){let e=JSON.stringify({...a,log_id:t});throw Error(e)}return console.log("Deploy success:",a),a}catch(e){return console.error("Deploy error:",e?.message||e),JSON.parse(e.message)}finally{l()||A.default.rmSync(this.launcher.rootPath,{recursive:!0,force:!0})}}}let U=e=>e;export{analyze,build,dev}from"./938.js";export{R as DoubaoAppsSDK,F as create,U as defineConfig};
3
5
  //# sourceMappingURL=index.js.map
package/dist/types.d.ts CHANGED
@@ -94,6 +94,10 @@ export declare interface TaroPluginOptions {
94
94
  * doubao app id
95
95
  */
96
96
  appId: string;
97
+ /**
98
+ * doubao app icons
99
+ */
100
+ icons?: string;
97
101
  /**
98
102
  * widget metadata config
99
103
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@doubao-apps/kit",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "type": "module",
5
5
  "types": "./dist/types.d.ts",
6
6
  "bin": {
@@ -41,7 +41,7 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@ast-grep/napi": "^0.30.0",
44
- "@lynx-js/external-bundle-rsbuild-plugin": "npm:@upupming/external-bundle-rsbuild-plugin-canary@0.0.3-canary-20260308-21e426dc",
44
+ "@lynx-js/external-bundle-rsbuild-plugin": "npm:@lynx-js/external-bundle-rsbuild-plugin-canary@0.1.1-canary-20260415-e5b0f668",
45
45
  "@lynx-js/react-alias-rsbuild-plugin": "0.12.7",
46
46
  "@lynx-js/react-rsbuild-plugin": "npm:@lynx-js/react-rsbuild-plugin-canary@0.12.11-canary-20260312-39fdf1ab",
47
47
  "@lynx-js/rspeedy": "0.13.3",
@@ -79,6 +79,9 @@
79
79
  "uqr": "0.1.2",
80
80
  "zod": "3.23.8"
81
81
  },
82
+ "peerDependencies": {
83
+ "@lynx-js/react": "^0.117.1"
84
+ },
82
85
  "publishConfig": {
83
86
  "access": "public",
84
87
  "registry": "https://registry.npmjs.org/"