Commit Graph

260 Commits

Author SHA1 Message Date
Stephen Celis
5d4f96ddbe Soft-deprecate Effect.task and Effect.fireAndForget (#2099)
* Soft-deprecate `Effect.task` and `Effect.fireAndForget`

See https://github.com/pointfreeco/swift-composable-architecture/discussions/1520

* wip

* wip

* wip
2023-05-12 09:13:37 -07:00
Stephen Celis
767231d179 Add Store.init that takes reducer builder (#2087)
* Add `Store.init` that takes reducer builder

* wip

* wip

* added some tests

* wip

* wip

* wip

---------

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2023-05-11 12:30:08 -07:00
Stephen Celis
da205c71ae Deprecate Store.scope(state:) for view store observe (#2097)
* Deprecate `Store.scope(state:)` for view store `observe`

Explicit scoping is most appropriate for transforming domains, which
almost always requires an action transform. In the rare case it doesn't,
we should prefer an explicit `{ $0 }`.

Scoping for the view has been deprecated for awhile for the `observe`
parameter when creating view stores, so let's lead folks that direction.

* wip

* wip
2023-05-11 08:17:54 -07:00
Brandon Williams
847d5edf3f Improve docs on how exhaustive vs non-exhaustive test stores work (#2096)
* Improved docs for non-exhaustive test stores.

* wip

* wip

* update test

* wip

---------

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2023-05-11 10:29:33 -04:00
Stephen Celis
b7c5a40ce2 Deprecate type-based cancel IDs (#2091)
* Deprecate type-based cancel IDs

Swift may aggressively compile types out of release mode, including
types defined for cancellation. Because of this, folks should migrate to
use value-based identifiers and avoid any potential bugs.

* wip

* wip
2023-05-10 13:20:16 -07:00
유재호
ce187a4d08 Update remaining 'bindable state' to 'binding state' (#2054) 2023-04-25 09:38:05 -07:00
Stephen Celis
3029263c10 Add 'Effect.publisher' for bridging effects from Combine (#1958)
We are looking to deprecate TCA's dependence on Combine, _e.g._ the
direct conformance of `Effect` to `Publisher`, as well as many
Combine-centric APIs, but that doesn't mean we want to eliminate support
for using Combine with TCA. Our current advice given by our soft
deprecations is to iterate over `publisher.values`, but this is
unavailable in iOS 13 and 14, so let's introduce a dedicated bridging
mechanism, instead.
2023-03-06 13:46:20 -08:00
Stephen Celis
bb384617d9 Clean up uncategorized DocC (#1956) 2023-03-06 09:54:42 -08:00
Stephen Celis
685e8fcfc0 DocC fixes (#1942)
We have a number of outdated DocC references. This PR should hopefully
take care of them!
2023-02-27 08:29:19 -08:00
Stephen Celis
1a168e2397 Add note to reducer protocol dependency section (#1873)
* Add note to reducer protocol dependency section

The discussion #1870 noted that our migration guide could include more
of a breadcrumb that migrating to the Dependencies library isn't a
simple matter of changing every environment property to a `@Dependency`
property.

* wip

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2023-01-26 09:22:30 -08:00
Stephen Celis
e294b24edb Add Effect.send (#1859)
* Add `Effect.send`

With the `Effect<Action, Failure>` -> `Effect<Action>` migration,
`Effect.init(value:)` and `Effect.init(error:)` no longer make sense. We
will be retiring the latter some time in the future, so let's also get a
head start and rename the former to `Effect.send`.

For now it will call `Effect.init(value:)` under the hood, but in the
future we will want a non-Combine-driven way of running synchronous
effects.

* format fix

* wip

* fix

* wip

* wip
2023-01-23 16:41:01 -08:00
Stephen Celis
52c4a01437 Rename BindableState to BindingState (#1855)
The -`able` naming evokes protocols in Swift, and is an outlier when
considered alongside the rest of TCA's binding tools:

- `BindingAction`: concrete type
- `BindableAction`: protocol
- `BindingReducer`: concrete type

So, let's make things consistent.

The one caveat is that Swift diagnostics for such a deprecation aren't
great, so users won't get proactive warnings here for the time being:

https://github.com/apple/swift/issues/63139

We may just want to keep the deprecation around till it does...
2023-01-20 14:56:53 -08:00
Brandon Williams
e47342740b Testing gotchas (#1854)
* Testing gotchas

* Update Testing.md

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2023-01-20 12:59:59 -08:00
Stephen Celis
c5a7d1be9a Add prepareDependencies to Store.init (#1844)
* Add `prepareDependencies` to `Store.init`:wq

* wip

* test and doc

* update TTT previews to use new trailing closure style"

* wip

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2023-01-17 20:08:52 -08:00
brenno
eb5494051a fixed typo at getting started (#1843)
Co-authored-by: brennomoura <brenno.moura@compasso.com.br>
2023-01-17 07:40:51 -08:00
Brandon Williams
3810aee31b Fix typo in docs. 2023-01-15 13:16:52 -08:00
Stephen Celis
9b5a510174 Depend on swift-dependencies (#1808)
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2023-01-09 11:08:23 -05:00
Stephen Celis
30015d13a3 Revert #1790 (#1795)
It occurred to us that this solution unfortunately is incompatible with
view actions. We have an alternate solution that works, so I'll PR that
in the future if no others materialize!
2023-01-05 18:04:48 -05:00
Thomas Grapperon
c719fa1d39 Allow BindingReducer to work with ViewState (#1790)
* Simpler bindable view state

* wip

* wip

* Remove `BindingStore`

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Make BindingState conditionally sendable.

* Fixed tests

* Update bindings article

* Add some additional contextual information to the runtime warnings

* update some docs

* lots more docs

* test clean up

* Improve diagnostic

* Put back `BindingReducer()` in the form study

* clean up

* Improve DocC references

* Remove DocC references for `@`'d property wrappers.

* wip

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2023-01-05 13:18:34 -05:00
Brandon Williams
4266744f04 Soft-deprecate EffectPublisher (#1791)
* Soft-deprecate EffectPublisher in favor of EffectTask.

* wip
2023-01-04 15:54:27 -08:00
Stephen Celis
ea9cc86779 Fix TestStore docs (#1787)
* Fix TestStore docs

* fix

* wip
2023-01-04 00:57:13 -05:00
Daeyoung Kim
315d935fcd Fix code typo (#1773)
Signed-off-by: Daeyoung Kim <daykim22@gmail.com>

Signed-off-by: Daeyoung Kim <daykim22@gmail.com>
2022-12-27 09:46:26 -05:00
Kenta Aikawa
b555bfeac6 Fix minor document error (#1764) 2022-12-21 10:01:15 -05:00
Brandon Williams
0a1958115c Depend on SwiftUINavigation for TextState, AlertState, etc... (#1685)
* Use `swiftui-navigation` for alerts

* wip

* wip

* wip

* wip

* wip

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2022-11-21 17:46:36 -05:00
Brandon Williams
52dca7e5ed Fix quick link to migration guide. 2022-11-14 10:56:58 -05:00
hmhv
3f30621ae8 Fix typo in GettingStarted.md and README.md (#1659)
* fix typo GettingStarted.md

* fix typo README
2022-11-12 07:42:14 -08:00
Brandon Williams
f444001520 Update performance article (#1642)
* Update performance doc to mention specifying view store type.

* wip
2022-11-09 13:30:17 -05:00
유재호
ab020e81bd Fix typos in ReducerProtocol.swift and so on (#1638) 2022-11-08 12:37:07 -05:00
Tyson
632ac99c82 Fix minor typo (#1612) 2022-11-02 12:40:25 -04:00
PierreCapo
c9a07f5239 fix typo (#1609) 2022-11-02 08:48:19 -04:00
Stephen Celis
5d687b6b41 Non-exhaustive testing (#1599)
* Allow for non-exhaustive test store.

* wip

* wip

* wip

* wip

* wip

* clean up

* docs

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* fix tests

* wip

* wip

* wip

* wip

* wip

* merge fixes

* fixes

* wip

* wip

* wip

* infrastructure

* add extraction based overload

* wip

* more tests

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* docs fix

* fix

* wip

* wip

* wip

* lots of doc fixes

* wip

* ci

* wip

* wip

* wip;

* wip

* Update .github/workflows/ci.yml

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/Testing.md

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

* fix docs

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>
2022-10-31 11:23:10 -07:00
Brandon Williams
4ece153d6b Add swift-clocks to TCA (#1547)
* Convert schedulers to clocks.

* wip

* wip

* wip

* wip

* Update 01-GettingStarted-Animations.swift (#1512)

Typo

* bump

* wip

* wip

* fix

* doc fix

* wip

* update

* update

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* update clocks

* wip

* clocks

* wip

* wip

Co-authored-by: Ken Grigsby <kgrigsby@mac.com>
Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2022-10-23 22:28:31 -07:00
Stephen Celis
cc535c3e37 XCTUnimplemented -> unimplemented (#1530) 2022-10-19 16:17:48 -07:00
Thomas Grapperon
6fee86ba4f Store dependencies default values on first access (#1510)
* wip

* wip

* wip

* Fix lock

* Remove trailing spaces

* Simplify implementation

* Store default values in `DependencyValues`

* Simplify implementation again

* Make helper function private

* Rename `Default` to `DefaultValues`

* Fix spacing

* Fix spacing again

* Some changes to dependency caching logic.

* shorten

* fix tests

* fileprivate

* Update docs

Co-authored-by: Brandon Williams <mbrandonw@hey.com>
2022-10-18 16:08:17 -04:00
Thomas Grapperon
41f1cb9f3f Add a EffectTask<Action> typealias for Effect<Action, Never> and rename Effect to EffectPublisher (#1471)
* Add an `EffectOf<Action>` typealias for `Effect<Action, Never>`

* Fix doc

* Rename `EffectOf` to `EffectTask`

* Rename `Effect` to  `EffectPublisher`

* Soft-deprecate `Effect`

* Link to `EffectTask`

* Use `EffectPublisher` in Combine contexts

* Reword soft-deprecation message

* Remove `renamed:` fix-it for `Effect` deprecation

* Update Sources/ComposableArchitecture/Documentation.docc/Extensions/ReducerProtocol.md

Co-authored-by: Stephen Celis <stephen.celis@gmail.com>

* Update Sources/ComposableArchitecture/Documentation.docc/ComposableArchitecture.md

* Update Sources/ComposableArchitecture/Effect.swift

* Fix DocC identifiers

Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2022-10-17 15:16:46 -07:00
Stephen Celis
12b028e980 Remove broken link (#1523)
* Remove broken link

Fix #1522.

* Update DependencyManagement.md
2022-10-17 13:57:17 -07:00
Tyson
9e3ac1d596 Fixes a small typo in concurrency docs (#1504) 2022-10-15 08:50:31 -07:00
유재호
c5508de7a0 Fix typos in every DocC-Articles (#1490)
* Fix typos in every DocC-Articles

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/DependencyManagement.md

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/DependencyManagement.md

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/MigratingToTheReducerProtocol.md

Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2022-10-13 11:41:04 -07:00
roeybiran
6771988691 docs: small rephrase (#1479)
* docs: slight rephrasing

* small fix

* Update Sources/ComposableArchitecture/Documentation.docc/Articles/DependencyManagement.md

Co-authored-by: Stephen Celis <stephen.celis@gmail.com>
2022-10-13 10:16:39 -07:00
Yoshinori Imajo
439c745b48 Fix typo in DependencyManagement.md (#1484) 2022-10-13 06:39:12 -04:00
Yoshinori Imajo
484fda5325 Fix typo in GettingStarted.md (#1485) 2022-10-13 06:37:24 -04:00
Martin Václavík
39c15c4322 Typo fix (#1468) 2022-10-11 14:55:07 -04:00
Brandon Williams
8a75b24f88 Small docs fixes. 2022-10-10 16:23:12 -04:00
Brandon Williams
55755c3103 ViewStore.init(_:observe:) (#1448)
* ViewStore.init(_:observe:)

* clean up
2022-10-10 15:55:54 -04:00
Brandon Williams
b8294b89d5 ReducerProtocol (#1283)
* Add previewValue to DependencyKey, and fixed build errors on Xcode 13.

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Add Xcode 14 to CI (#1266)

* Add Xcode 14 to CI

* Update ci.yml

* wip

* wip

* Update Makefile

* Update Makefile

* wip

* runtime warning when no live dependency available for live app

* bring back live

* wip

* soft deprecate Reducer

* fusion test

* ternary clean up

* wip

* add some todos

* typealias Reducer inside AnyReducer

* Add `now` convenience property to date dependency (#1286)

* Remove type alias

* LiveDependencyKey: DependencyKey -> DependencyKey: TestDependencyKey (#1288)

* LiveDependencyKey: DependencyKey -> DependencyKey: TestDependencyKey

* wip

* wip

* wip

* wip

* wip

* fix

* wip

* fix navigate case studies

* wip

* fixes and docs

* more migration

* wip

* wip

* thread deps through ifLet and forEach examples.

* update

* clean up

* wip

* wip

* Update MigratingToReducerProtocols.md

* wip

* wip

* docs

* docs

* fix some docs

* Fix for CombineReducers compiler bug

* wip

* wip

* wip

* wip

* todos for docs

* Don't warn for overridden test dependencies (#1324)

* Don't warn while setting test dependencies

* wip

* fix conflict

* wip

* Docs and deprecations

* add binding info

* wip

* Add URL session

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* Don't run debug reducer in tests

* wip

* updated reducer debugging

* Update UUID.swift (#1374)

* wip

* optional

* added Self as default associatedtype value for TestDependencyKey.value (#1395)

* added Self as default associatedtype value for TestDependencyKey.value

* Update Tests/ComposableArchitectureTests/DependencyKeyTests.swift

Co-authored-by: Brandon Williams <135203+mbrandonw@users.noreply.github.com>

* Update example to set badge to the unread count (#1391)

* Add store.finish().

* Fix warnings introduced in Xcode 14.1 (#1388)

* Fix warnings introduced in Xcode 14.1

* wip

* Conform dependency values to DependencyKey where convenient

* fix

* Fail if testValue is invoked without providing implementation (#1399)

* Update example to set badge to the unread count (#1391)

* Add store.finish().

* Fix the CaseStudies (UIKit) (#1392)

* Fix warnings introduced in Xcode 14.1 (#1388)

* Fix warnings introduced in Xcode 14.1

* wip

* Fail when accessing testValue when one hasn't been provided.

* wip

* wip

* wip

* test

Co-authored-by: Mark Adams <hyperspacemark@users.noreply.github.com>
Co-authored-by: Maciek Czarnik <Czajnikowski@users.noreply.github.com>
Co-authored-by: Stephen Celis <stephen@stephencelis.com>

* Add DateGenerator.init(_ generate:)

* Start running some tests in release config. (#1405)

* Start running some tests in release config.

* wip

* wip

* wip

* wip

* wip

* Update Sources/ComposableArchitecture/Store.swift

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* wip

* wip

Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>

* added test that dependencies are transferred to effects

* wip

* self

* clean up

* simplify

* fix

* doc fixes

* wip

* fix

* wip

* wip

* wip

* fix

* Run dependencies tests on CI. (#1408)

* Run dependencies tests on CI.

* wip

* update makefile

* wtf

* more docs

* more docs

* wip

* docs

* wip

* docs

* wip

* message tweaks

* wip

* docs and clean up

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* typo fix

* docs clean up

* doc fixes

* cancel in progress

* cancel in progress

* no need to make recope release-only, and make more use of XCTAssert to get better release tests

* fix test

* Remove ActorIsolated from tests where it's not needed

* fix test

* wip

* wip

* Add a benchmark for dependency key writing.

* fix test

* make benchmark 5.7 compatible

* iflet docs

* more docs

* dependency docs

* rearrange

* @Dependency docs

* docs

* fix benchmark in 5.6

* doc fix

* wip

* wip

* wip

* wip

* more docs

* clean up

* fix

* wip

* Fixes compilation on watchOS (#1423)

Co-authored-by: Gunnar Herzog <gunnar.herzog@kf-interactive.com>

* move deprecation

* format

* wip

* Fix openURL

* wip

* wip

* wip

* wip

* fix

* Keep simple

* Reducer.debug -> Reducer._printChanges

We want to revisit some of these debugging APIs in the future, so let's
keep them around, but underscore them to allow for more flexible
evolution.

* `ReducerProtocol.debug` -> `ReducerProtocol._printChanges` (#1426)

* Reducer.debug -> Reducer._printChanges

We want to revisit some of these debugging APIs in the future, so let's
keep them around, but underscore them to allow for more flexible
evolution.

* Update DebugTests.swift

* OpenURL fix for macCatalyst (#1429)

* OpenURL fix for macCatalyst

Fixes #1428.

* Update Makefile

* Correct typo in "Designing dependencies" chapter (#1430)

protocol AudioPlayerClient should be a struct

* fix

* fix

* protocol docc

* docs

* Typos (#1439)

* remove unneeded internals

* wip

* Fix missing parameter in code sample (#1450)

* typo fix

* more docs for DependencyKeyWritingReducer

* wip

* wip

* update readme

* wip

* update image

* main actor

* Added withValue, added docs and tests

* public properties

* cleaned up overload

* changed reducer->feature in a bunch of spots of dependencies docs

* add articles to readme

* 6

* fix tests for swift 5.6

* tweak

* tweak

* Update ReducerProtocol.swift

* wip

* wip

* docs update

* docs for conforming dependency directly to DependencyKey

* typo fix

* performance article update

* fixes

* deprecate another effect timer API

* link to migration doc in deprecation messages

* make some tests that deal with line numbers less fragile

* package.swift clean up

* tweak to echos

* remove docs at root, not in docs-out

* remove todo

* update WithViewStore.init deprecation message to explain and link to performance doc

* Add back ReducerProtocolOf for 5.7.1 (#1444)

* Add back ReducerProtocolOf for 5.7.1

* wip

* Move scheme tests to matrix

* streamline

* try this

* store.finish

* wip

* dependencies -> transformDependency

* wip

* wip

* Compat

* fix

* preserve deps for combine publishers

* Remove dump calls (#1460)

* Fix compiler errors for library evolution. (#1443)

* Fix compiler errors for library evolution.

* wip

* wip

* work around ambiguous init

* Revert "work around ambiguous init"

This reverts commit 002a199d59.

* fix ambiguity errors

* remove _Observe for now

* wip

* wip

* wip

* longer timeout

* more waiting

* wip

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
Co-authored-by: Ken Grigsby <kgrigsby@mac.com>
Co-authored-by: Petr Sima <ptea.sima@gmail.com>
Co-authored-by: Mark Adams <hyperspacemark@users.noreply.github.com>
Co-authored-by: Maciek Czarnik <Czajnikowski@users.noreply.github.com>
Co-authored-by: Thomas Grapperon <35562418+tgrapperon@users.noreply.github.com>
Co-authored-by: Gunnar Herzog <github@trispo.de>
Co-authored-by: Gunnar Herzog <gunnar.herzog@kf-interactive.com>
Co-authored-by: Guttorm Aase <guttormaase@gmail.com>
Co-authored-by: Julien Sagot <contact@juliensagot.fr>
Co-authored-by: Jaanus Siim <jaanussiim+github@gmail.com>
2022-10-10 11:37:50 -04:00
ddanilyuk
a0065688fe Fix Performance.md brackets (#1446) 2022-10-05 16:41:47 -04:00
Brandon Williams
a27a7a57bc Add compiler performance section to table of contents. 2022-09-22 08:52:57 -04:00
Mark Adams
912e10074c Update example to set badge to the unread count (#1391) 2022-09-19 09:12:58 -04:00
Stephen Celis
26f9ed286d Rename Effect<Output, _> to Effect<Action, _> (#1362)
* Rename Effect<Output, _> -> Effect<Action, _>

We'll keep the typealias for the `Publisher` conformance, but given the
changes made to TCA for concurrency, `Effect` should typically only be
used these days in reducers to feed actions back into the store, and not
more generally as publishers of any output.

* wip
2022-09-10 10:46:00 -04:00
Brandon Williams
764de879ef More docs for WithViewStore and new observe argument (#1368)
* wip

* wip

* Update Performance.md

* Update Performance.md

* wip

* wip

* Update Performance.md

Co-authored-by: Stephen Celis <stephen@stephencelis.com>
2022-09-10 10:20:35 -04:00