@mtkruto/node 0.6.1 → 0.6.3

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.
Files changed (83) hide show
  1. package/README.md +76 -1
  2. package/esm/0_deps.d.ts +1 -1
  3. package/esm/0_deps.d.ts.map +1 -1
  4. package/esm/0_deps.js +1 -1
  5. package/esm/1_utilities.d.ts +1 -1
  6. package/esm/1_utilities.d.ts.map +1 -1
  7. package/esm/1_utilities.js +1 -1
  8. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts +18 -0
  9. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts.map +1 -0
  10. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js +63 -0
  11. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts +3 -0
  12. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts.map +1 -0
  13. package/esm/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js +301 -0
  14. package/esm/transport/0_obfuscation.d.ts.map +1 -1
  15. package/esm/transport/0_obfuscation.js +5 -4
  16. package/esm/transport/0_transport.d.ts +2 -2
  17. package/esm/transport/0_transport.d.ts.map +1 -1
  18. package/esm/transport/0_transport.js +10 -6
  19. package/esm/transport/1_transport_abridged.d.ts.map +1 -1
  20. package/esm/transport/1_transport_abridged.js +6 -8
  21. package/esm/transport/1_transport_intermediate.d.ts.map +1 -1
  22. package/esm/transport/1_transport_intermediate.js +4 -6
  23. package/esm/types/0_switch_inline_query_chosen_chats.d.ts +19 -0
  24. package/esm/types/0_switch_inline_query_chosen_chats.d.ts.map +1 -1
  25. package/esm/types/0_switch_inline_query_chosen_chats.js +19 -0
  26. package/esm/types/2_forward_header.d.ts +19 -0
  27. package/esm/types/2_forward_header.d.ts.map +1 -1
  28. package/esm/types/2_forward_header.js +19 -0
  29. package/esm/utilities/0_env.d.ts.map +1 -1
  30. package/esm/utilities/0_env.js +19 -0
  31. package/esm/utilities/0_gunzip.d.ts +19 -0
  32. package/esm/utilities/0_gunzip.d.ts.map +1 -1
  33. package/esm/utilities/0_gunzip.js +19 -0
  34. package/{script/utilities/0_crypto.d.ts → esm/utilities/1_crypto.d.ts} +9 -5
  35. package/esm/utilities/1_crypto.d.ts.map +1 -0
  36. package/esm/utilities/{0_crypto.js → 1_crypto.js} +41 -21
  37. package/esm/utilities/1_crypto_test.d.ts.map +1 -0
  38. package/package.json +1 -1
  39. package/script/0_deps.d.ts +1 -1
  40. package/script/0_deps.d.ts.map +1 -1
  41. package/script/0_deps.js +2 -5
  42. package/script/1_utilities.d.ts +1 -1
  43. package/script/1_utilities.d.ts.map +1 -1
  44. package/script/1_utilities.js +1 -1
  45. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts +18 -0
  46. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.d.ts.map +1 -0
  47. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js +71 -0
  48. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts +3 -0
  49. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.d.ts.map +1 -0
  50. package/script/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js +303 -0
  51. package/script/transport/0_obfuscation.d.ts.map +1 -1
  52. package/script/transport/0_obfuscation.js +5 -4
  53. package/script/transport/0_transport.d.ts +2 -2
  54. package/script/transport/0_transport.d.ts.map +1 -1
  55. package/script/transport/0_transport.js +10 -6
  56. package/script/transport/1_transport_abridged.d.ts.map +1 -1
  57. package/script/transport/1_transport_abridged.js +6 -8
  58. package/script/transport/1_transport_intermediate.d.ts.map +1 -1
  59. package/script/transport/1_transport_intermediate.js +4 -6
  60. package/script/types/0_switch_inline_query_chosen_chats.d.ts +19 -0
  61. package/script/types/0_switch_inline_query_chosen_chats.d.ts.map +1 -1
  62. package/script/types/0_switch_inline_query_chosen_chats.js +19 -0
  63. package/script/types/2_forward_header.d.ts +19 -0
  64. package/script/types/2_forward_header.d.ts.map +1 -1
  65. package/script/types/2_forward_header.js +19 -0
  66. package/script/utilities/0_env.d.ts.map +1 -1
  67. package/script/utilities/0_env.js +19 -0
  68. package/script/utilities/0_gunzip.d.ts +19 -0
  69. package/script/utilities/0_gunzip.d.ts.map +1 -1
  70. package/script/utilities/0_gunzip.js +19 -0
  71. package/{esm/utilities/0_crypto.d.ts → script/utilities/1_crypto.d.ts} +9 -5
  72. package/script/utilities/1_crypto.d.ts.map +1 -0
  73. package/script/utilities/1_crypto.js +95 -0
  74. package/script/utilities/1_crypto_test.d.ts.map +1 -0
  75. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.d.ts +0 -55
  76. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js +0 -167
  77. package/esm/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/tgcrypto.js +0 -308
  78. package/esm/utilities/0_crypto.d.ts.map +0 -1
  79. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.d.ts +0 -55
  80. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js +0 -182
  81. package/script/deps/jsr.io/@roj/tgcrypto/0.4.1/dist/tgcrypto.js +0 -310
  82. package/script/utilities/0_crypto.d.ts.map +0 -1
  83. package/script/utilities/0_crypto.js +0 -52
