@zajno/common 1.5.4 → 1.5.5

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 (69) hide show
  1. package/coverage/clover.xml +35 -32
  2. package/coverage/coverage-final.json +1 -1
  3. package/coverage/lcov-report/index.html +14 -14
  4. package/coverage/lcov-report/src/__tests__/helpers/index.html +1 -1
  5. package/coverage/lcov-report/src/__tests__/helpers/main.ts.html +1 -1
  6. package/coverage/lcov-report/src/async/arrays.ts.html +1 -1
  7. package/coverage/lcov-report/src/async/index.html +1 -1
  8. package/coverage/lcov-report/src/async/timeout.ts.html +1 -1
  9. package/coverage/lcov-report/src/cache.ts.html +1 -1
  10. package/coverage/lcov-report/src/dates/calc.ts.html +1 -1
  11. package/coverage/lcov-report/src/dates/convert.ts.html +1 -1
  12. package/coverage/lcov-report/src/dates/datex.ts.html +1 -1
  13. package/coverage/lcov-report/src/dates/format.ts.html +1 -1
  14. package/coverage/lcov-report/src/dates/index.html +1 -1
  15. package/coverage/lcov-report/src/dates/index.ts.html +1 -1
  16. package/coverage/lcov-report/src/dates/parse.ts.html +1 -1
  17. package/coverage/lcov-report/src/dates/period.ts.html +1 -1
  18. package/coverage/lcov-report/src/dates/shift.ts.html +1 -1
  19. package/coverage/lcov-report/src/dates/types.ts.html +1 -1
  20. package/coverage/lcov-report/src/dates/yearDate.ts.html +1 -1
  21. package/coverage/lcov-report/src/disposer.ts.html +1 -1
  22. package/coverage/lcov-report/src/enumHelper.ts.html +1 -1
  23. package/coverage/lcov-report/src/event.ts.html +1 -1
  24. package/coverage/lcov-report/src/fields/index.html +14 -14
  25. package/coverage/lcov-report/src/fields/update.ts.html +40 -19
  26. package/coverage/lcov-report/src/functions.ts.html +1 -1
  27. package/coverage/lcov-report/src/index.html +1 -1
  28. package/coverage/lcov-report/src/lazy.light.ts.html +1 -1
  29. package/coverage/lcov-report/src/logger/batch.ts.html +1 -1
  30. package/coverage/lcov-report/src/logger/console.ts.html +1 -1
  31. package/coverage/lcov-report/src/logger/index.html +1 -1
  32. package/coverage/lcov-report/src/logger/index.ts.html +1 -1
  33. package/coverage/lcov-report/src/logger/named.ts.html +1 -1
  34. package/coverage/lcov-report/src/logger/proxy.ts.html +1 -1
  35. package/coverage/lcov-report/src/math/arrays.ts.html +1 -1
  36. package/coverage/lcov-report/src/math/calc.ts.html +1 -1
  37. package/coverage/lcov-report/src/math/distribution.ts.html +1 -1
  38. package/coverage/lcov-report/src/math/index.html +1 -1
  39. package/coverage/lcov-report/src/math/index.ts.html +1 -1
  40. package/coverage/lcov-report/src/observersMap.ts.html +1 -1
  41. package/coverage/lcov-report/src/observingCache.ts.html +1 -1
  42. package/coverage/lcov-report/src/tempoCache.ts.html +1 -1
  43. package/coverage/lcov-report/src/transitionObserver.ts.html +1 -1
  44. package/coverage/lcov-report/src/types.ts.html +1 -1
  45. package/coverage/lcov-report/src/validation/ValidationErrors.ts.html +1 -1
  46. package/coverage/lcov-report/src/validation/creditCard.ts.html +1 -1
  47. package/coverage/lcov-report/src/validation/helpers.ts.html +1 -1
  48. package/coverage/lcov-report/src/validation/index.html +1 -1
  49. package/coverage/lcov-report/src/validation/index.ts.html +1 -1
  50. package/coverage/lcov-report/src/validation/types.ts.html +1 -1
  51. package/coverage/lcov-report/src/validation/validators.ts.html +1 -1
  52. package/coverage/lcov-report/src/validation/wrappers.ts.html +1 -1
  53. package/coverage/lcov-report/src/viewModels/CommonModel.ts.html +1 -1
  54. package/coverage/lcov-report/src/viewModels/FlagModel.ts.html +1 -1
  55. package/coverage/lcov-report/src/viewModels/LoadingModel.ts.html +1 -1
  56. package/coverage/lcov-report/src/viewModels/MultiSelectModel.ts.html +1 -1
  57. package/coverage/lcov-report/src/viewModels/NumberModel.ts.html +1 -1
  58. package/coverage/lcov-report/src/viewModels/SelectModel.ts.html +1 -1
  59. package/coverage/lcov-report/src/viewModels/TextModel.ts.html +1 -1
  60. package/coverage/lcov-report/src/viewModels/Validatable.ts.html +1 -1
  61. package/coverage/lcov-report/src/viewModels/index.html +1 -1
  62. package/coverage/lcov-report/src/viewModels/wrappers.ts.html +1 -1
  63. package/coverage/lcov.info +115 -102
  64. package/lib/fields/update.d.ts +5 -4
  65. package/lib/fields/update.d.ts.map +1 -1
  66. package/lib/fields/update.js +13 -7
  67. package/lib/fields/update.js.map +1 -1
  68. package/package.json +1 -1
  69. package/src/fields/update.ts +18 -11
