├── .editorconfig ├── .eslintrc.json ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ └── feature-request.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── .husky ├── .gitignore └── pre-commit ├── .prettierignore ├── .prettierrc ├── .vscode └── extensions.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── angular.json ├── apps ├── .gitkeep └── examples │ ├── data-cs-crud │ ├── .browserslistrc │ ├── .eslintrc.json │ ├── README.md │ ├── db.json │ ├── jest.config.js │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── products │ │ │ │ ├── product-create │ │ │ │ ├── product-create.component.html │ │ │ │ ├── product-create.component.scss │ │ │ │ └── product-create.component.ts │ │ │ │ ├── product-list │ │ │ │ ├── product-list.component.html │ │ │ │ ├── product-list.component.scss │ │ │ │ └── product-list.component.ts │ │ │ │ ├── product-update │ │ │ │ ├── product-update.component.html │ │ │ │ ├── product-update.component.scss │ │ │ │ └── product-update.component.ts │ │ │ │ ├── product.form.ts │ │ │ │ ├── product.model.ts │ │ │ │ ├── products-material.module.ts │ │ │ │ ├── products.component.html │ │ │ │ ├── products.component.scss │ │ │ │ ├── products.component.ts │ │ │ │ ├── products.module.ts │ │ │ │ └── products.store.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.editor.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ ├── data-cs-pagination │ ├── .browserslistrc │ ├── .eslintrc.json │ ├── README.md │ ├── db.json │ ├── jest.config.js │ ├── src │ │ ├── app │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.ts │ │ │ ├── app.module.ts │ │ │ └── books │ │ │ │ ├── book.model.ts │ │ │ │ ├── books-material.module.ts │ │ │ │ ├── books-pagination │ │ │ │ ├── books-pagination.component.html │ │ │ │ ├── books-pagination.component.scss │ │ │ │ └── books-pagination.component.ts │ │ │ │ ├── books-table │ │ │ │ ├── books-table.component.html │ │ │ │ ├── books-table.component.scss │ │ │ │ └── books-table.component.ts │ │ │ │ ├── books.component.html │ │ │ │ ├── books.component.scss │ │ │ │ ├── books.component.ts │ │ │ │ ├── books.module.ts │ │ │ │ ├── books.service.ts │ │ │ │ └── books.store.ts │ │ ├── assets │ │ │ └── .gitkeep │ │ ├── environments │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── main.ts │ │ ├── polyfills.ts │ │ ├── styles.scss │ │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.editor.json │ ├── tsconfig.json │ └── tsconfig.spec.json │ └── data-cs-search │ ├── .browserslistrc │ ├── .eslintrc.json │ ├── README.md │ ├── db.json │ ├── jest.config.js │ ├── src │ ├── app │ │ ├── app.component.html │ │ ├── app.component.scss │ │ ├── app.component.ts │ │ ├── app.module.ts │ │ └── musicians │ │ │ ├── musician-list │ │ │ ├── musician-list.component.html │ │ │ ├── musician-list.component.scss │ │ │ └── musician-list.component.ts │ │ │ ├── musician-search │ │ │ ├── musician-search.component.html │ │ │ ├── musician-search.component.scss │ │ │ └── musician-search.component.ts │ │ │ ├── musician.model.ts │ │ │ ├── musicians-material.module.ts │ │ │ ├── musicians.component.html │ │ │ ├── musicians.component.scss │ │ │ ├── musicians.component.ts │ │ │ ├── musicians.module.ts │ │ │ └── musicians.store.ts │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── index.html │ ├── main.ts │ ├── polyfills.ts │ ├── styles.scss │ └── test-setup.ts │ ├── tsconfig.app.json │ ├── tsconfig.editor.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── decorate-angular-cli.js ├── jest.config.js ├── jest.preset.js ├── libs ├── component-store-helpers │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.js │ ├── ng-package.json │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── lib │ │ │ ├── component-state-selectors.spec.ts │ │ │ └── component-state-selectors.ts │ │ └── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ └── tsconfig.spec.json ├── data-component-store │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.js │ ├── ng-package.json │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── lib │ │ │ ├── data-component-store.spec.ts │ │ │ ├── data-component-store.ts │ │ │ ├── data-effects-builder.ts │ │ │ ├── data-service.spec.ts │ │ │ ├── data-service.ts │ │ │ ├── data-state.spec.ts │ │ │ ├── data-state.ts │ │ │ ├── helpers.spec.ts │ │ │ ├── helpers.ts │ │ │ └── models.ts │ │ └── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ └── tsconfig.spec.json └── entity-component-store │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.js │ ├── ng-package.json │ ├── package.json │ ├── src │ ├── index.ts │ ├── lib │ │ ├── entity-component-store.spec.ts │ │ ├── entity-component-store.ts │ │ ├── entity-state-adapter.ts │ │ ├── entity-state-operator.ts │ │ ├── entity-state.spec.ts │ │ ├── entity-state.ts │ │ ├── models.ts │ │ ├── select-id.ts │ │ ├── sorted-state-adapter.ts │ │ └── unsorted-state-adapter.ts │ └── test-setup.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ ├── tsconfig.lib.prod.json │ └── tsconfig.spec.json ├── nx.json ├── package.json ├── tools ├── generators │ └── .gitkeep └── tsconfig.tools.json ├── tsconfig.base.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "ignorePatterns": ["**/*"], 4 | "plugins": ["@nrwl/nx"], 5 | "overrides": [ 6 | { 7 | "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], 8 | "rules": { 9 | "@nrwl/nx/enforce-module-boundaries": [ 10 | "error", 11 | { 12 | "enforceBuildableLibDependency": true, 13 | "allow": [], 14 | "depConstraints": [ 15 | { 16 | "sourceTag": "*", 17 | "onlyDependOnLibsWithTags": ["*"] 18 | } 19 | ] 20 | } 21 | ] 22 | } 23 | }, 24 | { 25 | "files": ["*.ts", "*.tsx"], 26 | "extends": ["plugin:@nrwl/nx/typescript"], 27 | "rules": {} 28 | }, 29 | { 30 | "files": ["*.js", "*.jsx"], 31 | "extends": ["plugin:@nrwl/nx/javascript"], 32 | "rules": {} 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug or regression in functionality 4 | --- 5 | 6 | ## Minimal reproduction of the bug/regression with instructions: 7 | 8 | 9 | 10 | ## Expected behavior: 11 | 12 | 13 | 14 | ## Versions of RxMind, NgRx, Angular, Node, affected browser(s) and operating system(s): 15 | 16 | ## Other information: 17 | 18 | ## I would be willing to submit a PR to fix this issue 19 | 20 | [ ] Yes (Assistance is provided if you need help submitting a pull request) 21 | [ ] No 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Submit a Request For Consideration 4 | --- 5 | 6 | ## Describe any alternatives/workarounds you're currently using 7 | 8 | ## Other information: 9 | 10 | ## If accepted, I would be willing to submit a PR for this feature 11 | 12 | [ ] Yes (Assistance is provided if you need help submitting a pull request) 13 | [ ] No 14 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ## PR Checklist 2 | 3 | Please check if your PR fulfills the following requirements: 4 | 5 | - [ ] The commit message follows our [guidelines](https://github.com/rx-mind/angular-plugins/blob/master/CONTRIBUTING.md#commit-message-guidelines) 6 | - [ ] Tests for the changes have been added (for bug fixes / features) 7 | - [ ] Documentation has been added / updated (for bug fixes / features) 8 | 9 | ## PR Type 10 | 11 | What kind of change does this PR introduce? 12 | 13 | 14 | 15 | ``` 16 | [ ] Bugfix 17 | [ ] Feature 18 | [ ] Code style update (formatting, local variables) 19 | [ ] Refactoring (no functional changes, no api changes) 20 | [ ] Build related changes 21 | [ ] CI related changes 22 | [ ] Documentation content changes 23 | [ ] Other... Please describe: 24 | ``` 25 | 26 | ## What is the current behavior? 27 | 28 | 29 | 30 | Closes # 31 | 32 | ## What is the new behavior? 33 | 34 | ## Does this PR introduce a breaking change? 35 | 36 | ``` 37 | [ ] Yes 38 | [ ] No 39 | ``` 40 | 41 | 42 | 43 | ## Other information 44 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | 9 | jobs: 10 | checks: 11 | runs-on: ${{ matrix.os }} 12 | env: 13 | NX_BRANCH: ${{ github.event.number || github.ref }} 14 | NX_RUN_GROUP: ${{ github.run_id }} 15 | strategy: 16 | matrix: 17 | os: [ubuntu-latest] 18 | node-version: [14.x] 19 | steps: 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v1 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | - uses: actions/checkout@v2 25 | - uses: actions/cache@v1 26 | id: workspace-cache 27 | with: 28 | path: node_modules 29 | key: ${{ runner.os }}-${{ matrix.node-version }}-workspace-${{ hashFiles('**/yarn.lock') }} 30 | restore-keys: | 31 | ${{ runner.os }}-${{ matrix.node-version }}-workspace- 32 | - name: Install Dependencies 33 | run: yarn install --frozen-lockfile --non-interactive 34 | - name: Lint 35 | run: yarn lint 36 | - name: Test 37 | run: yarn test:coverage 38 | - name: Build 39 | run: yarn build 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.angular/cache 29 | /.sass-cache 30 | /connect.lock 31 | /coverage 32 | /libpeerconnection.log 33 | npm-debug.log 34 | yarn-error.log 35 | testem.log 36 | /typings 37 | 38 | # System Files 39 | .DS_Store 40 | Thumbs.db 41 | -------------------------------------------------------------------------------- /.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | yarn pre-commit 5 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Add files here to ignore them from prettier formatting 2 | 3 | /dist 4 | /coverage 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 100 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "angular.ng-template", 4 | "nrwl.angular-console", 5 | "esbenp.prettier-vscode", 6 | "firsttris.vscode-jest-runner", 7 | "dbaeumer.vscode-eslint" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | ## Setup 4 | 5 | ### Install Dependencies 6 | 7 | ``` 8 | yarn install --frozen-lockfile 9 | ``` 10 | 11 | ### Run Tests 12 | 13 | All: 14 | 15 | ``` 16 | yarn test 17 | ``` 18 | 19 | Affected: 20 | 21 | ``` 22 | yarn affected:test 23 | ``` 24 | 25 | ### Run Build 26 | 27 | All: 28 | 29 | ``` 30 | yarn build 31 | ``` 32 | 33 | Affected: 34 | 35 | ``` 36 | yarn affected:build 37 | ``` 38 | 39 | ### Run Lint 40 | 41 | All: 42 | 43 | ``` 44 | yarn lint 45 | ``` 46 | 47 | Affected: 48 | 49 | ``` 50 | yarn affected:lint 51 | ``` 52 | 53 | ## Coding Rules 54 | 55 | - All features or bug fixes must be covered by unit tests. 56 | - All public API methods must be documented. 57 | 58 | ## Commit Message Guidelines 59 | 60 | We have very precise rules over how our git commit messages can be formatted. This leads to **more 61 | readable messages** that are easy to follow when looking through the **project history**. But also, 62 | we use the git commit messages to **generate the Angular Plugins changelog**. 63 | 64 | ### Commit Message Format 65 | 66 | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special 67 | format that includes a **type**, a **scope** and a **subject**: 68 | 69 | ``` 70 | (): 71 | 72 | 73 | 74 |