package/README.md CHANGED
@@ -1 +1,76 @@
1
- <https://github.com/MTKruto/MTKruto>
1
+ <div align="center">
2
+
3
+ # MTKruto
4
+
5
+ Cross-runtime JavaScript library for building Telegram clients
6
+
7
+ ###### [Documentation](https://mtkruto.deno.dev) / [API Reference](https://deno.land/x/mtkruto/mod.ts) / [Discussion Chat](https://t.me/MTKrutoChat) / [License](#license)
8
+
9
+ </div>
10
+
11
+ ### Key Features
12
+
13
+ - **Easy-to-use.** Provides high-level [methods](https://mtkruto.deno.dev/methods) and [types](https://mtkruto.deno.dev/types) for convenience.
14
+ - **Cross-runtime.** Supports Node.js, Deno, browsers, and Bun.
15
+ - **Type-safe.** Written in TypeScript with accurate typings.
16
+ - **Made for the Web.** Leverages Web APIs.
17
+ - **Unopinionated.** No hidden behaviors.
18
+ - **Extensible.** Highly customizable.
19
+
20
+ > Note: MTKruto has not reached version 1.0.0 yet. While it can run in production, we currently do not recommend depending on it for critical projects.
21
+
22
+ ## Get Started
23
+
24
+ ### Node.js
25
+
26
+ ```ts
27
+ const { Client, getRandomId } = require("@mtkruto/node"); // npm install @mtkruto/node
28
+
29
+ const client = new Client();
30
+ await client.connect();
31
+
32
+ const pong = await client.invoke({ _: "ping", ping_id: getRandomId() });
33
+ console.debug(pong);
34
+ ```
35
+
36
+ ### Deno
37
+
38
+ ```ts
39
+ import { Client, getRandomId } from "https://deno.land/x/mtkruto/mod.ts";
40
+
41
+ const client = new Client();
42
+ await client.connect();
43
+
44
+ const pong = await client.invoke({ _: "ping", ping_id: getRandomId() });
45
+ console.debug(pong);
46
+ ```
47
+
48
+ ### Browsers
49
+
50
+ ```html
51
+ <script type="module">
52
+ import { Client, getRandomId } from "https://esm.sh/jsr/@mtkruto/mtkruto";
53
+
54
+ const client = new Client();
55
+ await client.connect();
56
+
57
+ const pong = await client.invoke({ _: "ping", ping_id: getRandomId() });
58
+ console.debug(pong);
59
+ </script>
60
+ ```
61
+
62
+ ### Bun
63
+
64
+ ```ts
65
+ import { Client, getRandomId } from "@mtkruto/mtkruto"; // bunx jsr i @mtkruto/mtkruto
66
+
67
+ const client = new Client();
68
+ await client.connect();
69
+
70
+ const pong = await client.invoke({ _: "ping", ping_id: getRandomId() });
71
+ console.debug(pong);
72
+ ```
73
+
74
+ ## License
75
+
76
+ MTKruto is made open-source under the GNU Lesser General Public License version 3, or at your option, any later version. Refer to [COPYING](./COPYING) and [COPYING.LESSER](./COPYING.LESSER) for more.
package/esm/0_deps.d.ts CHANGED
@@ -30,6 +30,6 @@ export { decodeBase64, encodeBase64 } from "./deps/jsr.io/@std/encoding/1.0.5/ba
30
30
  import { contentType as contentType_ } from "./deps/jsr.io/@std/media-types/1.1.0/content_type.js";
31
31
  export declare const contentType: typeof contentType_;
32
32
  export declare function extension(mimeType: string): string;
33
- export { createCtr256State, ctr256, type Ctr256State, destroyCtr256State, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js";
33
+ export { ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js";
34
34
  export { Parser } from "htmlparser2";
35
35
  //# sourceMappingURL=0_deps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"0_deps.d.ts","sourceRoot":"","sources":["../src/0_deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sDAAsD,CAAC;AACnG,eAAO,MAAM,WAAW,EAAE,OAAO,YAMhC,CAAC;AAEF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,UAMzC;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAEpL,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"0_deps.d.ts","sourceRoot":"","sources":["../src/0_deps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,cAAc,wCAAwC,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,0CAA0C,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,0CAA0C,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,sDAAsD,CAAC;AACnG,eAAO,MAAM,WAAW,EAAE,OAAO,YAMhC,CAAC;AAEF,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,UAMzC;AAED,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,IAAI,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAEnH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
package/esm/0_deps.js CHANGED
@@ -45,5 +45,5 @@ export function extension(mimeType) {
45
45
  return extension_(mimeType) || "unknown";
46
46
  }
47
47
  }
48
- export { createCtr256State, ctr256, destroyCtr256State, ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/jsr.io/@roj/tgcrypto/0.4.1/dist/mod.js";
48
+ export { ige256Decrypt, ige256Encrypt, init as initTgCrypto } from "./deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.js";
49
49
  export { Parser } from "htmlparser2";
@@ -22,7 +22,6 @@ export * from "./utilities/0_bigint.js";
22
22
  export * from "./utilities/0_buffer.js";
23
23
  export * from "./utilities/0_cache_map.js";
24
24
  export * from "./utilities/0_color.js";
25
- export * from "./utilities/0_crypto.js";
26
25
  export * from "./utilities/0_gunzip.js";
27
26
  export * from "./utilities/0_hash.js";
28
27
  export * from "./utilities/0_mutex.js";
@@ -33,6 +32,7 @@ export * from "./utilities/0_types.js";
33
32
  export * from "./utilities/0_units.js";
34
33
  export * from "./utilities/1_auth.js";
35
34
  export * from "./utilities/1_base64.js";
35
+ export * from "./utilities/1_crypto.js";
36
36
  export * from "./utilities/1_logger.js";
37
37
  export * from "./utilities/1_math.js";
38
38
  export * from "./utilities/1_misc.js";
@@ -1 +1 @@
1
- {"version":3,"file":"1_utilities.d.ts","sourceRoot":"","sources":["../src/1_utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,qBAAqB,CAAC;AAG7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"1_utilities.d.ts","sourceRoot":"","sources":["../src/1_utilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,qBAAqB,CAAC;AAG7B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
@@ -22,7 +22,6 @@ export * from "./utilities/0_bigint.js";
22
22
  export * from "./utilities/0_buffer.js";
23
23
  export * from "./utilities/0_cache_map.js";
24
24
  export * from "./utilities/0_color.js";
25
- export * from "./utilities/0_crypto.js";
26
25
  export * from "./utilities/0_gunzip.js";
27
26
  export * from "./utilities/0_hash.js";
28
27
  export * from "./utilities/0_mutex.js";
@@ -33,6 +32,7 @@ export * from "./utilities/0_types.js";
33
32
  export * from "./utilities/0_units.js";
34
33
  export * from "./utilities/1_auth.js";
35
34
  export * from "./utilities/1_base64.js";
35
+ export * from "./utilities/1_crypto.js";
36
36
  export * from "./utilities/1_logger.js";
37
37
  export * from "./utilities/1_math.js";
38
38
  export * from "./utilities/1_misc.js";
@@ -0,0 +1,18 @@
1
+ export declare function init(): Promise<void>;
2
+ /**
3
+ * Performs IGE-256 encryption.
4
+ *
5
+ * @param data The unencrypted data, larger than a byte, divisible by 16
6
+ * @param key 32-byte encryption key
7
+ * @param iv 32-byte initialization vector
8
+ */
9
+ export declare function ige256Encrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
10
+ /**
11
+ * Performs IGE-256 decryption.
12
+ *
13
+ * @param data The encrypted data, larger than a byte, divisible by 16
14
+ * @param key 32-byte encryption key
15
+ * @param iv 32-byte initialization vector
16
+ */
17
+ export declare function ige256Decrypt(data: Uint8Array, key: Uint8Array, iv: Uint8Array): Uint8Array;
18
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/mod.ts"],"names":[],"mappings":"AAMA,wBAAsB,IAAI,kBAEzB;AAgBD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,GACb,UAAU,CAiBZ;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,GACb,UAAU,CAiBZ"}
@@ -0,0 +1,63 @@
1
+ import { default as init_ } from "./tgcrypto.js";
2
+ // deno-lint-ignore no-explicit-any
3
+ let module_;
4
+ const promise = init_().then((v) => module_ = v);
5
+ export async function init() {
6
+ await promise;
7
+ }
8
+ function checkIgeParams(data, key, iv) {
9
+ if (data.byteLength == 0) {
10
+ throw new TypeError("data must not be empty");
11
+ }
12
+ else if (data.byteLength % 16 != 0) {
13
+ throw new TypeError("data must consist of a number of bytes that is divisible by 16");
14
+ }
15
+ else if (key.byteLength != 32) {
16
+ throw new TypeError("key must be 32 bytes");
17
+ }
18
+ else if (iv.byteLength != 32) {
19
+ throw new TypeError("iv must be 32 bytes");
20
+ }
21
+ }
22
+ /**
23
+ * Performs IGE-256 encryption.
24
+ *
25
+ * @param data The unencrypted data, larger than a byte, divisible by 16
26
+ * @param key 32-byte encryption key
27
+ * @param iv 32-byte initialization vector
28
+ */
29
+ export function ige256Encrypt(data, key, iv) {
30
+ checkIgeParams(data, key, iv);
31
+ const out = module_._malloc(data.byteLength);
32
+ const datap = module_._malloc(data.byteLength);
33
+ module_.HEAPU8.set(data, datap);
34
+ module_.ccall("ige256_encrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
35
+ try {
36
+ return module_.HEAPU8.slice(out, out + data.byteLength);
37
+ }
38
+ finally {
39
+ module_._free(out);
40
+ module_._free(datap);
41
+ }
42
+ }
43
+ /**
44
+ * Performs IGE-256 decryption.
45
+ *
46
+ * @param data The encrypted data, larger than a byte, divisible by 16
47
+ * @param key 32-byte encryption key
48
+ * @param iv 32-byte initialization vector
49
+ */
50
+ export function ige256Decrypt(data, key, iv) {
51
+ checkIgeParams(data, key, iv);
52
+ const out = module_._malloc(data.byteLength);
53
+ const datap = module_._malloc(data.byteLength);
54
+ module_.HEAPU8.set(data, datap);
55
+ module_.ccall("ige256_decrypt", "void", ["pointer", "pointer", "number", "array", "array"], [datap, out, data.byteLength, key, iv]);
56
+ try {
57
+ return module_.HEAPU8.slice(out, out + data.byteLength);
58
+ }
59
+ finally {
60
+ module_._free(out);
61
+ module_._free(datap);
62
+ }
63
+ }
@@ -0,0 +1,3 @@
1
+ export default Module;
2
+ declare function Module(moduleArg?: {}): Promise<any>;
3
+ //# sourceMappingURL=tgcrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tgcrypto.d.ts","sourceRoot":"","sources":["../../../../../../../src/deps/jsr.io/@roj/tgcrypto/1.0.0/dist/tgcrypto.js"],"names":[],"mappings":";AAKA,sDAOC"}
@@ -0,0 +1,301 @@
1
+ var Module = (() => {
2
+ var _scriptName = import.meta.url;
3
+ return (function (moduleArg = {}) {
4
+ var moduleRtn;
5
+ var Module = moduleArg;
6
+ var readyPromiseResolve, readyPromiseReject;
7
+ var readyPromise = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; });
8
+ var ENVIRONMENT_IS_WEB = true;
9
+ var ENVIRONMENT_IS_WORKER = false;
10
+ var moduleOverrides = Object.assign({}, Module);
11
+ var arguments_ = [];
12
+ var thisProgram = "./this.program";
13
+ var scriptDirectory = "";
14
+ var readAsync, readBinary;
15
+ if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
16
+ if (ENVIRONMENT_IS_WORKER) {
17
+ scriptDirectory = self.location.href;
18
+ }
19
+ else if (typeof document != "undefined" && document.currentScript) {
20
+ scriptDirectory = document.currentScript.src;
21
+ }
22
+ if (_scriptName) {
23
+ scriptDirectory = _scriptName;
24
+ }
25
+ if (scriptDirectory.startsWith("blob:")) {
26
+ scriptDirectory = "";
27
+ }
28
+ else {
29
+ scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
30
+ }
31
+ {
32
+ readAsync = url => fetch(url, { credentials: "same-origin" }).then(response => { if (response.ok) {
33
+ return response.arrayBuffer();
34
+ } return Promise.reject(new Error(response.status + " : " + response.url)); });
35
+ }
36
+ }
37
+ else { }
38
+ var out = Module["print"] || console.log.bind(console);
39
+ var err = Module["printErr"] || console.error.bind(console);
40
+ Object.assign(Module, moduleOverrides);
41
+ moduleOverrides = null;
42
+ if (Module["arguments"])
43
+ arguments_ = Module["arguments"];
44
+ if (Module["thisProgram"])
45
+ thisProgram = Module["thisProgram"];
46
+ var wasmBinary = Module["wasmBinary"];
47
+ function intArrayFromBase64(s) { var decoded = atob(s); var bytes = new Uint8Array(decoded.length); for (var i = 0; i < decoded.length; ++i) {
48
+ bytes[i] = decoded.charCodeAt(i);
49
+ } return bytes; }
50
+ function tryParseAsDataURI(filename) { if (!isDataURI(filename)) {
51
+ return;
52
+ } return intArrayFromBase64(filename.slice(dataURIPrefix.length)); }
53
+ var wasmMemory;
54
+ var ABORT = false;
55
+ var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;
56
+ function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP8"] = HEAP8 = new Int8Array(b); Module["HEAP16"] = HEAP16 = new Int16Array(b); Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); Module["HEAP32"] = HEAP32 = new Int32Array(b); Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); Module["HEAPF32"] = HEAPF32 = new Float32Array(b); Module["HEAPF64"] = HEAPF64 = new Float64Array(b); Module["HEAP64"] = HEAP64 = new BigInt64Array(b); Module["HEAPU64"] = HEAPU64 = new BigUint64Array(b); }
57
+ var __ATPRERUN__ = [];
58
+ var __ATINIT__ = [];
59
+ var __ATPOSTRUN__ = [];
60
+ var runtimeInitialized = false;
61
+ function preRun() { if (Module["preRun"]) {
62
+ if (typeof Module["preRun"] == "function")
63
+ Module["preRun"] = [Module["preRun"]];
64
+ while (Module["preRun"].length) {
65
+ addOnPreRun(Module["preRun"].shift());
66
+ }
67
+ } callRuntimeCallbacks(__ATPRERUN__); }
68
+ function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks(__ATINIT__); }
69
+ function postRun() { if (Module["postRun"]) {
70
+ if (typeof Module["postRun"] == "function")
71
+ Module["postRun"] = [Module["postRun"]];
72
+ while (Module["postRun"].length) {
73
+ addOnPostRun(Module["postRun"].shift());
74
+ }
75
+ } callRuntimeCallbacks(__ATPOSTRUN__); }
76
+ function addOnPreRun(cb) { __ATPRERUN__.unshift(cb); }
77
+ function addOnInit(cb) { __ATINIT__.unshift(cb); }
78
+ function addOnPostRun(cb) { __ATPOSTRUN__.unshift(cb); }
79
+ var runDependencies = 0;
80
+ var runDependencyWatcher = null;
81
+ var dependenciesFulfilled = null;
82
+ function addRunDependency(id) { runDependencies++; Module["monitorRunDependencies"]?.(runDependencies); }
83
+ function removeRunDependency(id) { runDependencies--; Module["monitorRunDependencies"]?.(runDependencies); if (runDependencies == 0) {
84
+ if (runDependencyWatcher !== null) {
85
+ clearInterval(runDependencyWatcher);
86
+ runDependencyWatcher = null;
87
+ }
88
+ if (dependenciesFulfilled) {
89
+ var callback = dependenciesFulfilled;
90
+ dependenciesFulfilled = null;
91
+ callback();
92
+ }
93
+ } }
94
+ function abort(what) { Module["onAbort"]?.(what); what = "Aborted(" + what + ")"; err(what); ABORT = true; what += ". Build with -sASSERTIONS for more info."; var e = new WebAssembly.RuntimeError(what); readyPromiseReject(e); throw e; }
95
+ var dataURIPrefix = "data:application/octet-stream;base64,";
96
+ var isDataURI = filename => filename.startsWith(dataURIPrefix);
97
+ function findWasmBinary() { var f = "data:application/octet-stream;base64,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"; return f; }
98
+ var wasmBinaryFile;
99
+ function getBinarySync(file) { if (file == wasmBinaryFile && wasmBinary) {
100
+ return new Uint8Array(wasmBinary);
101
+ } var binary = tryParseAsDataURI(file); if (binary) {
102
+ return binary;
103
+ } if (readBinary) {
104
+ return readBinary(file);
105
+ } throw "both async and sync fetching of the wasm failed"; }
106
+ function getBinaryPromise(binaryFile) { return Promise.resolve().then(() => getBinarySync(binaryFile)); }
107
+ function instantiateArrayBuffer(binaryFile, imports, receiver) { return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); }); }
108
+ function instantiateAsync(binary, binaryFile, imports, callback) { return instantiateArrayBuffer(binaryFile, imports, callback); }
109
+ function getWasmImports() { return { a: wasmImports }; }
110
+ function createWasm() { var info = getWasmImports(); function receiveInstance(instance, module) { wasmExports = instance.exports; wasmMemory = wasmExports["b"]; updateMemoryViews(); addOnInit(wasmExports["c"]); removeRunDependency("wasm-instantiate"); return wasmExports; } addRunDependency("wasm-instantiate"); function receiveInstantiationResult(result) { receiveInstance(result["instance"]); } if (Module["instantiateWasm"]) {
111
+ try {
112
+ return Module["instantiateWasm"](info, receiveInstance);
113
+ }
114
+ catch (e) {
115
+ err(`Module.instantiateWasm callback failed with error: ${e}`);
116
+ readyPromiseReject(e);
117
+ }
118
+ } wasmBinaryFile ??= findWasmBinary(); instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); return {}; }
119
+ class ExitStatus {
120
+ constructor(status) {
121
+ Object.defineProperty(this, "name", {
122
+ enumerable: true,
123
+ configurable: true,
124
+ writable: true,
125
+ value: "ExitStatus"
126
+ });
127
+ this.message = `Program terminated with exit(${status})`;
128
+ this.status = status;
129
+ }
130
+ }
131
+ var callRuntimeCallbacks = callbacks => { while (callbacks.length > 0) {
132
+ callbacks.shift()(Module);
133
+ } };
134
+ var noExitRuntime = Module["noExitRuntime"] || true;
135
+ var stackRestore = val => __emscripten_stack_restore(val);
136
+ var stackSave = () => _emscripten_stack_get_current();
137
+ var getHeapMax = () => 2147483648;
138
+ var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
139
+ var growMemory = size => { var b = wasmMemory.buffer; var pages = (size - b.byteLength + 65535) / 65536 | 0; try {
140
+ wasmMemory.grow(pages);
141
+ updateMemoryViews();
142
+ return 1;
143
+ }
144
+ catch (e) { } };
145
+ var _emscripten_resize_heap = requestedSize => { var oldSize = HEAPU8.length; requestedSize >>>= 0; var maxHeapSize = getHeapMax(); if (requestedSize > maxHeapSize) {
146
+ return false;
147
+ } for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
148
+ var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
149
+ overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
150
+ var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));
151
+ var replacement = growMemory(newSize);
152
+ if (replacement) {
153
+ return true;
154
+ }
155
+ } return false; };
156
+ var getCFunc = ident => { var func = Module["_" + ident]; return func; };
157
+ var writeArrayToMemory = (array, buffer) => { HEAP8.set(array, buffer); };
158
+ var lengthBytesUTF8 = str => { var len = 0; for (var i = 0; i < str.length; ++i) {
159
+ var c = str.charCodeAt(i);
160
+ if (c <= 127) {
161
+ len++;
162
+ }
163
+ else if (c <= 2047) {
164
+ len += 2;
165
+ }
166
+ else if (c >= 55296 && c <= 57343) {
167
+ len += 4;
168
+ ++i;
169
+ }
170
+ else {
171
+ len += 3;
172
+ }
173
+ } return len; };
174
+ var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => { if (!(maxBytesToWrite > 0))
175
+ return 0; var startIdx = outIdx; var endIdx = outIdx + maxBytesToWrite - 1; for (var i = 0; i < str.length; ++i) {
176
+ var u = str.charCodeAt(i);
177
+ if (u >= 55296 && u <= 57343) {
178
+ var u1 = str.charCodeAt(++i);
179
+ u = 65536 + ((u & 1023) << 10) | u1 & 1023;
180
+ }
181
+ if (u <= 127) {
182
+ if (outIdx >= endIdx)
183
+ break;
184
+ heap[outIdx++] = u;
185
+ }
186
+ else if (u <= 2047) {
187
+ if (outIdx + 1 >= endIdx)
188
+ break;
189
+ heap[outIdx++] = 192 | u >> 6;
190
+ heap[outIdx++] = 128 | u & 63;
191
+ }
192
+ else if (u <= 65535) {
193
+ if (outIdx + 2 >= endIdx)
194
+ break;
195
+ heap[outIdx++] = 224 | u >> 12;
196
+ heap[outIdx++] = 128 | u >> 6 & 63;
197
+ heap[outIdx++] = 128 | u & 63;
198
+ }
199
+ else {
200
+ if (outIdx + 3 >= endIdx)
201
+ break;
202
+ heap[outIdx++] = 240 | u >> 18;
203
+ heap[outIdx++] = 128 | u >> 12 & 63;
204
+ heap[outIdx++] = 128 | u >> 6 & 63;
205
+ heap[outIdx++] = 128 | u & 63;
206
+ }
207
+ } heap[outIdx] = 0; return outIdx - startIdx; };
208
+ var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
209
+ var stackAlloc = sz => __emscripten_stack_alloc(sz);
210
+ var stringToUTF8OnStack = str => { var size = lengthBytesUTF8(str) + 1; var ret = stackAlloc(size); stringToUTF8(str, ret, size); return ret; };
211
+ var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
212
+ var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => { var endIdx = idx + maxBytesToRead; var endPtr = idx; while (heapOrArray[endPtr] && !(endPtr >= endIdx))
213
+ ++endPtr; if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
214
+ return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
215
+ } var str = ""; while (idx < endPtr) {
216
+ var u0 = heapOrArray[idx++];
217
+ if (!(u0 & 128)) {
218
+ str += String.fromCharCode(u0);
219
+ continue;
220
+ }
221
+ var u1 = heapOrArray[idx++] & 63;
222
+ if ((u0 & 224) == 192) {
223
+ str += String.fromCharCode((u0 & 31) << 6 | u1);
224
+ continue;
225
+ }
226
+ var u2 = heapOrArray[idx++] & 63;
227
+ if ((u0 & 240) == 224) {
228
+ u0 = (u0 & 15) << 12 | u1 << 6 | u2;
229
+ }
230
+ else {
231
+ u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;
232
+ }
233
+ if (u0 < 65536) {
234
+ str += String.fromCharCode(u0);
235
+ }
236
+ else {
237
+ var ch = u0 - 65536;
238
+ str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
239
+ }
240
+ } return str; };
241
+ var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
242
+ var ccall = (ident, returnType, argTypes, args, opts) => { var toC = { string: str => { var ret = 0; if (str !== null && str !== undefined && str !== 0) {
243
+ ret = stringToUTF8OnStack(str);
244
+ } return ret; }, array: arr => { var ret = stackAlloc(arr.length); writeArrayToMemory(arr, ret); return ret; } }; function convertReturnValue(ret) { if (returnType === "string") {
245
+ return UTF8ToString(ret);
246
+ } if (returnType === "boolean")
247
+ return Boolean(ret); return ret; } var func = getCFunc(ident); var cArgs = []; var stack = 0; if (args) {
248
+ for (var i = 0; i < args.length; i++) {
249
+ var converter = toC[argTypes[i]];
250
+ if (converter) {
251
+ if (stack === 0)
252
+ stack = stackSave();
253
+ cArgs[i] = converter(args[i]);
254
+ }
255
+ else {
256
+ cArgs[i] = args[i];
257
+ }
258
+ }
259
+ } var ret = func(...cArgs); function onDone(ret) { if (stack !== 0)
260
+ stackRestore(stack); return convertReturnValue(ret); } ret = onDone(ret); return ret; };
261
+ var wasmImports = { a: _emscripten_resize_heap };
262
+ var wasmExports = createWasm();
263
+ var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["c"])();
264
+ var _ige256_encrypt = Module["_ige256_encrypt"] = (a0, a1, a2, a3, a4) => (_ige256_encrypt = Module["_ige256_encrypt"] = wasmExports["e"])(a0, a1, a2, a3, a4);
265
+ var _ige256_decrypt = Module["_ige256_decrypt"] = (a0, a1, a2, a3, a4) => (_ige256_decrypt = Module["_ige256_decrypt"] = wasmExports["f"])(a0, a1, a2, a3, a4);
266
+ var _malloc = Module["_malloc"] = a0 => (_malloc = Module["_malloc"] = wasmExports["g"])(a0);
267
+ var _free = Module["_free"] = a0 => (_free = Module["_free"] = wasmExports["h"])(a0);
268
+ var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports["i"])(a0);
269
+ var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports["j"])(a0);
270
+ var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["k"])();
271
+ Module["ccall"] = ccall;
272
+ var calledRun;
273
+ dependenciesFulfilled = function runCaller() { if (!calledRun)
274
+ run(); if (!calledRun)
275
+ dependenciesFulfilled = runCaller; };
276
+ function run() { if (runDependencies > 0) {
277
+ return;
278
+ } preRun(); if (runDependencies > 0) {
279
+ return;
280
+ } function doRun() { if (calledRun)
281
+ return; calledRun = true; Module["calledRun"] = true; if (ABORT)
282
+ return; initRuntime(); readyPromiseResolve(Module); Module["onRuntimeInitialized"]?.(); postRun(); } if (Module["setStatus"]) {
283
+ Module["setStatus"]("Running...");
284
+ setTimeout(() => { setTimeout(() => Module["setStatus"](""), 1); doRun(); }, 1);
285
+ }
286
+ else {
287
+ doRun();
288
+ } }
289
+ if (Module["preInit"]) {
290
+ if (typeof Module["preInit"] == "function")
291
+ Module["preInit"] = [Module["preInit"]];
292
+ while (Module["preInit"].length > 0) {
293
+ Module["preInit"].pop()();
294
+ }
295
+ }
296
+ run();
297
+ moduleRtn = readyPromise;
298
+ return moduleRtn;
299
+ });
300
+ })();
301
+ export default Module;
@@ -1 +1 @@
1
- {"version":3,"file":"0_obfuscation.d.ts","sourceRoot":"","sources":["../../src/transport/0_obfuscation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAoB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;GAuCtF"}
1
+ {"version":3,"file":"0_obfuscation.d.ts","sourceRoot":"","sources":["../../src/transport/0_obfuscation.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAoB,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;;;GA0CtF"}