@lls/store 24.1.57-9de21c94 → 24.1.57-db9af210

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 (3) hide show
  1. package/README.md +6 -0
  2. package/lib/index.js +347 -29
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -3,6 +3,12 @@
3
3
  Represents lls models
4
4
 
5
5
  Centralizes
6
+
6
7
  - model types
7
8
  - selectors
8
9
 
10
+ Only handles
11
+
12
+ - entities
13
+ - auth
14
+
package/lib/index.js CHANGED
@@ -33,6 +33,253 @@ var init_define_import_meta = __esm({
33
33
  }
34
34
  });
35
35
 
36
+ // ../../node_modules/.pnpm/reselect@4.1.8/node_modules/reselect/lib/defaultMemoize.js
37
+ var require_defaultMemoize = __commonJS({
38
+ "../../node_modules/.pnpm/reselect@4.1.8/node_modules/reselect/lib/defaultMemoize.js"(exports) {
39
+ "use strict";
40
+ init_define_import_meta();
41
+ Object.defineProperty(exports, "__esModule", {
42
+ value: true
43
+ });
44
+ exports.createCacheKeyComparator = createCacheKeyComparator;
45
+ exports.defaultEqualityCheck = void 0;
46
+ exports.defaultMemoize = defaultMemoize;
47
+ var NOT_FOUND = "NOT_FOUND";
48
+ function createSingletonCache(equals) {
49
+ var entry;
50
+ return {
51
+ get: function get(key) {
52
+ if (entry && equals(entry.key, key)) {
53
+ return entry.value;
54
+ }
55
+ return NOT_FOUND;
56
+ },
57
+ put: function put(key, value) {
58
+ entry = {
59
+ key,
60
+ value
61
+ };
62
+ },
63
+ getEntries: function getEntries() {
64
+ return entry ? [entry] : [];
65
+ },
66
+ clear: function clear() {
67
+ entry = void 0;
68
+ }
69
+ };
70
+ }
71
+ function createLruCache(maxSize, equals) {
72
+ var entries = [];
73
+ function get(key) {
74
+ var cacheIndex = entries.findIndex(function(entry2) {
75
+ return equals(key, entry2.key);
76
+ });
77
+ if (cacheIndex > -1) {
78
+ var entry = entries[cacheIndex];
79
+ if (cacheIndex > 0) {
80
+ entries.splice(cacheIndex, 1);
81
+ entries.unshift(entry);
82
+ }
83
+ return entry.value;
84
+ }
85
+ return NOT_FOUND;
86
+ }
87
+ function put(key, value) {
88
+ if (get(key) === NOT_FOUND) {
89
+ entries.unshift({
90
+ key,
91
+ value
92
+ });
93
+ if (entries.length > maxSize) {
94
+ entries.pop();
95
+ }
96
+ }
97
+ }
98
+ function getEntries() {
99
+ return entries;
100
+ }
101
+ function clear() {
102
+ entries = [];
103
+ }
104
+ return {
105
+ get,
106
+ put,
107
+ getEntries,
108
+ clear
109
+ };
110
+ }
111
+ var defaultEqualityCheck = function defaultEqualityCheck2(a, b) {
112
+ return a === b;
113
+ };
114
+ exports.defaultEqualityCheck = defaultEqualityCheck;
115
+ function createCacheKeyComparator(equalityCheck) {
116
+ return function areArgumentsShallowlyEqual(prev, next) {
117
+ if (prev === null || next === null || prev.length !== next.length) {
118
+ return false;
119
+ }
120
+ var length = prev.length;
121
+ for (var i = 0; i < length; i++) {
122
+ if (!equalityCheck(prev[i], next[i])) {
123
+ return false;
124
+ }
125
+ }
126
+ return true;
127
+ };
128
+ }
129
+ function defaultMemoize(func, equalityCheckOrOptions) {
130
+ var providedOptions = typeof equalityCheckOrOptions === "object" ? equalityCheckOrOptions : {
131
+ equalityCheck: equalityCheckOrOptions
132
+ };
133
+ var _providedOptions$equa = providedOptions.equalityCheck, equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa, _providedOptions$maxS = providedOptions.maxSize, maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS, resultEqualityCheck = providedOptions.resultEqualityCheck;
134
+ var comparator = createCacheKeyComparator(equalityCheck);
135
+ var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator);
136
+ function memoized() {
137
+ var value = cache.get(arguments);
138
+ if (value === NOT_FOUND) {
139
+ value = func.apply(null, arguments);
140
+ if (resultEqualityCheck) {
141
+ var entries = cache.getEntries();
142
+ var matchingEntry = entries.find(function(entry) {
143
+ return resultEqualityCheck(entry.value, value);
144
+ });
145
+ if (matchingEntry) {
146
+ value = matchingEntry.value;
147
+ }
148
+ }
149
+ cache.put(arguments, value);
150
+ }
151
+ return value;
152
+ }
153
+ memoized.clearCache = function() {
154
+ return cache.clear();
155
+ };
156
+ return memoized;
157
+ }
158
+ }
159
+ });
160
+
161
+ // ../../node_modules/.pnpm/reselect@4.1.8/node_modules/reselect/lib/index.js
162
+ var require_lib = __commonJS({
163
+ "../../node_modules/.pnpm/reselect@4.1.8/node_modules/reselect/lib/index.js"(exports) {
164
+ "use strict";
165
+ init_define_import_meta();
166
+ Object.defineProperty(exports, "__esModule", {
167
+ value: true
168
+ });
169
+ exports.createSelector = void 0;
170
+ exports.createSelectorCreator = createSelectorCreator;
171
+ exports.createStructuredSelector = void 0;
172
+ Object.defineProperty(exports, "defaultEqualityCheck", {
173
+ enumerable: true,
174
+ get: function get() {
175
+ return _defaultMemoize.defaultEqualityCheck;
176
+ }
177
+ });
178
+ Object.defineProperty(exports, "defaultMemoize", {
179
+ enumerable: true,
180
+ get: function get() {
181
+ return _defaultMemoize.defaultMemoize;
182
+ }
183
+ });
184
+ var _defaultMemoize = require_defaultMemoize();
185
+ function getDependencies(funcs) {
186
+ var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;
187
+ if (!dependencies.every(function(dep) {
188
+ return typeof dep === "function";
189
+ })) {
190
+ var dependencyTypes = dependencies.map(function(dep) {
191
+ return typeof dep === "function" ? "function " + (dep.name || "unnamed") + "()" : typeof dep;
192
+ }).join(", ");
193
+ throw new Error("createSelector expects all input-selectors to be functions, but received the following types: [" + dependencyTypes + "]");
194
+ }
195
+ return dependencies;
196
+ }
197
+ function createSelectorCreator(memoize) {
198
+ for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
199
+ memoizeOptionsFromArgs[_key - 1] = arguments[_key];
200
+ }
201
+ var createSelector3 = function createSelector4() {
202
+ for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
203
+ funcs[_key2] = arguments[_key2];
204
+ }
205
+ var _recomputations = 0;
206
+ var _lastResult;
207
+ var directlyPassedOptions = {
208
+ memoizeOptions: void 0
209
+ };
210
+ var resultFunc = funcs.pop();
211
+ if (typeof resultFunc === "object") {
212
+ directlyPassedOptions = resultFunc;
213
+ resultFunc = funcs.pop();
214
+ }
215
+ if (typeof resultFunc !== "function") {
216
+ throw new Error("createSelector expects an output function after the inputs, but received: [" + typeof resultFunc + "]");
217
+ }
218
+ var _directlyPassedOption = directlyPassedOptions, _directlyPassedOption2 = _directlyPassedOption.memoizeOptions, memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2;
219
+ var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];
220
+ var dependencies = getDependencies(funcs);
221
+ var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {
222
+ _recomputations++;
223
+ return resultFunc.apply(null, arguments);
224
+ }].concat(finalMemoizeOptions));
225
+ var selector = memoize(function dependenciesChecker() {
226
+ var params = [];
227
+ var length = dependencies.length;
228
+ for (var i = 0; i < length; i++) {
229
+ params.push(dependencies[i].apply(null, arguments));
230
+ }
231
+ _lastResult = memoizedResultFunc.apply(null, params);
232
+ return _lastResult;
233
+ });
234
+ Object.assign(selector, {
235
+ resultFunc,
236
+ memoizedResultFunc,
237
+ dependencies,
238
+ lastResult: function lastResult() {
239
+ return _lastResult;
240
+ },
241
+ recomputations: function recomputations() {
242
+ return _recomputations;
243
+ },
244
+ resetRecomputations: function resetRecomputations() {
245
+ return _recomputations = 0;
246
+ }
247
+ });
248
+ return selector;
249
+ };
250
+ return createSelector3;
251
+ }
252
+ var createSelector2 = /* @__PURE__ */ createSelectorCreator(_defaultMemoize.defaultMemoize);
253
+ exports.createSelector = createSelector2;
254
+ var createStructuredSelector = function createStructuredSelector2(selectors, selectorCreator) {
255
+ if (selectorCreator === void 0) {
256
+ selectorCreator = createSelector2;
257
+ }
258
+ if (typeof selectors !== "object") {
259
+ throw new Error("createStructuredSelector expects first argument to be an object " + ("where each property is a selector, instead received a " + typeof selectors));
260
+ }
261
+ var objectKeys = Object.keys(selectors);
262
+ var resultSelector = selectorCreator(
263
+ // @ts-ignore
264
+ objectKeys.map(function(key) {
265
+ return selectors[key];
266
+ }),
267
+ function() {
268
+ for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
269
+ values[_key3] = arguments[_key3];
270
+ }
271
+ return values.reduce(function(composition, value, index) {
272
+ composition[objectKeys[index]] = value;
273
+ return composition;
274
+ }, {});
275
+ }
276
+ );
277
+ return resultSelector;
278
+ };
279
+ exports.createStructuredSelector = createStructuredSelector;
280
+ }
281
+ });
282
+
36
283
  // ../../node_modules/.pnpm/normalizr@3.6.2/node_modules/normalizr/dist/normalizr.js
