@extenshi/cli 0.23.0 → 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.
Files changed (64) hide show
  1. package/dist/amo-source.d.ts +88 -17
  2. package/dist/amo-source.d.ts.map +1 -1
  3. package/dist/amo-source.js +437 -116
  4. package/dist/amo-source.js.map +1 -1
  5. package/dist/cli.js +44 -13
  6. package/dist/cli.js.map +1 -1
  7. package/dist/compliance-review.d.ts +5 -1
  8. package/dist/compliance-review.d.ts.map +1 -1
  9. package/dist/compliance-review.js +10 -5
  10. package/dist/compliance-review.js.map +1 -1
  11. package/dist/cws-policies.d.ts.map +1 -1
  12. package/dist/cws-policies.js +4 -0
  13. package/dist/cws-policies.js.map +1 -1
  14. package/dist/listing-checks.d.ts +15 -9
  15. package/dist/listing-checks.d.ts.map +1 -1
  16. package/dist/listing-checks.js +54 -46
  17. package/dist/listing-checks.js.map +1 -1
  18. package/dist/listing.d.ts +48 -0
  19. package/dist/listing.d.ts.map +1 -1
  20. package/dist/listing.js +201 -23
  21. package/dist/listing.js.map +1 -1
  22. package/dist/pay-contract.d.ts +3 -3
  23. package/dist/pay-contract.d.ts.map +1 -1
  24. package/dist/pay-contract.js +2 -1
  25. package/dist/pay-contract.js.map +1 -1
  26. package/dist/pay-test-cycle.d.ts.map +1 -1
  27. package/dist/pay-test-cycle.js +6 -1
  28. package/dist/pay-test-cycle.js.map +1 -1
  29. package/dist/png.d.ts +40 -0
  30. package/dist/png.d.ts.map +1 -0
  31. package/dist/png.js +208 -0
  32. package/dist/png.js.map +1 -0
  33. package/dist/review-checks.d.ts +48 -13
  34. package/dist/review-checks.d.ts.map +1 -1
  35. package/dist/review-checks.js +364 -56
  36. package/dist/review-checks.js.map +1 -1
  37. package/dist/review-risk.d.ts +8 -3
  38. package/dist/review-risk.d.ts.map +1 -1
  39. package/dist/review-risk.js +14 -4
  40. package/dist/review-risk.js.map +1 -1
  41. package/dist/review-stores.d.ts +63 -0
  42. package/dist/review-stores.d.ts.map +1 -0
  43. package/dist/review-stores.js +92 -0
  44. package/dist/review-stores.js.map +1 -0
  45. package/dist/scan.d.ts +8 -11
  46. package/dist/scan.d.ts.map +1 -1
  47. package/dist/scan.js +8 -11
  48. package/dist/scan.js.map +1 -1
  49. package/dist/screenshots-scenes.d.ts +13 -0
  50. package/dist/screenshots-scenes.d.ts.map +1 -1
  51. package/dist/screenshots-scenes.js +20 -2
  52. package/dist/screenshots-scenes.js.map +1 -1
  53. package/dist/screenshots.d.ts +6 -4
  54. package/dist/screenshots.d.ts.map +1 -1
  55. package/dist/screenshots.js +31 -10
  56. package/dist/screenshots.js.map +1 -1
  57. package/dist/store-assets.d.ts.map +1 -1
  58. package/dist/store-assets.js +7 -3
  59. package/dist/store-assets.js.map +1 -1
  60. package/dist/telemetry.d.ts +7 -0
  61. package/dist/telemetry.d.ts.map +1 -1
  62. package/dist/telemetry.js +8 -0
  63. package/dist/telemetry.js.map +1 -1
  64. package/package.json +1 -1
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../src/png.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,20 @@
14
14
  * Chrome for Developers documentation so the user can verify the rule at the
15
15
  * source. (We do not cite third-party books in product output.)
16
16
  *
17
+ * The suite predicts ONE store's review per run (`store`, default Chrome Web
18
+ * Store). Findings that describe a store's review process — the in-depth review
19
+ * of broad host access, re-review on listing edits, the Privacy practices form —
20
+ * exist only for the store whose documentation describes them; see
21
+ * review-stores.ts for the wording that differs.
22
+ *
17
23
  * This module is PURE (no I/O) so the rules are unit-testable against fixtures.
