@inseefr/lunatic 0.2.2-experimental → 0.2.3-prisme

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 (219) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +25 -23
  3. package/lib/index.js +1191 -475
  4. package/lib/index.js.map +1 -1
  5. package/package.json +174 -172
  6. package/src/components/breadcrumb/breadcrumb.scss +22 -22
  7. package/src/components/checkbox/boolean.js +172 -172
  8. package/src/components/checkbox/checkbox.scss +73 -73
  9. package/src/components/checkbox/group.js +231 -231
  10. package/src/components/checkbox/one.js +11 -11
  11. package/src/components/component-wrapper/controls/component.js +70 -0
  12. package/src/components/component-wrapper/controls/controls.scss +6 -0
  13. package/src/components/component-wrapper/controls/index.js +1 -0
  14. package/src/components/component-wrapper/controls/validators/datepicker.js +44 -0
  15. package/src/components/component-wrapper/controls/validators/index.js +16 -0
  16. package/src/components/component-wrapper/controls/validators/input-number.js +23 -0
  17. package/src/components/{missing-wrapper → component-wrapper}/index.js +0 -0
  18. package/src/components/component-wrapper/missing/component.js +200 -0
  19. package/src/components/component-wrapper/missing/index.js +1 -0
  20. package/src/components/{missing-wrapper → component-wrapper/missing}/missing.scss +32 -32
  21. package/src/components/component-wrapper/wrapper.js +23 -0
  22. package/src/components/components.js +1 -0
  23. package/src/components/datepicker/component.js +26 -11
  24. package/src/components/declarations/component.js +46 -46
  25. package/src/components/declarations/declarations.scss +40 -40
  26. package/src/components/declarations/wrappers/input-declarations-wrapper.js +328 -274
  27. package/src/components/declarations/wrappers/simple-declarations-wrapper.js +54 -54
  28. package/src/components/dropdown/commons/actions.js +65 -56
  29. package/src/components/dropdown/commons/children-to-option.js +9 -9
  30. package/src/components/dropdown/commons/cleaner-callbacks.js +58 -58
  31. package/src/components/dropdown/commons/components/dropdown-container.js +29 -29
  32. package/src/components/dropdown/commons/components/dropdown.js +204 -183
  33. package/src/components/dropdown/commons/event-callbacks/on-mousedown-callback.js +15 -15
  34. package/src/components/dropdown/commons/reducer.js +3 -0
  35. package/src/components/dropdown/commons/tools/index.js +17 -17
  36. package/src/components/dropdown/component.js +135 -135
  37. package/src/components/dropdown/dropdown-edit/dropdown-edit.js +194 -185
  38. package/src/components/dropdown/dropdown-edit/index.js +11 -11
  39. package/src/components/dropdown/dropdown-simple/dropdown.js +173 -164
  40. package/src/components/dropdown/dropdown-simple/index.js +20 -20
  41. package/src/components/dropdown/dropdown.scss +178 -178
  42. package/src/components/icon/icon.scss +15 -15
  43. package/src/components/index.js +2 -0
  44. package/src/components/index.scss +177 -175
  45. package/src/components/input/input-number.js +30 -54
  46. package/src/components/input/input.js +11 -11
  47. package/src/components/input/input.scss +31 -37
  48. package/src/components/loop/component.js +170 -169
  49. package/src/components/loop/loop.scss +13 -13
  50. package/src/components/loop/wrapper.js +1 -1
  51. package/src/components/loop-constructor/block/block.scss +10 -10
  52. package/src/components/loop-constructor/block/component.js +9 -9
  53. package/src/components/loop-constructor/roster/component.js +8 -8
  54. package/src/components/loop-constructor/wrapper/body-component.js +146 -125
  55. package/src/components/modal/component.js +36 -0
  56. package/src/components/modal/index.js +1 -0
  57. package/src/components/modal/modal.scss +33 -0
  58. package/src/components/progress-bar/progress-bar.scss +54 -54
  59. package/src/components/radio/component.js +9 -9
  60. package/src/components/radio/radio.scss +59 -59
  61. package/src/components/sequence/component.js +50 -50
  62. package/src/components/sequence/sequence.scss +10 -10
  63. package/src/components/subsequence/component.js +49 -49
  64. package/src/components/suggester/check-store.js +2 -4
  65. package/src/components/suggester/components/panel/default-option-renderer.js +27 -27
  66. package/src/components/suggester/components/panel/option-container.js +61 -61
  67. package/src/components/suggester/components/panel/panel.js +47 -47
  68. package/src/components/suggester/components/selection/default-label-renderer.js +31 -31
  69. package/src/components/suggester/components/selection/label.js +35 -35
  70. package/src/components/suggester/components/selection/selection.js +50 -50
  71. package/src/components/suggester/components/suggester-content.js +2 -2
  72. package/src/components/suggester/components/suggester.js +128 -88
  73. package/src/components/suggester/components/suggester.scss +101 -101
  74. package/src/components/suggester/default-style.scss +125 -125
  75. package/src/components/suggester/find-best-label/find-best-label.js +51 -49
  76. package/src/components/suggester/find-best-label/index.js +1 -1
  77. package/src/components/suggester/idb-suggester.js +73 -67
  78. package/src/components/suggester/lunatic-suggester.js +140 -137
  79. package/src/components/suggester/searching/create-searching.js +49 -47
  80. package/src/components/suggester/searching/index.js +1 -1
  81. package/src/components/suggester/state-management/actions.js +38 -38
  82. package/src/components/suggester/state-management/reducer/reduce-on-delete-search.js +11 -11
  83. package/src/components/suggester/state-management/reducer/reduce-on-init.js +29 -29
  84. package/src/components/suggester/state-management/reducer/reducer.js +38 -38
  85. package/src/components/suggester/suggester-wrapper.js +127 -121
  86. package/src/components/suggester-loader-widget/loader.js +67 -67
  87. package/src/components/suggester-loader-widget/widget.js +123 -123
  88. package/src/components/table/table.js +173 -171
  89. package/src/components/table/table.scss +26 -26
  90. package/src/components/textarea/component.js +11 -11
  91. package/src/components/textarea/textarea.scss +8 -8
  92. package/src/components/tooltip/tooltip.scss +30 -30
  93. package/src/stories/checkbox-boolean/data.json +78 -78
  94. package/src/stories/datepicker/data.json +3 -1
  95. package/src/stories/dropdown/README.md +44 -44
  96. package/src/stories/dropdown/data.json +98 -98
  97. package/src/stories/dropdown/dropdown.stories.js +89 -89
  98. package/src/stories/progress-bar/progress-bar.stories.js +24 -24
  99. package/src/stories/questionnaire/arithmetic-management.json +47 -0
  100. package/src/stories/questionnaire/arithmetic.json +247 -247
  101. package/src/stories/questionnaire/kish.json +275 -0
  102. package/src/stories/questionnaire/logement-queen.json +23390 -0
  103. package/src/stories/questionnaire/logement-s2.json +46028 -0
  104. package/src/stories/questionnaire/logement.json +20347 -26087
  105. package/src/stories/questionnaire/loop-and-controls.json +481 -0
  106. package/src/stories/questionnaire/questionnaire.stories.js +236 -138
  107. package/src/stories/questionnaire/update-external/data.json +1 -0
  108. package/src/stories/questionnaire/update-external/questionnaire.json +75 -0
  109. package/src/stories/suggester/README.md +46 -46
  110. package/src/stories/suggester/bailleurs-sociaux/fetch-bailleurs.js +15 -15
  111. package/src/stories/suggester/bailleurs-sociaux/index.js +2 -2
  112. package/src/stories/suggester/bailleurs-sociaux/option-bailleur-renderer.js +58 -58
  113. package/src/stories/suggester/bailleurs-sociaux/preloader.svg +51 -51
  114. package/src/stories/suggester/bailleurs-sociaux/theme.scss +22 -22
  115. package/src/stories/suggester/bailleurs-sociaux-2021/fetch-bailleurs.js +12 -0
  116. package/src/stories/suggester/bailleurs-sociaux-2021/index.js +1 -0
  117. package/src/stories/suggester/cog-communes/fetch-cog.js +15 -15
  118. package/src/stories/suggester/data-auto.json +232 -231
  119. package/src/stories/suggester/data-vtl.json +82 -82
  120. package/src/stories/suggester/data.json +169 -136
  121. package/src/stories/suggester/naf-rev2/index.js +2 -2
  122. package/src/stories/suggester/naf-rev2/option-naf-renderer.js +17 -17
  123. package/src/stories/suggester/suggester-workers.stories.js +226 -179
  124. package/src/stories/suggester/suggester.stories.js +138 -133
  125. package/src/stories/utils/orchestrator-split.js +119 -0
  126. package/src/stories/utils/orchestrator.js +119 -108
  127. package/src/tests/components/input-number.spec.js +6 -12
  128. package/src/tests/components/missing-wrapper.spec.js +0 -1
  129. package/src/tests/utils/lib/table/roster.spec.js +25 -25
  130. package/src/tests/utils/to-expose/handler/results/res-input-edited.json +1 -1
  131. package/src/utils/components/dragger/dragger.scss +7 -7
  132. package/src/utils/idb-tools/create-db-opener.js +43 -43
  133. package/src/utils/idb-tools/create-open-db.js +25 -25
  134. package/src/utils/idb-tools/idb-bulk-insert.js +96 -96
  135. package/src/utils/idb-tools/index.js +10 -10
  136. package/src/utils/idb-tools/insert-entity.js +15 -15
  137. package/src/utils/idb-tools/open-db.js +13 -13
  138. package/src/utils/idb-tools/open-or-create-db.js +34 -34
  139. package/src/utils/lib/controls/index.js +1 -0
  140. package/src/utils/lib/controls/utils.js +152 -0
  141. package/src/utils/lib/decorator/title-decorator.js +16 -16
  142. package/src/utils/lib/env.js +2 -2
  143. package/src/utils/lib/index.js +2 -0
  144. package/src/utils/lib/input-number.js +1 -1
  145. package/src/utils/lib/options-positioning.js +9 -9
  146. package/src/utils/lib/pagination/navigation/shared.js +12 -9
  147. package/src/utils/lib/prop-types/lines.js +6 -6
  148. package/src/utils/lib/responses.js +11 -9
  149. package/src/utils/lib/splitting.js +142 -0
  150. package/src/utils/lib/style.js +10 -10
  151. package/src/utils/store-tools/auto-load.js +74 -73
  152. package/src/utils/suggester-workers/append-to-index/append.js +25 -25
  153. package/src/utils/suggester-workers/append-to-index/append.worker.js +16 -16
  154. package/src/utils/suggester-workers/append-to-index/create-append-task.js +45 -43
  155. package/src/utils/suggester-workers/append-to-index/index.js +2 -2
  156. package/src/utils/suggester-workers/append-to-index/prepare-entities.js +61 -61
  157. package/src/utils/suggester-workers/append-to-index/store-messages.js +21 -21
  158. package/src/utils/suggester-workers/commons-tokenizer/create-entity-tokenizer.js +56 -0
  159. package/src/utils/suggester-workers/commons-tokenizer/create-fields-tokenizer.js +56 -0
  160. package/src/utils/suggester-workers/commons-tokenizer/create-filter-stop-words.js +17 -17
  161. package/src/utils/suggester-workers/commons-tokenizer/filters/compose-filters.js +10 -0
  162. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.js +17 -0
  163. package/src/utils/suggester-workers/commons-tokenizer/filters/create-filter-stop-words.spec.js +14 -0
  164. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.js +12 -0
  165. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-accents.spec.js +12 -0
  166. package/src/utils/suggester-workers/commons-tokenizer/{filter-double.js → filters/filter-double.js} +12 -12
  167. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-double.spec.js +20 -0
  168. package/src/utils/suggester-workers/commons-tokenizer/{filter-length.js → filters/filter-length.js} +7 -7
  169. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-length.spec.js +18 -0
  170. package/src/utils/suggester-workers/commons-tokenizer/{filter-stemmer.js → filters/filter-stemmer.js} +13 -13
  171. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-stemmer.spec.js +12 -0
  172. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.js +36 -0
  173. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-synonyms.spec.js +12 -0
  174. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.js +10 -0
  175. package/src/utils/suggester-workers/commons-tokenizer/filters/filter-to-lower.spec.js +12 -0
  176. package/src/utils/suggester-workers/commons-tokenizer/filters/index.js +2 -0
  177. package/src/utils/suggester-workers/commons-tokenizer/{stop-words.js → filters/stop-words.js} +118 -118
  178. package/src/utils/suggester-workers/commons-tokenizer/get-regexp-from-pattern.js +8 -8
  179. package/src/utils/suggester-workers/commons-tokenizer/get-stemmer.js +18 -18
  180. package/src/utils/suggester-workers/commons-tokenizer/index.js +9 -8
  181. package/src/utils/suggester-workers/commons-tokenizer/prepare-string-indexation.js +13 -9
  182. package/src/utils/suggester-workers/commons-tokenizer/soft-tokenizer.js +7 -7
  183. package/src/utils/suggester-workers/create-worker.js +56 -0
  184. package/src/utils/suggester-workers/find-best-label/find-best-label.js +39 -39
  185. package/src/utils/suggester-workers/find-best-label/find-best-label.worker.js +40 -40
  186. package/src/utils/suggester-workers/find-best-label/tokenize.js +30 -33
  187. package/src/utils/suggester-workers/find-best-label/tokenize.spec.js +19 -19
  188. package/src/utils/suggester-workers/searching/compute-score.js +33 -33
  189. package/src/utils/suggester-workers/searching/get-db.js +18 -18
  190. package/src/utils/suggester-workers/searching/index.js +1 -1
  191. package/src/utils/suggester-workers/searching/order/create-alphanumeric-orderer.js +20 -20
  192. package/src/utils/suggester-workers/searching/order/index.js +19 -19
  193. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/index.js +2 -2
  194. package/src/utils/suggester-workers/searching/query-parser/query-parser-soft.js +7 -0
  195. package/src/utils/suggester-workers/{query-parser → searching/query-parser}/query-parser-soft.spec.js +24 -24
  196. package/src/utils/suggester-workers/searching/query-parser/query-parser-tokenized.js +34 -0
  197. package/src/utils/suggester-workers/searching/resolve-query-parser.js +27 -27
  198. package/src/utils/suggester-workers/searching/search-in-index.js +17 -17
  199. package/src/utils/suggester-workers/searching/searching.js +70 -70
  200. package/src/utils/suggester-workers/searching/searching.worker.js +11 -11
  201. package/src/utils/to-expose/calculated-variables.js +113 -113
  202. package/src/utils/to-expose/handler.js +149 -112
  203. package/src/utils/to-expose/hooks/filter-components.js +27 -12
  204. package/src/utils/to-expose/hooks/index.js +2 -1
  205. package/src/utils/to-expose/hooks/lunatic-split.js +428 -0
  206. package/src/utils/to-expose/hooks/lunatic.js +284 -187
  207. package/src/utils/to-expose/index.js +1 -1
  208. package/src/utils/to-expose/init-questionnaire.js +164 -164
  209. package/src/utils/to-expose/interpret/vtl.js +18 -18
  210. package/src/utils/to-expose/state.js +66 -58
  211. package/src/components/missing-wrapper/component.js +0 -120
  212. package/src/components/missing-wrapper/wrapper.js +0 -10
  213. package/src/tests/utils/to-expose/hooks/use-lunatic.spec.js +0 -46
  214. package/src/utils/suggester-workers/commons-tokenizer/create-tokenizer.js +0 -103
  215. package/src/utils/suggester-workers/commons-tokenizer/filter-accents-to-lower.js +0 -9
  216. package/src/utils/suggester-workers/commons-tokenizer/filter-synonyms.js +0 -10
  217. package/src/utils/suggester-workers/query-parser/query-parser-soft.js +0 -7
  218. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.js +0 -31
  219. package/src/utils/suggester-workers/query-parser/query-parser-tokenized.spec.js +0 -32
