├── examples
├── todo
│ ├── src
│ │ ├── webapi.ts
│ │ ├── actor
│ │ │ ├── filter-actor.ts
│ │ │ ├── text-actor.ts
│ │ │ └── todo-actor.ts
│ │ ├── index.tsx
│ │ ├── ql.ts
│ │ ├── component
│ │ │ ├── header.tsx
│ │ │ ├── main-section.tsx
│ │ │ └── footer.tsx
│ │ ├── store.ts
│ │ └── css
│ │ │ └── base.css
│ ├── .gitignore
│ ├── typings
│ │ └── global.d.ts
│ ├── .vscode
│ │ └── settings.json
│ ├── jsconfig.json
│ ├── .flowconfig
│ ├── README.md
│ ├── index.html
│ ├── tsconfig.json
│ ├── .babelrc
│ ├── webpack.config.js
│ ├── LICENSE
│ └── package.json
├── AwesomeApp
│ ├── .watchmanconfig
│ ├── src
│ │ ├── apps
│ │ │ └── hello
│ │ │ │ ├── webapi.ts
│ │ │ │ ├── actor
│ │ │ │ ├── counter-actor.ts
│ │ │ │ └── hello-actor.ts
│ │ │ │ ├── index.tsx
│ │ │ │ ├── store.ts
│ │ │ │ └── component
│ │ │ │ └── hello.tsx
│ │ └── uikit
│ │ │ ├── noop.ts
│ │ │ └── index.ts
│ ├── .gitattributes
│ ├── .babelrc
│ ├── typings
│ │ └── global.d.ts
│ ├── .vscode
│ │ └── settings.json
│ ├── android
│ │ ├── settings.gradle
│ │ ├── app
│ │ │ ├── src
│ │ │ │ └── main
│ │ │ │ │ ├── res
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ └── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ │ └── awesomeapp
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── MainApplication.java
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ ├── BUCK
│ │ │ └── proguard-rules.pro
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ ├── keystores
│ │ │ ├── debug.keystore.properties
│ │ │ └── BUCK
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ └── gradlew.bat
│ ├── react-dom
│ │ ├── index.js
│ │ └── package.json
│ ├── .buckconfig
│ ├── index.ios.js
│ ├── __tests__
│ │ ├── index.ios.js
│ │ └── index.android.js
│ ├── tsconfig.json
│ ├── ios
│ │ ├── AwesomeApp
│ │ │ ├── AppDelegate.h
│ │ │ ├── main.m
│ │ │ ├── Images.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ ├── AppDelegate.m
│ │ │ └── Info.plist
│ │ ├── AwesomeAppTests
│ │ │ ├── Info.plist
│ │ │ └── AwesomeAppTests.m
│ │ ├── AwesomeApp-tvOSTests
│ │ │ └── Info.plist
│ │ └── AwesomeApp-tvOS
│ │ │ └── Info.plist
│ ├── package.json
│ ├── .gitignore
│ ├── index.android.js
│ └── .flowconfig
├── blog
│ ├── webpack.production.js
│ ├── typings
│ │ └── global.d.ts
│ ├── .vscode
│ │ └── settings.json
│ ├── __mock__
│ │ └── message.json
│ ├── .flowconfig
│ ├── README.md
│ ├── apps
│ │ ├── list
│ │ │ ├── ql.ts
│ │ │ ├── actor
│ │ │ │ └── list-actor.ts
│ │ │ ├── webapi.ts
│ │ │ ├── index.tsx
│ │ │ ├── store.ts
│ │ │ └── component
│ │ │ │ └── blog-list.tsx
│ │ ├── detail
│ │ │ ├── actor
│ │ │ │ ├── loading-actor.ts
│ │ │ │ └── detail-actor.ts
│ │ │ ├── webapi.ts
│ │ │ ├── index.tsx
│ │ │ ├── component
│ │ │ │ └── detail.tsx
│ │ │ └── store.ts
│ │ ├── edit
│ │ │ ├── index.tsx
│ │ │ ├── store.ts
│ │ │ ├── actor
│ │ │ │ └── blog-actor.ts
│ │ │ └── component
│ │ │ │ └── edit.tsx
│ │ └── index.tsx
│ ├── index.html
│ ├── .babelrc
│ ├── tsconfig.json
│ ├── .gitignore
│ ├── webpack.config.js
│ └── package.json
├── iflux2Native
│ ├── .watchmanconfig
│ ├── js
│ │ ├── home
│ │ │ ├── webapi.js
│ │ │ ├── index.js
│ │ │ ├── actor
│ │ │ │ ├── text-actor.js
│ │ │ │ └── loading-actor.js
│ │ │ ├── component
│ │ │ │ └── title.js
│ │ │ └── store.js
│ │ └── setup.js
│ ├── qmkit
│ │ ├── index.js
│ │ ├── index.js.flow
│ │ ├── empty-fn.js
│ │ └── package.json
│ ├── android
│ │ ├── settings.gradle
│ │ ├── app
│ │ │ ├── src
│ │ │ │ └── main
│ │ │ │ │ ├── res
│ │ │ │ │ ├── values
│ │ │ │ │ │ ├── strings.xml
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ └── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── java
│ │ │ │ │ └── com
│ │ │ │ │ │ └── iflux2nativetemplate
│ │ │ │ │ │ ├── MainActivity.java
│ │ │ │ │ │ └── MainApplication.java
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ ├── BUCK
│ │ │ └── proguard-rules.pro
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ ├── gradle-wrapper.jar
│ │ │ │ └── gradle-wrapper.properties
│ │ ├── keystores
│ │ │ ├── debug.keystore.properties
│ │ │ └── BUCK
│ │ ├── build.gradle
│ │ ├── gradle.properties
│ │ └── gradlew.bat
│ ├── .babelrc
│ ├── react-dom
│ │ ├── index.js
│ │ └── package.json
│ ├── .buckconfig
│ ├── README.md
│ ├── index.ios.js
│ ├── index.android.js
│ ├── package.json
│ ├── ios
│ │ ├── iflux2NativeTemplate
│ │ │ ├── AppDelegate.h
│ │ │ ├── main.m
│ │ │ ├── Images.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ └── Contents.json
│ │ │ ├── AppDelegate.m
│ │ │ └── Info.plist
│ │ └── iflux2NativeTemplateTests
│ │ │ ├── Info.plist
│ │ │ └── iflux2NativeTemplateTests.m
│ └── .gitignore
├── timer
│ ├── .gitignore
│ ├── typings
│ │ └── global.d.ts
│ ├── .vscode
│ │ └── settings.json
│ ├── .flowconfig
│ ├── README.md
│ ├── index.html
│ ├── __tests__
│ │ ├── tsconfig.json
│ │ ├── __snapshots__
│ │ │ ├── store.test.ts.snap
│ │ │ └── time.test.tsx.snap
│ │ ├── store.test.ts
│ │ ├── time.test.tsx
│ │ └── timer-actor.test.ts
│ ├── tsconfig.json
│ ├── src
│ │ ├── actor
│ │ │ └── timer-actor.ts
│ │ ├── index.tsx
│ │ ├── store.ts
│ │ └── component
│ │ │ └── timer.tsx
│ ├── .babelrc
│ ├── webpack.config.js
│ └── package.json
├── counter
│ ├── .gitignore
│ ├── typings
│ │ └── global.d.ts
│ ├── .flowconfig
│ ├── .vscode
│ │ └── settings.json
│ ├── README.md
│ ├── src
│ │ ├── ql.ts
│ │ ├── actor
│ │ │ └── counter-actor.ts
│ │ ├── index.tsx
│ │ ├── store.ts
│ │ └── component
│ │ │ └── counter.tsx
│ ├── index.html
│ ├── __tests__
│ │ ├── tsconfig.json
│ │ ├── __snapshots__
│ │ │ ├── store.test.ts.snap
│ │ │ └── counter.test.tsx.snap
│ │ ├── ql.test.ts
│ │ ├── store.test.ts
│ │ ├── counter.test.tsx
│ │ └── counter-actor.test.ts
│ ├── tsconfig.json
│ ├── .babelrc
│ ├── webpack.config.js
│ └── package.json
└── validator
│ ├── .vscode
│ └── settings.json
│ ├── .flowconfig
│ ├── index.html
│ ├── README.md
│ ├── src
│ ├── components
│ │ ├── button-field.tsx
│ │ └── form-field.tsx
│ ├── index.tsx
│ ├── actor
│ │ ├── user-actor.ts
│ │ └── validate-field-actor.ts
│ ├── store.ts
│ └── ql.ts
│ ├── tsconfig.json
│ ├── .babelrc
│ ├── webpack.config.js
│ └── package.json
├── documents
├── gitbook
│ ├── redux.md
│ ├── react.md
│ ├── SUMMARY.md
│ ├── relax.md
│ ├── README.md
│ ├── store-provider.md
│ ├── actor.md
│ ├── store.md
│ ├── ql.md
│ ├── dql.md
│ └── example.md
└── README.md
├── src
├── msg.ts
├── index.ts
├── contrib
│ ├── util.ts
│ └── atom.ts
├── actor.ts
├── decorator.ts
├── ql.ts
├── util.ts
└── dql.ts
├── react-dom
├── index.js
└── package.json
├── __tests__
├── __snapshots__
│ ├── test-relax.tsx.snap
│ ├── test-multiple-store-context.tsx.snap
│ └── test-react-dql.tsx.snap
├── tsconfig.json
├── test-msg.ts
├── yarn.lock
├── test-ql.ts
├── test-dql.ts
├── test-merge.ts
├── test-relax.tsx
├── test-actor.ts
├── test-transaction-rollback.ts
├── test-util.ts
├── test-atom.ts
├── test-react-dql.tsx
└── transaction-rollback-test.ts
├── .flowconfig
├── .babelrc
├── types
├── util.d.ts
├── util.js.flow
├── atom.d.ts
├── atom.js.flow
├── validator.js.flow
├── validator.d.ts
├── index.js.flow
└── index.d.ts
├── scripts
└── type.sh
├── .vscode
└── settings.json
├── tsconfig.json
├── .gitignore
├── perf
└── reduce-state.perf.js
├── LICENSE
└── package.json
/examples/todo/src/webapi.ts:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/examples/blog/webpack.production.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/iflux2Native/.watchmanconfig:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/examples/iflux2Native/js/home/webapi.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/timer/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/examples/todo/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/src/apps/hello/webapi.ts:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/examples/counter/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/.gitattributes:
--------------------------------------------------------------------------------
1 | *.pbxproj -text
2 |
--------------------------------------------------------------------------------
/documents/gitbook/redux.md:
--------------------------------------------------------------------------------
1 | # vs redux
2 |
3 | @zhangfeng
4 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["react-native"]
3 | }
--------------------------------------------------------------------------------
/examples/blog/typings/global.d.ts:
--------------------------------------------------------------------------------
1 | declare const __DEV__: boolean;
--------------------------------------------------------------------------------
/examples/counter/typings/global.d.ts:
--------------------------------------------------------------------------------
1 | declare const __DEV__: boolean;
--------------------------------------------------------------------------------
/examples/timer/typings/global.d.ts:
--------------------------------------------------------------------------------
1 | declare const __DEV__: boolean;
--------------------------------------------------------------------------------
/examples/todo/typings/global.d.ts:
--------------------------------------------------------------------------------
1 | declare const __DEV__: boolean;
--------------------------------------------------------------------------------
/examples/AwesomeApp/typings/global.d.ts:
--------------------------------------------------------------------------------
1 | declare const __DEV__: boolean;
--------------------------------------------------------------------------------
/examples/AwesomeApp/src/uikit/noop.ts:
--------------------------------------------------------------------------------
1 | export default function noop() {
2 |
3 | }
--------------------------------------------------------------------------------
/examples/blog/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false
3 | }
--------------------------------------------------------------------------------
/examples/timer/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false
3 | }
--------------------------------------------------------------------------------
/examples/todo/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false
3 | }
--------------------------------------------------------------------------------
/examples/AwesomeApp/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false
3 | }
--------------------------------------------------------------------------------
/examples/blog/__mock__/message.json:
--------------------------------------------------------------------------------
1 | {
2 | "message": "new world, new iflux2!"
3 | }
--------------------------------------------------------------------------------
/examples/validator/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false
3 | }
--------------------------------------------------------------------------------
/src/msg.ts:
--------------------------------------------------------------------------------
1 | import { EventEmitter } from 'events';
2 |
3 | export default new EventEmitter();
4 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'AwesomeApp'
2 |
3 | include ':app'
4 |
--------------------------------------------------------------------------------
/examples/iflux2Native/qmkit/index.js:
--------------------------------------------------------------------------------
1 | import emptyFn from './empty-fn'
2 |
3 | export {
4 | emptyFn
5 | };
6 |
--------------------------------------------------------------------------------
/examples/iflux2Native/android/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'iflux2NativeTemplate'
2 |
3 | include ':app'
4 |
--------------------------------------------------------------------------------
/examples/blog/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 |
3 | [include]
4 |
5 | [libs]
6 |
7 | [options]
8 | esproposal.decorators=ignore
9 |
--------------------------------------------------------------------------------
/examples/counter/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 |
3 | [include]
4 |
5 | [libs]
6 |
7 | [options]
8 | esproposal.decorators=ignore
9 |
--------------------------------------------------------------------------------
/examples/timer/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 |
3 | [include]
4 |
5 | [libs]
6 |
7 | [options]
8 | esproposal.decorators=ignore
9 |
--------------------------------------------------------------------------------
/examples/validator/.flowconfig:
--------------------------------------------------------------------------------
1 | [ignore]
2 |
3 | [include]
4 |
5 | [libs]
6 |
7 | [options]
8 | esproposal.decorators=ignore
9 |
--------------------------------------------------------------------------------
/react-dom/index.js:
--------------------------------------------------------------------------------
1 | import {unstable_batchedUpdates} from 'react-native';
2 |
3 | export {
4 | unstable_batchedUpdates
5 | };
6 |
--------------------------------------------------------------------------------
/examples/blog/README.md:
--------------------------------------------------------------------------------
1 | # iflux2-blog
2 |
3 | ```sh
4 | yarn
5 | yarn start
6 | ```
7 | # visit
8 |
9 | http://localhost:3000
10 |
--------------------------------------------------------------------------------
/examples/counter/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "vsicons.presets.angular": false,
3 | "typescript.tsdk": "./node_modules/typescript/lib"
4 | }
--------------------------------------------------------------------------------
/examples/iflux2Native/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["react-native"],
3 | "plugins":[
4 | "transform-decorators-legacy"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/documents/gitbook/react.md:
--------------------------------------------------------------------------------
1 | # React
2 |
3 | iflux2中,我们思考了很多,最后通过两个decorator完成了Store和React组件的沟通结合
4 |
5 |
6 | @StorePrivder
7 |
8 | @Relax
9 |
--------------------------------------------------------------------------------
/examples/AwesomeApp/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |