ソースを参照

Replaced defs with the ones from object-stream/functional.

Eugene Lazutkin 3 年 前
コミット
b54ca08d03
1 ファイル変更36 行追加16 行削除
  1. 36 16
      defs.js

+ 36 - 16
defs.js

@@ -1,27 +1,47 @@
 'use strict';
 
 const none = Symbol.for('object-stream.none');
+const stop = Symbol.for('object-stream.stop');
+
 const finalSymbol = Symbol.for('object-stream.final');
 const manySymbol = Symbol.for('object-stream.many');
-const stop = Symbol.for('object-stream.stop');
+const flushSymbol = Symbol.for('object-stream.flush');
 
-const finalValue = value => ({[finalSymbol]: value});
-const many = values => ({[manySymbol]: values});
+const finalValue = value => ({[finalSymbol]: 1, value});
+const many = values => ({[manySymbol]: 1, values});
 
-const isFinalValue = o => o && typeof o == 'object' && finalSymbol in o;
-const isMany = o => o && typeof o == 'object' && manySymbol in o;
+const isFinalValue = o => o && o[finalSymbol] === 1;
+const isMany = o => o && o[manySymbol] === 1;
+const isFlushable = o => o && o[flushSymbol] === 1;
 
-const getFinalValue = o => o[finalSymbol];
-const getManyValues = o => o[manySymbol];
+const getFinalValue = value => value.value;
+const getManyValues = value => value.values;
+
+const flushable = (write, final = null) => {
+  const fn = final ? value => (value === none ? final() : write(value)) : write;
+  fn[flushSymbol] = 1;
+  return fn;
+};
 
 class Stop extends Error {}
 
-module.exports.none = none;
-module.exports.stop = stop;
-module.exports.finalValue = finalValue;
-module.exports.isFinalValue = isFinalValue;
-module.exports.getFinalValue = getFinalValue;
-module.exports.many = many;
-module.exports.isMany = isMany;
-module.exports.getManyValues = getManyValues;
-module.exports.Stop = Stop;
+// old aliases
+const final = finalValue;
+
+module.exports = {
+  none,
+  stop,
+  Stop,
+  finalSymbol,
+  manySymbol,
+  flushSymbol,
+  finalValue,
+  many,
+  flushable,
+  isFinalValue,
+  isMany,
+  isFlushable,
+  getFinalValue,
+  getManyValues,
+  final
+};