asygen 0.0.5 → 0.0.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/README.md +2 -2
- package/build/defer.cjs +44 -106
- package/build/defer.cjs.map +1 -1
- package/build/defer.js +1 -1
- package/build/generatorify.cjs +28 -189
- package/build/generatorify.cjs.map +1 -1
- package/package.json +7 -4
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ console.log(result.status); // resolved or rejected
|
|
|
31
31
|
#### Convert events to asyncGenerator
|
|
32
32
|
```typescript
|
|
33
33
|
import { once } from 'node:events';
|
|
34
|
-
import {
|
|
34
|
+
import { generatorify, Task } from 'asygen';
|
|
35
35
|
|
|
36
36
|
// send data from the event until process exit
|
|
37
37
|
const task: Task = async (send) => {
|
|
@@ -56,7 +56,7 @@ Copyright (c) 2023-present Ivan Zakharchanka
|
|
|
56
56
|
[github-url]: https://github.com/3axap4eHko/asygen/actions/workflows/cicd.yml
|
|
57
57
|
[github-image]: https://github.com/3axap4eHko/asygen/actions/workflows/cicd.yml/badge.svg
|
|
58
58
|
[codecov-url]: https://codecov.io/gh/3axap4eHko/asygen
|
|
59
|
-
[codecov-image]: https://codecov.io/gh/3axap4eHko/asygen/branch/master/graph/badge.svg?token=
|
|
59
|
+
[codecov-image]: https://codecov.io/gh/3axap4eHko/asygen/branch/master/graph/badge.svg?token=ZKYSDY7GQ0
|
|
60
60
|
[codeclimate-url]: https://codeclimate.com/github/3axap4eHko/asygen/maintainability
|
|
61
61
|
[codeclimate-image]: https://api.codeclimate.com/v1/badges/0f24a357154bada2a37f/maintainability
|
|
62
62
|
[snyk-url]: https://snyk.io/test/npm/asygen/latest
|
package/build/defer.cjs
CHANGED
|
@@ -9,130 +9,68 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
Status:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return getId;
|
|
17
|
-
},
|
|
18
|
-
Deferred: function() {
|
|
19
|
-
return Deferred;
|
|
20
|
-
},
|
|
21
|
-
defer: function() {
|
|
22
|
-
return defer;
|
|
23
|
-
}
|
|
12
|
+
Status: ()=>Status,
|
|
13
|
+
getId: ()=>getId,
|
|
14
|
+
Deferred: ()=>Deferred,
|
|
15
|
+
defer: ()=>defer
|
|
24
16
|
});
|
|
25
|
-
function _classCallCheck(instance, Constructor) {
|
|
26
|
-
if (!(instance instanceof Constructor)) {
|
|
27
|
-
throw new TypeError("Cannot call a class as a function");
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function _defineProperties(target, props) {
|
|
31
|
-
for(var i = 0; i < props.length; i++){
|
|
32
|
-
var descriptor = props[i];
|
|
33
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
34
|
-
descriptor.configurable = true;
|
|
35
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
36
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function _createClass(Constructor, protoProps, staticProps) {
|
|
40
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
41
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
42
|
-
return Constructor;
|
|
43
|
-
}
|
|
44
|
-
function _defineProperty(obj, key, value) {
|
|
45
|
-
if (key in obj) {
|
|
46
|
-
Object.defineProperty(obj, key, {
|
|
47
|
-
value: value,
|
|
48
|
-
enumerable: true,
|
|
49
|
-
configurable: true,
|
|
50
|
-
writable: true
|
|
51
|
-
});
|
|
52
|
-
} else {
|
|
53
|
-
obj[key] = value;
|
|
54
|
-
}
|
|
55
|
-
return obj;
|
|
56
|
-
}
|
|
57
17
|
var Status;
|
|
58
18
|
(function(Status) {
|
|
59
|
-
Status["PENDING"] =
|
|
60
|
-
Status["RESOLVED"] =
|
|
61
|
-
Status["REJECTED"] =
|
|
19
|
+
Status["PENDING"] = 'pending';
|
|
20
|
+
Status["RESOLVED"] = 'resolved';
|
|
21
|
+
Status["REJECTED"] = 'rejected';
|
|
62
22
|
})(Status || (Status = {}));
|
|
63
|
-
|
|
23
|
+
const counter = [
|
|
64
24
|
0,
|
|
65
25
|
0
|
|
66
26
|
];
|
|
67
|
-
|
|
68
|
-
|
|
27
|
+
const getId = ()=>{
|
|
28
|
+
const result = Date.now() * 100;
|
|
69
29
|
if (counter[0] !== result) {
|
|
70
30
|
counter[0] = result;
|
|
71
31
|
counter[1] = 0;
|
|
72
32
|
}
|
|
73
33
|
return (counter[0] + counter[1]++).toString(16);
|
|
74
34
|
};
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
_defineProperty(this, "_status", Status.PENDING);
|
|
86
|
-
this._promise = new Promise(function(resolve, reject) {
|
|
87
|
-
_this._resolve = resolve;
|
|
88
|
-
_this._reject = reject;
|
|
35
|
+
class Deferred {
|
|
36
|
+
txts = getId();
|
|
37
|
+
_promise;
|
|
38
|
+
_resolve;
|
|
39
|
+
_reject;
|
|
40
|
+
_status = Status.PENDING;
|
|
41
|
+
constructor(){
|
|
42
|
+
this._promise = new Promise((resolve, reject)=>{
|
|
43
|
+
this._resolve = resolve;
|
|
44
|
+
this._reject = reject;
|
|
89
45
|
});
|
|
90
46
|
this.resolve = this.resolve.bind(this);
|
|
91
47
|
this.reject = this.reject.bind(this);
|
|
92
48
|
}
|
|
93
|
-
|
|
94
|
-
{
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
key: "status",
|
|
108
|
-
get: function get() {
|
|
109
|
-
return this._status;
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
key: "resolve",
|
|
114
|
-
value: function resolve(value) {
|
|
115
|
-
if (this._status === Status.PENDING) {
|
|
116
|
-
this._status = Status.RESOLVED;
|
|
117
|
-
this._resolve(value);
|
|
118
|
-
}
|
|
119
|
-
return this;
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
key: "reject",
|
|
124
|
-
value: function reject(error) {
|
|
125
|
-
if (this._status === Status.PENDING) {
|
|
126
|
-
this._status = Status.REJECTED;
|
|
127
|
-
this._reject(error);
|
|
128
|
-
}
|
|
129
|
-
return this;
|
|
130
|
-
}
|
|
49
|
+
get [Symbol.toStringTag]() {
|
|
50
|
+
return `Deferred ${this.txts} ${this._status}`;
|
|
51
|
+
}
|
|
52
|
+
get promise() {
|
|
53
|
+
return this._promise;
|
|
54
|
+
}
|
|
55
|
+
get status() {
|
|
56
|
+
return this._status;
|
|
57
|
+
}
|
|
58
|
+
resolve(value) {
|
|
59
|
+
if (this._status === Status.PENDING) {
|
|
60
|
+
this._status = Status.RESOLVED;
|
|
61
|
+
this._resolve(value);
|
|
131
62
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
reject(error) {
|
|
66
|
+
if (this._status === Status.PENDING) {
|
|
67
|
+
this._status = Status.REJECTED;
|
|
68
|
+
this._reject(error);
|
|
69
|
+
}
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const defer = ()=>{
|
|
136
74
|
return new Deferred();
|
|
137
75
|
};
|
|
138
76
|
|
package/build/defer.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/defer.ts"],"sourcesContent":["export enum Status {\n PENDING = 'pending',\n RESOLVED = 'resolved',\n REJECTED = 'rejected',\n}\n\nconst counter: [number, number] = [0,0];\nexport const getId = () => {\n const result = Date.now() * 100;\n if (counter[0] !== result) {\n counter[0] = result;\n counter[1] = 0;\n };\n return (counter[0] + (counter[1]++)).toString(16);\n};\n\nexport class Deferred<T = void, E = unknown> {\n private txts = getId();\n private _promise: Promise<T>;\n private _resolve?: (value: T) => void;\n private _reject?: (error: E) => void;\n private _status: Status = Status.PENDING;\n\n constructor() {\n this._promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.resolve = this.resolve.bind(this);\n this.reject = this.reject.bind(this);\n }\n\n get [Symbol.toStringTag]() {\n return `Deferred ${this.txts} ${this._status}`;\n }\n\n get promise() {\n return this._promise;\n }\n\n get status() {\n return this._status;\n }\n\n resolve(value: T) {\n if (this._status === Status.PENDING) {\n this._status = Status.RESOLVED;\n this._resolve(value);\n }\n\n return this;\n }\n\n reject(error: E) {\n if (this._status === Status.PENDING) {\n this._status = Status.REJECTED;\n this._reject(error);\n }\n return this;\n }\n}\n\nexport const defer = <T = void, E = unknown>() => {\n return new Deferred<T, E>();\n}\n"],"names":["getId","Deferred","defer","Status","PENDING","RESOLVED","REJECTED","counter","result","Date","now","toString","
|
|
1
|
+
{"version":3,"sources":["src/defer.ts"],"sourcesContent":["export enum Status {\n PENDING = 'pending',\n RESOLVED = 'resolved',\n REJECTED = 'rejected',\n}\n\nconst counter: [number, number] = [0,0];\nexport const getId = () => {\n const result = Date.now() * 100;\n if (counter[0] !== result) {\n counter[0] = result;\n counter[1] = 0;\n };\n return (counter[0] + (counter[1]++)).toString(16);\n};\n\nexport class Deferred<T = void, E = unknown> {\n private txts = getId();\n private _promise: Promise<T>;\n private _resolve?: (value: T) => void;\n private _reject?: (error: E) => void;\n private _status: Status = Status.PENDING;\n\n constructor() {\n this._promise = new Promise<T>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.resolve = this.resolve.bind(this);\n this.reject = this.reject.bind(this);\n }\n\n get [Symbol.toStringTag]() {\n return `Deferred ${this.txts} ${this._status}`;\n }\n\n get promise() {\n return this._promise;\n }\n\n get status() {\n return this._status;\n }\n\n resolve(value: T) {\n if (this._status === Status.PENDING) {\n this._status = Status.RESOLVED;\n this._resolve(value);\n }\n\n return this;\n }\n\n reject(error: E) {\n if (this._status === Status.PENDING) {\n this._status = Status.REJECTED;\n this._reject(error);\n }\n return this;\n }\n}\n\nexport const defer = <T = void, E = unknown>() => {\n return new Deferred<T, E>();\n}\n"],"names":["getId","Deferred","defer","Status","PENDING","RESOLVED","REJECTED","counter","result","Date","now","toString","txts","_promise","_resolve","_reject","_status","constructor","Promise","resolve","reject","bind","Symbol","toStringTag","promise","status","value","error"],"mappings":";;;;;;;;;;;;IAOaA,KAAK,MAALA;IASAC,QAAQ,MAARA;IA8CAC,KAAK,MAALA;;IA9DN;UAAKC,MAAM;IAANA,OACVC,aAAU;IADAD,OAEVE,cAAW;IAFDF,OAGVG,cAAW;GAHDH,WAAAA;AAMZ,MAAMI,UAA4B;IAAC;IAAE;CAAE;AAChC,MAAMP,QAAQ,IAAM;IACzB,MAAMQ,SAASC,KAAKC,GAAG,KAAK;IAC5B,IAAIH,OAAO,CAAC,EAAE,KAAKC,QAAQ;QACzBD,OAAO,CAAC,EAAE,GAAGC;QACbD,OAAO,CAAC,EAAE,GAAG;IACf,CAAC;IACD,OAAO,AAACA,CAAAA,OAAO,CAAC,EAAE,GAAIA,OAAO,CAAC,EAAE,EAAE,EAAGI,QAAQ,CAAC;AAChD;AAEO,MAAMV;IACHW,OAAOZ,QAAQ;IACfa,SAAqB;IACrBC,SAA8B;IAC9BC,QAA6B;IAC7BC,UAAkBb,OAAOC,OAAO,CAAC;IAEzCa,aAAc;QACZ,IAAI,CAACJ,QAAQ,GAAG,IAAIK,QAAW,CAACC,SAASC,SAAW;YAClD,IAAI,CAACN,QAAQ,GAAGK;YAChB,IAAI,CAACJ,OAAO,GAAGK;QACjB;QACA,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,CAACE,IAAI,CAAC,IAAI;QACrC,IAAI,CAACD,MAAM,GAAG,IAAI,CAACA,MAAM,CAACC,IAAI,CAAC,IAAI;IACrC;IAEA,IAAI,CAACC,OAAOC,WAAW,CAAC,GAAG;QACzB,OAAO,CAAC,SAAS,EAAE,IAAI,CAACX,IAAI,CAAC,CAAC,EAAE,IAAI,CAACI,OAAO,CAAC,CAAC;IAChD;IAEA,IAAIQ,UAAU;QACZ,OAAO,IAAI,CAACX,QAAQ;IACtB;IAEA,IAAIY,SAAS;QACX,OAAO,IAAI,CAACT,OAAO;IACrB;IAEAG,QAAQO,KAAQ,EAAE;QAChB,IAAI,IAAI,CAACV,OAAO,KAAKb,OAAOC,OAAO,EAAE;YACnC,IAAI,CAACY,OAAO,GAAGb,OAAOE,QAAQ;YAC9B,IAAI,CAACS,QAAQ,CAACY;QAChB,CAAC;QAED,OAAO,IAAI;IACb;IAEAN,OAAOO,KAAQ,EAAE;QACf,IAAI,IAAI,CAACX,OAAO,KAAKb,OAAOC,OAAO,EAAE;YACnC,IAAI,CAACY,OAAO,GAAGb,OAAOG,QAAQ;YAC9B,IAAI,CAACS,OAAO,CAACY;QACf,CAAC;QACD,OAAO,IAAI;IACb;AACF;AAEO,MAAMzB,QAAQ,IAA6B;IAChD,OAAO,IAAID;AACb"}
|
package/build/defer.js
CHANGED
package/build/generatorify.cjs
CHANGED
|
@@ -4,205 +4,44 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
});
|
|
5
5
|
Object.defineProperty(exports, "generatorify", {
|
|
6
6
|
enumerable: true,
|
|
7
|
-
get:
|
|
8
|
-
return generatorify;
|
|
9
|
-
}
|
|
7
|
+
get: ()=>generatorify
|
|
10
8
|
});
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
var info = gen[key](arg);
|
|
15
|
-
var value = info.value;
|
|
16
|
-
} catch (error) {
|
|
17
|
-
reject(error);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
if (info.done) {
|
|
21
|
-
resolve(value);
|
|
22
|
-
} else {
|
|
23
|
-
Promise.resolve(value).then(_next, _throw);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function _asyncToGenerator(fn) {
|
|
27
|
-
return function() {
|
|
28
|
-
var self = this, args = arguments;
|
|
29
|
-
return new Promise(function(resolve, reject) {
|
|
30
|
-
var gen = fn.apply(self, args);
|
|
31
|
-
function _next(value) {
|
|
32
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
33
|
-
}
|
|
34
|
-
function _throw(err) {
|
|
35
|
-
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
36
|
-
}
|
|
37
|
-
_next(undefined);
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
function _defineProperty(obj, key, value) {
|
|
42
|
-
if (key in obj) {
|
|
43
|
-
Object.defineProperty(obj, key, {
|
|
44
|
-
value: value,
|
|
45
|
-
enumerable: true,
|
|
46
|
-
configurable: true,
|
|
47
|
-
writable: true
|
|
48
|
-
});
|
|
49
|
-
} else {
|
|
50
|
-
obj[key] = value;
|
|
51
|
-
}
|
|
52
|
-
return obj;
|
|
53
|
-
}
|
|
54
|
-
var __generator = (void 0) && (void 0).__generator || function(thisArg, body) {
|
|
55
|
-
var f, y, t, g, _ = {
|
|
56
|
-
label: 0,
|
|
57
|
-
sent: function() {
|
|
58
|
-
if (t[0] & 1) throw t[1];
|
|
59
|
-
return t[1];
|
|
60
|
-
},
|
|
61
|
-
trys: [],
|
|
62
|
-
ops: []
|
|
63
|
-
};
|
|
64
|
-
return(g = {
|
|
65
|
-
next: verb(0),
|
|
66
|
-
"throw": verb(1),
|
|
67
|
-
"return": verb(2)
|
|
68
|
-
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
69
|
-
return this;
|
|
70
|
-
}), g);
|
|
71
|
-
function verb(n) {
|
|
72
|
-
return function(v) {
|
|
73
|
-
return step([
|
|
74
|
-
n,
|
|
75
|
-
v
|
|
76
|
-
]);
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function step(op) {
|
|
80
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
81
|
-
while(_)try {
|
|
82
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
83
|
-
if (y = 0, t) op = [
|
|
84
|
-
op[0] & 2,
|
|
85
|
-
t.value
|
|
86
|
-
];
|
|
87
|
-
switch(op[0]){
|
|
88
|
-
case 0:
|
|
89
|
-
case 1:
|
|
90
|
-
t = op;
|
|
91
|
-
break;
|
|
92
|
-
case 4:
|
|
93
|
-
_.label++;
|
|
94
|
-
return {
|
|
95
|
-
value: op[1],
|
|
96
|
-
done: false
|
|
97
|
-
};
|
|
98
|
-
case 5:
|
|
99
|
-
_.label++;
|
|
100
|
-
y = op[1];
|
|
101
|
-
op = [
|
|
102
|
-
0
|
|
103
|
-
];
|
|
104
|
-
continue;
|
|
105
|
-
case 7:
|
|
106
|
-
op = _.ops.pop();
|
|
107
|
-
_.trys.pop();
|
|
108
|
-
continue;
|
|
109
|
-
default:
|
|
110
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
111
|
-
_ = 0;
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
115
|
-
_.label = op[1];
|
|
116
|
-
break;
|
|
117
|
-
}
|
|
118
|
-
if (op[0] === 6 && _.label < t[1]) {
|
|
119
|
-
_.label = t[1];
|
|
120
|
-
t = op;
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
if (t && _.label < t[2]) {
|
|
124
|
-
_.label = t[2];
|
|
125
|
-
_.ops.push(op);
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
if (t[2]) _.ops.pop();
|
|
129
|
-
_.trys.pop();
|
|
130
|
-
continue;
|
|
131
|
-
}
|
|
132
|
-
op = body.call(thisArg, _);
|
|
133
|
-
} catch (e) {
|
|
134
|
-
op = [
|
|
135
|
-
6,
|
|
136
|
-
e
|
|
137
|
-
];
|
|
138
|
-
y = 0;
|
|
139
|
-
} finally{
|
|
140
|
-
f = t = 0;
|
|
141
|
-
}
|
|
142
|
-
if (op[0] & 5) throw op[1];
|
|
143
|
-
return {
|
|
144
|
-
value: op[0] ? op[1] : void 0,
|
|
145
|
-
done: true
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
var generatorify = function(task) {
|
|
150
|
-
var dPoll = [
|
|
9
|
+
const _deferCjs = require("./defer.cjs");
|
|
10
|
+
const generatorify = (task)=>{
|
|
11
|
+
const dPoll = [
|
|
151
12
|
(0, _deferCjs.defer)()
|
|
152
13
|
];
|
|
153
|
-
Promise.resolve(task(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
14
|
+
Promise.resolve(task((value)=>{
|
|
15
|
+
const next = (0, _deferCjs.defer)();
|
|
16
|
+
const prev = dPoll.push(next) - 2;
|
|
17
|
+
const prevDeferred = dPoll[prev];
|
|
157
18
|
prevDeferred.resolve({
|
|
158
|
-
value
|
|
19
|
+
value,
|
|
159
20
|
done: false
|
|
160
21
|
});
|
|
161
|
-
return prevDeferred.promise.then(
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
return __generator(this, function(_state) {
|
|
167
|
-
switch(_state.label){
|
|
168
|
-
case 0:
|
|
169
|
-
dPoll[dPoll.length - 1].resolve({
|
|
170
|
-
value: value,
|
|
171
|
-
done: true
|
|
172
|
-
});
|
|
173
|
-
return [
|
|
174
|
-
4,
|
|
175
|
-
Promise.all(dPoll.map(function(d) {
|
|
176
|
-
return d.promise;
|
|
177
|
-
}))
|
|
178
|
-
];
|
|
179
|
-
case 1:
|
|
180
|
-
_state.sent();
|
|
181
|
-
return [
|
|
182
|
-
2,
|
|
183
|
-
{
|
|
184
|
-
value: value,
|
|
185
|
-
done: true
|
|
186
|
-
}
|
|
187
|
-
];
|
|
188
|
-
}
|
|
189
|
-
});
|
|
22
|
+
return prevDeferred.promise.then((v)=>v.value);
|
|
23
|
+
})).then(async (value)=>{
|
|
24
|
+
dPoll[dPoll.length - 1].resolve({
|
|
25
|
+
value,
|
|
26
|
+
done: true
|
|
190
27
|
});
|
|
191
|
-
|
|
192
|
-
return _ref.apply(this, arguments);
|
|
193
|
-
};
|
|
194
|
-
}());
|
|
195
|
-
return _defineProperty({}, Symbol.asyncIterator, function() {
|
|
28
|
+
await Promise.all(dPoll.map((d)=>d.promise));
|
|
196
29
|
return {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
current.promise.then(function() {
|
|
200
|
-
return dPoll.shift();
|
|
201
|
-
});
|
|
202
|
-
return current.promise;
|
|
203
|
-
}
|
|
30
|
+
value,
|
|
31
|
+
done: true
|
|
204
32
|
};
|
|
205
33
|
});
|
|
34
|
+
return {
|
|
35
|
+
[Symbol.asyncIterator] () {
|
|
36
|
+
return {
|
|
37
|
+
next () {
|
|
38
|
+
const current = dPoll[0];
|
|
39
|
+
current.promise.then(()=>dPoll.shift());
|
|
40
|
+
return current.promise;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
206
45
|
};
|
|
207
46
|
|
|
208
47
|
//# sourceMappingURL=generatorify.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/generatorify.ts"],"sourcesContent":["import { defer, Deferred } from './defer';\n\nexport interface TaskCallback<T> {\n (value: T): Promise<T>;\n}\n\nexport interface Task<T, R = unknown> {\n (callback: TaskCallback<T>): R;\n}\n\nexport const generatorify = <T, R = unknown>(task: Task<T, R>): AsyncIterable<T> => {\n const dPoll: Deferred<IteratorResult<T, R>>[] = [defer<IteratorYieldResult<T>>()];\n\n Promise.resolve(task(value => {\n const next = defer<IteratorYieldResult<T>>();\n const prev = dPoll.push(next) - 2;\n const prevDeferred = dPoll[prev] as Deferred<IteratorYieldResult<T>>;\n prevDeferred.resolve({ value, done: false });\n return prevDeferred.promise.then(v => v.value);\n })).then(async (value) => {\n dPoll[dPoll.length - 1].resolve({ value, done: true });\n await Promise.all(dPoll.map(d => d.promise));\n return { value, done: true };\n });\n\n return {\n [Symbol.asyncIterator]() {\n return {\n next() {\n const current = dPoll[0];\n current.promise.then(() => dPoll.shift());\n return current.promise;\n },\n };\n }\n };\n}\n"],"names":["generatorify","task","dPoll","defer","Promise","resolve","value","next","prev","push","prevDeferred","done","promise","then","v","length","all","map","d","Symbol","asyncIterator","current","shift"],"mappings":";;;;+BAUaA
|
|
1
|
+
{"version":3,"sources":["src/generatorify.ts"],"sourcesContent":["import { defer, Deferred } from './defer';\n\nexport interface TaskCallback<T> {\n (value: T): Promise<T>;\n}\n\nexport interface Task<T, R = unknown> {\n (callback: TaskCallback<T>): R;\n}\n\nexport const generatorify = <T, R = unknown>(task: Task<T, R>): AsyncIterable<T> => {\n const dPoll: Deferred<IteratorResult<T, R>>[] = [defer<IteratorYieldResult<T>>()];\n\n Promise.resolve(task(value => {\n const next = defer<IteratorYieldResult<T>>();\n const prev = dPoll.push(next) - 2;\n const prevDeferred = dPoll[prev] as Deferred<IteratorYieldResult<T>>;\n prevDeferred.resolve({ value, done: false });\n return prevDeferred.promise.then(v => v.value);\n })).then(async (value) => {\n dPoll[dPoll.length - 1].resolve({ value, done: true });\n await Promise.all(dPoll.map(d => d.promise));\n return { value, done: true };\n });\n\n return {\n [Symbol.asyncIterator]() {\n return {\n next() {\n const current = dPoll[0];\n current.promise.then(() => dPoll.shift());\n return current.promise;\n },\n };\n }\n };\n}\n"],"names":["generatorify","task","dPoll","defer","Promise","resolve","value","next","prev","push","prevDeferred","done","promise","then","v","length","all","map","d","Symbol","asyncIterator","current","shift"],"mappings":";;;;+BAUaA;;aAAAA;;0BAVmB;AAUzB,MAAMA,eAAe,CAAiBC,OAAuC;IAClF,MAAMC,QAA0C;QAACC,IAAAA,eAAK;KAA2B;IAEjFC,QAAQC,OAAO,CAACJ,KAAKK,CAAAA,QAAS;QAC5B,MAAMC,OAAOJ,IAAAA,eAAK;QAClB,MAAMK,OAAON,MAAMO,IAAI,CAACF,QAAQ;QAChC,MAAMG,eAAeR,KAAK,CAACM,KAAK;QAChCE,aAAaL,OAAO,CAAC;YAAEC;YAAOK,MAAM,KAAK;QAAC;QAC1C,OAAOD,aAAaE,OAAO,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAER,KAAK;IAC/C,IAAIO,IAAI,CAAC,OAAOP,QAAU;QACxBJ,KAAK,CAACA,MAAMa,MAAM,GAAG,EAAE,CAACV,OAAO,CAAC;YAAEC;YAAOK,MAAM,IAAI;QAAC;QACpD,MAAMP,QAAQY,GAAG,CAACd,MAAMe,GAAG,CAACC,CAAAA,IAAKA,EAAEN,OAAO;QAC1C,OAAO;YAAEN;YAAOK,MAAM,IAAI;QAAC;IAC7B;IAEA,OAAO;QACL,CAACQ,OAAOC,aAAa,CAAC,IAAG;YACvB,OAAO;gBACLb,QAAO;oBACL,MAAMc,UAAUnB,KAAK,CAAC,EAAE;oBACxBmB,QAAQT,OAAO,CAACC,IAAI,CAAC,IAAMX,MAAMoB,KAAK;oBACtC,OAAOD,QAAQT,OAAO;gBACxB;YACF;QACF;IACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "asygen",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "0-Deps, simple and fast async generator library for browser and NodeJS",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.cjs",
|
|
@@ -37,7 +37,10 @@
|
|
|
37
37
|
"iterate",
|
|
38
38
|
"promise",
|
|
39
39
|
"async",
|
|
40
|
-
"await"
|
|
40
|
+
"await",
|
|
41
|
+
"yield",
|
|
42
|
+
"flow",
|
|
43
|
+
"control"
|
|
41
44
|
],
|
|
42
45
|
"license": "Apache-2.0",
|
|
43
46
|
"bugs": {
|
|
@@ -46,10 +49,10 @@
|
|
|
46
49
|
"homepage": "https://github.com/3axap4eHko/asygen#readme",
|
|
47
50
|
"devDependencies": {
|
|
48
51
|
"@swc/cli": "^0.1.62",
|
|
49
|
-
"@swc/core": "^1.3.
|
|
52
|
+
"@swc/core": "^1.3.42",
|
|
50
53
|
"@swc/jest": "^0.2.24",
|
|
51
54
|
"@types/jest": "^29.5.0",
|
|
52
|
-
"@types/node": "^18.15.
|
|
55
|
+
"@types/node": "^18.15.6",
|
|
53
56
|
"fast-glob": "^3.2.12",
|
|
54
57
|
"jest": "^29.5.0",
|
|
55
58
|
"typescript": "^5.0.2"
|