@blackglory/structures 0.10.13 → 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 +25 -1
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +105 -13
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +105 -12
- 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 +105 -13
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +105 -12
- 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/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/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/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/package.json +1 -1
package/dist/es2018/index.mjs
CHANGED
|
@@ -16986,8 +16986,100 @@ class SortedSet {
|
|
|
16986
16986
|
}
|
|
16987
16987
|
|
|
16988
16988
|
class BitSet {
|
|
16989
|
-
constructor() {
|
|
16990
|
-
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 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;
|
|
16991
17083
|
this.length = 0;
|
|
16992
17084
|
}
|
|
16993
17085
|
get [Symbol.toStringTag]() {
|
|
@@ -17001,15 +17093,16 @@ class BitSet {
|
|
|
17001
17093
|
}
|
|
17002
17094
|
*values() {
|
|
17003
17095
|
if (this.length > 0) {
|
|
17004
|
-
const maxArrayLength = Math.ceil(this.length /
|
|
17005
|
-
const remainder =
|
|
17096
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17097
|
+
const remainder = this.bitsPerElement
|
|
17098
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17006
17099
|
const lastIndex = maxArrayLength - 1;
|
|
17007
17100
|
for (let index = 0; index < lastIndex; index++) {
|
|
17008
17101
|
const element = this.array.internalTypedArray[index];
|
|
17009
|
-
for (let bit = 0; bit <
|
|
17102
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17010
17103
|
const mask = this.getMask(bit);
|
|
17011
17104
|
if ((element & mask) === mask) {
|
|
17012
|
-
yield index *
|
|
17105
|
+
yield index * this.bitsPerElement + bit;
|
|
17013
17106
|
}
|
|
17014
17107
|
}
|
|
17015
17108
|
}
|
|
@@ -17017,7 +17110,7 @@ class BitSet {
|
|
|
17017
17110
|
for (let bit = 0; bit < remainder; bit++) {
|
|
17018
17111
|
const mask = this.getMask(bit);
|
|
17019
17112
|
if ((lastElement & mask) === mask) {
|
|
17020
|
-
yield lastIndex *
|
|
17113
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17021
17114
|
}
|
|
17022
17115
|
}
|
|
17023
17116
|
}
|
|
@@ -17026,8 +17119,8 @@ class BitSet {
|
|
|
17026
17119
|
const result = [];
|
|
17027
17120
|
for (let i = 0; i < this.array.length; i++) {
|
|
17028
17121
|
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17029
|
-
if (binary.length <
|
|
17030
|
-
result.push('0'.repeat(
|
|
17122
|
+
if (binary.length < this.bitsPerElement) {
|
|
17123
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17031
17124
|
}
|
|
17032
17125
|
else {
|
|
17033
17126
|
result.push(binary);
|
|
@@ -17062,8 +17155,8 @@ class BitSet {
|
|
|
17062
17155
|
}
|
|
17063
17156
|
}
|
|
17064
17157
|
getPosition(value) {
|
|
17065
|
-
const remainder = value %
|
|
17066
|
-
const quotient = (value - remainder) /
|
|
17158
|
+
const remainder = value % this.bitsPerElement;
|
|
17159
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17067
17160
|
const index = quotient;
|
|
17068
17161
|
const mask = this.getMask(remainder);
|
|
17069
17162
|
return [index, mask];
|
|
@@ -17073,7 +17166,6 @@ class BitSet {
|
|
|
17073
17166
|
return 2 ** value;
|
|
17074
17167
|
}
|
|
17075
17168
|
}
|
|
17076
|
-
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17077
17169
|
|
|
17078
|
-
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 };
|
|
17079
17171
|
//# sourceMappingURL=index.mjs.map
|