ig-types 6.24.8 → 6.24.10

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.
Files changed (3) hide show
  1. package/Promise.js +28 -33
  2. package/generator.js +4 -2
  3. package/package.json +1 -1
package/Promise.js CHANGED
@@ -133,25 +133,18 @@ object.Constructor('IterablePromise', Promise, {
133
133
  if(!onerror){
134
134
  list = [...list]
135
135
  // handle errors in input generator...
136
+ // NOTE: this does not offer the most control because semantically
137
+ // we bust behave in the same manner as <generator>.iter(..)
136
138
  } else {
137
139
  var res = []
138
140
  try{
139
141
  for(var e of list){
140
142
  res.push(e) }
141
- list = res
142
143
  }catch(err){
143
144
  var r = onerror(err)
144
- if(r === this.constructor.STOP
145
- || r instanceof this.constructor.STOP){
146
- r instanceof this.constructor.STOP
147
- && res.push(r.value)
148
- list = res
149
- } else {
150
- list = r instanceof Array ?
151
- r
152
- : r ?
153
- [r]
154
- : [] } } } }
145
+ r !== undefined
146
+ && res.push(r) }
147
+ list = res } }
155
148
  // handle iterable promise...
156
149
  if(list instanceof IterablePromise){
157
150
  return this.__handle(list.__packed, handler, onerror) }
@@ -162,8 +155,8 @@ object.Constructor('IterablePromise', Promise, {
162
155
  return list
163
156
  .iter(handler, onerror)
164
157
  .then(function(list){
165
- return that.__pack(list) })
166
- } else if(list instanceof Promise){
158
+ return that.__pack(list) }) }
159
+ if(list instanceof Promise){
167
160
  return list
168
161
  .then(function(list){
169
162
  return that.__pack(list, handler, onerror) }) }
@@ -1055,37 +1048,39 @@ object.Mixin('PromiseMixin', 'soft', {
1055
1048
  cooperative: CooperativePromise,
1056
1049
  sync: SyncPromise,
1057
1050
  // XXX should this be implemented via SyncPromise???
1051
+ // XXX not sure if we need to expand async generators...
1058
1052
  awaitOrRun: function(data, func, error){
1059
1053
  data = [...arguments]
1060
1054
  func = data.pop()
1061
1055
  if(typeof(data.at(-1)) == 'function'){
1062
1056
  error = func
1063
1057
  func = data.pop() }
1064
- // ceck if we need to await...
1065
- return data
1066
- .reduce(function(res, e){
1058
+ error = error ?
1059
+ [error]
1060
+ : []
1061
+ // check if we need to await...
1062
+ return data.reduce(function(res, e){
1067
1063
  return res
1068
1064
  || e instanceof Promise }, false) ?
1069
- // NOTE: we will not reach this on empty data...
1070
- (data.length > 1 ?
1071
- Promise.all(data)
1072
- .then(
1073
- function(res){
1074
- return func(...res) },
1075
- ...(error ?
1076
- [error]
1077
- : []))
1078
- : data[0].then(
1079
- func,
1080
- ...(error ?
1081
- [error]
1082
- : [])))
1083
- : error ?
1065
+ // NOTE: we will not reach this on empty data...
1066
+ (data.length > 1 ?
1067
+ Promise.all(data)
1068
+ .then(
1069
+ function(res){
1070
+ return func(...res) },
1071
+ ...error)
1072
+ : data[0].then(func, ...error))
1073
+ // XXX not sure if we need to expand async generators...
1074
+ : (data.length == 1
1075
+ && Symbol.asyncIterator in data[0]
1076
+ && 'then' in data[0]) ?
1077
+ data[0].then(func, ...error)
1078
+ : error.length > 0 ?
1084
1079
  function(){
1085
1080
  try{
1086
1081
  return func(...data)
1087
1082
  }catch(err){
1088
- return error(err) } }()
1083
+ return error[0](err) } }()
1089
1084
  : func(...data) },
1090
1085
  })
1091
1086
 
package/generator.js CHANGED
@@ -583,8 +583,10 @@ object.Mixin('AsyncGeneratorProtoMixin', 'soft', {
583
583
  if(onerror){
584
584
  if(!(err === STOP || err instanceof STOP)){
585
585
  var res = onerror(err)
586
- if(res){
587
- yield res }
586
+ if(res !== undefined){
587
+ yield handler ?
588
+ handler(res)
589
+ : res }
588
590
  return } }
589
591
  throw err } }),
590
592
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ig-types",
3
- "version": "6.24.8",
3
+ "version": "6.24.10",
4
4
  "description": "Generic JavaScript types and type extensions...",
5
5
  "main": "main.js",
6
6
  "scripts": {