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 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 { defer, Task } from 'asygen';
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=JZ8QCGH6PI
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: function() {
13
- return Status;
14
- },
15
- getId: function() {
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"] = "pending";
60
- Status["RESOLVED"] = "resolved";
61
- Status["REJECTED"] = "rejected";
19
+ Status["PENDING"] = 'pending';
20
+ Status["RESOLVED"] = 'resolved';
21
+ Status["REJECTED"] = 'rejected';
62
22
  })(Status || (Status = {}));
63
- var counter = [
23
+ const counter = [
64
24
  0,
65
25
  0
66
26
  ];
67
- var getId = function() {
68
- var result = Date.now() * 100;
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
- var _Symbol_toStringTag = Symbol.toStringTag;
76
- var Deferred = /*#__PURE__*/ function() {
77
- "use strict";
78
- function Deferred() {
79
- var _this = this;
80
- _classCallCheck(this, Deferred);
81
- _defineProperty(this, "txts", getId());
82
- _defineProperty(this, "_promise", void 0);
83
- _defineProperty(this, "_resolve", void 0);
84
- _defineProperty(this, "_reject", void 0);
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
- _createClass(Deferred, [
94
- {
95
- key: _Symbol_toStringTag,
96
- get: function get() {
97
- return "Deferred ".concat(this.txts, " ").concat(this._status);
98
- }
99
- },
100
- {
101
- key: "promise",
102
- get: function get() {
103
- return this._promise;
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
- return Deferred;
134
- }();
135
- var defer = function() {
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
 
@@ -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","Symbol","toStringTag","txts","_promise","_resolve","_reject","_status","Promise","resolve","reject","bind","promise","status","value","error"],"mappings":";;;;;;;;;;;;;;IAOaA,KAAK;eAALA;;IASAC,QAAQ;eAARA;;IA8CAC,KAAK;eAALA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA9DN;UAAKC,MAAM;IAANA,OACVC,aAAU;IADAD,OAEVE,cAAW;IAFDF,OAGVG,cAAW;GAHDH,WAAAA;AAMZ,IAAMI,UAA4B;IAAC;IAAE;CAAE;AAChC,IAAMP,QAAQ,WAAM;IACzB,IAAMQ,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;IAkBOC,sBAAAA,OAAOC,WAAW;AAhBlB,IAAA,AAAMZ,yBA8CV,AA9CI;;aAAMA;;8BAAAA;QACX,sBAAQa,QAAOd;QACf,sBAAQe,YAAR,KAAA;QACA,sBAAQC,YAAR,KAAA;QACA,sBAAQC,WAAR,KAAA;QACA,sBAAQC,WAAkBf,OAAOC,OAAO;QAGtC,IAAI,CAACW,QAAQ,GAAG,IAAII,QAAW,SAACC,SAASC,QAAW;YAClD,MAAKL,QAAQ,GAAGI;YAChB,MAAKH,OAAO,GAAGI;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;;iBAb1BrB;;YAgBP,KAACW;iBAAL,eAA2B;gBACzB,OAAO,AAAC,YAAwB,OAAb,IAAI,CAACE,IAAI,EAAC,KAAgB,OAAb,IAAI,CAACI,OAAO;YAC9C;;;YAEIK,KAAAA;iBAAJ,eAAc;gBACZ,OAAO,IAAI,CAACR,QAAQ;YACtB;;;YAEIS,KAAAA;iBAAJ,eAAa;gBACX,OAAO,IAAI,CAACN,OAAO;YACrB;;;YAEAE,KAAAA;mBAAAA,SAAAA,QAAQK,KAAQ,EAAE;gBAChB,IAAI,IAAI,CAACP,OAAO,KAAKf,OAAOC,OAAO,EAAE;oBACnC,IAAI,CAACc,OAAO,GAAGf,OAAOE,QAAQ;oBAC9B,IAAI,CAACW,QAAQ,CAACS;gBAChB,CAAC;gBAED,OAAO,IAAI;YACb;;;YAEAJ,KAAAA;mBAAAA,SAAAA,OAAOK,KAAQ,EAAE;gBACf,IAAI,IAAI,CAACR,OAAO,KAAKf,OAAOC,OAAO,EAAE;oBACnC,IAAI,CAACc,OAAO,GAAGf,OAAOG,QAAQ;oBAC9B,IAAI,CAACW,OAAO,CAACS;gBACf,CAAC;gBACD,OAAO,IAAI;YACb;;;WA3CWzB;;AA8CN,IAAMC,QAAQ,WAA6B;IAChD,OAAO,IAAID;AACb"}
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
@@ -1,4 +1,4 @@
1
- export let Status;
1
+ export var Status;
2
2
  (function(Status) {
3
3
  Status["PENDING"] = 'pending';
4
4
  Status["RESOLVED"] = 'resolved';
@@ -4,205 +4,44 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  Object.defineProperty(exports, "generatorify", {
6
6
  enumerable: true,
7
- get: function() {
8
- return generatorify;
9
- }
7
+ get: ()=>generatorify
10
8
  });
11
- var _deferCjs = require("./defer.cjs");
12
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
13
- try {
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(function(value) {
154
- var next = (0, _deferCjs.defer)();
155
- var prev = dPoll.push(next) - 2;
156
- var prevDeferred = dPoll[prev];
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: value,
19
+ value,
159
20
  done: false
160
21
  });
161
- return prevDeferred.promise.then(function(v) {
162
- return v.value;
163
- });
164
- })).then(function() {
165
- var _ref = _asyncToGenerator(function(value) {
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
- return function(value) {
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
- next: function next() {
198
- var current = dPoll[0];
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;;;eAAAA;;;wBAVmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUzB,IAAMA,eAAe,SAAiBC,MAAuC;IAClF,IAAMC,QAA0C;QAACC,IAAAA,eAAK;KAA2B;IAEjFC,QAAQC,OAAO,CAACJ,KAAKK,SAAAA,OAAS;QAC5B,IAAMC,OAAOJ,IAAAA,eAAK;QAClB,IAAMK,OAAON,MAAMO,IAAI,CAACF,QAAQ;QAChC,IAAMG,eAAeR,KAAK,CAACM,KAAK;QAChCE,aAAaL,OAAO,CAAC;YAAEC,OAAAA;YAAOK,MAAM,KAAK;QAAC;QAC1C,OAAOD,aAAaE,OAAO,CAACC,IAAI,CAACC,SAAAA;mBAAKA,EAAER,KAAK;;IAC/C,IAAIO,IAAI;mBAAC,kBAAA,SAAOP,OAAU;;;;wBACxBJ,KAAK,CAACA,MAAMa,MAAM,GAAG,EAAE,CAACV,OAAO,CAAC;4BAAEC,OAAAA;4BAAOK,MAAM,IAAI;wBAAC;wBACpD;;4BAAMP,QAAQY,GAAG,CAACd,MAAMe,GAAG,CAACC,SAAAA;uCAAKA,EAAEN,OAAO;;;;wBAA1C;wBACA;;4BAAO;gCAAEN,OAAAA;gCAAOK,MAAM,IAAI;4BAAC;;;;QAC7B;wBAJgBL;;;;IAMhB,OACE,oBAACa,OAAOC,aAAa,EAArB,WAAyB;QACvB,OAAO;YACLb,MAAAA,SAAAA,OAAO;gBACL,IAAMc,UAAUnB,KAAK,CAAC,EAAE;gBACxBmB,QAAQT,OAAO,CAACC,IAAI,CAAC;2BAAMX,MAAMoB,KAAK;;gBACtC,OAAOD,QAAQT,OAAO;YACxB;QACF;IACF;AAEJ"}
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.5",
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.41",
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.5",
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"