pw-js-api 0.2.6-dev.9ec7613 → 0.2.6
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/browser/pw.dev.js +14 -14
- package/browser/pw.prod.js +1 -1
- package/cm/api/PWApiClient.d.ts +22 -2
- package/cm/api/PWApiClient.js +31 -16
- package/cm/game/PWGameClient.d.ts +3 -3
- package/cm/game/PWGameClient.js +16 -14
- package/cm/gen/world_pb.d.ts +33 -1
- package/cm/gen/world_pb.js +47 -41
- package/cm/util/Queue.d.ts +24 -0
- package/cm/util/Queue.js +49 -0
- package/cm/util/block.d.ts +1209 -1189
- package/cm/util/block.js +1210 -1190
- package/esm/api/PWApiClient.d.ts +22 -2
- package/esm/api/PWApiClient.js +32 -16
- package/esm/game/PWGameClient.d.ts +3 -3
- package/esm/game/PWGameClient.js +16 -14
- package/esm/gen/world_pb.d.ts +33 -1
- package/esm/gen/world_pb.js +45 -40
- package/esm/util/Queue.d.ts +24 -0
- package/esm/util/Queue.js +46 -0
- package/esm/util/block.d.ts +1209 -1189
- package/esm/util/block.js +1210 -1190
- package/package.json +1 -1
- package/cm/util/Bucket.d.ts +0 -32
- package/cm/util/Bucket.js +0 -71
- package/esm/util/Bucket.d.ts +0 -32
- package/esm/util/Bucket.js +0 -68
package/package.json
CHANGED
package/cm/util/Bucket.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/** @module Bucket */
|
|
2
|
-
/**
|
|
3
|
-
* lovingly borrowed from oceanic.js :3
|
|
4
|
-
* https://github.com/OceanicJS/Oceanic/blob/9ca907f46d45da4afa8c9be9e81e3093925c73c5/lib/rest/Bucket.ts
|
|
5
|
-
*/
|
|
6
|
-
/** A bucket. */
|
|
7
|
-
export default class Bucket {
|
|
8
|
-
private _queue;
|
|
9
|
-
interval: number;
|
|
10
|
-
lastReset: number;
|
|
11
|
-
lastSend: number;
|
|
12
|
-
latencyRef: {
|
|
13
|
-
latency: number;
|
|
14
|
-
};
|
|
15
|
-
reservedTokens: number;
|
|
16
|
-
timeout: NodeJS.Timeout | null;
|
|
17
|
-
tokenLimit: number;
|
|
18
|
-
tokens: number;
|
|
19
|
-
constructor(tokenLimit: number, interval: number, options?: {
|
|
20
|
-
latencyRef?: {
|
|
21
|
-
latency: number;
|
|
22
|
-
};
|
|
23
|
-
reservedTokens?: number;
|
|
24
|
-
});
|
|
25
|
-
private check;
|
|
26
|
-
/**
|
|
27
|
-
* Add an item to the queue.
|
|
28
|
-
* @param func The function to queue.
|
|
29
|
-
* @param priority If true, the item will be added to the front of the queue.
|
|
30
|
-
*/
|
|
31
|
-
queue(func: () => void, priority?: boolean): void;
|
|
32
|
-
}
|
package/cm/util/Bucket.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/** @module Bucket */
|
|
3
|
-
/**
|
|
4
|
-
* lovingly borrowed from oceanic.js :3
|
|
5
|
-
* https://github.com/OceanicJS/Oceanic/blob/9ca907f46d45da4afa8c9be9e81e3093925c73c5/lib/rest/Bucket.ts
|
|
6
|
-
*/
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
/** A bucket. */
|
|
9
|
-
class Bucket {
|
|
10
|
-
constructor(tokenLimit, interval, options) {
|
|
11
|
-
var _a, _b;
|
|
12
|
-
this._queue = [];
|
|
13
|
-
this.tokenLimit = tokenLimit;
|
|
14
|
-
this.interval = interval;
|
|
15
|
-
this.latencyRef = (_a = options === null || options === void 0 ? void 0 : options.latencyRef) !== null && _a !== void 0 ? _a : { latency: 0 };
|
|
16
|
-
this.lastReset = this.tokens = this.lastSend = 0;
|
|
17
|
-
this.reservedTokens = (_b = options === null || options === void 0 ? void 0 : options.reservedTokens) !== null && _b !== void 0 ? _b : 0;
|
|
18
|
-
this.timeout = null;
|
|
19
|
-
}
|
|
20
|
-
check() {
|
|
21
|
-
if (this.timeout || this._queue.length === 0) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
if (this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency < Date.now()) {
|
|
25
|
-
this.lastReset = Date.now();
|
|
26
|
-
this.tokens = Math.max(0, this.tokens - this.tokenLimit);
|
|
27
|
-
}
|
|
28
|
-
let val;
|
|
29
|
-
let tokensAvailable = this.tokens < this.tokenLimit;
|
|
30
|
-
let unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
|
|
31
|
-
while (this._queue.length !== 0 && (unreservedTokensAvailable || (tokensAvailable && this._queue[0].priority))) {
|
|
32
|
-
this.tokens++;
|
|
33
|
-
tokensAvailable = this.tokens < this.tokenLimit;
|
|
34
|
-
unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
|
|
35
|
-
const item = this._queue.shift();
|
|
36
|
-
val = this.latencyRef.latency - Date.now() + this.lastSend;
|
|
37
|
-
if (this.latencyRef.latency === 0 || val <= 0) {
|
|
38
|
-
item.func();
|
|
39
|
-
this.lastSend = Date.now();
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
item.func();
|
|
44
|
-
}, val);
|
|
45
|
-
this.lastSend = Date.now() + val;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
if (this._queue.length !== 0 && !this.timeout) {
|
|
49
|
-
this.timeout = setTimeout(() => {
|
|
50
|
-
this.timeout = null;
|
|
51
|
-
this.check();
|
|
52
|
-
}, this.tokens < this.tokenLimit ? this.latencyRef.latency : Math.max(0, this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency - Date.now()));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Add an item to the queue.
|
|
57
|
-
* @param func The function to queue.
|
|
58
|
-
* @param priority If true, the item will be added to the front of the queue.
|
|
59
|
-
*/
|
|
60
|
-
queue(func, priority = false) {
|
|
61
|
-
if (priority) {
|
|
62
|
-
this._queue.unshift({ func, priority });
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
this._queue.push({ func, priority });
|
|
66
|
-
}
|
|
67
|
-
this.check();
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.default = Bucket;
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWwvQnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxQkFBcUI7QUFDckI7OztHQUdHOztBQUVILGdCQUFnQjtBQUNoQixNQUFxQixNQUFNO0lBVXZCLFlBQVksVUFBa0IsRUFBRSxRQUFnQixFQUFFLE9BQXlFOztRQVRuSCxXQUFNLEdBQStDLEVBQUUsQ0FBQztRQVU1RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsbUNBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxtQ0FBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVPLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzFGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFD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
|
package/esm/util/Bucket.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/** @module Bucket */
|
|
2
|
-
/**
|
|
3
|
-
* lovingly borrowed from oceanic.js :3
|
|
4
|
-
* https://github.com/OceanicJS/Oceanic/blob/9ca907f46d45da4afa8c9be9e81e3093925c73c5/lib/rest/Bucket.ts
|
|
5
|
-
*/
|
|
6
|
-
/** A bucket. */
|
|
7
|
-
export default class Bucket {
|
|
8
|
-
private _queue;
|
|
9
|
-
interval: number;
|
|
10
|
-
lastReset: number;
|
|
11
|
-
lastSend: number;
|
|
12
|
-
latencyRef: {
|
|
13
|
-
latency: number;
|
|
14
|
-
};
|
|
15
|
-
reservedTokens: number;
|
|
16
|
-
timeout: NodeJS.Timeout | null;
|
|
17
|
-
tokenLimit: number;
|
|
18
|
-
tokens: number;
|
|
19
|
-
constructor(tokenLimit: number, interval: number, options?: {
|
|
20
|
-
latencyRef?: {
|
|
21
|
-
latency: number;
|
|
22
|
-
};
|
|
23
|
-
reservedTokens?: number;
|
|
24
|
-
});
|
|
25
|
-
private check;
|
|
26
|
-
/**
|
|
27
|
-
* Add an item to the queue.
|
|
28
|
-
* @param func The function to queue.
|
|
29
|
-
* @param priority If true, the item will be added to the front of the queue.
|
|
30
|
-
*/
|
|
31
|
-
queue(func: () => void, priority?: boolean): void;
|
|
32
|
-
}
|
package/esm/util/Bucket.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/** @module Bucket */
|
|
2
|
-
/**
|
|
3
|
-
* lovingly borrowed from oceanic.js :3
|
|
4
|
-
* https://github.com/OceanicJS/Oceanic/blob/9ca907f46d45da4afa8c9be9e81e3093925c73c5/lib/rest/Bucket.ts
|
|
5
|
-
*/
|
|
6
|
-
/** A bucket. */
|
|
7
|
-
export default class Bucket {
|
|
8
|
-
constructor(tokenLimit, interval, options) {
|
|
9
|
-
var _a, _b;
|
|
10
|
-
this._queue = [];
|
|
11
|
-
this.tokenLimit = tokenLimit;
|
|
12
|
-
this.interval = interval;
|
|
13
|
-
this.latencyRef = (_a = options === null || options === void 0 ? void 0 : options.latencyRef) !== null && _a !== void 0 ? _a : { latency: 0 };
|
|
14
|
-
this.lastReset = this.tokens = this.lastSend = 0;
|
|
15
|
-
this.reservedTokens = (_b = options === null || options === void 0 ? void 0 : options.reservedTokens) !== null && _b !== void 0 ? _b : 0;
|
|
16
|
-
this.timeout = null;
|
|
17
|
-
}
|
|
18
|
-
check() {
|
|
19
|
-
if (this.timeout || this._queue.length === 0) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
if (this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency < Date.now()) {
|
|
23
|
-
this.lastReset = Date.now();
|
|
24
|
-
this.tokens = Math.max(0, this.tokens - this.tokenLimit);
|
|
25
|
-
}
|
|
26
|
-
let val;
|
|
27
|
-
let tokensAvailable = this.tokens < this.tokenLimit;
|
|
28
|
-
let unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
|
|
29
|
-
while (this._queue.length !== 0 && (unreservedTokensAvailable || (tokensAvailable && this._queue[0].priority))) {
|
|
30
|
-
this.tokens++;
|
|
31
|
-
tokensAvailable = this.tokens < this.tokenLimit;
|
|
32
|
-
unreservedTokensAvailable = this.tokens < (this.tokenLimit - this.reservedTokens);
|
|
33
|
-
const item = this._queue.shift();
|
|
34
|
-
val = this.latencyRef.latency - Date.now() + this.lastSend;
|
|
35
|
-
if (this.latencyRef.latency === 0 || val <= 0) {
|
|
36
|
-
item.func();
|
|
37
|
-
this.lastSend = Date.now();
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
setTimeout(() => {
|
|
41
|
-
item.func();
|
|
42
|
-
}, val);
|
|
43
|
-
this.lastSend = Date.now() + val;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
if (this._queue.length !== 0 && !this.timeout) {
|
|
47
|
-
this.timeout = setTimeout(() => {
|
|
48
|
-
this.timeout = null;
|
|
49
|
-
this.check();
|
|
50
|
-
}, this.tokens < this.tokenLimit ? this.latencyRef.latency : Math.max(0, this.lastReset + this.interval + this.tokenLimit * this.latencyRef.latency - Date.now()));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Add an item to the queue.
|
|
55
|
-
* @param func The function to queue.
|
|
56
|
-
* @param priority If true, the item will be added to the front of the queue.
|
|
57
|
-
*/
|
|
58
|
-
queue(func, priority = false) {
|
|
59
|
-
if (priority) {
|
|
60
|
-
this._queue.unshift({ func, priority });
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
this._queue.push({ func, priority });
|
|
64
|
-
}
|
|
65
|
-
this.check();
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3V0aWwvQnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFxQjtBQUNyQjs7O0dBR0c7QUFFSCxnQkFBZ0I7QUFDaEIsTUFBTSxDQUFDLE9BQU8sT0FBTyxNQUFNO0lBVXZCLFlBQVksVUFBa0IsRUFBRSxRQUFnQixFQUFFLE9BQXlFOztRQVRuSCxXQUFNLEdBQStDLEVBQUUsQ0FBQztRQVU1RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFVBQVUsbUNBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsY0FBYyxtQ0FBSSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVPLEtBQUs7UUFDVCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO1lBQzFGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdB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
|