aimeat 1.4.3 → 1.4.5
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/bin/aimeat.js +0 -0
- package/dist/locales/en.json +25 -0
- package/dist/locales/fi.json +25 -0
- package/dist/public/css/views/profile.css +48 -0
- package/dist/public/js/services/auth.js +24 -0
- package/dist/public/views/profile/landing-page.js +201 -8
- package/dist/src/index.js +9 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/routes/ghii.d.ts.map +1 -1
- package/dist/src/routes/ghii.js +59 -3
- package/dist/src/routes/ghii.js.map +1 -1
- package/dist/src/routes/libs.js +31 -2
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/server-bootstrap/middleware-guards.d.ts.map +1 -1
- package/dist/src/server-bootstrap/middleware-guards.js +7 -1
- package/dist/src/server-bootstrap/middleware-guards.js.map +1 -1
- package/dist/src/storage/storage-factory.d.ts.map +1 -1
- package/dist/src/storage/storage-factory.js +25 -5
- package/dist/src/storage/storage-factory.js.map +1 -1
- package/package.json +75 -95
package/dist/bin/aimeat.js
CHANGED
|
File without changes
|
package/dist/locales/en.json
CHANGED
|
@@ -1717,6 +1717,31 @@
|
|
|
1717
1717
|
"openApp": "Open in new tab",
|
|
1718
1718
|
"viewAll": "View all",
|
|
1719
1719
|
"editProfile": "edit profile",
|
|
1720
|
+
"editModalTitle": "Edit profile",
|
|
1721
|
+
"editDisplayName": "Display name",
|
|
1722
|
+
"editDisplayNamePlaceholder": "Your visible name",
|
|
1723
|
+
"editBio": "Bio",
|
|
1724
|
+
"editBioPlaceholder": "A short description about yourself",
|
|
1725
|
+
"editAvatar": "Avatar",
|
|
1726
|
+
"editAvatarPlaceholder": "Emoji or short text",
|
|
1727
|
+
"editLocale": "Language",
|
|
1728
|
+
"editEmail": "Notification email",
|
|
1729
|
+
"editEmailPlaceholder": "you@example.com",
|
|
1730
|
+
"editSave": "Save",
|
|
1731
|
+
"editCancel": "Cancel",
|
|
1732
|
+
"editSaving": "Saving...",
|
|
1733
|
+
"editSaved": "Profile updated",
|
|
1734
|
+
"editError": "Failed to update profile",
|
|
1735
|
+
"changePassword": "change password",
|
|
1736
|
+
"changePasswordTitle": "Change password",
|
|
1737
|
+
"currentPassword": "Current password",
|
|
1738
|
+
"newPassword": "New password",
|
|
1739
|
+
"confirmPassword": "Confirm new password",
|
|
1740
|
+
"passwordMismatch": "Passwords do not match",
|
|
1741
|
+
"passwordChanged": "Password changed successfully",
|
|
1742
|
+
"passwordChangeFailed": "Failed to change password",
|
|
1743
|
+
"passwordChanging": "Changing...",
|
|
1744
|
+
"passwordRequirements": "Min 8 characters, uppercase, lowercase, number",
|
|
1720
1745
|
"federationBadge": "{count} node(s) in federation",
|
|
1721
1746
|
"packagesExt": "Packages & Extensions",
|
|
1722
1747
|
"notificationsBadge": "Notifications",
|
package/dist/locales/fi.json
CHANGED
|
@@ -1717,6 +1717,31 @@
|
|
|
1717
1717
|
"openApp": "Avaa uudessa välilehdessä",
|
|
1718
1718
|
"viewAll": "Näytä kaikki",
|
|
1719
1719
|
"editProfile": "muokkaa profiilia",
|
|
1720
|
+
"editModalTitle": "Muokkaa profiilia",
|
|
1721
|
+
"editDisplayName": "Nimi",
|
|
1722
|
+
"editDisplayNamePlaceholder": "Julkinen nimesi",
|
|
1723
|
+
"editBio": "Kuvaus",
|
|
1724
|
+
"editBioPlaceholder": "Lyhyt kuvaus itsestäsi",
|
|
1725
|
+
"editAvatar": "Avatar",
|
|
1726
|
+
"editAvatarPlaceholder": "Emoji tai lyhyt teksti",
|
|
1727
|
+
"editLocale": "Kieli",
|
|
1728
|
+
"editEmail": "Ilmoitussähköposti",
|
|
1729
|
+
"editEmailPlaceholder": "sinä@esimerkki.fi",
|
|
1730
|
+
"editSave": "Tallenna",
|
|
1731
|
+
"editCancel": "Peruuta",
|
|
1732
|
+
"editSaving": "Tallennetaan...",
|
|
1733
|
+
"editSaved": "Profiili päivitetty",
|
|
1734
|
+
"editError": "Profiilin päivitys epäonnistui",
|
|
1735
|
+
"changePassword": "vaihda salasana",
|
|
1736
|
+
"changePasswordTitle": "Vaihda salasana",
|
|
1737
|
+
"currentPassword": "Nykyinen salasana",
|
|
1738
|
+
"newPassword": "Uusi salasana",
|
|
1739
|
+
"confirmPassword": "Vahvista uusi salasana",
|
|
1740
|
+
"passwordMismatch": "Salasanat eivät täsmää",
|
|
1741
|
+
"passwordChanged": "Salasana vaihdettu",
|
|
1742
|
+
"passwordChangeFailed": "Salasanan vaihto epäonnistui",
|
|
1743
|
+
"passwordChanging": "Vaihdetaan...",
|
|
1744
|
+
"passwordRequirements": "Väh. 8 merkkiä, iso kirjain, pieni kirjain, numero",
|
|
1720
1745
|
"federationBadge": "{count} solmu(a) federaatiossa",
|
|
1721
1746
|
"packagesExt": "Paketit & Laajennukset",
|
|
1722
1747
|
"notificationsBadge": "Ilmoitukset",
|
|
@@ -1573,6 +1573,54 @@
|
|
|
1573
1573
|
}
|
|
1574
1574
|
.pf .pf-expand-trigger:hover { color: var(--accent, #E8564A); }
|
|
1575
1575
|
|
|
1576
|
+
/* --- Edit Profile Modal --- */
|
|
1577
|
+
.pf-edit-overlay {
|
|
1578
|
+
position: fixed; inset: 0; z-index: 1000;
|
|
1579
|
+
background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center;
|
|
1580
|
+
animation: pf-fade-in .2s ease;
|
|
1581
|
+
}
|
|
1582
|
+
@keyframes pf-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
|
1583
|
+
.pf-edit-modal {
|
|
1584
|
+
background: var(--card, #fff); border-radius: 16px; width: 92%; max-width: 440px;
|
|
1585
|
+
box-shadow: 0 16px 48px rgba(0,0,0,.18); animation: pf-modal-in .25s ease;
|
|
1586
|
+
max-height: 90vh; overflow-y: auto;
|
|
1587
|
+
}
|
|
1588
|
+
@keyframes pf-modal-in { from { opacity: 0; transform: translateY(16px) scale(.97); } to { opacity: 1; transform: none; } }
|
|
1589
|
+
.pf-edit-header {
|
|
1590
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
1591
|
+
padding: 18px 22px 14px; border-bottom: 1px solid var(--border-soft, #f0f0ec);
|
|
1592
|
+
}
|
|
1593
|
+
.pf-edit-title { font-size: 1.1rem; font-weight: 700; margin: 0; letter-spacing: -.2px; }
|
|
1594
|
+
.pf-edit-close {
|
|
1595
|
+
width: 32px; height: 32px; border: none; background: transparent;
|
|
1596
|
+
font-size: 1rem; cursor: pointer; border-radius: 8px; color: var(--text-dim, #9CA3AF);
|
|
1597
|
+
display: flex; align-items: center; justify-content: center; transition: all .15s;
|
|
1598
|
+
}
|
|
1599
|
+
.pf-edit-close:hover { background: var(--accent-soft, #FFF0EE); color: var(--accent, #E8564A); }
|
|
1600
|
+
.pf-edit-loading { padding: 40px 22px; text-align: center; }
|
|
1601
|
+
.pf-edit-body { padding: 18px 22px; display: flex; flex-direction: column; gap: 14px; }
|
|
1602
|
+
.pf-edit-label {
|
|
1603
|
+
display: flex; flex-direction: column; gap: 5px;
|
|
1604
|
+
font-size: .81rem; font-weight: 600; color: var(--text, #1a1a1a);
|
|
1605
|
+
}
|
|
1606
|
+
.pf-edit-input, .pf-edit-textarea, .pf-edit-select {
|
|
1607
|
+
font-family: inherit; font-size: .88rem; padding: 9px 12px;
|
|
1608
|
+
border: 1px solid var(--border, #e5e5e0); border-radius: 10px;
|
|
1609
|
+
background: var(--bg, #fff); color: var(--text, #1a1a1a);
|
|
1610
|
+
transition: border-color .15s;
|
|
1611
|
+
}
|
|
1612
|
+
.pf-edit-input:focus, .pf-edit-textarea:focus, .pf-edit-select:focus {
|
|
1613
|
+
outline: none; border-color: var(--accent, #E8564A); box-shadow: 0 0 0 2px var(--accent-soft, #FFF0EE);
|
|
1614
|
+
}
|
|
1615
|
+
.pf-edit-textarea { resize: vertical; min-height: 72px; }
|
|
1616
|
+
.pf-edit-select { cursor: pointer; }
|
|
1617
|
+
.pf-edit-hint { font-size: .75rem; color: var(--text-dim, #9CA3AF); }
|
|
1618
|
+
.pf-edit-error { font-size: .81rem; color: var(--danger, #ef4444); padding: 8px 12px; background: var(--danger-soft, #FEF2F2); border-radius: 8px; }
|
|
1619
|
+
.pf-edit-footer {
|
|
1620
|
+
display: flex; justify-content: flex-end; gap: 10px;
|
|
1621
|
+
padding: 14px 22px 18px; border-top: 1px solid var(--border-soft, #f0f0ec);
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1576
1624
|
/* --- Inline Preview Panels --- */
|
|
1577
1625
|
.pf .pf-inline-panel {
|
|
1578
1626
|
background: var(--card, #fff); border-radius: 16px;
|
|
@@ -32,6 +32,30 @@ export function getNodeUrl() {
|
|
|
32
32
|
return typeof window !== 'undefined' ? window.location.origin : '';
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/** Fetch the current user's GHII profile from the server. */
|
|
36
|
+
export async function getProfile() {
|
|
37
|
+
const s = getSession();
|
|
38
|
+
if (!s) return null;
|
|
39
|
+
return s.fetch(`/v1/ghii/${encodeURIComponent(s.ghii)}`);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Update the current user's profile via PUT /v1/ghii. */
|
|
43
|
+
export async function updateProfile(fields) {
|
|
44
|
+
const s = getSession();
|
|
45
|
+
if (!s) throw new Error('Not logged in');
|
|
46
|
+
return s.fetch('/v1/ghii', { method: 'PUT', body: JSON.stringify(fields) });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Change the current user's password via POST /v1/ghii/password/change. */
|
|
50
|
+
export async function changePassword(currentPassword, newPassword) {
|
|
51
|
+
const s = getSession();
|
|
52
|
+
if (!s) throw new Error('Not logged in');
|
|
53
|
+
return s.fetch('/v1/ghii/password/change', {
|
|
54
|
+
method: 'POST',
|
|
55
|
+
body: JSON.stringify({ current_password: currentPassword, new_password: newPassword }),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
35
59
|
/** Listen for auth state changes. Returns unsubscribe function. */
|
|
36
60
|
export function onAuthChange(callback) {
|
|
37
61
|
const handler = () => callback(getSession());
|
|
@@ -21,7 +21,7 @@ import htm from 'htm';
|
|
|
21
21
|
const html = htm.bind(h);
|
|
22
22
|
import { t } from '/js/i18n.js';
|
|
23
23
|
import { escHtml } from '/js/utils.js';
|
|
24
|
-
import { getNodeUrl } from '/js/services/auth.js';
|
|
24
|
+
import { getNodeUrl, getProfile, updateProfile, changePassword } from '/js/services/auth.js';
|
|
25
25
|
import { listApps } from '/js/services/apps.js';
|
|
26
26
|
import { Spinner } from './shared.js';
|
|
27
27
|
import { minidenticon } from '/lib/minidenticons.min.js';
|
|
@@ -56,9 +56,186 @@ export function tierLevel(tier) {
|
|
|
56
56
|
return TIER_LEVELS[tier] || 0;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
/* ───── Edit Profile Modal ───── */
|
|
60
|
+
|
|
61
|
+
function EditProfileModal({ session, onClose, onSaved }) {
|
|
62
|
+
const [loading, setLoading] = useState(true);
|
|
63
|
+
const [saving, setSaving] = useState(false);
|
|
64
|
+
const [fields, setFields] = useState({ display_name: '', bio: '', avatar: '', locale: 'en' });
|
|
65
|
+
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
let cancelled = false;
|
|
68
|
+
(async () => {
|
|
69
|
+
try {
|
|
70
|
+
const resp = await getProfile();
|
|
71
|
+
if (cancelled) return;
|
|
72
|
+
if (resp && resp.data) {
|
|
73
|
+
const d = resp.data;
|
|
74
|
+
setFields({
|
|
75
|
+
display_name: d.display_name || '',
|
|
76
|
+
bio: d.bio || '',
|
|
77
|
+
avatar: d.avatar || '',
|
|
78
|
+
locale: d.locale || 'en',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
} catch { /* use defaults */ }
|
|
82
|
+
if (!cancelled) setLoading(false);
|
|
83
|
+
})();
|
|
84
|
+
return () => { cancelled = true; };
|
|
85
|
+
}, []);
|
|
86
|
+
|
|
87
|
+
const set = (key, val) => setFields(prev => ({ ...prev, [key]: val }));
|
|
88
|
+
|
|
89
|
+
const save = async () => {
|
|
90
|
+
setSaving(true);
|
|
91
|
+
try {
|
|
92
|
+
const resp = await updateProfile(fields);
|
|
93
|
+
if (resp && resp.data) {
|
|
94
|
+
if (session && typeof fields.display_name === 'string') {
|
|
95
|
+
session.displayName = fields.display_name;
|
|
96
|
+
}
|
|
97
|
+
onSaved?.();
|
|
98
|
+
} else {
|
|
99
|
+
alert(t('profile.landing.editError'));
|
|
100
|
+
}
|
|
101
|
+
} catch {
|
|
102
|
+
alert(t('profile.landing.editError'));
|
|
103
|
+
}
|
|
104
|
+
setSaving(false);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
const onOverlayClick = (e) => {
|
|
108
|
+
if (e.target === e.currentTarget) onClose();
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
return html`
|
|
112
|
+
<div class="pf-edit-overlay" onClick=${onOverlayClick}>
|
|
113
|
+
<div class="pf-edit-modal">
|
|
114
|
+
<div class="pf-edit-header">
|
|
115
|
+
<h2 class="pf-edit-title">${t('profile.landing.editModalTitle')}</h2>
|
|
116
|
+
<button class="pf-edit-close" onClick=${onClose} aria-label=${t('profile.landing.editCancel')}>✕</button>
|
|
117
|
+
</div>
|
|
118
|
+
${loading ? html`<div class="pf-edit-loading"><${Spinner} /></div>` : html`
|
|
119
|
+
<div class="pf-edit-body">
|
|
120
|
+
<label class="pf-edit-label">
|
|
121
|
+
${t('profile.landing.editDisplayName')}
|
|
122
|
+
<input type="text" class="pf-edit-input" value=${fields.display_name}
|
|
123
|
+
placeholder=${t('profile.landing.editDisplayNamePlaceholder')}
|
|
124
|
+
maxlength="100"
|
|
125
|
+
onInput=${(e) => set('display_name', e.target.value)} />
|
|
126
|
+
</label>
|
|
127
|
+
<label class="pf-edit-label">
|
|
128
|
+
${t('profile.landing.editBio')}
|
|
129
|
+
<textarea class="pf-edit-textarea" value=${fields.bio}
|
|
130
|
+
placeholder=${t('profile.landing.editBioPlaceholder')}
|
|
131
|
+
maxlength="500" rows="3"
|
|
132
|
+
onInput=${(e) => set('bio', e.target.value)}></textarea>
|
|
133
|
+
</label>
|
|
134
|
+
<label class="pf-edit-label">
|
|
135
|
+
${t('profile.landing.editAvatar')}
|
|
136
|
+
<input type="text" class="pf-edit-input" value=${fields.avatar}
|
|
137
|
+
placeholder=${t('profile.landing.editAvatarPlaceholder')}
|
|
138
|
+
maxlength="50"
|
|
139
|
+
onInput=${(e) => set('avatar', e.target.value)} />
|
|
140
|
+
</label>
|
|
141
|
+
<label class="pf-edit-label">
|
|
142
|
+
${t('profile.landing.editLocale')}
|
|
143
|
+
<select class="pf-edit-select" value=${fields.locale}
|
|
144
|
+
onChange=${(e) => set('locale', e.target.value)}>
|
|
145
|
+
<option value="en">English</option>
|
|
146
|
+
<option value="fi">Suomi</option>
|
|
147
|
+
</select>
|
|
148
|
+
</label>
|
|
149
|
+
</div>
|
|
150
|
+
<div class="pf-edit-footer">
|
|
151
|
+
<button class="btn-outline" onClick=${onClose} disabled=${saving}>
|
|
152
|
+
${t('profile.landing.editCancel')}
|
|
153
|
+
</button>
|
|
154
|
+
<button class="btn-primary" onClick=${save} disabled=${saving}>
|
|
155
|
+
${saving ? t('profile.landing.editSaving') : t('profile.landing.editSave')}
|
|
156
|
+
</button>
|
|
157
|
+
</div>
|
|
158
|
+
`}
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* ───── Change Password Modal ───── */
|
|
165
|
+
|
|
166
|
+
function ChangePasswordModal({ onClose, onChanged }) {
|
|
167
|
+
const [current, setCurrent] = useState('');
|
|
168
|
+
const [newPw, setNewPw] = useState('');
|
|
169
|
+
const [confirm, setConfirm] = useState('');
|
|
170
|
+
const [saving, setSaving] = useState(false);
|
|
171
|
+
const [err, setErr] = useState('');
|
|
172
|
+
|
|
173
|
+
const save = async () => {
|
|
174
|
+
setErr('');
|
|
175
|
+
if (newPw !== confirm) {
|
|
176
|
+
setErr(t('profile.landing.passwordMismatch'));
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
setSaving(true);
|
|
180
|
+
try {
|
|
181
|
+
const resp = await changePassword(current, newPw);
|
|
182
|
+
if (resp && resp.data && resp.data.ok) {
|
|
183
|
+
onChanged?.();
|
|
184
|
+
} else {
|
|
185
|
+
setErr(resp?.error?.message || t('profile.landing.passwordChangeFailed'));
|
|
186
|
+
}
|
|
187
|
+
} catch {
|
|
188
|
+
setErr(t('profile.landing.passwordChangeFailed'));
|
|
189
|
+
}
|
|
190
|
+
setSaving(false);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const onOverlayClick = (e) => {
|
|
194
|
+
if (e.target === e.currentTarget) onClose();
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
return html`
|
|
198
|
+
<div class="pf-edit-overlay" onClick=${onOverlayClick}>
|
|
199
|
+
<div class="pf-edit-modal">
|
|
200
|
+
<div class="pf-edit-header">
|
|
201
|
+
<h2 class="pf-edit-title">${t('profile.landing.changePasswordTitle')}</h2>
|
|
202
|
+
<button class="pf-edit-close" onClick=${onClose} aria-label=${t('profile.landing.editCancel')}>✕</button>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="pf-edit-body">
|
|
205
|
+
<label class="pf-edit-label">
|
|
206
|
+
${t('profile.landing.currentPassword')}
|
|
207
|
+
<input type="password" class="pf-edit-input" value=${current}
|
|
208
|
+
onInput=${(e) => setCurrent(e.target.value)} />
|
|
209
|
+
</label>
|
|
210
|
+
<label class="pf-edit-label">
|
|
211
|
+
${t('profile.landing.newPassword')}
|
|
212
|
+
<input type="password" class="pf-edit-input" value=${newPw}
|
|
213
|
+
onInput=${(e) => setNewPw(e.target.value)} />
|
|
214
|
+
</label>
|
|
215
|
+
<label class="pf-edit-label">
|
|
216
|
+
${t('profile.landing.confirmPassword')}
|
|
217
|
+
<input type="password" class="pf-edit-input" value=${confirm}
|
|
218
|
+
onInput=${(e) => setConfirm(e.target.value)} />
|
|
219
|
+
</label>
|
|
220
|
+
<div class="pf-edit-hint">${t('profile.landing.passwordRequirements')}</div>
|
|
221
|
+
${err && html`<div class="pf-edit-error">${err}</div>`}
|
|
222
|
+
</div>
|
|
223
|
+
<div class="pf-edit-footer">
|
|
224
|
+
<button class="btn-outline" onClick=${onClose} disabled=${saving}>
|
|
225
|
+
${t('profile.landing.editCancel')}
|
|
226
|
+
</button>
|
|
227
|
+
<button class="btn-primary" onClick=${save} disabled=${saving || !current || !newPw || !confirm}>
|
|
228
|
+
${saving ? t('profile.landing.passwordChanging') : t('profile.landing.editSave')}
|
|
229
|
+
</button>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
`;
|
|
234
|
+
}
|
|
235
|
+
|
|
59
236
|
/* ───── Sub-components ───── */
|
|
60
237
|
|
|
61
|
-
function ProfileCard({ tier, stats, session }) {
|
|
238
|
+
function ProfileCard({ tier, stats, session, onEditProfile, onChangePassword }) {
|
|
62
239
|
const NODE_URL = getNodeUrl();
|
|
63
240
|
const isNew = tier === 'new';
|
|
64
241
|
const isExperienced = tier === 'experienced';
|
|
@@ -71,11 +248,12 @@ function ProfileCard({ tier, stats, session }) {
|
|
|
71
248
|
<div class="pf-lp-info">
|
|
72
249
|
<div class="pf-lp-name-row">
|
|
73
250
|
<span class="pf-lp-name">${escHtml(session.displayName || session.owner)}</span>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
251
|
+
<a href="#" class="pf-lp-edit" onClick=${(e) => { e.preventDefault(); onEditProfile?.(); }}>
|
|
252
|
+
${t('profile.landing.editProfile')} \u2192
|
|
253
|
+
</a>
|
|
254
|
+
<a href="#" class="pf-lp-edit" onClick=${(e) => { e.preventDefault(); onChangePassword?.(); }}>
|
|
255
|
+
${t('profile.landing.changePassword')} \u2192
|
|
256
|
+
</a>
|
|
79
257
|
</div>
|
|
80
258
|
<div class="pf-lp-ghii">${escHtml(session.ghii || '')}</div>
|
|
81
259
|
<div class="pf-lp-node">${t('profile.node')}: ${escHtml(NODE_URL)}</div>
|
|
@@ -319,6 +497,8 @@ function InlineView({ tabId, label, onClose, renderTab }) {
|
|
|
319
497
|
|
|
320
498
|
export default function LandingPage({ tier, stats, session, navigate, showToast, locale, renderTab, getTabLabel }) {
|
|
321
499
|
const [apps, setApps] = useState([]);
|
|
500
|
+
const [editOpen, setEditOpen] = useState(false);
|
|
501
|
+
const [pwOpen, setPwOpen] = useState(false);
|
|
322
502
|
const [openView, setOpenView] = useState(() => {
|
|
323
503
|
try {
|
|
324
504
|
const saved = localStorage.getItem('aimeat-profile-tab');
|
|
@@ -390,7 +570,20 @@ export default function LandingPage({ tier, stats, session, navigate, showToast,
|
|
|
390
570
|
return html`
|
|
391
571
|
<div class="pf-landing">
|
|
392
572
|
|
|
393
|
-
<${ProfileCard} tier=${tier} stats=${stats} session=${session}
|
|
573
|
+
<${ProfileCard} tier=${tier} stats=${stats} session=${session}
|
|
574
|
+
onEditProfile=${() => setEditOpen(true)}
|
|
575
|
+
onChangePassword=${() => setPwOpen(true)} />
|
|
576
|
+
|
|
577
|
+
${editOpen && html`<${EditProfileModal}
|
|
578
|
+
session=${session}
|
|
579
|
+
onClose=${() => setEditOpen(false)}
|
|
580
|
+
onSaved=${() => { setEditOpen(false); showToast?.(t('profile.landing.editSaved')); }}
|
|
581
|
+
/>`}
|
|
582
|
+
|
|
583
|
+
${pwOpen && html`<${ChangePasswordModal}
|
|
584
|
+
onClose=${() => setPwOpen(false)}
|
|
585
|
+
onChanged=${() => { setPwOpen(false); showToast?.(t('profile.landing.passwordChanged')); }}
|
|
586
|
+
/>`}
|
|
394
587
|
|
|
395
588
|
${isNew && html`
|
|
396
589
|
<${HeroOnboarding} switchTab=${(id) => open(id, 'hero')} />
|
package/dist/src/index.js
CHANGED
|
@@ -97,14 +97,20 @@ if (values.help) {
|
|
|
97
97
|
console.log(HELP_TEXT);
|
|
98
98
|
process.exit(0);
|
|
99
99
|
}
|
|
100
|
+
// Package root: from dist/src/index.js -> go up 2 levels to aimeat/
|
|
101
|
+
const __pkgRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
100
102
|
if (values.version) {
|
|
101
|
-
|
|
103
|
+
try {
|
|
104
|
+
const pkg = JSON.parse(readFileSync(join(__pkgRoot, 'package.json'), 'utf-8'));
|
|
105
|
+
console.log(`aimeat v${pkg.version}`);
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
console.log('aimeat (version unknown)');
|
|
109
|
+
}
|
|
102
110
|
process.exit(0);
|
|
103
111
|
}
|
|
104
112
|
// Load .env into process.env if not already loaded by bin/aimeat.ts.
|
|
105
113
|
// Search: CWD first, then package root (aimeat/ directory).
|
|
106
|
-
// Package root: from dist/src/index.js -> go up 2 levels to aimeat/
|
|
107
|
-
const __pkgRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
108
114
|
const envPath = existsSync('.env') ? '.env'
|
|
109
115
|
: existsSync(join(__pkgRoot, '.env')) ? join(__pkgRoot, '.env')
|
|
110
116
|
: null;
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;IACxC,gBAAgB,EAAE,IAAI;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACpC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC5B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC7B,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACpC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACnC,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;QACrC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;KACzC;CACF,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiEjB,CAAC;AAEF,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,qEAAqE;AACrE,4DAA4D;AAC5D,oEAAoE;AACpE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;IACzC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;QAC7D,CAAC,CAAC,IAAI,CAAC;AAEX,IAAI,OAAO,EAAE,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,qEAAqE;QACrE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrC,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,OAAO,IAAI,CAAC;gBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,YAAY,GAA2B,EAAE,CAAC;AAChD,IAAI,MAAM,CAAC,IAAI;IAAE,YAAY,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;AACzD,IAAI,MAAM,CAAC,EAAE;IAAE,YAAY,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;AACxD,IAAI,MAAM,CAAC,QAAQ,CAAC;IAAE,YAAY,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtE,IAAI,MAAM,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACvE,IAAI,MAAM,CAAC,SAAS,CAAC;IAAE,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AACnE,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAAE,YAAY,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACxF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC;IACxC,YAAY,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAC7C,CAAC;AACD,IAAI,MAAM,CAAC,eAAe,CAAC;IAAE,YAAY,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AACrF,IAAI,MAAM,CAAC,cAAc,CAAC;IAAE,YAAY,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAElF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM;IACzB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;CAC9E,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAElC,qBAAqB;AACrB,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;IAC5B,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;IAE1E,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAI,MAAM,CAAC,MAAiB,IAAI,KAAK,CAAC;QAClD,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,0BAA0B,MAAM,+BAA+B,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnE,MAAM,eAAe,CAAC,MAAM,EAAE,MAA2C,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QACnE,MAAM,eAAe,CAAC,MAAM,EAAE;YAC5B,IAAI,EAAE,MAAM,CAAC,IAA0B;YACvC,IAAI,EAAE,MAAM,CAAC,IAA0B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC/D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC;IAC7E,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC;IACxF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IACjC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;IACnC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,OAAiB;QAClE,CAAC,CAAC,OAAO,CAAC;IACZ,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,eAAe,0BAA0B,CAAC,CAAC;IAClI,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,gBAAgB,kBAAkB,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC/D,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;KAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IACjC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;IACvE,MAAM,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;IACpE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC,eAAe;QAChC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;KACjC,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC;QAChE,MAAM,OAAO,CAAC,kBAAkB,CAAC;YAC/B,OAAO,EAAE,IAAI;YACb,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,MAAM,OAAO,CAAC,kBAAkB,CAAC;YAC/B,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,CAAC;QACjD,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,oBAAoB,CAAC;IACtD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,6CAA6C;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,kBAAkB,EAAE;gBACnE,OAAO,EAAE,MAAM,CAAC,aAAa;oBAC3B,CAAC,CAAC,EAAE,aAAa,EAAE,mBAAmB,MAAM,CAAC,aAAa,EAAE,EAAE;oBAC9D,CAAC,CAAC,EAAE;aACP,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,yBAAyB;YAChE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,mBAAmB,EAAE;gBACpE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;oBAClC,GAAG,CAAC,MAAM,CAAC,aAAa;wBACtB,CAAC,CAAC,EAAE,aAAa,EAAE,mBAAmB,MAAM,CAAC,aAAa,EAAE,EAAE;wBAC9D,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACjD,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;KAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,KAAK,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,yBAAyB,EAAE;QAChE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,OAAO,EAAE;KAC7E,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4I,CAAC;IACjL,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,KAAK,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC5D,mBAAmB;IACnB,0CAA0C;IAC1C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9H,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QAC1C,yBAAyB;QACzB,MAAM,WAAW,GACf,MAAM,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAC9D,MAAM,CAAC,cAAc,KAAK,aAAa,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC3D,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;oBAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;wBAC3B,iBAAiB,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9H,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACzF,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,OAAO,yCAAyC,CAAC,CAAC;QAChG,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,8CAA8C,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,4CAA4C,MAAM,CAAC,IAAI,iBAAiB,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,sBAAsB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACvC,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QAE1E,oDAAoD;QACpD,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEhC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,SAAS;oBACxC,CAAC,CAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBAChE,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;gBACrE,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExD,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;gBAC1C,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CAAC,kBAAkB,eAAe,CAAC,MAAM,aAAa,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;oBAC3F,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;wBACnC,MAAM,GAAG,GAAI,IAAI,CAAC,MAAkC,EAAE,UAAU,IAAI,QAAQ,CAAC;wBAC7E,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAgB,CAAC,CAAC,CAAC;QAEjC,6CAA6C;QAC7C,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBAC1E,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAgB,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,sEAAsE;IACtE,IAAI,aAAa,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAErF,6EAA6E;QAC7E,MAAM,aAAa,GAAG,IAAI,GAAG,EAA8C,CAAC;QAC5E,SAAS,cAAc,CAAC,EAAU;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,KAAK,CAAC,KAAK,IAAI,EAAE;gBAAE,OAAO,KAAK,CAAC;YACpC,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,UAAU,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzE,gCAAgC;YAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,qBAAqB,IAAI,aAAa,IAAI,SAAS,EAAE,CAAC;gBACzE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;gBACjD,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;oBAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,UAAU,CAAC;gBAEf,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,MAAM,SAAS,GAAI,OAAO,CAAC,KAAgB,IAAI,EAAE,CAAC;oBAClD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;oBACrE,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;wBACpD,aAAa,CAAC,gBAAgB,CAAC,EAAE,EAAE,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC9F,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,6BAA6B;YAC7B,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;gBACzE,mCAAmC;gBACnC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;gBACtD,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;wBACjD,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC3B,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBACD,gDAAgD;oBAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;oBAC3D,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;wBAC9B,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;wBACvD,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,qBAAqB,CACtD,QAAQ,EACR,iBAAiB,CAClB,CAAC;wBACF,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAClE,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;4BACtD,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;wBACvD,CAAC,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAY,EAAE,CAAC;wBACtB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;4BACjE,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;wBAC3D,CAAC;6BAAM,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,mBAAmB,EAAE,CAAC;4BACvE,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;wBACnD,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;wBAC7D,CAAC;wBACD,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC;oBACD,OAAO;gBACT,CAAC;gBAED,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC;gBAEzD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBACjD,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,yDAAyD;gBACzD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;gBACjD,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC;oBAC7C,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrB,CAAC,CAAC,UAAU,CAAC;gBAEf,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,qDAAqD;oBACrD,IAAI,eAAe,EAAE,EAAE,CAAC;wBACtB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;4BACV,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;4BAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;4BACjB,OAAO;wBACT,CAAC;wBACD,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;4BACtD,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;wBAClD,CAAC,CAAC,CAAC;wBACH,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;wBAC7B,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,qBAAqB;oBACrB,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAC/C,MAAM,CAAC,OAAO,EAAE,CAAC;wBACjB,OAAO;oBACT,CAAC;oBAED,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;wBACtD,eAAe,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBAClD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAClD,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,CAAC;gBACD,OAAO;YACT,CAAC;YAED,yBAAyB;YACzB,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,aAAa;YAAE,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC/F,IAAI,eAAe;YAAE,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;KAAM,IAAI,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,UAAU,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ghii.d.ts","sourceRoot":"","sources":["../../../src/routes/ghii.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ghii.d.ts","sourceRoot":"","sources":["../../../src/routes/ghii.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA8BzD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,iBAAiB,CAAC,EAAE,MAAM,IAAI,GAAG,MAAM,CAsvCtI"}
|
package/dist/src/routes/ghii.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createHash, randomBytes } from 'node:crypto';
|
|
|
9
9
|
import { validateTotpCode, validateBackupCode } from '../services/totp.js';
|
|
10
10
|
import { hashPassword, verifyPassword } from '../services/password.js';
|
|
11
11
|
import { rateLimit } from '../middleware/rate-limit.js';
|
|
12
|
+
import { logger } from '../utils/logger.js';
|
|
12
13
|
// SECURITY: Password strength validation
|
|
13
14
|
const WEAK_PASSWORDS = [
|
|
14
15
|
'password', 'admin', 'testadminpw123', '123456', '12345678', 'letmein', 'qwerty',
|
|
@@ -196,7 +197,18 @@ export function ghiiRouter(config, storage, emailService, onDirectoryChange) {
|
|
|
196
197
|
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'password is required'));
|
|
197
198
|
return;
|
|
198
199
|
}
|
|
199
|
-
|
|
200
|
+
// Accept full GHII (e.g. "alice@node-id") -- strip the @node-id for local lookup
|
|
201
|
+
let loginName = username.trim().toLowerCase();
|
|
202
|
+
if (loginName.includes('@')) {
|
|
203
|
+
const atIdx = loginName.indexOf('@');
|
|
204
|
+
const nodePart = loginName.substring(atIdx + 1);
|
|
205
|
+
loginName = loginName.substring(0, atIdx);
|
|
206
|
+
if (nodePart !== config.nodeId) {
|
|
207
|
+
res.status(400).json(error(config.nodeId, 'FEDERATION_LOGIN_UNSUPPORTED', `Federated login is not yet supported. This node is ${config.nodeId}, but the identity belongs to ${nodePart}.`));
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
const ghii = `${loginName}@${config.nodeId}`;
|
|
200
212
|
const ghiiRecord = await storage.getGHII(ghii);
|
|
201
213
|
if (!ghiiRecord) {
|
|
202
214
|
res.status(401).json(error(config.nodeId, 'AUTH_REQUIRED', 'Invalid username or password'));
|
|
@@ -854,8 +866,16 @@ export function ghiiRouter(config, storage, emailService, onDirectoryChange) {
|
|
|
854
866
|
createdAt: now,
|
|
855
867
|
verifiedAt: null,
|
|
856
868
|
});
|
|
857
|
-
|
|
858
|
-
|
|
869
|
+
const sent = await emailService.sendVerificationCode(ghiiRecord.notificationEmail, code, ghiiRecord.locale);
|
|
870
|
+
if (sent) {
|
|
871
|
+
logger.info('Password reset code sent successfully');
|
|
872
|
+
}
|
|
873
|
+
else {
|
|
874
|
+
logger.warn('Password reset code email failed to send');
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
else if (ghiiRecord) {
|
|
878
|
+
logger.info(`Password reset skipped: email=${!!ghiiRecord.notificationEmail} verified=${!!ghiiRecord.emailVerifiedAt} service=${!!emailService?.enabled}`);
|
|
859
879
|
}
|
|
860
880
|
// Always return same response to not reveal if account exists
|
|
861
881
|
res.json(success(config.nodeId, {
|
|
@@ -920,6 +940,42 @@ export function ghiiRouter(config, storage, emailService, onDirectoryChange) {
|
|
|
920
940
|
}));
|
|
921
941
|
emitChange('ghii');
|
|
922
942
|
});
|
|
943
|
+
// POST /v1/ghii/password/change — Change password (requires auth)
|
|
944
|
+
router.post('/v1/ghii/password/change', requireAuth(), rateLimit({ max: 5, windowMs: 10 * 60 * 1000 }), async (req, res) => {
|
|
945
|
+
const ownerName = req.auth.owner;
|
|
946
|
+
const { current_password, new_password } = req.body ?? {};
|
|
947
|
+
if (!current_password || typeof current_password !== 'string') {
|
|
948
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'current_password is required'));
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
if (!new_password || typeof new_password !== 'string') {
|
|
952
|
+
res.status(400).json(error(config.nodeId, 'INVALID_INPUT', 'new_password is required'));
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
const ghii = `${ownerName}@${config.nodeId}`;
|
|
956
|
+
const ghiiRecord = await storage.getGHII(ghii);
|
|
957
|
+
if (!ghiiRecord || !ghiiRecord.passwordHash) {
|
|
958
|
+
res.status(400).json(error(config.nodeId, 'NO_PASSWORD', 'Account does not have a password set'));
|
|
959
|
+
return;
|
|
960
|
+
}
|
|
961
|
+
const valid = await verifyPassword(current_password, ghiiRecord.passwordHash);
|
|
962
|
+
if (!valid) {
|
|
963
|
+
res.status(401).json(error(config.nodeId, 'WRONG_PASSWORD', 'Current password is incorrect'));
|
|
964
|
+
return;
|
|
965
|
+
}
|
|
966
|
+
const pwErr = validatePasswordStrength(new_password);
|
|
967
|
+
if (pwErr) {
|
|
968
|
+
res.status(400).json(error(config.nodeId, 'WEAK_PASSWORD', pwErr));
|
|
969
|
+
return;
|
|
970
|
+
}
|
|
971
|
+
const newHash = await hashPassword(new_password);
|
|
972
|
+
await storage.updateGHII(ghii, { passwordHash: newHash });
|
|
973
|
+
res.json(success(config.nodeId, {
|
|
974
|
+
ok: true,
|
|
975
|
+
message: 'Password changed successfully',
|
|
976
|
+
}));
|
|
977
|
+
emitChange('ghii');
|
|
978
|
+
});
|
|
923
979
|
// POST /v1/ghii/account/recover — Send username to verified email (NO auth)
|
|
924
980
|
router.post('/v1/ghii/account/recover', rateLimit({ max: 3, windowMs: 10 * 60 * 1000 }), async (req, res) => {
|
|
925
981
|
const { email } = req.body ?? {};
|