export type DeepPartial<T> = T extends Function ? T : (T extends object ? { [P in keyof T]?: DeepPartial<T[P]>; } : T);Before [email protected]
type DeepPartial = {| import React from "react" | |
| import { Route, Switch } from "react-router-dom" | |
| const AppRoute = ({ component: Component, layout: Layout, ...rest }) => ( | |
| <Route {...rest} render={props => ( | |
| <Layout> | |
| <Component {...props} /> | |
| </Layout> | |
| )} /> | |
| ) |
export type DeepPartial<T> = T extends Function ? T : (T extends object ? { [P in keyof T]?: DeepPartial<T[P]>; } : T);type DeepPartial = {| import * as React from 'react'; | |
| import { computed } from 'mobx'; | |
| import { inject, observer, Provider } from 'mobx-react'; | |
| import { fromPromise } from 'mobx-utils'; | |
| import {StaticRouter} from 'react-router-dom'; | |
| import { Request, Response } from 'express'; | |
| import * as ReactDOM from 'react-dom/server'; | |
| interface Item { | |
| weight: number; |
Here are the transaction IDs (and links to the block explorers) for the first livenet Ethereum and Ripple Consensus Ledger (RCL) escrowed transfers comprising an Interledger payment.
0x00cbb6149b9cfb3cedf280251c3060b2a38776fa7792b578b6f9f39ce5ee02667F0A5F16C84568D96DA6A66058CD9EAA881236237642BF7427A458957A752B6B12A4CAFAE95254844513C5C11488A1195C08DEFF673C97AC74AAC121935DDE360xb59dd839ab0b5e7d4e663b7cfc0ddb70eaf73dd2785b3d3a4abdf1a61817007dSHA-256 Condition: `d2
| // π₯ Node 7.6 has async/await! Here is a quick run down on how async/await works | |
| const axios = require('axios'); // promised based requests - like fetch() | |
| function getCoffee() { | |
| return new Promise(resolve => { | |
| setTimeout(() => resolve('β'), 2000); // it takes 2 seconds to make coffee | |
| }); | |
| } |
| import React, {PropTypes} from "react"; | |
| import {BrowserRouter as Router, Route, Link} from "react-router-dom"; | |
| // from the documentation Auth example | |
| // https://reacttraining.com/react-router/examples | |
| const Test = () => ( | |
| <Router> | |
| <div> | |
| <ul> |
You probably arrived here because of a curt message in response to an issue you filed on a repo that I contribute to. Sorry about that (particularly if you filed the issue long ago and have been waiting patiently for a response). Let me explain:
I work on a lot of different open source projects. I really do like building software that makes other people's lives easier, but it's crazy time-consuming. One of the most time-consuming parts is responding to issues. A lot of OSS maintainers will bend over backwards to try and understand your specific problem and diagnose it, to the point of setting up new test projects, fussing around with different Node versions, reading the documentation for build tools that we don't use, debugging problems in third party dependencies that appear to be involved in the problem... and so on. I've personally spent hundreds of hours of my free time doing these sorts of things to try and help people out, because I want to be a responsible maintainer and I
Not all random values are created equal - for security-related code, you need a specific kind of random value.
A summary of this article, if you don't want to read the entire thing:
Math.random(). There are extremely few cases where Math.random() is the right answer. Don't use it, unless you've read this entire article, and determined that it's necessary for your case.crypto.getRandomBytes directly. While it's a CSPRNG, it's easy to bias the result when 'transforming' it, such that the output becomes more predictable.uuid, specifically the uuid.v4() method. Avoid node-uuid - it's not the same package, and doesn't produce reliably secure random values.random-number-csprng.You should seriously consider reading the entire article, though - it's