@karmaniverous/entity-manager 6.5.0 → 6.6.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.
- package/dist/cjs/EntityManager.js +6 -6
- package/dist/cjs/ParsedConfig.js +21 -6
- package/dist/cjs/addKeys.js +5 -5
- package/dist/cjs/decodeEntityElement.js +4 -4
- package/dist/cjs/decodeGeneratedProperty.js +5 -5
- package/dist/cjs/dehydrateIndexItem.js +3 -3
- package/dist/cjs/dehydratePageKeyMap.js +6 -6
- package/dist/cjs/encodeEntityElement.js +4 -4
- package/dist/cjs/encodeGeneratedProperty.js +4 -4
- package/dist/cjs/getIndexComponents.js +25 -0
- package/dist/cjs/query.js +3 -3
- package/dist/cjs/rehydrateIndexItem.js +5 -5
- package/dist/cjs/rehydratePageKeyMap.js +9 -9
- package/dist/cjs/removeKeys.js +4 -4
- package/dist/cjs/unwrapIndex.js +2 -1
- package/dist/cjs/updateItemHashKey.js +3 -3
- package/dist/cjs/updateItemRangeKey.js +4 -4
- package/dist/index.d.ts +33 -21
- package/dist/mjs/EntityManager.js +6 -6
- package/dist/mjs/ParsedConfig.js +21 -6
- package/dist/mjs/addKeys.js +5 -5
- package/dist/mjs/decodeEntityElement.js +4 -4
- package/dist/mjs/decodeGeneratedProperty.js +5 -5
- package/dist/mjs/dehydrateIndexItem.js +3 -3
- package/dist/mjs/dehydratePageKeyMap.js +6 -6
- package/dist/mjs/encodeEntityElement.js +4 -4
- package/dist/mjs/encodeGeneratedProperty.js +4 -4
- package/dist/mjs/getIndexComponents.js +23 -0
- package/dist/mjs/query.js +3 -3
- package/dist/mjs/rehydrateIndexItem.js +5 -5
- package/dist/mjs/rehydratePageKeyMap.js +9 -9
- package/dist/mjs/removeKeys.js +4 -4
- package/dist/mjs/unwrapIndex.js +2 -1
- package/dist/mjs/updateItemHashKey.js +3 -3
- package/dist/mjs/updateItemRangeKey.js +4 -4
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { range, mapValues, zipToObject, cluster } from 'radash';
|
|
2
2
|
import { encodeGeneratedProperty } from './encodeGeneratedProperty.js';
|
|
3
3
|
import { getHashKeySpace } from './getHashKeySpace.js';
|
|
4
|
+
import { getIndexComponents } from './getIndexComponents.js';
|
|
4
5
|
import { rehydrateIndexItem } from './rehydrateIndexItem.js';
|
|
5
6
|
import { updateItemRangeKey } from './updateItemRangeKey.js';
|
|
6
7
|
import { validateEntityIndexToken } from './validateEntityIndexToken.js';
|
|
@@ -11,9 +12,9 @@ import { validateEntityIndexToken } from './validateEntityIndexToken.js';
|
|
|
11
12
|
* Reverses the {@link EntityManager.dehydratePageKeyMap | `dehydratePageKeyMap`} method.
|
|
12
13
|
*
|
|
13
14
|
* @param entityManager - {@link EntityManager | `EntityManager`} instance.
|
|
14
|
-
* @param dehydrated - Array of dehydrated page keys or undefined if new query.
|
|
15
15
|
* @param entityToken - {@link ConfigKeys.entities | `entityManager.config.entities`} key.
|
|
16
16
|
* @param indexTokens - Array of {@link ConfigEntity.indexes | `entityManager.config.entities.<entityToken>.indexes`} keys used as keys of the original {@link PageKeyMap | `PageKeyMap`}.
|
|
17
|
+
* @param dehydrated - Array of dehydrated page keys or undefined if new query.
|
|
17
18
|
* @param timestampFrom - Lower timestanp limit used to generate the original {@link PageKeyMap | `PageKeyMap`}. Defaults to `0`.
|
|
18
19
|
* @param timestampTo - Upper timestamp limit used to generate the original {@link PageKeyMap | `PageKeyMap`}. Defaults to `Date.now()`.
|
|
19
20
|
*
|
|
@@ -24,7 +25,7 @@ import { validateEntityIndexToken } from './validateEntityIndexToken.js';
|
|
|
24
25
|
* @throws `Error` if any `indexTokens` are invalid.
|
|
25
26
|
* @throws `Error` if `dehydrated` has invalid length.
|
|
26
27
|
*/
|
|
27
|
-
function rehydratePageKeyMap(entityManager,
|
|
28
|
+
function rehydratePageKeyMap(entityManager, entityToken, indexTokens, dehydrated, timestampFrom = 0, timestampTo = Date.now()) {
|
|
28
29
|
try {
|
|
29
30
|
// Validate params.
|
|
30
31
|
if (!indexTokens.length)
|
|
@@ -46,18 +47,17 @@ function rehydratePageKeyMap(entityManager, dehydrated, entityToken, indexTokens
|
|
|
46
47
|
return;
|
|
47
48
|
let item = {
|
|
48
49
|
[entityManager.config.hashKey]: hashKey,
|
|
49
|
-
...rehydrateIndexItem(entityManager,
|
|
50
|
+
...rehydrateIndexItem(entityManager, entityToken, index, dehydratedIndexPageKeyMaps[i], [entityManager.config.hashKey]),
|
|
50
51
|
};
|
|
51
|
-
item = updateItemRangeKey(entityManager,
|
|
52
|
-
return zipToObject(entityManager.config.entities[entityToken].
|
|
53
|
-
|
|
54
|
-
? encodeGeneratedProperty(entityManager, item, entityToken, component)
|
|
52
|
+
item = updateItemRangeKey(entityManager, entityToken, item);
|
|
53
|
+
return zipToObject(getIndexComponents(entityManager, entityToken, index), (component) => entityManager.config.entities[entityToken].generated[component]
|
|
54
|
+
? encodeGeneratedProperty(entityManager, entityToken, component, item)
|
|
55
55
|
: item[component]);
|
|
56
56
|
}));
|
|
57
57
|
entityManager.logger.debug('rehydrated page key map', {
|
|
58
|
-
dehydrated,
|
|
59
58
|
entityToken,
|
|
60
59
|
indexTokens,
|
|
60
|
+
dehydrated,
|
|
61
61
|
rehydrated,
|
|
62
62
|
});
|
|
63
63
|
return rehydrated;
|
|
@@ -65,9 +65,9 @@ function rehydratePageKeyMap(entityManager, dehydrated, entityToken, indexTokens
|
|
|
65
65
|
catch (error) {
|
|
66
66
|
if (error instanceof Error)
|
|
67
67
|
entityManager.logger.error(error.message, {
|
|
68
|
-
dehydrated,
|
|
69
68
|
entityToken,
|
|
70
69
|
indexTokens,
|
|
70
|
+
dehydrated,
|
|
71
71
|
});
|
|
72
72
|
throw error;
|
|
73
73
|
}
|
package/dist/mjs/removeKeys.js
CHANGED
|
@@ -4,14 +4,14 @@ import { validateEntityToken } from './validateEntityToken.js';
|
|
|
4
4
|
* Strips generated properties, hash key, and range key from an {@link ItemMap | `ItemMap`} object.
|
|
5
5
|
*
|
|
6
6
|
* @param entityManager - {@link EntityManager | `EntityManager`} instance.
|
|
7
|
-
* @param item - {@link ItemMap | `ItemMap`} object.
|
|
8
7
|
* @param entityToken - {@link ConfigKeys.entities | `entityManager.config.entities`} key.
|
|
8
|
+
* @param item - {@link ItemMap | `ItemMap`} object.
|
|
9
9
|
*
|
|
10
10
|
* @returns Shallow clone of `item` without generated properties, hash key or range key.
|
|
11
11
|
*
|
|
12
12
|
* @throws `Error` if `entityToken` is invalid.
|
|
13
13
|
*/
|
|
14
|
-
function removeKeys(entityManager,
|
|
14
|
+
function removeKeys(entityManager, entityToken, item) {
|
|
15
15
|
try {
|
|
16
16
|
// Validate params.
|
|
17
17
|
validateEntityToken(entityManager, entityToken);
|
|
@@ -23,15 +23,15 @@ function removeKeys(entityManager, item, entityToken) {
|
|
|
23
23
|
for (const property in entityManager.config.entities[entityToken].generated)
|
|
24
24
|
delete newItem[property];
|
|
25
25
|
entityManager.logger.debug('stripped entity item generated properties', {
|
|
26
|
-
item,
|
|
27
26
|
entityToken,
|
|
27
|
+
item,
|
|
28
28
|
newItem,
|
|
29
29
|
});
|
|
30
30
|
return newItem;
|
|
31
31
|
}
|
|
32
32
|
catch (error) {
|
|
33
33
|
if (error instanceof Error)
|
|
34
|
-
entityManager.logger.error(error.message, {
|
|
34
|
+
entityManager.logger.error(error.message, { entityToken, item });
|
|
35
35
|
throw error;
|
|
36
36
|
}
|
|
37
37
|
}
|
package/dist/mjs/unwrapIndex.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { shake } from 'radash';
|
|
2
|
+
import { getIndexComponents } from './getIndexComponents.js';
|
|
2
3
|
import { validateEntityIndexToken } from './validateEntityIndexToken.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -19,7 +20,7 @@ function unwrapIndex(entityManager, entityToken, indexToken) {
|
|
|
19
20
|
validateEntityIndexToken(entityManager, entityToken, indexToken);
|
|
20
21
|
const generated = entityManager.config.entities[entityToken].generated;
|
|
21
22
|
const generatedKeys = Object.keys(shake(generated));
|
|
22
|
-
return entityManager
|
|
23
|
+
return getIndexComponents(entityManager, entityToken, indexToken)
|
|
23
24
|
.map((component) => component === entityManager.config.hashKey
|
|
24
25
|
? entityManager.config.hashKey
|
|
25
26
|
: component === entityManager.config.rangeKey
|
|
@@ -7,15 +7,15 @@ import { validateEntityToken } from './validateEntityToken.js';
|
|
|
7
7
|
* Update the hash key on a partial {@link ItemMap | `ItemMap`} object.
|
|
8
8
|
*
|
|
9
9
|
* @param entityManager - {@link EntityManager | `EntityManager`} instance.
|
|
10
|
-
* @param item - Partial {@link ItemMap | `ItemMap`} object.
|
|
11
10
|
* @param entityToken - {@link ConfigKeys.entities | `this.config.entities`} key.
|
|
11
|
+
* @param item - Partial {@link ItemMap | `ItemMap`} object.
|
|
12
12
|
* @param overwrite - Overwrite existing {@link ConfigKeys.hashKey | `this.config.hashKey`} property value (default `false`).
|
|
13
13
|
*
|
|
14
14
|
* @returns Shallow clone of `item` with updated hash key.
|
|
15
15
|
*
|
|
16
16
|
* @throws `Error` if `entityToken` is invalid.
|
|
17
17
|
*/
|
|
18
|
-
function updateItemHashKey(entityManager,
|
|
18
|
+
function updateItemHashKey(entityManager, entityToken, item, overwrite = false) {
|
|
19
19
|
try {
|
|
20
20
|
// Validate params.
|
|
21
21
|
validateEntityToken(entityManager, entityToken);
|
|
@@ -59,8 +59,8 @@ function updateItemHashKey(entityManager, item, entityToken, overwrite = false)
|
|
|
59
59
|
catch (error) {
|
|
60
60
|
if (error instanceof Error)
|
|
61
61
|
entityManager.logger.error(error.message, {
|
|
62
|
-
item,
|
|
63
62
|
entityToken,
|
|
63
|
+
item,
|
|
64
64
|
overwrite,
|
|
65
65
|
});
|
|
66
66
|
throw error;
|
|
@@ -5,8 +5,8 @@ import { validateEntityToken } from './validateEntityToken.js';
|
|
|
5
5
|
* Update the range key on a partial {@link ItemMap | `ItemMap`} object.
|
|
6
6
|
*
|
|
7
7
|
* @param entityManager - {@link EntityManager | `EntityManager`} instance.
|
|
8
|
-
* @param item - Partial {@link ItemMap | `ItemMap`} object.
|
|
9
8
|
* @param entityToken - {@link ConfigKeys.entities | `this.config.entities`} key.
|
|
9
|
+
* @param item - Partial {@link ItemMap | `ItemMap`} object.
|
|
10
10
|
* @param overwrite - Overwrite existing {@link ConfigKeys.rangeKey | `this.config.rangeKey`} property value (default `false`).
|
|
11
11
|
*
|
|
12
12
|
* @returns Shallow clone of `item` with updated range key.
|
|
@@ -14,15 +14,15 @@ import { validateEntityToken } from './validateEntityToken.js';
|
|
|
14
14
|
* @throws `Error` if `entityToken` is invalid.
|
|
15
15
|
* @throws `Error` if `item` {@link ConfigEntity.uniqueProperty | `this.config.entities<entityToken>.uniqueProperty`} property value is missing.
|
|
16
16
|
*/
|
|
17
|
-
function updateItemRangeKey(entityManager,
|
|
17
|
+
function updateItemRangeKey(entityManager, entityToken, item, overwrite = false) {
|
|
18
18
|
try {
|
|
19
19
|
// Validate params.
|
|
20
20
|
validateEntityToken(entityManager, entityToken);
|
|
21
21
|
// Return current item if rangeKey exists and overwrite is false.
|
|
22
22
|
if (item[entityManager.config.rangeKey] && !overwrite) {
|
|
23
23
|
entityManager.logger.debug('did not overwrite existing entity item range key', {
|
|
24
|
-
item,
|
|
25
24
|
entityToken,
|
|
25
|
+
item,
|
|
26
26
|
overwrite,
|
|
27
27
|
});
|
|
28
28
|
return { ...item };
|
|
@@ -49,8 +49,8 @@ function updateItemRangeKey(entityManager, item, entityToken, overwrite = false)
|
|
|
49
49
|
catch (error) {
|
|
50
50
|
if (error instanceof Error)
|
|
51
51
|
entityManager.logger.error(error.message, {
|
|
52
|
-
item,
|
|
53
52
|
entityToken,
|
|
53
|
+
item,
|
|
54
54
|
overwrite,
|
|
55
55
|
});
|
|
56
56
|
throw error;
|
package/package.json
CHANGED