@rsdk/common.node 4.0.8-next.4 → 4.0.8-next.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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.0.8-next.6](https://github.com/R-Vision/rsdk/compare/v4.0.8-next.5...v4.0.8-next.6) (2024-01-18)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @rsdk/common.node
|
|
9
|
+
|
|
10
|
+
## [4.0.8-next.5](https://github.com/R-Vision/rsdk/compare/v4.0.8-next.4...v4.0.8-next.5) (2024-01-17)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @rsdk/common.node
|
|
13
|
+
|
|
6
14
|
## [4.0.8-next.4](https://github.com/R-Vision/rsdk/compare/v4.0.8-next.3...v4.0.8-next.4) (2024-01-17)
|
|
7
15
|
|
|
8
16
|
### Bug Fixes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/common.node",
|
|
3
|
-
"version": "4.0.8-next.
|
|
3
|
+
"version": "4.0.8-next.6",
|
|
4
4
|
"description": "Useful common classes, functions and types",
|
|
5
5
|
"license": "Apache License 2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
"toml": "^3.0.0",
|
|
20
20
|
"yaml": "^2.3.1"
|
|
21
21
|
},
|
|
22
|
-
"gitHead": "
|
|
22
|
+
"gitHead": "220d4c92a0a598b5d97094f2400d281700fb02bd"
|
|
23
23
|
}
|
package/tsconfig.build.json
CHANGED
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
-
};
|
|
24
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
-
if (mod && mod.__esModule) return mod;
|
|
26
|
-
var result = {};
|
|
27
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
-
__setModuleDefault(result, mod);
|
|
29
|
-
return result;
|
|
30
|
-
};
|
|
31
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
const timers = __importStar(require("node:timers/promises"));
|
|
36
|
-
const concurrency_decorator_1 = require("./concurrency.decorator");
|
|
37
|
-
const deferred_1 = require("./deferred");
|
|
38
|
-
class BaseActor {
|
|
39
|
-
called = 0;
|
|
40
|
-
resolved = 0;
|
|
41
|
-
forwarded = 0;
|
|
42
|
-
forward() {
|
|
43
|
-
this.forwarded += 1;
|
|
44
|
-
}
|
|
45
|
-
async rawDo() {
|
|
46
|
-
const iterated = this.called + 1;
|
|
47
|
-
this.called = iterated;
|
|
48
|
-
await deferred_1.Deferred.waitFor(() => this.forwarded >= iterated);
|
|
49
|
-
this.resolved = iterated;
|
|
50
|
-
}
|
|
51
|
-
async rawDoThrow() {
|
|
52
|
-
await this.rawDo();
|
|
53
|
-
throw new Error(this.resolved.toString());
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
describe('concurrency decorator', () => {
|
|
57
|
-
class Actor extends BaseActor {
|
|
58
|
-
async do() {
|
|
59
|
-
await this.rawDo();
|
|
60
|
-
}
|
|
61
|
-
async doX2() {
|
|
62
|
-
return await this.rawDo();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
__decorate([
|
|
66
|
-
(0, concurrency_decorator_1.Concurrency)(),
|
|
67
|
-
__metadata("design:type", Function),
|
|
68
|
-
__metadata("design:paramtypes", []),
|
|
69
|
-
__metadata("design:returntype", Promise)
|
|
70
|
-
], Actor.prototype, "do", null);
|
|
71
|
-
__decorate([
|
|
72
|
-
(0, concurrency_decorator_1.Concurrency)(2),
|
|
73
|
-
__metadata("design:type", Function),
|
|
74
|
-
__metadata("design:paramtypes", []),
|
|
75
|
-
__metadata("design:returntype", Promise)
|
|
76
|
-
], Actor.prototype, "doX2", null);
|
|
77
|
-
it('should concurrency 1', async () => {
|
|
78
|
-
const a = new Actor();
|
|
79
|
-
const one = a.do();
|
|
80
|
-
const two = a.do();
|
|
81
|
-
expect(a.called).toBe(1);
|
|
82
|
-
expect(a.resolved).toBe(0);
|
|
83
|
-
a.forward();
|
|
84
|
-
await one;
|
|
85
|
-
await timers.setImmediate();
|
|
86
|
-
expect(a.called).toBe(2);
|
|
87
|
-
expect(a.resolved).toBe(1);
|
|
88
|
-
a.forward();
|
|
89
|
-
await two;
|
|
90
|
-
}, 10e3);
|
|
91
|
-
it('should general concurrency 1', async () => {
|
|
92
|
-
const a = new Actor();
|
|
93
|
-
const b = new Actor();
|
|
94
|
-
const one = a.do();
|
|
95
|
-
const two = b.do();
|
|
96
|
-
expect(a.called).toBe(1);
|
|
97
|
-
expect(a.resolved).toBe(0);
|
|
98
|
-
expect(b.called).toBe(0);
|
|
99
|
-
expect(b.resolved).toBe(0);
|
|
100
|
-
a.forward();
|
|
101
|
-
await one;
|
|
102
|
-
await timers.setImmediate();
|
|
103
|
-
expect(a.called).toBe(1);
|
|
104
|
-
expect(a.resolved).toBe(1);
|
|
105
|
-
b.forward();
|
|
106
|
-
await two;
|
|
107
|
-
expect(b.called).toBe(1);
|
|
108
|
-
expect(b.resolved).toBe(1);
|
|
109
|
-
}, 10e3);
|
|
110
|
-
it('should concurrency 2', async () => {
|
|
111
|
-
const a = new Actor();
|
|
112
|
-
const one = a.doX2();
|
|
113
|
-
const two = a.doX2();
|
|
114
|
-
const three = a.doX2();
|
|
115
|
-
expect(a.called).toBe(2);
|
|
116
|
-
expect(a.resolved).toBe(0);
|
|
117
|
-
a.forward();
|
|
118
|
-
await one;
|
|
119
|
-
await timers.setImmediate();
|
|
120
|
-
expect(a.called).toBe(3);
|
|
121
|
-
expect(a.resolved).toBe(1);
|
|
122
|
-
a.forward();
|
|
123
|
-
await two;
|
|
124
|
-
a.forward();
|
|
125
|
-
await three;
|
|
126
|
-
}, 10e3);
|
|
127
|
-
describe('with exception', () => {
|
|
128
|
-
class Actor extends BaseActor {
|
|
129
|
-
async doThrow() {
|
|
130
|
-
await this.rawDoThrow();
|
|
131
|
-
}
|
|
132
|
-
async doThrowX2() {
|
|
133
|
-
return await this.rawDoThrow();
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
__decorate([
|
|
137
|
-
(0, concurrency_decorator_1.Concurrency)(),
|
|
138
|
-
__metadata("design:type", Function),
|
|
139
|
-
__metadata("design:paramtypes", []),
|
|
140
|
-
__metadata("design:returntype", Promise)
|
|
141
|
-
], Actor.prototype, "doThrow", null);
|
|
142
|
-
__decorate([
|
|
143
|
-
(0, concurrency_decorator_1.Concurrency)(2),
|
|
144
|
-
__metadata("design:type", Function),
|
|
145
|
-
__metadata("design:paramtypes", []),
|
|
146
|
-
__metadata("design:returntype", Promise)
|
|
147
|
-
], Actor.prototype, "doThrowX2", null);
|
|
148
|
-
let listeners;
|
|
149
|
-
beforeAll(() => {
|
|
150
|
-
listeners = process.listeners('unhandledRejection');
|
|
151
|
-
process.removeAllListeners('unhandledRejection');
|
|
152
|
-
});
|
|
153
|
-
afterAll(() => {
|
|
154
|
-
for (const listener of listeners) {
|
|
155
|
-
process.addListener('unhandledRejection', listener);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
it('should concurrency 1', async () => {
|
|
159
|
-
const a = new Actor();
|
|
160
|
-
const one = a.doThrow();
|
|
161
|
-
const two = a.doThrow();
|
|
162
|
-
expect(a.called).toBe(1);
|
|
163
|
-
expect(a.resolved).toBe(0);
|
|
164
|
-
a.forward();
|
|
165
|
-
await expect(one).rejects.toThrow(new Error('1'));
|
|
166
|
-
// wait start two promises
|
|
167
|
-
await timers.setImmediate();
|
|
168
|
-
expect(a.called).toBe(2);
|
|
169
|
-
expect(a.resolved).toBe(1);
|
|
170
|
-
a.forward();
|
|
171
|
-
await expect(two).rejects.toThrow(new Error('2'));
|
|
172
|
-
}, 10e3);
|
|
173
|
-
it('should concurrency 2', async () => {
|
|
174
|
-
const a = new Actor();
|
|
175
|
-
const one = a.doThrowX2();
|
|
176
|
-
const two = a.doThrowX2();
|
|
177
|
-
const three = a.doThrowX2();
|
|
178
|
-
expect(a.called).toBe(2);
|
|
179
|
-
expect(a.resolved).toBe(0);
|
|
180
|
-
a.forward();
|
|
181
|
-
await expect(one).rejects.toEqual(new Error('1'));
|
|
182
|
-
await timers.setImmediate();
|
|
183
|
-
expect(a.called).toBe(3);
|
|
184
|
-
expect(a.resolved).toBe(1);
|
|
185
|
-
a.forward();
|
|
186
|
-
await expect(two).rejects.toEqual(new Error('2'));
|
|
187
|
-
a.forward();
|
|
188
|
-
await expect(three).rejects.toEqual(new Error('3'));
|
|
189
|
-
}, 10e3);
|
|
190
|
-
});
|
|
191
|
-
describe('with each', () => {
|
|
192
|
-
class Actor extends BaseActor {
|
|
193
|
-
async do() {
|
|
194
|
-
return super.rawDo();
|
|
195
|
-
}
|
|
196
|
-
async doX2() {
|
|
197
|
-
return super.rawDo();
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
__decorate([
|
|
201
|
-
(0, concurrency_decorator_1.Concurrency)({
|
|
202
|
-
limit: 1,
|
|
203
|
-
each: true,
|
|
204
|
-
}),
|
|
205
|
-
__metadata("design:type", Function),
|
|
206
|
-
__metadata("design:paramtypes", []),
|
|
207
|
-
__metadata("design:returntype", Promise)
|
|
208
|
-
], Actor.prototype, "do", null);
|
|
209
|
-
__decorate([
|
|
210
|
-
(0, concurrency_decorator_1.Concurrency)({
|
|
211
|
-
limit: 2,
|
|
212
|
-
each: true,
|
|
213
|
-
}),
|
|
214
|
-
__metadata("design:type", Function),
|
|
215
|
-
__metadata("design:paramtypes", []),
|
|
216
|
-
__metadata("design:returntype", Promise)
|
|
217
|
-
], Actor.prototype, "doX2", null);
|
|
218
|
-
it('should concurrency 1', async () => {
|
|
219
|
-
const a = new Actor();
|
|
220
|
-
const b = new Actor();
|
|
221
|
-
const one = a.do();
|
|
222
|
-
const two = a.do();
|
|
223
|
-
const BOne = b.do();
|
|
224
|
-
const BTwo = b.do();
|
|
225
|
-
expect(a.called).toBe(1);
|
|
226
|
-
expect(a.resolved).toBe(0);
|
|
227
|
-
expect(b.called).toBe(1);
|
|
228
|
-
expect(b.resolved).toBe(0);
|
|
229
|
-
a.forward();
|
|
230
|
-
await one;
|
|
231
|
-
await timers.setImmediate();
|
|
232
|
-
expect(a.called).toBe(2);
|
|
233
|
-
expect(a.resolved).toBe(1);
|
|
234
|
-
b.forward();
|
|
235
|
-
await BOne;
|
|
236
|
-
await timers.setImmediate();
|
|
237
|
-
expect(b.called).toBe(2);
|
|
238
|
-
expect(b.resolved).toBe(1);
|
|
239
|
-
a.forward();
|
|
240
|
-
await two;
|
|
241
|
-
b.forward();
|
|
242
|
-
await BTwo;
|
|
243
|
-
}, 10e3);
|
|
244
|
-
});
|
|
245
|
-
});
|
|
246
|
-
//# sourceMappingURL=concurrency.decorator.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.decorator.test.js","sourceRoot":"","sources":["../src/concurrency.decorator.test.ts"],"names":[],"mappings":"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"}
|