Procházet zdrojové kódy

Make className a part of JSON result in API classes

painor před 3 roky
rodič
revize
6fc7ea29b7

+ 1 - 1
.prettierrc.json

@@ -1,3 +1,3 @@
 {
-  "endOfLine": "lf"
+  "endOfLine": "crlf"
 }

+ 1 - 1
gramjs/Version.ts

@@ -1 +1 @@
-export const version = "2.5.32";
+export const version = "2.5.40";

+ 1 - 1
gramjs/client/downloads.ts

@@ -714,7 +714,7 @@ export async function _downloadCachedPhotoSize(
     outputFile?: OutFile
 ) {
     // No need to download anything, simply write the bytes
-    let data:Buffer;
+    let data: Buffer;
     if (size instanceof Api.PhotoStrippedSize) {
         data = strippedPhotoToJpg(size.bytes);
     } else {

+ 7 - 14
gramjs/client/fs-BROWSER.ts

@@ -1,16 +1,9 @@
 export const promises = {
-    lstat: (file: string) => {
-        return {
-            isFile: () => {},
-        };
-    },
-    stat: (file: string) => {
-        return {
-            size: 0,
-        };
-    },
-
-    readFile(path: string) {
-        return Buffer.alloc(0);
-    },
+    lstat: (...args: any): any => {},
+    stat: (...args: any): any => {},
+    readFile: (...args: any): any => {},
 };
+export const createWriteStream: any = {};
+export const WriteStream: any = {};
+export const lstatSync: any = {};
+export const existsSync: any = {};

+ 4 - 4
gramjs/client/path-BROWSER.ts

@@ -1,6 +1,6 @@
-// No paths in browser so we should throw an error
 export default {
-    basename(file: string) {
-        return "";
-    },
+    basename(...args: any): any {},
+    resolve(...args: any): any {},
+    path(...args: any): any {},
+    join(...args: any): any {},
 };

+ 8 - 2
gramjs/crypto/crypto.ts

@@ -82,7 +82,7 @@ export function createCipheriv(algorithm: string, key: Buffer, iv: Buffer) {
     }
 }
 
-export function randomBytes(count: Buffer) {
+export function randomBytes(count: number) {
     const bytes = new Uint8Array(count);
     crypto.getRandomValues(bytes);
     return bytes;
@@ -114,10 +114,16 @@ export class Hash {
                 );
             }
         }
+        return Buffer.alloc(0);
     }
 }
 
-export async function pbkdf2Sync(password: any, salt: any, iterations: any) {
+export async function pbkdf2Sync(
+    password: any,
+    salt: any,
+    iterations: any,
+    ...args: any
+) {
     const passwordKey = await crypto.subtle.importKey(
         "raw",
         password,

+ 13 - 1
gramjs/extensions/PromisedNetSockets-BROWSER.ts

@@ -1 +1,13 @@
-export class PromisedNetSockets {}
+export class PromisedNetSockets {
+    constructor(...args: any) {}
+
+    connect(...args: any): any {}
+
+    close(...args: any): any {}
+
+    write(...args: any): any {}
+
+    readExactly(...args: any): any {}
+
+    read(...args: any): any {}
+}

+ 2 - 1
gramjs/tl/api.js

@@ -576,12 +576,13 @@ function createClasses(classesType, params) {
                     }
                 }
             }
+
             [inspect.custom]() {
                 return betterConsoleLog(this);
             }
 
             toJSON() {
-                return this.originalArgs;
+                return { ...this.originalArgs, className: fullName };
             }
         }
 

+ 110 - 9
package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "telegram",
-  "version": "2.5.34",
+  "version": "2.5.42",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "telegram",
-      "version": "2.5.34",
+      "version": "2.5.42",
       "license": "MIT",
       "dependencies": {
         "@cryptography/aes": "^0.1.1",
@@ -15,8 +15,10 @@
         "buffer": "^6.0.3",
         "htmlparser2": "^6.1.0",
         "mime": "^3.0.0",
+        "node-localstorage": "^2.2.1",
         "pako": "^2.0.3",
         "path-browserify": "^1.0.1",
+        "socks": "^2.6.2",
         "store2": "^2.12.0",
         "ts-custom-error": "^3.2.0",
         "websocket": "^1.0.34"
@@ -3858,8 +3860,7 @@
     "node_modules/graceful-fs": {
       "version": "4.2.9",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
-      "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
-      "dev": true
+      "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
     },
     "node_modules/has": {
       "version": "1.0.3",
@@ -4017,7 +4018,6 @@
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-      "dev": true,
       "engines": {
         "node": ">=0.8.19"
       }
@@ -4061,6 +4061,11 @@
         "node": ">= 0.10"
       }
     },
