@farukada/aws-langgraph-dynamodb-ts 0.0.2
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/LICENSE +21 -0
- package/README.md +960 -0
- package/dist/checkpointer/actions/delete-thread.d.ts +9 -0
- package/dist/checkpointer/actions/delete-thread.d.ts.map +1 -0
- package/dist/checkpointer/actions/delete-thread.js +109 -0
- package/dist/checkpointer/actions/delete-thread.js.map +1 -0
- package/dist/checkpointer/actions/get-tuple.d.ts +11 -0
- package/dist/checkpointer/actions/get-tuple.d.ts.map +1 -0
- package/dist/checkpointer/actions/get-tuple.js +96 -0
- package/dist/checkpointer/actions/get-tuple.js.map +1 -0
- package/dist/checkpointer/actions/index.d.ts +5 -0
- package/dist/checkpointer/actions/index.d.ts.map +1 -0
- package/dist/checkpointer/actions/index.js +21 -0
- package/dist/checkpointer/actions/index.js.map +1 -0
- package/dist/checkpointer/actions/put-writes.d.ts +9 -0
- package/dist/checkpointer/actions/put-writes.d.ts.map +1 -0
- package/dist/checkpointer/actions/put-writes.js +63 -0
- package/dist/checkpointer/actions/put-writes.js.map +1 -0
- package/dist/checkpointer/actions/put.d.ts +11 -0
- package/dist/checkpointer/actions/put.d.ts.map +1 -0
- package/dist/checkpointer/actions/put.js +55 -0
- package/dist/checkpointer/actions/put.js.map +1 -0
- package/dist/checkpointer/actions/validate-configurable.d.ts +10 -0
- package/dist/checkpointer/actions/validate-configurable.d.ts.map +1 -0
- package/dist/checkpointer/actions/validate-configurable.js +39 -0
- package/dist/checkpointer/actions/validate-configurable.js.map +1 -0
- package/dist/checkpointer/actions/writer.d.ts +50 -0
- package/dist/checkpointer/actions/writer.d.ts.map +1 -0
- package/dist/checkpointer/actions/writer.js +109 -0
- package/dist/checkpointer/actions/writer.js.map +1 -0
- package/dist/checkpointer/index.d.ts +70 -0
- package/dist/checkpointer/index.d.ts.map +1 -0
- package/dist/checkpointer/index.js +172 -0
- package/dist/checkpointer/index.js.map +1 -0
- package/dist/checkpointer/types/index.d.ts +162 -0
- package/dist/checkpointer/types/index.d.ts.map +1 -0
- package/dist/checkpointer/types/index.js +3 -0
- package/dist/checkpointer/types/index.js.map +1 -0
- package/dist/checkpointer/utils/index.d.ts +6 -0
- package/dist/checkpointer/utils/index.d.ts.map +1 -0
- package/dist/checkpointer/utils/index.js +26 -0
- package/dist/checkpointer/utils/index.js.map +1 -0
- package/dist/checkpointer/utils/validation.d.ts +48 -0
- package/dist/checkpointer/utils/validation.d.ts.map +1 -0
- package/dist/checkpointer/utils/validation.js +190 -0
- package/dist/checkpointer/utils/validation.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +21 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/utils/constants.d.ts +11 -0
- package/dist/shared/utils/constants.d.ts.map +1 -0
- package/dist/shared/utils/constants.js +35 -0
- package/dist/shared/utils/constants.js.map +1 -0
- package/dist/shared/utils/index.d.ts +6 -0
- package/dist/shared/utils/index.d.ts.map +1 -0
- package/dist/shared/utils/index.js +22 -0
- package/dist/shared/utils/index.js.map +1 -0
- package/dist/shared/utils/retry.d.ts +19 -0
- package/dist/shared/utils/retry.d.ts.map +1 -0
- package/dist/shared/utils/retry.js +102 -0
- package/dist/shared/utils/retry.js.map +1 -0
- package/dist/store/actions/get-operation.d.ts +11 -0
- package/dist/store/actions/get-operation.d.ts.map +1 -0
- package/dist/store/actions/get-operation.js +42 -0
- package/dist/store/actions/get-operation.js.map +1 -0
- package/dist/store/actions/index.d.ts +5 -0
- package/dist/store/actions/index.d.ts.map +1 -0
- package/dist/store/actions/index.js +21 -0
- package/dist/store/actions/index.js.map +1 -0
- package/dist/store/actions/list-namespaces-operation.d.ts +10 -0
- package/dist/store/actions/list-namespaces-operation.d.ts.map +1 -0
- package/dist/store/actions/list-namespaces-operation.js +212 -0
- package/dist/store/actions/list-namespaces-operation.js.map +1 -0
- package/dist/store/actions/put-operation.d.ts +9 -0
- package/dist/store/actions/put-operation.d.ts.map +1 -0
- package/dist/store/actions/put-operation.js +94 -0
- package/dist/store/actions/put-operation.js.map +1 -0
- package/dist/store/actions/search-operation.d.ts +11 -0
- package/dist/store/actions/search-operation.d.ts.map +1 -0
- package/dist/store/actions/search-operation.js +150 -0
- package/dist/store/actions/search-operation.js.map +1 -0
- package/dist/store/index.d.ts +73 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +145 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/types/index.d.ts +97 -0
- package/dist/store/types/index.d.ts.map +1 -0
- package/dist/store/types/index.js +3 -0
- package/dist/store/types/index.js.map +1 -0
- package/dist/store/utils/filter.d.ts +16 -0
- package/dist/store/utils/filter.d.ts.map +1 -0
- package/dist/store/utils/filter.js +71 -0
- package/dist/store/utils/filter.js.map +1 -0
- package/dist/store/utils/index.d.ts +8 -0
- package/dist/store/utils/index.d.ts.map +1 -0
- package/dist/store/utils/index.js +28 -0
- package/dist/store/utils/index.js.map +1 -0
- package/dist/store/utils/result.d.ts +42 -0
- package/dist/store/utils/result.d.ts.map +1 -0
- package/dist/store/utils/result.js +51 -0
- package/dist/store/utils/result.js.map +1 -0
- package/dist/store/utils/validation.d.ts +57 -0
- package/dist/store/utils/validation.d.ts.map +1 -0
- package/dist/store/utils/validation.js +243 -0
- package/dist/store/utils/validation.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validation utilities for store operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ValidationConstants = exports.ValidationError = void 0;
|
|
7
|
+
exports.validateNamespace = validateNamespace;
|
|
8
|
+
exports.validateKey = validateKey;
|
|
9
|
+
exports.validateValue = validateValue;
|
|
10
|
+
exports.validatePagination = validatePagination;
|
|
11
|
+
exports.validateTTL = validateTTL;
|
|
12
|
+
exports.validateEmbeddings = validateEmbeddings;
|
|
13
|
+
exports.validateUserId = validateUserId;
|
|
14
|
+
exports.validateJSONPath = validateJSONPath;
|
|
15
|
+
exports.validateMaxDepth = validateMaxDepth;
|
|
16
|
+
exports.validateBatchSize = validateBatchSize;
|
|
17
|
+
const utils_1 = require("../../shared/utils");
|
|
18
|
+
const MAX_KEY_LENGTH = 1024;
|
|
19
|
+
const MAX_NAMESPACE_DEPTH = 20;
|
|
20
|
+
const MAX_VALUE_SIZE = 400 * 1024; // 400KB (DynamoDB item size limit is 400KB)
|
|
21
|
+
const MAX_EMBEDDING_DIMENSIONS = 10000;
|
|
22
|
+
const MAX_EMBEDDINGS_PER_ITEM = 100;
|
|
23
|
+
const MAX_OFFSET = 10000; // Prevent resource exhaustion
|
|
24
|
+
const MAX_DEPTH = 100; // Maximum depth for namespace listing
|
|
25
|
+
const MAX_BATCH_SIZE = 100; // Maximum operations in a single batch
|
|
26
|
+
const MAX_JSONPATH_LENGTH = 500; // Maximum length for JSONPath expressions
|
|
27
|
+
class ValidationError extends Error {
|
|
28
|
+
constructor(message) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.name = 'ValidationError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.ValidationError = ValidationError;
|
|
34
|
+
/**
|
|
35
|
+
* Validate namespace array
|
|
36
|
+
*/
|
|
37
|
+
function validateNamespace(namespace) {
|
|
38
|
+
if (!Array.isArray(namespace)) {
|
|
39
|
+
throw new ValidationError('Namespace must be an array');
|
|
40
|
+
}
|
|
41
|
+
if (namespace.length === 0) {
|
|
42
|
+
throw new ValidationError('Namespace cannot be empty');
|
|
43
|
+
}
|
|
44
|
+
if (namespace.length > MAX_NAMESPACE_DEPTH) {
|
|
45
|
+
throw new ValidationError(`Namespace depth exceeds maximum of ${MAX_NAMESPACE_DEPTH} levels`);
|
|
46
|
+
}
|
|
47
|
+
for (const part of namespace) {
|
|
48
|
+
if (typeof part !== 'string') {
|
|
49
|
+
throw new ValidationError('Namespace parts must be strings');
|
|
50
|
+
}
|
|
51
|
+
if (part.length === 0) {
|
|
52
|
+
throw new ValidationError('Namespace parts cannot be empty strings');
|
|
53
|
+
}
|
|
54
|
+
if (part.includes('#')) {
|
|
55
|
+
throw new ValidationError('Namespace parts cannot contain "#" character');
|
|
56
|
+
}
|
|
57
|
+
if (part.includes('/')) {
|
|
58
|
+
throw new ValidationError('Namespace parts cannot contain "/" character');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Validate key string
|
|
64
|
+
*/
|
|
65
|
+
function validateKey(key) {
|
|
66
|
+
if (typeof key !== 'string') {
|
|
67
|
+
throw new ValidationError('Key must be a string');
|
|
68
|
+
}
|
|
69
|
+
if (key.length === 0) {
|
|
70
|
+
throw new ValidationError('Key cannot be empty');
|
|
71
|
+
}
|
|
72
|
+
if (key.length > MAX_KEY_LENGTH) {
|
|
73
|
+
throw new ValidationError(`Key exceeds maximum length of ${MAX_KEY_LENGTH} characters`);
|
|
74
|
+
}
|
|
75
|
+
if (key.includes('#')) {
|
|
76
|
+
throw new ValidationError('Key cannot contain "#" character');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Validate value size
|
|
81
|
+
*/
|
|
82
|
+
function validateValue(value) {
|
|
83
|
+
if (value === undefined) {
|
|
84
|
+
throw new ValidationError('Value cannot be undefined');
|
|
85
|
+
}
|
|
86
|
+
const size = JSON.stringify(value).length;
|
|
87
|
+
if (size > MAX_VALUE_SIZE) {
|
|
88
|
+
throw new ValidationError(`Value size (${size} bytes) exceeds maximum of ${MAX_VALUE_SIZE} bytes`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate pagination parameters
|
|
93
|
+
*/
|
|
94
|
+
function validatePagination(limit, offset) {
|
|
95
|
+
if (limit !== undefined) {
|
|
96
|
+
if (typeof limit !== 'number' || !Number.isInteger(limit)) {
|
|
97
|
+
throw new ValidationError('Limit must be an integer');
|
|
98
|
+
}
|
|
99
|
+
if (limit < 0) {
|
|
100
|
+
throw new ValidationError('Limit cannot be negative');
|
|
101
|
+
}
|
|
102
|
+
if (limit > 1000) {
|
|
103
|
+
throw new ValidationError('Limit cannot exceed 1000');
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (offset !== undefined) {
|
|
107
|
+
if (typeof offset !== 'number' || !Number.isInteger(offset)) {
|
|
108
|
+
throw new ValidationError('Offset must be an integer');
|
|
109
|
+
}
|
|
110
|
+
if (offset < 0) {
|
|
111
|
+
throw new ValidationError('Offset cannot be negative');
|
|
112
|
+
}
|
|
113
|
+
if (offset > MAX_OFFSET) {
|
|
114
|
+
throw new ValidationError(`Offset cannot exceed ${MAX_OFFSET}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validate TTL days (wraps shared validation with store-specific error type)
|
|
120
|
+
*/
|
|
121
|
+
function validateTTL(ttlDays) {
|
|
122
|
+
try {
|
|
123
|
+
(0, utils_1.validateTTLDays)(ttlDays);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new ValidationError(error instanceof Error ? error.message : String(error));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Validate embeddings
|
|
131
|
+
*/
|
|
132
|
+
function validateEmbeddings(embeddings) {
|
|
133
|
+
if (!embeddings) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (!Array.isArray(embeddings)) {
|
|
137
|
+
throw new ValidationError('Embeddings must be an array');
|
|
138
|
+
}
|
|
139
|
+
if (embeddings.length > MAX_EMBEDDINGS_PER_ITEM) {
|
|
140
|
+
throw new ValidationError(`Number of embeddings (${embeddings.length}) exceeds maximum of ${MAX_EMBEDDINGS_PER_ITEM}`);
|
|
141
|
+
}
|
|
142
|
+
for (const embedding of embeddings) {
|
|
143
|
+
if (!Array.isArray(embedding)) {
|
|
144
|
+
throw new ValidationError('Each embedding must be an array of numbers');
|
|
145
|
+
}
|
|
146
|
+
if (embedding.length === 0) {
|
|
147
|
+
throw new ValidationError('Embedding cannot be empty');
|
|
148
|
+
}
|
|
149
|
+
if (embedding.length > MAX_EMBEDDING_DIMENSIONS) {
|
|
150
|
+
throw new ValidationError(`Embedding dimensions (${embedding.length}) exceed maximum of ${MAX_EMBEDDING_DIMENSIONS}`);
|
|
151
|
+
}
|
|
152
|
+
for (const value of embedding) {
|
|
153
|
+
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
154
|
+
throw new ValidationError('Embedding values must be finite numbers');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Validate user ID
|
|
161
|
+
*/
|
|
162
|
+
function validateUserId(userId) {
|
|
163
|
+
if (typeof userId !== 'string') {
|
|
164
|
+
throw new ValidationError('User ID must be a string');
|
|
165
|
+
}
|
|
166
|
+
if (userId.length === 0) {
|
|
167
|
+
throw new ValidationError('User ID cannot be empty');
|
|
168
|
+
}
|
|
169
|
+
if (userId.length > 256) {
|
|
170
|
+
throw new ValidationError('User ID exceeds maximum length of 256 characters');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Validate JSONPath expressions to prevent injection attacks
|
|
175
|
+
*/
|
|
176
|
+
function validateJSONPath(paths) {
|
|
177
|
+
if (!Array.isArray(paths)) {
|
|
178
|
+
throw new ValidationError('JSONPath index must be an array');
|
|
179
|
+
}
|
|
180
|
+
if (paths.length === 0) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
if (paths.length > 50) {
|
|
184
|
+
throw new ValidationError('Too many JSONPath expressions (maximum 50)');
|
|
185
|
+
}
|
|
186
|
+
for (const path of paths) {
|
|
187
|
+
if (typeof path !== 'string') {
|
|
188
|
+
throw new ValidationError('JSONPath expression must be a string');
|
|
189
|
+
}
|
|
190
|
+
if (path.length === 0) {
|
|
191
|
+
throw new ValidationError('JSONPath expression cannot be empty');
|
|
192
|
+
}
|
|
193
|
+
if (path.length > MAX_JSONPATH_LENGTH) {
|
|
194
|
+
throw new ValidationError(`JSONPath expression exceeds maximum length of ${MAX_JSONPATH_LENGTH} characters`);
|
|
195
|
+
}
|
|
196
|
+
// Basic safety checks - disallow potentially dangerous patterns
|
|
197
|
+
if (path.includes('__proto__') || path.includes('constructor') || path.includes('prototype')) {
|
|
198
|
+
throw new ValidationError('JSONPath expression contains disallowed patterns');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Validate maxDepth parameter
|
|
204
|
+
*/
|
|
205
|
+
function validateMaxDepth(maxDepth) {
|
|
206
|
+
if (maxDepth === undefined) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (typeof maxDepth !== 'number' || !Number.isInteger(maxDepth)) {
|
|
210
|
+
throw new ValidationError('maxDepth must be an integer');
|
|
211
|
+
}
|
|
212
|
+
if (maxDepth < 1) {
|
|
213
|
+
throw new ValidationError('maxDepth must be at least 1');
|
|
214
|
+
}
|
|
215
|
+
if (maxDepth > MAX_DEPTH) {
|
|
216
|
+
throw new ValidationError(`maxDepth cannot exceed ${MAX_DEPTH}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Validate batch operations count
|
|
221
|
+
*/
|
|
222
|
+
function validateBatchSize(operationsCount) {
|
|
223
|
+
if (typeof operationsCount !== 'number' || !Number.isInteger(operationsCount)) {
|
|
224
|
+
throw new ValidationError('Operations count must be an integer');
|
|
225
|
+
}
|
|
226
|
+
if (operationsCount < 1) {
|
|
227
|
+
throw new ValidationError('Batch must contain at least one operation');
|
|
228
|
+
}
|
|
229
|
+
if (operationsCount > MAX_BATCH_SIZE) {
|
|
230
|
+
throw new ValidationError(`Batch size (${operationsCount}) exceeds maximum of ${MAX_BATCH_SIZE} operations`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Export constants for use in other modules
|
|
235
|
+
*/
|
|
236
|
+
exports.ValidationConstants = {
|
|
237
|
+
MAX_LOOP_ITERATIONS: utils_1.MAX_LOOP_ITERATIONS,
|
|
238
|
+
MAX_TOTAL_ITEMS_IN_MEMORY: utils_1.MAX_TOTAL_ITEMS_IN_MEMORY,
|
|
239
|
+
MAX_OFFSET,
|
|
240
|
+
MAX_DEPTH,
|
|
241
|
+
MAX_BATCH_SIZE,
|
|
242
|
+
};
|
|
243
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/store/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@farukada/aws-langgraph-dynamodb-ts",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "AWS DynamoDB implementation for LangGraph Memory Store and Checkpoint Saver in TypeScript",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"aws",
|
|
8
|
+
"dynamodb",
|
|
9
|
+
"langchain",
|
|
10
|
+
"langgraph",
|
|
11
|
+
"checkpointer",
|
|
12
|
+
"memory-store"
|
|
13
|
+
],
|
|
14
|
+
"author": "Faruk Ada <info@farukada.com>",
|
|
15
|
+
"homepage": "https://github.com/farukada/aws-langgraph-dynamodb-ts",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/farukada/aws-langgraph-dynamodb-ts"
|
|
19
|
+
},
|
|
20
|
+
"bugs": {
|
|
21
|
+
"url": "https://github.com/farukada/aws-langgraph-dynamodb-ts/issues"
|
|
22
|
+
},
|
|
23
|
+
"main": "dist/index.js",
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=20.0.0",
|
|
26
|
+
"npm": ">=10.0.0"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsc",
|
|
30
|
+
"typecheck": "tsc --noEmit",
|
|
31
|
+
"lint": "eslint src/**/*.ts",
|
|
32
|
+
"lint:fix": "eslint src/**/*.ts",
|
|
33
|
+
"format": "prettier --write \"src/**/*.{ts,js,json,md}\" \"test/**/*.{ts,js,json,md}\"",
|
|
34
|
+
"format:check": "prettier --check \"src/**/*.{ts,js,json,md}\" \"test/**/*.{ts,js,json,md}\"",
|
|
35
|
+
"test": "jest",
|
|
36
|
+
"docs": "typedoc",
|
|
37
|
+
"docs:watch": "typedoc --watch"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@aws-sdk/client-dynamodb": "^3.918.0",
|
|
41
|
+
"@aws-sdk/lib-dynamodb": "^3.918.0",
|
|
42
|
+
"@langchain/aws": "^1.0.0",
|
|
43
|
+
"@langchain/core": "^1.0.2",
|
|
44
|
+
"@langchain/langgraph": "^1.0.1",
|
|
45
|
+
"@langchain/langgraph-checkpoint": "^1.0.0",
|
|
46
|
+
"jsonpath": "^1.1.1"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@eslint/eslintrc": "^3.3.1",
|
|
50
|
+
"@eslint/js": "^9.38.0",
|
|
51
|
+
"@tsconfig/recommended": "^1.0.10",
|
|
52
|
+
"@types/jest": "^30.0.0",
|
|
53
|
+
"@types/jsonpath": "^0.2.4",
|
|
54
|
+
"aws-sdk-client-mock": "^4.1.0",
|
|
55
|
+
"eslint": "^9.38.0",
|
|
56
|
+
"eslint-config-prettier": "^10.1.8",
|
|
57
|
+
"eslint-plugin-import": "^2.32.0",
|
|
58
|
+
"eslint-plugin-no-instanceof": "^1.0.1",
|
|
59
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
60
|
+
"globals": "^16.4.0",
|
|
61
|
+
"jest": "^30.2.0",
|
|
62
|
+
"jest-sonar": "^0.2.16",
|
|
63
|
+
"jiti": "^2.6.1",
|
|
64
|
+
"prettier": "^3.6.2",
|
|
65
|
+
"ts-jest": "^29.4.5",
|
|
66
|
+
"ts-loader": "^9.5.4",
|
|
67
|
+
"ts-node": "^10.9.2",
|
|
68
|
+
"typedoc": "^0.28.14",
|
|
69
|
+
"typedoc-plugin-markdown": "^4.9.0",
|
|
70
|
+
"typescript": "^5.5.3",
|
|
71
|
+
"typescript-eslint": "^8.46.2"
|
|
72
|
+
},
|
|
73
|
+
"prettier": {
|
|
74
|
+
"semi": true,
|
|
75
|
+
"singleQuote": true,
|
|
76
|
+
"printWidth": 100,
|
|
77
|
+
"tabWidth": 2,
|
|
78
|
+
"trailingComma": "all"
|
|
79
|
+
},
|
|
80
|
+
"files": [
|
|
81
|
+
"dist",
|
|
82
|
+
"LICENSE",
|
|
83
|
+
"README.md"
|
|
84
|
+
]
|
|
85
|
+
}
|