appshot-cli 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +159 -17
- package/dist/cli.js +36 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +144 -61
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/caption.d.ts.map +1 -1
- package/dist/commands/caption.js +28 -1
- package/dist/commands/caption.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +67 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/fonts.d.ts.map +1 -1
- package/dist/commands/fonts.js +89 -6
- package/dist/commands/fonts.js.map +1 -1
- package/dist/commands/gradients.d.ts.map +1 -1
- package/dist/commands/gradients.js +42 -2
- package/dist/commands/gradients.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/localize.d.ts.map +1 -1
- package/dist/commands/localize.js +33 -1
- package/dist/commands/localize.js.map +1 -1
- package/dist/commands/specs.d.ts.map +1 -1
- package/dist/commands/specs.js +61 -46
- package/dist/commands/specs.js.map +1 -1
- package/dist/commands/style.d.ts.map +1 -1
- package/dist/commands/style.js +35 -2
- package/dist/commands/style.js.map +1 -1
- package/dist/core/app-store-specs.d.ts +2 -0
- package/dist/core/app-store-specs.d.ts.map +1 -1
- package/dist/core/app-store-specs.js +2 -0
- package/dist/core/app-store-specs.js.map +1 -1
- package/dist/core/compose.d.ts +6 -0
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +104 -4
- package/dist/core/compose.js.map +1 -1
- package/dist/core/devices.d.ts +1 -1
- package/dist/core/devices.d.ts.map +1 -1
- package/dist/core/devices.js +5 -1
- package/dist/core/devices.js.map +1 -1
- package/dist/services/doctor.d.ts +35 -0
- package/dist/services/doctor.d.ts.map +1 -0
- package/dist/services/doctor.js +439 -0
- package/dist/services/doctor.js.map +1 -0
- package/dist/services/fonts.d.ts +37 -2
- package/dist/services/fonts.d.ts.map +1 -1
- package/dist/services/fonts.js +223 -0
- package/dist/services/fonts.js.map +1 -1
- package/dist/types/exec.d.ts +5 -0
- package/dist/types/exec.d.ts.map +1 -0
- package/dist/types/exec.js +2 -0
- package/dist/types/exec.js.map +1 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/fonts/DMSans/DMSans-LICENSE.txt +93 -0
- package/fonts/DMSans/DMSans-Regular.ttf +0 -0
- package/fonts/Inter/InterVariable-Italic.ttf +0 -0
- package/fonts/Inter/InterVariable.ttf +0 -0
- package/fonts/Inter/LICENSE.txt +92 -0
- package/fonts/Lato/Lato-Bold.ttf +0 -0
- package/fonts/Lato/Lato-BoldItalic.ttf +0 -0
- package/fonts/Lato/Lato-Italic.ttf +0 -0
- package/fonts/Lato/Lato-LICENSE.txt +93 -0
- package/fonts/Lato/Lato-Regular.ttf +0 -0
- package/fonts/Montserrat/Montserrat-Bold.ttf +2070 -0
- package/fonts/Montserrat/Montserrat-BoldItalic.ttf +2070 -0
- package/fonts/Montserrat/Montserrat-Italic.ttf +2070 -0
- package/fonts/Montserrat/Montserrat-LICENSE.txt +93 -0
- package/fonts/Montserrat/Montserrat-Regular.ttf +2070 -0
- package/fonts/OpenSans/OpenSans-LICENSE.txt +92 -0
- package/fonts/OpenSans/OpenSans-Regular.ttf +0 -0
- package/fonts/Poppins/Poppins-Bold.ttf +0 -0
- package/fonts/Poppins/Poppins-BoldItalic.ttf +0 -0
- package/fonts/Poppins/Poppins-Italic.ttf +0 -0
- package/fonts/Poppins/Poppins-LICENSE.txt +93 -0
- package/fonts/Poppins/Poppins-Regular.ttf +0 -0
- package/fonts/Roboto/Roboto-Bold.ttf +2070 -0
- package/fonts/Roboto/Roboto-BoldItalic.ttf +2070 -0
- package/fonts/Roboto/Roboto-Italic.ttf +2070 -0
- package/fonts/Roboto/Roboto-LICENSE.txt +2070 -0
- package/fonts/Roboto/Roboto-Regular.ttf +2070 -0
- package/fonts/WorkSans/WorkSans-LICENSE.txt +93 -0
- package/fonts/WorkSans/WorkSans-Regular.ttf +0 -0
- package/package.json +7 -3
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { platform } from 'os';
|
|
6
|
+
import sharp from 'sharp';
|
|
7
|
+
import { FontService } from './fonts.js';
|
|
8
|
+
import { loadConfig } from '../core/files.js';
|
|
9
|
+
import { frameRegistry } from '../core/devices.js';
|
|
10
|
+
const execAsync = promisify(exec);
|
|
11
|
+
export class DoctorService {
|
|
12
|
+
results = [];
|
|
13
|
+
suggestions = [];
|
|
14
|
+
async runAllChecks(categories) {
|
|
15
|
+
this.results = [];
|
|
16
|
+
this.suggestions = [];
|
|
17
|
+
const availableCategories = ['system', 'dependencies', 'fonts', 'filesystem', 'frames'];
|
|
18
|
+
const categoriesToRun = categories?.length
|
|
19
|
+
? categories.filter(c => availableCategories.includes(c))
|
|
20
|
+
: availableCategories;
|
|
21
|
+
if (categoriesToRun.includes('system')) {
|
|
22
|
+
await this.checkSystemRequirements();
|
|
23
|
+
}
|
|
24
|
+
if (categoriesToRun.includes('dependencies')) {
|
|
25
|
+
await this.checkDependencies();
|
|
26
|
+
}
|
|
27
|
+
if (categoriesToRun.includes('fonts')) {
|
|
28
|
+
await this.checkFontSystem();
|
|
29
|
+
}
|
|
30
|
+
if (categoriesToRun.includes('filesystem')) {
|
|
31
|
+
await this.checkFileSystem();
|
|
32
|
+
}
|
|
33
|
+
if (categoriesToRun.includes('frames')) {
|
|
34
|
+
await this.checkFrameAssets();
|
|
35
|
+
}
|
|
36
|
+
return this.generateReport();
|
|
37
|
+
}
|
|
38
|
+
addResult(result) {
|
|
39
|
+
this.results.push(result);
|
|
40
|
+
if (result.suggestion && result.status !== 'pass') {
|
|
41
|
+
this.suggestions.push(result.suggestion);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async checkSystemRequirements() {
|
|
45
|
+
// Check Node.js version
|
|
46
|
+
const nodeVersion = process.version;
|
|
47
|
+
const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0]);
|
|
48
|
+
this.addResult({
|
|
49
|
+
name: 'Node.js Version',
|
|
50
|
+
category: 'system',
|
|
51
|
+
status: majorVersion >= 18 ? 'pass' : 'error',
|
|
52
|
+
message: `Node.js ${nodeVersion} (minimum: v18.0.0)`,
|
|
53
|
+
suggestion: majorVersion < 18 ? 'Update Node.js to version 18 or higher' : undefined
|
|
54
|
+
});
|
|
55
|
+
// Check npm availability
|
|
56
|
+
try {
|
|
57
|
+
const { stdout } = await execAsync('npm --version');
|
|
58
|
+
this.addResult({
|
|
59
|
+
name: 'npm',
|
|
60
|
+
category: 'system',
|
|
61
|
+
status: 'pass',
|
|
62
|
+
message: `npm v${stdout.trim()}`
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
this.addResult({
|
|
67
|
+
name: 'npm',
|
|
68
|
+
category: 'system',
|
|
69
|
+
status: 'warning',
|
|
70
|
+
message: 'npm not found',
|
|
71
|
+
suggestion: 'Install npm or ensure it\'s in your PATH'
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// Platform detection
|
|
75
|
+
const os = platform();
|
|
76
|
+
this.addResult({
|
|
77
|
+
name: 'Platform',
|
|
78
|
+
category: 'system',
|
|
79
|
+
status: 'pass',
|
|
80
|
+
message: `${os} (${this.getPlatformName(os)})`
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
async checkDependencies() {
|
|
84
|
+
// Check Sharp installation
|
|
85
|
+
try {
|
|
86
|
+
const sharpVersion = sharp.versions;
|
|
87
|
+
this.addResult({
|
|
88
|
+
name: 'Sharp Module',
|
|
89
|
+
category: 'dependencies',
|
|
90
|
+
status: 'pass',
|
|
91
|
+
message: `Sharp v${sharpVersion.sharp} installed`
|
|
92
|
+
});
|
|
93
|
+
// Check Sharp native bindings
|
|
94
|
+
if (sharpVersion.vips) {
|
|
95
|
+
this.addResult({
|
|
96
|
+
name: 'Sharp Native Bindings',
|
|
97
|
+
category: 'dependencies',
|
|
98
|
+
status: 'pass',
|
|
99
|
+
message: `libvips v${sharpVersion.vips} loaded`
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
// Test Sharp functionality
|
|
103
|
+
try {
|
|
104
|
+
await sharp({
|
|
105
|
+
create: {
|
|
106
|
+
width: 100,
|
|
107
|
+
height: 100,
|
|
108
|
+
channels: 4,
|
|
109
|
+
background: { r: 255, g: 0, b: 0, alpha: 1 }
|
|
110
|
+
}
|
|
111
|
+
})
|
|
112
|
+
.png()
|
|
113
|
+
.toBuffer();
|
|
114
|
+
this.addResult({
|
|
115
|
+
name: 'Image Processing',
|
|
116
|
+
category: 'dependencies',
|
|
117
|
+
status: 'pass',
|
|
118
|
+
message: 'Sharp image processing test passed'
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.addResult({
|
|
123
|
+
name: 'Image Processing',
|
|
124
|
+
category: 'dependencies',
|
|
125
|
+
status: 'error',
|
|
126
|
+
message: 'Sharp image processing test failed',
|
|
127
|
+
details: error instanceof Error ? error.message : String(error),
|
|
128
|
+
suggestion: 'Try reinstalling sharp: npm install sharp --force'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
this.addResult({
|
|
134
|
+
name: 'Sharp Module',
|
|
135
|
+
category: 'dependencies',
|
|
136
|
+
status: 'error',
|
|
137
|
+
message: 'Sharp not installed or not functional',
|
|
138
|
+
details: error instanceof Error ? error.message : String(error),
|
|
139
|
+
suggestion: 'Install sharp: npm install sharp'
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
// Check OpenAI API key
|
|
143
|
+
const hasApiKey = !!process.env.OPENAI_API_KEY;
|
|
144
|
+
this.addResult({
|
|
145
|
+
name: 'OpenAI API Key',
|
|
146
|
+
category: 'dependencies',
|
|
147
|
+
status: hasApiKey ? 'pass' : 'warning',
|
|
148
|
+
message: hasApiKey ? 'OpenAI API key found' : 'OpenAI API key not found (translation features disabled)',
|
|
149
|
+
suggestion: hasApiKey ? undefined : 'Set OPENAI_API_KEY environment variable to enable translation features'
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
async checkFontSystem() {
|
|
153
|
+
const fontService = FontService.getInstance();
|
|
154
|
+
const os = platform();
|
|
155
|
+
// Check font detection command availability
|
|
156
|
+
let fontCommandAvailable = false;
|
|
157
|
+
let fontCommand = '';
|
|
158
|
+
if (os === 'darwin') {
|
|
159
|
+
fontCommand = 'system_profiler';
|
|
160
|
+
try {
|
|
161
|
+
await execAsync('which system_profiler');
|
|
162
|
+
fontCommandAvailable = true;
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
fontCommandAvailable = false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else if (os === 'win32') {
|
|
169
|
+
fontCommand = 'PowerShell';
|
|
170
|
+
fontCommandAvailable = true; // PowerShell is always available on Windows
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
fontCommand = 'fc-list';
|
|
174
|
+
try {
|
|
175
|
+
await execAsync('which fc-list');
|
|
176
|
+
fontCommandAvailable = true;
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
fontCommandAvailable = false;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
this.addResult({
|
|
183
|
+
name: 'Font Detection',
|
|
184
|
+
category: 'fonts',
|
|
185
|
+
status: fontCommandAvailable ? 'pass' : 'warning',
|
|
186
|
+
message: fontCommandAvailable
|
|
187
|
+
? `Font detection available (${fontCommand})`
|
|
188
|
+
: `Font detection command not found (${fontCommand})`,
|
|
189
|
+
suggestion: !fontCommandAvailable && os === 'linux'
|
|
190
|
+
? 'Install fontconfig: apt-get install fontconfig or yum install fontconfig'
|
|
191
|
+
: undefined
|
|
192
|
+
});
|
|
193
|
+
// Try to load system fonts
|
|
194
|
+
try {
|
|
195
|
+
const fonts = await fontService.getSystemFonts();
|
|
196
|
+
this.addResult({
|
|
197
|
+
name: 'System Fonts',
|
|
198
|
+
category: 'fonts',
|
|
199
|
+
status: fonts.length > 0 ? 'pass' : 'warning',
|
|
200
|
+
message: fonts.length > 0
|
|
201
|
+
? `System fonts loaded (${fonts.length} fonts)`
|
|
202
|
+
: 'No system fonts detected',
|
|
203
|
+
suggestion: fonts.length === 0
|
|
204
|
+
? 'Font detection may not be working properly on your system'
|
|
205
|
+
: undefined
|
|
206
|
+
});
|
|
207
|
+
// Check for common fonts
|
|
208
|
+
const commonFonts = ['Arial', 'Helvetica', 'Times New Roman'];
|
|
209
|
+
for (const fontName of commonFonts) {
|
|
210
|
+
const isInstalled = await fontService.isFontInstalled(fontName);
|
|
211
|
+
if (isInstalled) {
|
|
212
|
+
this.addResult({
|
|
213
|
+
name: `${fontName} Font`,
|
|
214
|
+
category: 'fonts',
|
|
215
|
+
status: 'pass',
|
|
216
|
+
message: `${fontName} font available`
|
|
217
|
+
});
|
|
218
|
+
break; // Just need one common font to pass
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
this.addResult({
|
|
224
|
+
name: 'System Fonts',
|
|
225
|
+
category: 'fonts',
|
|
226
|
+
status: 'warning',
|
|
227
|
+
message: 'Could not load system fonts',
|
|
228
|
+
details: error instanceof Error ? error.message : String(error)
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async checkFileSystem() {
|
|
233
|
+
// Check write permissions in current directory
|
|
234
|
+
const testFile = path.join(process.cwd(), '.appshot-doctor-test');
|
|
235
|
+
try {
|
|
236
|
+
await fs.writeFile(testFile, 'test', 'utf8');
|
|
237
|
+
await fs.unlink(testFile);
|
|
238
|
+
this.addResult({
|
|
239
|
+
name: 'Current Directory',
|
|
240
|
+
category: 'filesystem',
|
|
241
|
+
status: 'pass',
|
|
242
|
+
message: 'Write permissions in current directory'
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
this.addResult({
|
|
247
|
+
name: 'Current Directory',
|
|
248
|
+
category: 'filesystem',
|
|
249
|
+
status: 'error',
|
|
250
|
+
message: 'No write permissions in current directory',
|
|
251
|
+
details: error instanceof Error ? error.message : String(error),
|
|
252
|
+
suggestion: 'Check directory permissions'
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
// Check write permissions in temp directory
|
|
256
|
+
const tempDir = process.platform === 'win32' ? process.env.TEMP || 'C:\\Temp' : '/tmp';
|
|
257
|
+
const tempFile = path.join(tempDir, '.appshot-doctor-test');
|
|
258
|
+
try {
|
|
259
|
+
await fs.writeFile(tempFile, 'test', 'utf8');
|
|
260
|
+
await fs.unlink(tempFile);
|
|
261
|
+
this.addResult({
|
|
262
|
+
name: 'Temp Directory',
|
|
263
|
+
category: 'filesystem',
|
|
264
|
+
status: 'pass',
|
|
265
|
+
message: 'Write permissions in temp directory'
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
this.addResult({
|
|
270
|
+
name: 'Temp Directory',
|
|
271
|
+
category: 'filesystem',
|
|
272
|
+
status: 'warning',
|
|
273
|
+
message: 'No write permissions in temp directory',
|
|
274
|
+
details: error instanceof Error ? error.message : String(error)
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
// Check .appshot directory
|
|
278
|
+
const appshotDir = path.join(process.cwd(), '.appshot');
|
|
279
|
+
try {
|
|
280
|
+
await fs.stat(appshotDir);
|
|
281
|
+
this.addResult({
|
|
282
|
+
name: '.appshot Directory',
|
|
283
|
+
category: 'filesystem',
|
|
284
|
+
status: 'pass',
|
|
285
|
+
message: '.appshot directory exists'
|
|
286
|
+
});
|
|
287
|
+
// Check configuration file
|
|
288
|
+
try {
|
|
289
|
+
await loadConfig();
|
|
290
|
+
this.addResult({
|
|
291
|
+
name: 'Configuration File',
|
|
292
|
+
category: 'filesystem',
|
|
293
|
+
status: 'pass',
|
|
294
|
+
message: 'Configuration file valid'
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
this.addResult({
|
|
299
|
+
name: 'Configuration File',
|
|
300
|
+
category: 'filesystem',
|
|
301
|
+
status: 'warning',
|
|
302
|
+
message: 'Configuration file missing or invalid',
|
|
303
|
+
suggestion: 'Run "appshot init" to create configuration'
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
this.addResult({
|
|
309
|
+
name: '.appshot Directory',
|
|
310
|
+
category: 'filesystem',
|
|
311
|
+
status: 'warning',
|
|
312
|
+
message: '.appshot directory not found',
|
|
313
|
+
suggestion: 'Run "appshot init" to initialize project'
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
async checkFrameAssets() {
|
|
318
|
+
const framesDir = path.join(process.cwd(), 'frames');
|
|
319
|
+
try {
|
|
320
|
+
const files = await fs.readdir(framesDir);
|
|
321
|
+
const frameFiles = files.filter(f => f.endsWith('.png'));
|
|
322
|
+
this.addResult({
|
|
323
|
+
name: 'Frames Directory',
|
|
324
|
+
category: 'frames',
|
|
325
|
+
status: 'pass',
|
|
326
|
+
message: `Frames directory found (${frameFiles.length} files)`
|
|
327
|
+
});
|
|
328
|
+
// Check Frames.json
|
|
329
|
+
const framesJsonPath = path.join(framesDir, 'Frames.json');
|
|
330
|
+
try {
|
|
331
|
+
const framesJson = await fs.readFile(framesJsonPath, 'utf8');
|
|
332
|
+
JSON.parse(framesJson);
|
|
333
|
+
this.addResult({
|
|
334
|
+
name: 'Frames.json',
|
|
335
|
+
category: 'frames',
|
|
336
|
+
status: 'pass',
|
|
337
|
+
message: 'Frames.json valid'
|
|
338
|
+
});
|
|
339
|
+
// Count frames by device type
|
|
340
|
+
const deviceCounts = {
|
|
341
|
+
iphone: 0,
|
|
342
|
+
ipad: 0,
|
|
343
|
+
mac: 0,
|
|
344
|
+
watch: 0
|
|
345
|
+
};
|
|
346
|
+
for (const frame of frameRegistry) {
|
|
347
|
+
deviceCounts[frame.deviceType]++;
|
|
348
|
+
}
|
|
349
|
+
for (const [device, count] of Object.entries(deviceCounts)) {
|
|
350
|
+
if (count > 0) {
|
|
351
|
+
this.addResult({
|
|
352
|
+
name: `${device.charAt(0).toUpperCase() + device.slice(1)} Frames`,
|
|
353
|
+
category: 'frames',
|
|
354
|
+
status: 'pass',
|
|
355
|
+
message: `${device === 'mac' ? 'Mac' : device.charAt(0).toUpperCase() + device.slice(1)} frames: ${count}`
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
// Check if all frame files referenced in registry exist
|
|
360
|
+
let missingFrames = 0;
|
|
361
|
+
for (const frame of frameRegistry) {
|
|
362
|
+
const framePath = path.join(framesDir, `${frame.originalName || frame.displayName}.png`);
|
|
363
|
+
try {
|
|
364
|
+
await fs.access(framePath);
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
missingFrames++;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
if (missingFrames === 0) {
|
|
371
|
+
this.addResult({
|
|
372
|
+
name: 'Frame Files',
|
|
373
|
+
category: 'frames',
|
|
374
|
+
status: 'pass',
|
|
375
|
+
message: 'All frame files present'
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
this.addResult({
|
|
380
|
+
name: 'Frame Files',
|
|
381
|
+
category: 'frames',
|
|
382
|
+
status: 'warning',
|
|
383
|
+
message: `${missingFrames} frame files missing`,
|
|
384
|
+
suggestion: 'Some device frames may not be available'
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
this.addResult({
|
|
390
|
+
name: 'Frames.json',
|
|
391
|
+
category: 'frames',
|
|
392
|
+
status: 'warning',
|
|
393
|
+
message: 'Frames.json missing or invalid',
|
|
394
|
+
details: error instanceof Error ? error.message : String(error)
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
catch {
|
|
399
|
+
this.addResult({
|
|
400
|
+
name: 'Frames Directory',
|
|
401
|
+
category: 'frames',
|
|
402
|
+
status: 'warning',
|
|
403
|
+
message: 'Frames directory not found',
|
|
404
|
+
suggestion: 'Device frames may not be available for the build command'
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
getPlatformName(os) {
|
|
409
|
+
switch (os) {
|
|
410
|
+
case 'darwin': return 'macOS';
|
|
411
|
+
case 'win32': return 'Windows';
|
|
412
|
+
case 'linux': return 'Linux';
|
|
413
|
+
default: return os;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
generateReport() {
|
|
417
|
+
const categorizedChecks = {};
|
|
418
|
+
for (const result of this.results) {
|
|
419
|
+
if (!categorizedChecks[result.category]) {
|
|
420
|
+
categorizedChecks[result.category] = [];
|
|
421
|
+
}
|
|
422
|
+
categorizedChecks[result.category].push(result);
|
|
423
|
+
}
|
|
424
|
+
const summary = {
|
|
425
|
+
passed: this.results.filter(r => r.status === 'pass').length,
|
|
426
|
+
warnings: this.results.filter(r => r.status === 'warning').length,
|
|
427
|
+
errors: this.results.filter(r => r.status === 'error').length
|
|
428
|
+
};
|
|
429
|
+
return {
|
|
430
|
+
timestamp: new Date().toISOString(),
|
|
431
|
+
version: '0.6.0',
|
|
432
|
+
platform: platform(),
|
|
433
|
+
checks: categorizedChecks,
|
|
434
|
+
summary,
|
|
435
|
+
suggestions: [...new Set(this.suggestions)] // Remove duplicates
|
|
436
|
+
};
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/services/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/services/fonts.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
export interface FontVariant {
|
|
2
|
+
style: 'normal' | 'italic';
|
|
3
|
+
weight: 'normal' | 'bold' | number;
|
|
4
|
+
path: string;
|
|
5
|
+
}
|
|
1
6
|
export interface FontInfo {
|
|
2
7
|
name: string;
|
|
3
8
|
family?: string;
|
|
4
9
|
style?: string;
|
|
5
|
-
|
|
10
|
+
weight?: string | number;
|
|
11
|
+
category?: 'system' | 'recommended' | 'web-safe' | 'embedded';
|
|
6
12
|
fallback?: string;
|
|
7
13
|
installed?: boolean;
|
|
14
|
+
embedded?: boolean;
|
|
15
|
+
path?: string;
|
|
16
|
+
variants?: FontVariant[];
|
|
8
17
|
}
|
|
9
18
|
export interface FontCategory {
|
|
10
19
|
name: string;
|
|
@@ -13,13 +22,19 @@ export interface FontCategory {
|
|
|
13
22
|
export interface FontStatus {
|
|
14
23
|
name: string;
|
|
15
24
|
installed: boolean;
|
|
16
|
-
|
|
25
|
+
embedded?: boolean;
|
|
26
|
+
category?: 'system' | 'recommended' | 'web-safe' | 'embedded';
|
|
17
27
|
fallback: string;
|
|
18
28
|
warning?: string;
|
|
29
|
+
path?: string;
|
|
30
|
+
style?: 'normal' | 'italic';
|
|
31
|
+
weight?: 'normal' | 'bold' | number;
|
|
32
|
+
variants?: FontVariant[];
|
|
19
33
|
}
|
|
20
34
|
export declare class FontService {
|
|
21
35
|
private static instance;
|
|
22
36
|
private systemFontsCache;
|
|
37
|
+
private embeddedFontsCache;
|
|
23
38
|
static getInstance(): FontService;
|
|
24
39
|
/**
|
|
25
40
|
* Get list of system fonts based on platform
|
|
@@ -67,5 +82,25 @@ export declare class FontService {
|
|
|
67
82
|
* Get a font's fallback chain (synchronous for backward compatibility)
|
|
68
83
|
*/
|
|
69
84
|
getFontFallback(fontName: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* Get the path to the fonts directory
|
|
87
|
+
*/
|
|
88
|
+
private getFontsDirectory;
|
|
89
|
+
/**
|
|
90
|
+
* Get list of embedded fonts bundled with the package
|
|
91
|
+
*/
|
|
92
|
+
getEmbeddedFonts(): Promise<FontInfo[]>;
|
|
93
|
+
/**
|
|
94
|
+
* Check if a font is available (either embedded or installed)
|
|
95
|
+
*/
|
|
96
|
+
isFontAvailable(fontName: string): Promise<boolean>;
|
|
97
|
+
/**
|
|
98
|
+
* Get detailed status about a font (including embedded status)
|
|
99
|
+
*/
|
|
100
|
+
getFontStatusWithEmbedded(fontName: string): Promise<FontStatus>;
|
|
101
|
+
/**
|
|
102
|
+
* Get all available fonts (embedded + system + recommended)
|
|
103
|
+
*/
|
|
104
|
+
getAllAvailableFonts(): Promise<FontInfo[]>;
|
|
70
105
|
}
|
|
71
106
|
//# sourceMappingURL=fonts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/services/fonts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/services/fonts.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,kBAAkB,CAA2B;WAEvC,WAAW,IAAI,WAAW;IAOxC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmCzC;;OAEG;YACW,aAAa;IA8B3B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,eAAe;IAkB7B;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IA8ChD;;OAEG;IACH,uBAAuB,IAAI,QAAQ,EAAE;IAcrC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAsDlD;;;OAGG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD;;;OAGG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAyB1D;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAiDzC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAyI7C;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD;;OAEG;IACG,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBtE;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;CA6ClD"}
|