appshot-cli 0.1.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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +381 -0
  3. package/bin/appshot.js +5 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +31 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/build.d.ts +3 -0
  9. package/dist/commands/build.d.ts.map +1 -0
  10. package/dist/commands/build.js +200 -0
  11. package/dist/commands/build.js.map +1 -0
  12. package/dist/commands/caption.d.ts +3 -0
  13. package/dist/commands/caption.d.ts.map +1 -0
  14. package/dist/commands/caption.js +118 -0
  15. package/dist/commands/caption.js.map +1 -0
  16. package/dist/commands/check.d.ts +3 -0
  17. package/dist/commands/check.d.ts.map +1 -0
  18. package/dist/commands/check.js +121 -0
  19. package/dist/commands/check.js.map +1 -0
  20. package/dist/commands/clean.d.ts +3 -0
  21. package/dist/commands/clean.d.ts.map +1 -0
  22. package/dist/commands/clean.js +133 -0
  23. package/dist/commands/clean.js.map +1 -0
  24. package/dist/commands/init.d.ts +3 -0
  25. package/dist/commands/init.d.ts.map +1 -0
  26. package/dist/commands/init.js +84 -0
  27. package/dist/commands/init.js.map +1 -0
  28. package/dist/commands/localize.d.ts +3 -0
  29. package/dist/commands/localize.d.ts.map +1 -0
  30. package/dist/commands/localize.js +31 -0
  31. package/dist/commands/localize.js.map +1 -0
  32. package/dist/commands/presets.d.ts +3 -0
  33. package/dist/commands/presets.d.ts.map +1 -0
  34. package/dist/commands/presets.js +135 -0
  35. package/dist/commands/presets.js.map +1 -0
  36. package/dist/commands/specs.d.ts +3 -0
  37. package/dist/commands/specs.d.ts.map +1 -0
  38. package/dist/commands/specs.js +69 -0
  39. package/dist/commands/specs.js.map +1 -0
  40. package/dist/commands/validate.d.ts +3 -0
  41. package/dist/commands/validate.d.ts.map +1 -0
  42. package/dist/commands/validate.js +183 -0
  43. package/dist/commands/validate.js.map +1 -0
  44. package/dist/core/app-store-specs.d.ts +55 -0
  45. package/dist/core/app-store-specs.d.ts.map +1 -0
  46. package/dist/core/app-store-specs.js +457 -0
  47. package/dist/core/app-store-specs.js.map +1 -0
  48. package/dist/core/compose.d.ts +30 -0
  49. package/dist/core/compose.d.ts.map +1 -0
  50. package/dist/core/compose.js +420 -0
  51. package/dist/core/compose.js.map +1 -0
  52. package/dist/core/devices.d.ts +50 -0
  53. package/dist/core/devices.d.ts.map +1 -0
  54. package/dist/core/devices.js +404 -0
  55. package/dist/core/devices.js.map +1 -0
  56. package/dist/core/files.d.ts +5 -0
  57. package/dist/core/files.d.ts.map +1 -0
  58. package/dist/core/files.js +35 -0
  59. package/dist/core/files.js.map +1 -0
  60. package/dist/core/frames-analyzer.d.ts +24 -0
  61. package/dist/core/frames-analyzer.d.ts.map +1 -0
  62. package/dist/core/frames-analyzer.js +97 -0
  63. package/dist/core/frames-analyzer.js.map +1 -0
  64. package/dist/core/frames-loader.d.ts +113 -0
  65. package/dist/core/frames-loader.d.ts.map +1 -0
  66. package/dist/core/frames-loader.js +440 -0
  67. package/dist/core/frames-loader.js.map +1 -0
  68. package/dist/core/mask-generator.d.ts +10 -0
  69. package/dist/core/mask-generator.d.ts.map +1 -0
  70. package/dist/core/mask-generator.js +99 -0
  71. package/dist/core/mask-generator.js.map +1 -0
  72. package/dist/core/render.d.ts +10 -0
  73. package/dist/core/render.d.ts.map +1 -0
  74. package/dist/core/render.js +92 -0
  75. package/dist/core/render.js.map +1 -0
  76. package/dist/core/text-renderer.d.ts +18 -0
  77. package/dist/core/text-renderer.d.ts.map +1 -0
  78. package/dist/core/text-renderer.js +148 -0
  79. package/dist/core/text-renderer.js.map +1 -0
  80. package/dist/types.d.ts +57 -0
  81. package/dist/types.d.ts.map +1 -0
  82. package/dist/types.js +2 -0
  83. package/dist/types.js.map +1 -0
  84. package/dist/utils/caption-history.d.ts +35 -0
  85. package/dist/utils/caption-history.d.ts.map +1 -0
  86. package/dist/utils/caption-history.js +233 -0
  87. package/dist/utils/caption-history.js.map +1 -0
  88. package/frames/Frames.json +308 -0
  89. package/frames/MacBook Air 2020.png +0 -0
  90. package/frames/MacBook Air 2022.png +0 -0
  91. package/frames/MacBook Pro 13.png +0 -0
  92. package/frames/MacBook Pro 2021 14.png +0 -0
  93. package/frames/MacBook Pro 2021 16.png +0 -0
  94. package/frames/Watch Series 10 42.png +0 -0
  95. package/frames/Watch Series 10 42_mask.png +0 -0
  96. package/frames/Watch Series 10 46.png +0 -0
  97. package/frames/Watch Series 10 46_mask.png +0 -0
  98. package/frames/Watch Series 4 40.png +0 -0
  99. package/frames/Watch Series 4 44.png +0 -0
  100. package/frames/Watch Series 7 41.png +0 -0
  101. package/frames/Watch Series 7 45.png +0 -0
  102. package/frames/Watch Ultra 2024.png +0 -0
  103. package/frames/iMac 2021.png +0 -0
  104. package/frames/iPad 2021 Landscape.png +0 -0
  105. package/frames/iPad 2021 Portrait.png +0 -0
  106. package/frames/iPad Air 2020 Landscape.png +0 -0
  107. package/frames/iPad Air 2020 Portrait.png +0 -0
  108. package/frames/iPad Pro 2018-2021 11 Landscape.png +0 -0
  109. package/frames/iPad Pro 2018-2021 11 Portrait.png +0 -0
  110. package/frames/iPad Pro 2018-2021 Landscape.png +0 -0
  111. package/frames/iPad Pro 2018-2021 Portrait.png +0 -0
  112. package/frames/iPad Pro 2024 11 Landscape.png +0 -0
  113. package/frames/iPad Pro 2024 11 Portrait.png +0 -0
  114. package/frames/iPad Pro 2024 13 Landscape.png +0 -0
  115. package/frames/iPad Pro 2024 13 Portrait.png +0 -0
  116. package/frames/iPad mini 2021 Landscape.png +0 -0
  117. package/frames/iPad mini 2021 Portrait.png +0 -0
  118. package/frames/iPhone 11 Landscape.png +0 -0
  119. package/frames/iPhone 11 Portrait.png +0 -0
  120. package/frames/iPhone 11 Pro Max Landscape.png +0 -0
  121. package/frames/iPhone 11 Pro Max Portrait.png +0 -0
  122. package/frames/iPhone 11 Pro Portrait.png +0 -0
  123. package/frames/iPhone 12-13 Pro Landscape.png +0 -0
  124. package/frames/iPhone 12-13 Pro Max Landscape.png +0 -0
  125. package/frames/iPhone 12-13 Pro Max Landscape_mask.png +0 -0
  126. package/frames/iPhone 12-13 Pro Max Portrait.png +0 -0
  127. package/frames/iPhone 12-13 Pro Max Portrait_mask.png +0 -0
  128. package/frames/iPhone 12-13 Pro Portrait.png +0 -0
  129. package/frames/iPhone 12-13 mini Landscape.png +0 -0
  130. package/frames/iPhone 12-13 mini Portrait.png +0 -0
  131. package/frames/iPhone 16 Landscape.png +0 -0
  132. package/frames/iPhone 16 Landscape_frame_no_island.png +0 -0
  133. package/frames/iPhone 16 Landscape_mask.png +0 -0
  134. package/frames/iPhone 16 Plus Landscape.png +0 -0
  135. package/frames/iPhone 16 Plus Landscape_frame_no_island.png +0 -0
  136. package/frames/iPhone 16 Plus Landscape_mask.png +0 -0
  137. package/frames/iPhone 16 Plus Portrait.png +0 -0
  138. package/frames/iPhone 16 Plus Portrait_frame_no_island.png +0 -0
  139. package/frames/iPhone 16 Plus Portrait_mask.png +0 -0
  140. package/frames/iPhone 16 Portrait.png +0 -0
  141. package/frames/iPhone 16 Portrait_frame_no_island.png +0 -0
  142. package/frames/iPhone 16 Portrait_mask.png +0 -0
  143. package/frames/iPhone 16 Pro Landscape.png +0 -0
  144. package/frames/iPhone 16 Pro Landscape_frame_no_island.png +0 -0
  145. package/frames/iPhone 16 Pro Landscape_mask.png +0 -0
  146. package/frames/iPhone 16 Pro Max Landscape.png +0 -0
  147. package/frames/iPhone 16 Pro Max Landscape_frame_no_island.png +0 -0
  148. package/frames/iPhone 16 Pro Max Landscape_mask.png +0 -0
  149. package/frames/iPhone 16 Pro Max Portrait.png +0 -0
  150. package/frames/iPhone 16 Pro Max Portrait_frame_no_island.png +0 -0
  151. package/frames/iPhone 16 Pro Max Portrait_mask.png +0 -0
  152. package/frames/iPhone 16 Pro Portrait.png +0 -0
  153. package/frames/iPhone 16 Pro Portrait_frame_no_island.png +0 -0
  154. package/frames/iPhone 16 Pro Portrait_mask.png +0 -0
  155. package/frames/iPhone 8 Plus Landscape.png +0 -0
  156. package/frames/iPhone 8 Plus Portrait.png +0 -0
  157. 2020 SE.png +0 -0
  158. package/frames/version.txt +1 -0
  159. package/package.json +61 -0
