@vaitosoi/minejs 0.4.2 → 0.5.0
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 +53 -5
- package/assets/doc/rejected.png +0 -0
- package/assets/minecraft/26.2/effects.json +42 -0
- package/assets/minecraft/26.2/packets.json +3 -2
- package/dist/base/bitset.d.ts +43 -4
- package/dist/base/bitset.d.ts.map +1 -1
- package/dist/base/bitset.js +251 -30
- package/dist/base/bitset.js.map +1 -1
- package/dist/base/cache.d.ts +24 -0
- package/dist/base/cache.d.ts.map +1 -0
- package/dist/base/cache.js +58 -0
- package/dist/base/cache.js.map +1 -0
- package/dist/base/error.d.ts +13 -0
- package/dist/base/error.d.ts.map +1 -1
- package/dist/base/error.js +19 -1
- package/dist/base/error.js.map +1 -1
- package/dist/base/math.d.ts +12 -0
- package/dist/base/math.d.ts.map +1 -1
- package/dist/base/math.js +39 -0
- package/dist/base/math.js.map +1 -1
- package/dist/base/typing.d.ts +7 -0
- package/dist/base/typing.d.ts.map +1 -1
- package/dist/{packet → binary}/decoder.d.ts.map +1 -1
- package/dist/{packet → binary}/decoder.js.map +1 -1
- package/dist/{packet → binary}/encoder.d.ts +2 -2
- package/dist/binary/encoder.d.ts.map +1 -0
- package/dist/{packet → binary}/encoder.js +6 -2
- package/dist/binary/encoder.js.map +1 -0
- package/dist/{packet → binary}/static.d.ts.map +1 -1
- package/dist/{packet → binary}/static.js.map +1 -1
- package/dist/client/client.d.ts +23 -2
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +34 -19
- package/dist/client/client.js.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/{client → net}/tcp.d.ts +2 -2
- package/dist/net/tcp.d.ts.map +1 -0
- package/dist/{client → net}/tcp.js +4 -2
- package/dist/net/tcp.js.map +1 -0
- package/dist/packet/{dispatcher.d.ts → listener.d.ts} +7 -18
- package/dist/packet/listener.d.ts.map +1 -0
- package/dist/packet/{dispatcher.js → listener.js} +73 -139
- package/dist/packet/listener.js.map +1 -0
- package/dist/packet/sender.d.ts +25 -0
- package/dist/packet/sender.d.ts.map +1 -0
- package/dist/packet/sender.js +144 -0
- package/dist/packet/sender.js.map +1 -0
- package/dist/physics/aabb.d.ts.map +1 -1
- package/dist/physics/aabb.js +9 -8
- package/dist/physics/aabb.js.map +1 -1
- package/dist/physics/player.d.ts +1 -0
- package/dist/physics/player.d.ts.map +1 -1
- package/dist/physics/player.js +22 -4
- package/dist/physics/player.js.map +1 -1
- package/dist/version/codec.d.ts +1 -1
- package/dist/version/codec.d.ts.map +1 -1
- package/dist/version/codec.js +28 -6
- package/dist/version/codec.js.map +1 -1
- package/dist/version/registry.d.ts +19 -2
- package/dist/version/registry.d.ts.map +1 -1
- package/dist/version/registry.js +35 -3
- package/dist/version/registry.js.map +1 -1
- package/dist/world/block.d.ts +5 -0
- package/dist/world/block.d.ts.map +1 -1
- package/dist/world/block.js +56 -0
- package/dist/world/block.js.map +1 -1
- package/dist/world/state.d.ts +22 -3
- package/dist/world/state.d.ts.map +1 -1
- package/dist/world/state.js +36 -12
- package/dist/world/state.js.map +1 -1
- package/package.json +8 -10
- package/src/base/bitset.ts +312 -31
- package/src/base/cache.ts +62 -0
- package/src/base/error.ts +16 -0
- package/src/base/math.ts +43 -1
- package/src/base/typing.ts +5 -0
- package/src/{packet → binary}/encoder.ts +6 -2
- package/src/client/client.ts +56 -23
- package/src/index.ts +12 -4
- package/src/{client → net}/tcp.ts +5 -3
- package/src/packet/{dispatcher.ts → listener.ts} +92 -177
- package/src/packet/sender.ts +176 -0
- package/src/physics/aabb.ts +9 -8
- package/src/physics/player.ts +20 -5
- package/src/version/codec.ts +29 -8
- package/src/version/registry.ts +58 -5
- package/src/world/block.ts +72 -2
- package/src/world/state.ts +59 -14
- package/test/bitset/index.ts +3 -8
- package/test/client/index.ts +23 -13
- package/test/state/index.ts +7 -0
- package/dist/client/tcp.d.ts.map +0 -1
- package/dist/client/tcp.js.map +0 -1
- package/dist/packet/dispatcher.d.ts.map +0 -1
- package/dist/packet/dispatcher.js.map +0 -1
- package/dist/packet/encoder.d.ts.map +0 -1
- package/dist/packet/encoder.js.map +0 -1
- /package/dist/{packet → binary}/decoder.d.ts +0 -0
- /package/dist/{packet → binary}/decoder.js +0 -0
- /package/dist/{packet → binary}/static.d.ts +0 -0
- /package/dist/{packet → binary}/static.js +0 -0
- /package/src/{packet → binary}/decoder.ts +0 -0
- /package/src/{packet → binary}/static.ts +0 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ This is a Minecraft client package, written entirely in Typescript, using NodeJS
|
|
|
10
10
|
|
|
11
11
|
This package is highly unstable for now, please report if there is any bug, glitch.
|
|
12
12
|
|
|
13
|
-
Also, since there is some problem with authenticating and appId approval,
|
|
13
|
+
Also, since there is some problem with authenticating and appId approval, I haven't completed the join "online server" part yet. [See more here](#iv-about-joining-online-server)
|
|
14
14
|
|
|
15
15
|
## II. Usage
|
|
16
16
|
|
|
@@ -38,8 +38,8 @@ const client = new Client({
|
|
|
38
38
|
// openBrowser: true,
|
|
39
39
|
// port: 12345
|
|
40
40
|
// },
|
|
41
|
-
shouldVerifyMessageOrder: true,
|
|
42
|
-
shouldVerifyMessageSignature: true
|
|
41
|
+
// shouldVerifyMessageOrder: true,
|
|
42
|
+
// shouldVerifyMessageSignature: true
|
|
43
43
|
});
|
|
44
44
|
client.connect();
|
|
45
45
|
client.on("disconnect", (...args) => console.dir({ name: "disconnect", args }, { depth: null }));
|
|
@@ -80,7 +80,15 @@ client.on("message", (message) => {
|
|
|
80
80
|
case "at": {
|
|
81
81
|
const [, x, y, z] = args.map(val => parseInt(val)) as [any, number, number, number];
|
|
82
82
|
const state = client.at(x, y, z);
|
|
83
|
-
|
|
83
|
+
console.log(state);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
case "e":
|
|
88
|
+
case "echo":
|
|
89
|
+
case "say": {
|
|
90
|
+
const message = args.slice(1).join(" ");
|
|
91
|
+
client.chat(message);
|
|
84
92
|
break;
|
|
85
93
|
}
|
|
86
94
|
|
|
@@ -104,4 +112,44 @@ See [documentation](https://minejs.vaito.dev)
|
|
|
104
112
|
|
|
105
113
|
## IV. About joining online server:
|
|
106
114
|
|
|
107
|
-
|
|
115
|
+
### 1. What is `online server` and `offline server`:
|
|
116
|
+
|
|
117
|
+
+ `Offline server` is a server you can join with a cracked account, meaning that you don't have to own Minecraft to join.
|
|
118
|
+
|
|
119
|
+
+ `Online server`, on the other hand, require an account that owns Minecraft.
|
|
120
|
+
|
|
121
|
+
### 2. Why I can't join online server yet:
|
|
122
|
+
|
|
123
|
+
In order to join "online server", the client has to send some request to Minecraft server, which require an approved Azure App (more info in [here](https://minecraft.wiki/w/Microsoft_authentication#Microsoft_OAuth2_flow) and [here](https://help.minecraft.net/hc/en-us/articles/16254801392141p)), which I don't have at the moment. So I can not fully test the "join online server" feature right now.
|
|
124
|
+
|
|
125
|
+
### 3. So how do you know if the server is offline or online:
|
|
126
|
+
|
|
127
|
+
#### a. If you are the server owner:
|
|
128
|
+
|
|
129
|
+
Check your `server.properties` file:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
...
|
|
133
|
+
motd=A Minecraft Server
|
|
134
|
+
network-compression-threshold=256
|
|
135
|
+
online-mode=false # <- false is offline, true is onlune
|
|
136
|
+
op-permission-level=4
|
|
137
|
+
pause-when-empty-seconds=60
|
|
138
|
+
...
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
#### b. If you are not the server owner:
|
|
142
|
+
|
|
143
|
+
1. Ask the server owner
|
|
144
|
+
|
|
145
|
+
or
|
|
146
|
+
|
|
147
|
+
2. Try some crack launcher to join that sevrer
|
|
148
|
+
|
|
149
|
+
### 4. Note:
|
|
150
|
+
|
|
151
|
+
But still, if you somehow got an approved app and found some bug, please [create a issue](https://github.com/VaitoSoi/minejs/issues/new)
|
|
152
|
+
|
|
153
|
+
**P/s:** They rejected me 😭
|
|
154
|
+
|
|
155
|
+

|
|
Binary file
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"minecraft:absorption": 21,
|
|
3
|
+
"minecraft:bad_omen": 30,
|
|
4
|
+
"minecraft:blindness": 14,
|
|
5
|
+
"minecraft:breath_of_the_nautilus": 39,
|
|
6
|
+
"minecraft:conduit_power": 28,
|
|
7
|
+
"minecraft:darkness": 32,
|
|
8
|
+
"minecraft:dolphins_grace": 29,
|
|
9
|
+
"minecraft:fire_resistance": 11,
|
|
10
|
+
"minecraft:glowing": 23,
|
|
11
|
+
"minecraft:haste": 2,
|
|
12
|
+
"minecraft:health_boost": 20,
|
|
13
|
+
"minecraft:hero_of_the_village": 31,
|
|
14
|
+
"minecraft:hunger": 16,
|
|
15
|
+
"minecraft:infested": 38,
|
|
16
|
+
"minecraft:instant_damage": 6,
|
|
17
|
+
"minecraft:instant_health": 5,
|
|
18
|
+
"minecraft:invisibility": 13,
|
|
19
|
+
"minecraft:jump_boost": 7,
|
|
20
|
+
"minecraft:levitation": 24,
|
|
21
|
+
"minecraft:luck": 25,
|
|
22
|
+
"minecraft:mining_fatigue": 3,
|
|
23
|
+
"minecraft:nausea": 8,
|
|
24
|
+
"minecraft:night_vision": 15,
|
|
25
|
+
"minecraft:oozing": 37,
|
|
26
|
+
"minecraft:poison": 18,
|
|
27
|
+
"minecraft:raid_omen": 34,
|
|
28
|
+
"minecraft:regeneration": 9,
|
|
29
|
+
"minecraft:resistance": 10,
|
|
30
|
+
"minecraft:saturation": 22,
|
|
31
|
+
"minecraft:slow_falling": 27,
|
|
32
|
+
"minecraft:slowness": 1,
|
|
33
|
+
"minecraft:speed": 0,
|
|
34
|
+
"minecraft:strength": 4,
|
|
35
|
+
"minecraft:trial_omen": 33,
|
|
36
|
+
"minecraft:unluck": 26,
|
|
37
|
+
"minecraft:water_breathing": 12,
|
|
38
|
+
"minecraft:weakness": 17,
|
|
39
|
+
"minecraft:weaving": 36,
|
|
40
|
+
"minecraft:wind_charged": 35,
|
|
41
|
+
"minecraft:wither": 19
|
|
42
|
+
}
|
|
@@ -1503,7 +1503,8 @@
|
|
|
1503
1503
|
},
|
|
1504
1504
|
"light": {
|
|
1505
1505
|
"type": "not_implemented",
|
|
1506
|
-
"comment": "Light Data"
|
|
1506
|
+
"comment": "Light Data",
|
|
1507
|
+
"skip_able": true
|
|
1507
1508
|
}
|
|
1508
1509
|
}
|
|
1509
1510
|
},
|
|
@@ -3711,7 +3712,7 @@
|
|
|
3711
3712
|
"type": "var_int"
|
|
3712
3713
|
},
|
|
3713
3714
|
"acknowledged": {
|
|
3714
|
-
"type": "
|
|
3715
|
+
"type": "fixed_bitset",
|
|
3715
3716
|
"length": 20
|
|
3716
3717
|
},
|
|
3717
3718
|
"checksum": {
|
package/dist/base/bitset.d.ts
CHANGED
|
@@ -1,9 +1,48 @@
|
|
|
1
|
-
import BitSet_ from "bitset";
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
2
|
+
* Simplified implementation of the Java's BitSet class
|
|
3
|
+
*
|
|
4
|
+
* @see https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/BitSet.java
|
|
5
|
+
* @hidden
|
|
4
6
|
*/
|
|
5
|
-
export declare class BitSet
|
|
6
|
-
|
|
7
|
+
export declare class BitSet {
|
|
8
|
+
static readonly ADDRESS_BITS_PER_WORD = 6;
|
|
9
|
+
static readonly BITS_PER_WORD: number;
|
|
10
|
+
static readonly WORD_MASK = 18446744073709551615n;
|
|
11
|
+
words: BigUint64Array;
|
|
12
|
+
wordsInUse: number;
|
|
13
|
+
private static wordIndex;
|
|
14
|
+
private static bitIndexInWord;
|
|
15
|
+
/**
|
|
16
|
+
* Create a mask with lowest `n` bits set to 1
|
|
17
|
+
*
|
|
18
|
+
* For example:
|
|
19
|
+
* * n = 0 -> `0b0n`
|
|
20
|
+
* * n = 3 -> `0b111n`
|
|
21
|
+
* * n = 5 -> `0b11111n`
|
|
22
|
+
*
|
|
23
|
+
* @param nBits
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
private static lowBits;
|
|
27
|
+
private initWords;
|
|
28
|
+
private static checkRange;
|
|
29
|
+
constructor(nBits?: number);
|
|
7
30
|
clone(): BitSet;
|
|
31
|
+
private expandTo;
|
|
32
|
+
private ensureCapacity;
|
|
33
|
+
private recalculateWordsInUse;
|
|
34
|
+
private checkInvariants;
|
|
35
|
+
toByteArray(): number[];
|
|
36
|
+
flip(bitIndex: number): void;
|
|
37
|
+
set(bitIndex: number): void;
|
|
38
|
+
setRange(fromIndex: number, toIndex: number): void;
|
|
39
|
+
clear(bitIndex: number): void;
|
|
40
|
+
clearRange(fromIndex: number, toIndex: number): void;
|
|
41
|
+
get(bitIndex: number): boolean;
|
|
42
|
+
nextSetBit(fromIndex: number): number;
|
|
43
|
+
nextClearBit(fromIndex: number): number;
|
|
44
|
+
length(): number;
|
|
45
|
+
isEmpty(): boolean;
|
|
8
46
|
}
|
|
47
|
+
export default BitSet;
|
|
9
48
|
//# sourceMappingURL=bitset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bitset.d.ts","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,qBAAa,MAAM;IACf,gBAAuB,qBAAqB,KAAK;IACjD,gBAAuB,aAAa,SAAmC;IACvE,gBAAuB,SAAS,yBAAuB;IAEhD,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,MAAM,CAAK;IAE9B,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB,OAAO,CAAC,MAAM,CAAC,cAAc;IAI7B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB,YAAY,KAAK,CAAC,EAAE,MAAM,EAIzB;IAEM,KAAK,WAMX;IAED,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,eAAe;IAOhB,WAAW,aAiBjB;IAEM,IAAI,CAAC,QAAQ,EAAE,MAAM,QAW3B;IAEM,GAAG,CAAC,QAAQ,EAAE,MAAM,QAU1B;IACM,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAgDjD;IAGM,KAAK,CAAC,QAAQ,EAAE,MAAM,QAY5B;IACM,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAyCnD;IAGM,GAAG,CAAC,QAAQ,EAAE,MAAM,WAW1B;IAEM,UAAU,CAAC,SAAS,EAAE,MAAM,UAmBlC;IAEM,YAAY,CAAC,SAAS,EAAE,MAAM,UAqBpC;IAEM,MAAM,WAMZ;IAEM,OAAO,YAEb;CACJ;eAEc,MAAM"}
|
package/dist/base/bitset.js
CHANGED
|
@@ -4,43 +4,264 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.BitSet = void 0;
|
|
7
|
-
const
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const error_1 = require("./error");
|
|
9
|
+
const math_1 = require("./math");
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* Simplified implementation of the Java's BitSet class
|
|
12
|
+
*
|
|
13
|
+
* @see https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/BitSet.java
|
|
14
|
+
* @hidden
|
|
10
15
|
*/
|
|
11
|
-
class BitSet
|
|
16
|
+
class BitSet {
|
|
17
|
+
static ADDRESS_BITS_PER_WORD = 6;
|
|
18
|
+
static BITS_PER_WORD = 1 << this.ADDRESS_BITS_PER_WORD;
|
|
19
|
+
static WORD_MASK = 0xffffffffffffffffn;
|
|
20
|
+
words;
|
|
21
|
+
wordsInUse = 0;
|
|
22
|
+
static wordIndex(bitIndex) {
|
|
23
|
+
return bitIndex >> this.ADDRESS_BITS_PER_WORD;
|
|
24
|
+
}
|
|
25
|
+
static bitIndexInWord(bitIndex) {
|
|
26
|
+
return bitIndex & (this.BITS_PER_WORD - 1); // should be bitIndex & 63
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a mask with lowest `n` bits set to 1
|
|
30
|
+
*
|
|
31
|
+
* For example:
|
|
32
|
+
* * n = 0 -> `0b0n`
|
|
33
|
+
* * n = 3 -> `0b111n`
|
|
34
|
+
* * n = 5 -> `0b11111n`
|
|
35
|
+
*
|
|
36
|
+
* @param nBits
|
|
37
|
+
* @returns
|
|
38
|
+
*/
|
|
39
|
+
static lowBits(nBits) {
|
|
40
|
+
return (1n << BigInt(nBits)) - 1n;
|
|
41
|
+
}
|
|
42
|
+
initWords(nBits) {
|
|
43
|
+
return new BigUint64Array(BitSet.wordIndex(nBits - 1) + 1);
|
|
44
|
+
}
|
|
45
|
+
static checkRange(fromIndex, toIndex) {
|
|
46
|
+
if (fromIndex < 0)
|
|
47
|
+
throw new error_1.UnexpectedValue("value of fromIndex", fromIndex.toString(), "non-negative number");
|
|
48
|
+
if (toIndex < 0)
|
|
49
|
+
throw new error_1.UnexpectedValue("value of toIndex", toIndex.toString(), "non-negative number");
|
|
50
|
+
if (fromIndex > toIndex)
|
|
51
|
+
throw new error_1.UnexpectedValue("fromIndex and toIndex", `fromIndex ${fromIndex}; toIndex ${toIndex}`, "fromIndex has to be smaller than toIndex");
|
|
52
|
+
}
|
|
53
|
+
constructor(nBits) {
|
|
54
|
+
if (nBits && nBits < 0)
|
|
55
|
+
throw new error_1.UnexpectedValue("length of bitset", nBits.toString(), "non-negative number");
|
|
56
|
+
this.words = this.initWords(nBits ?? BitSet.BITS_PER_WORD);
|
|
57
|
+
}
|
|
58
|
+
clone() {
|
|
59
|
+
const bitset = new BitSet(0);
|
|
60
|
+
bitset.words = structuredClone(this.words);
|
|
61
|
+
bitset.wordsInUse = this.wordsInUse;
|
|
62
|
+
bitset.checkInvariants();
|
|
63
|
+
return bitset;
|
|
64
|
+
}
|
|
65
|
+
expandTo(wordIndex) {
|
|
66
|
+
const wordsRequired = wordIndex + 1;
|
|
67
|
+
if (this.wordsInUse < wordsRequired) {
|
|
68
|
+
this.ensureCapacity(wordsRequired);
|
|
69
|
+
this.wordsInUse = wordsRequired;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
ensureCapacity(wordsRequired) {
|
|
73
|
+
if (wordsRequired > this.words.length) {
|
|
74
|
+
// Allocate larger of doubled size or required size
|
|
75
|
+
const request = Math.max(2 * this.words.length, wordsRequired);
|
|
76
|
+
const newWords = new BigUint64Array(request);
|
|
77
|
+
newWords.set(this.words);
|
|
78
|
+
this.words = newWords;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
recalculateWordsInUse() {
|
|
82
|
+
let i = this.wordsInUse - 1;
|
|
83
|
+
while (i >= 0 && this.words[i] === 0n)
|
|
84
|
+
i--;
|
|
85
|
+
this.wordsInUse = i + 1; // The new logical size
|
|
86
|
+
}
|
|
87
|
+
checkInvariants() {
|
|
88
|
+
(0, node_assert_1.default)(this.wordsInUse === 0 || this.words[this.wordsInUse - 1] !== 0n);
|
|
89
|
+
(0, node_assert_1.default)(this.wordsInUse >= 0 && this.wordsInUse <= this.words.length);
|
|
90
|
+
(0, node_assert_1.default)(this.wordsInUse === this.words.length || this.words[this.wordsInUse] === 0n);
|
|
91
|
+
}
|
|
92
|
+
toByteArray() {
|
|
93
|
+
const n = this.wordsInUse;
|
|
94
|
+
if (n == 0)
|
|
95
|
+
return [];
|
|
96
|
+
const bytes = [];
|
|
97
|
+
for (const word of this.words) {
|
|
98
|
+
let coppiedWord = structuredClone(word);
|
|
99
|
+
// Slice a 64-bit (or 8-byte word) into 8 8-bit (or 1-byte) slices
|
|
100
|
+
for (let i = 0; i < 8; i++) {
|
|
101
|
+
bytes.push(Number(coppiedWord & 0xffn));
|
|
102
|
+
coppiedWord >>= 8n;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
while (bytes.length > 0 && bytes.at(-1) === 0)
|
|
106
|
+
bytes.pop();
|
|
107
|
+
return bytes;
|
|
108
|
+
}
|
|
109
|
+
flip(bitIndex) {
|
|
110
|
+
if (bitIndex < 0)
|
|
111
|
+
throw new error_1.UnexpectedValue("value of bitIndex", bitIndex.toString(), "non-negative number");
|
|
112
|
+
const wordIndex = BitSet.wordIndex(bitIndex);
|
|
113
|
+
this.expandTo(wordIndex);
|
|
114
|
+
this.words[wordIndex] ^= BigInt(BitSet.bitIndexInWord(bitIndex));
|
|
115
|
+
this.recalculateWordsInUse();
|
|
116
|
+
this.checkInvariants();
|
|
117
|
+
}
|
|
118
|
+
set(bitIndex) {
|
|
119
|
+
if (bitIndex < 0)
|
|
120
|
+
throw new error_1.UnexpectedValue("value of bitIndex", bitIndex.toString(), "non-negative number");
|
|
121
|
+
const wordIndex = BitSet.wordIndex(bitIndex);
|
|
122
|
+
this.expandTo(wordIndex);
|
|
123
|
+
this.words[wordIndex] |= 1n << BigInt(BitSet.bitIndexInWord(bitIndex)); // Restores invariants
|
|
124
|
+
this.checkInvariants();
|
|
125
|
+
}
|
|
126
|
+
setRange(fromIndex, toIndex) {
|
|
127
|
+
BitSet.checkRange(fromIndex, toIndex);
|
|
128
|
+
if (fromIndex == toIndex)
|
|
129
|
+
return;
|
|
130
|
+
// Increase capacity if necessary
|
|
131
|
+
const startWordIndex = BitSet.wordIndex(fromIndex);
|
|
132
|
+
const endWordIndex = BitSet.wordIndex(toIndex - 1);
|
|
133
|
+
this.expandTo(endWordIndex);
|
|
134
|
+
const fromBit = BitSet.bitIndexInWord(fromIndex), toBitInclusive = BitSet.bitIndexInWord(toIndex - 1) + 1,
|
|
135
|
+
/**
|
|
136
|
+
* The NOT (~) bitwise meaning:
|
|
137
|
+
*
|
|
138
|
+
* Let say we want to set 2 to 6:
|
|
139
|
+
* ```
|
|
140
|
+
* 110010100
|
|
141
|
+
* ^ ^
|
|
142
|
+
* | +-- this is the 2nd bit
|
|
143
|
+
* and this is the 6th bit
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* So we call lowBits(2) and it return `...0011`
|
|
147
|
+
*
|
|
148
|
+
* Then we have to flip it to `...1100` to access the '2nd bit and the bits after it'
|
|
149
|
+
*/
|
|
150
|
+
firstWordMask = ~BitSet.lowBits(fromBit), lastWordMask = BitSet.lowBits(toBitInclusive);
|
|
151
|
+
if (startWordIndex == endWordIndex) {
|
|
152
|
+
// Case 1: One word
|
|
153
|
+
this.words[startWordIndex] |= (firstWordMask & lastWordMask);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Case 2: Multiple words
|
|
157
|
+
// Handle first word
|
|
158
|
+
this.words[startWordIndex] |= firstWordMask;
|
|
159
|
+
// Handle intermediate words, if any
|
|
160
|
+
for (let i = startWordIndex + 1; i < endWordIndex; i++)
|
|
161
|
+
this.words[i] = BitSet.WORD_MASK;
|
|
162
|
+
// Handle last word (restores invariants)
|
|
163
|
+
this.words[endWordIndex] |= lastWordMask;
|
|
164
|
+
}
|
|
165
|
+
this.checkInvariants();
|
|
166
|
+
}
|
|
167
|
+
clear(bitIndex) {
|
|
168
|
+
if (bitIndex < 0)
|
|
169
|
+
throw new error_1.UnexpectedValue("value of bitIndex", bitIndex.toString(), "non-negative number");
|
|
170
|
+
const wordIndex = BitSet.wordIndex(bitIndex);
|
|
171
|
+
if (wordIndex >= this.wordsInUse)
|
|
172
|
+
return;
|
|
173
|
+
this.words[wordIndex] &= ~(1n << BigInt(bitIndex));
|
|
174
|
+
this.recalculateWordsInUse();
|
|
175
|
+
this.checkInvariants();
|
|
176
|
+
}
|
|
177
|
+
clearRange(fromIndex, toIndex) {
|
|
178
|
+
BitSet.checkRange(fromIndex, toIndex);
|
|
179
|
+
if (fromIndex == toIndex)
|
|
180
|
+
return;
|
|
181
|
+
const startWordIndex = BitSet.wordIndex(fromIndex);
|
|
182
|
+
if (startWordIndex >= this.wordsInUse)
|
|
183
|
+
return;
|
|
184
|
+
let endWordIndex = BitSet.wordIndex(toIndex - 1);
|
|
185
|
+
if (endWordIndex >= this.wordsInUse) {
|
|
186
|
+
toIndex = this.length();
|
|
187
|
+
endWordIndex = this.wordsInUse - 1;
|
|
188
|
+
}
|
|
189
|
+
const fromBit = BitSet.bitIndexInWord(fromIndex), toBitInclusive = BitSet.bitIndexInWord(toIndex - 1) + 1,
|
|
190
|
+
/**
|
|
191
|
+
* See the explaination in the setRange function
|
|
192
|
+
*/
|
|
193
|
+
firstWordMask = ~BitSet.lowBits(fromBit), lastWordMask = BitSet.lowBits(toBitInclusive);
|
|
194
|
+
if (startWordIndex == endWordIndex) {
|
|
195
|
+
// Case 1: One word
|
|
196
|
+
this.words[startWordIndex] &= ~(firstWordMask & lastWordMask);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// Case 2: Multiple words
|
|
200
|
+
// Handle first word
|
|
201
|
+
this.words[startWordIndex] &= ~firstWordMask;
|
|
202
|
+
// Handle intermediate words, if any
|
|
203
|
+
for (let i = startWordIndex + 1; i < endWordIndex; i++)
|
|
204
|
+
this.words[i] = 0n;
|
|
205
|
+
// Handle last word
|
|
206
|
+
this.words[endWordIndex] &= ~lastWordMask;
|
|
207
|
+
}
|
|
208
|
+
this.recalculateWordsInUse();
|
|
209
|
+
this.checkInvariants();
|
|
210
|
+
}
|
|
211
|
+
get(bitIndex) {
|
|
212
|
+
if (bitIndex < 0)
|
|
213
|
+
throw new error_1.UnexpectedValue("value of bitIndex", bitIndex.toString(), "non-negative number");
|
|
214
|
+
this.checkInvariants();
|
|
215
|
+
const wordIndex = BitSet.wordIndex(bitIndex);
|
|
216
|
+
if (wordIndex >= this.wordsInUse)
|
|
217
|
+
return false;
|
|
218
|
+
const bit = 1n << BigInt(BitSet.bitIndexInWord(bitIndex));
|
|
219
|
+
return (Number(this.words[wordIndex] & bit) != 0);
|
|
220
|
+
}
|
|
221
|
+
nextSetBit(fromIndex) {
|
|
222
|
+
if (fromIndex < 0)
|
|
223
|
+
throw new error_1.UnexpectedValue("value of fromIndex", fromIndex.toString(), "non-negative number");
|
|
224
|
+
this.checkInvariants();
|
|
225
|
+
let u = BitSet.wordIndex(fromIndex);
|
|
226
|
+
if (u >= this.wordsInUse)
|
|
227
|
+
return -1;
|
|
228
|
+
let word = this.words[u] & (~0n << BigInt(BitSet.bitIndexInWord(fromIndex)));
|
|
229
|
+
while (true) {
|
|
230
|
+
if (word != 0n)
|
|
231
|
+
return (u * BitSet.BITS_PER_WORD) + (0, math_1.numberOfTrailingZeros)(word);
|
|
232
|
+
if (++u == this.wordsInUse)
|
|
233
|
+
return -1;
|
|
234
|
+
word = this.words[u];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
12
237
|
nextClearBit(fromIndex) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// `-1 << fromIndex` masks correctly even when fromIndex > 31.
|
|
23
|
-
let word = ~data[wordIndex] & (-1 << fromIndex);
|
|
238
|
+
// Neither spec nor implementation handle bitsets of maximal length.
|
|
239
|
+
// See 4816253.
|
|
240
|
+
if (fromIndex < 0)
|
|
241
|
+
throw new error_1.UnexpectedValue("value of fromIndex", fromIndex.toString(), "non-negative number");
|
|
242
|
+
this.checkInvariants();
|
|
243
|
+
let u = BitSet.wordIndex(fromIndex);
|
|
244
|
+
if (u >= this.wordsInUse)
|
|
245
|
+
return fromIndex;
|
|
246
|
+
let word = ~this.words[u] & (BitSet.WORD_MASK << BigInt(fromIndex));
|
|
24
247
|
while (true) {
|
|
25
|
-
if (word
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
return wordIndex * 32 + c;
|
|
32
|
-
}
|
|
33
|
-
wordIndex++;
|
|
34
|
-
if (wordIndex >= data.length) {
|
|
35
|
-
return this['_'] === 0 ? wordIndex * 32 : Infinity;
|
|
36
|
-
}
|
|
37
|
-
word = ~data[wordIndex];
|
|
248
|
+
if (word != 0n)
|
|
249
|
+
return (u * BitSet.BITS_PER_WORD) + (0, math_1.numberOfTrailingZeros)(word);
|
|
250
|
+
if (++u == this.wordsInUse)
|
|
251
|
+
return this.wordsInUse * BitSet.BITS_PER_WORD;
|
|
252
|
+
word = ~this.words[u];
|
|
38
253
|
}
|
|
39
254
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
255
|
+
length() {
|
|
256
|
+
if (this.wordsInUse == 0)
|
|
257
|
+
return 0;
|
|
258
|
+
return BitSet.BITS_PER_WORD * (this.wordsInUse - 1) +
|
|
259
|
+
(BitSet.BITS_PER_WORD - (0, math_1.numberOfLeadingZeros)(this.words[this.wordsInUse - 1]));
|
|
260
|
+
}
|
|
261
|
+
isEmpty() {
|
|
262
|
+
return this.wordsInUse == 0;
|
|
43
263
|
}
|
|
44
264
|
}
|
|
45
265
|
exports.BitSet = BitSet;
|
|
266
|
+
exports.default = BitSet;
|
|
46
267
|
//# sourceMappingURL=bitset.js.map
|
package/dist/base/bitset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"bitset.js","sourceRoot":"","sources":["../../src/base/bitset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The base implementation for the Cache class
|
|
3
|
+
*/
|
|
4
|
+
export declare abstract class CacheImplementation<T = any> {
|
|
5
|
+
abstract put(key: string, item: T): void;
|
|
6
|
+
abstract get(key: string): T | undefined;
|
|
7
|
+
abstract del(key: string): void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* The LRU cache implementation.
|
|
11
|
+
*
|
|
12
|
+
* @see https://en.wikipedia.org/wiki/Cache_replacement_policies#Time-Aware,_Least_Recently_Used_(TLRU)
|
|
13
|
+
*/
|
|
14
|
+
export declare class LRUCache<T> extends CacheImplementation<T> {
|
|
15
|
+
private capacity;
|
|
16
|
+
private hash;
|
|
17
|
+
private list;
|
|
18
|
+
constructor(capacity: number);
|
|
19
|
+
put(key: string, item: T): void;
|
|
20
|
+
get(key: string): T | undefined;
|
|
21
|
+
del(key: string): void;
|
|
22
|
+
private truncateHash;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/base/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC7C,SAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAChD,SAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAChD,SAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAIvC,OAAO,CAAC,QAAQ;IAH5B,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,IAAI,CAAgB;IAE5B,YAAoB,QAAQ,EAAE,MAAM,EAEnC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAWrC;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,iBAUrB;IAEM,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAK5B;IAED,OAAO,CAAC,YAAY;CAOvB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LRUCache = exports.CacheImplementation = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* The base implementation for the Cache class
|
|
6
|
+
*/
|
|
7
|
+
class CacheImplementation {
|
|
8
|
+
}
|
|
9
|
+
exports.CacheImplementation = CacheImplementation;
|
|
10
|
+
/**
|
|
11
|
+
* The LRU cache implementation.
|
|
12
|
+
*
|
|
13
|
+
* @see https://en.wikipedia.org/wiki/Cache_replacement_policies#Time-Aware,_Least_Recently_Used_(TLRU)
|
|
14
|
+
*/
|
|
15
|
+
class LRUCache extends CacheImplementation {
|
|
16
|
+
capacity;
|
|
17
|
+
hash = new Map();
|
|
18
|
+
list = [];
|
|
19
|
+
constructor(capacity) {
|
|
20
|
+
super();
|
|
21
|
+
this.capacity = capacity;
|
|
22
|
+
}
|
|
23
|
+
put(key, item) {
|
|
24
|
+
if (this.hash.has(key)) {
|
|
25
|
+
const oldIndex = this.list.indexOf(key);
|
|
26
|
+
if (oldIndex > -1)
|
|
27
|
+
this.list.splice(oldIndex, 1);
|
|
28
|
+
}
|
|
29
|
+
this.hash.set(key, item);
|
|
30
|
+
this.list.push(key);
|
|
31
|
+
this.truncateHash();
|
|
32
|
+
}
|
|
33
|
+
get(key) {
|
|
34
|
+
if (!this.hash.has(key))
|
|
35
|
+
return undefined;
|
|
36
|
+
const item = this.hash.get(key);
|
|
37
|
+
const oldIndex = this.list.indexOf(key);
|
|
38
|
+
if (oldIndex > -1)
|
|
39
|
+
this.list.splice(oldIndex, 1);
|
|
40
|
+
this.list.push(key);
|
|
41
|
+
return item;
|
|
42
|
+
}
|
|
43
|
+
del(key) {
|
|
44
|
+
const oldIndex = this.list.indexOf(key);
|
|
45
|
+
if (oldIndex > -1)
|
|
46
|
+
this.list.splice(oldIndex, 1);
|
|
47
|
+
this.hash.delete(key);
|
|
48
|
+
}
|
|
49
|
+
truncateHash() {
|
|
50
|
+
while (this.list.length > this.capacity) {
|
|
51
|
+
const popping = this.list.pop();
|
|
52
|
+
if (popping)
|
|
53
|
+
this.hash.delete(popping);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.LRUCache = LRUCache;
|
|
58
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/base/cache.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH;CAIC;;AAED;;;;GAIG;AACH,cAAyB,SAAQ,mBAAsB;IAI/B,QAAQ;IAHpB,IAAI,GAAmB,IAAI,GAAG,EAAE,CAAC;IACjC,IAAI,GAAa,EAAE,CAAC;IAE5B,YAAoB,QAAgB;QAChC,KAAK,EAAE,CAAC;wBADQ,QAAQ;IAE5B,CAAC;IAEM,GAAG,CAAC,GAAW,EAAE,IAAO;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAEM,GAAG,CAAC,GAAW;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,GAAG,CAAC,GAAW;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,YAAY;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAChC,IAAI,OAAO;gBACP,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;CACJ"}
|
package/dist/base/error.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare class AuthTokenExpired extends Error {
|
|
|
80
80
|
export declare class MissingAuthOption extends Error {
|
|
81
81
|
constructor();
|
|
82
82
|
}
|
|
83
|
+
/** @hidden */
|
|
83
84
|
export declare class AuthRelatedNotFound extends Error {
|
|
84
85
|
component: string;
|
|
85
86
|
constructor(component: string);
|
|
@@ -122,11 +123,23 @@ export declare class MissingField extends Error {
|
|
|
122
123
|
export declare class NotImplemented extends Error {
|
|
123
124
|
constructor();
|
|
124
125
|
}
|
|
126
|
+
/** @hidden */
|
|
127
|
+
export declare class SkippableNotImplemented extends Error {
|
|
128
|
+
}
|
|
129
|
+
/** @hidden */
|
|
125
130
|
export declare class MessageLinkNotFound extends Error {
|
|
126
131
|
senderUUID: string;
|
|
127
132
|
constructor(senderUUID: string);
|
|
128
133
|
}
|
|
134
|
+
/** @hidden */
|
|
129
135
|
export declare class HaveSignatureButNotIndex extends Error {
|
|
130
136
|
constructor();
|
|
131
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* @hidden
|
|
140
|
+
*/
|
|
141
|
+
export declare class MessageTooLong extends Error {
|
|
142
|
+
message: string;
|
|
143
|
+
constructor(message: string);
|
|
144
|
+
}
|
|
132
145
|
//# sourceMappingURL=error.d.ts.map
|