@extenshi/cli 0.23.1 → 0.24.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/dist/amo-source.d.ts +88 -17
- package/dist/amo-source.d.ts.map +1 -1
- package/dist/amo-source.js +437 -116
- package/dist/amo-source.js.map +1 -1
- package/dist/cli.js +42 -11
- package/dist/cli.js.map +1 -1
- package/dist/compliance-review.d.ts +5 -1
- package/dist/compliance-review.d.ts.map +1 -1
- package/dist/compliance-review.js +10 -5
- package/dist/compliance-review.js.map +1 -1
- package/dist/cws-policies.d.ts.map +1 -1
- package/dist/cws-policies.js +4 -0
- package/dist/cws-policies.js.map +1 -1
- package/dist/listing-checks.d.ts +15 -9
- package/dist/listing-checks.d.ts.map +1 -1
- package/dist/listing-checks.js +54 -46
- package/dist/listing-checks.js.map +1 -1
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -1
- package/dist/listing.js +201 -23
- package/dist/listing.js.map +1 -1
- package/dist/png.d.ts +40 -0
- package/dist/png.d.ts.map +1 -0
- package/dist/png.js +208 -0
- package/dist/png.js.map +1 -0
- package/dist/review-checks.d.ts +48 -13
- package/dist/review-checks.d.ts.map +1 -1
- package/dist/review-checks.js +364 -56
- package/dist/review-checks.js.map +1 -1
- package/dist/review-risk.d.ts +8 -3
- package/dist/review-risk.d.ts.map +1 -1
- package/dist/review-risk.js +14 -4
- package/dist/review-risk.js.map +1 -1
- package/dist/review-stores.d.ts +63 -0
- package/dist/review-stores.d.ts.map +1 -0
- package/dist/review-stores.js +92 -0
- package/dist/review-stores.js.map +1 -0
- package/dist/screenshots-scenes.d.ts +13 -0
- package/dist/screenshots-scenes.d.ts.map +1 -1
- package/dist/screenshots-scenes.js +20 -2
- package/dist/screenshots-scenes.js.map +1 -1
- package/dist/screenshots.d.ts +6 -4
- package/dist/screenshots.d.ts.map +1 -1
- package/dist/screenshots.js +31 -10
- package/dist/screenshots.js.map +1 -1
- package/dist/store-assets.d.ts.map +1 -1
- package/dist/store-assets.js +7 -3
- package/dist/store-assets.js.map +1 -1
- package/package.json +1 -1
package/dist/listing.js
CHANGED
|
@@ -128,6 +128,26 @@ export function listingFromArtifact(manifest, files) {
|
|
|
128
128
|
function asOptionalString(value) {
|
|
129
129
|
return typeof value === 'string' && value.trim() ? value : undefined;
|
|
130
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* A draft's locale tag in the spelling the package uses for the same locale.
|
|
133
|
+
*
|
|
134
|
+
* `_locales` directories are named with an underscore (`pt_BR`, `zh_CN`), while
|
|
135
|
+
* people and store consoles write BCP 47 (`pt-BR`). Without this a `pt-BR`
|
|
136
|
+
* block never meets the package's `pt_BR` name and the report lists the
|
|
137
|
+
* locale twice, half-filled each time.
|
|
138
|
+
*/
|
|
139
|
+
function localeKey(locale) {
|
|
140
|
+
return locale.trim().replace(/-/g, '_');
|
|
141
|
+
}
|
|
142
|
+
/** Field names a draft block may carry — used to tell ignored text apart from unknown keys. */
|
|
143
|
+
const DRAFT_TEXT_KEYS = [
|
|
144
|
+
'name',
|
|
145
|
+
'title',
|
|
146
|
+
'shortDescription',
|
|
147
|
+
'short_description',
|
|
148
|
+
'description',
|
|
149
|
+
'fullDescription',
|
|
150
|
+
];
|
|
131
151
|
/**
|
|
132
152
|
* One locale block of a draft file. Accepts both the store's snake_case field
|
|
133
153
|
* names and the camelCase ones a developer is likelier to type — refusing a
|
|
@@ -138,7 +158,7 @@ function parseLocaleBlock(locale, raw) {
|
|
|
138
158
|
return null;
|
|
139
159
|
const o = raw;
|
|
140
160
|
const entry = {
|
|
141
|
-
locale,
|
|
161
|
+
locale: localeKey(locale),
|
|
142
162
|
name: asOptionalString(o.name) ?? asOptionalString(o.title),
|
|
143
163
|
shortDescription: asOptionalString(o.shortDescription) ?? asOptionalString(o.short_description),
|
|
144
164
|
description: asOptionalString(o.description) ?? asOptionalString(o.fullDescription),
|
|
@@ -153,6 +173,12 @@ function parseLocaleBlock(locale, raw) {
|
|
|
153
173
|
* { "name": "…", "shortDescription": "…", "description": "…" }
|
|
154
174
|
* { "defaultLocale": "en", "locales": { "en": { … }, "ru": { … } } }
|
|
155
175
|
*
|
|
176
|
+
* They do not mix. With `locales` present every locale — the default one
|
|
177
|
+
* included — has to sit inside it, and top-level text is ignored with a
|
|
178
|
+
* warning: applying it to a locale would mean guessing which one the developer
|
|
179
|
+
* meant, and checking the guess would report findings against the wrong
|
|
180
|
+
* translation.
|
|
181
|
+
*
|
|
156
182
|
* Throws on a file that is not an object or that yields no usable text — unlike
|
|
157
183
|
* the artifact path, the developer explicitly pointed at this file, so silence
|
|
158
184
|
* would look like a passing check.
|
|
@@ -165,20 +191,55 @@ export function parseListingFile(raw) {
|
|
|
165
191
|
const declaredDefault = asOptionalString(o.defaultLocale) ?? asOptionalString(o.default_locale);
|
|
166
192
|
const localesRaw = o.locales;
|
|
167
193
|
if (localesRaw && typeof localesRaw === 'object' && !Array.isArray(localesRaw)) {
|
|
194
|
+
const warnings = [];
|
|
195
|
+
const ignored = DRAFT_TEXT_KEYS.filter((key) => asOptionalString(o[key]));
|
|
196
|
+
if (ignored.length > 0) {
|
|
197
|
+
warnings.push(`top-level ${ignored.map((key) => `"${key}"`).join(', ')} ${ignored.length === 1 ? 'is' : 'are'} ignored ` +
|
|
198
|
+
'because the file has "locales" — move that text into its locale block, e.g. "locales": { "en": { … } }');
|
|
199
|
+
}
|
|
168
200
|
const locales = [];
|
|
169
201
|
for (const [locale, block] of Object.entries(localesRaw)) {
|
|
170
202
|
const parsed = parseLocaleBlock(locale, block);
|
|
171
|
-
if (parsed)
|
|
172
|
-
|
|
203
|
+
if (!parsed) {
|
|
204
|
+
// Dropping a block silently is how English vanished on 2026-10-10;
|
|
205
|
+
// say which one went and why.
|
|
206
|
+
warnings.push(block && typeof block === 'object' && !Array.isArray(block)
|
|
207
|
+
? `locale "${locale}" has no name, shortDescription or description; skipped`
|
|
208
|
+
: `locale "${locale}" is not an object like { "name": …, "description": … }; skipped`);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (locales.some((l) => l.locale.toLowerCase() === parsed.locale.toLowerCase())) {
|
|
212
|
+
warnings.push(`locale "${parsed.locale}" appears more than once in "locales"; only the first block is checked`);
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
locales.push(parsed);
|
|
173
216
|
}
|
|
174
217
|
if (locales.length === 0) {
|
|
175
218
|
throw new Error('listing file has a "locales" object but no locale carries any text');
|
|
176
219
|
}
|
|
177
220
|
locales.sort((a, b) => a.locale.localeCompare(b.locale));
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
221
|
+
const declared = declaredDefault ? localeKey(declaredDefault) : undefined;
|
|
222
|
+
// Case-insensitive like every other locale match here; the block's own spelling wins.
|
|
223
|
+
const declaredBlock = declared
|
|
224
|
+
? locales.find((l) => l.locale.toLowerCase() === declared.toLowerCase())
|
|
225
|
+
: undefined;
|
|
226
|
+
if (declared && !declaredBlock) {
|
|
227
|
+
warnings.push(`defaultLocale "${declared}" has no block in "locales"`);
|
|
228
|
+
}
|
|
229
|
+
const listing = { source: 'draft', defaultLocale: locales[0].locale, locales };
|
|
230
|
+
if (declaredBlock) {
|
|
231
|
+
listing.defaultLocale = declaredBlock.locale;
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// No usable declaration: the package's default_locale decides at merge
|
|
235
|
+
// time; standing alone, English is the likelier default than whichever
|
|
236
|
+
// tag sorts first.
|
|
237
|
+
listing.defaultLocale = locales.some((l) => l.locale === 'en') ? 'en' : locales[0].locale;
|
|
238
|
+
listing.defaultLocaleInferred = true;
|
|
239
|
+
}
|
|
240
|
+
if (warnings.length > 0)
|
|
241
|
+
listing.warnings = warnings;
|
|
242
|
+
return listing;
|
|
182
243
|
}
|
|
183
244
|
const flat = parseLocaleBlock(declaredDefault ?? DEFAULT_LOCALE_FALLBACK, o);
|
|
184
245
|
if (!flat) {
|
|
@@ -230,11 +291,14 @@ export function mergeListings(artifact, draft) {
|
|
|
230
291
|
}
|
|
231
292
|
else {
|
|
232
293
|
// A per-locale draft names its language, so it matches by key and wins
|
|
233
|
-
// field by field. It never propagates to a locale it did not name.
|
|
294
|
+
// field by field. It never propagates to a locale it did not name. Keys
|
|
295
|
+
// match case-insensitively (`pt_br` is the package's `pt_BR`), and the
|
|
296
|
+
// package's spelling is kept.
|
|
234
297
|
for (const d of draft.locales) {
|
|
235
|
-
const
|
|
236
|
-
byLocale.
|
|
237
|
-
|
|
298
|
+
const key = [...byLocale.keys()].find((k) => k.toLowerCase() === d.locale.toLowerCase()) ?? d.locale;
|
|
299
|
+
const existing = byLocale.get(key);
|
|
300
|
+
byLocale.set(key, {
|
|
301
|
+
locale: key,
|
|
238
302
|
name: d.name ?? existing?.name,
|
|
239
303
|
shortDescription: d.shortDescription ?? existing?.shortDescription,
|
|
240
304
|
description: d.description ?? existing?.description,
|
|
@@ -242,15 +306,16 @@ export function mergeListings(artifact, draft) {
|
|
|
242
306
|
}
|
|
243
307
|
}
|
|
244
308
|
const locales = [...byLocale.values()].filter(hasText).sort((a, b) => a.locale.localeCompare(b.locale));
|
|
245
|
-
// A flat draft carries no opinion about which locale is default,
|
|
246
|
-
// package's answer stands.
|
|
247
|
-
const preferred = draft.appliesToAllLocales ? artifact.defaultLocale : draft.defaultLocale;
|
|
248
|
-
const
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
309
|
+
// A flat draft carries no opinion about which locale is default, and neither
|
|
310
|
+
// does a per-locale one that never said — so the package's answer stands.
|
|
311
|
+
const preferred = draft.appliesToAllLocales || draft.defaultLocaleInferred ? artifact.defaultLocale : draft.defaultLocale;
|
|
312
|
+
const find = (tag) => locales.find((l) => l.locale.toLowerCase() === tag.toLowerCase())?.locale;
|
|
313
|
+
const defaultLocale = find(preferred) ?? find(artifact.defaultLocale) ?? locales[0]?.locale ?? draft.defaultLocale;
|
|
314
|
+
const merged = { source: draft.source, defaultLocale, locales };
|
|
315
|
+
const warnings = [...(artifact.warnings ?? []), ...(draft.warnings ?? [])];
|
|
316
|
+
if (warnings.length > 0)
|
|
317
|
+
merged.warnings = warnings;
|
|
318
|
+
return merged;
|
|
254
319
|
}
|
|
255
320
|
/**
|
|
256
321
|
* The published catalog listing as an overlay.
|
|
@@ -283,6 +348,109 @@ export function listingFromCatalog(text) {
|
|
|
283
348
|
appliesToAllLocales: true,
|
|
284
349
|
};
|
|
285
350
|
}
|
|
351
|
+
/** `## en`, `## pt-BR (default)` — a locale heading, not a section title like `## Name`. */
|
|
352
|
+
const LOCALE_HEADING_RE = /^##[ \t]+([A-Za-z]{2,3}(?:[-_][A-Za-z0-9]{2,8})*)[ \t]*(\(default\))?[ \t]*$/;
|
|
353
|
+
/** `- **Name:** …` / `**Summary**: …` — one labelled field inside a locale block. */
|
|
354
|
+
const FIELD_LINE_RE = /^[ \t]*(?:[-*+][ \t]+)?\*\*[ \t]*(name|title|summary|short description|description)[ \t]*(?::[ \t]*\*\*|\*\*[ \t]*:)[ \t]*(.*)$/i;
|
|
355
|
+
const FIELD_FOR_LABEL = {
|
|
356
|
+
name: 'name',
|
|
357
|
+
title: 'name',
|
|
358
|
+
summary: 'shortDescription',
|
|
359
|
+
'short description': 'shortDescription',
|
|
360
|
+
description: 'description',
|
|
361
|
+
};
|
|
362
|
+
/**
|
|
363
|
+
* Read a multi-locale listing markdown — the one-file-per-project shape:
|
|
364
|
+
*
|
|
365
|
+
* ## en (default)
|
|
366
|
+
* - **Name:** Tab Sorter
|
|
367
|
+
* - **Summary:** Groups the tabs in your window by site.
|
|
368
|
+
* - **Description:**
|
|
369
|
+
*
|
|
370
|
+
* The full description, as many paragraphs as it takes.
|
|
371
|
+
*
|
|
372
|
+
* ## ru
|
|
373
|
+
* - **Name:** …
|
|
374
|
+
*
|
|
375
|
+
* Name and Summary are one line each; the Description runs to the next locale
|
|
376
|
+
* heading. Anything before the first locale heading (notes, tables) and any
|
|
377
|
+
* `##` section that carries no labelled field is ignored, which is also what
|
|
378
|
+
* keeps a CHROMEWEBSTORE.md — whose headings are field names, not locales —
|
|
379
|
+
* out of this parser.
|
|
380
|
+
*
|
|
381
|
+
* Returns the same object a per-locale `listing.json` holds, plus what was
|
|
382
|
+
* skipped, or `null` when the file has no locale block at all.
|
|
383
|
+
*/
|
|
384
|
+
export function listingDraftFromLocalesMd(md) {
|
|
385
|
+
const blocks = [];
|
|
386
|
+
let current = null;
|
|
387
|
+
for (const line of md.split(/\r?\n/)) {
|
|
388
|
+
const heading = LOCALE_HEADING_RE.exec(line);
|
|
389
|
+
if (heading) {
|
|
390
|
+
// `## EN` is `en`: the language subtag is case-insensitive, the region keeps its spelling.
|
|
391
|
+
current = {
|
|
392
|
+
tag: heading[1].replace(/^[A-Za-z]+/, (lang) => lang.toLowerCase()),
|
|
393
|
+
heading: heading[1],
|
|
394
|
+
isDefault: Boolean(heading[2]),
|
|
395
|
+
lines: [],
|
|
396
|
+
};
|
|
397
|
+
blocks.push(current);
|
|
398
|
+
}
|
|
399
|
+
else if (/^#{1,2}[ \t]/.test(line)) {
|
|
400
|
+
// Any other top-level section ends the locale block it follows.
|
|
401
|
+
current = null;
|
|
402
|
+
}
|
|
403
|
+
else if (current) {
|
|
404
|
+
current.lines.push(line);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
const locales = {};
|
|
408
|
+
const warnings = [];
|
|
409
|
+
let defaultLocale;
|
|
410
|
+
for (const block of blocks) {
|
|
411
|
+
const fields = {};
|
|
412
|
+
let open = null;
|
|
413
|
+
const body = [];
|
|
414
|
+
for (const line of block.lines) {
|
|
415
|
+
// Once the Description has opened it runs to the next heading: a bold
|
|
416
|
+
// `**Name:**` inside its prose is text, not a new field.
|
|
417
|
+
const field = open === 'description' ? null : FIELD_LINE_RE.exec(line);
|
|
418
|
+
if (field) {
|
|
419
|
+
open = FIELD_FOR_LABEL[field[1].toLowerCase()];
|
|
420
|
+
if (open === 'description')
|
|
421
|
+
body.push(field[2]);
|
|
422
|
+
else if (field[2].trim())
|
|
423
|
+
fields[open] = field[2].trim();
|
|
424
|
+
continue;
|
|
425
|
+
}
|
|
426
|
+
if (open === 'description')
|
|
427
|
+
body.push(line);
|
|
428
|
+
}
|
|
429
|
+
const description = body
|
|
430
|
+
.join('\n')
|
|
431
|
+
.replace(/(?:\n[ \t]*(?:-{3,}|\*{3,})[ \t]*)+\s*$/, '')
|
|
432
|
+
.trim();
|
|
433
|
+
if (description)
|
|
434
|
+
fields.description = description;
|
|
435
|
+
if (Object.keys(fields).length === 0) {
|
|
436
|
+
warnings.push(`"## ${block.heading}" has no **Name:**, **Summary:** or **Description:** line; skipped`);
|
|
437
|
+
continue;
|
|
438
|
+
}
|
|
439
|
+
const key = localeKey(block.tag);
|
|
440
|
+
if (Object.keys(locales).some((k) => k.toLowerCase() === key.toLowerCase())) {
|
|
441
|
+
warnings.push(`"## ${block.heading}" appears more than once; only the first block is checked`);
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
locales[key] = fields;
|
|
445
|
+
if (block.isDefault && defaultLocale)
|
|
446
|
+
warnings.push(`"## ${block.heading}" is marked (default) too; the first marked locale (${defaultLocale}) stays default`);
|
|
447
|
+
else if (block.isDefault)
|
|
448
|
+
defaultLocale = key;
|
|
449
|
+
}
|
|
450
|
+
if (Object.keys(locales).length === 0)
|
|
451
|
+
return null;
|
|
452
|
+
return { draft: defaultLocale ? { defaultLocale, locales } : { locales }, warnings };
|
|
453
|
+
}
|
|
286
454
|
/**
|
|
287
455
|
* Assemble the listing to check: the package's localized name/description,
|
|
288
456
|
* overlaid with the draft file when one was passed.
|
|
@@ -304,10 +472,15 @@ export function assembleListing(manifest, files, listingPath, catalog) {
|
|
|
304
472
|
throw new Error(`Listing file not found: ${listingPath}`);
|
|
305
473
|
}
|
|
306
474
|
let parsed;
|
|
475
|
+
const parseWarnings = [];
|
|
307
476
|
const raw = fs.readFileSync(listingPath, 'utf8');
|
|
308
477
|
if (listingPath.toLowerCase().endsWith('.md')) {
|
|
309
|
-
//
|
|
310
|
-
|
|
478
|
+
// Both markdown shapes are the same draft as listing.json: one block per
|
|
479
|
+
// `## <locale>` (LISTINGS.md), or the single-listing CHROMEWEBSTORE.md.
|
|
480
|
+
const perLocale = listingDraftFromLocalesMd(raw);
|
|
481
|
+
if (perLocale)
|
|
482
|
+
parseWarnings.push(...perLocale.warnings);
|
|
483
|
+
parsed = perLocale ? perLocale.draft : listingDraftFromChromeWebStoreMd(raw);
|
|
311
484
|
}
|
|
312
485
|
else {
|
|
313
486
|
try {
|
|
@@ -317,12 +490,17 @@ export function assembleListing(manifest, files, listingPath, catalog) {
|
|
|
317
490
|
throw new Error(`Listing file is not valid JSON: ${err.message}`);
|
|
318
491
|
}
|
|
319
492
|
}
|
|
493
|
+
let draft;
|
|
320
494
|
try {
|
|
321
|
-
|
|
495
|
+
draft = parseListingFile(parsed);
|
|
322
496
|
}
|
|
323
497
|
catch (err) {
|
|
324
498
|
throw new Error(`${listingPath}: ${err.message}`);
|
|
325
499
|
}
|
|
500
|
+
const warnings = [...parseWarnings, ...(draft.warnings ?? [])];
|
|
501
|
+
if (warnings.length > 0)
|
|
502
|
+
draft = { ...draft, warnings: warnings.map((w) => `${listingPath}: ${w}`) };
|
|
503
|
+
listing = mergeListings(fromArtifact, draft);
|
|
326
504
|
}
|
|
327
505
|
// The catalog goes LAST, and that ordering is the whole design.
|
|
328
506
|
//
|
package/dist/listing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listing.js","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listing.js","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"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"}
|
package/dist/png.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PNG output for store artwork and screenshots: 24-bit RGB when every pixel is
|
|
3
|
+
* opaque, RGBA otherwise.
|
|
4
|
+
*
|
|
5
|
+
* resvg and Chromium both write RGBA (colour type 6) even for a fully opaque
|
|
6
|
+
* image, and the Chrome Web Store asks for screenshots and promo tiles as
|
|
7
|
+
* 24-bit PNGs with no alpha. Re-encoding is lossless — the pixels are the same,
|
|
8
|
+
* only the unused alpha byte goes.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately small: 8-bit, non-interlaced, colour types 2 and 6 — exactly
|
|
11
|
+
* what resvg and Chromium produce. Anything else passes through untouched.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Encode raw 8-bit pixels; each row gets the filter with the smallest sum of
|
|
15
|
+
* absolute values. `keep` are whole chunks (colour space, pixel density) copied
|
|
16
|
+
* from a source PNG so the re-encoded image renders the same.
|
|
17
|
+
*/
|
|
18
|
+
export declare function encodePng(data: Uint8Array, width: number, height: number, channels: 3 | 4, keep?: readonly Buffer[]): Buffer;
|
|
19
|
+
export interface DecodedPng {
|
|
20
|
+
width: number;
|
|
21
|
+
height: number;
|
|
22
|
+
/** 3 for RGB, 4 for RGBA. */
|
|
23
|
+
channels: 3 | 4;
|
|
24
|
+
data: Uint8Array;
|
|
25
|
+
/** Colour-space and density chunks, verbatim, for a faithful re-encode. */
|
|
26
|
+
keep: Buffer[];
|
|
27
|
+
}
|
|
28
|
+
/** Decode an 8-bit, non-interlaced RGB or RGBA PNG; null for anything else. */
|
|
29
|
+
export declare function decodePng(png: Uint8Array): DecodedPng | null;
|
|
30
|
+
/** RGBA pixels → an RGB PNG when every pixel is opaque, null when any is not. */
|
|
31
|
+
export declare function rgbPngIfOpaque(rgba: Uint8Array, width: number, height: number, keep?: readonly Buffer[]): Buffer | null;
|
|
32
|
+
/**
|
|
33
|
+
* The same image as a 24-bit PNG when it is fully opaque; the input unchanged
|
|
34
|
+
* when it has transparency, is already RGB, or is a format this module does
|
|
35
|
+
* not read.
|
|
36
|
+
*/
|
|
37
|
+
export declare function opaquePngAsRgb(png: Uint8Array): Buffer;
|
|
38
|
+
/** The PNG colour type from IHDR (2 = RGB, 6 = RGBA). */
|
|
39
|
+
export declare function pngColorType(png: Uint8Array): number;
|
|
40
|
+
//# sourceMappingURL=png.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../src/png.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA0CH;;;;GAIG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,CAAC,GAAG,CAAC,EACf,IAAI,GAAE,SAAS,MAAM,EAAO,GAC1B,MAAM,CAmDR;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,6BAA6B;IAC7B,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,EAAE,CAAA;CACd;AAKD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CA4D5D;AAED,iFAAiF;AACjF,wBAAgB,cAAc,CAC7B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,SAAS,MAAM,EAAO,GAC1B,MAAM,GAAG,IAAI,CASf;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAKtD;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEpD"}
|
package/dist/png.js
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PNG output for store artwork and screenshots: 24-bit RGB when every pixel is
|
|
3
|
+
* opaque, RGBA otherwise.
|
|
4
|
+
*
|
|
5
|
+
* resvg and Chromium both write RGBA (colour type 6) even for a fully opaque
|
|
6
|
+
* image, and the Chrome Web Store asks for screenshots and promo tiles as
|
|
7
|
+
* 24-bit PNGs with no alpha. Re-encoding is lossless — the pixels are the same,
|
|
8
|
+
* only the unused alpha byte goes.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately small: 8-bit, non-interlaced, colour types 2 and 6 — exactly
|
|
11
|
+
* what resvg and Chromium produce. Anything else passes through untouched.
|
|
12
|
+
*/
|
|
13
|
+
import { deflateSync, inflateSync } from 'node:zlib';
|
|
14
|
+
const SIGNATURE = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
|
15
|
+
const COLOR_RGB = 2;
|
|
16
|
+
const COLOR_RGBA = 6;
|
|
17
|
+
const CRC_TABLE = (() => {
|
|
18
|
+
const table = new Uint32Array(256);
|
|
19
|
+
for (let n = 0; n < 256; n++) {
|
|
20
|
+
let c = n;
|
|
21
|
+
for (let k = 0; k < 8; k++)
|
|
22
|
+
c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
|
|
23
|
+
table[n] = c >>> 0;
|
|
24
|
+
}
|
|
25
|
+
return table;
|
|
26
|
+
})();
|
|
27
|
+
// zlib.crc32 needs Node 20.15/22.2; the CLI supports Node 20.0.
|
|
28
|
+
function crc32(buf) {
|
|
29
|
+
let c = 0xffffffff;
|
|
30
|
+
for (const byte of buf)
|
|
31
|
+
c = CRC_TABLE[(c ^ byte) & 0xff] ^ (c >>> 8);
|
|
32
|
+
return (c ^ 0xffffffff) >>> 0;
|
|
33
|
+
}
|
|
34
|
+
function chunk(type, data) {
|
|
35
|
+
const head = Buffer.alloc(8);
|
|
36
|
+
head.writeUInt32BE(data.length, 0);
|
|
37
|
+
head.write(type, 4, 'ascii');
|
|
38
|
+
const crc = Buffer.alloc(4);
|
|
39
|
+
crc.writeUInt32BE(crc32(Buffer.concat([head.subarray(4), data])), 0);
|
|
40
|
+
return Buffer.concat([head, data, crc]);
|
|
41
|
+
}
|
|
42
|
+
function paeth(a, b, c) {
|
|
43
|
+
const p = a + b - c;
|
|
44
|
+
const pa = Math.abs(p - a);
|
|
45
|
+
const pb = Math.abs(p - b);
|
|
46
|
+
const pc = Math.abs(p - c);
|
|
47
|
+
return pa <= pb && pa <= pc ? a : pb <= pc ? b : c;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Encode raw 8-bit pixels; each row gets the filter with the smallest sum of
|
|
51
|
+
* absolute values. `keep` are whole chunks (colour space, pixel density) copied
|
|
52
|
+
* from a source PNG so the re-encoded image renders the same.
|
|
53
|
+
*/
|
|
54
|
+
export function encodePng(data, width, height, channels, keep = []) {
|
|
55
|
+
const stride = width * channels;
|
|
56
|
+
const out = Buffer.alloc((stride + 1) * height);
|
|
57
|
+
const candidate = Buffer.alloc(stride);
|
|
58
|
+
const best = Buffer.alloc(stride);
|
|
59
|
+
for (let y = 0; y < height; y++) {
|
|
60
|
+
const row = y * stride;
|
|
61
|
+
let bestType = 0;
|
|
62
|
+
let bestScore = Number.POSITIVE_INFINITY;
|
|
63
|
+
for (let type = 0; type <= 4; type++) {
|
|
64
|
+
let score = 0;
|
|
65
|
+
for (let i = 0; i < stride; i++) {
|
|
66
|
+
const x = data[row + i];
|
|
67
|
+
const a = i >= channels ? data[row + i - channels] : 0;
|
|
68
|
+
const b = y > 0 ? data[row - stride + i] : 0;
|
|
69
|
+
const c = y > 0 && i >= channels ? data[row - stride + i - channels] : 0;
|
|
70
|
+
const v = type === 0
|
|
71
|
+
? x
|
|
72
|
+
: type === 1
|
|
73
|
+
? x - a
|
|
74
|
+
: type === 2
|
|
75
|
+
? x - b
|
|
76
|
+
: type === 3
|
|
77
|
+
? x - ((a + b) >> 1)
|
|
78
|
+
: x - paeth(a, b, c);
|
|
79
|
+
const byte = v & 0xff;
|
|
80
|
+
candidate[i] = byte;
|
|
81
|
+
score += byte < 128 ? byte : 256 - byte;
|
|
82
|
+
}
|
|
83
|
+
if (score < bestScore) {
|
|
84
|
+
bestScore = score;
|
|
85
|
+
bestType = type;
|
|
86
|
+
candidate.copy(best);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
out[y * (stride + 1)] = bestType;
|
|
90
|
+
best.copy(out, y * (stride + 1) + 1);
|
|
91
|
+
}
|
|
92
|
+
const ihdr = Buffer.alloc(13);
|
|
93
|
+
ihdr.writeUInt32BE(width, 0);
|
|
94
|
+
ihdr.writeUInt32BE(height, 4);
|
|
95
|
+
ihdr[8] = 8;
|
|
96
|
+
ihdr[9] = channels === 3 ? COLOR_RGB : COLOR_RGBA;
|
|
97
|
+
return Buffer.concat([
|
|
98
|
+
SIGNATURE,
|
|
99
|
+
chunk('IHDR', ihdr),
|
|
100
|
+
...keep,
|
|
101
|
+
chunk('IDAT', deflateSync(out, { level: 9 })),
|
|
102
|
+
chunk('IEND', Buffer.alloc(0)),
|
|
103
|
+
]);
|
|
104
|
+
}
|
|
105
|
+
/** Ancillary chunks that change how the pixels are displayed — carried over on re-encode. */
|
|
106
|
+
const KEPT_CHUNKS = new Set(['sRGB', 'iCCP', 'gAMA', 'cHRM', 'pHYs']);
|
|
107
|
+
/** Decode an 8-bit, non-interlaced RGB or RGBA PNG; null for anything else. */
|
|
108
|
+
export function decodePng(png) {
|
|
109
|
+
const b = Buffer.from(png.buffer, png.byteOffset, png.byteLength);
|
|
110
|
+
if (b.length < 33 || !b.subarray(0, 8).equals(SIGNATURE))
|
|
111
|
+
return null;
|
|
112
|
+
let width = 0;
|
|
113
|
+
let height = 0;
|
|
114
|
+
let channels = 0;
|
|
115
|
+
const idat = [];
|
|
116
|
+
const keep = [];
|
|
117
|
+
for (let at = 8; at + 8 <= b.length;) {
|
|
118
|
+
const length = b.readUInt32BE(at);
|
|
119
|
+
const type = b.toString('ascii', at + 4, at + 8);
|
|
120
|
+
const data = b.subarray(at + 8, at + 8 + length);
|
|
121
|
+
if (type === 'IHDR') {
|
|
122
|
+
// A truncated IHDR would make the reads below throw; null keeps the pass-through contract.
|
|
123
|
+
if (data.length < 13)
|
|
124
|
+
return null;
|
|
125
|
+
width = data.readUInt32BE(0);
|
|
126
|
+
height = data.readUInt32BE(4);
|
|
127
|
+
const [depth, color, , , interlace] = data.subarray(8, 13);
|
|
128
|
+
if (depth !== 8 || interlace !== 0 || (color !== COLOR_RGB && color !== COLOR_RGBA))
|
|
129
|
+
return null;
|
|
130
|
+
channels = color === COLOR_RGB ? 3 : 4;
|
|
131
|
+
}
|
|
132
|
+
else if (type === 'IDAT')
|
|
133
|
+
idat.push(data);
|
|
134
|
+
else if (type === 'IEND')
|
|
135
|
+
break;
|
|
136
|
+
else if (KEPT_CHUNKS.has(type))
|
|
137
|
+
keep.push(Buffer.from(b.subarray(at, at + 12 + length)));
|
|
138
|
+
at += 12 + length;
|
|
139
|
+
}
|
|
140
|
+
if (!channels || !width || !height || idat.length === 0)
|
|
141
|
+
return null;
|
|
142
|
+
let raw;
|
|
143
|
+
try {
|
|
144
|
+
raw = inflateSync(Buffer.concat(idat));
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// Truncated or corrupt pixel data: not a PNG this module can read, so the
|
|
148
|
+
// caller passes the original through instead of failing the run.
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
const stride = width * channels;
|
|
152
|
+
if (raw.length < (stride + 1) * height)
|
|
153
|
+
return null;
|
|
154
|
+
const pixels = new Uint8Array(stride * height);
|
|
155
|
+
for (let y = 0; y < height; y++) {
|
|
156
|
+
const type = raw[y * (stride + 1)];
|
|
157
|
+
if (type > 4)
|
|
158
|
+
return null;
|
|
159
|
+
const src = y * (stride + 1) + 1;
|
|
160
|
+
const row = y * stride;
|
|
161
|
+
for (let i = 0; i < stride; i++) {
|
|
162
|
+
const a = i >= channels ? pixels[row + i - channels] : 0;
|
|
163
|
+
const up = y > 0 ? pixels[row - stride + i] : 0;
|
|
164
|
+
const c = y > 0 && i >= channels ? pixels[row - stride + i - channels] : 0;
|
|
165
|
+
const x = raw[src + i];
|
|
166
|
+
pixels[row + i] =
|
|
167
|
+
(type === 0
|
|
168
|
+
? x
|
|
169
|
+
: type === 1
|
|
170
|
+
? x + a
|
|
171
|
+
: type === 2
|
|
172
|
+
? x + up
|
|
173
|
+
: type === 3
|
|
174
|
+
? x + ((a + up) >> 1)
|
|
175
|
+
: x + paeth(a, up, c)) & 0xff;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return { width, height, channels, data: pixels, keep };
|
|
179
|
+
}
|
|
180
|
+
/** RGBA pixels → an RGB PNG when every pixel is opaque, null when any is not. */
|
|
181
|
+
export function rgbPngIfOpaque(rgba, width, height, keep = []) {
|
|
182
|
+
const rgb = new Uint8Array(width * height * 3);
|
|
183
|
+
for (let p = 0, q = 0; p < rgba.length; p += 4, q += 3) {
|
|
184
|
+
if (rgba[p + 3] !== 255)
|
|
185
|
+
return null;
|
|
186
|
+
rgb[q] = rgba[p];
|
|
187
|
+
rgb[q + 1] = rgba[p + 1];
|
|
188
|
+
rgb[q + 2] = rgba[p + 2];
|
|
189
|
+
}
|
|
190
|
+
return encodePng(rgb, width, height, 3, keep);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The same image as a 24-bit PNG when it is fully opaque; the input unchanged
|
|
194
|
+
* when it has transparency, is already RGB, or is a format this module does
|
|
195
|
+
* not read.
|
|
196
|
+
*/
|
|
197
|
+
export function opaquePngAsRgb(png) {
|
|
198
|
+
const decoded = decodePng(png);
|
|
199
|
+
const original = Buffer.from(png.buffer, png.byteOffset, png.byteLength);
|
|
200
|
+
if (!decoded || decoded.channels === 3)
|
|
201
|
+
return original;
|
|
202
|
+
return rgbPngIfOpaque(decoded.data, decoded.width, decoded.height, decoded.keep) ?? original;
|
|
203
|
+
}
|
|
204
|
+
/** The PNG colour type from IHDR (2 = RGB, 6 = RGBA). */
|
|
205
|
+
export function pngColorType(png) {
|
|
206
|
+
return Buffer.from(png.buffer, png.byteOffset, png.byteLength)[25];
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=png.js.map
|
package/dist/png.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png.js","sourceRoot":"","sources":["../src/png.ts"],"names":[],"mappings":"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"}
|