@verisoft/store 19.0.0-rc001 → 20.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.eslintrc.json +43 -0
  2. package/README.md +418 -1
  3. package/jest.config.ts +22 -0
  4. package/ng-package.json +7 -0
  5. package/package.json +6 -20
  6. package/project.json +36 -0
  7. package/{index.d.ts → src/index.ts} +2 -0
  8. package/src/lib/binding-state/binding.actions.ts +76 -0
  9. package/src/lib/binding-state/binding.effects.ts +472 -0
  10. package/src/lib/detail-state/detail.actions.ts +89 -0
  11. package/src/lib/detail-state/detail.effects.ts +283 -0
  12. package/src/lib/detail-state/detail.models.ts +42 -0
  13. package/src/lib/detail-state/detail.reducer.ts +147 -0
  14. package/src/lib/table-state/actions.ts +93 -0
  15. package/src/lib/table-state/effects.ts +99 -0
  16. package/src/lib/table-state/models.ts +20 -0
  17. package/src/lib/table-state/reducers.ts +126 -0
  18. package/src/test-setup.ts +8 -0
  19. package/tsconfig.json +29 -0
  20. package/tsconfig.lib.json +17 -0
  21. package/tsconfig.lib.prod.json +9 -0
  22. package/tsconfig.spec.json +16 -0
  23. package/fesm2022/verisoft-store.mjs +0 -602
  24. package/fesm2022/verisoft-store.mjs.map +0 -1
  25. package/lib/binding-state/binding.actions.d.ts +0 -43
  26. package/lib/binding-state/binding.effects.d.ts +0 -45
  27. package/lib/detail-state/detail.actions.d.ts +0 -52
  28. package/lib/detail-state/detail.effects.d.ts +0 -52
  29. package/lib/detail-state/detail.models.d.ts +0 -27
  30. package/lib/detail-state/detail.reducer.d.ts +0 -4
  31. package/lib/table-state/actions.d.ts +0 -48
  32. package/lib/table-state/effects.d.ts +0 -25
  33. package/lib/table-state/models.d.ts +0 -9
  34. package/lib/table-state/reducers.d.ts +0 -3
