dyno-table 2.3.2 → 2.3.3

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 CHANGED
@@ -273,9 +273,3 @@ const largeDinos = await dinoRepo.batchGet([
273
273
  - **[Issues](https://github.com/Kysumi/dyno-table/issues)** - Report bugs or request features
274
274
  - **[Discussions](https://github.com/Kysumi/dyno-table/discussions)** - Ask questions and share ideas
275
275
  - **[NPM](https://www.npmjs.com/package/dyno-table)** - Package information
276
-
277
- ---
278
-
279
- <div align="center">
280
- <em>Built by developers who believe working with DynamoDB should be intuitive and type-safe</em>
281
- </div>
@@ -500,46 +500,49 @@ function defineEntity(config) {
500
500
  builder.condition(chunk7UJJ7JXM_cjs.eq(entityTypeAttributeName, config.name));
501
501
  return createEntityAwareDeleteBuilder(builder, config.name);
502
502
  },
503
- query: Object.entries(config.queries || {}).reduce((acc, [key, inputCallback]) => {
504
- acc[key] = (input) => {
505
- const queryEntity = {
506
- scan: repository.scan,
507
- get: (key2) => createEntityAwareGetBuilder(table.get(key2), config.name),
508
- query: (keyCondition) => {
509
- return table.query(keyCondition);
503
+ query: Object.entries(config.queries || {}).reduce(
504
+ (acc, [key, inputCallback]) => {
505
+ acc[key] = (input) => {
506
+ const queryEntity = {
507
+ scan: repository.scan,
508
+ get: (key2) => createEntityAwareGetBuilder(table.get(key2), config.name),
509
+ query: (keyCondition) => {
510
+ return table.query(keyCondition);
511
+ }
512
+ };
513
+ const queryBuilderCallback = inputCallback(input);
514
+ const builder = queryBuilderCallback(queryEntity);
515
+ if (builder && typeof builder === "object" && "filter" in builder && typeof builder.filter === "function") {
516
+ builder.filter(chunk7UJJ7JXM_cjs.eq(entityTypeAttributeName, config.name));
510
517
  }
511
- };
512
- const queryBuilderCallback = inputCallback(input);
513
- const builder = queryBuilderCallback(queryEntity);
514
- if (builder && typeof builder === "object" && "filter" in builder && typeof builder.filter === "function") {
515
- builder.filter(chunk7UJJ7JXM_cjs.eq(entityTypeAttributeName, config.name));
516
- }
517
- if (builder && typeof builder === "object" && "execute" in builder) {
518
- const originalExecute = builder.execute;
519
- builder.execute = async () => {
520
- const queryFn = config.queries[key];
521
- if (queryFn && typeof queryFn === "function") {
522
- const schema = queryFn.schema;
523
- if (schema?.["~standard"]?.validate && typeof schema["~standard"].validate === "function") {
524
- const validationResult = schema["~standard"].validate(input);
525
- if ("issues" in validationResult && validationResult.issues) {
526
- throw new Error(
527
- `Validation failed: ${validationResult.issues.map((issue) => issue.message).join(", ")}`
528
- );
518
+ if (builder && typeof builder === "object" && "execute" in builder) {
519
+ const originalExecute = builder.execute;
520
+ builder.execute = async () => {
521
+ const queryFn = config.queries[key];
522
+ if (queryFn && typeof queryFn === "function") {
523
+ const schema = queryFn.schema;
524
+ if (schema?.["~standard"]?.validate && typeof schema["~standard"].validate === "function") {
525
+ const validationResult = schema["~standard"].validate(input);
526
+ if ("issues" in validationResult && validationResult.issues) {
527
+ throw new Error(
528
+ `Validation failed: ${validationResult.issues.map((issue) => issue.message).join(", ")}`
529
+ );
530
+ }
529
531
  }
530
532
  }
531
- }
532
- const result = await originalExecute.call(builder);
533
- if (!result) {
534
- throw new Error("Failed to execute query");
535
- }
536
- return result;
537
- };
538
- }
539
- return builder;
540
- };
541
- return acc;
542
- }, {}),
533
+ const result = await originalExecute.call(builder);
534
+ if (!result) {
535
+ throw new Error("Failed to execute query");
536
+ }
537
+ return result;
538
+ };
539
+ }
540
+ return builder;
541
+ };
542
+ return acc;
543
+ },
544
+ {}
545
+ ),
543
546
  scan: () => {
544
547
  const builder = table.scan();
545
548
  builder.filter(chunk7UJJ7JXM_cjs.eq(entityTypeAttributeName, config.name));
@@ -498,46 +498,49 @@ function defineEntity(config) {
498
498
  builder.condition(eq(entityTypeAttributeName, config.name));
499
499
  return createEntityAwareDeleteBuilder(builder, config.name);
500
500
  },
501
- query: Object.entries(config.queries || {}).reduce((acc, [key, inputCallback]) => {
502
- acc[key] = (input) => {
503
- const queryEntity = {
504
- scan: repository.scan,
505
- get: (key2) => createEntityAwareGetBuilder(table.get(key2), config.name),
506
- query: (keyCondition) => {
507
- return table.query(keyCondition);
501
+ query: Object.entries(config.queries || {}).reduce(
502
+ (acc, [key, inputCallback]) => {
503
+ acc[key] = (input) => {
504
+ const queryEntity = {
505
+ scan: repository.scan,
506
+ get: (key2) => createEntityAwareGetBuilder(table.get(key2), config.name),
507
+ query: (keyCondition) => {
508
+ return table.query(keyCondition);
509
+ }
510
+ };
511
+ const queryBuilderCallback = inputCallback(input);
512
+ const builder = queryBuilderCallback(queryEntity);
513
+ if (builder && typeof builder === "object" && "filter" in builder && typeof builder.filter === "function") {
514
+ builder.filter(eq(entityTypeAttributeName, config.name));
508
515
  }
509
- };
510
- const queryBuilderCallback = inputCallback(input);
511
- const builder = queryBuilderCallback(queryEntity);
512
- if (builder && typeof builder === "object" && "filter" in builder && typeof builder.filter === "function") {
513
- builder.filter(eq(entityTypeAttributeName, config.name));
514
- }
515
- if (builder && typeof builder === "object" && "execute" in builder) {
516
- const originalExecute = builder.execute;
517
- builder.execute = async () => {
518
- const queryFn = config.queries[key];
519
- if (queryFn && typeof queryFn === "function") {
520
- const schema = queryFn.schema;
521
- if (schema?.["~standard"]?.validate && typeof schema["~standard"].validate === "function") {
522
- const validationResult = schema["~standard"].validate(input);
523
- if ("issues" in validationResult && validationResult.issues) {
524
- throw new Error(
525
- `Validation failed: ${validationResult.issues.map((issue) => issue.message).join(", ")}`
526
- );
516
+ if (builder && typeof builder === "object" && "execute" in builder) {
517
+ const originalExecute = builder.execute;
518
+ builder.execute = async () => {
519
+ const queryFn = config.queries[key];
520
+ if (queryFn && typeof queryFn === "function") {
521
+ const schema = queryFn.schema;
522
+ if (schema?.["~standard"]?.validate && typeof schema["~standard"].validate === "function") {
523
+ const validationResult = schema["~standard"].validate(input);
524
+ if ("issues" in validationResult && validationResult.issues) {
525
+ throw new Error(
526
+ `Validation failed: ${validationResult.issues.map((issue) => issue.message).join(", ")}`
527
+ );
528
+ }
527
529
  }
528
530
  }
529
- }
530
- const result = await originalExecute.call(builder);
531
- if (!result) {
532
- throw new Error("Failed to execute query");
533
- }
534
- return result;
535
- };
536
- }
537
- return builder;
538
- };
539
- return acc;
540
- }, {}),
531
+ const result = await originalExecute.call(builder);
532
+ if (!result) {
533
+ throw new Error("Failed to execute query");
534
+ }
535
+ return result;
536
+ };
537
+ }
538
+ return builder;
539
+ };
540
+ return acc;
541
+ },
542
+ {}
543
+ ),
541
544
  scan: () => {
542
545
  const builder = table.scan();
543
546
  builder.filter(eq(entityTypeAttributeName, config.name));
package/dist/entity.cjs CHANGED
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var chunkNTA6GDPP_cjs = require('./chunk-NTA6GDPP.cjs');
3
+ var chunk3J5DY7KG_cjs = require('./chunk-3J5DY7KG.cjs');
4
4
  require('./chunk-7UJJ7JXM.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "createIndex", {
9
9
  enumerable: true,
10
- get: function () { return chunkNTA6GDPP_cjs.createIndex; }
10
+ get: function () { return chunk3J5DY7KG_cjs.createIndex; }
11
11
  });
12
12
  Object.defineProperty(exports, "createQueries", {
13
13
  enumerable: true,
14
- get: function () { return chunkNTA6GDPP_cjs.createQueries; }
14
+ get: function () { return chunk3J5DY7KG_cjs.createQueries; }
15
15
  });
16
16
  Object.defineProperty(exports, "defineEntity", {
17
17
  enumerable: true,
18
- get: function () { return chunkNTA6GDPP_cjs.defineEntity; }
18
+ get: function () { return chunk3J5DY7KG_cjs.defineEntity; }
19
19
  });
package/dist/entity.d.cts CHANGED
@@ -112,6 +112,9 @@ type QueryFunctionWithSchema<T extends DynamoItem, I, R> = QueryFunction<T, I, R
112
112
  type QueryRecord<T extends DynamoItem> = {
113
113
  [K: string]: QueryFunctionWithSchema<T, any, any>;
114
114
  };
115
+ type MappedQueries<T extends DynamoItem, Q extends QueryRecord<T>> = {
116
+ [K in keyof Q]: Q[K] extends QueryFunctionWithSchema<T, infer I, infer R> ? (input: I) => R : never;
117
+ };
115
118
  type QueryEntity<T extends DynamoItem> = {
116
119
  scan: () => ScanBuilder<T>;
117
120
  get: (key: PrimaryKeyWithoutExpression) => EntityAwareGetBuilder<T>;
@@ -195,7 +198,7 @@ Q extends QueryRecord<T> = QueryRecord<T>> {
195
198
  get: (key: I) => EntityAwareGetBuilder<T>;
196
199
  update: (key: I, data: Partial<T>) => EntityAwareUpdateBuilder<T>;
197
200
  delete: (key: I) => EntityAwareDeleteBuilder;
198
- query: Q;
201
+ query: MappedQueries<T, Q>;
199
202
  scan: () => ScanBuilder<T>;
200
203
  }
201
204
  /**
@@ -255,4 +258,4 @@ declare function createIndex(): {
255
258
  };
256
259
  };
257
260
 
258
- export { type EntityConfig, type EntityRepository, type IndexDefinition, type QueryEntity, type QueryFunction, type QueryFunctionWithSchema, type QueryRecord, createIndex, createQueries, defineEntity };
261
+ export { type EntityConfig, type EntityRepository, type IndexDefinition, type MappedQueries, type QueryEntity, type QueryFunction, type QueryFunctionWithSchema, type QueryRecord, createIndex, createQueries, defineEntity };
package/dist/entity.d.ts CHANGED
@@ -112,6 +112,9 @@ type QueryFunctionWithSchema<T extends DynamoItem, I, R> = QueryFunction<T, I, R
112
112
  type QueryRecord<T extends DynamoItem> = {
113
113
  [K: string]: QueryFunctionWithSchema<T, any, any>;
114
114
  };
115
+ type MappedQueries<T extends DynamoItem, Q extends QueryRecord<T>> = {
116
+ [K in keyof Q]: Q[K] extends QueryFunctionWithSchema<T, infer I, infer R> ? (input: I) => R : never;
117
+ };
115
118
  type QueryEntity<T extends DynamoItem> = {
116
119
  scan: () => ScanBuilder<T>;
117
120
  get: (key: PrimaryKeyWithoutExpression) => EntityAwareGetBuilder<T>;
@@ -195,7 +198,7 @@ Q extends QueryRecord<T> = QueryRecord<T>> {
195
198
  get: (key: I) => EntityAwareGetBuilder<T>;
196
199
  update: (key: I, data: Partial<T>) => EntityAwareUpdateBuilder<T>;
197
200
  delete: (key: I) => EntityAwareDeleteBuilder;
198
- query: Q;
201
+ query: MappedQueries<T, Q>;
199
202
  scan: () => ScanBuilder<T>;
200
203
  }
201
204
  /**
@@ -255,4 +258,4 @@ declare function createIndex(): {
255
258
  };
256
259
  };
257
260
 
258
- export { type EntityConfig, type EntityRepository, type IndexDefinition, type QueryEntity, type QueryFunction, type QueryFunctionWithSchema, type QueryRecord, createIndex, createQueries, defineEntity };
261
+ export { type EntityConfig, type EntityRepository, type IndexDefinition, type MappedQueries, type QueryEntity, type QueryFunction, type QueryFunctionWithSchema, type QueryRecord, createIndex, createQueries, defineEntity };
package/dist/entity.js CHANGED
@@ -1,2 +1,2 @@
1
- export { createIndex, createQueries, defineEntity } from './chunk-2EWNZOUK.js';
1
+ export { createIndex, createQueries, defineEntity } from './chunk-M5Y6JQJN.js';
2
2
  import './chunk-2WIBY7PZ.js';
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkKA3VPIPS_cjs = require('./chunk-KA3VPIPS.cjs');
4
- var chunkNTA6GDPP_cjs = require('./chunk-NTA6GDPP.cjs');
4
+ var chunk3J5DY7KG_cjs = require('./chunk-3J5DY7KG.cjs');
5
5
  var chunkPB7BBCZO_cjs = require('./chunk-PB7BBCZO.cjs');
6
6
  var chunkXYL43FDX_cjs = require('./chunk-XYL43FDX.cjs');
7
7
  var chunk7UJJ7JXM_cjs = require('./chunk-7UJJ7JXM.cjs');
@@ -14,15 +14,15 @@ Object.defineProperty(exports, "Table", {
14
14
  });
15
15
  Object.defineProperty(exports, "createIndex", {
16
16
  enumerable: true,
17
- get: function () { return chunkNTA6GDPP_cjs.createIndex; }
17
+ get: function () { return chunk3J5DY7KG_cjs.createIndex; }
18
18
  });
19
19
  Object.defineProperty(exports, "createQueries", {
20
20
  enumerable: true,
21
- get: function () { return chunkNTA6GDPP_cjs.createQueries; }
21
+ get: function () { return chunk3J5DY7KG_cjs.createQueries; }
22
22
  });
23
23
  Object.defineProperty(exports, "defineEntity", {
24
24
  enumerable: true,
25
- get: function () { return chunkNTA6GDPP_cjs.defineEntity; }
25
+ get: function () { return chunk3J5DY7KG_cjs.defineEntity; }
26
26
  });
27
27
  Object.defineProperty(exports, "partitionKey", {
28
28
  enumerable: true,
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Table } from './chunk-EODPMYPE.js';
2
- export { createIndex, createQueries, defineEntity } from './chunk-2EWNZOUK.js';
2
+ export { createIndex, createQueries, defineEntity } from './chunk-M5Y6JQJN.js';
3
3
  export { partitionKey, sortKey } from './chunk-QVRMYGC4.js';
4
4
  export { BatchBuilder, BatchError, DeleteBuilder, PutBuilder, QueryBuilder, TransactionBuilder, UpdateBuilder } from './chunk-DTFJJASK.js';
5
5
  export { and, attributeExists, attributeNotExists, beginsWith, between, contains, eq, gt, gte, inArray, lt, lte, ne, not, or } from './chunk-2WIBY7PZ.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dyno-table",
3
- "version": "2.3.2",
3
+ "version": "2.3.3",
4
4
  "description": "A TypeScript library to simplify working with DynamoDB",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",