Преглед на файлове

Added a definition of function lists.

Eugene Lazutkin преди 3 години
родител
ревизия
e42f6d466a
променени са 2 файла, в които са добавени 56 реда и са изтрити 29 реда
  1. 27 9
      src/defs.js
  2. 29 20
      src/index.js

+ 27 - 9
src/defs.js

@@ -6,6 +6,7 @@ const stop = Symbol.for('object-stream.stop');
 const finalSymbol = Symbol.for('object-stream.final');
 const manySymbol = Symbol.for('object-stream.many');
 const flushSymbol = Symbol.for('object-stream.flush');
+const fListSymbol = Symbol.for('object-stream.fList');
 
 const finalValue = value => ({[finalSymbol]: 1, value});
 const many = values => ({[manySymbol]: 1, values});
@@ -13,9 +14,11 @@ const many = values => ({[manySymbol]: 1, values});
 const isFinalValue = o => o && o[finalSymbol] === 1;
 const isMany = o => o && o[manySymbol] === 1;
 const isFlushable = o => o && o[flushSymbol] === 1;
+const isFunctionList = o => o && o[fListSymbol] === 1;
 
-const getFinalValue = value => value.value;
-const getManyValues = value => value.values;
+const getFinalValue = o => o.value;
+const getManyValues = o => o.values;
+const getFunctionList = o => o.fns;
 
 const flushable = (write, final = null) => {
   const fn = final ? value => (value === none ? final() : write(value)) : write;
@@ -23,6 +26,12 @@ const flushable = (write, final = null) => {
   return fn;
 };
 
+const setFunctionList = (o, fns) => {
+  o.fns = fns;
+  o[fListSymbol] = 1;
+  return o;
+}
+
 class Stop extends Error {}
 
 // old aliases
@@ -31,15 +40,24 @@ const final = finalValue;
 module.exports.none = none;
 module.exports.stop = stop;
 module.exports.Stop = Stop;
+
 module.exports.finalSymbol = finalSymbol;
-module.exports.manySymbol = manySymbol;
-module.exports.flushSymbol = flushSymbol;
 module.exports.finalValue = finalValue;
-module.exports.many = many;
-module.exports.flushable = flushable;
+module.exports.final = final;
 module.exports.isFinalValue = isFinalValue;
-module.exports.isMany = isMany;
-module.exports.isFlushable = isFlushable;
 module.exports.getFinalValue = getFinalValue;
+
+module.exports.manySymbol = manySymbol;
+module.exports.many = many;
+module.exports.isMany = isMany;
 module.exports.getManyValues = getManyValues;
-module.exports.final = final;
+module.exports.getFunctionList = getFunctionList;
+
+module.exports.flushSymbol = flushSymbol;
+module.exports.flushable = flushable;
+module.exports.isFlushable = isFlushable;
+
+module.exports.fListSymbol = fListSymbol;
+module.exports.isFunctionList = isFunctionList;
+module.exports.getFunctionList = getFunctionList;
+module.exports.setFunctionList = setFunctionList;

+ 29 - 20
src/index.js

@@ -167,25 +167,34 @@ const dataSource = fn => {
 
 module.exports = chain;
 
-// to keep ESM happy
-module.exports.none = chain.none = defs.none;
-module.exports.stop = chain.stop = defs.stop;
-module.exports.Stop = chain.Stop = defs.Stop;
-module.exports.finalSymbol = chain.finalSymbol = defs.finalSymbol;
-module.exports.manySymbol = chain.manySymbol = defs.manySymbol;
-module.exports.flushSymbol = chain.flushSymbol = defs.flushSymbol;
-module.exports.finalValue = chain.finalValue = defs.finalValue;
-module.exports.many = chain.many = defs.many;
-module.exports.flushable = chain.flushable = defs.flushable;
-module.exports.isFinalValue = chain.isFinalValue = defs.isFinalValue;
-module.exports.isMany = chain.isMany = defs.isMany;
-module.exports.isFlushable = chain.isFlushable = defs.isFlushable;
-module.exports.getFinalValue = chain.getFinalValue = defs.getFinalValue;
-module.exports.getManyValues = chain.getManyValues = defs.getManyValues;
-module.exports.final = chain.final = defs.final;
-
-module.exports.chain = chain.chain = chain; // for compatibility with 2.x
-module.exports.gen = chain.gen = gen;
-module.exports.asStream = chain.asStream = asStream;
+// from defs.js
+module.exports.none = defs.none;
+module.exports.stop = defs.stop;
+module.exports.Stop = defs.Stop;
+
+module.exports.finalSymbol = defs.finalSymbol;
+module.exports.finalValue = defs.finalValue;
+module.exports.final = defs.final;
+module.exports.isFinalValue = defs.isFinalValue;
+module.exports.getFinalValue = defs.getFinalValue;
+
+module.exports.manySymbol = defs.manySymbol;
+module.exports.many = defs.many;
+module.exports.isMany = defs.isMany;
+module.exports.getManyValues = defs.getManyValues;
+module.exports.getFunctionList = defs.getFunctionList;
+
+module.exports.flushSymbol = defs.flushSymbol;
+module.exports.flushable = defs.flushable;
+module.exports.isFlushable = defs.isFlushable;
+
+module.exports.fListSymbol = defs.fListSymbol;
+module.exports.isFunctionList = defs.isFunctionList;
+module.exports.getFunctionList = defs.getFunctionList;
+module.exports.setFunctionList = defs.setFunctionList;
+
+module.exports.chain = chain; // for compatibility with 2.x
+module.exports.gen = gen;
+module.exports.asStream = asStream;
 
 module.exports.dataSource = dataSource;