From daf4b217a392667895164128a1aff05796d772a5 Mon Sep 17 00:00:00 2001 From: shgli Date: Tue, 24 Sep 2024 17:43:40 +0800 Subject: [PATCH 1/5] fix invalid group specifier name --- gramjs/extensions/markdownv2.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/gramjs/extensions/markdownv2.ts b/gramjs/extensions/markdownv2.ts index fc67fac2..ab357046 100644 --- a/gramjs/extensions/markdownv2.ts +++ b/gramjs/extensions/markdownv2.ts @@ -25,10 +25,7 @@ export class MarkdownV2Parser { message = message.replace(/\|\|(.*?)\|\|/g, "$1"); // Inline URL - message = message.replace( - /(?$1' - ); + message = replaceInnerUrl(message); // Emoji message = message.replace( @@ -79,3 +76,21 @@ export class MarkdownV2Parser { return text; } } + +const replaceInnerUrl = (message: string) => { + let innerUrl = message; + const replacedMarkdownText = message.replace( + /!\[([^\[\]]*)\]\(([^)]+)\)/g, + "" + ); + + const linkRegex = /\[([^\[\]]*)\]\(([^)]+)\)/g; + + let match; + while ((match = linkRegex.exec(replacedMarkdownText)) !== null) { + const text = match[1]; + const url = match[2]; + innerUrl = `'${text}'`; + } + return innerUrl; +}; From c53b24579f4004027d44569373c70425f9dbf02b Mon Sep 17 00:00:00 2001 From: shgli Date: Tue, 3 Dec 2024 20:07:32 +0800 Subject: [PATCH 2/5] fix change page name --- gramjs/extensions/PromisedWebSockets.ts | 2 +- package-lock.json | 52 ++++++++++++++----------- package.json | 4 +- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/gramjs/extensions/PromisedWebSockets.ts b/gramjs/extensions/PromisedWebSockets.ts index dab09b23..61eb1e33 100644 --- a/gramjs/extensions/PromisedWebSockets.ts +++ b/gramjs/extensions/PromisedWebSockets.ts @@ -97,7 +97,7 @@ export class PromisedWebSockets { }; //CONTEST if (isBrowser) { - window.addEventListener("offline", async () => { + globalThis?.addEventListener("offline", async () => { await this.close(); if (this.resolveRead) { this.resolveRead(false); diff --git a/package-lock.json b/package-lock.json index 95823f29..32512838 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "telegram", - "version": "2.25.11", + "name": "@sipz/telegram", + "version": "1.0.9", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "telegram", - "version": "2.25.11", + "name": "@sipz/telegram", + "version": "1.0.9", "license": "MIT", "dependencies": { "@cryptography/aes": "^0.1.1", @@ -4094,8 +4094,9 @@ }, "node_modules/ip-address": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "resolved": "https://repo.sending.me/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -4106,8 +4107,9 @@ }, "node_modules/ip-address/node_modules/sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + "resolved": "https://repo.sending.me/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" }, "node_modules/is-arguments": { "version": "1.1.1", @@ -6208,8 +6210,9 @@ }, "node_modules/jsbn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + "resolved": "https://repo.sending.me/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" }, "node_modules/jsesc": { "version": "2.5.2", @@ -6534,8 +6537,9 @@ }, "node_modules/node-localstorage": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-2.2.1.tgz", + "resolved": "https://repo.sending.me/node-localstorage/-/node-localstorage-2.2.1.tgz", "integrity": "sha512-vv8fJuOUCCvSPjDjBLlMqYMHob4aGjkmrkaE42/mZr0VT+ZAU10jRF8oTnX9+pgU9/vYJ8P7YT3Vd6ajkmzSCw==", + "license": "MIT", "dependencies": { "write-file-atomic": "^1.1.4" }, @@ -6545,8 +6549,9 @@ }, "node_modules/node-localstorage/node_modules/write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "resolved": "https://repo.sending.me/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==", + "license": "ISC", "dependencies": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", @@ -7162,16 +7167,18 @@ }, "node_modules/slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "resolved": "https://repo.sending.me/slide/-/slide-1.1.6.tgz", "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", + "license": "ISC", "engines": { "node": "*" } }, "node_modules/smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "resolved": "https://repo.sending.me/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -7179,8 +7186,9 @@ }, "node_modules/socks": { "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "resolved": "https://repo.sending.me/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "license": "MIT", "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -11603,7 +11611,7 @@ }, "ip-address": { "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "resolved": "https://repo.sending.me/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "requires": { "jsbn": "1.1.0", @@ -11612,7 +11620,7 @@ "dependencies": { "sprintf-js": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "resolved": "https://repo.sending.me/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" } } @@ -13158,7 +13166,7 @@ }, "jsbn": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "resolved": "https://repo.sending.me/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" }, "jsesc": { @@ -13412,7 +13420,7 @@ }, "node-localstorage": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-2.2.1.tgz", + "resolved": "https://repo.sending.me/node-localstorage/-/node-localstorage-2.2.1.tgz", "integrity": "sha512-vv8fJuOUCCvSPjDjBLlMqYMHob4aGjkmrkaE42/mZr0VT+ZAU10jRF8oTnX9+pgU9/vYJ8P7YT3Vd6ajkmzSCw==", "requires": { "write-file-atomic": "^1.1.4" @@ -13420,7 +13428,7 @@ "dependencies": { "write-file-atomic": { "version": "1.3.4", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "resolved": "https://repo.sending.me/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha512-SdrHoC/yVBPpV0Xq/mUZQIpW2sWXAShb/V4pomcJXh92RuaO+f3UTWItiR3Px+pLnV2PvC2/bfn5cwr5X6Vfxw==", "requires": { "graceful-fs": "^4.1.11", @@ -13907,17 +13915,17 @@ }, "slide": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "resolved": "https://repo.sending.me/slide/-/slide-1.1.6.tgz", "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==" }, "smart-buffer": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "resolved": "https://repo.sending.me/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "resolved": "https://repo.sending.me/socks/-/socks-2.8.3.tgz", "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "requires": { "ip-address": "^9.0.5", diff --git a/package.json b/package.json index 11ddef80..914b6ed9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "telegram", - "version": "2.25.11", + "name": "@sipz/telegram", + "version": "1.0.9", "description": "NodeJS/Browser MTProto API Telegram client library,", "main": "index.js", "types": "index.d.ts", From a9053d255677df2891e6fbab243429264776227c Mon Sep 17 00:00:00 2001 From: shgli Date: Tue, 3 Dec 2024 20:09:36 +0800 Subject: [PATCH 3/5] 1.0.10 --- package-lock.json | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32512838..e83332f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sipz/telegram", - "version": "1.0.9", + "version": "1.0.10", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@sipz/telegram", - "version": "1.0.9", + "version": "1.0.10", "license": "MIT", "dependencies": { "@cryptography/aes": "^0.1.1", diff --git a/package.json b/package.json index 914b6ed9..9dfc81e5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sipz/telegram", - "version": "1.0.9", + "version": "1.0.10", "description": "NodeJS/Browser MTProto API Telegram client library,", "main": "index.js", "types": "index.d.ts", @@ -70,4 +70,4 @@ "node-localstorage": "^2.2.1", "socks": "^2.6.2" } -} \ No newline at end of file +} From 3b7ca0fe8216dc083698bf43d92b8539d70bf9ca Mon Sep 17 00:00:00 2001 From: shgli Date: Tue, 3 Dec 2024 20:15:41 +0800 Subject: [PATCH 4/5] fix check addEventListener --- tempBrowser/extensions/PromisedWebSockets.ts | 152 +++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 tempBrowser/extensions/PromisedWebSockets.ts diff --git a/tempBrowser/extensions/PromisedWebSockets.ts b/tempBrowser/extensions/PromisedWebSockets.ts new file mode 100644 index 00000000..bf83154c --- /dev/null +++ b/tempBrowser/extensions/PromisedWebSockets.ts @@ -0,0 +1,152 @@ +import { Buffer } from "buffer/"; +import { w3cwebsocket } from "websocket"; +import { Mutex } from "async-mutex"; +import { isBrowser } from "../platform"; + +const mutex = new Mutex(); + +const closeError = new Error("WebSocket was closed"); + +export class PromisedWebSockets { + private closed: boolean; + private stream: Buffer; + private canRead?: boolean | Promise; + private resolveRead: ((value?: any) => void) | undefined; + private client: w3cwebsocket | undefined; + private website?: string; + + constructor() { + this.client = undefined; + this.stream = Buffer.alloc(0); + + this.closed = true; + } + + async readExactly(number: number) { + let readData = Buffer.alloc(0); + while (true) { + const thisTime = await this.read(number); + readData = Buffer.concat([readData, thisTime]); + number = number - thisTime.length; + if (!number) { + return readData; + } + } + } + + async read(number: number) { + if (this.closed) { + throw closeError; + } + await this.canRead; + if (this.closed) { + throw closeError; + } + const toReturn = this.stream.slice(0, number); + this.stream = this.stream.slice(number); + if (this.stream.length === 0) { + this.canRead = new Promise((resolve) => { + this.resolveRead = resolve; + }); + } + + return toReturn; + } + + async readAll() { + if (this.closed || !(await this.canRead)) { + throw closeError; + } + const toReturn = this.stream; + this.stream = Buffer.alloc(0); + this.canRead = new Promise((resolve) => { + this.resolveRead = resolve; + }); + return toReturn; + } + + getWebSocketLink(ip: string, port: number, testServers: boolean) { + if (port === 443) { + return `wss://${ip}:${port}/apiws${testServers ? "_test" : ""}`; + } else { + return `ws://${ip}:${port}/apiws${testServers ? "_test" : ""}`; + } + } + + async connect(port: number, ip: string, testServers: boolean = false) { + this.stream = Buffer.alloc(0); + this.canRead = new Promise((resolve) => { + this.resolveRead = resolve; + }); + this.closed = false; + this.website = this.getWebSocketLink(ip, port, testServers); + this.client = new w3cwebsocket(this.website, "binary"); + return new Promise((resolve, reject) => { + if (this.client) { + this.client.onopen = () => { + this.receive(); + resolve(this); + }; + this.client.onerror = (error: any) => { + reject(error); + }; + this.client.onclose = () => { + if (this.resolveRead) { + this.resolveRead(false); + } + this.closed = true; + }; + //CONTEST + if (isBrowser) { + globalThis.addEventListener?.("offline", async () => { + await this.close(); + if (this.resolveRead) { + this.resolveRead(false); + } + }); + } + } + }); + } + + write(data: Buffer) { + if (this.closed) { + throw closeError; + } + if (this.client) { + this.client.send(data); + } + } + + async close() { + if (this.client) { + await this.client.close(); + } + this.closed = true; + } + + async receive() { + if (this.client) { + this.client.onmessage = async (message: any) => { + const release = await mutex.acquire(); + try { + let data; + //CONTEST BROWSER + data = Buffer.from( + await new Response(message.data).arrayBuffer() + ); + this.stream = Buffer.concat([this.stream, data]); + if (this.resolveRead) { + this.resolveRead(true); + } + } finally { + release(); + } + }; + } + } + + toString() { + return "PromisedWebSocket"; + } +} From 639415c2c98040a29f29b22bd0e4c2e4b890cc61 Mon Sep 17 00:00:00 2001 From: shgli Date: Tue, 3 Dec 2024 20:15:48 +0800 Subject: [PATCH 5/5] 1.0.11 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e83332f5..8b018ec9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sipz/telegram", - "version": "1.0.10", + "version": "1.0.11", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@sipz/telegram", - "version": "1.0.10", + "version": "1.0.11", "license": "MIT", "dependencies": { "@cryptography/aes": "^0.1.1", diff --git a/package.json b/package.json index 9dfc81e5..1ccaf970 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sipz/telegram", - "version": "1.0.10", + "version": "1.0.11", "description": "NodeJS/Browser MTProto API Telegram client library,", "main": "index.js", "types": "index.d.ts",