@@ -274,7 +274,7 @@ export class FlagModel implements IFlagModel, IFlagModelReadonly {
274
274
  <div class='footer quiet pad2 space-top1 center small'>
275
275
  Code coverage generated by
276
276
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
277
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
277
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
278
278
  </div>
279
279
  </div>
280
280
  <script src="../../prettify.js"></script>
@@ -220,7 +220,7 @@ export async function withLoading&lt;T&gt;(this: void, model: IValueModel&lt;boo
220
220
  <div class='footer quiet pad2 space-top1 center small'>
221
221
  Code coverage generated by
222
222
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
223
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
223
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
224
224
  </div>
225
225
  </div>
226
226
  <script src="../../prettify.js"></script>
@@ -598,7 +598,7 @@ export class MultiSelectString&lt;T extends string = string&gt; extends MultiSel
598
598
  <div class='footer quiet pad2 space-top1 center small'>
599
599
  Code coverage generated by
600
600
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
601
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
601
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
602
602
  </div>
603
603
  </div>
604
604
  <script src="../../prettify.js"></script>
@@ -214,7 +214,7 @@ export default NumberModel;
214
214
  <div class='footer quiet pad2 space-top1 center small'>
215
215
  Code coverage generated by
216
216
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
217
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
217
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
218
218
  </div>
219
219
  </div>
220
220
  <script src="../../prettify.js"></script>
@@ -520,7 +520,7 @@ export class SelectString&lt;T extends string = string&gt; extends Select&lt;T&g
520
520
  <div class='footer quiet pad2 space-top1 center small'>
521
521
  Code coverage generated by
522
522
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
523
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
523
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
524
524
  </div>
525
525
  </div>
526
526
  <script src="../../prettify.js"></script>
@@ -445,7 +445,7 @@ export class TextInputVM extends ValidatableModel&lt;string&gt; implements IValu
445
445
  <div class='footer quiet pad2 space-top1 center small'>
446
446
  Code coverage generated by
447
447
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
448
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
448
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
449
449
  </div>
450
450
  </div>
451
451
  <script src="../../prettify.js"></script>
@@ -370,7 +370,7 @@ export abstract class ValidatableModel&lt;T = string&gt; {
370
370
  <div class='footer quiet pad2 space-top1 center small'>
371
371
  Code coverage generated by
372
372
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
373
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
373
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
374
374
  </div>
375
375
  </div>
376
376
  <script src="../../prettify.js"></script>
@@ -215,7 +215,7 @@
215
215
  <div class='footer quiet pad2 space-top1 center small'>
216
216
  Code coverage generated by
217
217
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
218
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
218
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
219
219
  </div>
220
220
  </div>
221
221
  <script src="../../prettify.js"></script>
@@ -211,7 +211,7 @@ export function mixinLabel&lt;T, TModel extends IValueModel&lt;T&gt;, TLabel = s
211
211
  <div class='footer quiet pad2 space-top1 center small'>
212
212
  Code coverage generated by
213
213
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
214
- at Fri Jun 10 2022 06:23:59 GMT+0000 (Coordinated Universal Time)
214
+ at Sat Jun 18 2022 09:26:04 GMT+0000 (Coordinated Universal Time)
215
215
  </div>
216
216
  </div>
217
217
  <script src="../../prettify.js"></script>
@@ -2024,10 +2024,10 @@ FN:16,updateFieldExtended
2024
2024
  FN:25,(anonymous_4)
2025
2025
  FN:39,(anonymous_5)
2026
2026
  FN:40,(anonymous_6)
2027
- FN:57,updateArray
2028
- FN:80,(anonymous_8)
2029
- FN:92,(anonymous_9)
2030
- FN:93,(anonymous_10)
2027
+ FN:58,updateArray
2028
+ FN:81,(anonymous_8)
2029
+ FN:95,(anonymous_9)
2030
+ FN:96,(anonymous_10)
2031
2031
  FNF:11
2032
2032
  FNH:5
2033
2033
  FNDA:0,updateField
@@ -2054,41 +2054,44 @@ DA:32,0
2054
2054
  DA:35,0
2055
2055
  DA:39,38
2056
2056
  DA:40,1
2057
- DA:57,1
2058
- DA:62,6
2059
- DA:63,1
2060
- DA:66,5
2057
+ DA:58,1
2058
+ DA:63,6
2059
+ DA:64,1
2061
2060
  DA:67,5
2062
- DA:71,5
2061
+ DA:68,5
2063
2062
  DA:72,5
2064
2063
  DA:73,5
2065
2064
  DA:74,5
2066
2065
  DA:75,5
2067
- DA:78,5
2066
+ DA:76,5
2068
2067
  DA:79,5
2069
- DA:80,31
2070
- DA:82,10
2068
+ DA:80,5
2069
+ DA:81,31
2071
2070
  DA:83,10
2072
- DA:85,10
2071
+ DA:84,10
2073
2072
  DA:86,10
2073
+ DA:87,10
2074
2074
  DA:92,5
2075
- DA:93,15
2076
- DA:94,12
2077
- DA:95,12
2078
- DA:96,7
2079
- DA:97,7
2080
- DA:98,7
2081
- DA:99,5
2082
- DA:100,1
2083
- DA:101,1
2084
- DA:102,1
2085
- DA:103,0
2086
- DA:108,5
2087
- DA:109,5
2088
- DA:110,4
2089
- DA:113,5
2090
- LF:46
2091
- LH:37
2075
+ DA:95,5
2076
+ DA:96,15
2077
+ DA:97,12
2078
+ DA:98,12
2079
+ DA:99,7
2080
+ DA:100,0
2081
+ DA:102,7
2082
+ DA:104,7
2083
+ DA:105,7
2084
+ DA:106,5
2085
+ DA:107,1
2086
+ DA:108,1
2087
+ DA:109,1
2088
+ DA:110,0
2089
+ DA:115,5
2090
+ DA:116,5
2091
+ DA:117,4
2092
+ DA:120,5
2093
+ LF:49
2094
+ LH:39
2092
2095
  BRDA:12,0,0,0
2093
2096
  BRDA:22,1,0,0
2094
2097
  BRDA:25,2,0,0
@@ -2097,78 +2100,88 @@ BRDA:29,3,0,0
2097
2100
  BRDA:29,3,1,0
2098
2101
  BRDA:29,4,0,0
2099
2102
  BRDA:29,4,1,0
2100
- BRDA:62,5,0,1
2101
- BRDA:62,5,1,5
2102
- BRDA:68,6,0,5
2103
- BRDA:68,6,1,0
2104
- BRDA:68,7,0,2
2105
- BRDA:68,7,1,3
2106
- BRDA:68,8,0,2
2107
- BRDA:68,8,1,3
2108
- BRDA:68,9,0,5
2109
- BRDA:68,9,1,5
2110
- BRDA:71,10,0,5
2111
- BRDA:71,10,1,4
2112
- BRDA:71,11,0,2
2113
- BRDA:71,11,1,3
2114
- BRDA:71,12,0,5
2115
- BRDA:71,12,1,5
2116
- BRDA:72,13,0,5
2117
- BRDA:72,13,1,4
2118
- BRDA:72,14,0,2
2119
- BRDA:72,14,1,3
2120
- BRDA:72,15,0,5
2121
- BRDA:72,15,1,5
2122
- BRDA:73,16,0,5
2123
- BRDA:73,16,1,0
2124
- BRDA:73,17,0,5
2125
- BRDA:73,17,1,5
2126
- BRDA:73,18,0,2
2127
- BRDA:73,18,1,3
2128
- BRDA:73,19,0,5
2129
- BRDA:73,19,1,5
2130
- BRDA:74,20,0,5
2131
- BRDA:74,20,1,0
2132
- BRDA:74,21,0,5
2133
- BRDA:74,21,1,5
2134
- BRDA:74,22,0,2
2135
- BRDA:74,22,1,3
2136
- BRDA:74,23,0,5
2137
- BRDA:74,23,1,5
2138
- BRDA:75,24,0,5
2139
- BRDA:75,24,1,0
2140
- BRDA:75,25,0,5
2141
- BRDA:75,25,1,5
2142
- BRDA:75,26,0,2
2143
- BRDA:75,26,1,3
2144
- BRDA:75,27,0,5
2145
- BRDA:75,27,1,5
2146
- BRDA:78,28,0,5
2147
- BRDA:78,28,1,0
2148
- BRDA:78,29,0,2
2149
- BRDA:78,29,1,3
2150
- BRDA:78,30,0,5
2151
- BRDA:78,30,1,5
2152
- BRDA:80,31,0,10
2153
- BRDA:80,31,1,5
2154
- BRDA:95,32,0,7
2155
- BRDA:95,32,1,5
2156
- BRDA:99,33,0,1
2157
- BRDA:99,33,1,4
2158
- BRDA:100,34,0,0
2159
- BRDA:100,34,1,1
2160
- BRDA:102,35,0,0
2161
- BRDA:102,35,1,1
2162
- BRDA:108,36,0,2
2163
- BRDA:108,36,1,3
2164
- BRDA:108,37,0,5
2165
- BRDA:108,37,1,5
2166
- BRDA:109,38,0,4
2167
- BRDA:109,38,1,1
2168
- BRDA:110,39,0,4
2169
- BRDA:110,39,1,3
2170
- BRF:78
2171
- BRH:63
2103
+ BRDA:63,5,0,1
2104
+ BRDA:63,5,1,5
2105
+ BRDA:69,6,0,5
2106
+ BRDA:69,6,1,0
2107
+ BRDA:69,7,0,2
2108
+ BRDA:69,7,1,3
2109
+ BRDA:69,8,0,2
2110
+ BRDA:69,8,1,3
2111
+ BRDA:69,9,0,5
2112
+ BRDA:69,9,1,5
2113
+ BRDA:72,10,0,5
2114
+ BRDA:72,10,1,4
2115
+ BRDA:72,11,0,2
2116
+ BRDA:72,11,1,3
2117
+ BRDA:72,12,0,5
2118
+ BRDA:72,12,1,5
2119
+ BRDA:73,13,0,5
2120
+ BRDA:73,13,1,4
2121
+ BRDA:73,14,0,2
2122
+ BRDA:73,14,1,3
2123
+ BRDA:73,15,0,5
2124
+ BRDA:73,15,1,5
2125
+ BRDA:74,16,0,5
2126
+ BRDA:74,16,1,0
2127
+ BRDA:74,17,0,5
2128
+ BRDA:74,17,1,5
2129
+ BRDA:74,18,0,2
2130
+ BRDA:74,18,1,3
2131
+ BRDA:74,19,0,5
2132
+ BRDA:74,19,1,5
2133
+ BRDA:75,20,0,5
2134
+ BRDA:75,20,1,0
2135
+ BRDA:75,21,0,5
2136
+ BRDA:75,21,1,5
2137
+ BRDA:75,22,0,2
2138
+ BRDA:75,22,1,3
2139
+ BRDA:75,23,0,5
2140
+ BRDA:75,23,1,5
2141
+ BRDA:76,24,0,5
2142
+ BRDA:76,24,1,0
2143
+ BRDA:76,25,0,5
2144
+ BRDA:76,25,1,5
2145
+ BRDA:76,26,0,2
2146
+ BRDA:76,26,1,3
2147
+ BRDA:76,27,0,5
2148
+ BRDA:76,27,1,5
2149
+ BRDA:79,28,0,5
2150
+ BRDA:79,28,1,0
2151
+ BRDA:79,29,0,2
2152
+ BRDA:79,29,1,3
2153
+ BRDA:79,30,0,5
2154
+ BRDA:79,30,1,5
2155
+ BRDA:81,31,0,10
2156
+ BRDA:81,31,1,5
2157
+ BRDA:92,32,0,5
2158
+ BRDA:92,32,1,5
2159
+ BRDA:92,33,0,2
2160
+ BRDA:92,33,1,3
2161
+ BRDA:92,34,0,5
2162
+ BRDA:92,34,1,5
2163
+ BRDA:98,35,0,7
2164
+ BRDA:98,35,1,5
2165
+ BRDA:99,36,0,0
2166
+ BRDA:99,36,1,7
2167
+ BRDA:104,37,0,0
2168
+ BRDA:104,37,1,7
2169
+ BRDA:106,38,0,1
2170
+ BRDA:106,38,1,4
2171
+ BRDA:107,39,0,0
2172
+ BRDA:107,39,1,1
2173
+ BRDA:109,40,0,0
2174
+ BRDA:109,40,1,1
2175
+ BRDA:115,41,0,2
2176
+ BRDA:115,41,1,3
2177
+ BRDA:115,42,0,5
2178
+ BRDA:115,42,1,5
2179
+ BRDA:116,43,0,4
2180
+ BRDA:116,43,1,1
2181
+ BRDA:117,44,0,4
2182
+ BRDA:117,44,1,3
2183
+ BRF:88
2184
+ BRH:71
2172
2185
  end_of_record
2173
2186
  TN:
2174
2187
  SF:src/logger/batch.ts
@@ -9,6 +9,7 @@ export declare function updateField<T>(target: T, source: Partial<T>, diff: Part
9
9
  export declare function updateFieldExtended<T>(target: T, source: Partial<T>, diff: Partial<T>, get: Fields.Getter<T>, set: Fields.Setter<T>, hasChanged?: null | Fields.Comparer<T>): boolean;
10
10
  export declare type UpdateArrayOptions<T> = {
11
11
  additive?: boolean;
12
+ unshift?: boolean;
12
13
  clone?: boolean;
13
14
  comparator?: Comparator<T>;
14
15
  updater?: Fields.Updater<T>;
@@ -16,11 +17,11 @@ export declare type UpdateArrayOptions<T> = {
16
17
  hooks?: UpdateArrayHooks<T>;
17
18
  };
18
19
  export declare type UpdateArrayHooks<T> = {
19
- onAdded?: (item: T) => void;
20
- onDeleted?: (item: T) => void;
21
- onUpdated?: (previous: T, next: T) => void;
20
+ onAdded?: (item: T, index?: number) => void;
21
+ onDeleted?: (item: T, index?: number) => void;
22
+ onUpdated?: (previous: T, next: T, index?: number) => void;
22
23
  };
23
- export declare function updateArray<T>(target: T[] | null, source: T[], options?: UpdateArrayOptions<T>): {
24
+ export declare function updateArray<T>(target: T[] | null, source: T[] | null, options?: UpdateArrayOptions<T>): {
24
25
  changed: number;
25
26
  result: T[];
26
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/fields/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,yBAAiB,MAAM,CAAC;IACpB,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;IACnE,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAC9E,KAAY,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;CACxD;AAGD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,GAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAQ,GAAG,OAAO,CAEnJ;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,UAAU,GAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAQ,GAC7C,OAAO,CAcT;AAKD,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,oBAAY,gBAAgB,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAClB,MAAM,EAAE,CAAC,EAAE,EACX,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,CAAA;CAAE,CAwDlC"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/fields/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,yBAAiB,MAAM,CAAC;IACpB,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,KAAY,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC;IACnE,KAAY,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IAC9E,KAAY,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC;CACxD;AAGD,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,UAAU,GAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAQ,GAAG,OAAO,CAEnJ;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACjC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,UAAU,GAAE,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAQ,GAC7C,OAAO,CAcT;AAKD,oBAAY,kBAAkB,CAAC,CAAC,IAAI;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IAClD,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,oBAAY,gBAAgB,CAAC,CAAC,IAAI;IAC9B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEF,wBAAgB,WAAW,CAAC,CAAC,EACzB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAClB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,EAClB,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAChC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,EAAE,CAAA;CAAE,CA8DlC"}
@@ -39,26 +39,32 @@ function updateArray(target, source, options) {
39
39
  if (source.find(item => comparator(item, result[i])) == null) {
40
40
  // DELETE
41
41
  const removed = result.splice(i, 1);
42
- functions_1.safeCall(onDeleted, removed[0]);
42
+ functions_1.safeCall(onDeleted, removed[0], i);
43
43
  ++changed;
44
44
  --i;
45
45
  }
46
46
  }
47
47
  }
48
+ const unshift = (options === null || options === void 0 ? void 0 : options.unshift) || false;
48
49
  // add all new elements and update existing
49
- source.forEach(i => {
50
- const existingIndex = result.findIndex(item => comparator(i, item));
50
+ source.forEach(item => {
51
+ const existingIndex = result.findIndex(i => comparator(item, i));
51
52
  const existingItem = result[existingIndex];
52
53
  if (existingIndex < 0) {
53
- result.push(i);
54
- functions_1.safeCall(onAdded, i);
54
+ if (unshift) {
55
+ result.unshift(item);
56
+ }
57
+ else {
58
+ result.push(item);
59
+ }
60
+ functions_1.safeCall(onAdded, item, unshift ? 0 : result.length - 1);
55
61
  ++changed;
56
62
  }
57
63
  else if (typeof existingItem === 'object') {
58
64
  const before = onUpdate != null ? { ...existingItem } : undefined;
59
- result[existingIndex] = updater(existingItem, i);
65
+ result[existingIndex] = updater(existingItem, item);
60
66
  if (onUpdate != null) {
61
- onUpdate(before, result[existingIndex]);
67
+ onUpdate(before, result[existingIndex], existingIndex);
62
68
  }
63
69
  }
64
70
  });
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/fields/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/fields/update.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zajno/common",
3
- "version": "1.5.4",
3
+ "version": "1.5.5",
4
4
  "description": "Zajno's re-usable utilities for JS/TS projects",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,6 +41,7 @@ const DefaultUpdater: Fields.Updater<any> = (v1, v2) => Object.assign(v1, v2);
41
41
 
42
42
  export type UpdateArrayOptions<T> = {
43
43
  additive?: boolean,
44
+ unshift?: boolean,
44
45
  clone?: boolean,
45
46
  comparator?: Comparator<T>,
46
47
  updater?: Fields.Updater<T>,
@@ -49,14 +50,14 @@ export type UpdateArrayOptions<T> = {
49
50
  };
50
51
 
51
52
  export type UpdateArrayHooks<T> = {
52
- onAdded?: (item: T) => void,
53
- onDeleted?: (item: T) => void,
54
- onUpdated?: (previous: T, next: T) => void,
53
+ onAdded?: (item: T, index?: number) => void,
54
+ onDeleted?: (item: T, index?: number) => void,
55
+ onUpdated?: (previous: T, next: T, index?: number) => void,
55
56
  };
56
57
 
57
58
  export function updateArray<T>(
58
59
  target: T[] | null,
59
- source: T[],
60
+ source: T[] | null,
60
61
  options?: UpdateArrayOptions<T>,
61
62
  ): { changed: number, result: T[] } {
62
63
  if (!source) {
@@ -80,7 +81,7 @@ export function updateArray<T>(
80
81
  if (source.find(item => comparator(item, result[i])) == null) {
81
82
  // DELETE
82
83
  const removed = result.splice(i, 1);
83
- safeCall(onDeleted, removed[0]);
84
+ safeCall(onDeleted, removed[0], i);
84
85
 
85
86
  ++changed;
86
87
  --i;
@@ -88,19 +89,25 @@ export function updateArray<T>(
88
89
  }
89
90
  }
90
91
 
92
+ const unshift = options?.unshift || false;
93
+
91
94
  // add all new elements and update existing
92
- source.forEach(i => {
93
- const existingIndex = result.findIndex(item => comparator(i, item));
95
+ source.forEach(item => {
96
+ const existingIndex = result.findIndex(i => comparator(item, i));
94
97
  const existingItem = result[existingIndex];
95
98
  if (existingIndex < 0) {
96
- result.push(i);
97
- safeCall(onAdded, i);
99
+ if (unshift) {
100
+ result.unshift(item);
101
+ } else {
102
+ result.push(item);
103
+ }
104
+ safeCall(onAdded, item, unshift ? 0 : result.length - 1);
98
105
  ++changed;
99
106
  } else if (typeof existingItem === 'object') {
100
107
  const before = onUpdate != null ? { ...existingItem } : undefined;
101
- result[existingIndex] = updater(existingItem, i);
108
+ result[existingIndex] = updater(existingItem, item);
102
109
  if (onUpdate != null) {
103
- onUpdate(before!, result[existingIndex]);
110
+ onUpdate(before!, result[existingIndex], existingIndex);
104
111
  }
105
112
  }
106
113
  });