浏览代码

support webpack

painor 4 年之前
父节点
当前提交
32ee167ec9
共有 8 个文件被更改,包括 1444 次插入62 次删除
  1. 0 0
      Helpers.ts
  2. 5 3
      examples/simpleLogin.js
  3. 2 2
      gramjs/index.ts
  4. 1 2
      gramjs/requestIter.ts
  5. 1393 22
      package-lock.json
  6. 6 1
      package.json
  7. 4 0
      tsconfig.json
  8. 33 32
      webpack.config.js

+ 0 - 0
Helpers.ts


+ 5 - 3
examples/simpleLogin.js

@@ -56,10 +56,12 @@ function codeCallback() {
 
 const { TelegramClient } = gramjs
 const { StringSession } = gramjs.sessions
-const apiId = process.env.APP_ID // put your api id here [for example 123456789]
-const apiHash = process.env.APP_HASH // put your api hash here [for example '123456abcfghe']
+const apiId = 1 // put your api id here [for example 123456789]
+const apiHash = "1  " // put your api hash here [for example '123456abcfghe']
 
-const client = new TelegramClient(new StringSession(''), apiId, apiHash) // you can pass a string session here from previous logins.
+const client = new TelegramClient(new StringSession(''), apiId, apiHash, {
+    connectionRetries: 3,
+}) // you can pass a string session here from previous logins.
 // If you want to run this example in the test servers uncomment this line
 // client.session.setDC(2, '149.154.167.40', 80)
 

+ 2 - 2
gramjs/index.ts

@@ -1,6 +1,6 @@
 export {Api} from './tl';
-export  {TelegramClient} from './client/TelegramClient';
-//export {connection} from './network';
+export {TelegramClient} from './client/TelegramClient';
+export {Connection} from './network';
 export {version} from './Version';
 //export {events} from './events';
 export * as utils from './Utils';

+ 1 - 2
gramjs/requestIter.ts

@@ -1,6 +1,5 @@
 import {TelegramClient} from "./client/TelegramClient";
-// @ts-ignore
-import {sleep} from '../Helpers';
+import {sleep} from './Helpers';
 import {helpers} from "./index";
 
 interface BaseRequestIterInterface {

文件差异内容过多而无法显示
+ 1393 - 22
package-lock.json


+ 6 - 1
package.json

@@ -24,6 +24,7 @@
   "devDependencies": {
     "@babel/core": "^7.12.13",
     "@babel/plugin-proposal-class-properties": "^7.12.13",
+    "@babel/preset-env": "^7.12.16",
     "@types/browser-or-node": "^1.3.0",
     "@types/mime-types": "^2.1.0",
     "@types/pako": "^1.0.1",
@@ -34,15 +35,19 @@
     "ts-loader": "^8.0.16",
     "ts-node": "^9.1.1",
     "typescript": "^4.1.4",
-    "webpack": "^5.21.2"
+    "webpack": "^5.21.2",
+    "webpack-cli": "^4.5.0"
   },
   "dependencies": {
     "@cryptography/aes": "^0.1.1",
     "async-mutex": "^0.3.0",
     "big-integer": "peterolson/BigInteger.js",
     "browser-or-node": "^1.3.0",
+    "buffer": "^6.0.3",
     "mime-types": "latest",
+    "os-browserify": "^0.3.0",
     "pako": "^2.0.3",
+    "path-browserify": "^1.0.1",
     "ts-mixer": "^5.4.0",
     "websocket": "^1.0.33"
   }

+ 4 - 0
tsconfig.json

@@ -19,6 +19,10 @@
     "moduleResolution": "node",
     "resolveJsonModule": true,
   },
+  "exclude": [
+    "gramjs/tl/types-generator",
+    "node_modules"
+  ],
   "include": [
     "gramjs"
   ]

+ 33 - 32
webpack.config.js

@@ -1,51 +1,52 @@
+const path = require('path')
+const webpack = require('webpack');
+
 module.exports = {
-    entry: './gramjs/index.ts',
-    mode: 'development',
-    resolve: {
-        extensions: ['.js', '.ts', '.tsx'],
-    },
-    node: {
-        fs: 'empty',
-        net: 'empty',
-    },
+    entry: path.resolve(__dirname, 'gramjs/index.ts'),
+
     module: {
         rules: [
-            {   test: /\.tsx?$/,
+            {
+                test: /\.ts$/,
                 use: 'ts-loader',
-                exclude: [
-                    /node_modules/,
-                ],
+                exclude: /node_modules/,
             },
+
             {
                 test: /\.js$/,
-                loader: 'babel-loader',
+                use: 'babel-loader',
                 exclude: /node_modules/,
             },
-            {
-                test: /\.(woff(2)?|ttf|eot|svg|png|jpg|tgs)(\?v=\d+\.\d+\.\d+)?$/,
-                loader: 'file-loader',
-                options: {
-                    name: '[name].[contenthash].[ext]',
-                },
-            },
-            {
-                test: /\.wasm$/,
-                type: 'javascript/auto',
-                loader: 'file-loader',
-                options: {
-                    name: '[name].[contenthash].[ext]',
-                },
-            },
+
             {
                 test: /\.tl$/i,
                 loader: 'raw-loader',
             },
         ],
     },
+
+    resolve: {
+        extensions: ['.tsx', '.ts', '.js'],
+        fallback: {
+            'fs': false,
+            'path': require.resolve("path-browserify") ,
+            'net': false,
+            'crypto': false,
+            "os": require.resolve("os-browserify/browser")
+        },
+    },
+    mode: 'development',
+    plugins: [
+        new webpack.ProvidePlugin({
+            Buffer: ['buffer', 'Buffer'],
+        })
+    ],
+
     output: {
-        path: __dirname + '/browser',
-        filename: 'gramjs.js',
-        libraryTarget: 'var',
         library: 'gramjs',
+        libraryTarget: 'umd',
+        auxiliaryComment: 'Test Comment',
+        filename: 'gramjs.js',
+        path: path.resolve(__dirname, 'browser'),
     },
 }

部分文件因为文件数量过多而无法显示