@@ -0,0 +1,126 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { ActionCreator, ReducerTypes, createReducer, on } from '@ngrx/store';
3
+ import {
4
+ createGetPageTableAction,
5
+ createStaticFilterTableAction,
6
+ createDataLoadSuccessTableAction,
7
+ createDataLoadErrorTableAction,
8
+ createFilterPageTableAction,
9
+ createDestroyTableAction,
10
+ createSelectItemsTableAction,
11
+ createChangePageSizeTableAction,
12
+ createResetTableFilterAction,
13
+ } from './actions';
14
+ import { INITIAL_TABLE_STATE, TableState } from './models';
15
+
16
+ export function createTablePageReducers<
17
+ T = any,
18
+ TState extends TableState<T> = TableState<T>
19
+ >(
20
+ tableRepository: string,
21
+ initialState: TState = INITIAL_TABLE_STATE as unknown as TState,
22
+ ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]
23
+ ) {
24
+ return createReducer(
25
+ initialState,
26
+ on(
27
+ createGetPageTableAction(tableRepository),
28
+ (state, { page, id, filter, sort }) => {
29
+ return {
30
+ ...state,
31
+ requestParams: {
32
+ ...state.requestParams,
33
+ filter: filter ?? state.requestParams.filter,
34
+ sort: sort ?? state.requestParams.sort,
35
+ id: id ?? state.requestParams.id,
36
+ page,
37
+ },
38
+ dataLoading: true,
39
+ submitted: true,
40
+ };
41
+ }
42
+ ),
43
+
44
+ on(createStaticFilterTableAction(tableRepository), (state, { filter }) => {
45
+ return {
46
+ ...state,
47
+ requestParams: {
48
+ ...state.requestParams,
49
+ filter: {
50
+ ...state.requestParams?.filter,
51
+ filter,
52
+ },
53
+ },
54
+ };
55
+ }),
56
+
57
+ on(createResetTableFilterAction(tableRepository), (state) => {
58
+ return {
59
+ ...state,
60
+ requestParams: {
61
+ ...state.requestParams,
62
+ filter: undefined,
63
+ page: 1
64
+ },
65
+ }
66
+ }),
67
+
68
+ on(
69
+ createDataLoadSuccessTableAction(tableRepository),
70
+ (state, { gPage }) => {
71
+ return {
72
+ ...state,
73
+ gPage,
74
+ dataLoading: false,
75
+ };
76
+ }
77
+ ),
78
+
79
+ on(createDataLoadErrorTableAction(tableRepository), (state, { error }) => {
80
+ return {
81
+ ...state,
82
+ error,
83
+ dataLoading: false,
84
+ };
85
+ }),
86
+
87
+ on(createFilterPageTableAction(tableRepository), (state, { filter }) => {
88
+ return {
89
+ ...state,
90
+ requestParams: {
91
+ ...state.requestParams,
92
+ filter: filter,
93
+ page: 1,
94
+ },
95
+ dataLoading: true,
96
+ };
97
+ }),
98
+
99
+ on(createDestroyTableAction(tableRepository), () => {
100
+ return {
101
+ ...(initialState as any),
102
+ };
103
+ }),
104
+
105
+ on(
106
+ createSelectItemsTableAction(tableRepository),
107
+ (state, { selectedItems }) => {
108
+ return {
109
+ ...state,
110
+ selectedItems,
111
+ };
112
+ }
113
+ ),
114
+
115
+ on(createChangePageSizeTableAction(tableRepository), (state, { size }) => {
116
+ return {
117
+ ...state,
118
+ requestParams: {
119
+ ...state.requestParams,
120
+ size,
121
+ }
122
+ }
123
+ }),
124
+ ...ons
125
+ );
126
+ }
@@ -0,0 +1,8 @@
1
+ // @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment
2
+ globalThis.ngJest = {
3
+ testEnvironmentOptions: {
4
+ errorOnUnknownElements: true,
5
+ errorOnUnknownProperties: true,
6
+ },
7
+ };
8
+ import 'jest-preset-angular/setup-jest';
package/tsconfig.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2022",
4
+ "useDefineForClassFields": false,
5
+ "forceConsistentCasingInFileNames": true,
6
+ "strict": true,
7
+ "noImplicitOverride": true,
8
+ "noPropertyAccessFromIndexSignature": true,
9
+ "noImplicitReturns": true,
10
+ "noFallthroughCasesInSwitch": true
11
+ },
12
+ "files": [],
13
+ "include": [],
14
+ "references": [
15
+ {
16
+ "path": "./tsconfig.lib.json"
17
+ },
18
+ {
19
+ "path": "./tsconfig.spec.json"
20
+ }
21
+ ],
22
+ "extends": "../../../tsconfig.base.json",
23
+ "angularCompilerOptions": {
24
+ "enableI18nLegacyMessageIdFormat": false,
25
+ "strictInjectionParameters": true,
26
+ "strictInputAccessModifiers": true,
27
+ "strictTemplates": true
28
+ }
29
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../../dist/out-tsc",
5
+ "declaration": true,
6
+ "declarationMap": true,
7
+ "inlineSources": true,
8
+ "types": []
9
+ },
10
+ "exclude": [
11
+ "src/**/*.spec.ts",
12
+ "src/test-setup.ts",
13
+ "jest.config.ts",
14
+ "src/**/*.test.ts"
15
+ ],
16
+ "include": ["src/**/*.ts"]
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.lib.json",
3
+ "compilerOptions": {
4
+ "declarationMap": false
5
+ },
6
+ "angularCompilerOptions": {
7
+ "compilationMode": "partial"
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../../dist/out-tsc",
5
+ "module": "commonjs",
6
+ "target": "es2016",
7
+ "types": ["jest", "node"]
8
+ },
9
+ "files": ["src/test-setup.ts"],
10
+ "include": [
11
+ "jest.config.ts",
12
+ "src/**/*.test.ts",
13
+ "src/**/*.spec.ts",
14
+ "src/**/*.d.ts"
15
+ ]
16
+ }