Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fpdart v2.0.0 #147

Open
wants to merge 91 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 77 commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
f9ece2c
experiment with shared `Effect` class
SandroMaglione Feb 16, 2024
194db27
`IEffect` shared interface
SandroMaglione Feb 16, 2024
d44181c
`Either` as `IEffect`
SandroMaglione Feb 16, 2024
3861235
`Async` from `IEffect`
SandroMaglione Feb 16, 2024
0fec429
`call` run
SandroMaglione Feb 16, 2024
289085a
no Sync/Async/Either, just `Effect`
SandroMaglione Mar 10, 2024
8980c86
`Effect` and `Either` env
SandroMaglione Mar 10, 2024
f9c32f0
`Option` as `IEffect`
SandroMaglione Mar 10, 2024
0c23b78
`mapLeft`
SandroMaglione Mar 10, 2024
4d2612e
more `Effect` methods
SandroMaglione Mar 13, 2024
e0c2dfa
`asEffect` for `IEffect` interface
SandroMaglione Mar 14, 2024
5f945c4
`Effect` api with categories
SandroMaglione Mar 14, 2024
bddc3b9
file system example with `Effect`
SandroMaglione Mar 16, 2024
a5af9a8
refactor with abstract env
SandroMaglione Mar 16, 2024
8e3aa09
test with `provide` in `Effect`
SandroMaglione Mar 16, 2024
9d42ff6
`catchError`
SandroMaglione Mar 17, 2024
ae2a3ef
refactor internals
SandroMaglione Mar 17, 2024
30e643f
remove all examples
SandroMaglione Mar 17, 2024
5163c52
initial (new) tests on `Effect`
SandroMaglione Mar 17, 2024
51a2a62
import alias
SandroMaglione Mar 17, 2024
b5b4c4c
`Effect` sync execute
SandroMaglione Mar 17, 2024
c2e9349
collect as `Iterable`
SandroMaglione Mar 17, 2024
7fc0a24
expand `Effect` API
SandroMaglione Mar 17, 2024
f70327f
`orDie` API
SandroMaglione Mar 17, 2024
e66dd02
`Option` API
SandroMaglione Mar 17, 2024
15b5634
`Either` API
SandroMaglione Mar 17, 2024
cb69054
`Exit` with `Cause`
SandroMaglione Mar 17, 2024
4a85df3
`tryCatch` API
SandroMaglione Mar 18, 2024
1b8d00e
removed `Cause` by interrupt
SandroMaglione Mar 18, 2024
69af383
`zipLeft` and `zipRight`
SandroMaglione Mar 18, 2024
5b5beca
`forEach` and `all`
SandroMaglione Mar 18, 2024
6e256c9
migration md
SandroMaglione Mar 18, 2024
bea6930
version 2.0.0-dev.1
SandroMaglione Mar 18, 2024
bda3934
http request example
SandroMaglione Mar 18, 2024
1565436
run `Effect` with `Never` env
SandroMaglione Mar 18, 2024
f39ee8b
fetch pokemon with validation example
SandroMaglione Mar 19, 2024
81d4b0d
run `gen` as `sync` or `async`
SandroMaglione Mar 20, 2024
06fff82
pokemon api example with `void` type
SandroMaglione Mar 21, 2024
aa0d3a5
working on types `Never` vs `void`
SandroMaglione Mar 21, 2024
4da33a1
revert to use `Never`
SandroMaglione Mar 21, 2024
1ed678d
execute either as effect using `Never`
SandroMaglione Mar 21, 2024
7f3314e
Use generic instead of `Never`
SandroMaglione Mar 21, 2024
a63aae1
`onError` for `gen`
SandroMaglione Mar 21, 2024
e82dba6
`catchError` and `catchCause`
SandroMaglione Mar 22, 2024
05036f1
factory constructors
SandroMaglione Mar 22, 2024
a44fed8
running `Effect`
SandroMaglione Mar 22, 2024
0f91eeb
clean up `Cause`
SandroMaglione Mar 22, 2024
f7cdc3d
fix fail in `Effect.gen`
SandroMaglione Mar 22, 2024
62a5d01
conversions and folding
SandroMaglione Mar 23, 2024
ab71d1e
imports
SandroMaglione Mar 23, 2024
e27399e
prepare v2 dev pre release
SandroMaglione Mar 23, 2024
de6395d
no `Never` env, maybe `void`
SandroMaglione Mar 23, 2024
60290a9
`getSomes`, `getLefts`, `getRights`
SandroMaglione Mar 24, 2024
d330768
filtering
SandroMaglione Mar 24, 2024
8ad0f09
full `Option` API
SandroMaglione Mar 24, 2024
b73849d
full `Either` API
SandroMaglione Mar 24, 2024
229e536
rename `Fail` to `Failure`
SandroMaglione Mar 24, 2024
8a0f930
errors in `FutureOr` sync
SandroMaglione Mar 24, 2024
f02afe3
`onError` with stack trace
SandroMaglione Mar 24, 2024
df5740d
`provide` and `mapEnv`
SandroMaglione Mar 24, 2024
a3352b5
`provideEffect`
SandroMaglione Mar 24, 2024
d8144dd
test type parameters
SandroMaglione Mar 24, 2024
dcb9861
run only when env is `Null`
SandroMaglione Mar 25, 2024
24449a3
update examples
SandroMaglione Mar 25, 2024
07bfa82
update examples (again)
SandroMaglione Mar 25, 2024
3e72bf5
catch error in gen future
SandroMaglione Mar 25, 2024
57eb5ee
effect abstract only
SandroMaglione Mar 26, 2024
3473096
`meta` version
SandroMaglione Mar 27, 2024
f343b03
run effects with catching
SandroMaglione Mar 27, 2024
83667b4
`Deferred` and `Context`
SandroMaglione Mar 27, 2024
b79f034
`race` and `raceAll`
SandroMaglione Mar 27, 2024
e4d3ad2
`delay` and `timeout`
SandroMaglione Mar 27, 2024
ac7f9e1
`Deferred` as `Effect`
SandroMaglione Mar 27, 2024
da0b2ee
`Deferred` effect with test
SandroMaglione Mar 28, 2024
9c8610c
interruption test
SandroMaglione Mar 28, 2024
4c893ef
provide API
SandroMaglione Mar 28, 2024
82d1ed6
fpdart 2.0.0-dev.2
SandroMaglione Mar 28, 2024
56f9ad7
const `None`
SandroMaglione Mar 29, 2024
bed477a
introduce `Scope`
SandroMaglione Mar 29, 2024
3ca43b8
`Scope` with test
SandroMaglione Apr 3, 2024
26180a7
test closable `Scope`
SandroMaglione Apr 3, 2024
895f80a
v2.0.0-dev.3
SandroMaglione Apr 3, 2024
8e34681
refactor and remove `__unsafeRun`
SandroMaglione Apr 4, 2024
43f0592
removed `tryCatch` `onCancel`
SandroMaglione Apr 4, 2024
2f80240
renamed `succeedLazy` and `failLazy`
SandroMaglione Apr 4, 2024
f691c1e
scope methods in `Effect`
SandroMaglione Apr 4, 2024
5efd738
fix `withScope` issue
SandroMaglione Apr 4, 2024
1118bd6
`async`, `asyncInterrupt`, `sleep`
SandroMaglione Apr 6, 2024
2fe20e1
rename constructors sync/future
SandroMaglione Apr 6, 2024
4039939
example read/write file
SandroMaglione Apr 7, 2024
29331c8
`sleep`
SandroMaglione Apr 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
58 changes: 0 additions & 58 deletions examples/do_constructor_pitfalls/bin/do_constructor_pitfalls.dart

