Latest 0.2.0
Homepage https://github.com/a-voronov/swifty-redux
License MIT
Platforms ios 10.0
Authors

swifty-redux Build Status

Swifty implementation of Redux


redux

Redux components

State

  • Data structure
  • Consists of domain states

Action

  • Data structure
  • We’re interested in its type

Store

  • Stores state
  • Handles actions dispatching through serial queue
  • Propagates action through middleware to reducers and receives it back (synchronously)
  • Notifies observers of state changes

Middleware

  • Handles actions for any async/side-effect tasks
  • Dispatches actions through dispatch
  • Decorates over other middleware, but doesn’t know anything about any of them – i.e. (m(m(m())))
  • Propagates actions to further middleware until the end through next
  • May not propagate actions to further middleware (redux.js faq), but better to propagate in order not to have some actions lost in a middle of their way to the store

Reducer

  • Pure function
  • Business logic of handling actions
  • Can propagate actions to domain reducers
  • ??? May not propagate actions to domain reducers
  • Recipes about structuring reducers

Latest podspec

{
    "name": "SwiftyRedux",
    "version": "0.2.0",
    "summary": "Swifty implementation of Redux",
    "swift_version": "5.0",
    "description": "Swifty implementation of Redux with optional add-ons.",
    "homepage": "https://github.com/a-voronov/swifty-redux",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Alexander Voronov": "[email protected]"
    },
    "source": {
        "git": "https://github.com/a-voronov/swifty-redux.git",
        "tag": "0.2.0"
    },
    "social_media_url": "https://twitter.com/aleks_voronov",
    "platforms": {
        "ios": "10.0"
    },
    "default_subspecs": [
        "Core",
        "Steroids",
        "Command",
        "BatchedActions",
        "SideEffects"
    ],
    "subspecs": [
        {
            "name": "Core",
            "source_files": "SwiftyRedux/Sources/Core/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/Core/**/*.{swift}"
                }
            ]
        },
        {
            "name": "All",
            "dependencies": {
                "SwiftyRedux/Core": [],
                "SwiftyRedux/Steroids": [],
                "SwiftyRedux/Command": [],
                "SwiftyRedux/BatchedActions": [],
                "SwiftyRedux/SideEffects": [],
                "SwiftyRedux/Epics": [],
                "SwiftyRedux/ReactiveExtensions": []
            },
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/**/*.{swift}"
                }
            ]
        },
        {
            "name": "Steroids",
            "dependencies": {
                "SwiftyRedux/Core": []
            },
            "source_files": "SwiftyRedux/Sources/Steroids/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/Steroids/**/*.{swift}"
                }
            ]
        },
        {
            "name": "BatchedActions",
            "dependencies": {
                "SwiftyRedux/Core": []
            },
            "source_files": "SwiftyRedux/Sources/BatchedActions/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/BatchedActions/**/*.{swift}"
                }
            ]
        },
        {
            "name": "Command",
            "dependencies": {
                "SwiftyRedux/Core": []
            },
            "source_files": "SwiftyRedux/Sources/Command/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/Command/**/*.{swift}"
                }
            ]
        },
        {
            "name": "SideEffects",
            "dependencies": {
                "SwiftyRedux/Core": []
            },
            "source_files": "SwiftyRedux/Sources/SideEffects/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/SideEffects/**/*.{swift}"
                }
            ]
        },
        {
            "name": "Epics",
            "dependencies": {
                "SwiftyRedux/Core": [],
                "ReactiveSwift": [
                    "~> 6.0"
                ]
            },
            "source_files": "SwiftyRedux/Sources/Epics/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/Epics/**/*.{swift}"
                }
            ]
        },
        {
            "name": "ReactiveExtensions",
            "dependencies": {
                "SwiftyRedux/Core": [],
                "SwiftyRedux/Steroids": [],
                "ReactiveSwift": [
                    "~> 6.0"
                ]
            },
            "source_files": "SwiftyRedux/Sources/ReactiveExtensions/**/*.{swift}",
            "testspecs": [
                {
                    "name": "Tests",
                    "test_type": "unit",
                    "source_files": "SwiftyRedux/Tests/ReactiveExtensions/**/*.{swift}"
                }
            ]
        }
    ]
}

Pin It on Pinterest

Share This