+    "node_modules/ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+    },
     "node_modules/is-arguments": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -6415,6 +6420,27 @@
       "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
       "dev": true
     },
+    "node_modules/node-localstorage": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-2.2.1.tgz",
+      "integrity": "sha512-vv8fJuOUCCvSPjDjBLlMqYMHob4aGjkmrkaE42/mZr0VT+ZAU10jRF8oTnX9+pgU9/vYJ8P7YT3Vd6ajkmzSCw==",
+      "dependencies": {
+        "write-file-atomic": "^1.1.4"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "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",
+      "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "imurmurhash": "^0.1.4",
+        "slide": "^1.1.5"
+      }
+    },
     "node_modules/node-modules-regexp": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
@@ -7049,6 +7075,36 @@
         "node": ">=8"
       }
     },
+    "node_modules/slide": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+      "engines": {
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
+      "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
+      "dependencies": {
+        "ip": "^1.1.5",
+        "smart-buffer": "^4.2.0"
+      },
+      "engines": {
+        "node": ">= 10.13.0",
+        "npm": ">= 3.0.0"
+      }
+    },
     "node_modules/source-map": {
       "version": "0.5.7",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -7582,6 +7638,9 @@
       },
       "engines": {
         "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "typescript": ">=2.7"
       }
     },
     "node_modules/tslib": {
@@ -11462,8 +11521,7 @@
     "graceful-fs": {
       "version": "4.2.9",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
-      "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
-      "dev": true
+      "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ=="
     },
     "has": {
       "version": "1.0.3",
@@ -11581,8 +11639,7 @@
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-      "dev": true
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
     },
     "inflight": {
       "version": "1.0.6",
@@ -11617,6 +11674,11 @@
       "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==",
       "dev": true
     },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+    },
     "is-arguments": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
@@ -13471,6 +13533,26 @@
       "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=",
       "dev": true
     },
+    "node-localstorage": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-2.2.1.tgz",
+      "integrity": "sha512-vv8fJuOUCCvSPjDjBLlMqYMHob4aGjkmrkaE42/mZr0VT+ZAU10jRF8oTnX9+pgU9/vYJ8P7YT3Vd6ajkmzSCw==",
+      "requires": {
+        "write-file-atomic": "^1.1.4"
+      },
+      "dependencies": {
+        "write-file-atomic": {
+          "version": "1.3.4",
+          "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
+          "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "imurmurhash": "^0.1.4",
+            "slide": "^1.1.5"
+          }
+        }
+      }
+    },
     "node-modules-regexp": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz",
@@ -13983,6 +14065,25 @@
       "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
       "dev": true
     },
+    "slide": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
+      "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
+    },
+    "smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
+    },
+    "socks": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz",
+      "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==",
+      "requires": {
+        "ip": "^1.1.5",
+        "smart-buffer": "^4.2.0"
+      }
+    },
     "source-map": {
       "version": "0.5.7",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",

+ 7 - 5
package.json

@@ -1,6 +1,6 @@
 {
   "name": "telegram",
-  "version": "2.5.34",
+  "version": "2.5.42",
   "description": "NodeJS/Browser MTProto API Telegram client library,",
   "main": "index.js",
   "types": "index.d.ts",
@@ -41,14 +41,14 @@
     "babel-loader": "^8.2.2",
     "jest": "^27.2.5",
     "os-browserify": "^0.3.0",
-    "process": "^0.11.10",
-    "util": "^0.12.4",
     "prettier": "2.3.1",
+    "process": "^0.11.10",
     "ts-loader": "^8.0.16",
     "ts-node": "^9.1.1",
     "typedoc": "^0.22.11",
     "typedoc-plugin-missing-exports": "^0.22.6",
     "typescript": "^4.2.4",
+    "util": "^0.12.4",
     "webpack": "^5.69.0",
     "webpack-cli": "^4.9.2"
   },
@@ -63,6 +63,8 @@
     "path-browserify": "^1.0.1",
     "store2": "^2.12.0",
     "ts-custom-error": "^3.2.0",
-    "websocket": "^1.0.34"
+    "websocket": "^1.0.34",
+    "node-localstorage": "^2.2.1",
+    "socks": "^2.6.2"
   }
-}
+}

+ 50 - 32
publish_npm.js