This file was deleted.

18 changes: 0 additions & 18 deletions examples/do_constructor_pitfalls/pubspec.yaml

This file was deleted.

This file was deleted.

30 changes: 30 additions & 0 deletions examples/fpdart_http/lib/api.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import 'package:fpdart/fpdart.dart';
import 'package:http/http.dart' as http;

import 'http_error.dart';

/// 1️⃣ Define dependencies, errors, response
Effect<http.Client, HttpError, http.Response> get(
Uri url, {
Map<String, String>? headers,
}) =>

/// 2️⃣ Use the Do notation with the `gen` constructor
Effect.gen(($) async {
/// 3️⃣ Extract the dependency using `env` (environment)
final client = $.sync(Effect.env());

/// 4️⃣ Perform a request, catch errors, extract the response
final response = await $.async(Effect.tryCatch(
execute: () => client.get(url, headers: headers),
onError: (_, __) => const RequestError(),
));

/// 5️⃣ Use plain dart code to check for valid status
if (response.statusCode != 200) {
return $.sync(Effect.fail(const ResponseError()));
}

/// 6️⃣ Return extracted/valid response
return response;
});
11 changes: 11 additions & 0 deletions examples/fpdart_http/lib/http_error.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
sealed class HttpError {
const HttpError();
}

final class RequestError extends HttpError {
const RequestError();
}

final class ResponseError extends HttpError {
const ResponseError();
}
20 changes: 20 additions & 0 deletions examples/fpdart_http/lib/main.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:fpdart/fpdart.dart';
import 'package:http/http.dart' as http;

import 'api.dart';

void main() async {
await get(
Uri.https("pokeapi.co", "/api/v2/pokemon/10"),
)
.timeout(Duration(milliseconds: 1300))
.tap(
(response) => Effect.functionSucceed(
() => print(response.body),
),
)
.provideEnv(
http.Client(),
)
.runFuture();
}
19 changes: 19 additions & 0 deletions examples/fpdart_http/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: fpdart_http
description: >
Example of using fpdart with http.
version: 2.0.0
homepage: https://www.sandromaglione.com/
repository: https://github.com/SandroMaglione/fpdart
publish_to: "none"

environment:
sdk: ">=3.3.0 <4.0.0"

dependencies:
http: ^1.2.1
fpdart:
path: ../../packages/fpdart

dev_dependencies:
lints: ^2.0.1
test: ^1.23.1
66 changes: 0 additions & 66 deletions examples/hello_world/bin/fpdart_hello_world.dart

This file was deleted.

7 changes: 0 additions & 7 deletions examples/hello_world/bin/hello_world.dart

This file was deleted.

19 changes: 0 additions & 19 deletions examples/hello_world/pubspec.yaml

This file was deleted.

22 changes: 0 additions & 22 deletions examples/hello_world/test/fpdart_hello_world_test.dart

This file was deleted.

13 changes: 0 additions & 13 deletions examples/hello_world/test/hello_world_test.dart

This file was deleted.

1 change: 0 additions & 1 deletion examples/json_serializable/.gitattributes

This file was deleted.

7 changes: 0 additions & 7 deletions examples/json_serializable/.gitignore

This file was deleted.

1 change: 0 additions & 1 deletion examples/json_serializable/lib/main.dart

This file was deleted.

20 changes: 0 additions & 20 deletions examples/json_serializable/lib/user.dart

This file was deleted.

21 changes: 0 additions & 21 deletions examples/json_serializable/pubspec.yaml

This file was deleted.