@extenshi/cli 0.17.0 → 0.19.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 +52 -0
- package/dist/cli.js +71 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -1
- package/dist/config.js.map +1 -1
- package/dist/cws-policies.d.ts.map +1 -1
- package/dist/cws-policies.js +1 -0
- package/dist/cws-policies.js.map +1 -1
- package/dist/extension-localization.d.ts +20 -0
- package/dist/extension-localization.d.ts.map +1 -0
- package/dist/extension-localization.js +94 -0
- package/dist/extension-localization.js.map +1 -0
- package/dist/generate-listing.d.ts +31 -0
- package/dist/generate-listing.d.ts.map +1 -0
- package/dist/generate-listing.js +145 -0
- package/dist/generate-listing.js.map +1 -0
- package/dist/listing-checks.d.ts +9 -1
- package/dist/listing-checks.d.ts.map +1 -1
- package/dist/listing-checks.js +89 -1
- package/dist/listing-checks.js.map +1 -1
- package/dist/localize-init.d.ts +9 -0
- package/dist/localize-init.d.ts.map +1 -0
- package/dist/localize-init.js +166 -0
- package/dist/localize-init.js.map +1 -0
- package/dist/localize.d.ts +27 -0
- package/dist/localize.d.ts.map +1 -0
- package/dist/localize.js +292 -0
- package/dist/localize.js.map +1 -0
- package/dist/permission-justifications.d.ts +39 -0
- package/dist/permission-justifications.d.ts.map +1 -0
- package/dist/permission-justifications.js +145 -0
- package/dist/permission-justifications.js.map +1 -0
- package/dist/project-workspace.d.ts +1976 -0
- package/dist/project-workspace.d.ts.map +1 -0
- package/dist/project-workspace.js +350 -0
- package/dist/project-workspace.js.map +1 -0
- package/dist/project.d.ts +17 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.js +671 -0
- package/dist/project.js.map +1 -0
- package/dist/review-checks.d.ts +10 -0
- package/dist/review-checks.d.ts.map +1 -1
- package/dist/review-checks.js +24 -0
- package/dist/review-checks.js.map +1 -1
- package/package.json +7 -6
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# @extenshi/cli
|
|
2
|
+
|
|
3
|
+
See the [CLI documentation](https://extenshi.io/cli) for scanning, project setup and publishing.
|
|
4
|
+
|
|
5
|
+
## Localizing an extension
|
|
6
|
+
|
|
7
|
+
For an unpacked extension with literal English manifest text, `localize init ./extension --output ./extension-localized` creates a new copy with localized manifest fields. The output must be new and outside the input, with an existing parent directory. HTML and JavaScript are preserved and listed for manual work in `LOCALIZATION-REPORT.md`; ZIP extraction and automatic UI rewriting are not included.
|
|
8
|
+
|
|
9
|
+
The free `localize` workflow operates on an **unpacked, internationalized extension directory**. It requires `manifest.json` with `default_locale` and `_locales/<default_locale>/messages.json`. It prepares requests for your own translator or coding agent; it does not call a translation service. The normal CLI telemetry preference still applies.
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
extenshi localize prepare ./extension --lang fr,de,es --output ./translation-request
|
|
13
|
+
# Translate messages in translation-request/localization-request.json.
|
|
14
|
+
# Review every requested message and add "reviewed": true to each locale object.
|
|
15
|
+
extenshi localize apply ./extension --translations ./translation-request/localization-request.json
|
|
16
|
+
extenshi localize check ./extension
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Optional `localization.json` in the extension root:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"version": 1,
|
|
24
|
+
"sourceLocale": "en",
|
|
25
|
+
"targetLocales": ["fr", "de", "es"],
|
|
26
|
+
"protectedTerms": ["Acme"]
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
With this configuration, `--lang` is optional. All three commands accept `--protect Acme,Product` to add exact terms that must remain when they occur in the original message. Prepared requests include the configured terms. Configure durable terms in `localization.json`, or repeat `--protect` when applying/checking.
|
|
31
|
+
|
|
32
|
+
A reviewed request has this shape (the actual source hashes come from `prepare`):
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"version": 1,
|
|
37
|
+
"sourceLocale": "en",
|
|
38
|
+
"locales": {
|
|
39
|
+
"fr": {
|
|
40
|
+
"reviewed": true,
|
|
41
|
+
"sourceHashes": { "greeting": "sha256-from-prepare" },
|
|
42
|
+
"messages": { "greeting": { "message": "Bonjour" } }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Only missing, untracked, source-changed or target-edited keys appear in the request. A locale may also include `removeKeys` for keys deleted from the source; review these removals before setting `reviewed: true`. Apply removes them from the target catalog and tracking state, and refuses removal if the key has returned in the source. Existing translations remain intact when other keys are applied. `.extenshi-localization.json` records source and reviewed target hashes only after successful apply; keep it in source control. Direct target edits require another review. Older source-only state also requires re-review before `check` passes. An unchanged second prepare contains no locale requests. Use a fresh output directory each time: prepare refuses to overwrite translator work.
|
|
49
|
+
|
|
50
|
+
Apply requires a reviewed bundle and rejects unknown keys, empty messages, changed placeholders, changed positional substitutions or dollar escapes, missing protected terms, stale source hashes, invalid locale paths and symlinked workspace files. It validates all requested locales before writing and checks localized manifest lengths plus new findings from the existing listing risk rules against the default locale. Manifest checks resolve case-insensitive message names, static named placeholders and dollar escapes before measuring visible text. Manifest strings that require runtime positional arguments are rejected; use static content there. Checks are heuristic and cannot certify translation accuracy or store acceptance. Complete translations are required for each applied locale; sparse browser fallback catalogs need their missing keys translated first.
|
|
51
|
+
|
|
52
|
+
`check` prints JSON and exits with status 1 for missing, stale, unreviewed or invalid translations, including target locales configured but not created. This workflow covers extension message catalogs, including localized manifest text. Full store descriptions and screenshots need separate localization. RTL text is accepted for supported locales, but visual direction, overflow and interaction need testing in the target browser.
|
package/dist/cli.js
CHANGED
|
@@ -35,10 +35,14 @@ import { program } from 'commander';
|
|
|
35
35
|
import { checkAutoUpdate } from './auto-update.js';
|
|
36
36
|
import { CONFIG_PATH, loadConfig, readTelemetryPreference, saveConfig, saveTelemetryPreference, } from './config.js';
|
|
37
37
|
import { isExpectedError } from './expected-error.js';
|
|
38
|
+
import { runGenerateListing } from './generate-listing.js';
|
|
38
39
|
import { runIconPreview } from './icon.js';
|
|
40
|
+
import { applyLocalization, checkLocalization, prepareLocalization } from './localize.js';
|
|
41
|
+
import { initializeLocalization } from './localize-init.js';
|
|
39
42
|
import { makeLoginBff } from './login-bff.js';
|
|
40
43
|
import { runBrowserLogin } from './login-flow.js';
|
|
41
44
|
import { openBrowser, openLoopback, sleep } from './login-runtime.js';
|
|
45
|
+
import { registerProjectCommands } from './project.js';
|
|
42
46
|
import { runPublish } from './publish.js';
|
|
43
47
|
import { runReviewRisk } from './review-risk.js';
|
|
44
48
|
import { parseRefs, parseStore, runRisk } from './risk.js';
|
|
@@ -96,6 +100,7 @@ async function runCommand(command, action) {
|
|
|
96
100
|
process.exit(1);
|
|
97
101
|
}
|
|
98
102
|
}
|
|
103
|
+
registerProjectCommands(program);
|
|
99
104
|
program
|
|
100
105
|
.name('extenshi')
|
|
101
106
|
.description('Pre-publish security scanner for browser extensions')
|
|
@@ -264,6 +269,72 @@ program
|
|
|
264
269
|
});
|
|
265
270
|
});
|
|
266
271
|
});
|
|
272
|
+
const localize = program
|
|
273
|
+
.command('localize')
|
|
274
|
+
.description('Prepare, validate and apply extension message translations locally');
|
|
275
|
+
localize
|
|
276
|
+
.command('init <directory>')
|
|
277
|
+
.description('Copy an English extension to a new directory and localize literal manifest fields; HTML/JS stay unchanged')
|
|
278
|
+
.requiredOption('--output <directory>', 'New output directory outside the source directory')
|
|
279
|
+
.action(async (directory, opts) => {
|
|
280
|
+
await runCommand('localize-init', async () => {
|
|
281
|
+
console.log(JSON.stringify(initializeLocalization(directory, opts.output), null, 2));
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
localize
|
|
285
|
+
.command('prepare <directory>')
|
|
286
|
+
.option('--lang <locales>', 'Comma-separated target locales; defaults to localization.json')
|
|
287
|
+
.requiredOption('--output <directory>', 'Directory for a new localization-request.json')
|
|
288
|
+
.option('--protect <terms>', 'Comma-separated terms to preserve verbatim')
|
|
289
|
+
.action(async (directory, opts) => {
|
|
290
|
+
await runCommand('localize-prepare', async () => {
|
|
291
|
+
const result = prepareLocalization(directory, opts);
|
|
292
|
+
console.log(JSON.stringify({
|
|
293
|
+
output: `${opts.output}/localization-request.json`,
|
|
294
|
+
locales: Object.keys(result.locales),
|
|
295
|
+
keys: Object.values(result.locales).reduce((sum, item) => sum + Object.keys(item.messages).length, 0),
|
|
296
|
+
}));
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
localize
|
|
300
|
+
.command('apply <directory>')
|
|
301
|
+
.requiredOption('--translations <file>', 'Reviewed translation request JSON')
|
|
302
|
+
.option('--protect <terms>', 'Comma-separated terms to preserve verbatim')
|
|
303
|
+
.action(async (directory, opts) => {
|
|
304
|
+
await runCommand('localize-apply', async () => {
|
|
305
|
+
console.log(JSON.stringify(applyLocalization(directory, JSON.parse(await readFile(opts.translations, 'utf8')), opts.protect)));
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
localize
|
|
309
|
+
.command('check <directory>')
|
|
310
|
+
.option('--protect <terms>', 'Comma-separated terms to preserve verbatim')
|
|
311
|
+
.action(async (directory, opts) => {
|
|
312
|
+
await runCommand('localize-check', async () => {
|
|
313
|
+
const result = checkLocalization(directory, opts.protect);
|
|
314
|
+
console.log(JSON.stringify(result, null, 2));
|
|
315
|
+
if (result.errors.length)
|
|
316
|
+
process.exitCode = 1;
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
program
|
|
320
|
+
.command('generate-listing <artifact>')
|
|
321
|
+
.description('Generate CHROMEWEBSTORE.md from a packaged (.zip/.crx/.xpi) or unpacked extension: ' +
|
|
322
|
+
'listing copy, permission justifications, single purpose and privacy-practices questions. ' +
|
|
323
|
+
'Assembles the existing justification and privacy-disclosure checklists — does not write ' +
|
|
324
|
+
'anything into Chrome Web Store. The file is the same listing draft `review-risk --listing` accepts.')
|
|
325
|
+
.option('--output <path>', 'Where to write the markdown (default: CHROMEWEBSTORE.md in the current directory)')
|
|
326
|
+
.option('--listing <file>', 'JSON file with your store listing text (name / shortDescription / description). ' +
|
|
327
|
+
'Overlays the package so the generated markdown can include the full dashboard description.')
|
|
328
|
+
.action(async (artifact, opts) => {
|
|
329
|
+
await runCommand('generate-listing', async () => {
|
|
330
|
+
await checkAutoUpdate();
|
|
331
|
+
await runGenerateListing({
|
|
332
|
+
artifactPath: artifact,
|
|
333
|
+
outputPath: opts.output,
|
|
334
|
+
listingPath: opts.listing,
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
});
|
|
267
338
|
program
|
|
268
339
|
.command('risk [store-ids...]')
|
|
269
340
|
.description('Look up the safety score for extensions you already have, by their STORE ids (the id in the ' +
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,eAAO,MAAM,UAAU,QAAuC,CAAA;AAC9D,eAAO,MAAM,WAAW,QAAuC,CAAA;AAE/D,UAAU,UAAU;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAuCD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,IAAI,CAY5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,GAAG,SAAS,CAG7D;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA2BrD;AAED,wBAAsB,UAAU,CAC/B,SAAS,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAcpE"}
|
package/dist/config.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* 4. Config file ~/.extenshi/config.json
|
|
9
9
|
* 5. Hardcoded defaults
|
|
10
10
|
*/
|
|
11
|
+
import { randomUUID } from 'node:crypto';
|
|
11
12
|
import fs from 'node:fs';
|
|
12
13
|
import os from 'node:os';
|
|
13
14
|
import path from 'node:path';
|
|
@@ -103,7 +104,22 @@ export function saveConfig(update) {
|
|
|
103
104
|
if (update.telemetry !== undefined)
|
|
104
105
|
merged.telemetry = update.telemetry;
|
|
105
106
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
106
|
-
|
|
107
|
+
// A reader sees either the old credentials or the complete new file.
|
|
108
|
+
const temporary = `${CONFIG_PATH}.${randomUUID()}.tmp`;
|
|
109
|
+
try {
|
|
110
|
+
const fd = fs.openSync(temporary, 'wx', 0o600);
|
|
111
|
+
try {
|
|
112
|
+
fs.writeFileSync(fd, `${JSON.stringify(merged, null, 2)}\n`);
|
|
113
|
+
fs.fsyncSync(fd);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
fs.closeSync(fd);
|
|
117
|
+
}
|
|
118
|
+
fs.renameSync(temporary, CONFIG_PATH);
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
fs.rmSync(temporary, { force: true });
|
|
122
|
+
}
|
|
107
123
|
return CONFIG_PATH;
|
|
108
124
|
}
|
|
109
125
|
export async function loadConfig(cliApiUrl) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cws-policies.d.ts","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,SAAS;IACzB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAA;CACX;AAMD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaqB,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAA;AAEpD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAAgC,CAAA;
|
|
1
|
+
{"version":3,"file":"cws-policies.d.ts","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,MAAM,WAAW,SAAS;IACzB,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAA;CACX;AAMD;;;;;GAKG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;CAaqB,CAAA;AAE9C,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,YAAY,CAAA;AAEpD,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAAgC,CAAA;AAsDjF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAU1E;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAiC,CAAA;AAEnF,uEAAuE;AACvE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAAqC,CAAA"}
|
package/dist/cws-policies.js
CHANGED
|
@@ -75,6 +75,7 @@ const POLICY_BY_CHECK = {
|
|
|
75
75
|
'listing-testimonial-block': CWS_POLICIES.LISTING_REQUIREMENTS,
|
|
76
76
|
'listing-impossible-claim': CWS_POLICIES.UNEXPECTED_BEHAVIOR,
|
|
77
77
|
'listing-unverifiable-superlative': CWS_POLICIES.UNEXPECTED_BEHAVIOR,
|
|
78
|
+
'listing-gambling-content': CWS_POLICIES.SPAM_AND_ABUSE,
|
|
78
79
|
// ── Privacy disclosure (iteration 2) ──────────────────────────────────────
|
|
79
80
|
// The checklist is about what the dashboard will make you declare, and the
|
|
80
81
|
// privacy-policy requirement is the half with teeth, so it maps to PRIVACY
|
package/dist/cws-policies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cws-policies.js","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,GAAG,6DAA6D,CAAA;AAWjF,SAAS,MAAM,CAAC,EAAU,EAAE,KAAa;IACxC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,WAAW,IAAI,EAAE,EAAE,EAAE,CAAA;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC3B,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC5E,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;IACvF,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC1D,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;IACjG,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAC/E,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC;IACxD,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,+BAA+B,CAAC;IAC7E,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;IAC9D,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxE,WAAW,EAAE,MAAM,CAAC,aAAa,EAAE,aAAa,CAAC;IACjD,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,EAAE,0BAA0B,CAAC;CAC3C,CAAA;AAI9C,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAyB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAEjF;;;;;;;;GAQG;AACH,MAAM,eAAe,GAA+C;IACnE,8EAA8E;IAC9E,yBAAyB,EAAE,YAAY,CAAC,WAAW;IACnD,mBAAmB,EAAE,YAAY,CAAC,WAAW;IAC7C,kBAAkB,EAAE,YAAY,CAAC,WAAW;IAC5C,6BAA6B,EAAE,YAAY,CAAC,WAAW;IACvD,uBAAuB,EAAE,YAAY,CAAC,WAAW;IACjD,yBAAyB,EAAE,YAAY,CAAC,WAAW;IACnD,eAAe,EAAE,YAAY,CAAC,gBAAgB;IAC9C,sBAAsB,EAAE,YAAY,CAAC,gBAAgB;IACrD,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;IAC/C,IAAI,EAAE,YAAY,CAAC,gBAAgB;IACnC,oBAAoB,EAAE,YAAY,CAAC,gBAAgB;IAEnD,8EAA8E;IAC9E,qBAAqB,EAAE,YAAY,CAAC,oBAAoB;IACxD,4BAA4B,EAAE,YAAY,CAAC,oBAAoB;IAC/D,sBAAsB,EAAE,YAAY,CAAC,oBAAoB;IACzD,uBAAuB,EAAE,YAAY,CAAC,oBAAoB;IAC1D,2BAA2B,EAAE,YAAY,CAAC,oBAAoB;IAC9D,0BAA0B,EAAE,YAAY,CAAC,mBAAmB;IAC5D,kCAAkC,EAAE,YAAY,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"cws-policies.js","sourceRoot":"","sources":["../src/cws-policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Pure extension message validation; mirrored in the standalone CLI with a parity test. */
|
|
2
|
+
export interface ExtensionMessage {
|
|
3
|
+
message: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
placeholders?: Record<string, {
|
|
6
|
+
content: string;
|
|
7
|
+
example?: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export type MessageCatalog = Record<string, ExtensionMessage>;
|
|
11
|
+
/** Chrome Web Store locale registry: https://developer.chrome.com/docs/extensions/reference/api/i18n#locales */
|
|
12
|
+
export declare const EXTENSION_LOCALES: readonly string[];
|
|
13
|
+
export declare function canonicalSerialize(value: unknown): string;
|
|
14
|
+
export declare function validateMessageCatalog(source: unknown, target: unknown, options?: {
|
|
15
|
+
protectedTerms?: string[];
|
|
16
|
+
allowMissing?: boolean;
|
|
17
|
+
}): string[];
|
|
18
|
+
/** Preview only: never call this a translation or publish it as a target locale. */
|
|
19
|
+
export declare function pseudoLocalizeCatalog(source: MessageCatalog): MessageCatalog;
|
|
20
|
+
//# sourceMappingURL=extension-localization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-localization.d.ts","sourceRoot":"","sources":["../src/extension-localization.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACpE;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;AAC7D,gHAAgH;AAChH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAG7C,CAAA;AACF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQzD;AAiDD,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,OAAO,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACjE,MAAM,EAAE,CA8BV;AACD,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAO5E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/** Chrome Web Store locale registry: https://developer.chrome.com/docs/extensions/reference/api/i18n#locales */
|
|
2
|
+
export const EXTENSION_LOCALES = 'ar am bg bn ca cs da de el en en_AU en_GB en_US es es_419 et fa fi fil fr gu he hi hr hu id it ja kn ko lt lv ml mr ms nl no pl pt_BR pt_PT ro ru sk sl sr sv sw ta te th tr uk vi zh_CN zh_TW'.split(' ');
|
|
3
|
+
export function canonicalSerialize(value) {
|
|
4
|
+
if (Array.isArray(value))
|
|
5
|
+
return `[${value.map(canonicalSerialize).join(',')}]`;
|
|
6
|
+
if (value && typeof value === 'object')
|
|
7
|
+
return `{${Object.keys(value)
|
|
8
|
+
.sort()
|
|
9
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalSerialize(value[key])}`)
|
|
10
|
+
.join(',')}}`;
|
|
11
|
+
return JSON.stringify(value) ?? 'null';
|
|
12
|
+
}
|
|
13
|
+
function record(value) {
|
|
14
|
+
return !!value && typeof value === 'object' && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
function tokens(message) {
|
|
17
|
+
return (message.match(/\${2,}|\$[A-Za-z0-9_]+\$|\$[1-9]|\$/g) ?? [])
|
|
18
|
+
.map((token) => token.toLowerCase())
|
|
19
|
+
.sort();
|
|
20
|
+
}
|
|
21
|
+
function inspect(value, label) {
|
|
22
|
+
if (!record(value))
|
|
23
|
+
return [`${label}: expected a messages object`];
|
|
24
|
+
const errors = [];
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
27
|
+
if (!/^[A-Za-z0-9_]+$/.test(key) ||
|
|
28
|
+
['__proto__', 'constructor', 'prototype'].includes(key) ||
|
|
29
|
+
seen.has(key.toLowerCase()))
|
|
30
|
+
errors.push(`${label}.${key}: invalid or duplicate message key`);
|
|
31
|
+
seen.add(key.toLowerCase());
|
|
32
|
+
if (!record(entry) || typeof entry.message !== 'string' || !entry.message.trim()) {
|
|
33
|
+
errors.push(`${label}.${key}: non-empty message required`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (entry.description !== undefined && typeof entry.description !== 'string')
|
|
37
|
+
errors.push(`${label}.${key}: invalid description`);
|
|
38
|
+
if (entry.placeholders !== undefined && !record(entry.placeholders)) {
|
|
39
|
+
errors.push(`${label}.${key}: invalid placeholders`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const placeholders = (entry.placeholders ?? {});
|
|
43
|
+
const names = new Set();
|
|
44
|
+
for (const [name, placeholder] of Object.entries(placeholders)) {
|
|
45
|
+
if (!/^[A-Za-z0-9_]+$/.test(name) ||
|
|
46
|
+
names.has(name.toLowerCase()) ||
|
|
47
|
+
!record(placeholder) ||
|
|
48
|
+
typeof placeholder.content !== 'string')
|
|
49
|
+
errors.push(`${label}.${key}: invalid placeholder ${name}`);
|
|
50
|
+
names.add(name.toLowerCase());
|
|
51
|
+
}
|
|
52
|
+
for (const token of tokens(entry.message))
|
|
53
|
+
if (/^\$[a-z0-9_]+\$$/.test(token) && !names.has(token.slice(1, -1)))
|
|
54
|
+
errors.push(`${label}.${key}: undefined placeholder ${token}`);
|
|
55
|
+
}
|
|
56
|
+
return errors;
|
|
57
|
+
}
|
|
58
|
+
export function validateMessageCatalog(source, target, options = {}) {
|
|
59
|
+
const errors = [...inspect(source, 'source'), ...inspect(target, 'target')];
|
|
60
|
+
if (errors.length)
|
|
61
|
+
return errors;
|
|
62
|
+
const original = source;
|
|
63
|
+
const translated = target;
|
|
64
|
+
for (const key of Object.keys(translated))
|
|
65
|
+
if (!Object.hasOwn(original, key))
|
|
66
|
+
errors.push(`${key}: unknown message key`);
|
|
67
|
+
for (const [key, entry] of Object.entries(original)) {
|
|
68
|
+
const next = translated[key];
|
|
69
|
+
if (!next) {
|
|
70
|
+
if (!options.allowMissing)
|
|
71
|
+
errors.push(`${key}: missing translation`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (canonicalSerialize(tokens(entry.message)) !== canonicalSerialize(tokens(next.message)))
|
|
75
|
+
errors.push(`${key}: placeholders or dollar escapes changed`);
|
|
76
|
+
const contents = (item) => Object.fromEntries(Object.entries(item.placeholders ?? {}).map(([name, value]) => [name.toLowerCase(), value.content]));
|
|
77
|
+
if (canonicalSerialize(contents(entry)) !== canonicalSerialize(contents(next)))
|
|
78
|
+
errors.push(`${key}: placeholder content changed`);
|
|
79
|
+
for (const term of options.protectedTerms ?? [])
|
|
80
|
+
if (term &&
|
|
81
|
+
entry.message.replace(/\${2,}/g, (run) => run.slice(1)).includes(term) &&
|
|
82
|
+
!next.message.replace(/\${2,}/g, (run) => run.slice(1)).includes(term))
|
|
83
|
+
errors.push(`${key}: protected term "${term}" changed`);
|
|
84
|
+
}
|
|
85
|
+
return errors;
|
|
86
|
+
}
|
|
87
|
+
/** Preview only: never call this a translation or publish it as a target locale. */
|
|
88
|
+
export function pseudoLocalizeCatalog(source) {
|
|
89
|
+
return Object.fromEntries(Object.entries(source).map(([key, entry]) => [
|
|
90
|
+
key,
|
|
91
|
+
{ ...entry, message: `[!! ${entry.message} ${'~'.repeat(Math.ceil(entry.message.length * 0.3))} !!]` },
|
|
92
|
+
]));
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=extension-localization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-localization.js","sourceRoot":"","sources":["../src/extension-localization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `extenshi generate-listing <artifact>` — write CHROMEWEBSTORE.md from a live
|
|
3
|
+
* package (ROADMAP it.2 T11).
|
|
4
|
+
*
|
|
5
|
+
* Pure transform: listing text (manifest + optional `--listing`) + the
|
|
6
|
+
* justification checklist (it.1 T6) + the privacy-disclosure checklist (it.2 T5)
|
|
7
|
+
* → markdown. The CLI only loads the artifact and writes the file. It does NOT
|
|
8
|
+
* write listing / Privacy / visibility into Chrome Web Store.
|
|
9
|
+
*
|
|
10
|
+
* `review-risk --listing CHROMEWEBSTORE.md` is the consumer — same draft as
|
|
11
|
+
* listing.json, no third format.
|
|
12
|
+
*/
|
|
13
|
+
import { type FileMap, type Manifest } from './review-checks.js';
|
|
14
|
+
export interface GenerateListingInput {
|
|
15
|
+
manifest: Manifest;
|
|
16
|
+
files: FileMap;
|
|
17
|
+
listingPath?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Assemble CHROMEWEBSTORE.md from an already-loaded package. No I/O except
|
|
21
|
+
* reading `--listing` through `assembleListing` when a path is passed.
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateChromeWebStoreMdFromPackage(input: GenerateListingInput): string;
|
|
24
|
+
export interface GenerateListingOptions {
|
|
25
|
+
artifactPath: string;
|
|
26
|
+
/** Where to write the markdown. Default: `CHROMEWEBSTORE.md` in cwd. */
|
|
27
|
+
outputPath?: string;
|
|
28
|
+
listingPath?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function runGenerateListing(opts: GenerateListingOptions): Promise<string>;
|
|
31
|
+
//# sourceMappingURL=generate-listing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-listing.d.ts","sourceRoot":"","sources":["../src/generate-listing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAA+B,MAAM,oBAAoB,CAAA;AAQ7F,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,QAAQ,CAAA;IAClB,KAAK,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAcvF;AAED,MAAM,WAAW,sBAAsB;IACtC,YAAY,EAAE,MAAM,CAAA;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBtF"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `extenshi generate-listing <artifact>` — write CHROMEWEBSTORE.md from a live
|
|
3
|
+
* package (ROADMAP it.2 T11).
|
|
4
|
+
*
|
|
5
|
+
* Pure transform: listing text (manifest + optional `--listing`) + the
|
|
6
|
+
* justification checklist (it.1 T6) + the privacy-disclosure checklist (it.2 T5)
|
|
7
|
+
* → markdown. The CLI only loads the artifact and writes the file. It does NOT
|
|
8
|
+
* write listing / Privacy / visibility into Chrome Web Store.
|
|
9
|
+
*
|
|
10
|
+
* `review-risk --listing CHROMEWEBSTORE.md` is the consumer — same draft as
|
|
11
|
+
* listing.json, no third format.
|
|
12
|
+
*/
|
|
13
|
+
import fs from 'node:fs';
|
|
14
|
+
import path from 'node:path';
|
|
15
|
+
import { CHROMEWEBSTORE_FILENAME, renderChromeWebStoreMd } from './chromewebstore-md.js';
|
|
16
|
+
import { assembleListing } from './listing.js';
|
|
17
|
+
import { buildJustificationChecklist } from './permission-justifications.js';
|
|
18
|
+
import { loadArtifact } from './review-archive.js';
|
|
19
|
+
import { privacyPracticesForManifest } from './review-checks.js';
|
|
20
|
+
const MAX_SIZE = 50 * 1024 * 1024;
|
|
21
|
+
const MAX_ENTRY_BYTES = 4 * 1024 * 1024;
|
|
22
|
+
const MAX_TOTAL_BYTES = 40 * 1024 * 1024;
|
|
23
|
+
const TEXT_ENTRY_RE = /\.(?:m?js|cjs|html?|json)$/i;
|
|
24
|
+
const SKIP_DIRS = new Set(['node_modules', '.git', '.yarn']);
|
|
25
|
+
/**
|
|
26
|
+
* Assemble CHROMEWEBSTORE.md from an already-loaded package. No I/O except
|
|
27
|
+
* reading `--listing` through `assembleListing` when a path is passed.
|
|
28
|
+
*/
|
|
29
|
+
export function generateChromeWebStoreMdFromPackage(input) {
|
|
30
|
+
const listing = assembleListing(input.manifest, input.files, input.listingPath);
|
|
31
|
+
const justifications = buildJustificationChecklist(input.manifest).map((row) => ({
|
|
32
|
+
permission: row.permission,
|
|
33
|
+
prompt: `${row.question}\n\nExample: ${row.example}`,
|
|
34
|
+
}));
|
|
35
|
+
const privacy = privacyPracticesForManifest(input.manifest);
|
|
36
|
+
const loc = listing?.locales.find((l) => l.locale === listing.defaultLocale) ?? listing?.locales[0];
|
|
37
|
+
return renderChromeWebStoreMd({
|
|
38
|
+
listing,
|
|
39
|
+
justifications,
|
|
40
|
+
privacy,
|
|
41
|
+
singlePurpose: loc?.shortDescription ?? loc?.name ?? '',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export async function runGenerateListing(opts) {
|
|
45
|
+
if (!fs.existsSync(opts.artifactPath)) {
|
|
46
|
+
throw new Error(`Artifact file not found: ${opts.artifactPath}`);
|
|
47
|
+
}
|
|
48
|
+
const { manifest, files } = await loadPackage(opts.artifactPath);
|
|
49
|
+
const markdown = generateChromeWebStoreMdFromPackage({
|
|
50
|
+
manifest,
|
|
51
|
+
files,
|
|
52
|
+
listingPath: opts.listingPath,
|
|
53
|
+
});
|
|
54
|
+
const outputPath = path.resolve(opts.outputPath ?? CHROMEWEBSTORE_FILENAME);
|
|
55
|
+
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
56
|
+
fs.writeFileSync(outputPath, markdown, 'utf8');
|
|
57
|
+
process.stdout.write(`Wrote ${outputPath}\n` +
|
|
58
|
+
'This is the same listing draft `review-risk --listing` accepts. ' +
|
|
59
|
+
'Fill the Chrome Web Store dashboard by hand — the CLI does not write to the store.\n');
|
|
60
|
+
return outputPath;
|
|
61
|
+
}
|
|
62
|
+
async function loadPackage(artifactPath) {
|
|
63
|
+
const stats = fs.statSync(artifactPath);
|
|
64
|
+
if (stats.isDirectory()) {
|
|
65
|
+
return loadUnpacked(artifactPath);
|
|
66
|
+
}
|
|
67
|
+
if (!stats.isFile()) {
|
|
68
|
+
throw new Error(`Artifact path is not a file: ${artifactPath}`);
|
|
69
|
+
}
|
|
70
|
+
if (stats.size > MAX_SIZE) {
|
|
71
|
+
throw new Error(`Artifact exceeds 50 MB limit (${(stats.size / 1024 / 1024).toFixed(1)} MB)`);
|
|
72
|
+
}
|
|
73
|
+
const loaded = await loadArtifact(fs.readFileSync(artifactPath));
|
|
74
|
+
return { manifest: loaded.manifest, files: loaded.files };
|
|
75
|
+
}
|
|
76
|
+
function loadUnpacked(root) {
|
|
77
|
+
const manifestPath = findManifestFile(root);
|
|
78
|
+
if (!manifestPath) {
|
|
79
|
+
throw new Error('No manifest.json found in the artifact — is this a packaged extension (.zip/.crx/.xpi) or an unpacked extension folder?');
|
|
80
|
+
}
|
|
81
|
+
let manifest;
|
|
82
|
+
try {
|
|
83
|
+
manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
throw new Error(`manifest.json is not valid JSON: ${err.message}`);
|
|
87
|
+
}
|
|
88
|
+
const packageRoot = path.dirname(manifestPath);
|
|
89
|
+
const files = new Map();
|
|
90
|
+
let totalBytes = 0;
|
|
91
|
+
const walk = (dir) => {
|
|
92
|
+
if (totalBytes >= MAX_TOTAL_BYTES)
|
|
93
|
+
return;
|
|
94
|
+
for (const ent of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
95
|
+
if (SKIP_DIRS.has(ent.name))
|
|
96
|
+
continue;
|
|
97
|
+
const full = path.join(dir, ent.name);
|
|
98
|
+
if (ent.isDirectory()) {
|
|
99
|
+
walk(full);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (!TEXT_ENTRY_RE.test(ent.name))
|
|
103
|
+
continue;
|
|
104
|
+
const size = fs.statSync(full).size;
|
|
105
|
+
if (size > MAX_ENTRY_BYTES)
|
|
106
|
+
continue;
|
|
107
|
+
if (totalBytes + size > MAX_TOTAL_BYTES)
|
|
108
|
+
return;
|
|
109
|
+
const text = fs.readFileSync(full, 'utf8');
|
|
110
|
+
if (text.length > MAX_ENTRY_BYTES)
|
|
111
|
+
continue;
|
|
112
|
+
totalBytes += text.length;
|
|
113
|
+
files.set(path.relative(packageRoot, full).split(path.sep).join('/'), text);
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
walk(packageRoot);
|
|
117
|
+
return { manifest, files };
|
|
118
|
+
}
|
|
119
|
+
function findManifestFile(root) {
|
|
120
|
+
const direct = path.join(root, 'manifest.json');
|
|
121
|
+
if (fs.existsSync(direct) && fs.statSync(direct).isFile())
|
|
122
|
+
return direct;
|
|
123
|
+
const stack = [root];
|
|
124
|
+
while (stack.length > 0) {
|
|
125
|
+
const dir = stack.pop();
|
|
126
|
+
let entries;
|
|
127
|
+
try {
|
|
128
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
for (const ent of entries) {
|
|
134
|
+
if (SKIP_DIRS.has(ent.name))
|
|
135
|
+
continue;
|
|
136
|
+
const full = path.join(dir, ent.name);
|
|
137
|
+
if (ent.isDirectory())
|
|
138
|
+
stack.push(full);
|
|
139
|
+
else if (ent.isFile() && ent.name === 'manifest.json')
|
|
140
|
+
return full;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=generate-listing.js.map
|