@@ -12,7 +12,9 @@ function addBuffer(dir) {
     } else {
       if (
         (fullPath.endsWith(".ts") || fullPath.endsWith(".js")) &&
-        (!fullPath.endsWith(".d.ts") || fullPath.endsWith("api.d.ts") || fullPath.endsWith("define.d.ts"))
+        (!fullPath.endsWith(".d.ts") ||
+          fullPath.endsWith("api.d.ts") ||
+          fullPath.endsWith("define.d.ts"))
       ) {
         const tsFile = fs.readFileSync(fullPath, "utf8");
         if (tsFile.includes("Buffer")) {
@@ -80,6 +82,8 @@ fs.writeFileSync(
   JSON.stringify(packageJSON, null, "  "),
   "utf8"
 );
+renameFiles("tempBrowser", "rename");
+
 const npmi = exec("npm i");
 npmi.on("close", (code) => {
   if (code !== 0) {
@@ -87,6 +91,13 @@ npmi.on("close", (code) => {
   }
 
   const tsc = exec("tsc");
+  tsc.stdout.on("data", function (data) {
+    console.log("stdout: " + data.toString());
+  });
+
+  tsc.stderr.on("data", function (data) {
+    console.error("stderr: " + data.toString());
+  });
   tsc.on("close", (code) => {
     if (code !== 0) {
       throw new Error("Error happened " + code);
@@ -97,9 +108,8 @@ npmi.on("close", (code) => {
     fs.copyFileSync("LICENSE", "browser/LICENSE");
     fs.copyFileSync("gramjs/tl/api.d.ts", "browser/tl/api.d.ts");
     fs.copyFileSync("gramjs/define.d.ts", "browser/define.d.ts");
-    renameFiles("browser", "rename");
 
-    const npm_publish = exec("npm publish --tag next", { cwd: "browser" });
+    const npm_publish = exec("npm publish --tag browser", { cwd: "browser" });
     npm_publish.stdout.on("data", function (data) {
       console.log(data.toString());
     });
@@ -136,36 +146,44 @@ npmi.on("close", (code) => {
       JSON.stringify(packageJSON, null, "  "),
       "utf8"
     );
-    const tsc = exec("tsc");
-    tsc.on("close", (code) => {
-      if (code === 0) {
-        fs.copyFileSync("package.json", "dist/package.json");
-        fs.copyFileSync("README.md", "dist/README.md");
-        fs.copyFileSync("LICENSE", "dist/LICENSE");
-        fs.copyFileSync("gramjs/tl/api.d.ts", "dist/tl/api.d.ts");
-        fs.copyFileSync("gramjs/define.d.ts", "dist/define.d.ts");
-        renameFiles("dist", "delete");
-        /*const npm_publish = exec("npm publish", { cwd: "dist" });
-        npm_publish.stdout.on("data", function (data) {
-          console.log(data.toString());
-        });
-
-        npm_publish.stderr.on("data", function (data) {
-          console.error(data.toString());
-        });
-        npm_publish.on("close", (code) => {
-          if (code === 0) {
-            console.log("=====================================");
-            console.log("FINISHED UPLOADING NODE VERSION");
-            console.log("=====================================");
-          } else {
-            throw new Error("something went wrong");
-          }
-        });*/
-      } else {
-        console.log(code);
-        throw new Error("Error happened");
+
+    const npmi = exec("npm i");
+    npmi.on("close", (code) => {
+      if (code !== 0) {
+        throw new Error("Error happened " + code);
       }
+
+      const tsc = exec("tsc");
+      tsc.on("close", (code) => {
+        if (code === 0) {
+          fs.copyFileSync("package.json", "dist/package.json");
+          fs.copyFileSync("README.md", "dist/README.md");
+          fs.copyFileSync("LICENSE", "dist/LICENSE");
+          fs.copyFileSync("gramjs/tl/api.d.ts", "dist/tl/api.d.ts");
+          fs.copyFileSync("gramjs/define.d.ts", "dist/define.d.ts");
+          renameFiles("dist", "delete");
+          const npm_publish = exec("npm publish", { cwd: "dist" });
+          npm_publish.stdout.on("data", function (data) {
+            console.log(data.toString());
+          });
+
+          npm_publish.stderr.on("data", function (data) {
+            console.error(data.toString());
+          });
+          npm_publish.on("close", (code) => {
+            if (code === 0) {
+              console.log("=====================================");
+              console.log("FINISHED UPLOADING NODE VERSION");
+              console.log("=====================================");
+            } else {
+              throw new Error("something went wrong");
+            }
+          });
+        } else {
+          console.log(code);
+          throw new Error("Error happened");
+        }
+      });
     });
   });
 });