Here's how you could create custom error classes in Node.js using latest ES6 / ES2015 syntax.
I've tried to make it as lean and unobtrusive as possible.
errors/AppError.js
| // CLI | |
| // 1. yarn init | |
| // 2. yarn add @babel/core @babel/preset-env babel-loader webpack webpack-cli webpack-dev-server --dev | |
| // 3. Add webpack.config.js | |
| // 4. Add babel.config.js | |
| // 5. Add script '"watch": "webpack-dev-server" | |
| // Enjoy <3 |
| /** | |
| * Async iterators simple example. | |
| * | |
| * by Dmitry Soshnikov <[email protected]> | |
| * MIT Style License, 2018 | |
| */ | |
| async function* streamChunks() { | |
| yield genChunk(1); | |
| yield genChunk(2); |
| var Middleware = function() {}; | |
| Middleware.prototype.use = function(fn) { | |
| var self = this; | |
| this.go = (function(stack) { | |
| return function(next) { | |
| stack.call(self, function() { | |
| fn.call(self, next.bind(self)); | |
| }); |
| // cancelable promise | |
| // originaly by @istarkov | |
| const makeCancelable = (promise) => { | |
| let hasCanceled_ = false; | |
| const wrappedPromise = new Promise((resolve, reject) => { | |
| promise.then((val) => | |
| hasCanceled_ ? reject({isCanceled: true}) : resolve(val), | |
| error => console.warn |
| const fs = require('fs') | |
| const path = require('path') | |
| const os = require('os') | |
| const walk = function (dir, done) { | |
| let results = [] | |
| fs.readdir(dir, function (err, list) { | |
| if (err) return done(err) | |
| let pending = list.length | |
| if (!pending) return done(null, results) |
| // === Arrays | |
| var [a, b] = [1, 2]; | |
| console.log(a, b); | |
| //=> 1 2 | |
| // Use from functions, only select from pattern | |
| var foo = () => [1, 2, 3]; |
| const fs = require('fs'); | |
| fs.readFile('eslintlog.json', 'utf8', (err, data) => { | |
| if (err) throw err; | |
| let parsed = JSON.parse(data); | |
| grabWarnings(parsed) | |
| .forEach(generateCmd); | |
| }); |