@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/es2015/index.umd.js
CHANGED
|
@@ -16992,8 +16992,100 @@
|
|
|
16992
16992
|
}
|
|
16993
16993
|
|
|
16994
16994
|
class BitSet {
|
|
16995
|
-
constructor() {
|
|
16996
|
-
this.
|
|
16995
|
+
constructor(bitsPerElement = 8) {
|
|
16996
|
+
this.bitsPerElement = bitsPerElement;
|
|
16997
|
+
this.array = [];
|
|
16998
|
+
this.length = 0;
|
|
16999
|
+
}
|
|
17000
|
+
get [Symbol.toStringTag]() {
|
|
17001
|
+
return this.constructor.name;
|
|
17002
|
+
}
|
|
17003
|
+
get size() {
|
|
17004
|
+
return this.length;
|
|
17005
|
+
}
|
|
17006
|
+
[Symbol.iterator]() {
|
|
17007
|
+
return this.values();
|
|
17008
|
+
}
|
|
17009
|
+
*values() {
|
|
17010
|
+
if (this.length > 0) {
|
|
17011
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17012
|
+
const remainder = this.bitsPerElement
|
|
17013
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17014
|
+
const lastIndex = maxArrayLength - 1;
|
|
17015
|
+
for (let index = 0; index < lastIndex; index++) {
|
|
17016
|
+
const element = this.array[index];
|
|
17017
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17018
|
+
const mask = this.getMask(bit);
|
|
17019
|
+
if ((element & mask) === mask) {
|
|
17020
|
+
yield index * this.bitsPerElement + bit;
|
|
17021
|
+
}
|
|
17022
|
+
}
|
|
17023
|
+
}
|
|
17024
|
+
const lastElement = this.array[maxArrayLength - 1];
|
|
17025
|
+
for (let bit = 0; bit < remainder; bit++) {
|
|
17026
|
+
const mask = this.getMask(bit);
|
|
17027
|
+
if ((lastElement & mask) === mask) {
|
|
17028
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17029
|
+
}
|
|
17030
|
+
}
|
|
17031
|
+
}
|
|
17032
|
+
}
|
|
17033
|
+
_dumpBinaryStrings() {
|
|
17034
|
+
const result = [];
|
|
17035
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
17036
|
+
const binary = this.array[i].toString(2);
|
|
17037
|
+
if (binary.length < this.bitsPerElement) {
|
|
17038
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17039
|
+
}
|
|
17040
|
+
else {
|
|
17041
|
+
result.push(binary);
|
|
17042
|
+
}
|
|
17043
|
+
}
|
|
17044
|
+
return result;
|
|
17045
|
+
}
|
|
17046
|
+
has(value) {
|
|
17047
|
+
var _a;
|
|
17048
|
+
const [index, mask] = this.getPosition(value);
|
|
17049
|
+
return (((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0) & mask) === mask;
|
|
17050
|
+
}
|
|
17051
|
+
add(value) {
|
|
17052
|
+
var _a;
|
|
17053
|
+
es2018$p.assert(value >= 0, 'value must be greater than or equal to 0');
|
|
17054
|
+
if (value >= this.length) {
|
|
17055
|
+
this.length = value + 1;
|
|
17056
|
+
}
|
|
17057
|
+
const [index, mask] = this.getPosition(value);
|
|
17058
|
+
this.array[index] = ((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0) | mask;
|
|
17059
|
+
}
|
|
17060
|
+
delete(value) {
|
|
17061
|
+
var _a;
|
|
17062
|
+
const [index, mask] = this.getPosition(value);
|
|
17063
|
+
const element = ((_a = this.array[index]) !== null && _a !== void 0 ? _a : 0);
|
|
17064
|
+
this.array[index] = element & ~mask;
|
|
17065
|
+
return (element & mask) === mask;
|
|
17066
|
+
}
|
|
17067
|
+
clear() {
|
|
17068
|
+
for (let i = this.array.length; i--;) {
|
|
17069
|
+
this.array[i] = 0;
|
|
17070
|
+
}
|
|
17071
|
+
}
|
|
17072
|
+
getPosition(value) {
|
|
17073
|
+
const remainder = value % this.bitsPerElement;
|
|
17074
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17075
|
+
const index = quotient;
|
|
17076
|
+
const mask = this.getMask(remainder);
|
|
17077
|
+
return [index, mask];
|
|
17078
|
+
}
|
|
17079
|
+
// 输入一定是一个小于bitsPerElement的值, 取值范围是[0, bitsPerElement)
|
|
17080
|
+
getMask(value) {
|
|
17081
|
+
return Math.pow(2, value);
|
|
17082
|
+
}
|
|
17083
|
+
}
|
|
17084
|
+
|
|
17085
|
+
class TypedBitSet {
|
|
17086
|
+
constructor(array) {
|
|
17087
|
+
this.array = array;
|
|
17088
|
+
this.bitsPerElement = this.array.internalTypedArray.BYTES_PER_ELEMENT * 8;
|
|
16997
17089
|
this.length = 0;
|
|
16998
17090
|
}
|
|
16999
17091
|
get [Symbol.toStringTag]() {
|
|
@@ -17007,15 +17099,16 @@
|
|
|
17007
17099
|
}
|
|
17008
17100
|
*values() {
|
|
17009
17101
|
if (this.length > 0) {
|
|
17010
|
-
const maxArrayLength = Math.ceil(this.length /
|
|
17011
|
-
const remainder =
|
|
17102
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17103
|
+
const remainder = this.bitsPerElement
|
|
17104
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17012
17105
|
const lastIndex = maxArrayLength - 1;
|
|
17013
17106
|
for (let index = 0; index < lastIndex; index++) {
|
|
17014
17107
|
const element = this.array.internalTypedArray[index];
|
|
17015
|
-
for (let bit = 0; bit <
|
|
17108
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17016
17109
|
const mask = this.getMask(bit);
|
|
17017
17110
|
if ((element & mask) === mask) {
|
|
17018
|
-
yield index *
|
|
17111
|
+
yield index * this.bitsPerElement + bit;
|
|
17019
17112
|
}
|
|
17020
17113
|
}
|
|
17021
17114
|
}
|
|
@@ -17023,7 +17116,7 @@
|
|
|
17023
17116
|
for (let bit = 0; bit < remainder; bit++) {
|
|
17024
17117
|
const mask = this.getMask(bit);
|
|
17025
17118
|
if ((lastElement & mask) === mask) {
|
|
17026
|
-
yield lastIndex *
|
|
17119
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17027
17120
|
}
|
|
17028
17121
|
}
|
|
17029
17122
|
}
|
|
@@ -17032,8 +17125,8 @@
|
|
|
17032
17125
|
const result = [];
|
|
17033
17126
|
for (let i = 0; i < this.array.length; i++) {
|
|
17034
17127
|
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17035
|
-
if (binary.length <
|
|
17036
|
-
result.push('0'.repeat(
|
|
17128
|
+
if (binary.length < this.bitsPerElement) {
|
|
17129
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17037
17130
|
}
|
|
17038
17131
|
else {
|
|
17039
17132
|
result.push(binary);
|
|
@@ -17068,8 +17161,8 @@
|
|
|
17068
17161
|
}
|
|
17069
17162
|
}
|
|
17070
17163
|
getPosition(value) {
|
|
17071
|
-
const remainder = value %
|
|
17072
|
-
const quotient = (value - remainder) /
|
|
17164
|
+
const remainder = value % this.bitsPerElement;
|
|
17165
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17073
17166
|
const index = quotient;
|
|
17074
17167
|
const mask = this.getMask(remainder);
|
|
17075
17168
|
return [index, mask];
|
|
@@ -17079,7 +17172,6 @@
|
|
|
17079
17172
|
return Math.pow(2, value);
|
|
17080
17173
|
}
|
|
17081
17174
|
}
|
|
17082
|
-
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17083
17175
|
|
|
17084
17176
|
exports.BadEventError = BadEventError;
|
|
17085
17177
|
exports.BitSet = BitSet;
|
|
@@ -17098,6 +17190,7 @@
|
|
|
17098
17190
|
exports.SparseSet = SparseSet;
|
|
17099
17191
|
exports.TLRUMap = TLRUMap;
|
|
17100
17192
|
exports.TrieMap = TrieMap;
|
|
17193
|
+
exports.TypedBitSet = TypedBitSet;
|
|
17101
17194
|
exports.TypedSparseMap = TypedSparseMap;
|
|
17102
17195
|
exports.TypedSparseSet = TypedSparseSet;
|
|
17103
17196
|
exports.convertArrayToCons = convertArrayToCons;
|