@ttmg/cli 0.3.8 → 0.3.9-beta.2
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/index.js +2155 -1293
- package/dist/index.js.map +1 -1
- package/dist/package.json +7 -2
- package/dist/public/assets/Card-CTv745_w.js +1 -0
- package/dist/public/assets/Detail-DgPwDVds.js +1 -0
- package/dist/public/assets/Detail-DgPwDVds.js.br +0 -0
- package/dist/public/assets/MonetizationMode-CqG7VmZX.js +1 -0
- package/dist/public/assets/MonetizationModeSummary-BSmi2Vjs.js +1 -0
- package/dist/public/assets/SectionHeader-BFCjOsAZ.js +1 -0
- package/dist/public/assets/Tag-Cwc1Bal2.js +1 -0
- package/dist/public/assets/arrow-left-DrT44p81.js +1 -0
- package/dist/public/assets/baseForm-DY0XNYDE.js +10 -0
- package/dist/public/assets/baseForm-DY0XNYDE.js.br +0 -0
- package/dist/public/assets/baseForm-Dl4zA6hU.css +1 -0
- package/dist/public/assets/baseForm-Dl4zA6hU.css.br +0 -0
- package/dist/public/assets/chevron-right-DzleLIdl.js +1 -0
- package/dist/public/assets/compass-BW4vGO0x.js +1 -0
- package/dist/public/assets/index-4NS2mMuQ.css +1 -0
- package/dist/public/assets/index-B-AeuNlL.css +1 -0
- package/dist/public/assets/index-B-AeuNlL.css.br +0 -0
- package/dist/public/assets/index-B3e59WZW.js +1 -0
- package/dist/public/assets/{index-tOg_vZEc.js → index-B6NHbQwP.js} +1 -1
- package/dist/public/assets/index-B6RZ7AdI.js +1 -0
- package/dist/public/assets/index-B6RZ7AdI.js.br +0 -0
- package/dist/public/assets/index-BAud2cRu.css +1 -0
- package/dist/public/assets/index-BBuCNszs.js +1 -0
- package/dist/public/assets/index-BJ1WI0xW.js +14 -0
- package/dist/public/assets/index-BJ1WI0xW.js.br +0 -0
- package/dist/public/assets/index-BOl1-Siv.css +1 -0
- package/dist/public/assets/index-BOl1-Siv.css.br +0 -0
- package/dist/public/assets/index-BQiwR45B.js +1 -0
- package/dist/public/assets/index-BR2iFF5J.js +1 -0
- package/dist/public/assets/index-BR2iFF5J.js.br +0 -0
- package/dist/public/assets/index-BbSY5AoV.js +1 -0
- package/dist/public/assets/index-BmP2LC8F.js +1 -0
- package/dist/public/assets/index-Bmw61rl1.css +1 -0
- package/dist/public/assets/index-Bmw61rl1.css.br +0 -0
- package/dist/public/assets/index-BqUsIqrD.js +1 -0
- package/dist/public/assets/index-BqUsIqrD.js.br +0 -0
- package/dist/public/assets/index-BrC0aWmM.js +1 -0
- package/dist/public/assets/index-BsEJ06u7.js +1 -0
- package/dist/public/assets/index-C-tTmNa4.css +1 -0
- package/dist/public/assets/index-C0slAX90.js +1 -0
- package/dist/public/assets/index-C0slAX90.js.br +0 -0
- package/dist/public/assets/index-CBlaFQAe.js +1 -0
- package/dist/public/assets/index-CBlaFQAe.js.br +0 -0
- package/dist/public/assets/index-CCIR5x04.js +1 -0
- package/dist/public/assets/index-CVrG-aCP.js +1 -0
- package/dist/public/assets/index-CYONSh3E.js +1 -0
- package/dist/public/assets/index-Cc1ilXmc.css +1 -0
- package/dist/public/assets/index-CmVUh50W.css +1 -0
- package/dist/public/assets/index-Crx61Qjc.css +1 -0
- package/dist/public/assets/index-D-GbEkoB.css +1 -0
- package/dist/public/assets/index-DYNaiQIB.js +1 -0
- package/dist/public/assets/index-Dvg_oNs7.css +1 -0
- package/dist/public/assets/{index-D2LsTDVa.css → index-ROKxx4f7.css} +1 -1
- package/dist/public/assets/index-ROKxx4f7.css.br +0 -0
- package/dist/public/assets/index-RYY-l6Oq.css +1 -0
- package/dist/public/assets/index-TElbHITb.js +1 -0
- package/dist/public/assets/index-Yv0czelv.js +1 -0
- package/dist/public/assets/index-ZYC8SS17.js +1 -0
- package/dist/public/assets/index-faRHENEQ.css +1 -0
- package/dist/public/assets/sparkles-KMi7bfJ3.js +1 -0
- package/dist/public/assets/zap-BlvSLoGD.js +1 -0
- package/dist/public/index.html +13 -3
- package/dist/scripts/dev-debug.js +191 -0
- package/package.json +7 -2
- package/CHANGELOG.md +0 -228
- package/dist/public/assets/Detail-DuoflIDB.js +0 -1
- package/dist/public/assets/Detail-DuoflIDB.js.br +0 -0
- package/dist/public/assets/MonetizationMode-C6-xgErM.js +0 -1
- package/dist/public/assets/MonetizationModeSummary-v1a9_YaN.js +0 -1
- package/dist/public/assets/baseForm-CB6KCNqW.css +0 -1
- package/dist/public/assets/baseForm-CB6KCNqW.css.br +0 -0
- package/dist/public/assets/baseForm-DqyLTNAx.js +0 -10
- package/dist/public/assets/baseForm-DqyLTNAx.js.br +0 -0
- package/dist/public/assets/index-88dZ53Te.css +0 -1
- package/dist/public/assets/index-88dZ53Te.css.br +0 -0
- package/dist/public/assets/index-Bf6aJOeV.css +0 -1
- package/dist/public/assets/index-Bf85t01Q.css +0 -1
- package/dist/public/assets/index-Bf85t01Q.css.br +0 -0
- package/dist/public/assets/index-BmcEpXdh.js +0 -1
- package/dist/public/assets/index-BmcEpXdh.js.br +0 -0
- package/dist/public/assets/index-BnU4EHWL.css +0 -1
- package/dist/public/assets/index-BnU4EHWL.css.br +0 -0
- package/dist/public/assets/index-Bpba_DWs.js +0 -1
- package/dist/public/assets/index-C06KDNuj.css +0 -1
- package/dist/public/assets/index-CH7igbHY.css +0 -1
- package/dist/public/assets/index-CLgcHgzd.css +0 -1
- package/dist/public/assets/index-CPJp_0l2.js +0 -1
- package/dist/public/assets/index-ClpFHzCy.js +0 -1
- package/dist/public/assets/index-Crf11eTs.js +0 -1
- package/dist/public/assets/index-Crf11eTs.js.br +0 -0
- package/dist/public/assets/index-CwihbwhD.js +0 -1
- package/dist/public/assets/index-D2LsTDVa.css.br +0 -0
- package/dist/public/assets/index-DJTcocTh.js +0 -1
- package/dist/public/assets/index-DNsJSSmy.css +0 -1
- package/dist/public/assets/index-DO22Abni.js +0 -1
- package/dist/public/assets/index-DPSts5Re.css +0 -1
- package/dist/public/assets/index-DPSts5Re.css.br +0 -0
- package/dist/public/assets/index-DWw-gYwj.js +0 -1
- package/dist/public/assets/index-DWw-gYwj.js.br +0 -0
- package/dist/public/assets/index-Dc800O6M.js +0 -1
- package/dist/public/assets/index-De7XyxJU.js +0 -1
- package/dist/public/assets/index-Pfoc2Cwl.js +0 -14
- package/dist/public/assets/index-Pfoc2Cwl.js.br +0 -0
- package/dist/public/assets/index-SOEihm3l.js +0 -1
- package/dist/public/assets/index-dSgab9d_.js +0 -1
- package/dist/public/assets/index-dSgab9d_.js.br +0 -0
- package/dist/public/assets/index-iUN2bzlN.js +0 -1
- package/dist/public/assets/index-yXoFuCJJ.js +0 -1
- package/dist/public/assets/index-yXoFuCJJ.js.br +0 -0
- package/dist/public/assets/times-BsA3kTAU.js +0 -1
- package/dist/public/assets/times-C7C5ulLg.css +0 -1
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.change-log-container{width:100%;padding-bottom:24px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px}.change-log-loading{min-height:240px;display:flex;align-items:center;justify-content:center}.change-log-empty{color:var(--tt-text-dim);margin:0}.change-log-item{display:flex;flex-direction:column}.change-log-item-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.change-log-version{margin:0;font-size:var(--tt-text-h2);font-weight:600;color:var(--tt-text);letter-spacing:-.2px}.change-log-section+.change-log-section{margin-top:16px;padding-top:16px;border-top:1px solid var(--tt-border)}.change-log-section-title{display:inline-flex;align-items:center;gap:8px}.change-log-changes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.change-log-change{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:var(--tt-radius-md);background:var(--tt-bg-sunken);font-size:var(--tt-text-body);line-height:1.6;color:var(--tt-text)}.change-log-change-bullet{flex-shrink:0;margin-top:8px;width:5px;height:5px;border-radius:999px;background:var(--tt-text-faint)}.change-log-change-body{flex:1 1 auto;min-width:0}.change-log-change-link{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:0 6px;height:20px;border-radius:var(--tt-radius-sm);background:var(--tt-accent-soft);color:var(--tt-accent-text);text-decoration:none;font-size:var(--tt-text-caption);font-weight:600;vertical-align:middle;transition:var(--tt-hover-transition)}.change-log-change-link:hover{background:var(--tt-accent-strong);color:var(--tt-accent-text)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as a,d as l,D as c,j as s,s as t,c7 as i,i as o,T as n,b as d}from"./index-BJ1WI0xW.js";const g=()=>{const r=a(),{state:{user:e}}=l();return c(e)?s.jsx(t,{position:"bottom",content:s.jsx("div",{className:"login-user-popover",children:e?.email||e?.user_id}),children:s.jsx(i,{color:"amber",style:{flexShrink:0},alt:e?.email||e?.user_id||void 0,size:"small",children:(e?.email||e?.user_id||"?").trim()[0]?.toUpperCase()||"?"})}):s.jsx(t,{position:"bottom",trigger:"hover",content:s.jsxs("div",{className:"not-login-status-popover",children:[s.jsxs("div",{className:"not-login-status-popover-copy",children:[s.jsx(n.Text,{strong:!0,children:o("notLogin")}),s.jsx(n.Text,{children:o("notLoginTip")}),s.jsx("code",{className:"not-login-status-command",children:"ttmg login"})]}),s.jsx("div",{className:"not-login-status-popover-actions",children:s.jsx(d,{size:"small",theme:"light",onClick:()=>r("/basic_debug_guide"),children:o("basicDebugGuide.entryAction")})})]}),children:s.jsx(i,{color:"grey",style:{flexShrink:0},size:"small",children:o("notLogin")})})};export{g as LoginStatus};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as t,r as a,j as e,b as c,i as o,K as r,O as i}from"./index-BJ1WI0xW.js";const d=()=>{const n=t();return a.useEffect(()=>{const s=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=s}},[]),e.jsxs("div",{className:"manual-connect-container",children:[e.jsx("div",{className:"manual-connect-back",children:e.jsx(c,{className:"devtool-page-back",theme:"borderless",onClick:()=>n("/network_diagnostics"),children:o("back")})}),e.jsx(r,{title:o("netDiagManualBindEntry"),children:e.jsx(i,{onClose:()=>n("/network_diagnostics"),onSuccess:()=>n("/network_diagnostics")})})]})};export{d as ManualConnect};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as o,u as c,j as e,P as r,i as a}from"./index-BJ1WI0xW.js";import{S as t}from"./SectionHeader-BFCjOsAZ.js";import{C as d,m,L as l,M as h,a as p,o as x}from"./MonetizationModeSummary-BSmi2Vjs.js";import"./index-B6NHbQwP.js";import{C as v}from"./chevron-right-DzleLIdl.js";import{C as y}from"./compass-BW4vGO0x.js";import"./Card-CTv745_w.js";import"./Tag-Cwc1Bal2.js";const j=[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]],u=o("credit-card",j);const g=[["path",{d:"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z",key:"q8bfy3"}],["path",{d:"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14",key:"1853fq"}],["path",{d:"M8 6v8",key:"15ugcq"}]],k=o("megaphone",g),N={iaa:k,iap:u,iaap:l},C=s=>a(s),I=()=>{const s=c();return e.jsxs("div",{className:"ia-page",children:[e.jsx(r,{title:a("ia.overview.title"),subtitle:a("ia.overview.desc")}),e.jsxs("section",{className:"ia-section ia-section-modes",children:[e.jsx(t,{icon:d,title:a("ia.monetization.title"),subtitle:a("ia.monetization.desc")}),e.jsx("div",{className:"ia-mode-grid",children:m.map(i=>{const n=N[i.key];return e.jsxs("button",{type:"button",className:`ia-mode-card ia-mode-card-${i.key}`,onClick:()=>s(`/integration_assistant/mode/${i.key}`),children:[e.jsxs("header",{className:"ia-mode-card-head",children:[e.jsx("span",{className:"ia-mode-card-badge","aria-hidden":"true",children:e.jsx(n,{size:17,strokeWidth:2})}),e.jsx("h4",{className:"ia-mode-card-title",children:C(i.titleKey)}),e.jsx("span",{className:"ia-mode-card-chevron","aria-hidden":"true",children:e.jsx(v,{size:14,strokeWidth:2})})]}),e.jsx(h,{mode:i,compact:!0})]},i.key)})})]}),e.jsxs("section",{className:"ia-section",children:[e.jsx(t,{icon:y,title:a("ia.overview.groups.title"),subtitle:a("ia.overview.groups.desc")}),e.jsx("div",{className:"ia-section-stack",children:e.jsx(p,{sections:x})})]})]})};export{I as IntegrationAssistant};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.basic-debug-guide-page{display:flex;flex-direction:column;gap:16px;padding:16px}.basic-debug-guide-banner-copy{display:flex;flex-direction:column;gap:4px}.basic-debug-guide-hero,.basic-debug-guide-section{border:1px solid var(--tt-border);border-radius:var(--tt-radius-lg);background:var(--tt-bg-panel)}.basic-debug-guide-hero{padding:22px 24px;background:var(--tt-bg-panel)}.basic-debug-guide-hero-desc{margin:14px 0 0;color:var(--tt-text-dim);line-height:1.7}.basic-debug-guide-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.basic-debug-guide-section{padding:18px 20px}.basic-debug-guide-section-head{display:flex;flex-direction:column;gap:4px}.basic-debug-guide-section-desc{color:var(--tt-text-dim);line-height:1.65}.basic-debug-guide-list,.basic-debug-guide-steps{display:flex;flex-direction:column;gap:12px;margin-top:16px}.basic-debug-guide-item,.basic-debug-guide-step{display:flex;align-items:flex-start;gap:12px}.basic-debug-guide-item-index,.basic-debug-guide-step-index{width:24px;height:24px;border-radius:999px;background:var(--tt-accent-soft);color:var(--tt-accent-text);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;font-size:var(--tt-text-meta);font-weight:600;margin-top:1px}.basic-debug-guide-item-muted .basic-debug-guide-item-index{background:var(--tt-overlay-medium);color:var(--tt-text-faint)}.basic-debug-guide-item-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.basic-debug-guide-item-copy .semi-typography:nth-child(2),.basic-debug-guide-step .semi-typography{color:var(--tt-text-dim);line-height:1.65}.basic-debug-guide-command-list{display:flex;flex-direction:column;gap:12px;margin-top:18px;padding-top:16px;border-top:1px solid var(--tt-border)}.basic-debug-guide-command-item{display:flex;flex-direction:column;gap:6px}.basic-debug-guide-command-item code{display:inline-flex;width:fit-content;padding:7px 10px;border-radius:var(--tt-radius-sm);background:var(--tt-overlay-soft);border:1px solid var(--tt-border);font-family:var(--tt-font-mono);font-size:var(--tt-text-body);color:var(--tt-text)}@media(max-width:900px){.basic-debug-guide-page{padding:12px}.basic-debug-guide-hero,.basic-debug-guide-section{padding-left:16px;padding-right:16px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./index-BJ1WI0xW.js";const e=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],l=a("sparkles",e);export{l as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./index-BJ1WI0xW.js";const o=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],e=a("zap",o);export{e as Z};
|
package/dist/public/index.html
CHANGED
|
@@ -12,10 +12,20 @@
|
|
|
12
12
|
rel="stylesheet"
|
|
13
13
|
/>
|
|
14
14
|
<title>TikTok Mini Games DevTool</title>
|
|
15
|
-
<script type="module" crossorigin src="/assets/index-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
15
|
+
<script type="module" crossorigin src="/assets/index-BJ1WI0xW.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/index-ROKxx4f7.css">
|
|
17
17
|
</head>
|
|
18
|
-
|
|
18
|
+
<!--
|
|
19
|
+
Theme attributes (`theme-mode` for Semi UI + `data-theme` for our
|
|
20
|
+
own CSS variables) are written by `src/utils/theme.ts` at boot
|
|
21
|
+
time and on user-toggle. The inline initial values below avoid a
|
|
22
|
+
flash-of-unthemed-content; the real source of truth is
|
|
23
|
+
`getInitialTheme()`, which reads localStorage and otherwise
|
|
24
|
+
defaults to light (dark mode is opt-in via the header toggle).
|
|
25
|
+
The legacy `theme-variant='simple'` is dropped — the Wasm modal
|
|
26
|
+
now uses the global `tt-flair-*` silencer in `index.css` instead.
|
|
27
|
+
-->
|
|
28
|
+
<body theme-mode="light" data-theme="light">
|
|
19
29
|
<div id="root"></div>
|
|
20
30
|
<iframe
|
|
21
31
|
style="visibility: hidden"
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ===================================================================
|
|
3
|
+
* dev-debug.js — 一键联调 cli + ide
|
|
4
|
+
* ===================================================================
|
|
5
|
+
*
|
|
6
|
+
* 用途:让你在本地同时改 CLI(CLI server / wasm split / route 等)和 IDE
|
|
7
|
+
* (React 组件、wasm-split Modal、API 调用)时只敲一条命令就把三件事
|
|
8
|
+
* 一起拉起来:
|
|
9
|
+
*
|
|
10
|
+
* 1. CLI 源码增量构建 → packages/libs/dev-tools/cli/dist
|
|
11
|
+
* 2. CLI dev server → http://localhost:3000,cwd = 你的 Unity 工程
|
|
12
|
+
* 3. IDE vite dev server → http://localhost:5173,热更
|
|
13
|
+
*
|
|
14
|
+
* IDE 的 vite.config.ts 已经把所有 /game/* 接口 proxy 到 :3000,所以
|
|
15
|
+
* 你只要在浏览器开 http://localhost:5173,就能用最新 IDE + 最新 CLI 联调。
|
|
16
|
+
*
|
|
17
|
+
* 用法(在 cli 目录下):
|
|
18
|
+
* pnpm dev:debug /absolute/path/to/your/unity-game
|
|
19
|
+
* # 或者
|
|
20
|
+
* TTMG_DEV_PROJECT=/absolute/path/to/your/unity-game pnpm dev:debug
|
|
21
|
+
*
|
|
22
|
+
* 在 monorepo 任意位置:
|
|
23
|
+
* pnpm -C packages/libs/dev-tools/cli dev:debug /absolute/path/to/unity-game
|
|
24
|
+
*
|
|
25
|
+
* 必填:Unity 工程目录(必须含 game.json)。CLI 大量逻辑用 process.cwd()
|
|
26
|
+
* 解析 wasm 路径、写 __TTMG_TEMP__、改 webgl-wasm-split.js,所以必须把
|
|
27
|
+
* CLI 进程的 cwd 直接指到工程根,不能在 monorepo 里跑。
|
|
28
|
+
*
|
|
29
|
+
* 设计要点:
|
|
30
|
+
* - 用 Node 自带的 `--watch`(≥18.11)替代 nodemon —— 监听 dist/index.js
|
|
31
|
+
* 变化自动重启 server 进程,零额外依赖。
|
|
32
|
+
* - 用 rollup 自带 `-w` 替代 ts-node-dev / tsx —— 跟 npm run build 走
|
|
33
|
+
* 同一条 pipeline,不会出现 "ts-node 跑得通、build 不过" 的偏差。
|
|
34
|
+
* - 启动顺序:先 spawn rollup -w(它会自己 first-build),轮询等待
|
|
35
|
+
* dist/index.js 出现,再 spawn node --watch;vite 跟 rollup 同时起。
|
|
36
|
+
* 这样避免了"node --watch 在 dist 还不存在时直接退出"的坑。
|
|
37
|
+
* - SIGINT/SIGTERM 一并下发给三个子进程,Ctrl+C 干净收尾。
|
|
38
|
+
*
|
|
39
|
+
* 设置 `TTMG_DEV_NO_OPEN=1` 给 CLI 子进程,让它不要 openUrl 到 :3000
|
|
40
|
+
*(那是 dist/public 里的旧 IDE,联调时我们要的是 vite 的 :5173)。
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
const { spawn } = require('child_process');
|
|
44
|
+
const fs = require('fs');
|
|
45
|
+
const path = require('path');
|
|
46
|
+
|
|
47
|
+
// __dirname = packages/libs/dev-tools/cli/scripts
|
|
48
|
+
const CLI_DIR = path.resolve(__dirname, '..');
|
|
49
|
+
const IDE_DIR = path.resolve(__dirname, '../../ide');
|
|
50
|
+
const CLI_DIST_ENTRY = path.join(CLI_DIR, 'dist/index.js');
|
|
51
|
+
|
|
52
|
+
function fail(msg) {
|
|
53
|
+
console.error(`\n❌ ${msg}\n`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const projectArg = process.argv[2];
|
|
58
|
+
const projectEnv = process.env.TTMG_DEV_PROJECT;
|
|
59
|
+
const projectDir = projectArg
|
|
60
|
+
? path.resolve(projectArg)
|
|
61
|
+
: projectEnv
|
|
62
|
+
? path.resolve(projectEnv)
|
|
63
|
+
: null;
|
|
64
|
+
|
|
65
|
+
if (!projectDir) {
|
|
66
|
+
fail(
|
|
67
|
+
'缺少 Unity 工程目录。\n' +
|
|
68
|
+
' 用法: pnpm dev:debug /absolute/path/to/your/unity-game\n' +
|
|
69
|
+
' 或: TTMG_DEV_PROJECT=/absolute/path/to/unity-game pnpm dev:debug',
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
if (!fs.existsSync(projectDir)) {
|
|
73
|
+
fail(`Unity 工程目录不存在: ${projectDir}`);
|
|
74
|
+
}
|
|
75
|
+
if (!fs.existsSync(path.join(projectDir, 'game.json'))) {
|
|
76
|
+
fail(
|
|
77
|
+
`${projectDir} 看起来不是 Unity 工程根(缺少 game.json)。\n` +
|
|
78
|
+
` CLI 用 process.cwd() 操作工程文件,cwd 不对会写错地方,所以这里硬性校验。`,
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
if (!fs.existsSync(IDE_DIR)) {
|
|
82
|
+
fail(
|
|
83
|
+
`IDE 目录不存在: ${IDE_DIR}\n` +
|
|
84
|
+
` 这个脚本依赖 monorepo 同级 ide 包,单独发出去的 npm 包不会带这个目录。`,
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
console.log('🚀 ttmg dev-debug starting');
|
|
89
|
+
console.log(` ├─ CLI 源码 ${CLI_DIR}`);
|
|
90
|
+
console.log(` ├─ IDE 源码 ${IDE_DIR}`);
|
|
91
|
+
console.log(` └─ Unity 工程 ${projectDir}`);
|
|
92
|
+
console.log('');
|
|
93
|
+
|
|
94
|
+
const children = [];
|
|
95
|
+
|
|
96
|
+
function spawnChild(label, cmd, args, opts) {
|
|
97
|
+
console.log(`▶ [${label}] ${cmd} ${args.join(' ')}`);
|
|
98
|
+
const child = spawn(cmd, args, {
|
|
99
|
+
stdio: 'inherit',
|
|
100
|
+
shell: process.platform === 'win32', // Windows 下需要 shell 才能识别 .cmd
|
|
101
|
+
...opts,
|
|
102
|
+
});
|
|
103
|
+
child._label = label;
|
|
104
|
+
child.on('exit', (code, signal) => {
|
|
105
|
+
if (signal === 'SIGINT' || signal === 'SIGTERM') return;
|
|
106
|
+
console.log(`✗ [${label}] exited with code=${code} signal=${signal}`);
|
|
107
|
+
// 任何一个子进程异常退出都把整个 dev-debug 拉下来,避免出现
|
|
108
|
+
// "vite 还在转、CLI 已经挂了" 这种调起来很懵的状态。
|
|
109
|
+
cleanup(code ?? 1);
|
|
110
|
+
});
|
|
111
|
+
children.push(child);
|
|
112
|
+
return child;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
let cleanedUp = false;
|
|
116
|
+
function cleanup(code = 0) {
|
|
117
|
+
if (cleanedUp) return;
|
|
118
|
+
cleanedUp = true;
|
|
119
|
+
for (const c of children) {
|
|
120
|
+
if (!c.killed) {
|
|
121
|
+
try {
|
|
122
|
+
c.kill('SIGINT');
|
|
123
|
+
} catch {}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// 给子进程一点时间把端口让出来 / flush 日志
|
|
127
|
+
setTimeout(() => process.exit(code), 200);
|
|
128
|
+
}
|
|
129
|
+
process.on('SIGINT', () => cleanup(0));
|
|
130
|
+
process.on('SIGTERM', () => cleanup(0));
|
|
131
|
+
|
|
132
|
+
// 1) CLI rollup watch —— 第一次会 full build,之后增量。
|
|
133
|
+
spawnChild('cli:build', 'npx', ['rollup', '-c', '-w'], { cwd: CLI_DIR });
|
|
134
|
+
|
|
135
|
+
// 3) IDE vite —— 跟 rollup 没依赖关系,并行起。
|
|
136
|
+
spawnChild('ide:dev', 'pnpm', ['dev'], { cwd: IDE_DIR });
|
|
137
|
+
|
|
138
|
+
// 2) CLI dev server —— 必须等 rollup 第一次 build 完,否则 node --watch
|
|
139
|
+
// 会在 dist/index.js 还不存在时立即退出。轮询 dist/index.js 文件存在
|
|
140
|
+
// + 连续两次大小不变(=已经写完)后再启动。
|
|
141
|
+
const POLL_INTERVAL_MS = 200;
|
|
142
|
+
const READY_TIMEOUT_MS = 60_000;
|
|
143
|
+
const startedAt = Date.now();
|
|
144
|
+
let lastSize = -1;
|
|
145
|
+
let stableCount = 0;
|
|
146
|
+
|
|
147
|
+
const waitTimer = setInterval(() => {
|
|
148
|
+
if (cleanedUp) {
|
|
149
|
+
clearInterval(waitTimer);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (Date.now() - startedAt > READY_TIMEOUT_MS) {
|
|
153
|
+
clearInterval(waitTimer);
|
|
154
|
+
fail(
|
|
155
|
+
`等待 ${CLI_DIST_ENTRY} 超时 (${READY_TIMEOUT_MS}ms)。` +
|
|
156
|
+
' rollup -w 是不是挂了?看上面的 cli:build 输出。',
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
let size;
|
|
160
|
+
try {
|
|
161
|
+
size = fs.statSync(CLI_DIST_ENTRY).size;
|
|
162
|
+
} catch {
|
|
163
|
+
return; // 还没生成
|
|
164
|
+
}
|
|
165
|
+
if (size === lastSize && size > 0) {
|
|
166
|
+
stableCount += 1;
|
|
167
|
+
} else {
|
|
168
|
+
stableCount = 0;
|
|
169
|
+
lastSize = size;
|
|
170
|
+
}
|
|
171
|
+
if (stableCount >= 2) {
|
|
172
|
+
clearInterval(waitTimer);
|
|
173
|
+
console.log(
|
|
174
|
+
`\n✓ cli dist ready (${(size / 1024).toFixed(1)}KB), starting server in ${projectDir}\n`,
|
|
175
|
+
);
|
|
176
|
+
spawnChild(
|
|
177
|
+
'cli:server',
|
|
178
|
+
'node',
|
|
179
|
+
['--watch', CLI_DIST_ENTRY, 'dev'],
|
|
180
|
+
{
|
|
181
|
+
cwd: projectDir,
|
|
182
|
+
env: {
|
|
183
|
+
...process.env,
|
|
184
|
+
// 让 CLI 跳过自己的 chrome-launcher openUrl —— 联调时 IDE 在
|
|
185
|
+
// vite (5173),不要再去打开 dist/public 那份旧 IDE。
|
|
186
|
+
TTMG_DEV_NO_OPEN: '1',
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
}, POLL_INTERVAL_MS);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ttmg/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9-beta.2",
|
|
4
4
|
"description": "TikTok Mini Game Command Line Tool",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"bin": {
|
|
@@ -9,12 +9,16 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist"
|
|
11
11
|
],
|
|
12
|
+
"publishConfig": {
|
|
13
|
+
"access": "public"
|
|
14
|
+
},
|
|
12
15
|
"scripts": {
|
|
13
16
|
"prepublish": "npm run build",
|
|
14
17
|
"build": "node scripts/build.js",
|
|
15
18
|
"setup": "node scripts/setup.js",
|
|
16
19
|
"reset:local-state": "node scripts/resetLocalState.js",
|
|
17
|
-
"dev:link": "npm run build && npm link"
|
|
20
|
+
"dev:link": "npm run build && npm link",
|
|
21
|
+
"dev:debug": "node scripts/dev-debug.js"
|
|
18
22
|
},
|
|
19
23
|
"keywords": [
|
|
20
24
|
"TTMG",
|
|
@@ -22,6 +26,7 @@
|
|
|
22
26
|
],
|
|
23
27
|
"author": "zhanghongyang.mocha",
|
|
24
28
|
"dependencies": {
|
|
29
|
+
"@anrans001/ttmg-wasmtool": "^0.3.2",
|
|
25
30
|
"acorn": "^8.15.0",
|
|
26
31
|
"archiver": "^7.0.1",
|
|
27
32
|
"axios": "^1.11.0",
|
package/CHANGELOG.md
DELETED
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
## 0.1.0
|
|
2
|
-
|
|
3
|
-
发布正式版本,支持 H5 小游戏和原生小游戏的初始化、开发调试和打包构建。支持 Windows 系统
|
|
4
|
-
|
|
5
|
-
## 0.1.0-beta.1
|
|
6
|
-
|
|
7
|
-
移除 Client WS 端口和 Http 端口默认 -1 的配置,变成通过和 Node CLI 通信显示发端口
|
|
8
|
-
|
|
9
|
-
## 0.1.0-beta.8
|
|
10
|
-
|
|
11
|
-
支持自动打开浏览器,且聚焦在 devTools 窗口
|
|
12
|
-
|
|
13
|
-
## 0.1.0-beta.9
|
|
14
|
-
|
|
15
|
-
1. 支持文件上传进度显示
|
|
16
|
-
2. 支持自动打开浏览器调试模式
|
|
17
|
-
|
|
18
|
-
## 0.1.0-beta.10
|
|
19
|
-
|
|
20
|
-
fix: 修复还未完成新编译就直接上传了的问题
|
|
21
|
-
|
|
22
|
-
## 0.1.0-beta.11
|
|
23
|
-
|
|
24
|
-
feat: 先关闭自动上传能力
|
|
25
|
-
|
|
26
|
-
## 0.1.0-beta.12
|
|
27
|
-
|
|
28
|
-
feat: 支持文件变更监听,告知浏览器文件变更,提醒开发者重新加载游戏
|
|
29
|
-
|
|
30
|
-
## 0.1.0-beta.13
|
|
31
|
-
|
|
32
|
-
1. 支持 sourcemap
|
|
33
|
-
2. 优化上传环节产物,过滤 sourcemap 文件,提高上传效率
|
|
34
|
-
|
|
35
|
-
## 0.1.0-beta.14
|
|
36
|
-
|
|
37
|
-
1. 修复 client key 未成功写入 mock meta 的问题,导致不一致
|
|
38
|
-
|
|
39
|
-
## 0.1.0-beta.15
|
|
40
|
-
|
|
41
|
-
1. 还原 open url 历史方法
|
|
42
|
-
|
|
43
|
-
## 0.1.1
|
|
44
|
-
|
|
45
|
-
发布最新版本,提醒开发者升级最新版本
|
|
46
|
-
|
|
47
|
-
## 0.1.2
|
|
48
|
-
|
|
49
|
-
发布最新版本,支持 sourcemap
|
|
50
|
-
|
|
51
|
-
## 0.1.3-beta.1
|
|
52
|
-
|
|
53
|
-
优化显示二维码问题
|
|
54
|
-
|
|
55
|
-
## 0.1.3-beta.2
|
|
56
|
-
|
|
57
|
-
彻底修复二维码兼容问题
|
|
58
|
-
|
|
59
|
-
## 0.1.3-beta.3
|
|
60
|
-
|
|
61
|
-
修复 sourcemap 错乱问题
|
|
62
|
-
|
|
63
|
-
## 0.1.3-beta.4
|
|
64
|
-
|
|
65
|
-
修复循环依赖问题
|
|
66
|
-
|
|
67
|
-
## 0.1.3-beta.5
|
|
68
|
-
|
|
69
|
-
修复监听文件变化报错问题
|
|
70
|
-
|
|
71
|
-
## 0.1.3
|
|
72
|
-
|
|
73
|
-
发布优化版本 CLI
|
|
74
|
-
|
|
75
|
-
## 0.1.4
|
|
76
|
-
|
|
77
|
-
优化页面交互
|
|
78
|
-
|
|
79
|
-
## 0.1.5
|
|
80
|
-
|
|
81
|
-
1.fix: 控制台报错问题 2. feat: 优化
|
|
82
|
-
|
|
83
|
-
## 0.1.6
|
|
84
|
-
|
|
85
|
-
1. 优化控制台报错日志
|
|
86
|
-
2. 优化调试启动环节耗时
|
|
87
|
-
|
|
88
|
-
## 0.1.7
|
|
89
|
-
|
|
90
|
-
- 修复 Windows 调试资源加载失败问题
|
|
91
|
-
|
|
92
|
-
## 0.1.8
|
|
93
|
-
|
|
94
|
-
优化 DevTool 网页端启动时间
|
|
95
|
-
|
|
96
|
-
## 0.1.9-beta.1
|
|
97
|
-
|
|
98
|
-
发布测试版本,供客户端调试使用
|
|
99
|
-
|
|
100
|
-
## 0.1.9-beta.2
|
|
101
|
-
|
|
102
|
-
发布测试版本,用于 Windows 测试
|
|
103
|
-
|
|
104
|
-
## 0.1.9
|
|
105
|
-
|
|
106
|
-
发布正式版本,支持
|
|
107
|
-
|
|
108
|
-
- login
|
|
109
|
-
- 支持上传游戏包
|
|
110
|
-
- 支持启动模式
|
|
111
|
-
- 支持 Debug Settings
|
|
112
|
-
|
|
113
|
-
## 0.2.0-beta.1
|
|
114
|
-
|
|
115
|
-
发布测试版本,用于 Windows 测试 login 登录异常逻辑
|
|
116
|
-
|
|
117
|
-
## 0.2.0
|
|
118
|
-
|
|
119
|
-
发布正式版本,支持 Windows 登录加载报错提示
|
|
120
|
-
|
|
121
|
-
## 0.2.1
|
|
122
|
-
|
|
123
|
-
1. 移除项目详情部分,比较冗余,不常用,融合到代码预检中
|
|
124
|
-
2. 打开调试页面地址增加 version 参数,来规避新老版本缓存问题和不同网页之间的隔离(未来支持)
|
|
125
|
-
3. 优化登录失败提示,增加网络检查提示,并给出如何修改网络设置的文档链接
|
|
126
|
-
4. 补充发送 meta 至客户端链路,增加调试链路日志信息,便于排查问题
|
|
127
|
-
|
|
128
|
-
## 0.2.2
|
|
129
|
-
|
|
130
|
-
1. 修复访问无权限的小游戏,顶部报错问题
|
|
131
|
-
|
|
132
|
-
## 0.2.3
|
|
133
|
-
|
|
134
|
-
优化扫码连接不上问题,支持手动绑定电脑本地 IP 地址
|
|
135
|
-
|
|
136
|
-
## 0.2.4
|
|
137
|
-
|
|
138
|
-
支持新的 DevTool 平台
|
|
139
|
-
|
|
140
|
-
## 0.2.5
|
|
141
|
-
|
|
142
|
-
1. 增加不在游戏根目录启动调试校验
|
|
143
|
-
2. 支持手动绑定客户端 IP 地址和端口
|
|
144
|
-
3. 调整启动模式中的场景列表表达文案
|
|
145
|
-
4. 修复文件上传问题,避免偶现上传失败
|
|
146
|
-
5. 支持展示游戏详情模块,支持开发者查看当前小游戏基本信息
|
|
147
|
-
6. 支持调试环节消费平台配置的域名
|
|
148
|
-
7. 升级 ttmg-pack 0.1.7,修复构建环节对开发者 JS 代码降级的问题
|
|
149
|
-
8. 文档新增常见问题部分,替换原有的开发文档
|
|
150
|
-
|
|
151
|
-
## 0.2.6
|
|
152
|
-
|
|
153
|
-
修复启动模式中场景列表展示问题,重复展示默认启动模式
|
|
154
|
-
|
|
155
|
-
## 0.2.7
|
|
156
|
-
1. 升级 ttmg-pack 0.2.3,调整 esbuild 配置,目标 es2020
|
|
157
|
-
2. 支持校验子包配置文件名是否符合规范,对于非法文件名,提示开发者修改
|
|
158
|
-
3. 调整域名校验默认逻辑,默认开启,校验失败时,提示开发者修改
|
|
159
|
-
|
|
160
|
-
## 0.2.8
|
|
161
|
-
1. 升级 ttmg-pack 0.2.4,修复 open data context 文件丢失问题
|
|
162
|
-
|
|
163
|
-
## 0.2.9
|
|
164
|
-
1. 升级 ttmg-pack 0.2.5,修复 open data context 打包问题
|
|
165
|
-
## 0.3.0
|
|
166
|
-
新增/优化功能适用 TikTok 版本 iOS >=43.1 | Android>=43.1
|
|
167
|
-
支持了开发信息蒙层,打开后可以查看游戏 FPS、设备信息、调试开关等信息,便于查看游戏运行状态 了解如何使用
|
|
168
|
-
支持删除历史启动模式,便于管理历史启动模式
|
|
169
|
-
调整调试设置模块名称为开发选项,和客户端内调开发者选项保持一致 了解如何使用
|
|
170
|
-
调试设置新增定义 vConsole 和 开发信息浮层设置
|
|
171
|
-
支持了变更日志,用户可以在调试环境下查看游戏的变更记录,部分新功能可通过更多信息查看使用
|
|
172
|
-
支持了调试设置开关本地缓存,避免每次都需要重新设置
|
|
173
|
-
修复上传名称为中文的游戏时,平台展示乱码的问题
|
|
174
|
-
修复启动模式模块,自定义query 参数无法持久化的问题
|
|
175
|
-
修复扫描二维码模块,内容过多,纵向无法滚动问题
|
|
176
|
-
|
|
177
|
-
## 0.3.1
|
|
178
|
-
- 支持 unity 小游戏本地一些列调试功能,如 Wasm 分包、包大小校验、一键上传代码包至平台等 了解如何使用
|
|
179
|
-
- 增加用户登录过期的异常提示,提醒开发者重新登录
|
|
180
|
-
- 优化上传代码包至平台功能,开发者只用添加描述后点击上传便可自动压缩当前目录下的代码包上传至开发者平台
|
|
181
|
-
- 优化 ttmg login 终端网络代理异常导致无法登录的报错引导,提示用户检查网络设置
|
|
182
|
-
|
|
183
|
-
## 0.3.2-beta.1
|
|
184
|
-
支持 cocos 2.0 openDataContext 相关适配
|
|
185
|
-
|
|
186
|
-
## 0.3.2
|
|
187
|
-
- 小游戏详情查询升级到 TikTok DevPortal v4 `devtool/info` 接口,字段映射更完整
|
|
188
|
-
- 支持一键打包当前目录并上传代码包到开发者平台;上传失败提示更明确,文件名非法字符自动处理
|
|
189
|
-
- Unity Wasm 分包:更新 `game.json` 子包配置写入逻辑(兼容 `subpackages`/`subPackages` 字段),Android/iOS main/sub 配置去重合并
|
|
190
|
-
- 启动校验增强:检查是否在小游戏根目录执行,并提示 `subPackages` 拼写错误
|
|
191
|
-
增加对 unity 是否需要分包的检查,对于需要分包的 unity 项目,给出明确提示
|
|
192
|
-
支持通过 `ttmg setup` 配置 CLI 语言,调试环境会跟随语言设置展示文案,首次调试时会自动同步默认语言,后续 CLI 与 IDE 语言保持一致,减少反复切换
|
|
193
|
-
调试与预检支持多语言展示,关键提示与校验信息更易理解
|
|
194
|
-
支持 Cocos 2.0 openDataContext 配置
|
|
195
|
-
变更记录新增提醒功能,当有新版本发布时,会通过弹窗提醒开发者更新
|
|
196
|
-
ttmg login 支持 ttmg login --verbose 参数,打印更多登录信息
|
|
197
|
-
API 预检建议文案统一收敛,避免重复提示,阅读更清晰
|
|
198
|
-
顶部区域透出项目预检错误与警告信息,便于开发者及时发现问题并修复
|
|
199
|
-
语言选择策略优化:优先使用 CLI 本地设置,未设置时自动回退浏览器语言
|
|
200
|
-
启动校验增强:检查是否在小游戏根目录执行,对于分包配置 subPackages 给出明确报错,引导开发者修改为 subpackages
|
|
201
|
-
修复项目详情中展示的主包大小限制和代码预检不一致的情况
|
|
202
|
-
|
|
203
|
-
## 0.3.3
|
|
204
|
-
升级 ttmg-pack 到 0.4.5,解决安卓无法调试 unity 项目问题
|
|
205
|
-
|
|
206
|
-
## 0.3.4
|
|
207
|
-
优化校验逻辑,给出提示
|
|
208
|
-
|
|
209
|
-
## 0.3.5
|
|
210
|
-
优化连接和代理,帮助开发者自助解决问题
|
|
211
|
-
|
|
212
|
-
## 0.3.6
|
|
213
|
-
修复分包过程超时问题
|
|
214
|
-
|
|
215
|
-
## 0.3.7
|
|
216
|
-
新增/优化功能适用 TikTok 版本 iOS >=43.1 | Android >=43.1
|
|
217
|
-
|
|
218
|
-
1. 新增能力接入助手,帮助开发者基于小游戏变现类型获取关键能力的接入引导。
|
|
219
|
-
2. 优化上传发布环节,将代码预检与代码上传整合为完整的上传发布流程。
|
|
220
|
-
3. 扩充包体大小预检说明,补充整包、主包、独立分包限制规则与详细文档入口,便于开发者理解和处理包体超限问题。
|
|
221
|
-
|
|
222
|
-
## 0.3.8
|
|
223
|
-
修复 `ttmg login` 后接口鉴权异常的问题:
|
|
224
|
-
|
|
225
|
-
1. 登录时把 `Set-Cookie` 响应头中的 `Path / Domain / Max-Age / Expires / Secure / HttpOnly / SameSite` 等属性被当成 cookie 拼接到 `Cookie` 字段,导致 CLI 发请求时把属性当成"假 cookie"一并带上。
|
|
226
|
-
2. 同一域名下同名 cookie(例如服务端用 `Max-Age=0` 显式删除的占位 cookie)也会被一起发送,污染掉真正有效的同名 cookie,浏览器会自动过滤这种情况,CLI 不会,造成登录态接口异常。
|
|
227
|
-
3. 修复后与浏览器行为保持一致:剥离 cookie 属性、过滤 `Max-Age<=0` 或 `Expires` 已过期的 cookie,仅保留 `name=value` 用于请求。
|
|
228
|
-
4. 已登录用户无需重新登录,下次发起请求时会自动清洗 rc 中已存的脏数据。
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aR as U,b$ as ie,bZ as Pe,aP as l,ay as a,aG as e,t as Re,o as Fe,K as c,f as I,d as w,a as O,y as Ve,S as xe,Q as Ge,N as Ne,c0 as qe,T as fe}from"./index-Pfoc2Cwl.js";import{E as Ue}from"./index-iUN2bzlN.js";import{F as E}from"./baseForm-DqyLTNAx.js";import{c as Qe}from"./index-tOg_vZEc.js";import"./times-BsA3kTAU.js";import"./index-yXoFuCJJ.js";function Ye(t={}){return U({url:"/game/direct-feed-card/list",method:"POST",data:t})}function Be(t={}){return U({url:"/game/direct-feed-card/scenarios",method:"POST",data:t})}function ze(t){return U({url:"/game/direct-feed-card/create",method:"POST",data:t})}function We(t){return U({url:"/game/direct-feed-card/asset-preview",method:"POST",data:t})}function He(t={}){return U({url:"/game/assets",method:"POST",data:t})}const Ze="fyf_promotion_direct_feed_play",je="direct-play-debug",ae="__create_direct_play_card__",se="recover_stamina_dynamic",Je=2,G=String(Je),Xe={cardName:"",cardDesc:"",cardType:G,scenario:se,subPkg:"__GAME__",params:""};function D(t,d){if(typeof t=="string"&&t.trim())return t;if(t&&typeof t=="object"){const i=t;if(i.errorMsg)return i.errorMsg;if(i.StatusMessage)return i.StatusMessage;if(i.message)return i.message}return d}function ea(t){return t?t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/1024/1024).toFixed(2)} MB`:"-"}function aa(t){return t?new Date(t*1e3).toLocaleString():"-"}function ta(t){return t==="preview"?a("ia.directPlay.stage2.assetGroup.preview"):t==="live"?a("ia.directPlay.stage2.assetGroup.live"):a("ia.directPlay.stage2.assetGroup.review")}function sa(t){return{...t||Ne,scene:Ze}}function ia(t){return t.pkgType==="independent"?t.independentPkg||t.pkgName||a("independentPackage"):a("gameMainPackage")}function te(t){return!t||t==="__GAME__"?a("gameMainPackage"):t}function be(t){const d=String(t||"").trim();return d?d==="reward_issue_static"||d==="reward_issue_dynamic"?a("ia.directPlay.stage2.create.scenario.rewardIssue"):d==="recover_stamina_static"||d==="recover_stamina_dynamic"||d==="strength_recovery"?a("ia.directPlay.stage2.create.scenario.recoverStamina"):d==="unlock_level_static"||d==="unlock_level_dynamic"?a("ia.directPlay.stage2.create.scenario.unlockLevel"):d==="recall_scenario"?a("ia.directPlay.stage2.create.scenario.rewardIssue"):"":""}function q(t,d){if(!t)return"-";const i=be(t);return i||(d?.[t]?d[t]:t)}function ra(t){const d=String(t||"").trim();if(d.endsWith("_static"))return 1;if(d.endsWith("_dynamic"))return 2}function _e(t,d){const i=Number(d),o=t.cardType===void 0?ra(t.value):Number(t.cardType);return o===void 0||o===i}function ve(t,d){const i=new Set;return t.filter(o=>{const x=q(o.value,d);return i.has(x)?!1:(i.add(x),!0)})}function na(t){return t?Number(t.audit_status)===1?a("ia.directPlay.stage2.cardStatus.approved"):Number(t.audit_status)===0||Number(t.status)===0?a("ia.directPlay.stage2.cardStatus.pending"):"":""}function ca(t,d){const i=t?.direct_feed_card||{},o=String(t?.content_id||i.content_id||"").trim();return o?{audit_status:Number(i.audit_status??1),status:Number(i.status??1),content_id:o,card_name:String(i.card_name||d.cardName),card_desc:String(i.card_desc||d.cardDesc),card_type:Number(i.card_type??d.cardType),scenario:String(i.scenario||d.scenario),sub_pkg:String(i.sub_pkg||d.subPkg),params:String(i.params||d.params||""),priority:i.priority===void 0?void 0:Number(i.priority)}:null}function W(){return[{value:se,label:q(se)}]}const da=()=>{const t=ie(),{state:{selectedLaunchOption:d,gameDetail:i,launchOptions:o,packages:x},setLaunchOptions:k,setSelectedLaunchOption:r}=Pe(),[f,Q]=l.useState([]),[b,M]=l.useState([]),[P,$]=l.useState("select"),[j,Y]=l.useState(""),[L,re]=l.useState(""),[ne,B]=l.useState(""),[ce,de]=l.useState(""),[le,R]=l.useState(""),[oe,H]=l.useState(""),[ue,Z]=l.useState(""),[Te,ge]=l.useState(!0),[Ce,pe]=l.useState(!1),[Se,me]=l.useState(!1),[ye,J]=l.useState(G),[A,he]=l.useState(W),T=l.useRef(null),X=l.useMemo(()=>sa(d),[d]),y=l.useMemo(()=>({appId:i?.app_id,clientKey:i?.client_key,miniGameId:i?.app_id}),[i?.app_id,i?.client_key]),C=l.useMemo(()=>f.find(s=>s.content_id===j)||null,[f,j]),K=l.useMemo(()=>b.find(s=>s.asset_id===L)||null,[b,L]),S=l.useMemo(()=>A.reduce((s,n)=>(n?.value&&(s[n.value]=be(n.value)||(n.label&&n.label!==n.value?n.label:n.value)),s),{}),[A]),z=l.useMemo(()=>{const s=A.filter(u=>_e(u,ye)),n=s.length>0?s:W();return ve(n,S).map(u=>({...u,label:q(u.value,S)}))},[ye,S,A]),Ie=l.useMemo(()=>b.map(s=>({label:`${s.file_name||s.asset_id} · v${s.version||"-"}`,value:s.asset_id})),[b]),we=l.useMemo(()=>[{label:a("ia.directPlay.stage2.create.option"),value:ae},...f.map(s=>({label:`${s.card_name} · ${q(s.scenario,S)} · ${te(s.sub_pkg)}`,value:s.content_id}))],[f,S]),ke=l.useMemo(()=>[{label:a("ia.directPlay.stage2.create.cardType.fixed"),value:"1"},{label:a("ia.directPlay.stage2.create.cardType.dynamic"),value:"2"}],[]),Ee=l.useMemo(()=>{const s=new Set(["__GAME__"]);return(x||[]).forEach(n=>{n?.type==="independent"&&n.name&&s.add(n.name)}),o.forEach(n=>{n.pkgType==="independent"&&n.independentPkg&&s.add(n.independentPkg)}),Array.from(s).map(n=>({label:te(n),value:n}))},[o,x]),De=l.useMemo(()=>e.jsxs("span",{className:"integration-assistant-direct-play-label-with-info",children:[e.jsx("span",{children:a("ia.directPlay.stage2.create.cardType")}),e.jsx(Re,{position:"top",trigger:"hover",showArrow:!0,content:e.jsxs("div",{className:"integration-assistant-direct-play-info-popover",children:[e.jsx(c.Text,{children:a("ia.directPlay.stage2.create.cardType.dynamicDesc")}),e.jsx(c.Text,{children:a("ia.directPlay.stage2.create.cardType.fixedDesc")})]}),children:e.jsx("span",{className:"integration-assistant-direct-play-info-icon","aria-label":"card type info",children:e.jsx(Fe,{})})})]}),[]),Me=l.useCallback(s=>{const n=String(s||G);J(n);const u=A.filter(p=>_e(p,n)),h=u.length>0?ve(u,S):W(),m=h[0]?.value,_=T.current?.getValue?.("scenario"),N=h.some(p=>p.value===_);T.current?.setValue?.("cardType",n),m&&!N&&T.current?.setValue?.("scenario",m)},[S,A]),F=l.useCallback(async s=>{ge(!0),de("");try{const[n,u,h]=await Promise.allSettled([Ye({appId:y.appId,clientKey:y.clientKey}),He({appId:y.appId,miniGameId:y.miniGameId,clientKey:y.clientKey}),Be({appId:y.appId,clientKey:y.clientKey})]),m=n.status==="fulfilled"?n.value:null,_=u.status==="fulfilled"?u.value:null,N=h.status==="fulfilled"?h.value:null;if(n.status==="rejected"||m?.error||m?.code!==0||!m?.data)throw new Error(D(m?.error,a("ia.directPlay.stage2.loadCardsFailed")));if(u.status==="rejected"||_?.error||_?.code!==0||!_?.data)throw new Error(D(_?.error,a("ia.directPlay.stage2.loadAssetsFailed")));const p=m.data.cards||[],V=(_.data.preview_assets||[]).map(g=>({...g,group:"preview"}));Q(p),M(V),N?.code===0&&N.data?.scenarios?.length?he(N.data.scenarios):he(g=>g.length>0?g:W()),Y(g=>{if(s?.contentId&&p.some(v=>v.content_id===s.contentId))return s.contentId;if(s?.cardName){const v=p.find(ee=>ee.card_name===s.cardName);if(v?.content_id)return v.content_id}return g&&p.some(v=>v.content_id===g)?g:p[0]?.content_id||""}),re(g=>g&&V.some(v=>v.asset_id===g)?g:V[0]?.asset_id||"")}catch(n){de(D(n,a("ia.directPlay.stage2.loadResourcesFailed")))}finally{ge(!1)}},[y.appId,y.clientKey,y.miniGameId]);l.useEffect(()=>{F()},[F]),l.useEffect(()=>{const s=z[0]?.value;if(!s)return;const n=T.current?.getValue?.("scenario");z.some(h=>h.value===n)||T.current?.setValue?.("scenario",s)},[z]);const Le=l.useCallback(()=>{const s={...X,id:je,name:a("ia.directPlay.stage1.generatedModeName")},n=o.filter(m=>m.id!==je),u=n.findIndex(m=>m.id==="created"),h=u>=0?[...n.slice(0,u),s,...n.slice(u)]:[...n,s];k(h),r(s),t("/")},[o,t,k,r,X]),Ae=l.useCallback(async()=>{try{const s=await T.current?.validate(),n=String(s?.cardName||"").trim(),u=String(s?.cardDesc||"").trim(),h=String(s?.scenario||"").trim(),m=String(s?.subPkg||"__GAME__").trim()||"__GAME__",_=String(s?.params||"").trim(),N=Number(s?.cardType||0);if(!n||!u||!h||!N)return;me(!0),H(""),Z("");const p=await ze({appId:y.appId,clientKey:y.clientKey,directFeedCard:{cardName:n,cardDesc:u,cardType:N,scenario:h,subPkg:m,params:_||void 0}});if(p?.error||p?.code!==0)throw new Error(D(p?.error,a("ia.directPlay.stage2.create.failed")));const V=String(p?.data?.content_id||p?.data?.direct_feed_card?.content_id||""),g=ca(p?.data,{cardName:n,cardDesc:u,cardType:N,scenario:h,subPkg:m,params:_});await F({contentId:V,cardName:n}),g&&(Q(v=>{const ee=v.filter($e=>$e.content_id!==g.content_id);return[g,...ee]}),Y(g.content_id)),$("select"),Z(a("ia.directPlay.stage2.create.success")),R(""),B(""),T.current?.reset?.(),J(G)}catch(s){if(s?.name==="ValidateError")return;H(D(s,a("ia.directPlay.stage2.create.failed")))}finally{me(!1)}},[F,y.appId,y.clientKey]),Ke=l.useCallback(s=>{if(s===ae){$("create"),Y(""),R(""),B("");return}$("select"),Y(s||"")},[]),Oe=l.useCallback(async()=>{if(!j||!L){R(a("ia.directPlay.stage2.selectRequired"));return}pe(!0),R("");try{const s=await We({assetId:L,contentId:j});if(s?.error||s?.code!==0||!s?.data?.preview_url)throw new Error(D(s?.error,a("ia.directPlay.stage2.previewFailed")));B(s.data.preview_url)}catch(s){B(""),R(D(s,a("ia.directPlay.stage2.previewFailed")))}finally{pe(!1)}},[L,j]);return e.jsxs("div",{className:"integration-assistant-direct-play-grid",children:[e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{children:[e.jsx(c.Title,{heading:5,children:a("ia.directPlay.stage1.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage1.desc")})]})}),e.jsxs("div",{className:"integration-assistant-direct-play-summary",children:[e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.modeName")}),e.jsx(c.Text,{children:a("ia.directPlay.stage1.modeValue")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.scene")}),e.jsx(c.Text,{children:a("scene_fyf_promotion_direct_feed_play")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage1.package")}),e.jsx(c.Text,{children:ia(X)})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",onClick:Le,children:a("ia.directPlay.stage1.createQr")})})]}),e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx(O,{className:"integration-assistant-direct-play-banner integration-assistant-direct-play-banner-top",fullMode:!1,bordered:!1,closeIcon:null,type:"info",description:a("ia.directPlay.stage2.banner")}),e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{className:"integration-assistant-direct-play-stage-head",children:[e.jsx(c.Title,{heading:5,children:a("ia.directPlay.stage2.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.desc")})]})}),e.jsx(O,{className:"integration-assistant-direct-play-banner integration-assistant-direct-play-banner-inline",fullMode:!1,bordered:!1,closeIcon:null,type:"warning",description:a("ia.directPlay.versionNotice")}),ce?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:ce}):null,le?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:le}):null,oe?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"danger",description:oe}):null,ue?e.jsx(O,{className:"integration-assistant-direct-play-banner",fullMode:!1,bordered:!1,closeIcon:null,type:"success",description:ue}):null,Te?e.jsx("div",{className:"integration-assistant-direct-play-loading",children:e.jsx(Ve,{size:"large"})}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"integration-assistant-direct-play-form",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"integration-assistant-direct-play-field-head",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.cardSelect")}),e.jsx(w,{theme:"borderless",onClick:()=>F(),children:a("ia.directPlay.stage2.refresh")})]}),e.jsx(xe,{className:"integration-assistant-direct-play-select",value:P==="create"?ae:j||void 0,optionList:we,onChange:s=>Ke(s),placeholder:a("ia.directPlay.stage2.cardSelect")})]}),P==="select"?e.jsxs("div",{children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.assetSelect")}),e.jsx(xe,{className:"integration-assistant-direct-play-select",value:L||void 0,optionList:Ie,onChange:s=>re(s),placeholder:a("ia.directPlay.stage2.assetSelect")})]}):null]}),P==="create"?e.jsx("div",{className:"integration-assistant-direct-play-create-wrap",children:e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.create.title")}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.create.desc")}),e.jsx(E,{className:"integration-assistant-direct-play-create-form",initValues:Xe,getFormApi:s=>{T.current=s},onValueChange:s=>{if(H(""),Z(""),s&&typeof s=="object"&&"cardType"in s){const n=String(s.cardType||G);J(n)}},children:e.jsxs("div",{className:"integration-assistant-direct-play-create-grid",children:[e.jsx(E.Input,{field:"cardName",label:a("ia.directPlay.stage2.create.cardName"),placeholder:a("ia.directPlay.stage2.create.cardNamePlaceholder"),rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"cardType",label:De,optionList:ke,onChange:Me,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Input,{field:"cardDesc",label:a("ia.directPlay.stage2.create.cardDesc"),placeholder:a("ia.directPlay.stage2.create.cardDescPlaceholder"),rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"subPkg",label:a("ia.directPlay.stage2.create.subPkg"),optionList:Ee,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Select,{field:"scenario",label:a("ia.directPlay.stage2.create.scenario"),optionList:z,rules:[{required:!0,message:a("notEmpty")}]}),e.jsx(E.Input,{field:"params",label:a("ia.directPlay.stage2.create.params"),placeholder:a("ia.directPlay.stage2.create.paramsPlaceholder")})]})}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",type:"primary",loading:Se,onClick:Ae,children:a("ia.directPlay.stage2.create.submit")})})]})}):null,P==="select"?e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"integration-assistant-direct-play-details",children:[e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.selectedCard")}),C?e.jsxs("ul",{className:"integration-assistant-detail-list",children:[e.jsx("li",{children:`${a("ia.directPlay.stage2.cardName")}${C.card_name}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardContentId")}${C.content_id||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardDesc")}${C.card_desc||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardScenario")}${q(C.scenario,S)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardStatus")}${na(C)||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardPackage")}${te(C.sub_pkg)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.cardQueries")}${C.params||"-"}`})]}):e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.emptyCard")})]}),e.jsxs("div",{className:"integration-assistant-direct-play-panel",children:[e.jsx(c.Text,{strong:!0,children:a("ia.directPlay.stage2.selectedAsset")}),K?e.jsxs("ul",{className:"integration-assistant-detail-list",children:[e.jsx("li",{children:`${a("ia.directPlay.stage2.assetGroup")}${ta(K.group)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetFile")}${K.file_name||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetVersion")}${K.version||"-"}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetSize")}${ea(K.file_size)}`}),e.jsx("li",{children:`${a("ia.directPlay.stage2.assetUploaded")}${aa(K.uploaded_at)}`})]}):e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.emptyAsset")})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",loading:Ce,onClick:Oe,children:a("ia.directPlay.stage2.generate")})})]}):null,P==="select"&&ne?e.jsxs("div",{className:"integration-assistant-direct-play-preview",children:[e.jsx("div",{className:"integration-assistant-direct-play-qr",children:e.jsx(Ge,{value:ne,size:180})}),e.jsx("div",{className:"integration-assistant-direct-play-preview-content",children:e.jsx(c.Text,{className:"integration-assistant-section-desc",children:a("ia.directPlay.stage2.qrDesc")})})]}):null]})]})]})},la={sidebar_revisit:{modeId:"sidebar-revisit-debug",scene:"center",sceneKey:"scene_center",titleKey:"ia.revisit.sidebar.panel.title",descKey:"ia.revisit.sidebar.panel.desc",modeValueKey:"ia.revisit.sidebar.panel.modeValue",generatedModeNameKey:"ia.revisit.sidebar.panel.generatedModeName",signalValueKey:"ia.revisit.sidebar.panel.signalValue",createQrKey:"ia.revisit.sidebar.panel.createQr"},shortcut_revisit:{modeId:"shortcut-revisit-debug",scene:"desktop_shortcut",sceneKey:"scene_shortcut",titleKey:"ia.revisit.shortcut.panel.title",descKey:"ia.revisit.shortcut.panel.desc",modeValueKey:"ia.revisit.shortcut.panel.modeValue",generatedModeNameKey:"ia.revisit.shortcut.panel.generatedModeName",signalValueKey:"ia.revisit.shortcut.panel.signalValue",createQrKey:"ia.revisit.shortcut.panel.createQr"}};function oa(t,d){return{...t||Ne,scene:d}}function ua(t){return t.pkgType==="independent"?t.independentPkg||t.pkgName||a("independentPackage"):a("gameMainPackage")}const ga=({capabilityKey:t})=>{const d=ie(),{state:{selectedLaunchOption:i,launchOptions:o},setLaunchOptions:x,setSelectedLaunchOption:k}=Pe(),r=la[t],f=l.useMemo(()=>oa(i,r.scene),[r.scene,i]),Q=l.useCallback(()=>{const b={...f,id:r.modeId,name:a(r.generatedModeNameKey)},M=o.filter(j=>j.id!==r.modeId),P=M.findIndex(j=>j.id==="created"),$=P>=0?[...M.slice(0,P),b,...M.slice(P)]:[...M,b];x($),k(b),d("/")},[r.generatedModeNameKey,r.modeId,o,d,f,x,k]);return e.jsx("div",{className:"integration-assistant-direct-play-grid",children:e.jsxs(I,{className:"integration-assistant-direct-play-card",bordered:!0,children:[e.jsx("div",{className:"integration-assistant-section-head",children:e.jsxs("div",{children:[e.jsx(c.Title,{heading:5,children:a(r.titleKey)}),e.jsx(c.Paragraph,{className:"integration-assistant-section-desc",children:a(r.descKey)})]})}),e.jsxs("div",{className:"integration-assistant-direct-play-summary",children:[e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.modeName")}),e.jsx(c.Text,{children:a(r.modeValueKey)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.scene")}),e.jsx(c.Text,{children:a(r.sceneKey)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.launchParams")}),e.jsx(c.Text,{children:`scene=${r.scene}`})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.package")}),e.jsx(c.Text,{children:ua(f)})]}),e.jsxs("div",{className:"integration-assistant-direct-play-row",children:[e.jsx(c.Text,{strong:!0,children:a("ia.revisit.panel.signal")}),e.jsx(c.Text,{children:a(r.signalValueKey)})]})]}),e.jsx("div",{className:"integration-assistant-actions",children:e.jsx(w,{theme:"solid",onClick:Q,children:a(r.createQrKey)})})]})})},ja=()=>{const t=ie(),{capabilityKey:d}=qe(),i=d?Qe[d]:void 0,o=r=>a(r),x=i?.actions.filter(r=>r.labelKey==="ia.action.openCapabilityDoc")||[],k=r=>{if(r.type==="external"&&r.href){window.open(r.href,r.target||"_blank","noopener,noreferrer");return}r.type==="route"&&r.path&&t(r.path)};return!i||i.hidden?e.jsx("div",{className:"integration-assistant-page integration-assistant-detail-page",children:e.jsxs(I,{bordered:!0,children:[e.jsx(Ue,{description:a("ia.detail.notFound")}),e.jsx("div",{className:"integration-assistant-detail-backalone",children:e.jsx(w,{onClick:()=>t("/integration_assistant"),children:a("ia.detail.backToMap")})})]})}):e.jsxs("div",{className:"integration-assistant-page integration-assistant-detail-page",children:[e.jsx("div",{className:"integration-assistant-detail-backalone",children:e.jsx(w,{theme:"borderless",onClick:()=>t("/integration_assistant"),children:a("ia.detail.backToMap")})}),e.jsx(I,{className:"integration-assistant-detail-hero",bordered:!1,children:e.jsxs("div",{className:"integration-assistant-detail-hero-content",children:[e.jsxs("div",{className:"integration-assistant-detail-title-row",children:[e.jsx("div",{className:"integration-assistant-map-icon","aria-hidden":"true",children:i.icon}),e.jsxs("div",{children:[e.jsx(c.Title,{heading:3,className:"integration-assistant-title",children:o(i.titleKey)}),e.jsx(c.Paragraph,{className:"integration-assistant-subtitle",children:o(i.summaryKey)})]})]}),e.jsxs("div",{className:"integration-assistant-map-meta",children:[i.sceneKey&&e.jsx(fe,{color:"blue",children:`${a("ia.sceneLabel")}${o(i.sceneKey)}`}),i.apiTags.map(r=>e.jsx("span",{children:e.jsx(fe,{children:r})},r))]}),e.jsx("div",{className:"integration-assistant-actions",children:x.map(r=>e.jsx(w,{theme:r.theme||"light",onClick:()=>k(r),children:o(r.labelKey)},`${r.type}:${r.path||r.href||r.labelKey}`))})]})}),e.jsxs("div",{className:"integration-assistant-detail-grid",children:[e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.prerequisites")}),e.jsx("div",{className:"integration-assistant-detail-info-list",children:i.prerequisiteKeys.map(r=>e.jsxs("div",{className:"integration-assistant-detail-info-item",children:[e.jsx("span",{className:"integration-assistant-detail-info-marker"}),e.jsx(c.Text,{className:"integration-assistant-detail-info-text",children:o(r)})]},r))})]}),e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.steps")}),e.jsx("div",{className:"integration-assistant-detail-step-list",children:i.stepKeys.map((r,f)=>e.jsxs("div",{className:"integration-assistant-detail-step",children:[e.jsx("span",{className:"integration-assistant-detail-step-index",children:f+1}),e.jsx(c.Text,{className:"integration-assistant-detail-step-text",children:o(r)})]},r))})]}),e.jsxs(I,{className:"integration-assistant-detail-card",bordered:!0,children:[e.jsx(c.Title,{heading:5,children:a("ia.section.tips")}),e.jsx("div",{className:"integration-assistant-detail-info-list",children:i.tipKeys.map(r=>e.jsxs("div",{className:"integration-assistant-detail-info-item",children:[e.jsx("span",{className:"integration-assistant-detail-info-marker"}),e.jsx(c.Text,{className:"integration-assistant-detail-info-text",children:o(r)})]},r))})]})]}),i.key==="direct_play_card"?e.jsx(da,{}):null,i.key==="sidebar_revisit"||i.key==="shortcut_revisit"?e.jsx(ga,{capabilityKey:i.key}):null]})};export{ja as IntegrationAssistantDetail};
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b$ as l,c0 as m,aP as g,aG as a,f as o,ay as s,d as r,K as p}from"./index-Pfoc2Cwl.js";import{E as x}from"./index-iUN2bzlN.js";import{m as h,f as j,M as b,C as y,a as N}from"./MonetizationModeSummary-v1a9_YaN.js";import"./index-tOg_vZEc.js";const C=()=>{const e=l(),{modeKey:n}=m(),i=n?h[n]:void 0,d=t=>s(t),c=g.useMemo(()=>j.map(t=>({...t,sectionClassName:`integration-assistant-map-tile integration-assistant-map-section integration-assistant-fixed-section ${t.sectionClassName}`})),[]);return i?a.jsxs("div",{className:"integration-assistant-page integration-assistant-detail-page",children:[a.jsx("div",{className:"integration-assistant-detail-backalone",children:a.jsx(r,{theme:"borderless",onClick:()=>e("/integration_assistant"),children:s("ia.detail.backToMap")})}),a.jsx(o,{className:"integration-assistant-detail-hero",bordered:!1,children:a.jsx("div",{className:"integration-assistant-detail-hero-content",children:a.jsxs("div",{className:"integration-assistant-mode-page-head",children:[a.jsx("div",{className:"integration-assistant-mode-badge",children:d(i.titleKey)}),a.jsx(b,{mode:i,clickableTags:!0})]})})}),a.jsxs("section",{className:"integration-assistant-mode-core-group integration-assistant-map-tile",children:[a.jsx("div",{className:"integration-assistant-mode-group-head",children:a.jsx(p.Title,{heading:4,className:"integration-assistant-map-section-title",children:s("ia.monetization.core.title")})}),a.jsx("div",{className:"integration-assistant-mode-capability-list",children:a.jsx(y,{capabilityKeys:i.capabilityKeys,capabilityRequirementMap:i.capabilityRequirementMap,gridClassName:"integration-assistant-mode-grid-recommend"})})]}),a.jsx(N,{sections:c})]}):a.jsx("div",{className:"integration-assistant-page integration-assistant-detail-page",children:a.jsxs(o,{bordered:!0,children:[a.jsx(x,{description:s("ia.detail.notFound")}),a.jsx("div",{className:"integration-assistant-detail-backalone",children:a.jsx(r,{onClick:()=>e("/integration_assistant"),children:s("ia.detail.backToMap")})})]})})};export{C as IntegrationAssistantMonetizationMode};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b$ as b,aG as a,K as y,ay as n,aP as u,d as N}from"./index-Pfoc2Cwl.js";import{c as g}from"./index-tOg_vZEc.js";const K=[{key:"iaa",titleKey:"ia.monetization.mode.iaa.title",summaryKey:"ia.monetization.mode.iaa.summary",descriptionKey:"ia.monetization.mode.iaa.desc",capabilityKeys:["login","authorize","ad"],capabilityRequirementMap:{login:"required",authorize:"optional",ad:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]},{key:"iap",titleKey:"ia.monetization.mode.iap.title",summaryKey:"ia.monetization.mode.iap.summary",descriptionKey:"ia.monetization.mode.iap.desc",capabilityKeys:["login","authorize","payment"],capabilityRequirementMap:{login:"required",authorize:"optional",payment:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]},{key:"iaap",titleKey:"ia.monetization.mode.iaap.title",summaryKey:"ia.monetization.mode.iaap.summary",descriptionKey:"ia.monetization.mode.iaap.desc",capabilityKeys:["login","authorize","ad","payment"],capabilityRequirementMap:{login:"required",authorize:"optional",ad:"required",payment:"required"},supportCapabilityKeys:["network","sidebar_revisit","shortcut_revisit"],experimentalCapabilityKeys:["direct_play_card"]}],q=K.reduce((e,l)=>(e[l.key]=l,e),{}),C=[{key:"growth",titleKey:"ia.overview.section.growth.title",descriptionKey:"ia.overview.section.growth.desc",capabilityKeys:["sidebar_revisit","shortcut_revisit","direct_play_card"],capabilityRequirementMap:{sidebar_revisit:"required",shortcut_revisit:"required",direct_play_card:"experimental"},sectionClassName:"integration-assistant-map-section-growth",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"share",titleKey:"ia.overview.section.share.title",descriptionKey:"ia.overview.section.share.desc",capabilityKeys:["share_message","share_story"],capabilityRequirementMap:{share_message:"recommended"},sectionClassName:"integration-assistant-map-section-share",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"foundation",titleKey:"ia.overview.section.foundation.title",descriptionKey:"ia.overview.section.foundation.desc",capabilityKeys:["ui_adaptation","subpackage","network"],capabilityRequirementMap:{ui_adaptation:"recommended",subpackage:"basic",network:"basic"},sectionClassName:"integration-assistant-map-section-foundation",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0}],z=[{key:"identity",titleKey:"ia.overview.section.identity.title",descriptionKey:"ia.overview.section.identity.desc",capabilityKeys:["login","authorize"],capabilityRequirementMap:{login:"required",authorize:"optional"},sectionClassName:"integration-assistant-map-section-identity",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},{key:"monetization",titleKey:"ia.overview.section.monetization.title",descriptionKey:"ia.overview.section.monetization.desc",capabilityKeys:["payment","ad"],sectionClassName:"integration-assistant-map-section-monetization",gridClassName:"integration-assistant-map-section-grid-two",defaultCollapsed:!0},...C],j={login:"integration-assistant-capability-tile-compact",authorize:"integration-assistant-capability-tile-compact",payment:"integration-assistant-capability-tile-compact",ad:"integration-assistant-capability-tile-compact",ui_adaptation:"integration-assistant-capability-tile-compact",share_message:"integration-assistant-capability-tile-compact",share_story:"integration-assistant-capability-tile-compact",subpackage:"integration-assistant-capability-tile-compact",network:"integration-assistant-capability-tile-compact",sidebar_revisit:"integration-assistant-capability-tile-compact",shortcut_revisit:"integration-assistant-capability-tile-compact",direct_play_card:"integration-assistant-capability-tile-compact"},k=e=>e==="required"?n("ia.requirement.required"):e==="optional"?n("ia.requirement.optional"):e==="recommended"?n("ia.requirement.recommended"):e==="basic"?n("ia.requirement.basic"):n("ia.requirement.experimental"),f=({capabilityKeys:e,gridClassName:l,capabilityRequirementMap:m})=>{const d=b(),c=i=>n(i),t=e.map(i=>g[i]).filter(i=>!i.hidden);if(!t.length)return null;const o=t.length===1?"integration-assistant-map-section-grid-one":l;return a.jsx("div",{className:`integration-assistant-map-section-grid ${o}`,children:t.map(i=>a.jsxs("button",{type:"button",className:`integration-assistant-capability-tile ${j[i.key]}`,onClick:()=>d(`/integration_assistant/${i.key}`),children:[a.jsxs("div",{className:"integration-assistant-capability-tile-main",children:[a.jsxs("div",{className:"integration-assistant-capability-head",children:[a.jsxs("div",{className:"integration-assistant-capability-title-row",children:[a.jsx("div",{className:"integration-assistant-capability-icon","aria-hidden":"true",children:i.icon}),a.jsx("div",{className:"integration-assistant-capability-title-stack",children:a.jsxs("div",{className:"integration-assistant-capability-title-line",children:[a.jsx(y.Title,{heading:6,className:"integration-assistant-map-title integration-assistant-capability-title",children:c(i.titleKey)}),m?.[i.key]?a.jsx("span",{className:`integration-assistant-capability-requirement integration-assistant-capability-requirement-${m[i.key]}`,children:k(m[i.key])}):null]})})]}),a.jsx("span",{className:"integration-assistant-capability-arrow",children:"→"})]}),a.jsx(y.Paragraph,{className:"integration-assistant-capability-summary",children:c(i.summaryKey)})]}),i.apiTags.length?a.jsx("div",{className:"integration-assistant-capability-tags",children:i.apiTags.slice(0,2).map(s=>a.jsx("span",{className:"integration-assistant-capability-tag",children:s},s))}):null,a.jsx("div",{className:"integration-assistant-capability-footer",children:a.jsx(y.Text,{className:"integration-assistant-capability-cta",children:n("ia.action.openGuide")})})]},i.key))})},M=({sections:e})=>{const l=t=>n(t),[m,d]=u.useState({}),c=u.useMemo(()=>e.map(t=>`${t.key}:${t.defaultCollapsed?1:0}:${t.collapsible===!1?0:1}`).join("|"),[e]);return u.useEffect(()=>{d(t=>e.reduce((o,i)=>(o[i.key]=t[i.key]??i.defaultCollapsed??!1,o),{}))},[c,e]),a.jsx(a.Fragment,{children:e.map(t=>{const o=t.capabilityKeys.map(r=>g[r]).filter(r=>!r.hidden);if(o.length===0)return null;const i=t.collapsible!==!1,s=i?m[t.key]:!1,p=o.length===1?"integration-assistant-map-section-grid-one":t.gridClassName,v=!t.hideHeader,h=()=>{d(r=>({...r,[t.key]:!1}))},x=()=>{d(r=>({...r,[t.key]:!r[t.key]}))};return a.jsxs("section",{className:`${t.sectionClassName} ${s?"integration-assistant-map-section-collapsed":""}`,role:s?"button":void 0,tabIndex:s?0:void 0,onClick:s?h:void 0,onKeyDown:r=>{!s||r.key!=="Enter"&&r.key!==" "||(r.preventDefault(),h())},children:[v?a.jsxs("div",{className:"integration-assistant-map-section-head",children:[a.jsxs("div",{className:"integration-assistant-map-section-head-main",children:[a.jsx(y.Title,{heading:4,className:"integration-assistant-map-section-title",children:l(t.titleKey)}),a.jsx(y.Paragraph,{className:"integration-assistant-section-desc",children:l(t.descriptionKey)})]}),i?a.jsx(N,{className:"integration-assistant-map-section-toggle",theme:"borderless",onClick:r=>{r.stopPropagation(),x()},children:s?n("netDiagExpand"):n("netDiagCollapse")}):null]}):null,s?null:a.jsx(f,{capabilityKeys:t.capabilityKeys,gridClassName:p,capabilityRequirementMap:t.capabilityRequirementMap})]},t.key)})})},$=({mode:e,compact:l=!1,clickableTags:m=!1})=>{const d=b(),c=s=>n(s),t=e.capabilityKeys.filter(s=>e.capabilityRequirementMap[s]==="required"),o=e.capabilityKeys.filter(s=>e.capabilityRequirementMap[s]==="optional"),i=s=>s.map(p=>m?a.jsx("button",{type:"button",className:"integration-assistant-capability-tag integration-assistant-capability-tag-action",onClick:()=>d(`/integration_assistant/${p}`),children:c(g[p].titleKey)},`${e.key}-${p}`):a.jsx("span",{className:"integration-assistant-capability-tag",children:c(g[p].titleKey)},`${e.key}-${p}`));return a.jsxs("div",{className:`integration-assistant-mode-summary ${l?"compact":""}`,children:[a.jsx(y.Paragraph,{className:"integration-assistant-mode-summary-text",children:c(e.summaryKey)}),a.jsxs("div",{className:"integration-assistant-mode-summary-list",children:[a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.required")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(t)})]}),o.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.optional")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(o)})]}):null,e.supportCapabilityKeys.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.support")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(e.supportCapabilityKeys)})]}):null,e.experimentalCapabilityKeys.length?a.jsxs("div",{className:"integration-assistant-mode-summary-row",children:[a.jsx("span",{className:"integration-assistant-mode-summary-label",children:n("ia.monetization.meta.experimental")}),a.jsx("div",{className:"integration-assistant-mode-summary-tags",children:i(e.experimentalCapabilityKeys)})]}):null]})]})};export{f as C,$ as M,M as a,K as b,C as f,q as m,z as o};
|