feat: normalize browser hostnames consistently

This commit is contained in:
2026-07-12 17:15:35 +08:00
parent d8bd1d1828
commit e67a7e4ff7
8 changed files with 146 additions and 8 deletions
+2 -1
View File
@@ -51,6 +51,7 @@ const chromiumDist = path.join(dist, 'chromium');
mkdir(chromiumDist);
copy(path.join(root, 'chromium', 'manifest.json'), path.join(chromiumDist, 'manifest.json'));
concat([
path.join(shared, 'hostname.js'),
path.join(shared, 'protocol.js'),
path.join(shared, 'api.js'),
path.join(shared, 'queue.js'),
@@ -64,7 +65,7 @@ copyLocalization(chromiumDist);
const firefoxDist = path.join(dist, 'firefox');
mkdir(firefoxDist);
copy(path.join(root, 'firefox', 'manifest.json'), path.join(firefoxDist, 'manifest.json'));
for (const name of ['protocol.js', 'api.js', 'queue.js', 'i18n.js', 'background.js']) {
for (const name of ['hostname.js', 'protocol.js', 'api.js', 'queue.js', 'i18n.js', 'background.js']) {
copy(path.join(shared, name), path.join(firefoxDist, name));
}
copyPopup(firefoxDist);
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env node
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const hostname = require('../shared/hostname');
const vectors = JSON.parse(fs.readFileSync(path.join(__dirname, '../shared/hostname-normalization-v1.json'), 'utf8'));
for (const vector of vectors.bare) {
assert.equal(hostname.normalizeHostnameV1(vector.input), vector.output, vector.input);
}
for (const vector of vectors.url) {
assert.equal(hostname.normalizeURLHostnameV1(vector.input), vector.output, vector.input);
}
console.log('browser hostname normalization tests passed');
+1
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env node
const assert = require('assert');
require('../shared/hostname');
const protocol = require('../shared/protocol');
require('../shared/api');
const queueApi = require('../shared/queue');