@@ -10,46 +10,31 @@ import blurIndigoImage from '@/images/blur-indigo.png'
1010
1111const codeLanguage = 'typescript'
1212
13- const code = `// One-off wrapping — zero config
14- const safeJSONParse = safe.wrap(JSON.parse)
15- const [parsed, parseErr ] = safeJSONParse (rawInput)
13+ const code = `// Wrap any function — zero config
14+ const safeParse = safe.wrap(JSON.parse)
15+ const [data, err ] = safeParse (rawInput)
1616
17- const fetchUserOnce = safe.wrapAsync(fetchUserAsync)
18- const [basicUser, basicError] = await fetchUserOnce('admin-456')
19-
20- // Configurable safety — from one function to many
17+ // Shared config for a whole domain
2118const apiSafe = createSafe({
2219 parseError: errorParser,
23- parseResult: resultParser ,
20+ defaultError: fallbackError ,
2421 onError: errorHook,
25- onSuccess: successHook,
26- onSettled: settledHook,
2722})
2823
2924const fetchUser = apiSafe.wrapAsync(fetchUserAsync)
3025const fetchPosts = apiSafe.wrapAsync(fetchPostsAsync)
3126
32- // Same shared config. Full type narrowing.
33- const [user, userError] = await fetchUser('123')
34- if (userError) return
35-
36- const [posts, postsError] = await fetchPosts(user.id)
37- if (postsError) return
27+ // Same config. Full type narrowing.
28+ const [user, userErr] = await fetchUser('123')
29+ if (userErr) return
3830
39- console.log(user.name)
40- console.log(posts.length)
41-
42- // Add resilience — retry with backoff + auto-cancel
43- const fetchUserRetry = apiSafe.wrapAsync(fetchUserAsync, {
44- retry: { times: 3, waitBefore: (n) => n * 1000 },
45- abortAfter: 5000,
46- onRetry: (err, attempt) => console.log(\`Retry #\${attempt}...\`),
47- })
31+ const [posts, postsErr] = await fetchPosts(user.id)
32+ console.log(user.name, posts.length)
4833
4934// Prefer objects? One call to switch.
5035const objSafe = withObjects(apiSafe)
5136const fetchPostsObj = objSafe.wrapAsync(fetchPostsAsync)
52- const { ok, data, error } = await fetchPostsObj('123')
37+ const { ok, data: posts2 , error } = await fetchPostsObj('123')
5338`
5439
5540// const code = `import { safe } from '@cometloop/safe'
0 commit comments