@farukada/aws-langgraph-dynamodb-ts 0.0.10 → 0.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.
- package/README.md +353 -242
- package/dist/checkpointer/actions/delete-thread.d.ts +3 -3
- package/dist/checkpointer/actions/delete-thread.d.ts.map +1 -1
- package/dist/checkpointer/actions/delete-thread.js +95 -52
- package/dist/checkpointer/actions/delete-thread.js.map +1 -1
- package/dist/checkpointer/actions/get-tuple.d.ts +8 -1
- package/dist/checkpointer/actions/get-tuple.d.ts.map +1 -1
- package/dist/checkpointer/actions/get-tuple.js +72 -20
- package/dist/checkpointer/actions/get-tuple.js.map +1 -1
- package/dist/checkpointer/actions/put-writes.d.ts.map +1 -1
- package/dist/checkpointer/actions/put-writes.js +27 -22
- package/dist/checkpointer/actions/put-writes.js.map +1 -1
- package/dist/checkpointer/actions/put.d.ts +6 -2
- package/dist/checkpointer/actions/put.d.ts.map +1 -1
- package/dist/checkpointer/actions/put.js +80 -19
- package/dist/checkpointer/actions/put.js.map +1 -1
- package/dist/checkpointer/index.d.ts +43 -2
- package/dist/checkpointer/index.d.ts.map +1 -1
- package/dist/checkpointer/index.js +226 -11
- package/dist/checkpointer/index.js.map +1 -1
- package/dist/checkpointer/types/index.d.ts +66 -4
- package/dist/checkpointer/types/index.d.ts.map +1 -1
- package/dist/checkpointer/types/index.js +10 -0
- package/dist/checkpointer/types/index.js.map +1 -1
- package/dist/checkpointer/utils/deserialization.d.ts +8 -3
- package/dist/checkpointer/utils/deserialization.d.ts.map +1 -1
- package/dist/checkpointer/utils/deserialization.js +23 -5
- package/dist/checkpointer/utils/deserialization.js.map +1 -1
- package/dist/checkpointer/utils/validation.d.ts +1 -1
- package/dist/checkpointer/utils/validation.js +1 -1
- package/dist/checkpointer/utils/validation.js.map +1 -1
- package/dist/factory.d.ts +8 -6
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +16 -4
- package/dist/factory.js.map +1 -1
- package/dist/history/actions/add-message.d.ts +2 -1
- package/dist/history/actions/add-message.d.ts.map +1 -1
- package/dist/history/actions/add-message.js +22 -18
- package/dist/history/actions/add-message.js.map +1 -1
- package/dist/history/actions/add-messages.d.ts +3 -2
- package/dist/history/actions/add-messages.d.ts.map +1 -1
- package/dist/history/actions/add-messages.js +30 -20
- package/dist/history/actions/add-messages.js.map +1 -1
- package/dist/history/actions/clear.d.ts +4 -3
- package/dist/history/actions/clear.d.ts.map +1 -1
- package/dist/history/actions/clear.js +47 -12
- package/dist/history/actions/clear.js.map +1 -1
- package/dist/history/actions/get-messages.d.ts +2 -1
- package/dist/history/actions/get-messages.d.ts.map +1 -1
- package/dist/history/actions/get-messages.js +41 -15
- package/dist/history/actions/get-messages.js.map +1 -1
- package/dist/history/actions/list-sessions.d.ts +11 -0
- package/dist/history/actions/list-sessions.d.ts.map +1 -1
- package/dist/history/actions/list-sessions.js +23 -3
- package/dist/history/actions/list-sessions.js.map +1 -1
- package/dist/history/index.d.ts +8 -0
- package/dist/history/index.d.ts.map +1 -1
- package/dist/history/index.js +22 -2
- package/dist/history/index.js.map +1 -1
- package/dist/history/types/index.d.ts +27 -5
- package/dist/history/types/index.d.ts.map +1 -1
- package/dist/history/types/index.js +1 -0
- package/dist/history/types/index.js.map +1 -1
- package/dist/history/utils/title-generator.js.map +1 -1
- package/dist/history/utils/update-expression-builder.d.ts +45 -21
- package/dist/history/utils/update-expression-builder.d.ts.map +1 -1
- package/dist/history/utils/update-expression-builder.js +105 -38
- package/dist/history/utils/update-expression-builder.js.map +1 -1
- package/dist/history/utils/validation.d.ts +8 -0
- package/dist/history/utils/validation.d.ts.map +1 -1
- package/dist/history/utils/validation.js +22 -0
- package/dist/history/utils/validation.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/shared/utils/batch-write.d.ts +36 -0
- package/dist/shared/utils/batch-write.d.ts.map +1 -0
- package/dist/shared/utils/batch-write.js +62 -0
- package/dist/shared/utils/batch-write.js.map +1 -0
- package/dist/shared/utils/compressor.d.ts +48 -0
- package/dist/shared/utils/compressor.d.ts.map +1 -0
- package/dist/shared/utils/compressor.js +68 -0
- package/dist/shared/utils/compressor.js.map +1 -0
- package/dist/shared/utils/constants.d.ts +2 -0
- package/dist/shared/utils/constants.d.ts.map +1 -1
- package/dist/shared/utils/constants.js +3 -7
- package/dist/shared/utils/constants.js.map +1 -1
- package/dist/shared/utils/index.d.ts +4 -0
- package/dist/shared/utils/index.d.ts.map +1 -1
- package/dist/shared/utils/index.js +4 -0
- package/dist/shared/utils/index.js.map +1 -1
- package/dist/shared/utils/logger.d.ts +48 -0
- package/dist/shared/utils/logger.d.ts.map +1 -0
- package/dist/shared/utils/logger.js +62 -0
- package/dist/shared/utils/logger.js.map +1 -0
- package/dist/shared/utils/retry.d.ts +1 -1
- package/dist/shared/utils/retry.d.ts.map +1 -1
- package/dist/shared/utils/retry.js +13 -6
- package/dist/shared/utils/retry.js.map +1 -1
- package/dist/shared/utils/s3-offloader.d.ts +146 -0
- package/dist/shared/utils/s3-offloader.d.ts.map +1 -0
- package/dist/shared/utils/s3-offloader.js +271 -0
- package/dist/shared/utils/s3-offloader.js.map +1 -0
- package/dist/shared/utils/ttl.d.ts +8 -1
- package/dist/shared/utils/ttl.d.ts.map +1 -1
- package/dist/shared/utils/ttl.js +12 -8
- package/dist/shared/utils/ttl.js.map +1 -1
- package/dist/store/actions/get-operation.js +2 -2
- package/dist/store/actions/get-operation.js.map +1 -1
- package/dist/store/actions/put-operation.d.ts.map +1 -1
- package/dist/store/actions/put-operation.js +2 -1
- package/dist/store/actions/put-operation.js.map +1 -1
- package/dist/store/actions/search-operation.d.ts +6 -0
- package/dist/store/actions/search-operation.d.ts.map +1 -1
- package/dist/store/actions/search-operation.js +41 -21
- package/dist/store/actions/search-operation.js.map +1 -1
- package/dist/store/index.d.ts +10 -2
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +28 -5
- package/dist/store/index.js.map +1 -1
- package/dist/store/types/index.d.ts +7 -5
- package/dist/store/types/index.d.ts.map +1 -1
- package/dist/store/utils/index.d.ts +0 -1
- package/dist/store/utils/index.d.ts.map +1 -1
- package/dist/store/utils/index.js +0 -1
- package/dist/store/utils/index.js.map +1 -1
- package/dist/store/utils/validation.js +1 -1
- package/dist/store/utils/validation.js.map +1 -1
- package/package.json +41 -24
- package/dist/store/utils/result.d.ts +0 -42
- package/dist/store/utils/result.d.ts.map +0 -1
- package/dist/store/utils/result.js +0 -51
- package/dist/store/utils/result.js.map +0 -1
package/dist/shared/utils/ttl.js
CHANGED
|
@@ -4,21 +4,25 @@
|
|
|
4
4
|
* Provide centralized TTL calculation for DynamoDB items
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.calculateTTLTimestampFromSeconds = calculateTTLTimestampFromSeconds;
|
|
7
8
|
exports.calculateTTLTimestamp = calculateTTLTimestamp;
|
|
8
9
|
/**
|
|
9
|
-
* Calculate Unix timestamp for TTL expiration
|
|
10
|
+
* Calculate Unix timestamp for TTL expiration from seconds
|
|
11
|
+
*
|
|
12
|
+
* @param ttlSeconds - Number of seconds until expiration
|
|
13
|
+
* @returns Unix timestamp in seconds for DynamoDB TTL attribute
|
|
14
|
+
*/
|
|
15
|
+
function calculateTTLTimestampFromSeconds(ttlSeconds) {
|
|
16
|
+
return Math.floor(Date.now() / 1000) + ttlSeconds;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Calculate Unix timestamp for TTL expiration from days
|
|
10
20
|
*
|
|
11
21
|
* @param ttlDays - Number of days until expiration
|
|
12
22
|
* @returns Unix timestamp in seconds for DynamoDB TTL attribute
|
|
13
23
|
* @throws Error if ttlDays would cause overflow
|
|
14
24
|
*/
|
|
15
25
|
function calculateTTLTimestamp(ttlDays) {
|
|
16
|
-
|
|
17
|
-
const timestamp = Math.floor(Date.now() / 1000) + ttlSeconds;
|
|
18
|
-
// Sanity check: ensure we don't overflow Unix timestamp
|
|
19
|
-
if (timestamp > 2147483647) {
|
|
20
|
-
throw new Error('TTL would overflow Unix timestamp (max date: 2038-01-19)');
|
|
21
|
-
}
|
|
22
|
-
return timestamp;
|
|
26
|
+
return calculateTTLTimestampFromSeconds(ttlDays * 24 * 60 * 60);
|
|
23
27
|
}
|
|
24
28
|
//# sourceMappingURL=ttl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"ttl.js","sourceRoot":"","sources":["../../../src/shared/utils/ttl.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,4EAEC;AASD,sDAEC;AAnBD;;;;;GAKG;AACH,SAAgB,gCAAgC,CAAC,UAAkB;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,gCAAgC,CAAC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -34,8 +34,8 @@ const getOperationAction = async (params) => {
|
|
|
34
34
|
key: ddbItem.Item.key,
|
|
35
35
|
namespace: op.namespace,
|
|
36
36
|
value: ddbItem.Item.value,
|
|
37
|
-
createdAt: ddbItem.Item.createdAt,
|
|
38
|
-
updatedAt: ddbItem.Item.updatedAt,
|
|
37
|
+
createdAt: new Date(ddbItem.Item.createdAt),
|
|
38
|
+
updatedAt: new Date(ddbItem.Item.updatedAt),
|
|
39
39
|
};
|
|
40
40
|
};
|
|
41
41
|
exports.getOperationAction = getOperationAction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-operation.js","sourceRoot":"","sources":["../../../src/store/actions/get-operation.ts"],"names":[],"mappings":";;;AAGA,oCAA6F;AAE7F;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAgC,EACV,EAAE;IACxB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAEvD,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAChC,IAAA,mBAAW,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEpB,MAAM,aAAa,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,aAAa,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;IAE7C,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC;YACtB,SAAS,EAAE,eAAe;YAC1B,GAAG,EAAE;gBACH,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE,OAAO;aACvB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;QACrB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACzB,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"get-operation.js","sourceRoot":"","sources":["../../../src/store/actions/get-operation.ts"],"names":[],"mappings":";;;AAGA,oCAA6F;AAE7F;;;;;;GAMG;AACI,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAAgC,EACV,EAAE;IACxB,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC;IAEvD,kBAAkB;IAClB,IAAA,sBAAc,EAAC,MAAM,CAAC,CAAC;IACvB,IAAA,yBAAiB,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAChC,IAAA,mBAAW,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEpB,MAAM,aAAa,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,aAAa,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;IAE7C,2BAA2B;IAC3B,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAiB,EAAC,KAAK,IAAI,EAAE;QACjD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC;YACtB,SAAS,EAAE,eAAe;YAC1B,GAAG,EAAE;gBACH,OAAO,EAAE,MAAM;gBACf,aAAa,EAAE,OAAO;aACvB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG;QACrB,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;QACzB,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;KAC5C,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,kBAAkB,sBAmC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"put-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAYpD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAsFvF,CAAC"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.putOperationAction = void 0;
|
|
4
4
|
const jsonpath_plus_1 = require("jsonpath-plus");
|
|
5
|
-
const utils_1 = require("../utils");
|
|
6
5
|
const shared_1 = require("../../shared");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
7
|
/**
|
|
8
8
|
* Put a memory item into DynamoDB
|
|
9
9
|
*
|
|
@@ -72,6 +72,7 @@ const putOperationAction = async (params) => {
|
|
|
72
72
|
}
|
|
73
73
|
// Add TTL if configured
|
|
74
74
|
if (ttlDays && ttlDays > 0) {
|
|
75
|
+
updateExpressionParts.push('ttl = :ttl');
|
|
75
76
|
expressionAttributeValues[':ttl'] = (0, shared_1.calculateTTLTimestamp)(ttlDays);
|
|
76
77
|
}
|
|
77
78
|
// Execute with retry logic
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"put-operation.js","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;
|
|
1
|
+
{"version":3,"file":"put-operation.js","sourceRoot":"","sources":["../../../src/store/actions/put-operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,12 @@ import { SearchOperationActionParams } from '../types';
|
|
|
3
3
|
/**
|
|
4
4
|
* Search for memory items in DynamoDB
|
|
5
5
|
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* **Pagination trade-off:** DynamoDB does not support native offset-based pagination.
|
|
8
|
+
* When `offset` is used, `limit + offset` items are loaded into memory and sliced.
|
|
9
|
+
* For large offsets (up to 10,000), this can be memory-intensive.
|
|
10
|
+
* Consider cursor-based pagination for high-offset use cases.
|
|
11
|
+
*
|
|
6
12
|
* @param params - Parameters for the search operation
|
|
7
13
|
* @returns Array of matching items with optional similarity scores
|
|
8
14
|
* @throws Error if the operation fails or validation fails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/search-operation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-operation.d.ts","sourceRoot":"","sources":["../../../src/store/actions/search-operation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAUvD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,2BAA2B,KAClC,OAAO,CAAC,UAAU,EAAE,CAgItB,CAAC"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.searchOperationAction = void 0;
|
|
4
|
-
const utils_1 = require("
|
|
4
|
+
const utils_1 = require("../../shared/utils");
|
|
5
|
+
const utils_2 = require("../utils");
|
|
5
6
|
/**
|
|
6
7
|
* Search for memory items in DynamoDB
|
|
7
8
|
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* **Pagination trade-off:** DynamoDB does not support native offset-based pagination.
|
|
11
|
+
* When `offset` is used, `limit + offset` items are loaded into memory and sliced.
|
|
12
|
+
* For large offsets (up to 10,000), this can be memory-intensive.
|
|
13
|
+
* Consider cursor-based pagination for high-offset use cases.
|
|
14
|
+
*
|
|
8
15
|
* @param params - Parameters for the search operation
|
|
9
16
|
* @returns Array of matching items with optional similarity scores
|
|
10
17
|
* @throws Error if the operation fails or validation fails
|
|
@@ -14,12 +21,12 @@ const searchOperationAction = async (params) => {
|
|
|
14
21
|
const limit = op.limit ?? 100;
|
|
15
22
|
const offset = op.offset ?? 0;
|
|
16
23
|
// Validate inputs
|
|
17
|
-
(0,
|
|
24
|
+
(0, utils_2.validateUserId)(userId);
|
|
18
25
|
// Allow empty namespace prefix to search all namespaces
|
|
19
26
|
if (op.namespacePrefix.length > 0) {
|
|
20
|
-
(0,
|
|
27
|
+
(0, utils_2.validateNamespace)(op.namespacePrefix);
|
|
21
28
|
}
|
|
22
|
-
(0,
|
|
29
|
+
(0, utils_2.validatePagination)(limit, offset);
|
|
23
30
|
const namespacePrefix = op.namespacePrefix.join('/');
|
|
24
31
|
const queryParams = {
|
|
25
32
|
TableName: memoryTableName,
|
|
@@ -40,13 +47,18 @@ const searchOperationAction = async (params) => {
|
|
|
40
47
|
queryParams.ExpressionAttributeValues = expressionAttributeValues;
|
|
41
48
|
// Build filter expression if provided
|
|
42
49
|
if (op.filter && Object.keys(op.filter).length > 0) {
|
|
43
|
-
const filterResult = (0,
|
|
50
|
+
const filterResult = (0, utils_2.buildFilterExpression)(op.filter, expressionAttributeNames, expressionAttributeValues);
|
|
44
51
|
if (filterResult.filterExpression) {
|
|
45
52
|
queryParams.FilterExpression = filterResult.filterExpression;
|
|
46
53
|
queryParams.ExpressionAttributeNames = expressionAttributeNames;
|
|
47
54
|
queryParams.ExpressionAttributeValues = expressionAttributeValues;
|
|
48
55
|
}
|
|
49
56
|
}
|
|
57
|
+
// When semantic search is requested, we must fetch ALL matching items so that
|
|
58
|
+
// cosine similarity ranking operates on the full corpus — not just an arbitrary
|
|
59
|
+
// DynamoDB page. For non-semantic queries we keep the original capped fetch.
|
|
60
|
+
const isSemanticSearch = !!op.query && !!embedding;
|
|
61
|
+
const fetchTarget = isSemanticSearch ? undefined : limit + offset;
|
|
50
62
|
const items = [];
|
|
51
63
|
let lastEvaluatedKey;
|
|
52
64
|
let scannedCount = 0;
|
|
@@ -55,20 +67,20 @@ const searchOperationAction = async (params) => {
|
|
|
55
67
|
do {
|
|
56
68
|
// Prevent infinite loops
|
|
57
69
|
iterationCount++;
|
|
58
|
-
if (iterationCount >
|
|
70
|
+
if (iterationCount > utils_2.ValidationConstants.MAX_LOOP_ITERATIONS) {
|
|
59
71
|
throw new Error('Search operation exceeded maximum iteration limit');
|
|
60
72
|
}
|
|
61
|
-
queryParams.Limit = Math.max(1,
|
|
73
|
+
queryParams.Limit = fetchTarget ? Math.max(1, fetchTarget - scannedCount) : undefined;
|
|
62
74
|
if (lastEvaluatedKey) {
|
|
63
75
|
queryParams.ExclusiveStartKey = lastEvaluatedKey;
|
|
64
76
|
}
|
|
65
|
-
const response = await (0,
|
|
77
|
+
const response = await (0, utils_2.withDynamoDBRetry)(async () => {
|
|
66
78
|
return await client.query(queryParams);
|
|
67
79
|
});
|
|
68
80
|
scannedCount += response.ScannedCount ?? 0;
|
|
69
81
|
if (response.Items && response.Items.length > 0) {
|
|
70
82
|
// Prevent memory exhaustion
|
|
71
|
-
if (items.length + response.Items.length >
|
|
83
|
+
if (items.length + response.Items.length > utils_2.ValidationConstants.MAX_TOTAL_ITEMS_IN_MEMORY) {
|
|
72
84
|
throw new Error('Search operation exceeded maximum items in memory limit');
|
|
73
85
|
}
|
|
74
86
|
items.push(...response.Items);
|
|
@@ -76,24 +88,31 @@ const searchOperationAction = async (params) => {
|
|
|
76
88
|
lastEvaluatedKey = response.LastEvaluatedKey;
|
|
77
89
|
if (!lastEvaluatedKey)
|
|
78
90
|
break;
|
|
79
|
-
if (items.length >=
|
|
91
|
+
if (fetchTarget && items.length >= fetchTarget)
|
|
80
92
|
break;
|
|
81
|
-
if (scannedCount >=
|
|
93
|
+
if (fetchTarget && scannedCount >= fetchTarget)
|
|
82
94
|
break;
|
|
83
|
-
} while (
|
|
84
|
-
//
|
|
85
|
-
|
|
95
|
+
} while (lastEvaluatedKey);
|
|
96
|
+
// Warn if semantic search corpus was truncated
|
|
97
|
+
if (isSemanticSearch && lastEvaluatedKey) {
|
|
98
|
+
(0, utils_1.getLogger)().warn(`Semantic search corpus truncated at ${utils_2.ValidationConstants.MAX_TOTAL_ITEMS_IN_MEMORY} items — results may not include the most relevant matches`);
|
|
99
|
+
}
|
|
86
100
|
if (items.length > 0) {
|
|
87
|
-
let paginatedItems
|
|
88
|
-
if (
|
|
89
|
-
|
|
101
|
+
let paginatedItems;
|
|
102
|
+
if (isSemanticSearch) {
|
|
103
|
+
// Rank the ENTIRE corpus by similarity, then paginate
|
|
104
|
+
const ranked = await applySemanticSearch(items, op.query, embedding);
|
|
105
|
+
paginatedItems = ranked.slice(offset, offset + limit);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
paginatedItems = items.slice(offset, offset + limit);
|
|
90
109
|
}
|
|
91
110
|
return paginatedItems.map((item) => ({
|
|
92
111
|
namespace: item.namespace.split('/'),
|
|
93
112
|
key: item.key,
|
|
94
113
|
value: item.value,
|
|
95
|
-
createdAt: item.createdAt,
|
|
96
|
-
updatedAt: item.updatedAt,
|
|
114
|
+
createdAt: new Date(item.createdAt),
|
|
115
|
+
updatedAt: new Date(item.updatedAt),
|
|
97
116
|
score: item.score,
|
|
98
117
|
}));
|
|
99
118
|
}
|
|
@@ -127,8 +146,9 @@ async function applySemanticSearch(items, query, embedding) {
|
|
|
127
146
|
itemsWithScores.sort((a, b) => b.score - a.score);
|
|
128
147
|
return itemsWithScores.map((result) => result.item);
|
|
129
148
|
}
|
|
130
|
-
catch {
|
|
131
|
-
//
|
|
149
|
+
catch (error) {
|
|
150
|
+
// Log the failure for observability but fall back to returning original items
|
|
151
|
+
(0, utils_1.getLogger)().warn('Semantic search failed, falling back to unranked results:', error);
|
|
132
152
|
return items;
|
|
133
153
|
}
|
|
134
154
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-operation.js","sourceRoot":"","sources":["../../../src/store/actions/search-operation.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"search-operation.js","sourceRoot":"","sources":["../../../src/store/actions/search-operation.ts"],"names":[],"mappings":"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"}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* DynamoDB-based store implementation for LangGraph
|
|
3
3
|
* Provides persistent storage for memory items with optional semantic search via embeddings
|
|
4
4
|
*/
|
|
5
|
-
import { BaseStore, type Operation, type OperationResults } from '@langchain/langgraph';
|
|
6
5
|
import type { RunnableConfig } from '@langchain/core/runnables';
|
|
6
|
+
import { BaseStore, type Operation, type OperationResults } from '@langchain/langgraph';
|
|
7
7
|
import type { DynamoDBStoreOptions } from './types';
|
|
8
8
|
export declare class DynamoDBStore extends BaseStore {
|
|
9
9
|
private readonly ddbClient;
|
|
@@ -11,16 +11,24 @@ export declare class DynamoDBStore extends BaseStore {
|
|
|
11
11
|
private readonly memoryTableName;
|
|
12
12
|
private readonly embedding?;
|
|
13
13
|
private readonly ttlDays?;
|
|
14
|
+
private readonly ownsClient;
|
|
14
15
|
/**
|
|
15
16
|
* Create a new DynamoDB store instance
|
|
16
17
|
*
|
|
17
18
|
* @param options - Configuration options for the store
|
|
18
19
|
* @param options.memoryTableName - Name of the DynamoDB table to use
|
|
19
|
-
* @param options.embedding - Optional
|
|
20
|
+
* @param options.embedding - Optional embeddings for semantic search (any LangChain Embeddings provider)
|
|
20
21
|
* @param options.clientConfig - Optional DynamoDB client configuration
|
|
22
|
+
* @param options.client - Optional pre-built DynamoDBDocument client (takes precedence over clientConfig)
|
|
21
23
|
* @param options.ttlDays - Optional TTL in days for stored items
|
|
22
24
|
*/
|
|
23
25
|
constructor(options: DynamoDBStoreOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Release underlying DynamoDB client resources.
|
|
28
|
+
* Call this when the store is no longer needed to prevent resource leaks.
|
|
29
|
+
* Skips cleanup if a shared client was injected via options.
|
|
30
|
+
*/
|
|
31
|
+
destroy(): void;
|
|
24
32
|
/**
|
|
25
33
|
* Extract and validate user ID from config
|
|
26
34
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,SAAS,EAMT,KAAK,SAAS,EACd,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGpD,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC;;;;;;;;;OASG;gBACS,OAAO,EAAE,oBAAoB;IAgBzC;;;;OAIG;IACH,OAAO,IAAI,IAAI;IAMf;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAQjB;;;;;;;OAOG;IACG,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,EAChC,UAAU,EAAE,EAAE,EACd,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IA+BhC;;;;;;OAMG;YACW,YAAY;IAS1B;;;;;OAKG;YACW,YAAY;IAW1B;;;;;;OAMG;YACW,eAAe;IAU7B;;;;;;OAMG;YACW,uBAAuB;CAWtC"}
|
package/dist/store/index.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.DynamoDBStore = void 0;
|
|
8
|
-
const langgraph_1 = require("@langchain/langgraph");
|
|
9
8
|
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
10
9
|
const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
|
|
10
|
+
const langgraph_1 = require("@langchain/langgraph");
|
|
11
11
|
const actions_1 = require("./actions");
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
13
|
class DynamoDBStore extends langgraph_1.BaseStore {
|
|
@@ -16,23 +16,43 @@ class DynamoDBStore extends langgraph_1.BaseStore {
|
|
|
16
16
|
memoryTableName;
|
|
17
17
|
embedding;
|
|
18
18
|
ttlDays;
|
|
19
|
+
ownsClient;
|
|
19
20
|
/**
|
|
20
21
|
* Create a new DynamoDB store instance
|
|
21
22
|
*
|
|
22
23
|
* @param options - Configuration options for the store
|
|
23
24
|
* @param options.memoryTableName - Name of the DynamoDB table to use
|
|
24
|
-
* @param options.embedding - Optional
|
|
25
|
+
* @param options.embedding - Optional embeddings for semantic search (any LangChain Embeddings provider)
|
|
25
26
|
* @param options.clientConfig - Optional DynamoDB client configuration
|
|
27
|
+
* @param options.client - Optional pre-built DynamoDBDocument client (takes precedence over clientConfig)
|
|
26
28
|
* @param options.ttlDays - Optional TTL in days for stored items
|
|
27
29
|
*/
|
|
28
30
|
constructor(options) {
|
|
29
31
|
super();
|
|
30
32
|
this.memoryTableName = options.memoryTableName;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
+
if (options.client) {
|
|
34
|
+
this.client = options.client;
|
|
35
|
+
this.ddbClient = undefined;
|
|
36
|
+
this.ownsClient = false;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.ddbClient = new client_dynamodb_1.DynamoDBClient(options.clientConfig || {});
|
|
40
|
+
this.client = lib_dynamodb_1.DynamoDBDocument.from(this.ddbClient);
|
|
41
|
+
this.ownsClient = true;
|
|
42
|
+
}
|
|
33
43
|
this.embedding = options.embedding;
|
|
34
44
|
this.ttlDays = options.ttlDays;
|
|
35
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Release underlying DynamoDB client resources.
|
|
48
|
+
* Call this when the store is no longer needed to prevent resource leaks.
|
|
49
|
+
* Skips cleanup if a shared client was injected via options.
|
|
50
|
+
*/
|
|
51
|
+
destroy() {
|
|
52
|
+
if (this.ownsClient && this.ddbClient) {
|
|
53
|
+
this.ddbClient.destroy();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
36
56
|
/**
|
|
37
57
|
* Extract and validate user ID from config
|
|
38
58
|
*
|
|
@@ -59,7 +79,10 @@ class DynamoDBStore extends langgraph_1.BaseStore {
|
|
|
59
79
|
const userId = this.getUserId(config);
|
|
60
80
|
// Validate batch size to prevent resource exhaustion
|
|
61
81
|
(0, utils_1.validateBatchSize)(operations.length);
|
|
62
|
-
//
|
|
82
|
+
// Operation type dispatch — relies on LangGraph's Operation union discriminating
|
|
83
|
+
// properties: GetOperation has {namespace, key}, PutOperation adds {value},
|
|
84
|
+
// SearchOperation has {namespacePrefix}, ListNamespacesOperation has {limit, offset}
|
|
85
|
+
// without {namespacePrefix} or {key}. This mirrors the official LangGraph stores.
|
|
63
86
|
const promises = operations.map(async (op, index) => {
|
|
64
87
|
if ('key' in op && !('value' in op)) {
|
|
65
88
|
return await this.getOperation(userId, op);
|
package/dist/store/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BedrockEmbeddings } from '@langchain/aws';
|
|
2
1
|
import { DynamoDBClientConfig } from '@aws-sdk/client-dynamodb';
|
|
3
2
|
import { DynamoDBDocument } from '@aws-sdk/lib-dynamodb';
|
|
3
|
+
import type { EmbeddingsInterface } from '@langchain/core/embeddings';
|
|
4
4
|
import { GetOperation, type ListNamespacesOperation, type PutOperation, type SearchOperation } from '@langchain/langgraph';
|
|
5
5
|
/**
|
|
6
6
|
* Namespace path - array of strings with optional wildcards
|
|
@@ -12,12 +12,14 @@ export type NamespacePath = (string | '*')[];
|
|
|
12
12
|
export interface DynamoDBStoreOptions {
|
|
13
13
|
/** Name of the DynamoDB table to use for storage */
|
|
14
14
|
memoryTableName: string;
|
|
15
|
-
/** Optional
|
|
16
|
-
embedding?:
|
|
15
|
+
/** Optional embeddings for semantic search (any LangChain Embeddings provider) */
|
|
16
|
+
embedding?: EmbeddingsInterface;
|
|
17
17
|
/** Optional DynamoDB client configuration */
|
|
18
18
|
clientConfig?: DynamoDBClientConfig;
|
|
19
19
|
/** Optional TTL in days for stored items (1-1825 days) */
|
|
20
20
|
ttlDays?: number;
|
|
21
|
+
/** Optional pre-built DynamoDBDocument client (takes precedence over clientConfig) */
|
|
22
|
+
client?: DynamoDBDocument;
|
|
21
23
|
}
|
|
22
24
|
/**
|
|
23
25
|
* Parameters for put operation action
|
|
@@ -32,7 +34,7 @@ export interface PutOperationActionParams {
|
|
|
32
34
|
/** Put operation parameters */
|
|
33
35
|
op: PutOperation;
|
|
34
36
|
/** Optional embeddings for semantic search */
|
|
35
|
-
embedding?:
|
|
37
|
+
embedding?: EmbeddingsInterface;
|
|
36
38
|
/** Optional TTL in days */
|
|
37
39
|
ttlDays?: number;
|
|
38
40
|
}
|
|
@@ -62,7 +64,7 @@ export interface SearchOperationActionParams {
|
|
|
62
64
|
/** Search operation parameters */
|
|
63
65
|
op: SearchOperation;
|
|
64
66
|
/** Optional embeddings for semantic search */
|
|
65
|
-
embedding?:
|
|
67
|
+
embedding?: EmbeddingsInterface;
|
|
66
68
|
}
|
|
67
69
|
/**
|
|
68
70
|
* Parameters for list namespaces operation action
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,6CAA6C;IAC7C,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,EAAE,EAAE,YAAY,CAAC;IACjB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,EAAE,EAAE,YAAY,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,EAAE,EAAE,eAAe,CAAC;IACpB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,EAAE,EAAE,uBAAuB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,eAAe;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,mBAAmB;IACnB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AAEzB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -18,7 +18,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.withRetry = exports.withDynamoDBRetry = void 0;
|
|
21
|
-
__exportStar(require("./result"), exports);
|
|
22
21
|
__exportStar(require("./validation"), exports);
|
|
23
22
|
__exportStar(require("./filter"), exports);
|
|
24
23
|
// Retry utilities re-exported from shared
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,2CAAyB;AACzB,0CAA0C;AAC1C,4CAAqF;AAA5E,0GAAA,iBAAiB,OAAA;AAAE,kGAAA,SAAS,OAAA"}
|
|
@@ -83,7 +83,7 @@ function validateValue(value) {
|
|
|
83
83
|
if (value === undefined) {
|
|
84
84
|
throw new ValidationError('Value cannot be undefined');
|
|
85
85
|
}
|
|
86
|
-
const size = JSON.stringify(value).
|
|
86
|
+
const size = new TextEncoder().encode(JSON.stringify(value)).byteLength;
|
|
87
87
|
if (size > MAX_VALUE_SIZE) {
|
|
88
88
|
throw new ValidationError(`Value size (${size} bytes) exceeds maximum of ${MAX_VALUE_SIZE} bytes`);
|
|
89
89
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/store/utils/validation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/store/utils/validation.ts"],"names":[],"mappings":"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"}
|