@@ -139,32 +139,28 @@ describe('input-number', () => {
139
139
  <InputNumber {...defaultProps} handleChange={handleChange} min={1} />
140
140
  );
141
141
 
142
- expect(wrapperMin.find('.lunatic-input-number-errors').text()).toEqual(
143
- ''
144
- );
142
+ expect(wrapperMin.find('.lunatic-controls').text()).toEqual('');
145
143
  wrapperMin.find('input').simulate('change', {
146
144
  target: {
147
145
  value: '-1',
148
146
  },
149
147
  });
150
148
 
151
- expect(wrapperMin.find('.lunatic-input-number-errors').text()).toEqual(
149
+ expect(wrapperMin.find('.lunatic-controls').text()).toEqual(
152
150
  'La valeur doit être supérieure à 1'
153
151
  );
154
152
 
155
153
  const wrapperMax = shallow(
156
154
  <InputNumber {...defaultProps} handleChange={handleChange} max={9.8} />
157
155
  );
158
- expect(wrapperMax.find('.lunatic-input-number-errors').text()).toEqual(
159
- ''
160
- );
156
+ expect(wrapperMax.find('.lunatic-controls').text()).toEqual('');
161
157
  wrapperMax.find('input').simulate('change', {
162
158
  target: {
163
159
  value: '10',
164
160
  },
165
161
  });
166
162
 
167
- expect(wrapperMax.find('.lunatic-input-number-errors').text()).toEqual(
163
+ expect(wrapperMax.find('.lunatic-controls').text()).toEqual(
168
164
  'La valeur doit être inférieure à 9.8'
169
165
  );
170
166
 
@@ -176,9 +172,7 @@ describe('input-number', () => {
176
172
  max={10}
177
173
  />
178
174
  );
179
- expect(wrapperMinMax.find('.lunatic-input-number-errors').text()).toEqual(
180
- ''
181
- );
175
+ expect(wrapperMinMax.find('.lunatic-controls').text()).toEqual('');
182
176
 
183
177
  wrapperMinMax.find('input').simulate('change', {
184
178
  target: {
@@ -186,7 +180,7 @@ describe('input-number', () => {
186
180
  },
187
181
  });
188
182
 
189
- expect(wrapperMinMax.find('.lunatic-input-number-errors').text()).toEqual(
183
+ expect(wrapperMinMax.find('.lunatic-controls').text()).toEqual(
190
184
  'La valeur doit être comprise entre 1 et 10'
191
185
  );
192
186
  });
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { mount } from 'enzyme';
3
- import missingWrapper from 'components/missing-wrapper';
4
3
  import { Radio } from 'components';
5
4
 
6
5
  const handleChange = jest.fn();
@@ -1,25 +1,25 @@
1
- import { getRosterInitLines } from 'utils/lib';
2
-
3
- const emptyCells = [[{ response: { values: { '': null } } }]];
4
- const cells = [
5
- [
6
- { response: { values: { '': 'ok' } } },
7
- { response: { values: { '': 'ok2' } } },
8
- ],
9
- [{ response: { values: { '': 'ok' } } }],
10
- [],
11
- [{ response: { values: { '': null } } }],
12
- [{ response: { values: { '1': 'ok', '2': 'ok2' } } }],
13
- ];
14
-
15
- describe('roster utils', () => {
16
- describe('getRosterInitLines', () => {
17
- it('should return 0', () => {
18
- expect(getRosterInitLines()).toEqual(0);
19
- expect(getRosterInitLines(emptyCells)).toEqual(0);
20
- });
21
- it('should return 2', () => {
22
- expect(getRosterInitLines(cells)).toEqual(3);
23
- });
24
- });
25
- });
1
+ import { getRosterInitLines } from 'utils/lib';
2
+
3
+ const emptyCells = [[{ response: { values: { '': null } } }]];
4
+ const cells = [
5
+ [
6
+ { response: { values: { '': 'ok' } } },
7
+ { response: { values: { '': 'ok2' } } },
8
+ ],
9
+ [{ response: { values: { '': 'ok' } } }],
10
+ [],
11
+ [{ response: { values: { '': null } } }],
12
+ [{ response: { values: { '1': 'ok', '2': 'ok2' } } }],
13
+ ];
14
+
15
+ describe('roster utils', () => {
16
+ describe('getRosterInitLines', () => {
17
+ it('should return 0', () => {
18
+ expect(getRosterInitLines()).toEqual(0);
19
+ expect(getRosterInitLines(emptyCells)).toEqual(0);
20
+ });
21
+ it('should return 2', () => {
22
+ expect(getRosterInitLines(cells)).toEqual(3);
23
+ });
24
+ });
25
+ });
@@ -98,7 +98,7 @@
98
98
  "CALCULATED": {
99
99
  "Test": {
100
100
  "expression": "inputOk || \" ok\"",
101
- "value": "My input ok",
101
+ "value": "My new input ok",
102
102
  "bindingDependencies": ["inputOk"]
103
103
  }
104
104
  },
@@ -1,8 +1,8 @@
1
- .lunatic-dragger {
2
- display: inline-block;;
3
- width: 100%;
4
- height: 100%;
5
- -moz-user-select: -moz-none;
6
- -khtml-user-select: none;
7
- -webkit-user-select: none;
1
+ .lunatic-dragger {
2
+ display: inline-block;;
3
+ width: 100%;
4
+ height: 100%;
5
+ -moz-user-select: -moz-none;
6
+ -khtml-user-select: none;
7
+ -webkit-user-select: none;
8
8
  }
@@ -1,43 +1,43 @@
1
- import getIDB from './get-idb';
2
-
3
- const IDB_REF = getIDB();
4
-
5
- function onSuccessDefault(e, resolve) {
6
- resolve(e.result);
7
- }
8
-
9
- function onUpgradeNeededDefault() {
10
- throw new Error('Upgrade needed hook required!');
11
- }
12
-
13
- function onErrorDefault(e, _, reject) {
14
- reject(e.error);
15
- }
16
-
17
- function createDbOpener({
18
- onSuccess = onSuccessDefault,
19
- onUpgradeNeeded = onUpgradeNeededDefault,
20
- onError = onErrorDefault,
21
- } = {}) {
22
- return function (name, version = 1) {
23
- return new Promise((resolve, reject) => {
24
- if (!IDB_REF) {
25
- reject('indexedDb not supported !');
26
- }
27
- const request = IDB_REF.open(name, version);
28
- request.onupgradeneeded = function (e) {
29
- onUpgradeNeeded(e, resolve, reject);
30
- };
31
-
32
- request.onsuccess = function (e) {
33
- onSuccess(e, resolve, reject);
34
- };
35
-
36
- request.onerror = function (e) {
37
- onError(e, resolve, reject);
38
- };
39
- });
40
- };
41
- }
42
-
43
- export default createDbOpener;
1
+ import getIDB from './get-idb';
2
+
3
+ const IDB_REF = getIDB();
4
+
5
+ function onSuccessDefault(e, resolve) {
6
+ resolve(e.result);
7
+ }
8
+
9
+ function onUpgradeNeededDefault() {
10
+ throw new Error('Upgrade needed hook required!');
11
+ }
12
+
13
+ function onErrorDefault(e, _, reject) {
14
+ reject(e.error);
15
+ }
16
+
17
+ function createDbOpener({
18
+ onSuccess = onSuccessDefault,
19
+ onUpgradeNeeded = onUpgradeNeededDefault,
20
+ onError = onErrorDefault,
21
+ } = {}) {
22
+ return function (name, version = 1) {
23
+ return new Promise((resolve, reject) => {
24
+ if (!IDB_REF) {
25
+ reject('indexedDb not supported !');
26
+ }
27
+ const request = IDB_REF.open(name, version);
28
+ request.onupgradeneeded = function (e) {
29
+ onUpgradeNeeded(e, resolve, reject);
30
+ };
31
+
32
+ request.onsuccess = function (e) {
33
+ onSuccess(e, resolve, reject);
34
+ };
35
+
36
+ request.onerror = function (e) {
37
+ onError(e, resolve, reject);
38
+ };
39
+ });
40
+ };
41
+ }
42
+
43
+ export default createDbOpener;
@@ -1,25 +1,25 @@
1
- /* eslint-disable no-restricted-globals */
2
- import getIDB from './get-idb';
3
-
4
- const IDB_REF = getIDB();
5
-
6
- function createOpenDb(onSuccess, onUpgradeNeeded) {
7
- return function openStorage(name, version = 1) {
8
- return new Promise(function (resolve, reject) {
9
- if (!IDB_REF) {
10
- reject('indexedDb not supported !');
11
- }
12
- const request = IDB_REF.open(name, version);
13
-
14
- request.onupgradeneeded = onUpgradeNeeded(resolve, reject);
15
-
16
- request.onsuccess = onSuccess(resolve, reject);
17
-
18
- request.onerror = function (e) {
19
- reject(e);
20
- };
21
- });
22
- };
23
- }
24
-
25
- export default createOpenDb;
1
+ /* eslint-disable no-restricted-globals */
2
+ import getIDB from './get-idb';
3
+
4
+ const IDB_REF = getIDB();
5
+
6
+ function createOpenDb(onSuccess, onUpgradeNeeded) {
7
+ return function openStorage(name, version = 1) {
8
+ return new Promise(function (resolve, reject) {
9
+ if (!IDB_REF) {
10
+ reject('indexedDb not supported !');
11
+ }
12
+ const request = IDB_REF.open(name, version);
13
+
14
+ request.onupgradeneeded = onUpgradeNeeded(resolve, reject);
15
+
16
+ request.onsuccess = onSuccess(resolve, reject);
17
+
18
+ request.onerror = function (e) {
19
+ reject(e);
20
+ };
21
+ });
22
+ };
23
+ }
24
+
25
+ export default createOpenDb;
@@ -1,96 +1,96 @@
1
- const BULK_LIMIT = 300;
2
-
3
- export const BULK_INSERT_MESSAGES = {
4
- bulkInsertComplete: { type: 'bulk-insert/complete' },
5
- bulkInsertFinished: { type: 'bulk-insert/finished' },
6
- bulkInsertError: { type: 'bulk-insert/error' },
7
- };
8
-
9
- /* */
10
- const pushTask = (store, transaction) => ([first, ...rest] = []) => {
11
- if (first) {
12
- const request = store.add(first);
13
- request.onsuccess = () => {
14
- if (rest.length) {
15
- pushTask(store, transaction)(rest);
16
- }
17
- };
18
-
19
- request.onerror = (e) => {
20
- throw e;
21
- };
22
- }
23
- };
24
-
25
- /* */
26
- function split(entities, limit = BULK_LIMIT) {
27
- return entities.reduce(
28
- ([f, ...r], n, i) => {
29
- return (i + 1) % limit === 0 ? [[n], f, ...r] : [[n, ...f], ...r];
30
- },
31
- [[]]
32
- );
33
- }
34
-
35
- /* */
36
- const bulkPush = (db, name, hook, resolve, reject, max) => (
37
- lot,
38
- i = 0,
39
- treated = 0
40
- ) => {
41
- const [first, ...rest] = lot;
42
- try {
43
- if (first) {
44
- const transaction = db.transaction(name, 'readwrite');
45
- const store = transaction.objectStore(name);
46
- pushTask(store, transaction)(first);
47
- transaction.oncomplete = function () {
48
- const nextTreated = treated + first.length;
49
- hook({
50
- message: {
51
- ...BULK_INSERT_MESSAGES.bulkInsertComplete,
52
- nb: first.length,
53
- treated: nextTreated,
54
- step: i,
55
- max,
56
- percent: Math.round((nextTreated / max) * 100),
57
- },
58
- });
59
- bulkPush(
60
- db,
61
- name,
62
- hook,
63
- resolve,
64
- reject,
65
- max
66
- )(rest, i + 1, nextTreated);
67
- };
68
- transaction.onerror = function (e) {
69
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertError, error: e });
70
- reject(e);
71
- };
72
- } else {
73
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertFinished });
74
- resolve('success');
75
- }
76
- } catch (e) {
77
- hook({ message: BULK_INSERT_MESSAGES.bulkInsertError });
78
- reject(e);
79
- }
80
- };
81
-
82
- /* */
83
- function bulkInsert(db, store, hook = () => null) {
84
- return (entities = []) => {
85
- const lots = split(entities, BULK_LIMIT);
86
- return new Promise((resolve, reject) => {
87
- try {
88
- bulkPush(db, store, hook, resolve, reject, entities.length)(lots);
89
- } catch (e) {
90
- reject(e);
91
- }
92
- });
93
- };
94
- }
95
-
96
- export default bulkInsert;
1
+ const BULK_LIMIT = 300;
2
+
3
+ export const BULK_INSERT_MESSAGES = {
4
+ bulkInsertComplete: { type: 'bulk-insert/complete' },
5
+ bulkInsertFinished: { type: 'bulk-insert/finished' },
6
+ bulkInsertError: { type: 'bulk-insert/error' },
7
+ };
8
+
9
+ /* */
10
+ const pushTask = (store, transaction) => ([first, ...rest] = []) => {
11
+ if (first) {
12
+ const request = store.add(first);
13
+ request.onsuccess = () => {
14
+ if (rest.length) {
15
+ pushTask(store, transaction)(rest);
16
+ }
17
+ };
18
+
19
+ request.onerror = (e) => {
20
+ throw e;
21
+ };
22
+ }
23
+ };
24
+
25
+ /* */
26
+ function split(entities, limit = BULK_LIMIT) {
27
+ return entities.reduce(
28
+ ([f, ...r], n, i) => {
29
+ return (i + 1) % limit === 0 ? [[n], f, ...r] : [[n, ...f], ...r];
30
+ },
31
+ [[]]
32
+ );
33
+ }
34
+
35
+ /* */
36
+ const bulkPush = (db, name, hook, resolve, reject, max) => (
37
+ lot,
38
+ i = 0,
39
+ treated = 0
40
+ ) => {
41
+ const [first, ...rest] = lot;
42
+ try {
43
+ if (first) {
44
+ const transaction = db.transaction(name, 'readwrite');
45
+ const store = transaction.objectStore(name);
46
+ pushTask(store, transaction)(first);
47
+ transaction.oncomplete = function () {
48
+ const nextTreated = treated + first.length;
49
+ hook({
50
+ message: {
51
+ ...BULK_INSERT_MESSAGES.bulkInsertComplete,
52
+ nb: first.length,
53
+ treated: nextTreated,
54
+ step: i,
55
+ max,
56
+ percent: Math.round((nextTreated / max) * 100),
57
+ },
58
+ });
59
+ bulkPush(
60
+ db,
61
+ name,
62
+ hook,
63
+ resolve,
64
+ reject,
65
+ max
66
+ )(rest, i + 1, nextTreated);
67
+ };
68
+ transaction.onerror = function (e) {
69
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertError, error: e });
70
+ reject(e);
71
+ };
72
+ } else {
73
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertFinished });
74
+ resolve('success');
75
+ }
76
+ } catch (e) {
77
+ hook({ message: BULK_INSERT_MESSAGES.bulkInsertError });
78
+ reject(e);
79
+ }
80
+ };
81
+
82
+ /* */
83
+ function bulkInsert(db, store, hook = () => null) {
84
+ return (entities = []) => {
85
+ const lots = split(entities, BULK_LIMIT);
86
+ return new Promise((resolve, reject) => {
87
+ try {
88
+ bulkPush(db, store, hook, resolve, reject, entities.length)(lots);
89
+ } catch (e) {
90
+ reject(e);
91
+ }
92
+ });
93
+ };
94
+ }
95
+
96
+ export default bulkInsert;
@@ -1,10 +1,10 @@
1
- export { default as openDb } from './open-db';
2
- export { default as clearDb } from './clear-store';
3
- export { default as getIDB } from './get-idb';
4
- export { default as getEntity } from './get-entity';
5
- export { default as insertEntity } from './insert-entity';
6
- export { default as openOnCreateDb } from './open-or-create-db';
7
- export {
8
- default as idbBulkInsert,
9
- BULK_INSERT_MESSAGES,
10
- } from './idb-bulk-insert';
1
+ export { default as openDb } from './open-db';
2
+ export { default as clearDb } from './clear-store';
3
+ export { default as getIDB } from './get-idb';
4
+ export { default as getEntity } from './get-entity';
5
+ export { default as insertEntity } from './insert-entity';
6
+ export { default as openOnCreateDb } from './open-or-create-db';
7
+ export {
8
+ default as idbBulkInsert,
9
+ BULK_INSERT_MESSAGES,
10
+ } from './idb-bulk-insert';
@@ -1,15 +1,15 @@
1
- function insert(db, storeName, entity) {
2
- return new Promise(function (resolve, reject) {
3
- const transaction = db.transaction(storeName, 'readwrite');
4
- const store = transaction.objectStore(storeName);
5
- const request = store.add(entity);
6
- request.onsuccess = () => {
7
- resolve('success');
8
- };
9
- request.onerror = (e) => {
10
- reject(e);
11
- };
12
- });
13
- }
14
-
15
- export default insert;
1
+ function insert(db, storeName, entity) {
2
+ return new Promise(function (resolve, reject) {
3
+ const transaction = db.transaction(storeName, 'readwrite');
4
+ const store = transaction.objectStore(storeName);
5
+ const request = store.add(entity);
6
+ request.onsuccess = () => {
7
+ resolve('success');
8
+ };
9
+ request.onerror = (e) => {
10
+ reject(e);
11
+ };
12
+ });
13
+ }
14
+
15
+ export default insert;
@@ -1,13 +1,13 @@
1
- /* eslint-disable no-restricted-globals */
2
- import createDbOpener from './create-db-opener';
3
-
4
- function onUpgradeNeeded(e, _, reject) {
5
- e.target.transaction.abort();
6
- reject({ message: 'base seems to need an upgrade!' });
7
- }
8
-
9
- function onSuccess(e, resolve) {
10
- resolve(e.target.result);
11
- }
12
-
13
- export default createDbOpener({ onUpgradeNeeded, onSuccess });
1
+ /* eslint-disable no-restricted-globals */
2
+ import createDbOpener from './create-db-opener';
3
+
4
+ function onUpgradeNeeded(e, _, reject) {
5
+ e.target.transaction.abort();
6
+ reject({ message: 'base seems to need an upgrade!' });
7
+ }
8
+
9
+ function onSuccess(e, resolve) {
10
+ resolve(e.target.result);
11
+ }
12
+
13
+ export default createDbOpener({ onUpgradeNeeded, onSuccess });
@@ -1,34 +1,34 @@
1
- /* eslint-disable no-restricted-globals */
2
- import CONSTANTE from '../store-tools/constantes';
3
- import createDbOpener from './create-db-opener';
4
-
5
- function onUpgradeNeeded(e, resolve, reject) {
6
- try {
7
- e.target.onsuccess = function () {
8
- // Block success event!
9
- };
10
- const db = e.target.result;
11
- const store = db.createObjectStore(CONSTANTE.STORE_DATA_NAME, {
12
- keyPath: 'id',
13
- });
14
- db.createObjectStore(CONSTANTE.STORE_INFO_NAME, {
15
- keyPath: 'name',
16
- });
17
- store.createIndex(CONSTANTE.STORE_INDEX_NAME, 'tokens', {
18
- multiEntry: true,
19
- });
20
-
21
- const txn = e.target.transaction;
22
- txn.oncomplete = function () {
23
- resolve(db);
24
- };
25
- } catch (e) {
26
- reject(e);
27
- }
28
- }
29
-
30
- function onSuccess(e, resolve) {
31
- resolve(e.target.result);
32
- }
33
-
34
- export default createDbOpener({ onUpgradeNeeded, onSuccess });
1
+ /* eslint-disable no-restricted-globals */
2
+ import CONSTANTE from '../store-tools/constantes';
3
+ import createDbOpener from './create-db-opener';
4
+
5
+ function onUpgradeNeeded(e, resolve, reject) {
6
+ try {
7
+ e.target.onsuccess = function () {
8
+ // Block success event!
9
+ };
10
+ const db = e.target.result;
11
+ const store = db.createObjectStore(CONSTANTE.STORE_DATA_NAME, {
12
+ keyPath: 'id',
13
+ });
14
+ db.createObjectStore(CONSTANTE.STORE_INFO_NAME, {
15
+ keyPath: 'name',
16
+ });
17
+ store.createIndex(CONSTANTE.STORE_INDEX_NAME, 'tokens', {
18
+ multiEntry: true,
19
+ });
20
+
21
+ const txn = e.target.transaction;
22
+ txn.oncomplete = function () {
23
+ resolve(db);
24
+ };
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ }
29
+
30
+ function onSuccess(e, resolve) {
31
+ resolve(e.target.result);
32
+ }
33
+
34
+ export default createDbOpener({ onUpgradeNeeded, onSuccess });
@@ -0,0 +1 @@
1
+ export * from './utils';