Base code/idea comes from this blog post
The output:
Testing vanilla: 4.1ms
Testing lodash: 25.4ms -- 518% slower
Testing es6-for-of: 7.3ms -- 78% slower
Testing forEach: 6.1ms -- 48% slower
Testing map: 9.2ms -- 125% slower
| declare module 'cache-manager/caching' { | |
| /** | |
| * Generic caching interface that wraps any caching library with a compatible interface. | |
| * @param args.store - The store must at least have `set` and a `get` functions. | |
| * @param [args.isCacheableValue] - A callback function which is called | |
| * with every value returned from cache or from a wrapped function. This lets you specify | |
| * which values should and should not be cached. If the function returns true, it will be | |
| * stored in cache. By default it caches everything except undefined. | |
| */ | |
| function caching(args: { |
| /** | |
| * Instead of manually managing the cache like this: | |
| * function getCachedUserManually(id, cb) { | |
| * memoryCache.get(id, function(err, result) { | |
| * if (err) { return cb(err); } | |
| * | |
| * if (result) { | |
| * return cb(null, result); | |
| * } | |
| * |
| // Available variables: | |
| // - Machine | |
| // - interpret | |
| // - assign | |
| // - send | |
| // - sendParent | |
| // - spawn | |
| // - raise | |
| // - actions |
Base code/idea comes from this blog post
The output:
Testing vanilla: 4.1ms
Testing lodash: 25.4ms -- 518% slower
Testing es6-for-of: 7.3ms -- 78% slower
Testing forEach: 6.1ms -- 48% slower
Testing map: 9.2ms -- 125% slower
For anyone else coming across this and wondering how this works, here's a summary.
NOTE: I'm still learning xstate, so there may be better ways to do this!
debug is a small debugging library that can be used in the console or browser. In the screenshot above, each of the different colors comes from a different debug instance. For example, I instatiate the following in my console application:
const dbgM: debug.Debugger = require('debug')("fsm:master");| const targets = ["#top-header", "#main-header"]; | |
| const config = { | |
| attributes: true, | |
| attributeOldValue: true, | |
| subtree: true, | |
| childList: true, | |
| }; | |
| function logAllEvents(target, myElement) { |
| #!/home/mcrowe/Programming/Personal/imdb/.direnv/python-3.7.5/bin/python3 | |
| import sys | |
| import imdb | |
| import click | |
| from os import listdir, system, rename | |
| from os.path import isfile, join, getctime, basename | |
| from lxml.builder import E |
| // Available variables: | |
| // - Machine | |
| // - interpret | |
| // - assign | |
| // - send | |
| // - sendParent | |
| // - spawn | |
| // - raise | |
| // - actions |
| const RETRY_INTERVAL = 2000; | |
| const MAX_RETRIES = 3; | |
| const initHardwareState = "initHardware"; | |
| const connectNetworkState = "connectNetwork"; | |
| const provisionState = "provision"; | |
| const retryState = "retry"; | |
| const fatalState = "fatal"; | |
| const connectedState = "connected"; |
| const RETRY_INTERVAL = 2000; | |
| const MAX_RETRIES = 3; | |
| const initHardwareState = "initHardware"; | |
| const connectNetworkState = "connectNetwork"; | |
| const provisionState = "provision"; | |
| const retryState = "retry"; | |
| const fatalState = "fatal"; | |
| const connectedState = "connected"; |