@blackglory/structures 0.10.11 → 0.10.14
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 +29 -1
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +112 -14
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +112 -13
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +2 -2
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +2 -2
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +112 -14
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +112 -13
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +2 -2
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/bit-set.d.ts +2 -1
- package/lib/es2015/bit-set.js +21 -21
- package/lib/es2015/bit-set.js.map +1 -1
- package/lib/es2015/index.d.ts +1 -0
- package/lib/es2015/index.js +1 -0
- package/lib/es2015/index.js.map +1 -1
- package/lib/es2015/sparse-map.d.ts +1 -0
- package/lib/es2015/sparse-map.js +4 -1
- package/lib/es2015/sparse-map.js.map +1 -1
- package/lib/es2015/typed-bit-set.d.ts +19 -0
- package/lib/es2015/typed-bit-set.js +95 -0
- package/lib/es2015/typed-bit-set.js.map +1 -0
- package/lib/es2015/typed-sparse-map.d.ts +1 -0
- package/lib/es2015/typed-sparse-map.js +3 -0
- package/lib/es2015/typed-sparse-map.js.map +1 -1
- package/lib/es2018/bit-set.d.ts +2 -1
- package/lib/es2018/bit-set.js +21 -21
- package/lib/es2018/bit-set.js.map +1 -1
- package/lib/es2018/index.d.ts +1 -0
- package/lib/es2018/index.js +1 -0
- package/lib/es2018/index.js.map +1 -1
- package/lib/es2018/sparse-map.d.ts +1 -0
- package/lib/es2018/sparse-map.js +4 -1
- package/lib/es2018/sparse-map.js.map +1 -1
- package/lib/es2018/typed-bit-set.d.ts +19 -0
- package/lib/es2018/typed-bit-set.js +95 -0
- package/lib/es2018/typed-bit-set.js.map +1 -0
- package/lib/es2018/typed-sparse-map.d.ts +1 -0
- package/lib/es2018/typed-sparse-map.js +3 -0
- package/lib/es2018/typed-sparse-map.js.map +1 -1
- package/package.json +1 -1
package/dist/es2015/index.mjs
CHANGED
|
@@ -16498,6 +16498,9 @@ class SparseMap {
|
|
|
16498
16498
|
values() {
|
|
16499
16499
|
return this.indexToValue.values();
|
|
16500
16500
|
}
|
|
16501
|
+
getInternalIndexOfKey(key) {
|
|
16502
|
+
return this.keyToIndex[key];
|
|
16503
|
+
}
|
|
16501
16504
|
has(key) {
|
|
16502
16505
|
// 跟一般的稀疏集实现不同, 不需要访问values数组.
|
|
16503
16506
|
return key in this.keyToIndex;
|
|
@@ -16534,7 +16537,7 @@ class SparseMap {
|
|
|
16534
16537
|
const index = this.keyToIndex[key];
|
|
16535
16538
|
this.indexToKey[index] = lastKey;
|
|
16536
16539
|
this.indexToValue[index] = lastValue;
|
|
16537
|
-
this.keyToIndex[
|
|
16540
|
+
this.keyToIndex[lastKey] = index;
|
|
16538
16541
|
delete this.keyToIndex[key];
|
|
16539
16542
|
}
|
|
16540
16543
|
}
|
|
@@ -16573,6 +16576,9 @@ class TypedSparseMap {
|
|
|
16573
16576
|
yield this.indexToValue.internalTypedArray[i];
|
|
16574
16577
|
}
|
|
16575
16578
|
}
|
|
16579
|
+
getInternalIndexOfKey(key) {
|
|
16580
|
+
return this.keyToIndex[key];
|
|
16581
|
+
}
|
|
16576
16582
|
has(key) {
|
|
16577
16583
|
const index = this.keyToIndex[key];
|
|
16578
16584
|
return this.indexToKey[index] === key;
|
|
@@ -16980,8 +16986,100 @@ class SortedSet {
|
|
|
16980
16986
|
}
|
|
16981
16987
|
|
|
16982
16988
|
class BitSet {
|
|
16983
|
-
constructor() {
|
|
16984
|
-
this.
|
|
16989
|
+
constructor(bitsPerElement = 8) {
|
|
16990
|
+
this.bitsPerElement = bitsPerElement;
|
|
16991
|
+
this.array = [];
|
|
16992
|
+
this.length = 0;
|
|
16993
|
+
}
|
|
16994
|
+
get [Symbol.toStringTag]() {
|
|
16995
|
+
return this.constructor.name;
|
|
16996
|
+
}
|
|
16997
|
+
get size() {
|
|
16998
|
+
return this.length;
|
|
16999
|
+
}
|
|
17000
|
+
[Symbol.iterator]() {
|
|
17001
|
+
return this.values();
|
|
17002
|
+
}
|
|
17003
|
+
*values() {
|
|
17004
|
+
if (this.length > 0) {
|
|
17005
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17006
|
+
const remainder = this.bitsPerElement
|
|
17007
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17008
|
+
const lastIndex = maxArrayLength - 1;
|
|
17009
|
+
for (let index = 0; index < lastIndex; index++) {
|
|
17010
|
+
const element = this.array[index];
|
|
17011
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17012
|
+
const mask = this.getMask(bit);
|
|
17013
|
+
if ((element & mask) === mask) {
|
|
17014
|
+
yield index * this.bitsPerElement + bit;
|
|
17015
|
+
}
|
|
17016
|
+
}
|
|
17017
|
+
}
|
|
17018
|
+
const lastElement = this.array[maxArrayLength - 1];
|
|
17019
|
+
for (let bit = 0; bit < remainder; bit++) {
|
|
17020
|
+
const mask = this.getMask(bit);
|
|
17021
|
+
if ((lastElement & mask) === mask) {
|
|
17022
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17023
|
+
}
|
|
17024
|
+
}
|
|
17025
|
+
}
|
|
17026
|
+
}
|
|
17027
|
+
_dumpBinaryStrings() {
|
|
17028
|
+
const result = [];
|
|
17029
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
17030
|
+
const binary = this.array[i].toString(2);
|
|
17031
|
+
if (binary.length < this.bitsPerElement) {
|
|
17032
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17033
|
+
}
|
|
17034
|
+
else {
|
|
17035
|
+
result.push(binary);
|
|
17036
|
+
}
|
|
17037
|
+
}
|
|
17038
|
+
return result;
|
|
17039
|
+
}
|
|
17040
|
+
has(value) {
|
|
17041
|
+
var _a;
|
|
17042
|
+
const [index, mask] = this.getPosition(value);
|
|
17043
|
+
return (((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0) & mask) === mask;
|
|
17044
|
+
}
|
|
17045
|
+
add(value) {
|
|
17046
|
+
var _a;
|
|
17047
|
+
es2018$p.assert(value >= 0, 'value must be greater than or equal to 0');
|
|
17048
|
+
if (value >= this.length) {
|
|
17049
|
+
this.length = value + 1;
|
|
17050
|
+
}
|
|
17051
|
+
const [index, mask] = this.getPosition(value);
|
|
17052
|
+
this.array[index] = ((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0) | mask;
|
|
17053
|
+
}
|
|
17054
|
+
delete(value) {
|
|
17055
|
+
var _a;
|
|
17056
|
+
const [index, mask] = this.getPosition(value);
|
|
17057
|
+
const element = ((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0);
|
|
17058
|
+
this.array[index] = element & ~mask;
|
|
17059
|
+
return (element & mask) === mask;
|
|
17060
|
+
}
|
|
17061
|
+
clear() {
|
|
17062
|
+
for (let i = this.array.length; i--;) {
|
|
17063
|
+
this.array[i] = 0;
|
|
17064
|
+
}
|
|
17065
|
+
}
|
|
17066
|
+
getPosition(value) {
|
|
17067
|
+
const remainder = value % this.bitsPerElement;
|
|
17068
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17069
|
+
const index = quotient;
|
|
17070
|
+
const mask = this.getMask(remainder);
|
|
17071
|
+
return [index, mask];
|
|
17072
|
+
}
|
|
17073
|
+
// 输入一定是一个小于bitsPerElement的值, 取值范围是[0, bitsPerElement)
|
|
17074
|
+
getMask(value) {
|
|
17075
|
+
return Math.pow(2, value);
|
|
17076
|
+
}
|
|
17077
|
+
}
|
|
17078
|
+
|
|
17079
|
+
class TypedBitSet {
|
|
17080
|
+
constructor(array) {
|
|
17081
|
+
this.array = array;
|
|
17082
|
+
this.bitsPerElement = this.array.internalTypedArray.BYTES_PER_ELEMENT * 8;
|
|
16985
17083
|
this.length = 0;
|
|
16986
17084
|
}
|
|
16987
17085
|
get [Symbol.toStringTag]() {
|
|
@@ -16995,15 +17093,16 @@ class BitSet {
|
|
|
16995
17093
|
}
|
|
16996
17094
|
*values() {
|
|
16997
17095
|
if (this.length > 0) {
|
|
16998
|
-
const maxArrayLength = Math.ceil(this.length /
|
|
16999
|
-
const remainder =
|
|
17096
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17097
|
+
const remainder = this.bitsPerElement
|
|
17098
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17000
17099
|
const lastIndex = maxArrayLength - 1;
|
|
17001
17100
|
for (let index = 0; index < lastIndex; index++) {
|
|
17002
17101
|
const element = this.array.internalTypedArray[index];
|
|
17003
|
-
for (let bit = 0; bit <
|
|
17102
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17004
17103
|
const mask = this.getMask(bit);
|
|
17005
17104
|
if ((element & mask) === mask) {
|
|
17006
|
-
yield index *
|
|
17105
|
+
yield index * this.bitsPerElement + bit;
|
|
17007
17106
|
}
|
|
17008
17107
|
}
|
|
17009
17108
|
}
|
|
@@ -17011,7 +17110,7 @@ class BitSet {
|
|
|
17011
17110
|
for (let bit = 0; bit < remainder; bit++) {
|
|
17012
17111
|
const mask = this.getMask(bit);
|
|
17013
17112
|
if ((lastElement & mask) === mask) {
|
|
17014
|
-
yield lastIndex *
|
|
17113
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17015
17114
|
}
|
|
17016
17115
|
}
|
|
17017
17116
|
}
|
|
@@ -17020,8 +17119,8 @@ class BitSet {
|
|
|
17020
17119
|
const result = [];
|
|
17021
17120
|
for (let i = 0; i < this.array.length; i++) {
|
|
17022
17121
|
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17023
|
-
if (binary.length <
|
|
17024
|
-
result.push('0'.repeat(
|
|
17122
|
+
if (binary.length < this.bitsPerElement) {
|
|
17123
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17025
17124
|
}
|
|
17026
17125
|
else {
|
|
17027
17126
|
result.push(binary);
|
|
@@ -17056,8 +17155,8 @@ class BitSet {
|
|
|
17056
17155
|
}
|
|
17057
17156
|
}
|
|
17058
17157
|
getPosition(value) {
|
|
17059
|
-
const remainder = value %
|
|
17060
|
-
const quotient = (value - remainder) /
|
|
17158
|
+
const remainder = value % this.bitsPerElement;
|
|
17159
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17061
17160
|
const index = quotient;
|
|
17062
17161
|
const mask = this.getMask(remainder);
|
|
17063
17162
|
return [index, mask];
|
|
@@ -17067,7 +17166,6 @@ class BitSet {
|
|
|
17067
17166
|
return Math.pow(2, value);
|
|
17068
17167
|
}
|
|
17069
17168
|
}
|
|
17070
|
-
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17071
17169
|
|
|
17072
|
-
export { BadEventError, BitSet, Box, DynamicTypedArray, Emitter, ExpirableMap, FiniteStateMachine, HashMap, HashSet, LRUMap, ObservableFiniteStateMachine, Queue, SortedSet, SparseMap, SparseSet, TLRUMap, TrieMap, TypedSparseMap, TypedSparseSet, convertArrayToCons, convertConsToArray };
|
|
17170
|
+
export { BadEventError, BitSet, Box, DynamicTypedArray, Emitter, ExpirableMap, FiniteStateMachine, HashMap, HashSet, LRUMap, ObservableFiniteStateMachine, Queue, SortedSet, SparseMap, SparseSet, TLRUMap, TrieMap, TypedBitSet, TypedSparseMap, TypedSparseSet, convertArrayToCons, convertConsToArray };
|
|
17073
17171
|
//# sourceMappingURL=index.mjs.map
|