18
24
  * Archive extraction lives in review-archive.ts; the network manifest fetch in
19
25
  * review-catalog.ts; rendering in review-render.ts. The store-listing rules
20
26
  * live in listing-checks.ts and are orchestrated from `runChecks` here so a
21
27
  * caller gets one findings list regardless of which surface produced it.
22
28
  */
23
- import type { Listing } from './listing.js';
29
+ import { type Listing } from './listing.js';
30
+ import { type ReviewStore } from './review-stores.js';
24
31
  export type Verdict = 'REJECTED' | 'SLOW' | 'ATTRITION';
25
32
  export interface ReviewFinding {
26
33
  /** The real-world consequence — drives the label shown to the user. */
@@ -44,7 +51,9 @@ export interface ReviewFinding {
44
51
  * rather than written into each rule, so one check id cannot end up
45
52
  * attributed to two policies. `null` marks a finding about the review
46
53
  * PROCESS rather than a rule (see the registry); absent means the check id
47
- * is unregistered, which the policy test treats as a bug.
54
+ * is unregistered, which the policy test treats as a bug — or that the run
55
+ * is for Edge or Firefox, where a Chrome Web Store policy would be the wrong
56
+ * attribution (the finding's `citation` names that store's rule instead).
48
57
  */
49
58
  policy?: {
50
59
  id: string;
@@ -114,6 +123,7 @@ export interface Manifest {
114
123
  /** A text file pulled out of the artifact: package-relative path → contents. */
115
124
  export type FileMap = Map<string, string>;
116
125
  export declare const PERMISSION_WARNINGS: Readonly<Record<string, string>>;
126
+ export declare const FIREFOX_PERMISSION_MESSAGES: Readonly<Record<string, string>>;
117
127
  export declare function isGlobalHost(value: string): boolean;
118
128
  /**
119
129
  * Required API permissions only (host patterns stripped out). In MV2 hosts and
@@ -131,27 +141,46 @@ export declare function normalizePath(p: string): string;
131
141
  * eval get the extension rejected.
132
142
  */
133
143
  export declare function htmlEntrypoints(m: Manifest): string[];
134
- export declare function checkSlowReviewQueue(m: Manifest): ReviewFinding[];
144
+ /**
145
+ * Chrome Web Store only. Its review-process page says reviews "may take longer
146
+ * for extensions that request broad host permissions". Edge certifies every
147
+ * submission the same way (up to 7 business days) and AMO publishes after
148
+ * automated checks; neither documents a longer path for broad host access, so
149
+ * this finding would be invented there.
150
+ */
151
+ export declare function checkSlowReviewQueue(m: Manifest, store?: ReviewStore): ReviewFinding[];
135
152
  /**
136
153
  * Static advisory — there is nothing in the package to inspect; it's a
137
154
  * publishing-process fact developers routinely get burned by. Emitted once.
155
+ *
156
+ * Per store, because the process differs: Edge restarts certification for a
157
+ * metadata-only update too, and AMO documents nothing about listing-only edits
158
+ * (so nothing is said there).
138
159
  */
139
- export declare function checkListingChangeReReview(): ReviewFinding[];
160
+ export declare function checkListingChangeReReview(store?: ReviewStore): ReviewFinding[];
140
161
  /**
141
162
  * Diff the local manifest against the last-published one. A newly-added
142
- * *required* permission that shows a warning silently disables the extension for
143
- * the whole installed base on update (only a small toolbar icon appears) →
144
- * silent attrition. Newly-added permissions of any kind also re-trip the slow
145
- * review queue (ch.10).
163
+ * *required* permission that prompts costs the installed base on update →
164
+ * attrition. How depends on the browser: Chromium (Chrome, Edge) silently
165
+ * disables the extension until the user re-accepts (only a small toolbar icon
166
+ * appears); Firefox keeps users on the previous version until they approve, and
167
+ * installs an MV3 update without the host access it adds (see
168
+ * FIREFOX_PERMISSION_MESSAGES). On the Chrome Web Store, newly-added permissions
169
+ * of any kind also re-trip the slow review queue (ch.10).
146
170
  *
147
171
  * `prior` is the manifest fetched from the catalog's last snapshot; pass null
148
172
  * when it could not be fetched (the caller surfaces why and this returns []).
149
173
  */
150
- export declare function checkAutoDisableOnUpdate(local: Manifest, prior: Manifest | null): ReviewFinding[];
174
+ export declare function checkAutoDisableOnUpdate(local: Manifest, prior: Manifest | null, store?: ReviewStore): ReviewFinding[];
151
175
  export declare function checkRemoteCode(files: FileMap): ReviewFinding[];
152
176
  export declare function checkHtmlCsp(m: Manifest, files: FileMap): ReviewFinding[];
153
177
  export declare function checkServiceWorker(m: Manifest, files: FileMap): ReviewFinding[];
154
- export declare function checkActiveTabAdvisor(m: Manifest): ReviewFinding[];
178
+ /**
179
+ * Chrome Web Store only: the advice holds everywhere, but the verdict it is
180
+ * filed under — skipping the slow review queue — is a Chrome Web Store process
181
+ * fact (see `checkSlowReviewQueue`).
182
+ */
183
+ export declare function checkActiveTabAdvisor(m: Manifest, store?: ReviewStore): ReviewFinding[];
155
184
  export declare const OFFLINE_CHECKED_PERMISSIONS: readonly string[];
156
185
  export declare function checkUnusedPermissions(m: Manifest, files: FileMap): ReviewFinding[];
157
186
  /**
@@ -160,7 +189,7 @@ export declare function checkUnusedPermissions(m: Manifest, files: FileMap): Rev
160
189
  * Optional permissions count: the declaration covers what the extension can
161
190
  * request, and an optional permission ships in the package and is grantable.
162
191
  */
163
- export declare function checkPrivacyDisclosure(manifest: Manifest): ReviewFinding[];
192
+ export declare function checkPrivacyDisclosure(manifest: Manifest, store?: ReviewStore): ReviewFinding[];
164
193
  /**
165
194
  * Privacy-practices rows for CHROMEWEBSTORE.md, from the same mapping
166
195
  * `checkPrivacyDisclosure` uses. One row per (permission, data type) so a
@@ -171,6 +200,7 @@ export declare function privacyPracticesForManifest(manifest: Manifest): {
171
200
  dataType: string;
172
201
  permission: string;
173
202
  }[];
203
+ export declare function checkManifestFieldLengths(manifest: Manifest, files: FileMap, store?: ReviewStore): ReviewFinding[];
174
204
  export interface ReviewInputs {
175
205
  manifest: Manifest;
176
206
  files: FileMap;
@@ -182,6 +212,8 @@ export interface ReviewInputs {
182
212
  * and, when given, `--listing`.
183
213
  */
184
214
  listing?: Listing | null;
215
+ /** The store whose review this run predicts (default Chrome Web Store). */
216
+ store?: ReviewStore;
185
217
  }
186
218
  export declare function runChecks(input: ReviewInputs): ReviewFinding[];
187
219
  /**
@@ -206,13 +238,16 @@ export declare function runChecks(input: ReviewInputs): ReviewFinding[];
206
238
  * ever reuses an id across the two sets breaks that, and would make `scan` and
207
239
  * `review-risk` disagree on counts.
208
240
  */
209
- export declare function runListingOnlyChecks(listing: Listing | null): ReviewFinding[];
241
+ export declare function runListingOnlyChecks(listing: Listing | null, store?: ReviewStore): ReviewFinding[];
210
242
  /**
211
243
  * Ruleset version stamped on a persisted `review_risk` prediction.
212
244
  * Bump when a check is added, removed, or its verdict changes — otherwise
213
245
  * iteration 4 averages incompatible rules into one precision number.
246
+ *
247
+ * '2' (2026-10-10): `global-host-permissions` also reads content_scripts
248
+ * matches, and `manifest-field-length` is new.
214
249
  */
215
- export declare const REVIEW_RISK_RULES_VERSION = "1";
250
+ export declare const REVIEW_RISK_RULES_VERSION = "2";
216
251
  export interface ReviewSummary {
217
252
  findings: ReviewFinding[];
218
253
  counts: Record<Verdict, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"review-checks.d.ts","sourceRoot":"","sources":["../src/review-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-checks.d.ts","sourceRoot":"","sources":["../src/review-checks.ts"],"names":[],"mappings":"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"}