Skip to content

Commit cd2c15c

Browse files
Oleg Labudkoartemiv4nov
Oleg Labudko
authored andcommitted
Pull request #84: AG-15105 Wrong counting of rules in Safari 16
Merge in ADGUARD-IOS/safari-converter from fix/AG-15105 to master * commit '2388e9847e0531bf700424dc685a74f98c994bba': added safari version to error message and updated readme refactored api and fixed tests fixed safari version handling in converter api
2 parents 4d0a35e + 2388e98 commit cd2c15c

File tree

4 files changed

+14
-16
lines changed

4 files changed

+14
-16
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ The result contains following properties:
4646
```
4747
ConverterTool [--safari-version <safari-version>] [--optimize <optimize>] [--advanced-blocking <advanced-blocking>] [--advanced-blocking-format <advanced-blocking-format>] [<rules>]
4848
```
49+
#### Please note that minimal supported Safari version is 13
4950
e.g.
5051
```
5152
cat rules.txt | ./ConverterTool --safari-version 13 --optimize false --advanced-blocking true --advanced-blocking-format txt

node-safari-converter/index.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
const { jsonFromRules, getConverterVersion, safariVersions } = require('./src/api');
1+
const { jsonFromRules, getConverterVersion } = require('./src/api');
22

33
module.exports = (function () {
44
return {
55
jsonFromRules,
66
getConverterVersion,
7-
safariVersions,
87
};
98
})();

node-safari-converter/src/api.js

+6-11
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@ const { version } = require('../../package.json');
44

55
const CONVERTER_TOOL_PATH = path.resolve(__dirname, '../../bin/ConverterTool');
66

7-
module.exports = (function () {
8-
const safariVersions = Object.freeze({
9-
safari11: 11,
10-
safari12: 12,
11-
safari13: 13,
12-
safari14: 14,
13-
safari15: 15,
14-
});
7+
const MINIMAL_SUPPORTED_SAFARI_VERSION = 13;
158

9+
module.exports = (function () {
1610
/**
1711
* Runs shell script
1812
*
@@ -54,11 +48,13 @@ module.exports = (function () {
5448
* @param converterToolPath - optional path to converter resolved by Electron
5549
*/
5650
const jsonFromRules = async (rules, advancedBlocking, safariVersion, converterToolPath) => {
57-
let currentSafariVersion = Object.values(safariVersions).includes(safariVersion) ? safariVersion : safariVersions.safari13;
51+
if (!Number.isInteger(safariVersion) || safariVersion < MINIMAL_SUPPORTED_SAFARI_VERSION) {
52+
throw new Error(`The provided Safari version is not supported: ${safariVersion}`);
53+
}
5854

5955
return new Promise((resolve, reject) => {
6056
const child = runScript(converterToolPath || CONVERTER_TOOL_PATH, [
61-
`--safari-version=${currentSafariVersion}`,
57+
`--safari-version=${safariVersion}`,
6258
'--optimize=false',
6359
`--advanced-blocking=${advancedBlocking}`,
6460
], (code, stdout, stderr) => {
@@ -91,6 +87,5 @@ module.exports = (function () {
9187
return {
9288
jsonFromRules,
9389
getConverterVersion,
94-
safariVersions,
9590
};
9691
})();

node-safari-converter/test/api.test.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
const { jsonFromRules, getConverterVersion, safariVersions } = require('../index');
22
const pJson = require('../../package.json');
33

4+
const SAFARI_VERSION_12 = 12;
5+
const SAFARI_VERSION_14 = 14;
6+
47
describe('API test', () => {
58
it('jsonFromRules test', async () => {
69
const rules = ['example.com##.ads-banner', '||test.com^$image'];
7-
const result = await jsonFromRules(rules, false, safariVersions.safari14);
10+
const result = await jsonFromRules(rules, false, SAFARI_VERSION_14);
811
const converted = JSON.parse(result.converted);
912

1013
expect(converted[0].trigger['if-domain']).toStrictEqual(['*example.com']);
@@ -18,8 +21,8 @@ describe('API test', () => {
1821
it('Unsupported Safari version test', async () => {
1922
const rules = ['example.com##.ads-banner'];
2023

21-
await expect(jsonFromRules(rules, false, safariVersions.safari12))
22-
.rejects.toThrow('Error: The provided Safari version is not supported');
24+
await expect(jsonFromRules(rules, false, SAFARI_VERSION_12))
25+
.rejects.toThrow('The provided Safari version is not supported');
2326
});
2427

2528
it('getConverterVersion test', () => {

0 commit comments

Comments
 (0)