@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.umd.js
CHANGED
|
@@ -16504,6 +16504,9 @@
|
|
|
16504
16504
|
values() {
|
|
16505
16505
|
return this.indexToValue.values();
|
|
16506
16506
|
}
|
|
16507
|
+
getInternalIndexOfKey(key) {
|
|
16508
|
+
return this.keyToIndex[key];
|
|
16509
|
+
}
|
|
16507
16510
|
has(key) {
|
|
16508
16511
|
// 跟一般的稀疏集实现不同, 不需要访问values数组.
|
|
16509
16512
|
return key in this.keyToIndex;
|
|
@@ -16540,7 +16543,7 @@
|
|
|
16540
16543
|
const index = this.keyToIndex[key];
|
|
16541
16544
|
this.indexToKey[index] = lastKey;
|
|
16542
16545
|
this.indexToValue[index] = lastValue;
|
|
16543
|
-
this.keyToIndex[
|
|
16546
|
+
this.keyToIndex[lastKey] = index;
|
|
16544
16547
|
delete this.keyToIndex[key];
|
|
16545
16548
|
}
|
|
16546
16549
|
}
|
|
@@ -16579,6 +16582,9 @@
|
|
|
16579
16582
|
yield this.indexToValue.internalTypedArray[i];
|
|
16580
16583
|
}
|
|
16581
16584
|
}
|
|
16585
|
+
getInternalIndexOfKey(key) {
|
|
16586
|
+
return this.keyToIndex[key];
|
|
16587
|
+
}
|
|
16582
16588
|
has(key) {
|
|
16583
16589
|
const index = this.keyToIndex[key];
|
|
16584
16590
|
return this.indexToKey[index] === key;
|
|
@@ -16986,8 +16992,100 @@
|
|
|
16986
16992
|
}
|
|
16987
16993
|
|
|
16988
16994
|
class BitSet {
|
|
16989
|
-
constructor() {
|
|
16990
|
-
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;
|
|
16991
17089
|
this.length = 0;
|
|
16992
17090
|
}
|
|
16993
17091
|
get [Symbol.toStringTag]() {
|
|
@@ -17001,15 +17099,16 @@
|
|
|
17001
17099
|
}
|
|
17002
17100
|
*values() {
|
|
17003
17101
|
if (this.length > 0) {
|
|
17004
|
-
const maxArrayLength = Math.ceil(this.length /
|
|
17005
|
-
const remainder =
|
|
17102
|
+
const maxArrayLength = Math.ceil(this.length / this.bitsPerElement);
|
|
17103
|
+
const remainder = this.bitsPerElement
|
|
17104
|
+
- (maxArrayLength * this.bitsPerElement - this.length);
|
|
17006
17105
|
const lastIndex = maxArrayLength - 1;
|
|
17007
17106
|
for (let index = 0; index < lastIndex; index++) {
|
|
17008
17107
|
const element = this.array.internalTypedArray[index];
|
|
17009
|
-
for (let bit = 0; bit <
|
|
17108
|
+
for (let bit = 0; bit < this.bitsPerElement; bit++) {
|
|
17010
17109
|
const mask = this.getMask(bit);
|
|
17011
17110
|
if ((element & mask) === mask) {
|
|
17012
|
-
yield index *
|
|
17111
|
+
yield index * this.bitsPerElement + bit;
|
|
17013
17112
|
}
|
|
17014
17113
|
}
|
|
17015
17114
|
}
|
|
@@ -17017,7 +17116,7 @@
|
|
|
17017
17116
|
for (let bit = 0; bit < remainder; bit++) {
|
|
17018
17117
|
const mask = this.getMask(bit);
|
|
17019
17118
|
if ((lastElement & mask) === mask) {
|
|
17020
|
-
yield lastIndex *
|
|
17119
|
+
yield lastIndex * this.bitsPerElement + bit;
|
|
17021
17120
|
}
|
|
17022
17121
|
}
|
|
17023
17122
|
}
|
|
@@ -17026,8 +17125,8 @@
|
|
|
17026
17125
|
const result = [];
|
|
17027
17126
|
for (let i = 0; i < this.array.length; i++) {
|
|
17028
17127
|
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17029
|
-
if (binary.length <
|
|
17030
|
-
result.push('0'.repeat(
|
|
17128
|
+
if (binary.length < this.bitsPerElement) {
|
|
17129
|
+
result.push('0'.repeat(this.bitsPerElement - binary.length) + binary);
|
|
17031
17130
|
}
|
|
17032
17131
|
else {
|
|
17033
17132
|
result.push(binary);
|
|
@@ -17062,8 +17161,8 @@
|
|
|
17062
17161
|
}
|
|
17063
17162
|
}
|
|
17064
17163
|
getPosition(value) {
|
|
17065
|
-
const remainder = value %
|
|
17066
|
-
const quotient = (value - remainder) /
|
|
17164
|
+
const remainder = value % this.bitsPerElement;
|
|
17165
|
+
const quotient = (value - remainder) / this.bitsPerElement;
|
|
17067
17166
|
const index = quotient;
|
|
17068
17167
|
const mask = this.getMask(remainder);
|
|
17069
17168
|
return [index, mask];
|
|
@@ -17073,7 +17172,6 @@
|
|
|
17073
17172
|
return Math.pow(2, value);
|
|
17074
17173
|
}
|
|
17075
17174
|
}
|
|
17076
|
-
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17077
17175
|
|
|
17078
17176
|
exports.BadEventError = BadEventError;
|
|
17079
17177
|
exports.BitSet = BitSet;
|
|
@@ -17092,6 +17190,7 @@
|
|
|
17092
17190
|
exports.SparseSet = SparseSet;
|
|
17093
17191
|
exports.TLRUMap = TLRUMap;
|
|
17094
17192
|
exports.TrieMap = TrieMap;
|
|
17193
|
+
exports.TypedBitSet = TypedBitSet;
|
|
17095
17194
|
exports.TypedSparseMap = TypedSparseMap;
|
|
17096
17195
|
exports.TypedSparseSet = TypedSparseSet;
|
|
17097
17196
|
exports.convertArrayToCons = convertArrayToCons;
|