@@ -0,0 +1,457 @@
1
+ /**
2
+ * Official App Store Screenshot Specifications
3
+ * Source: https://developer.apple.com/help/app-store-connect/reference/screenshot-specifications
4
+ */
5
+ export const IPHONE_PRESETS = [
6
+ {
7
+ id: 'iphone-6-9',
8
+ name: 'iPhone 6.9" Display',
9
+ displaySize: '6.9"',
10
+ devices: ['iPhone 16 Pro Max', 'iPhone 16 Plus', 'iPhone 15 Pro Max', 'iPhone 15 Plus', 'iPhone 14 Pro Max'],
11
+ resolutions: {
12
+ portrait: '1290x2796',
13
+ landscape: '2796x1290'
14
+ },
15
+ required: true,
16
+ notes: 'Primary iPhone screenshots'
17
+ },
18
+ {
19
+ id: 'iphone-6-9-alt',
20
+ name: 'iPhone 6.9" Display (Alternative)',
21
+ displaySize: '6.9"',
22
+ devices: ['iPhone 16 Pro Max', 'iPhone 16 Plus', 'iPhone 15 Pro Max', 'iPhone 15 Plus', 'iPhone 14 Pro Max'],
23
+ resolutions: {
24
+ portrait: '1320x2868',
25
+ landscape: '2868x1320'
26
+ }
27
+ },
28
+ {
29
+ id: 'iphone-6-5',
30
+ name: 'iPhone 6.5" Display',
31
+ displaySize: '6.5"',
32
+ devices: ['iPhone 14 Plus', 'iPhone 13 Pro Max', 'iPhone 12 Pro Max', 'iPhone 11 Pro Max', 'iPhone 11', 'iPhone XS Max', 'iPhone XR'],
33
+ resolutions: {
34
+ portrait: '1284x2778',
35
+ landscape: '2778x1284'
36
+ },
37
+ required: true,
38
+ fallback: 'iphone-6-9',
39
+ notes: 'Required if 6.9" screenshots not provided'
40
+ },
41
+ {
42
+ id: 'iphone-6-5-alt',
43
+ name: 'iPhone 6.5" Display (Alternative)',
44
+ displaySize: '6.5"',
45
+ devices: ['iPhone 14 Plus', 'iPhone 13 Pro Max', 'iPhone 12 Pro Max', 'iPhone 11 Pro Max', 'iPhone 11', 'iPhone XS Max', 'iPhone XR'],
46
+ resolutions: {
47
+ portrait: '1242x2688',
48
+ landscape: '2688x1242'
49
+ }
50
+ },
51
+ {
52
+ id: 'iphone-6-3',
53
+ name: 'iPhone 6.3" Display',
54
+ displaySize: '6.3"',
55
+ devices: ['iPhone 16 Pro', 'iPhone 16', 'iPhone 15 Pro', 'iPhone 15', 'iPhone 14 Pro'],
56
+ resolutions: {
57
+ portrait: '1179x2556',
58
+ landscape: '2556x1179'
59
+ },
60
+ fallback: 'iphone-6-5'
61
+ },
62
+ {
63
+ id: 'iphone-6-3-alt',
64
+ name: 'iPhone 6.3" Display (Alternative)',
65
+ displaySize: '6.3"',
66
+ devices: ['iPhone 16 Pro', 'iPhone 16', 'iPhone 15 Pro', 'iPhone 15', 'iPhone 14 Pro'],
67
+ resolutions: {
68
+ portrait: '1206x2622',
69
+ landscape: '2622x1206'
70
+ }
71
+ },
72
+ {
73
+ id: 'iphone-6-1',
74
+ name: 'iPhone 6.1" Display',
75
+ displaySize: '6.1"',
76
+ devices: ['iPhone 16e', 'iPhone 14', 'iPhone 13 Pro', 'iPhone 13', 'iPhone 13 mini', 'iPhone 12 Pro', 'iPhone 12', 'iPhone 12 mini', 'iPhone 11 Pro', 'iPhone XS', 'iPhone X'],
77
+ resolutions: {
78
+ portrait: '1170x2532',
79
+ landscape: '2532x1170'
80
+ },
81
+ fallback: 'iphone-6-5'
82
+ },
83
+ {
84
+ id: 'iphone-6-1-alt1',
85
+ name: 'iPhone 6.1" Display (Alternative 1)',
86
+ displaySize: '6.1"',
87
+ devices: ['iPhone 11 Pro', 'iPhone XS', 'iPhone X'],
88
+ resolutions: {
89
+ portrait: '1125x2436',
90
+ landscape: '2436x1125'
91
+ }
92
+ },
93
+ {
94
+ id: 'iphone-6-1-alt2',
95
+ name: 'iPhone 6.1" Display (Alternative 2)',
96
+ displaySize: '6.1"',
97
+ devices: ['iPhone 12', 'iPhone 13'],
98
+ resolutions: {
99
+ portrait: '1080x2340',
100
+ landscape: '2340x1080'
101
+ }
102
+ },
103
+ {
104
+ id: 'iphone-5-5',
105
+ name: 'iPhone 5.5" Display',
106
+ displaySize: '5.5"',
107
+ devices: ['iPhone 8 Plus', 'iPhone 7 Plus', 'iPhone 6S Plus', 'iPhone 6 Plus'],
108
+ resolutions: {
109
+ portrait: '1242x2208',
110
+ landscape: '2208x1242'
111
+ },
112
+ fallback: 'iphone-6-1'
113
+ },
114
+ {
115
+ id: 'iphone-4-7',
116
+ name: 'iPhone 4.7" Display',
117
+ displaySize: '4.7"',
118
+ devices: ['iPhone SE (3rd/2nd gen)', 'iPhone 8', 'iPhone 7', 'iPhone 6S', 'iPhone 6'],
119
+ resolutions: {
120
+ portrait: '750x1334',
121
+ landscape: '1334x750'
122
+ },
123
+ fallback: 'iphone-5-5'
124
+ },
125
+ {
126
+ id: 'iphone-4',
127
+ name: 'iPhone 4" Display',
128
+ displaySize: '4"',
129
+ devices: ['iPhone SE (1st gen)', 'iPhone 5S', 'iPhone 5C', 'iPhone 5'],
130
+ resolutions: {
131
+ portrait: '640x1136',
132
+ landscape: '1136x640'
133
+ },
134
+ fallback: 'iphone-4-7'
135
+ },
136
+ {
137
+ id: 'iphone-3-5',
138
+ name: 'iPhone 3.5" Display',
139
+ displaySize: '3.5"',
140
+ devices: ['iPhone 4S', 'iPhone 4'],
141
+ resolutions: {
142
+ portrait: '640x960',
143
+ landscape: '960x640'
144
+ },
145
+ fallback: 'iphone-4'
146
+ }
147
+ ];
148
+ export const IPAD_PRESETS = [
149
+ {
150
+ id: 'ipad-13',
151
+ name: 'iPad 13" Display',
152
+ displaySize: '13"',
153
+ devices: ['iPad Pro (M4)', 'iPad Pro (6th-1st gen)', 'iPad Air (M3, M2)'],
154
+ resolutions: {
155
+ portrait: '2064x2752',
156
+ landscape: '2752x2064'
157
+ },
158
+ required: true,
159
+ notes: 'Primary iPad screenshots'
160
+ },
161
+ {
162
+ id: 'ipad-13-alt',
163
+ name: 'iPad 13" Display (Alternative)',
164
+ displaySize: '13"',
165
+ devices: ['iPad Pro'],
166
+ resolutions: {
167
+ portrait: '2048x2732',
168
+ landscape: '2732x2048'
169
+ },
170
+ required: true
171
+ },
172
+ {
173
+ id: 'ipad-12-9',
174
+ name: 'iPad 12.9" Display',
175
+ displaySize: '12.9"',
176
+ devices: ['iPad Pro (2nd generation)'],
177
+ resolutions: {
178
+ portrait: '2048x2732',
179
+ landscape: '2732x2048'
180
+ },
181
+ fallback: 'ipad-13'
182
+ },
183
+ {
184
+ id: 'ipad-11',
185
+ name: 'iPad 11" Display',
186
+ displaySize: '11"',
187
+ devices: ['iPad Pro (M4)', 'iPad Pro (4th-1st gen)', 'iPad Air (M3, M2)', 'iPad Air (5th, 4th gen)', 'iPad (A16)', 'iPad (10th gen)', 'iPad mini (A17 Pro)', 'iPad mini (6th gen)'],
188
+ resolutions: {
189
+ portrait: '1488x2266',
190
+ landscape: '2266x1488'
191
+ },
192
+ fallback: 'ipad-13'
193
+ },
194
+ {
195
+ id: 'ipad-11-alt1',
196
+ name: 'iPad 11" Display (Alternative 1)',
197
+ displaySize: '11"',
198
+ devices: ['iPad Pro', 'iPad Air'],
199
+ resolutions: {
200
+ portrait: '1668x2420',
201
+ landscape: '2420x1668'
202
+ }
203
+ },
204
+ {
205
+ id: 'ipad-11-alt2',
206
+ name: 'iPad 11" Display (Alternative 2)',
207
+ displaySize: '11"',
208
+ devices: ['iPad Air'],
209
+ resolutions: {
210
+ portrait: '1668x2388',
211
+ landscape: '2388x1668'
212
+ }
213
+ },
214
+ {
215
+ id: 'ipad-11-alt3',
216
+ name: 'iPad 11" Display (Alternative 3)',
217
+ displaySize: '11"',
218
+ devices: ['iPad'],
219
+ resolutions: {
220
+ portrait: '1640x2360',
221
+ landscape: '2360x1640'
222
+ }
223
+ },
224
+ {
225
+ id: 'ipad-10-5',
226
+ name: 'iPad 10.5" Display',
227
+ displaySize: '10.5"',
228
+ devices: ['iPad Pro', 'iPad Air (3rd gen)', 'iPad (9th-7th gen)'],
229
+ resolutions: {
230
+ portrait: '1668x2224',
231
+ landscape: '2224x1668'
232
+ },
233
+ fallback: 'ipad-12-9'
234
+ },
235
+ {
236
+ id: 'ipad-9-7',
237
+ name: 'iPad 9.7" Display',
238
+ displaySize: '9.7"',
239
+ devices: ['iPad Pro', 'iPad Air', 'iPad Air 2', 'iPad', 'iPad 2', 'iPad (6th-3rd gen)', 'iPad mini (5th gen)', 'iPad mini 4', 'iPad mini 3', 'iPad mini 2'],
240
+ resolutions: {
241
+ portrait: '1536x2048',
242
+ landscape: '2048x1536'
243
+ },
244
+ fallback: 'ipad-10-5'
245
+ },
246
+ {
247
+ id: 'ipad-9-7-alt',
248
+ name: 'iPad 9.7" Display (Alternative)',
249
+ displaySize: '9.7"',
250
+ devices: ['iPad', 'iPad 2'],
251
+ resolutions: {
252
+ portrait: '768x1024',
253
+ landscape: '1024x768'
254
+ }
255
+ }
256
+ ];
257
+ export const MAC_PRESETS = [
258
+ {
259
+ id: 'mac-2880',
260
+ name: 'Mac (Retina)',
261
+ displaySize: 'Mac',
262
+ devices: ['MacBook Pro', 'MacBook Air'],
263
+ resolutions: {
264
+ landscape: '2880x1800'
265
+ },
266
+ required: true,
267
+ notes: '16:10 aspect ratio required'
268
+ },
269
+ {
270
+ id: 'mac-2560',
271
+ name: 'Mac (Large)',
272
+ displaySize: 'Mac',
273
+ devices: ['iMac', 'MacBook Pro'],
274
+ resolutions: {
275
+ landscape: '2560x1600'
276
+ },
277
+ required: true,
278
+ notes: '16:10 aspect ratio required'
279
+ },
280
+ {
281
+ id: 'mac-1440',
282
+ name: 'Mac (Medium)',
283
+ displaySize: 'Mac',
284
+ devices: ['MacBook Air'],
285
+ resolutions: {
286
+ landscape: '1440x900'
287
+ },
288
+ notes: '16:10 aspect ratio required'
289
+ },
290
+ {
291
+ id: 'mac-1280',
292
+ name: 'Mac (Standard)',
293
+ displaySize: 'Mac',
294
+ devices: ['MacBook'],
295
+ resolutions: {
296
+ landscape: '1280x800'
297
+ },
298
+ notes: '16:10 aspect ratio required'
299
+ }
300
+ ];
301
+ export const APPLE_TV_PRESETS = [
302
+ {
303
+ id: 'appletv-4k',
304
+ name: 'Apple TV 4K',
305
+ displaySize: 'Apple TV',
306
+ devices: ['Apple TV 4K'],
307
+ resolutions: {
308
+ landscape: '3840x2160'
309
+ },
310
+ required: true
311
+ },
312
+ {
313
+ id: 'appletv-hd',
314
+ name: 'Apple TV HD',
315
+ displaySize: 'Apple TV',
316
+ devices: ['Apple TV HD'],
317
+ resolutions: {
318
+ landscape: '1920x1080'
319
+ },
320
+ required: true
321
+ }
322
+ ];
323
+ export const VISION_PRO_PRESETS = [
324
+ {
325
+ id: 'visionpro',
326
+ name: 'Apple Vision Pro',
327
+ displaySize: 'Apple Vision Pro',
328
+ devices: ['Apple Vision Pro'],
329
+ resolutions: {
330
+ landscape: '3840x2160'
331
+ },
332
+ required: true
333
+ }
334
+ ];
335
+ export const APPLE_WATCH_PRESETS = [
336
+ {
337
+ id: 'watch-ultra',
338
+ name: 'Apple Watch Ultra',
339
+ displaySize: 'Apple Watch',
340
+ devices: ['Apple Watch Ultra 2', 'Apple Watch Ultra'],
341
+ resolutions: {
342
+ portrait: '410x502'
343
+ },
344
+ required: true,
345
+ notes: 'Must use same size across all localizations'
346
+ },
347
+ {
348
+ id: 'watch-series10',
349
+ name: 'Apple Watch Series 10',
350
+ displaySize: 'Apple Watch',
351
+ devices: ['Apple Watch Series 10'],
352
+ resolutions: {
353
+ portrait: '416x496'
354
+ },
355
+ required: true,
356
+ notes: 'Must use same size across all localizations'
357
+ },
358
+ {
359
+ id: 'watch-series9',
360
+ name: 'Apple Watch Series 9/8/7',
361
+ displaySize: 'Apple Watch',
362
+ devices: ['Apple Watch Series 9', 'Apple Watch Series 8', 'Apple Watch Series 7'],
363
+ resolutions: {
364
+ portrait: '396x484'
365
+ },
366
+ required: true,
367
+ notes: 'Must use same size across all localizations'
368
+ },
369
+ {
370
+ id: 'watch-series6',
371
+ name: 'Apple Watch Series 6/5/4/SE',
372
+ displaySize: 'Apple Watch',
373
+ devices: ['Apple Watch Series 6', 'Apple Watch Series 5', 'Apple Watch Series 4', 'Apple Watch SE'],
374
+ resolutions: {
375
+ portrait: '368x448'
376
+ },
377
+ required: true,
378
+ notes: 'Must use same size across all localizations'
379
+ },
380
+ {
381
+ id: 'watch-series3',
382
+ name: 'Apple Watch Series 3',
383
+ displaySize: 'Apple Watch',
384
+ devices: ['Apple Watch Series 3'],
385
+ resolutions: {
386
+ portrait: '312x390'
387
+ },
388
+ notes: 'Must use same size across all localizations'
389
+ }
390
+ ];
391
+ export const ALL_PRESETS = {
392
+ iphone: IPHONE_PRESETS,
393
+ ipad: IPAD_PRESETS,
394
+ mac: MAC_PRESETS,
395
+ appletv: APPLE_TV_PRESETS,
396
+ visionpro: VISION_PRO_PRESETS,
397
+ watch: APPLE_WATCH_PRESETS
398
+ };
399
+ /**
400
+ * Get required presets for App Store submission
401
+ */
402
+ export function getRequiredPresets() {
403
+ return {
404
+ iphone: IPHONE_PRESETS.filter(p => p.required),
405
+ ipad: IPAD_PRESETS.filter(p => p.required),
406
+ mac: MAC_PRESETS.filter(p => p.required),
407
+ appletv: APPLE_TV_PRESETS.filter(p => p.required),
408
+ visionpro: VISION_PRO_PRESETS.filter(p => p.required),
409
+ watch: APPLE_WATCH_PRESETS.filter(p => p.required)
410
+ };
411
+ }
412
+ /**
413
+ * Get preset by ID
414
+ */
415
+ export function getPresetById(id) {
416
+ for (const category of Object.values(ALL_PRESETS)) {
417
+ const preset = category.find(p => p.id === id);
418
+ if (preset)
419
+ return preset;
420
+ }
421
+ return undefined;
422
+ }
423
+ /**
424
+ * Validate if resolution matches App Store requirements
425
+ */
426
+ export function validateResolution(width, height, deviceType) {
427
+ const presets = ALL_PRESETS[deviceType];
428
+ if (!presets)
429
+ return false;
430
+ for (const preset of presets) {
431
+ const portrait = preset.resolutions.portrait?.split('x').map(Number);
432
+ const landscape = preset.resolutions.landscape?.split('x').map(Number);
433
+ if (portrait && portrait[0] === width && portrait[1] === height)
434
+ return true;
435
+ if (landscape && landscape[0] === width && landscape[1] === height)
436
+ return true;
437
+ }
438
+ return false;
439
+ }
440
+ /**
441
+ * Get recommended preset for given resolution
442
+ */
443
+ export function recommendPreset(width, height, deviceType) {
444
+ const presets = ALL_PRESETS[deviceType];
445
+ if (!presets)
446
+ return undefined;
447
+ for (const preset of presets) {
448
+ const portrait = preset.resolutions.portrait?.split('x').map(Number);
449
+ const landscape = preset.resolutions.landscape?.split('x').map(Number);
450
+ if (portrait && portrait[0] === width && portrait[1] === height)
451
+ return preset;
452
+ if (landscape && landscape[0] === width && landscape[1] === height)
453
+ return preset;
454
+ }
455
+ return undefined;
456
+ }
457
+ //# sourceMappingURL=app-store-specs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-store-specs.js","sourceRoot":"","sources":["../../src/core/app-store-specs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { GradientConfig, CaptionConfig, DeviceConfig } from '../types.js';
2
+ export interface ComposeOptions {
3
+ screenshot: Buffer;
4
+ frame?: Buffer | null;
5
+ frameMetadata?: {
6
+ frameWidth: number;
7
+ frameHeight: number;
8
+ screenRect: {
9
+ x: number;
10
+ y: number;
11
+ width: number;
12
+ height: number;
13
+ };
14
+ maskPath?: string;
15
+ deviceType?: 'iphone' | 'ipad' | 'mac' | 'watch';
16
+ displayName?: string;
17
+ name?: string;
18
+ };
19
+ caption?: string;
20
+ captionConfig: CaptionConfig;
21
+ gradientConfig: GradientConfig;
22
+ deviceConfig: DeviceConfig;
23
+ outputWidth: number;
24
+ outputHeight: number;
25
+ }
26
+ /**
27
+ * Compose a complete App Store screenshot with gradient, caption, and framed device
28
+ */
29
+ export declare function composeAppStoreScreenshot(options: ComposeOptions): Promise<Buffer>;
30
+ //# sourceMappingURL=compose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/core/compose.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI/E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA8VxF"}