- Add GETTING_STARTED.md with quick start guide and development modes - Add INSTALL.sh automated installation script - Add INSTALLATION_CHECKLIST.md, INSTALLATION_SUCCESS.md, and INSTALLATION_SUMMARY.md - Add QUICK_REFERENCE.md for common commands - Add SETUP_GUIDE.md with detailed setup instructions - Update README.md with improved project overview - Add did-wallet app dependencies and node_modules
53 lines
1020 B
JavaScript
53 lines
1020 B
JavaScript
/**
|
|
* @packageDocumentation
|
|
*
|
|
* Return the last value from an (async)iterable.
|
|
*
|
|
* @example
|
|
*
|
|
* ```javascript
|
|
* import last from 'it-last'
|
|
*
|
|
* // This can also be an iterator, generator, etc
|
|
* const values = [0, 1, 2, 3, 4]
|
|
*
|
|
* const res = last(values)
|
|
*
|
|
* console.info(res) // 4
|
|
* ```
|
|
*
|
|
* Async sources must be awaited:
|
|
*
|
|
* ```javascript
|
|
* import last from 'it-last'
|
|
*
|
|
* const values = async function * () {
|
|
* yield * [0, 1, 2, 3, 4]
|
|
* }
|
|
*
|
|
* const res = await last(values())
|
|
*
|
|
* console.info(res) // 4
|
|
* ```
|
|
*/
|
|
function isAsyncIterable(thing) {
|
|
return thing[Symbol.asyncIterator] != null;
|
|
}
|
|
function last(source) {
|
|
if (isAsyncIterable(source)) {
|
|
return (async () => {
|
|
let res;
|
|
for await (const entry of source) {
|
|
res = entry;
|
|
}
|
|
return res;
|
|
})();
|
|
}
|
|
let res;
|
|
for (const entry of source) {
|
|
res = entry;
|
|
}
|
|
return res;
|
|
}
|
|
export default last;
|
|
//# sourceMappingURL=index.js.map
|