webstore-lint 1.0.27 → 1.0.29

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 CHANGED
@@ -347,6 +347,11 @@ file tree.
347
347
 
348
348
  ## If you have been rejected, or warned
349
349
 
350
+ **[See a worked $149 resubmission pack](https://github.com/Circadian-agent/chrome-extension-rejection-lint/tree/main/examples/resubmission-pack).**
351
+ A fictional extension, before-and-after manifests, permission justifications and
352
+ privacy-practices guidance. Every code reference can be checked in the example.
353
+
354
+
350
355
  The linter is free and always will be, and it tells you what is wrong. Writing
351
356
  the way back through review is a separate job, and it is the paid one: a
352
357
  **resubmission pack, 149 USD once**. It is the text the Web Store dashboard makes
@@ -131,7 +131,10 @@ if (flags.has("--permissions")) {
131
131
  const { audit: a, root, manifestError } = auditPermissions(target);
132
132
  if (manifestError) { console.error(manifestError); process.exit(1); }
133
133
 
134
- if (flags.has("--json")) { console.log(JSON.stringify(a, null, 2)); process.exit(0); }
134
+ if (flags.has("--json")) {
135
+ await new Promise((resolve) => process.stdout.write(JSON.stringify(a, null, 2) + "\n", resolve));
136
+ process.exit(0);
137
+ }
135
138
 
136
139
  const cite = POLICY.categories["excessive-permissions"];
137
140
  console.log(`\nwebstore-lint permission ledger ${root}`);
@@ -173,6 +176,9 @@ if (flags.has("--permissions")) {
173
176
  for (const m of a.confidence.minified) console.log(` minified, so call sites are unreliable: ${m.file} (longest line ${m.longestLine} chars)`);
174
177
  for (const s of a.confidence.skipped) console.log(` not read: ${s.path} (${s.why})`);
175
178
  console.log("");
179
+ // Drain the text report before exiting too. A slow pipe can otherwise lose
180
+ // the minified/skipped warnings needed to interpret the permission evidence.
181
+ await new Promise((resolve) => process.stdout.write("", resolve));
176
182
  process.exit(0);
177
183
  }
178
184
 
@@ -322,6 +328,9 @@ if (fail) {
322
328
  console.log("that notice is typically 7 to 30 days before the extension is taken down. The pack");
323
329
  console.log("is delivered in two business days, which fits inside the shortest of those windows.");
324
330
  console.log("https://circadian-agent.com/webstore-lint");
331
+ // A worked pack for a fictional extension, so the reader can see what 149 USD
332
+ // buys before paying. Added item 473.
333
+ console.log("Worked example: https://github.com/Circadian-agent/chrome-extension-rejection-lint/tree/main/examples/resubmission-pack");
325
334
  }
326
335
  console.log("");
327
336
  // Same trap, same reason: the human report is also large on a real extension
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webstore-lint",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "description": "Check an unpacked Chrome extension against the Chrome Web Store program policies before you submit it. Every finding cites Google's own notification ID and verbatim policy text. Covers the 1 August 2026 policy updates.",
5
5
  "keywords": [
6
6
  "chrome-extension",
@@ -38,7 +38,7 @@
38
38
  "node": ">=18"
39
39
  },
40
40
  "scripts": {
41
- "test": "node test/lint.test.mjs && node test/action.test.mjs"
41
+ "test": "node test/lint.test.mjs && node test/action.test.mjs && node --test test/permissions-output.test.mjs"
42
42
  },
43
43
  "repository": {
44
44
  "type": "git",