@zemnmez/future 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +45 -0
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -74,4 +74,49 @@ const message = future(
74
74
  types. `future_flatten_then` flattens nested Futures, and `future_collect`
75
75
  combines several Futures into one.
76
76
 
77
+ ## Pipelines
78
+
79
+ `future_and_then` and `future_flatten_then` compose Future-returning operations
80
+ into a pipeline. Each operation receives the preceding resolved value, while a
81
+ loading or error state stops the pipeline:
82
+
83
+ ```typescript
84
+ import {
85
+ error,
86
+ Future,
87
+ future_and_then,
88
+ future_flatten_then,
89
+ resolve,
90
+ } from '@zemnmez/future';
91
+
92
+ interface User {
93
+ id: number;
94
+ name: string;
95
+ }
96
+
97
+ const findUser = (
98
+ id: number
99
+ ): Future<User, 'fetching user', 'user not found'> =>
100
+ id === 42
101
+ ? resolve({ id, name: 'Deep Thought' })
102
+ : error('user not found');
103
+
104
+ const displayName = (
105
+ user: User
106
+ ): Future<string, 'formatting name', 'missing name'> =>
107
+ user.name ? resolve(user.name) : error('missing name');
108
+
109
+ const user = future_flatten_then(
110
+ future_and_then(resolve(42), findUser)
111
+ );
112
+ const name = future_flatten_then(
113
+ future_and_then(user, displayName)
114
+ );
115
+ // Future<
116
+ // string,
117
+ // 'fetching user' | 'formatting name',
118
+ // 'user not found' | 'missing name'
119
+ // >
120
+ ```
121
+
77
122
  [result]: https://www.npmjs.com/package/@zemnmez/result
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "publishConfig": {
19
19
  "access": "public"
20
20
  },
21
- "version": "1.0.0",
21
+ "version": "1.0.1",
22
22
  "dependencies": {
23
23
  "@tanstack/react-query": "5.101.4",
24
24
  "react": "19.2.8"
@@ -33,6 +33,6 @@
33
33
  "directory": "ts/future"
34
34
  },
35
35
  "bugs": {
36
- "url": "https://github.com/zemn-me/monorepo/issues/new?title=%2F%2Fts%2Ffuture%401.0.0%3A+something+went+wrong%21"
36
+ "url": "https://github.com/zemn-me/monorepo/issues/new?title=%2F%2Fts%2Ffuture%401.0.1%3A+something+went+wrong%21"
37
37
  }
38
38
  }