37
284
  var require_normalizr = __commonJS({
38
285
  "../../node_modules/.pnpm/normalizr@3.6.2/node_modules/normalizr/dist/normalizr.js"(exports) {
@@ -488,27 +735,65 @@ init_define_import_meta();
488
735
 
489
736
  // src/selectors/school.ts
490
737
  init_define_import_meta();
491
- import {
492
- createSearchSelector,
493
- filterEntitiesSimpleFieldByValues,
494
- makeGetAllEntities,
495
- makeGetEntityById
496
- } from "@lls/utils";
738
+ import { filterEntitiesSimpleFieldByValues } from "@lls/utils";
739
+ import _2 from "lodash/fp.js";
740
+
741
+ // src/selectors/crud.ts
742
+ init_define_import_meta();
743
+ import { createSearchSelector, makeGetAllEntities, makeGetEntityById } from "@lls/utils";
497
744
  import _ from "lodash/fp.js";
498
- var getSchools = makeGetAllEntities("schools");
499
- var getSchool = makeGetEntityById("schools");
500
- var searchSchools = createSearchSelector(
501
- getSchools,
502
- (_state, params) => params,
503
- (schools, { ids }) => {
504
- return _.flow(filterEntitiesSimpleFieldByValues("id", ids))(schools);
505
- }
745
+ var crud = (entityName, { search: search3 }) => {
746
+ const getElements = makeGetAllEntities(entityName);
747
+ const makeSearchElements = () => createSearchSelector(
748
+ getElements,
749
+ (_state, params) => params,
750
+ (elements, params) => search3(params)(elements)
751
+ );
752
+ const methodName = _.capitalize(entityName);
753
+ const getElementById = makeGetEntityById(entityName);
754
+ const back = {
755
+ [`get${methodName}`]: getElements,
756
+ [`search${methodName}`]: makeSearchElements(),
757
+ [`get${methodName.replace(/s$/, "")}`]: getElementById,
758
+ [`makeSearch${methodName}`]: makeSearchElements
759
+ };
760
+ return back;
761
+ };
762
+
763
+ // src/selectors/school.ts
764
+ var search = ({ ids }) => _2.flow(filterEntitiesSimpleFieldByValues("id", ids));
765
+ var { getSchools, getSchool, searchSchools, makeSearchSchools } = crud("schools", {
766
+ search
767
+ });
768
+
769
+ // src/selectors/user.ts
770
+ init_define_import_meta();
771
+ var import_reselect = __toESM(require_lib(), 1);
772
+ import { filterEntitiesArrayFieldByValues, filterEntitiesSimpleFieldByValues as filterEntitiesSimpleFieldByValues2 } from "@lls/utils";
773
+ import _4 from "lodash/fp.js";
774
+
775
+ // src/selectors/auth.ts
776
+ init_define_import_meta();
777
+ import _3 from "lodash/fp.js";
778
+ var getAuth = _3.get("auth");
779
+ var getIsLogged = _3.flow(_3.get("auth.id"), _3.negate(_3.isNil));
780
+ var getToken = _3.get("auth.token");
781
+
782
+ // src/selectors/user.ts
783
+ var search2 = ({ ids, schoolIds }) => _4.flow(filterEntitiesArrayFieldByValues("schools", schoolIds), filterEntitiesSimpleFieldByValues2("id", ids));
784
+ var { getUsers, getUser, searchUsers, makeSearchUsers } = crud("users", {
785
+ search: search2
786
+ });
787
+ var getCurrentUser = (0, import_reselect.createSelector)(
788
+ getAuth,
789
+ getUsers,
790
+ (auth2, users) => users?.find((user2) => user2?.id === auth2?.id)
506
791
  );
507
792
 
508
793
  // src/reducers/entities.ts
509
794
  init_define_import_meta();
510
795
  import { makeReducer } from "@lls/utils";
511
- import _2 from "lodash/fp.js";
796
+ import _5 from "lodash/fp.js";
512
797
 
513
798
  // src/actions/index.ts
514
799
  init_define_import_meta();
@@ -517,33 +802,37 @@ var actionTypes = {
517
802
  DELETE_ENTITY: "DELETE_ENTITY",
518
803
  UPDATE_ENTITY: "UPDATE_ENTITY",
519
804
  SET_ENTITY: "SET_ENTITY",
520
- SET_ENTITIES: "SET_ENTITIES"
805
+ SET_ENTITIES: "SET_ENTITIES",
806
+ RESET_AUTH: "RESET_AUTH",
807
+ SET_AUTH: "SET_AUTH"
521
808
  };
522
809
  var deleteEntity = makeActionCreator(actionTypes.DELETE_ENTITY);
523
810
  var updateEntity = makeActionCreator(actionTypes.UPDATE_ENTITY);
524
811
  var setEntity = makeActionCreator(actionTypes.SET_ENTITY);
525
812
  var setEntities = makeActionCreator(actionTypes.SET_ENTITIES);
813
+ var setAuth = makeActionCreator(actionTypes.SET_AUTH);
814
+ var resetAuth = makeActionCreator(actionTypes.RESET_AUTH);
526
815
 
527
816
  // src/reducers/entities.ts
528
817
  var deleteEntityReducer = (state, payload) => {
529
818
  const { path } = payload;
530
- return _2.omit(path, state);
819
+ return _5.omit(path, state);
531
820
  };
532
821
  var updateEntityReducer = (state, payload) => {
533
822
  const { path, entity } = payload;
534
- const currentEntity = _2.get(path, state);
535
- return _2.set(path, _2.merge(currentEntity, entity), state);
823
+ const currentEntity = _5.get(path, state);
824
+ return _5.set(path, _5.merge(currentEntity, entity), state);
536
825
  };
537
826
  var setEntityReducer = (state, payload) => {
538
827
  const { path, entity } = payload;
539
- return _2.set(path, entity, state);
828
+ return _5.set(path, entity, state);
540
829
  };
541
830
  var shallowAssign = (old, next, transform) => {
542
831
  let updated = false;
543
- const merged = _2.flow(
544
- _2.toPairs,
545
- _2.reduce((memo, [key, val]) => {
546
- if (_2.isEmpty(val)) return memo;
832
+ const merged = _5.flow(
833
+ _5.toPairs,
834
+ _5.reduce((memo, [key, val]) => {
835
+ if (_5.isEmpty(val)) return memo;
547
836
  if (!old[key]) {
548
837
  updated = true;
549
838
  memo[key] = val;
@@ -556,7 +845,7 @@ var shallowAssign = (old, next, transform) => {
556
845
  return memo;
557
846
  }
558
847
  return memo;
559
- }, _2.clone(old))
848
+ }, _5.clone(old))
560
849
  )(next);
561
850
  return updated ? merged : old;
562
851
  };
@@ -565,7 +854,7 @@ var setEntitiesReducer = (state, payload) => {
565
854
  return shallowAssign(
566
855
  entityKind,
567
856
  nextEntityKind,
568
- (oldEntity, nextEntity) => _2.isEqual(oldEntity, nextEntity) ? oldEntity : _2.assign(oldEntity, nextEntity)
857
+ (oldEntity, nextEntity) => _5.isEqual(oldEntity, nextEntity) ? oldEntity : _5.assign(oldEntity, nextEntity)
569
858
  );
570
859
  });
571
860
  };
@@ -580,10 +869,31 @@ var entities = makeReducer(
580
869
  );
581
870
  var entities_default = entities;
582
871
 
872
+ // src/reducers/auth.ts
873
+ init_define_import_meta();
874
+ import { makeReducer as makeReducer2 } from "@lls/utils";
875
+ import _6 from "lodash/fp.js";
876
+ var initialState = {
877
+ id: void 0,
878
+ role: null,
879
+ token: null,
880
+ isStudent: null,
881
+ isTeacher: null,
882
+ isPremium: null,
883
+ userPages: null,
884
+ username: null,
885
+ llsUserId: null
886
+ };
887
+ var auth = makeReducer2(initialState, {
888
+ [actionTypes.SET_AUTH]: _6.assign,
889
+ [actionTypes.RESET_AUTH]: _6.constant(initialState)
890
+ });
891
+ var auth_default = auth;
892
+
583
893
  // src/schema/index.ts
584
894
  init_define_import_meta();
585
895
  var import_normalizr = __toESM(require_normalizr(), 1);
586
- import _3 from "lodash/fp.js";
896
+ import _7 from "lodash/fp.js";
587
897
  var document = new import_normalizr.schema.Entity("documents", {}, { idAttribute: "resourceId" });
588
898
  var subject = new import_normalizr.schema.Entity("subjects");
589
899
  var level = new import_normalizr.schema.Entity("levels");
@@ -768,12 +1078,20 @@ var querySchema = {
768
1078
  }
769
1079
  }
770
1080
  };
771
- var normalizeData = _3.flow((data) => (0, import_normalizr.normalize)(data, querySchema));
1081
+ var normalizeData = _7.flow((data) => (0, import_normalizr.normalize)(data, querySchema));
772
1082
  export {
1083
+ auth_default as authReducer,
773
1084
  entities_default as entitiesReducer,
1085
+ getCurrentUser,
774
1086
  getSchool,
775
1087
  getSchools,
1088
+ getUser,
1089
+ getUsers,
1090
+ makeSearchSchools,
1091
+ makeSearchUsers,
776
1092
  normalizeData,
777
1093
  querySchema,
778
- searchSchools
1094
+ searchSchools,
1095
+ searchUsers,
1096
+ setEntitiesReducer
779
1097
  };
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@lls/store",
3
3
  "description": "model de donnée et selecteurs",
4
4
  "homepage": "https://github.com/lelivrescolaire/monorepo/tree/dev/libs/store",
5
- "version": "24.1.57-9de21c94",
5
+ "version": "24.1.57-db9af210",
6
6
  "type": "module",
7
7
  "types": "./lib/builttypes/store/src/index.d.ts",
8
8
  "exports": {
@@ -41,8 +41,8 @@
41
41
  "vite": "5.3.3",
42
42
  "vite-tsconfig-paths": "4.3.2",
43
43
  "vitest": "2.0.0",
44
- "@lls/utils": "24.1.57-9de21c94",
45
- "@lls/vitescripts": "24.1.57-9de21c94"
44
+ "@lls/utils": "24.1.57-db9af210",
45
+ "@lls/vitescripts": "24.1.57-db9af210"
46
46
  },
47
47
  "license": "ISC",
48
48
  "dependencies": {