@filteringdev/namulink 17.4.3 → 17.4.4
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 +4 -4
- package/dist/NamuLink.user.js +2 -2
- package/dist/interface.js +76 -0
- package/dist/interface.js.map +7 -0
- package/dist/types/esbuild.inject.d.ts +1 -0
- package/dist/types/interface.d.ts +1 -0
- package/dist/types/src/index.d.ts +1 -0
- package/package.json +16 -7
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## NamuLink
|
|
2
2
|
|
|
3
|
-
[](https://www.jsdelivr.com/package/npm/@filteringdev/namulink)
|
|
4
4
|
|
|
5
5
|
NamuLink 유저스크립트는 나무위키의 고급 난독화 시스템 (커스텀 Base64 인코더/디코더 및 [RC4 스트림 암호화](https://en.wikipedia.org/wiki/RC4))를 역이용하거나 프론트엔드 구성 도중에 구성 함수를 무효화하여 나무위키에 있는 처리하기 복잡하고 직접 로드되는 파워링크를 차단합니다.
|
|
6
6
|
|
|
@@ -22,7 +22,7 @@ NamuLink 유저스크립트는 AdGuard와 애드블록 커뮤니티에 의해
|
|
|
22
22
|
### 빠른 시작
|
|
23
23
|
아래 URL를 클릭하여 설치해주세요:
|
|
24
24
|
|
|
25
|
-
https://cdn.jsdelivr.net/npm/@
|
|
25
|
+
https://cdn.jsdelivr.net/npm/@filteringdev/namulink@latest/dist/NamuLink.user.js
|
|
26
26
|
|
|
27
27
|
### 설치하는 법
|
|
28
28
|
- [Violentmonkey](https://addons.mozilla.org/ko/firefox/addon/violentmonkey/) (AdGuard 프리미엄이 없다면 권장됨) - 브라우저 확장
|
|
@@ -31,7 +31,7 @@ https://cdn.jsdelivr.net/npm/@list-kr/namulink@latest/dist/NamuLink.user.js
|
|
|
31
31
|
3. `Install from URL` 버튼을 누르십시오.
|
|
32
32
|
4. 다음 URL를 누르십시오:
|
|
33
33
|
```
|
|
34
|
-
https://cdn.jsdelivr.net/npm/@
|
|
34
|
+
https://cdn.jsdelivr.net/npm/@filteringdev/namulink@latest/dist/NamuLink.user.js
|
|
35
35
|
```
|
|
36
36
|
5. `OK` 버튼을 누르십시오.
|
|
37
37
|
6. 유저스크립트의 메타데이터를 확인하시고 `Confirm installation`를 누르십시오.
|
|
@@ -57,7 +57,7 @@ https://cdn.jsdelivr.net/npm/@list-kr/namulink@latest/dist/NamuLink.user.js
|
|
|
57
57
|
* iOS 18 이상: `시스템 설정` => `앱` => `Safari` => `확장 프로그램`
|
|
58
58
|
* iOS 17 이하: `시스템 설정` => `Safari` => `확장 프로그램`
|
|
59
59
|
**Userscripts**을 찾으시고 활성화하신 후 `기타 웹 사이트` 권한을 허용하십시오.
|
|
60
|
-
3. Safari에서 [빠른 시작 세션에 있는 URL](https://cdn.jsdelivr.net/npm/@
|
|
60
|
+
3. Safari에서 [빠른 시작 세션에 있는 URL](https://cdn.jsdelivr.net/npm/@filteringdev/namulink@latest/dist/NamuLink.user.js)을 클릭하십시오.
|
|
61
61
|
4. Safari의 주소바에 있는 확장 아이콘을 클릭하시고 **Userscripts**을 선택하십시오.
|
|
62
62
|
5. 설치하는 버튼을 누르십시오.
|
|
63
63
|
6. 열린 팝업을 스크롤하신 후에 설치하는 버튼을 누르십시오.
|
package/dist/NamuLink.user.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// @downloadURL https://cdn.jsdelivr.net/npm/@filteringdev/namulink@latest/dist/NamuLink.user.js
|
|
9
9
|
// @license MIT
|
|
10
10
|
//
|
|
11
|
-
// @version 17.4.
|
|
11
|
+
// @version 17.4.4
|
|
12
12
|
// @author PiQuark6046 and contributors
|
|
13
13
|
//
|
|
14
14
|
// @match https://namu.wiki/*
|
|
@@ -20,4 +20,4 @@
|
|
|
20
20
|
// @run-at document-start
|
|
21
21
|
// ==/UserScript==
|
|
22
22
|
// Used libraries:
|
|
23
|
-
(()=>{var
|
|
23
|
+
(()=>{var d=typeof unsafeWindow<"u"?unsafeWindow:window;function s(o,l="NamuLink"){function p(t){let e=[];for(;t.parentElement;)e.push(t.parentElement),t=t.parentElement;return e}setInterval(()=>{if(location.href.startsWith("https://namu.wiki/w/")){let t=Array.from(document.querySelectorAll('div[class*=" "] div[class]')).filter(e=>e instanceof HTMLElement);t=t.filter(e=>{let n=Number(getComputedStyle(e).getPropertyValue("padding-left").replaceAll("px","")),i=Number(getComputedStyle(e).getPropertyValue("padding-right").replaceAll("px","")),r=Number(getComputedStyle(e).getPropertyValue("padding-top").replaceAll("px","")),a=Number(getComputedStyle(e).getPropertyValue("padding-bottom").replaceAll("px",""));return n>5&&i>5&&r>5&&a>5}),t=t.filter(e=>Array.from(e.querySelectorAll("*")).filter(n=>n instanceof HTMLElement&&getComputedStyle(n).getPropertyValue("animation-timing-function")==="ease-in-out").length>=3),t=t.filter(e=>p(e).some(n=>Number(getComputedStyle(n).getPropertyValue("margin-top").replaceAll("px",""))>10)),t=t.filter(e=>e.innerText.length<1e3),t=t.filter(e=>Array.from(e.querySelectorAll('*[href="/RecentChanges"]')).filter(n=>n instanceof HTMLElement&&getComputedStyle(n).getPropertyValue("display")!=="none").length===0),t=t.filter(e=>!e.innerText.includes((new URL(location.href).searchParams.get("from")||"")+"\uC5D0\uC11C \uB118\uC5B4\uC634")),t=t.filter(e=>!/\[[0-9]+\] .+/.test(e.innerText)),t.forEach(e=>e.remove())}},1e3);let u=[[/for *\( *; *; *\) *switch *\( *_[a-z0-9]+\[_[a-z0-9]+\([a-z0-9]+\)\] *=_[a-z0-9]+/,/_[a-z0-9]+\[('|")[A-Z]+('|")\]\)\(\[ *\]\)/,/0x[a-z0-9]+ *\) *; *case/],[/; *return *this\[_0x[a-z0-9]+\( *0x[0-9a-z]+ *\)/,/; *if *\( *_0x[a-z0-9]+ *&& *\( *_0x[a-z0-9]+ *= *_0x[a-z0-9]+/,/\) *, *void *\( *this *\[ *_0x[a-z0-9]+\( *0x[0-9a-z]+ *\) *\] *= *_0x[a-z0-9]+ *\[/]];o.Function.prototype.bind=new Proxy(o.Function.prototype.bind,{apply(t,e,n){let i=e.toString();return u.filter(r=>r.filter(a=>a.test(i)).length>=3).length===1?(console.debug(`[${l}]: Function.prototype.bind:`,e),Reflect.apply(t,()=>{},[])):Reflect.apply(t,e,n)}});let f=[[/\( *\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\]\(\); *}/,/\( *\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\]\(\); *}/],[/\( *\) *=> *{ *var _0x[a-z0-9]+ *= *_0x[a-z0-9]+ *; *if *\( *this\[ *_0x[a-z0-9]+ *\( *0x[0-9a-f]+ *\) *\] *\) *return *clearTimeout/,/\( *0x[0-9a-f]+ *\) *\] *\) *, *void *\( *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\] *= *void *\([x0-9a-f*+-]+ *\) *\) *; *this\[_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\] *\(\) *;/]];o.setTimeout=new Proxy(o.setTimeout,{apply(t,e,n){let i=n[0].toString();if(f.filter(r=>r.filter(a=>a.test(i)).length>=1).length===1){console.debug(`[${l}]: setTimeout:`,n[0]);return}return Reflect.apply(t,e,n)}})}s(d);})();
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// sources/src/index.ts
|
|
2
|
+
var Win = typeof unsafeWindow !== "undefined" ? unsafeWindow : window;
|
|
3
|
+
function RunNamuLinkUserscript(BrowserWindow, UserscriptName = "NamuLink") {
|
|
4
|
+
function GetParents(Ele) {
|
|
5
|
+
let Parents = [];
|
|
6
|
+
while (Ele.parentElement) {
|
|
7
|
+
Parents.push(Ele.parentElement);
|
|
8
|
+
Ele = Ele.parentElement;
|
|
9
|
+
}
|
|
10
|
+
return Parents;
|
|
11
|
+
}
|
|
12
|
+
setInterval(() => {
|
|
13
|
+
if (location.href.startsWith("https://namu.wiki/w/")) {
|
|
14
|
+
let AdContainers = Array.from(document.querySelectorAll('div[class*=" "] div[class]')).filter((AdContainer) => AdContainer instanceof HTMLElement);
|
|
15
|
+
AdContainers = AdContainers.filter((AdContainer) => {
|
|
16
|
+
let AdContainerPaddingLeft = Number(getComputedStyle(AdContainer).getPropertyValue("padding-left").replaceAll("px", ""));
|
|
17
|
+
let AdContainerPaddingRight = Number(getComputedStyle(AdContainer).getPropertyValue("padding-right").replaceAll("px", ""));
|
|
18
|
+
let AdContainerPaddingTop = Number(getComputedStyle(AdContainer).getPropertyValue("padding-top").replaceAll("px", ""));
|
|
19
|
+
let AdContainerPaddingBottom = Number(getComputedStyle(AdContainer).getPropertyValue("padding-bottom").replaceAll("px", ""));
|
|
20
|
+
return AdContainerPaddingLeft > 5 && AdContainerPaddingRight > 5 && AdContainerPaddingTop > 5 && AdContainerPaddingBottom > 5;
|
|
21
|
+
});
|
|
22
|
+
AdContainers = AdContainers.filter((AdContainer) => {
|
|
23
|
+
return Array.from(AdContainer.querySelectorAll("*")).filter((Ele) => Ele instanceof HTMLElement && getComputedStyle(Ele).getPropertyValue("animation-timing-function") === "ease-in-out").length >= 3;
|
|
24
|
+
});
|
|
25
|
+
AdContainers = AdContainers.filter((AdContainer) => GetParents(AdContainer).some((Parent) => Number(getComputedStyle(Parent).getPropertyValue("margin-top").replaceAll("px", "")) > 10));
|
|
26
|
+
AdContainers = AdContainers.filter((AdContainer) => AdContainer.innerText.length < 1e3);
|
|
27
|
+
AdContainers = AdContainers.filter((AdContainer) => Array.from(AdContainer.querySelectorAll('*[href="/RecentChanges"]')).filter((Ele) => Ele instanceof HTMLElement && getComputedStyle(Ele).getPropertyValue("display") !== "none").length === 0);
|
|
28
|
+
AdContainers = AdContainers.filter((AdContainer) => !AdContainer.innerText.includes((new URL(location.href).searchParams.get("from") || "") + "\uC5D0\uC11C \uB118\uC5B4\uC634"));
|
|
29
|
+
AdContainers = AdContainers.filter((AdContainer) => !/\[[0-9]+\] .+/.test(AdContainer.innerText));
|
|
30
|
+
AdContainers.forEach((Ele) => Ele.remove());
|
|
31
|
+
}
|
|
32
|
+
}, 1e3);
|
|
33
|
+
let PowerLinkGenerationPositiveRegExps = [[
|
|
34
|
+
/for *\( *; *; *\) *switch *\( *_[a-z0-9]+\[_[a-z0-9]+\([a-z0-9]+\)\] *=_[a-z0-9]+/,
|
|
35
|
+
/_[a-z0-9]+\[('|")[A-Z]+('|")\]\)\(\[ *\]\)/,
|
|
36
|
+
/0x[a-z0-9]+ *\) *; *case/
|
|
37
|
+
], [
|
|
38
|
+
/; *return *this\[_0x[a-z0-9]+\( *0x[0-9a-z]+ *\)/,
|
|
39
|
+
/; *if *\( *_0x[a-z0-9]+ *&& *\( *_0x[a-z0-9]+ *= *_0x[a-z0-9]+/,
|
|
40
|
+
/\) *, *void *\( *this *\[ *_0x[a-z0-9]+\( *0x[0-9a-z]+ *\) *\] *= *_0x[a-z0-9]+ *\[/
|
|
41
|
+
]];
|
|
42
|
+
BrowserWindow.Function.prototype.bind = new Proxy(BrowserWindow.Function.prototype.bind, {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
44
|
+
apply(Target, ThisArg, Args) {
|
|
45
|
+
let StringifiedFunc = ThisArg.toString();
|
|
46
|
+
if (PowerLinkGenerationPositiveRegExps.filter((PowerLinkGenerationPositiveRegExp) => PowerLinkGenerationPositiveRegExp.filter((Index) => Index.test(StringifiedFunc)).length >= 3).length === 1) {
|
|
47
|
+
console.debug(`[${UserscriptName}]: Function.prototype.bind:`, ThisArg);
|
|
48
|
+
return Reflect.apply(Target, () => {
|
|
49
|
+
}, []);
|
|
50
|
+
}
|
|
51
|
+
return Reflect.apply(Target, ThisArg, Args);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
let PowerLinkGenerationSkeletionPositiveRegExps = [[
|
|
55
|
+
/\( *\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\]\(\); *}/,
|
|
56
|
+
/\( *\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\]\(\); *}/
|
|
57
|
+
], [
|
|
58
|
+
/\( *\) *=> *{ *var _0x[a-z0-9]+ *= *_0x[a-z0-9]+ *; *if *\( *this\[ *_0x[a-z0-9]+ *\( *0x[0-9a-f]+ *\) *\] *\) *return *clearTimeout/,
|
|
59
|
+
/\( *0x[0-9a-f]+ *\) *\] *\) *, *void *\( *this\[ *_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\] *= *void *\([x0-9a-f*+-]+ *\) *\) *; *this\[_0x[a-z0-9]+\( *0x[0-9a-f]+ *\) *\] *\(\) *;/
|
|
60
|
+
]];
|
|
61
|
+
BrowserWindow.setTimeout = new Proxy(BrowserWindow.setTimeout, {
|
|
62
|
+
apply(Target, ThisArg, Args) {
|
|
63
|
+
let StringifiedFunc = Args[0].toString();
|
|
64
|
+
if (PowerLinkGenerationSkeletionPositiveRegExps.filter((PowerLinkGenerationSkeletionPositiveRegExp) => PowerLinkGenerationSkeletionPositiveRegExp.filter((Index) => Index.test(StringifiedFunc)).length >= 1).length === 1) {
|
|
65
|
+
console.debug(`[${UserscriptName}]: setTimeout:`, Args[0]);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
return Reflect.apply(Target, ThisArg, Args);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
RunNamuLinkUserscript(Win);
|
|
73
|
+
export {
|
|
74
|
+
RunNamuLinkUserscript
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=interface.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../sources/src/index.ts"],
|
|
4
|
+
"sourcesContent": ["type unsafeWindow = typeof window\n// eslint-disable-next-line @typescript-eslint/naming-convention\ndeclare const unsafeWindow: unsafeWindow\n\nconst Win = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window\n\nexport function RunNamuLinkUserscript(BrowserWindow: typeof window, UserscriptName: string = 'NamuLink'): void {\n function GetParents(Ele: HTMLElement) {\n let Parents: HTMLElement[] = []\n while (Ele.parentElement) {\n Parents.push(Ele.parentElement)\n Ele = Ele.parentElement\n }\n return Parents\n }\n\n setInterval(() => {\n if (location.href.startsWith('https://namu.wiki/w/')) {\n let AdContainers = Array.from(document.querySelectorAll('div[class*=\" \"] div[class]')).filter(AdContainer => AdContainer instanceof HTMLElement)\n\n AdContainers = AdContainers.filter((AdContainer) => {\n let AdContainerPaddingLeft = Number(getComputedStyle(AdContainer).getPropertyValue('padding-left').replaceAll('px', ''))\n let AdContainerPaddingRight = Number(getComputedStyle(AdContainer).getPropertyValue('padding-right').replaceAll('px', ''))\n let AdContainerPaddingTop = Number(getComputedStyle(AdContainer).getPropertyValue('padding-top').replaceAll('px', ''))\n let AdContainerPaddingBottom = Number(getComputedStyle(AdContainer).getPropertyValue('padding-bottom').replaceAll('px', ''))\n return AdContainerPaddingLeft > 5 && AdContainerPaddingRight > 5 && AdContainerPaddingTop > 5 && AdContainerPaddingBottom > 5\n })\n\n AdContainers = AdContainers.filter(AdContainer => {\n return Array.from(AdContainer.querySelectorAll('*')).filter(Ele => Ele instanceof HTMLElement &&\n getComputedStyle(Ele).getPropertyValue('animation-timing-function') === 'ease-in-out').length >= 3\n })\n\n AdContainers = AdContainers.filter(AdContainer => GetParents(AdContainer).some(Parent => Number(getComputedStyle(Parent).getPropertyValue('margin-top').replaceAll('px', '')) > 10 ))\n\n AdContainers = AdContainers.filter(AdContainer => AdContainer.innerText.length < 1000)\n\n AdContainers = AdContainers.filter(AdContainer => Array.from(AdContainer.querySelectorAll('*[href=\"/RecentChanges\"]')).filter(Ele => Ele instanceof HTMLElement && getComputedStyle(Ele).getPropertyValue('display') !== 'none').length === 0)\n\n AdContainers = AdContainers.filter(AdContainer => !AdContainer.innerText.includes((new URL(location.href).searchParams.get('from') || '') + '\uC5D0\uC11C \uB118\uC5B4\uC634'))\n\n AdContainers = AdContainers.filter(AdContainer => !/\\[[0-9]+\\] .+/.test(AdContainer.innerText))\n\n AdContainers.forEach(Ele => Ele.remove())\n }\n }, 1000)\n\n let PowerLinkGenerationPositiveRegExps: RegExp[][] = [[\n /for *\\( *; *; *\\) *switch *\\( *_[a-z0-9]+\\[_[a-z0-9]+\\([a-z0-9]+\\)\\] *=_[a-z0-9]+/,\n /_[a-z0-9]+\\[('|\")[A-Z]+('|\")\\]\\)\\(\\[ *\\]\\)/,\n /0x[a-z0-9]+ *\\) *; *case/\n ], [\n /; *return *this\\[_0x[a-z0-9]+\\( *0x[0-9a-z]+ *\\)/,\n /; *if *\\( *_0x[a-z0-9]+ *&& *\\( *_0x[a-z0-9]+ *= *_0x[a-z0-9]+/,\n /\\) *, *void *\\( *this *\\[ *_0x[a-z0-9]+\\( *0x[0-9a-z]+ *\\) *\\] *= *_0x[a-z0-9]+ *\\[/\n ]]\n\n BrowserWindow.Function.prototype.bind = new Proxy(BrowserWindow.Function.prototype.bind, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n apply(Target: typeof Function.prototype.bind, ThisArg: Function, Args: Parameters<typeof Function.prototype.bind>) {\n let StringifiedFunc = ThisArg.toString()\n if (PowerLinkGenerationPositiveRegExps.filter(PowerLinkGenerationPositiveRegExp => PowerLinkGenerationPositiveRegExp.filter(Index => Index.test(StringifiedFunc)).length >= 3).length === 1) {\n console.debug(`[${UserscriptName}]: Function.prototype.bind:`, ThisArg)\n return Reflect.apply(Target, () => {}, [])\n }\n return Reflect.apply(Target, ThisArg, Args)\n }\n })\n\n let PowerLinkGenerationSkeletionPositiveRegExps: RegExp[][] = [[\n /\\( *\\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\\[ *_0x[a-z0-9]+\\( *0x[0-9a-f]+ *\\) *\\]\\(\\); *}/,\n /\\( *\\) *=> *{ *var *_0x[0-9a-z]+ *= *a0_0x[0-9a-f]+ *; *this\\[ *_0x[a-z0-9]+\\( *0x[0-9a-f]+ *\\) *\\]\\(\\); *}/\n ], [\n /\\( *\\) *=> *{ *var _0x[a-z0-9]+ *= *_0x[a-z0-9]+ *; *if *\\( *this\\[ *_0x[a-z0-9]+ *\\( *0x[0-9a-f]+ *\\) *\\] *\\) *return *clearTimeout/,\n /\\( *0x[0-9a-f]+ *\\) *\\] *\\) *, *void *\\( *this\\[ *_0x[a-z0-9]+\\( *0x[0-9a-f]+ *\\) *\\] *= *void *\\([x0-9a-f*+-]+ *\\) *\\) *; *this\\[_0x[a-z0-9]+\\( *0x[0-9a-f]+ *\\) *\\] *\\(\\) *;/\n ]]\n\n BrowserWindow.setTimeout = new Proxy(BrowserWindow.setTimeout, {\n apply(Target: typeof setTimeout, ThisArg: undefined, Args: Parameters<typeof setTimeout>) {\n let StringifiedFunc = Args[0].toString()\n if (PowerLinkGenerationSkeletionPositiveRegExps.filter(PowerLinkGenerationSkeletionPositiveRegExp => PowerLinkGenerationSkeletionPositiveRegExp.filter(Index => Index.test(StringifiedFunc)).length >= 1).length === 1) {\n console.debug(`[${UserscriptName}]: setTimeout:`, Args[0])\n return\n }\n\n return Reflect.apply(Target, ThisArg, Args)\n }\n })\n}\n\nRunNamuLinkUserscript(Win)"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { RunNamuLinkUserscript } from './src/index.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function RunNamuLinkUserscript(BrowserWindow: typeof window, UserscriptName?: string): void;
|
package/package.json
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@filteringdev/namulink",
|
|
3
|
-
"version": "17.4.
|
|
3
|
+
"version": "17.4.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "esbuild sources/
|
|
8
|
-
"
|
|
7
|
+
"build:interface": "esbuild sources/interface.ts --bundle --format=esm --splitting --sourcemap --target=es2024 --external:/node_modules --outdir=dist && tsc --outDir dist/types --declaration --emitDeclarationOnly",
|
|
8
|
+
"build:userscript": "esbuild sources/src/index.ts --bundle --minify --define:global=window --inject:./sources/esbuild.inject.ts --banner:js=\"$(cat ./sources/banner.txt)\" --target=es2024,chrome119,safari17,firefox121 --outfile=./dist/NamuLink.user.js",
|
|
9
|
+
"build": "npm run build:interface && npm run build:userscript",
|
|
10
|
+
"debug": "esbuild sources/src/index.ts --bundle --define:global=window --inject:./sources/esbuild.inject.ts --banner:js=\"$(cat ./sources/banner.txt)\" --target=es2024,chrome119,safari17,firefox121 --outfile=./dist/NamuLink-debug.user.js",
|
|
9
11
|
"lint": "tsc && eslint sources --ext .ts"
|
|
10
12
|
},
|
|
11
13
|
"keywords": [],
|
|
@@ -15,8 +17,15 @@
|
|
|
15
17
|
"url": "https://github.com/PiQuark6046"
|
|
16
18
|
},
|
|
17
19
|
"files": [
|
|
18
|
-
"dist"
|
|
20
|
+
"dist/**/*"
|
|
19
21
|
],
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"import": "./dist/interface.js",
|
|
25
|
+
"types": "./dist/types/interface.d.ts"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"types": "./dist/types/interface.d.ts",
|
|
20
29
|
"repository": {
|
|
21
30
|
"type": "git",
|
|
22
31
|
"url": "git+https://github.com/FilteringDev/NamuLink.git"
|
|
@@ -37,12 +46,12 @@
|
|
|
37
46
|
],
|
|
38
47
|
"license": "MIT",
|
|
39
48
|
"dependencies": {
|
|
40
|
-
"@types/node": "^
|
|
49
|
+
"@types/node": "^24.5.2"
|
|
41
50
|
},
|
|
42
51
|
"devDependencies": {
|
|
43
52
|
"esbuild": "^0.25.10",
|
|
44
|
-
"eslint": "^9.
|
|
53
|
+
"eslint": "^9.36.0",
|
|
45
54
|
"typescript": "^5.9.2",
|
|
46
|
-
"typescript-eslint": "^8.44.
|
|
55
|
+
"typescript-eslint": "^8.44.1"
|
|
47
56
|
}
|
|
48
57
|
}
|