fix(eslint): reduce warnings in GitHub Actions deployment

- Disable formatting rules (handled by Prettier)
- Relaxed strict Vue/JS rules for demo code compatibility
- Fix syntax errors in ApiPlayground and VoiceCloningDemo
- Fix duplicate else-if condition in ApiPlayground
- Fix Promise executor async pattern in AutoregressiveAudioDemo
- Add TypeScript file support to ESLint config

Warnings reduced from 295 to 251 problems.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
sanbuphy
2026-02-18 17:38:10 +08:00
parent 8b01686e68
commit 0eba9e87e9
456 changed files with 28450 additions and 9677 deletions
@@ -9,36 +9,78 @@
<div class="main-area">
<div class="aksk-card">
<div class="card-header">
<span class="status-badge" :class="akStatus">{{ statusText }}</span>
<span
class="status-badge"
:class="akStatus"
>{{ statusText }}</span>
<span class="age">已创建 {{ akAge }} </span>
</div>
<div class="credentials">
<div class="cred-row">
<span class="label">Access Key:</span>
<span class="value">{{ maskedAK }}</span>
<button class="toggle-btn" @click="showAK = !showAK">{{ showAK ? '🙈' : '👁' }}</button>
<button
class="toggle-btn"
@click="showAK = !showAK"
>
{{ showAK ? '🙈' : '👁️' }}
</button>
</div>
<div class="cred-row">
<span class="label">Secret Key:</span>
<span class="value">{{ maskedSK }}</span>
<button class="toggle-btn" @click="showSK = !showSK">{{ showSK ? '🙈' : '👁' }}</button>
<button
class="toggle-btn"
@click="showSK = !showSK"
>
{{ showSK ? '🙈' : '👁️' }}
</button>
</div>
</div>
<div class="stats">
<div class="stat"><span class="v">{{ apiCalls }}</span><span class="l">API调用</span></div>
<div class="stat"><span class="v">{{ lastUsed }}</span><span class="l">最后使</span></div>
<div class="stat">
<span class="v">{{ apiCalls }}</span><span class="l">API调</span>
</div>
<div class="stat">
<span class="v">{{ lastUsed }}</span><span class="l">最后使用</span>
</div>
</div>
</div>
<div class="action-panel">
<button class="btn primary" @click="rotateKey" :disabled="isRotating">🔄 轮换</button>
<button class="btn warning" @click="deactivateKey" :disabled="akStatus === 'inactive'"> 禁用</button>
<button class="btn danger" @click="deleteKey">🗑 删除</button>
<button
class="btn primary"
:disabled="isRotating"
@click="rotateKey"
>
🔄 轮换
</button>
<button
class="btn warning"
:disabled="akStatus === 'inactive'"
@click="deactivateKey"
>
禁用
</button>
<button
class="btn danger"
@click="deleteKey"
>
🗑 删除
</button>
</div>
</div>
<div class="rotation-bar" v-if="isRotating">
<div class="bar"><div class="fill" :style="{ width: rotationProgress + '%' }"></div></div>
<div
v-if="isRotating"
class="rotation-bar"
>
<div class="bar">
<div
class="fill"
:style="{ width: rotationProgress + '%' }"
/>
</div>
<span class="text">{{ rotationStatus }}</span>
</div>
@@ -17,12 +17,24 @@
<div class="item-header">
<span class="item-icon">{{ practice.icon }}</span>
<span class="item-title">{{ practice.title }}</span>
<span class="item-priority" :class="practice.priority">{{ practice.priorityText }}</span>
<span
class="item-priority"
:class="practice.priority"
>{{ practice.priorityText }}</span>
</div>
<div class="item-body" v-if="expandedCard === index">
<p class="item-desc">{{ practice.description }}</p>
<div
v-if="expandedCard === index"
class="item-body"
>
<p class="item-desc">
{{ practice.description }}
</p>
<div class="item-checks">
<span v-for="(item, i) in practice.checklist.slice(0, 3)" :key="i" class="check-tag"> {{ item }}</span>
<span
v-for="(item, i) in practice.checklist.slice(0, 3)"
:key="i"
class="check-tag"
> {{ item }}</span>
</div>
</div>
</div>
@@ -8,26 +8,46 @@
<div class="flow-diagram">
<div class="account-box source">
<div class="account-header">账号 A</div>
<div class="entity">IAM User</div>
<div class="action">sts:AssumeRole</div>
<div class="account-header">
账号 A
</div>
<div class="entity">
IAM User
</div>
<div class="action">
sts:AssumeRole
</div>
</div>
<span class="arrow"></span>
<div class="account-box sts">
<div class="account-header">STS 服务</div>
<div class="step">验证身份</div>
<div class="step">生成临时凭证</div>
<div class="account-header">
STS 服务
</div>
<div class="step">
验证身份
</div>
<div class="step">
生成临时凭证
</div>
</div>
<span class="arrow"></span>
<div class="account-box target">
<div class="account-header">账号 B目标</div>
<div class="entity">CrossAccountRole</div>
<div class="resource">访问 S3/EC2</div>
<div class="account-header">
账号 B目标
</div>
<div class="entity">
CrossAccountRole
</div>
<div class="resource">
访问 S3/EC2
</div>
</div>
</div>
<div class="code-block">
<div class="code-title">Python 示例</div>
<div class="code-title">
Python 示例
</div>
<pre><code>sts = boto3.client('sts')
assumed = sts.assume_role(
RoleArn='arn:aws:iam::123456789012:role/CrossAccountRole',
@@ -26,10 +26,16 @@
<span class="detail-icon">{{ selectedLayerData.icon }}</span>
<span class="detail-name">{{ selectedLayerData.name }}</span>
</div>
<div class="detail-desc">{{ selectedLayerData.description }}</div>
<div class="detail-desc">
{{ selectedLayerData.description }}
</div>
<div class="detail-examples">
<span class="example-label">示例</span>
<span v-for="(example, i) in selectedLayerData.examples.slice(0, 2)" :key="i" class="example-tag">{{ example }}</span>
<span
v-for="(example, i) in selectedLayerData.examples.slice(0, 2)"
:key="i"
class="example-tag"
>{{ example }}</span>
</div>
</div>
</div>
@@ -8,7 +8,9 @@
<div class="main-area">
<div class="platform-col aws">
<div class="platform-header">AWS IAM</div>
<div class="platform-header">
AWS IAM
</div>
<div
v-for="(feature, index) in features"
:key="index"
@@ -22,24 +24,41 @@
</div>
<div class="comparison-col">
<div class="comparison-card" v-if="selectedFeatureData">
<div class="comp-title">{{ selectedFeatureData.name }}</div>
<div
v-if="selectedFeatureData"
class="comparison-card"
>
<div class="comp-title">
{{ selectedFeatureData.name }}
</div>
<div class="comp-row">
<div class="comp-item aws">
<div class="comp-label">AWS IAM</div>
<div class="comp-desc">{{ selectedFeatureData.awsDetail }}</div>
<div class="comp-label">
AWS IAM
</div>
<div class="comp-desc">
{{ selectedFeatureData.awsDetail }}
</div>
</div>
<div class="comp-vs">
VS
</div>
<div class="comp-vs">VS</div>
<div class="comp-item ram">
<div class="comp-label">阿里云 RAM</div>
<div class="comp-desc">{{ selectedFeatureData.ramDetail }}</div>
<div class="comp-label">
阿里云 RAM
</div>
<div class="comp-desc">
{{ selectedFeatureData.ramDetail }}
</div>
</div>
</div>
</div>
</div>
<div class="platform-col ram">
<div class="platform-header">阿里云 RAM</div>
<div class="platform-header">
阿里云 RAM
</div>
<div
v-for="(feature, index) in features"
:key="index"
@@ -20,9 +20,16 @@
</div>
<div class="detail-panel">
<div class="detail-title">{{ currentStepData.title }}</div>
<p class="detail-desc">{{ currentStepData.detail }}</p>
<div class="flow-row" v-if="currentStepData.flow">
<div class="detail-title">
{{ currentStepData.title }}
</div>
<p class="detail-desc">
{{ currentStepData.detail }}
</p>
<div
v-if="currentStepData.flow"
class="flow-row"
>
<span class="entity user">{{ currentStepData.flow[0].from.name }}</span>
<span class="action">{{ currentStepData.flow[0].action }}</span>
<span class="entity cloud">{{ currentStepData.flow[0].to.name }}</span>
@@ -8,43 +8,94 @@
<div class="main-area">
<div class="mfa-flow">
<div class="auth-step" :class="{ active: step >= 1, completed: step > 1 }">
<div
class="auth-step"
:class="{ active: step >= 1, completed: step > 1 }"
>
<span class="step-icon">🔐</span>
<span class="step-label">密码</span>
</div>
<span class="step-arrow"></span>
<div class="auth-step" :class="{ active: step >= 2, completed: step > 2 }">
<div
class="auth-step"
:class="{ active: step >= 2, completed: step > 2 }"
>
<span class="step-icon">📱</span>
<span class="step-label">MFA</span>
</div>
<span class="step-arrow"></span>
<div class="auth-step" :class="{ active: step >= 3 }">
<div
class="auth-step"
:class="{ active: step >= 3 }"
>
<span class="step-icon"></span>
<span class="step-label">成功</span>
</div>
</div>
<div class="auth-panel" v-if="step === 1">
<div class="panel-title">请输入密码</div>
<input type="password" v-model="password" placeholder="输入任意密码" @keyup.enter="verifyPassword" />
<button @click="verifyPassword" :disabled="!password">验证密码</button>
<div
v-if="step === 1"
class="auth-panel"
>
<div class="panel-title">
请输入密码
</div>
<input
v-model="password"
type="password"
placeholder="输入任意密码"
@keyup.enter="verifyPassword"
>
<button
:disabled="!password"
@click="verifyPassword"
>
验证密码
</button>
</div>
<div class="auth-panel" v-if="step === 2">
<div class="panel-title">MFA 验证码</div>
<div
v-if="step === 2"
class="auth-panel"
>
<div class="panel-title">
MFA 验证码
</div>
<div class="totp-display">
<span class="totp-code">{{ totpCode }}</span>
<div class="totp-hint">模拟验证码</div>
<div class="totp-hint">
模拟验证码
</div>
</div>
<input type="text" v-model="userCode" placeholder="输入上方验证码" maxlength="6" @keyup.enter="verifyMFA" />
<button @click="verifyMFA" :disabled="userCode.length !== 6">验证</button>
<input
v-model="userCode"
type="text"
placeholder="输入上方验证码"
maxlength="6"
@keyup.enter="verifyMFA"
>
<button
:disabled="userCode.length !== 6"
@click="verifyMFA"
>
验证
</button>
</div>
<div class="success-panel" v-if="step === 3">
<div
v-if="step === 3"
class="success-panel"
>
<span class="success-icon">🎉</span>
<div class="success-title">登录成功</div>
<div class="success-desc">已通过 MFA 双因素认证</div>
<button @click="reset">重新演示</button>
<div class="success-title">
登录成功
</div>
<div class="success-desc">
已通过 MFA 双因素认证
</div>
<button @click="reset">
重新演示
</button>
</div>
</div>
@@ -23,8 +23,13 @@
</div>
</div>
<div class="detail-panel" v-if="selectedLevelData">
<div class="detail-title">{{ selectedLevelData.name }}</div>
<div
v-if="selectedLevelData"
class="detail-panel"
>
<div class="detail-title">
{{ selectedLevelData.name }}
</div>
<div class="detail-row">
<span class="label">范围</span>
<span class="value">{{ selectedLevelData.scope }}</span>
@@ -34,7 +39,11 @@
<span class="value">{{ selectedLevelData.scenario }}</span>
</div>
<div class="perms-list">
<span v-for="(perm, i) in selectedLevelData.permissions.slice(0, 3)" :key="i" class="perm-tag">{{ perm.name }}</span>
<span
v-for="(perm, i) in selectedLevelData.permissions.slice(0, 3)"
:key="i"
class="perm-tag"
>{{ perm.name }}</span>
</div>
</div>
</div>
@@ -8,7 +8,9 @@
<div class="editor-layout">
<div class="editor-panel">
<div class="panel-title">策略编辑器</div>
<div class="panel-title">
策略编辑器
</div>
<div class="action-list">
<div
v-for="action in actions"
@@ -17,8 +19,8 @@
>
<label class="checkbox">
<input
type="checkbox"
v-model="selectedActions"
v-model="selectedActions"
type="checkbox"
:value="action.id"
>
<span>{{ action.name }}</span>
@@ -29,13 +31,17 @@
</div>
<div class="preview-panel">
<div class="panel-title">生成的策略</div>
<div class="panel-title">
生成的策略
</div>
<pre><code>{{ generatedPolicy }}</code></pre>
</div>
</div>
<div class="effect-preview">
<div class="effect-title">权限效果预览</div>
<div class="effect-title">
权限效果预览
</div>
<div class="effect-list">
<div
v-for="effect in effectList"
@@ -8,7 +8,10 @@
<div class="main-area">
<div class="role-section">
<div class="role-card" @click="showTrust = !showTrust">
<div
class="role-card"
@click="showTrust = !showTrust"
>
<span class="role-icon">🎭</span>
<div class="role-info">
<span class="role-name">CrossAccountS3AccessRole</span>
@@ -16,9 +19,18 @@
</div>
<span class="expand-icon">{{ showTrust ? '▼' : '▶' }}</span>
</div>
<div class="trust-policy" v-if="showTrust">
<div class="trust-title">🔐 信任策略</div>
<div class="trust-item" v-for="(t, i) in trustPolicy" :key="i">
<div
v-if="showTrust"
class="trust-policy"
>
<div class="trust-title">
🔐 信任策略
</div>
<div
v-for="(t, i) in trustPolicy"
:key="i"
class="trust-item"
>
<span class="principal">{{ t.principal }}</span>
<span class="action">{{ t.action }}</span>
</div>
@@ -37,9 +49,19 @@
<span class="policy-icon">{{ policy.icon }}</span>
<span class="policy-name">{{ policy.name }}</span>
</div>
<div class="policy-perms" v-if="selectedPolicy === index">
<div class="perm" v-for="(p, i) in policy.permissions" :key="i">
<span class="effect" :class="p.effect.toLowerCase()">{{ p.effect }}</span>
<div
v-if="selectedPolicy === index"
class="policy-perms"
>
<div
v-for="(p, i) in policy.permissions"
:key="i"
class="perm"
>
<span
class="effect"
:class="p.effect.toLowerCase()"
>{{ p.effect }}</span>
<span class="action">{{ p.action }}</span>
</div>
</div>