It's 2024. You should use tsup instead of this.
🔥 Blazing fast builds
😇 CommonJS bundle
🌲 .mjs
bundle
✨ .d.ts
bundle + type-checking
// One of my new favorite React Hook patternms is to create handler | |
// functions for a custom hook using `React.useMemo` instead of | |
// `React.useCallback`, like so: | |
function useBool(initialState = false) { | |
const [state, setState] = React.useState(initialState) | |
// Instead of individual React.useCallbacks gathered into an object | |
// Let's memoize the whole object. Then, we can destructure the | |
// methods we need in our consuming component. |
export default function createCrudHooks({ | |
baseKey, | |
indexFn, | |
singleFn, | |
createFn, | |
updateFn, | |
deleteFn, | |
}) { | |
const useIndex = (config) => useQuery([baseKey], indexFn, config) | |
const useSingle = (id, config) => |
export const CACHE_STALE_AT_HEADER = 'x-edge-cache-stale-at'; | |
export const CACHE_STATUS_HEADER = 'x-edge-cache-status'; | |
export const CACHE_CONTROL_HEADER = 'Cache-Control'; | |
export const CLIENT_CACHE_CONTROL_HEADER = 'x-client-cache-control'; | |
export const ORIGIN_CACHE_CONTROL_HEADER = 'x-edge-origin-cache-control'; | |
enum CacheStatus { | |
HIT = 'HIT', | |
MISS = 'MISS', | |
REVALIDATING = 'REVALIDATING', |
It's 2024. You should use tsup instead of this.
🔥 Blazing fast builds
😇 CommonJS bundle
🌲 .mjs
bundle
✨ .d.ts
bundle + type-checking
pkg | download/week | issues | stars | comment |
---|---|---|---|---|
react-bootstrap ↗ | 235k | 62 | 17k | bootstrap 3 |
material-ui ↗ | 160k | 146 | 34k | full of bugs, speaking from experience |
antd ↗ | 64k | 174 | 26k | |
semantic-ui-react ↗ | 51k | 53 | 6.4K | |
reactstrap ↗ | 46k | 58 | 4k | bootstrap 4 |
@blueprintjs/core ↗ | 27k | 240 | 9k | splitted into multiple packages |
react-native-web ↗ | 11k | 27 | 9kk | used at twitter.com and on react-native docs (not just mobile) |
react-toolbox |
#!/bin/bash | |
# Launch inside a create-react-app project after building the production build. | |
# Require `jq`. | |
diff \ | |
<(find src -type f \( -name '*.js' -o -name '*.jsx' -o -name '*.css' \) | sort) \ | |
<(cat build/**/*.map | jq --raw-output '.sources | join("\n")' \ | |
| grep -v '\.\./' | grep -E '\.(js|jsx|css)$' \ | |
| sed "s#^#src/#" | sort | uniq) \ |
import produce from 'immer'; | |
import {createStore} from 'redux'; | |
const handleActions = (actionsMap, defaultState) => ( | |
state = defaultState, | |
{type, payload} | |
) => | |
produce(state, draft => { | |
const action = actionsMap[type]; | |
action && action(draft, payload); |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" | |
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<array> | |
<dict> | |
<key>ApplicationIdentifier</key> | |
<string>com.microsoft.VSCode</string> | |
<key>ApplicationName</key> | |
<string>Visual Studio Code</string> |
import pathToRegexp from 'path-to-regexp'; | |
class RouteConst { | |
constructor(path, parent = null) { | |
this.path = parent ? `${parent.path}${path}` : path; | |
this.toURL = pathToRegexp.compile(this.path); | |
} | |
} |