@ftschopp/dynatable-core 1.0.0 → 1.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +442 -2
  3. package/dist/builders/delete/types.d.ts +6 -1
  4. package/dist/builders/delete/types.d.ts.map +1 -1
  5. package/dist/builders/get/types.d.ts +6 -1
  6. package/dist/builders/get/types.d.ts.map +1 -1
  7. package/dist/builders/put/types.d.ts +6 -1
  8. package/dist/builders/put/types.d.ts.map +1 -1
  9. package/dist/builders/query/create-query-builder.d.ts +1 -1
  10. package/dist/builders/query/create-query-builder.d.ts.map +1 -1
  11. package/dist/builders/query/types.d.ts +9 -10
  12. package/dist/builders/query/types.d.ts.map +1 -1
  13. package/dist/builders/transact-write/create-transact-write-builder.d.ts.map +1 -1
  14. package/dist/builders/transact-write/create-transact-write-builder.js +1 -1
  15. package/dist/builders/transact-write/types.d.ts +33 -6
  16. package/dist/builders/transact-write/types.d.ts.map +1 -1
  17. package/dist/builders/update/create-update-builder.d.ts.map +1 -1
  18. package/dist/builders/update/create-update-builder.js +30 -9
  19. package/dist/builders/update/types.d.ts +8 -2
  20. package/dist/builders/update/types.d.ts.map +1 -1
  21. package/dist/core/types.d.ts +1 -0
  22. package/dist/core/types.d.ts.map +1 -1
  23. package/dist/entity/create-entity-api.d.ts +15 -0
  24. package/dist/entity/create-entity-api.d.ts.map +1 -0
  25. package/dist/entity/create-entity-api.js +124 -0
  26. package/dist/entity/index.d.ts +12 -0
  27. package/dist/entity/index.d.ts.map +1 -0
  28. package/dist/entity/index.js +18 -0
  29. package/dist/entity/middleware/factories.d.ts +6 -0
  30. package/dist/entity/middleware/factories.d.ts.map +1 -0
  31. package/dist/entity/middleware/factories.js +15 -0
  32. package/dist/entity/middleware/types.d.ts +8 -0
  33. package/dist/entity/middleware/types.d.ts.map +1 -0
  34. package/dist/entity/middleware/types.js +2 -0
  35. package/dist/entity/middleware/with-middleware.d.ts +8 -0
  36. package/dist/entity/middleware/with-middleware.d.ts.map +1 -0
  37. package/dist/entity/middleware/with-middleware.js +29 -0
  38. package/dist/{entity.d.ts → entity/types.d.ts} +6 -17
  39. package/dist/entity/types.d.ts.map +1 -0
  40. package/dist/entity/types.js +2 -0
  41. package/dist/entity/validation/key-validation.d.ts +7 -0
  42. package/dist/entity/validation/key-validation.d.ts.map +1 -0
  43. package/dist/entity/validation/key-validation.js +25 -0
  44. package/dist/table.d.ts +8 -1
  45. package/dist/table.d.ts.map +1 -1
  46. package/dist/table.js +1 -0
  47. package/dist/utils/model-utils.d.ts +7 -1
  48. package/dist/utils/model-utils.d.ts.map +1 -1
  49. package/dist/utils/model-utils.js +29 -1
  50. package/dist/utils/zod-utils.d.ts +1 -1
  51. package/package.json +3 -2
  52. package/src/builders/README.md +68 -1
  53. package/src/builders/delete/types.ts +7 -1
  54. package/src/builders/get/types.ts +7 -1
  55. package/src/builders/put/types.ts +7 -1
  56. package/src/builders/query/create-query-builder.ts +4 -6
  57. package/src/builders/query/types.ts +9 -12
  58. package/src/builders/transact-write/README.md +37 -1
  59. package/src/builders/transact-write/create-transact-write-builder.ts +20 -14
  60. package/src/builders/transact-write/types.ts +44 -6
  61. package/src/builders/update/create-update-builder.test.ts +43 -0
  62. package/src/builders/update/create-update-builder.ts +47 -9
  63. package/src/builders/update/types.ts +9 -2
  64. package/src/core/types.ts +1 -0
  65. package/src/entity/create-entity-api.ts +212 -0
  66. package/src/entity/index.ts +19 -0
  67. package/src/entity/middleware/factories.ts +15 -0
  68. package/src/entity/middleware/types.ts +7 -0
  69. package/src/entity/middleware/with-middleware.ts +37 -0
  70. package/src/entity/types.ts +79 -0
  71. package/src/entity/validation/key-validation.ts +34 -0
  72. package/src/table.ts +10 -3
  73. package/src/utils/model-utils.test.ts +131 -1
  74. package/src/utils/model-utils.ts +32 -0
  75. package/dist/entity.d.ts.map +0 -1
  76. package/dist/entity.js +0 -161
  77. package/src/entity.ts +0 -337
@@ -1,6 +1,32 @@
1
1
  import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import type { TransactWriteCommandInput, TransactWriteCommandOutput, PutCommandInput, UpdateCommandInput, DeleteCommandInput } from '@aws-sdk/lib-dynamodb';
3
+ type TransactWriteItems = NonNullable<TransactWriteCommandInput['TransactItems']>;
4
+ type StrictTransactPut = NonNullable<TransactWriteItems[number]['Put']>;
5
+ type StrictTransactUpdate = NonNullable<TransactWriteItems[number]['Update']>;
6
+ type StrictTransactDelete = NonNullable<TransactWriteItems[number]['Delete']>;
7
+ type StrictTransactConditionCheck = NonNullable<TransactWriteItems[number]['ConditionCheck']>;
8
+ /**
9
+ * Parameters for a Put operation within a transaction
10
+ * Accepts both regular PutCommandInput and strict transaction Put params
11
+ */
12
+ export type TransactPutParams = PutCommandInput | StrictTransactPut;
13
+ /**
14
+ * Parameters for an Update operation within a transaction
15
+ * Accepts both regular UpdateCommandInput and strict transaction Update params
16
+ */
17
+ export type TransactUpdateParams = UpdateCommandInput | StrictTransactUpdate;
18
+ /**
19
+ * Parameters for a Delete operation within a transaction
20
+ * Accepts both regular DeleteCommandInput and strict transaction Delete params
21
+ */
22
+ export type TransactDeleteParams = DeleteCommandInput | StrictTransactDelete;
23
+ /**
24
+ * Parameters for a ConditionCheck operation within a transaction
25
+ */
26
+ export type TransactConditionCheckParams = StrictTransactConditionCheck;
2
27
  /**
3
28
  * Represents a single item in a TransactWrite operation
29
+ * Using any internally to allow flexibility between CommandInput and strict transaction types
4
30
  */
5
31
  export type TransactWriteItem = {
6
32
  Put: any;
@@ -23,12 +49,13 @@ export type TransactWriteState = {
23
49
  * TransactWrite builder interface
24
50
  */
25
51
  export type TransactWriteBuilder = {
26
- readonly addPut: (params: any) => TransactWriteBuilder;
27
- readonly addUpdate: (params: any) => TransactWriteBuilder;
28
- readonly addDelete: (params: any) => TransactWriteBuilder;
29
- readonly addConditionCheck: (params: any) => TransactWriteBuilder;
52
+ readonly addPut: (params: TransactPutParams) => TransactWriteBuilder;
53
+ readonly addUpdate: (params: TransactUpdateParams) => TransactWriteBuilder;
54
+ readonly addDelete: (params: TransactDeleteParams) => TransactWriteBuilder;
55
+ readonly addConditionCheck: (params: TransactConditionCheckParams) => TransactWriteBuilder;
30
56
  readonly withClientRequestToken: (token: string) => TransactWriteBuilder;
31
- readonly dbParams: () => any;
32
- readonly execute: () => Promise<any>;
57
+ readonly dbParams: () => TransactWriteCommandInput;
58
+ readonly execute: () => Promise<TransactWriteCommandOutput>;
33
59
  };
60
+ export {};
34
61
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/transact-write/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,GACZ;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GACf;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GACf;IAAE,cAAc,EAAE,GAAG,CAAA;CAAE,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;IAC1D,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,oBAAoB,CAAC;IAClE,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,oBAAoB,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CACtC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/transact-write/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,uBAAuB,CAAC;AAG/B,KAAK,kBAAkB,GAAG,WAAW,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC,CAAC;AAClF,KAAK,iBAAiB,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACxE,KAAK,oBAAoB,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,KAAK,oBAAoB,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC9E,KAAK,4BAA4B,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE9F;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAEpE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;AAE7E;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,4BAA4B,CAAC;AAExE;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,GAAG,EAAE,GAAG,CAAA;CAAE,GACZ;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GACf;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,GACf;IAAE,cAAc,EAAE,GAAG,CAAA;CAAE,CAAC;AAE5B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC7C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,oBAAoB,CAAC;IACrE,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,oBAAoB,CAAC;IAC3E,QAAQ,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,oBAAoB,CAAC;IAC3E,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,4BAA4B,KAAK,oBAAoB,CAAC;IAC3F,QAAQ,CAAC,sBAAsB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,oBAAoB,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,yBAAyB,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,0BAA0B,CAAC,CAAC;CAC7D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-update-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/update/create-update-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAgC,SAAS,EAA4B,MAAM,WAAW,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EACvC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACnB,MAAM,EAAE,cAAc,EACtB,cAAc,GAAE,SAAS,EAAO,EAChC,aAAa,GAAE;IACb,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;CACuB,EAChD,UAAU,GAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAsB,EACnF,YAAY,SAAI,EAChB,gBAAgB,UAAQ,EACxB,MAAM,CAAC,EAAE,cAAc,GACtB,aAAa,CAAC,KAAK,CAAC,CAkQtB"}
1
+ {"version":3,"file":"create-update-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/update/create-update-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAgC,SAAS,EAA4B,MAAM,WAAW,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EACvC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EACnB,MAAM,EAAE,cAAc,EACtB,cAAc,GAAE,SAAS,EAAO,EAChC,aAAa,GAAE;IACb,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,EAAE,YAAY,EAAE,CAAC;CACuB,EAChD,UAAU,GAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAsB,EACnF,YAAY,SAAI,EAChB,gBAAgB,UAAQ,EACxB,MAAM,CAAC,EAAE,cAAc,GACtB,aAAa,CAAC,KAAK,CAAC,CAwStB"}
@@ -28,8 +28,32 @@ function createUpdateBuilder(tableName, key, client, prevConditions = [], update
28
28
  const condition = fn(attrs, opBuilder);
29
29
  return createUpdateBuilder(tableName, key, client, [...conditions, condition], updateActions, returnMode, valueCounter, enableTimestamps, logger);
30
30
  },
31
- set(attr, value) {
32
- const attrName = normalizeAttr(attr);
31
+ set(attrOrUpdates, value) {
32
+ // Check if this is a multiple updates object
33
+ // An AttrRef has only 'name' property and is a string value
34
+ // Multiple updates is an object with no value parameter
35
+ if (value === undefined &&
36
+ typeof attrOrUpdates === 'object' &&
37
+ attrOrUpdates !== null &&
38
+ !(Object.keys(attrOrUpdates).length === 1 &&
39
+ 'name' in attrOrUpdates &&
40
+ typeof attrOrUpdates.name === 'string')) {
41
+ // Multiple updates case
42
+ const updates = attrOrUpdates;
43
+ const newActions = [];
44
+ for (const [attr, val] of Object.entries(updates)) {
45
+ const attrName = attr;
46
+ const valueName = getUniqueValueName(attrName);
47
+ newActions.push({
48
+ expression: `#${attrName} = :${valueName}`,
49
+ names: { [`#${attrName}`]: attrName },
50
+ values: { [`:${valueName}`]: val },
51
+ });
52
+ }
53
+ return createUpdateBuilder(tableName, key, client, conditions, { ...updateActions, set: [...updateActions.set, ...newActions] }, returnMode, valueCounter, enableTimestamps, logger);
54
+ }
55
+ // Single update case
56
+ const attrName = normalizeAttr(attrOrUpdates);
33
57
  const valueName = getUniqueValueName(attrName);
34
58
  const action = {
35
59
  expression: `#${attrName} = :${valueName}`,
@@ -165,15 +189,12 @@ function createUpdateBuilder(tableName, key, client, prevConditions = [], update
165
189
  const params = build().dbParams();
166
190
  const response = await client.send(new lib_dynamodb_1.UpdateCommand(params));
167
191
  logger?.log('UpdateCommand', params, response);
168
- // Return the updated item based on returnMode
169
- if (returnMode === 'ALL_NEW' && response.Attributes) {
170
- return response.Attributes;
171
- }
172
- if (returnMode === 'UPDATED_NEW' && response.Attributes) {
192
+ // Return the item based on returnMode
193
+ if (response.Attributes) {
173
194
  return response.Attributes;
174
195
  }
175
- // For other modes, return the key as a fallback
176
- return key;
196
+ // If no attributes returned (NONE mode), return undefined
197
+ return undefined;
177
198
  },
178
199
  });
179
200
  return build();
@@ -1,3 +1,4 @@
1
+ import type { UpdateCommandInput } from '@aws-sdk/lib-dynamodb';
1
2
  import { OperationBuilder, AttrRef } from '../shared';
2
3
  /**
3
4
  * Update actions that can be performed on attributes
@@ -10,11 +11,12 @@ export type UpdateAction = {
10
11
  /**
11
12
  * Builder interface for DynamoDB UpdateItem operations
12
13
  */
13
- export interface UpdateBuilder<Model> extends OperationBuilder<Model> {
14
+ export interface UpdateBuilder<Model> extends Omit<OperationBuilder<Model>, 'dbParams'> {
14
15
  /**
15
- * Sets an attribute to a specific value
16
+ * Sets an attribute to a specific value, or sets multiple attributes at once
16
17
  */
17
18
  set(attr: keyof Model | AttrRef, value: any): UpdateBuilder<Model>;
19
+ set(updates: Partial<Model>): UpdateBuilder<Model>;
18
20
  /**
19
21
  * Removes an attribute from the item
20
22
  */
@@ -31,5 +33,9 @@ export interface UpdateBuilder<Model> extends OperationBuilder<Model> {
31
33
  * Configures what values should be returned after the update operation
32
34
  */
33
35
  returning(mode: 'NONE' | 'ALL_OLD' | 'ALL_NEW' | 'UPDATED_OLD' | 'UPDATED_NEW'): UpdateBuilder<Model>;
36
+ /**
37
+ * Converts the builder state to DynamoDB UpdateItem parameters
38
+ */
39
+ dbParams(): UpdateCommandInput;
34
40
  }
35
41
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/update/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,CAAE,SAAQ,gBAAgB,CAAC,KAAK,CAAC;IACnE;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnE;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1D;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnE;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEtE;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GACnE,aAAa,CAAC,KAAK,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/update/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,KAAK,CAAE,SAAQ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IACrF;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAE1D;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEnE;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEtE;;OAEG;IACH,SAAS,CACP,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GACnE,aAAa,CAAC,KAAK,CAAC,CAAC;IAExB;;OAEG;IACH,QAAQ,IAAI,kBAAkB,CAAC;CAChC"}
@@ -84,6 +84,7 @@ export type ModelDefinition = {
84
84
  export type SchemaParams = {
85
85
  isoDates?: boolean;
86
86
  timestamps?: boolean;
87
+ cleanInternalKeys?: boolean;
87
88
  };
88
89
  /**
89
90
  * Complete schema definition for a DynamoDB table
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,GAAG,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,aAAa,CAAC;IAClB,EAAE,EAAE,aAAa,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,EAAE,oBAAoB,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CACjD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,iBAAiB,GAC3C,MAAM,GACN,CAAC,SAAS,iBAAiB,GACzB,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,OAAO,GACP,CAAC,SAAS,eAAe,GACvB,IAAI,GACJ,OAAO,CAAC;AAIlB;;;GAGG;AACH,KAAK,sBAAsB,CAAC,CAAC,SAAS,eAAe,IAAI;KACtD,CAAC,IAAI,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAC1E,KAAK,GACL,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAC3C,CAAC,GACD,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACpD,GAAG;KACD,CAAC,IAAI,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAC1E,KAAK,GACL,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,KAAK,CAAA;KAAE,GAC5C,CAAC,GACD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,GAC3C,KAAK,GACL,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,eAAe,IAAI;KACnD,CAAC,IAAI,MAAM,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAC1E,CAAC,GACD,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,GAAG,MAAM,MAAM,MAAM,GAAG,IAAI,MAAM,IAAI,EAAE,GAC3F,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAC/B,KAAK,CAAC;AAEV;;GAEG;AACH,KAAK,cAAc,CAAC,CAAC,SAAS,eAAe,IACzC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAC5C,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjD;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,eAAe,IACzC,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAC5C;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CACrE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GACnB,KAAK,CAAC;AAEZ;;GAEG;AACH,KAAK,OAAO,CAAC,CAAC,SAAS,eAAe,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAE9E,KAAK,WAAW,CAAC,CAAC,SAAS,eAAe,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,CAAC,CAAC,YAAY,CAAC,GAC3F,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAEV,KAAK,yBAAyB,CAC5B,CAAC,SAAS,eAAe,EACzB,CAAC,SAAS,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAC3B,CAAC,SAAS,MAAM,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;AAE5E;;GAEG;AACH,KAAK,YAAY,CAAC,CAAC,SAAS,eAAe,IAAI;KAC5C,CAAC,IAAI,MAAM,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;QACjE,QAAQ,EAAE,IAAI,CAAC;KAChB,GACG,CAAC,GACD,KAAK;CACV,CAAC,MAAM,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnC;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,IAAI;KACjD,CAAC,IAAI,MAAM,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAC9D,CAAC,GACD,KAAK,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzC,GAAG;KACD,CAAC,IAAI,MAAM,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,CAAC,CAAC,GAC9D,KAAK,GACL,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtC,GAAG;KACD,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,GAAG,MAAM;CAC5C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,gBAAgB,EAC1B,SAAS,SAAS,MAAM,CAAC,CAAC,QAAQ,CAAC,IACjC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAEvC;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,sBAAsB,CAAC,CAAC,CAAC,GACzE,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAEzB;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAC9B,CAAC,SAAS,gBAAgB,EAC1B,SAAS,SAAS,MAAM,CAAC,CAAC,QAAQ,CAAC,IACjC,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,UAAU,EAAE,IAAI,CAAA;CAAE,GACxC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,eAAe,GACzD,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAE5C;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;KAC9E,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM;CAC9B,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAC/C;KACG,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,MAAM;CAChC,GACD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAE7B;;GAEG;AACH,KAAK,eAAe,CAAC,CAAC,SAAS,eAAe,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,eAAe,IAAI;KACpD,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM;CAClC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { InferInput, InferKeyInput, InferModel, ModelDefinition } from '../core/types';
3
+ import { EntityAPI, EntityAPIOptions } from './types';
4
+ /**
5
+ * Creates an entity API instance with validation, key resolution, and builder creation.
6
+ *
7
+ * @param tableName - The name of the DynamoDB table
8
+ * @param modelName - The name of the model/entity
9
+ * @param model - The model definition
10
+ * @param client - DynamoDB client instance
11
+ * @param options - Optional configuration (logger, timestamps, cleanInternalKeys)
12
+ * @returns EntityAPI with get, put, query, scan, update, delete, batchGet, and batchWrite methods
13
+ */
14
+ export declare const createEntityAPI: <Model extends ModelDefinition>(tableName: string, modelName: string, model: Model, client: DynamoDBClient, options?: EntityAPIOptions) => EntityAPI<InferModel<Model>, InferInput<Model>, InferKeyInput<Model>>;
15
+ //# sourceMappingURL=create-entity-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-entity-api.d.ts","sourceRoot":"","sources":["../../src/entity/create-entity-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AActF,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKtD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,SAAS,eAAe,EAC3D,WAAW,MAAM,EACjB,WAAW,MAAM,EACjB,OAAO,KAAK,EACZ,QAAQ,cAAc,EACtB,UAAS,gBAAqB,KAC7B,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CA8KtE,CAAC"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEntityAPI = void 0;
4
+ const model_utils_1 = require("../utils/model-utils");
5
+ const zod_utils_1 = require("../utils/zod-utils");
6
+ const builders_1 = require("../builders");
7
+ const with_middleware_1 = require("./middleware/with-middleware");
8
+ const factories_1 = require("./middleware/factories");
9
+ const key_validation_1 = require("./validation/key-validation");
10
+ /**
11
+ * Creates an entity API instance with validation, key resolution, and builder creation.
12
+ *
13
+ * @param tableName - The name of the DynamoDB table
14
+ * @param modelName - The name of the model/entity
15
+ * @param model - The model definition
16
+ * @param client - DynamoDB client instance
17
+ * @param options - Optional configuration (logger, timestamps, cleanInternalKeys)
18
+ * @returns EntityAPI with get, put, query, scan, update, delete, batchGet, and batchWrite methods
19
+ */
20
+ const createEntityAPI = (tableName, modelName, model, client, options = {}) => {
21
+ const { logger, timestamps = false, cleanInternalKeys = false } = options;
22
+ // Build a Zod schema from the model
23
+ const zodSchema = (0, zod_utils_1.modelToZod)(model);
24
+ return {
25
+ get(key) {
26
+ // Validate key fields
27
+ (0, key_validation_1.validateKeyFields)(modelName, model, key, 'get()');
28
+ // Resolve any key defaults or computed keys
29
+ const fullKey = (0, model_utils_1.resolveKeys)(model, key);
30
+ const builder = (0, builders_1.createGetBuilder)(tableName, fullKey, client, undefined, logger);
31
+ return (0, with_middleware_1.withMiddleware)(builder, (0, factories_1.createCleanKeysMiddleware)(cleanInternalKeys));
32
+ },
33
+ put(item) {
34
+ // Validate full input data
35
+ const parsed = zodSchema.parse(item);
36
+ // Apply post-processing defaults from the model (including timestamps for new items)
37
+ const withDefaults = (0, model_utils_1.applyPostDefaults)(model, parsed, {
38
+ isUpdate: false,
39
+ timestamps,
40
+ });
41
+ // Resolve keys again with defaults
42
+ const fullKey = (0, model_utils_1.resolveKeys)(model, withDefaults);
43
+ // Combine keys and data into full item, adding _type field
44
+ const fullItem = {
45
+ ...withDefaults,
46
+ ...fullKey,
47
+ _type: modelName, // Add entity type identifier
48
+ };
49
+ return (0, builders_1.createPutBuilder)(tableName, fullItem, client, [], false, 'NONE', false, logger);
50
+ },
51
+ query() {
52
+ // Query builder doesn't have execute() until after .where() is called
53
+ // The cleanInternalKeys will be handled in the builder itself
54
+ return (0, builders_1.createQueryBuilder)(tableName, client, model, logger);
55
+ },
56
+ scan() {
57
+ const builder = (0, builders_1.createScanBuilder)(tableName, client, [], [], undefined, false, undefined, undefined, undefined, logger);
58
+ return (0, with_middleware_1.withMiddleware)(builder, (0, factories_1.createCleanKeysMiddleware)(cleanInternalKeys));
59
+ },
60
+ update(key) {
61
+ // Validate key fields
62
+ (0, key_validation_1.validateKeyFields)(modelName, model, key, 'update()');
63
+ // Resolve any key defaults or computed keys
64
+ const fullKey = (0, model_utils_1.resolveKeys)(model, key);
65
+ const builder = (0, builders_1.createUpdateBuilder)(tableName, fullKey, client, [], { set: [], remove: [], add: [], delete: [] }, 'NONE', 0, timestamps, logger);
66
+ return (0, with_middleware_1.withMiddleware)(builder, (0, factories_1.createCleanKeysMiddleware)(cleanInternalKeys));
67
+ },
68
+ delete(key) {
69
+ // Validate key fields
70
+ (0, key_validation_1.validateKeyFields)(modelName, model, key, 'delete()');
71
+ // Resolve any key defaults or computed keys
72
+ const fullKey = (0, model_utils_1.resolveKeys)(model, key);
73
+ const builder = (0, builders_1.createDeleteBuilder)(tableName, fullKey, client, [], 'NONE', logger);
74
+ return (0, with_middleware_1.withMiddleware)(builder, (0, factories_1.createCleanKeysMiddleware)(cleanInternalKeys));
75
+ },
76
+ batchGet(keys) {
77
+ // Process all keys and validate them
78
+ const resolvedKeys = keys.map((key) => {
79
+ // Validate key fields
80
+ (0, key_validation_1.validateKeyFields)(modelName, model, key, 'batchGet()');
81
+ // Resolve any key defaults or computed keys
82
+ return (0, model_utils_1.resolveKeys)(model, key);
83
+ });
84
+ // Create the request items in the format expected by BatchGetItem
85
+ const requestItems = {
86
+ [tableName]: {
87
+ Keys: resolvedKeys,
88
+ },
89
+ };
90
+ const builder = (0, builders_1.createBatchGetBuilder)(requestItems, client, undefined, logger);
91
+ return (0, with_middleware_1.withMiddleware)(builder, (0, factories_1.createCleanKeysMiddleware)(cleanInternalKeys));
92
+ },
93
+ batchWrite(items) {
94
+ // Validate and process all items
95
+ const processedItems = items.map((item) => {
96
+ // Validate full input data
97
+ const parsed = zodSchema.parse(item);
98
+ // Apply post-processing defaults from the model (including timestamps for new items)
99
+ const withDefaults = (0, model_utils_1.applyPostDefaults)(model, parsed, {
100
+ isUpdate: false,
101
+ timestamps,
102
+ });
103
+ // Resolve keys again with defaults
104
+ const fullKey = (0, model_utils_1.resolveKeys)(model, withDefaults);
105
+ // Combine keys and data into full item, adding _type field
106
+ return {
107
+ ...withDefaults,
108
+ ...fullKey,
109
+ _type: modelName, // Add entity type identifier
110
+ };
111
+ });
112
+ // Create the request items in the format expected by BatchWriteItem
113
+ const requestItems = {
114
+ [tableName]: processedItems.map((item) => ({
115
+ PutRequest: {
116
+ Item: item,
117
+ },
118
+ })),
119
+ };
120
+ return (0, builders_1.createBatchWriteBuilder)(requestItems, client, logger);
121
+ },
122
+ };
123
+ };
124
+ exports.createEntityAPI = createEntityAPI;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Entity API module
3
+ *
4
+ * Provides high-level entity management with validation, key resolution, and builder creation.
5
+ */
6
+ export type { EntityAPI, EntityAPIOptions } from './types';
7
+ export type { ExecutionMiddleware } from './middleware/types';
8
+ export { withMiddleware } from './middleware/with-middleware';
9
+ export { createCleanKeysMiddleware } from './middleware/factories';
10
+ export { validateKeyFields } from './validation/key-validation';
11
+ export { createEntityAPI } from './create-entity-api';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * Entity API module
4
+ *
5
+ * Provides high-level entity management with validation, key resolution, and builder creation.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createEntityAPI = exports.validateKeyFields = exports.createCleanKeysMiddleware = exports.withMiddleware = void 0;
9
+ var with_middleware_1 = require("./middleware/with-middleware");
10
+ Object.defineProperty(exports, "withMiddleware", { enumerable: true, get: function () { return with_middleware_1.withMiddleware; } });
11
+ var factories_1 = require("./middleware/factories");
12
+ Object.defineProperty(exports, "createCleanKeysMiddleware", { enumerable: true, get: function () { return factories_1.createCleanKeysMiddleware; } });
13
+ // Validation utilities
14
+ var key_validation_1 = require("./validation/key-validation");
15
+ Object.defineProperty(exports, "validateKeyFields", { enumerable: true, get: function () { return key_validation_1.validateKeyFields; } });
16
+ // Main entity API factory
17
+ var create_entity_api_1 = require("./create-entity-api");
18
+ Object.defineProperty(exports, "createEntityAPI", { enumerable: true, get: function () { return create_entity_api_1.createEntityAPI; } });
@@ -0,0 +1,6 @@
1
+ import { ExecutionMiddleware } from './types';
2
+ /**
3
+ * Creates middleware configuration for cleaning internal keys
4
+ */
5
+ export declare function createCleanKeysMiddleware(shouldClean: boolean): ExecutionMiddleware;
6
+ //# sourceMappingURL=factories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.d.ts","sourceRoot":"","sources":["../../../src/entity/middleware/factories.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,OAAO,GAAG,mBAAmB,CAQnF"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCleanKeysMiddleware = createCleanKeysMiddleware;
4
+ const model_utils_1 = require("../../utils/model-utils");
5
+ /**
6
+ * Creates middleware configuration for cleaning internal keys
7
+ */
8
+ function createCleanKeysMiddleware(shouldClean) {
9
+ if (!shouldClean) {
10
+ return {};
11
+ }
12
+ return {
13
+ after: (result) => (0, model_utils_1.stripInternalKeys)(result),
14
+ };
15
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Middleware hooks for builder execution
3
+ */
4
+ export type ExecutionMiddleware<T = any> = {
5
+ before?: () => void | Promise<void>;
6
+ after?: (result: T) => T | Promise<T>;
7
+ };
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/entity/middleware/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,GAAG,IAAI;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACvC,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { ExecutionMiddleware } from './types';
2
+ /**
3
+ * Applies middleware hooks to a builder's execute method
4
+ */
5
+ export declare function withMiddleware<B extends {
6
+ execute: () => Promise<any>;
7
+ }>(builder: B, middleware: ExecutionMiddleware): B;
8
+ //# sourceMappingURL=with-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-middleware.d.ts","sourceRoot":"","sources":["../../../src/entity/middleware/with-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;CAAE,EACtE,OAAO,EAAE,CAAC,EACV,UAAU,EAAE,mBAAmB,GAC9B,CAAC,CA2BH"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withMiddleware = withMiddleware;
4
+ /**
5
+ * Applies middleware hooks to a builder's execute method
6
+ */
7
+ function withMiddleware(builder, middleware) {
8
+ const { before, after } = middleware;
9
+ // If no middleware hooks provided, return builder as-is
10
+ if (!before && !after) {
11
+ return builder;
12
+ }
13
+ return {
14
+ ...builder,
15
+ execute: async () => {
16
+ // Before execution hook
17
+ if (before) {
18
+ await before();
19
+ }
20
+ // Execute original builder
21
+ const result = await builder.execute();
22
+ // After execution hook
23
+ if (after) {
24
+ return await after(result);
25
+ }
26
+ return result;
27
+ },
28
+ };
29
+ }
@@ -1,18 +1,17 @@
1
- import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
- import { InferInput, InferKeyInput, InferModel, ModelDefinition } from './core/types';
3
- import { GetBuilder, PutBuilder, QueryBuilder, UpdateBuilder, DeleteBuilder, ScanBuilder, BatchGetBuilder, BatchWriteBuilder } from './builders';
4
- import { DynamoDBLogger } from './utils/dynamodb-logger';
1
+ import { DynamoDBLogger } from '../utils/dynamodb-logger';
2
+ import { GetBuilder, PutBuilder, QueryBuilder, UpdateBuilder, DeleteBuilder, ScanBuilder, BatchGetBuilder, BatchWriteBuilder } from '../builders';
5
3
  /**
6
4
  * Options for creating the Entity API
7
5
  */
8
6
  export type EntityAPIOptions = {
9
7
  logger?: DynamoDBLogger;
10
8
  timestamps?: boolean;
9
+ cleanInternalKeys?: boolean;
11
10
  };
12
11
  /**
13
12
  * Entity API interface for a model
14
13
  */
15
- export type EntityAPI<Model, Input, KeyInput, ModelDef extends ModelDefinition = any> = {
14
+ export type EntityAPI<Model, Input, KeyInput> = {
16
15
  /**
17
16
  * Retrieves an item by its key.
18
17
  * @param key - Partial or full key object to identify the item
@@ -29,7 +28,7 @@ export type EntityAPI<Model, Input, KeyInput, ModelDef extends ModelDefinition =
29
28
  * Queries items using key conditions.
30
29
  * @returns QueryBuilder for building and executing the query
31
30
  */
32
- query: () => QueryBuilder<Model, ModelDef>;
31
+ query: () => QueryBuilder<Model>;
33
32
  /**
34
33
  * Scans the entire table or index without key conditions.
35
34
  * @returns ScanBuilder for building and executing the scan
@@ -60,14 +59,4 @@ export type EntityAPI<Model, Input, KeyInput, ModelDef extends ModelDefinition =
60
59
  */
61
60
  batchWrite: (items: Input[]) => BatchWriteBuilder;
62
61
  };
63
- /**
64
- * Creates an entity API instance with validation, key resolution, and builder creation.
65
- *
66
- * @param modelName - The name of the model/entity
67
- * @param model - The model definition
68
- * @param client - DynamoDB client instance
69
- * @param options - Optional configuration (logger, timestamps)
70
- * @returns EntityAPI with get and put methods
71
- */
72
- export declare const createEntityAPI: <Model extends ModelDefinition>(tableName: string, modelName: string, model: Model, client: DynamoDBClient, options?: EntityAPIOptions) => EntityAPI<InferModel<Model>, InferInput<Model>, InferKeyInput<Model>, Model>;
73
- //# sourceMappingURL=entity.d.ts.map
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entity/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,IAAI;IAC9C;;;;OAIG;IACH,GAAG,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAEpD;;;;OAIG;IACH,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;IAExC;;;OAGG;IACH,KAAK,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;IAEjC;;;OAGG;IACH,IAAI,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IAE/B;;;;OAIG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IAEhD;;;;OAIG;IACH,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;IAEhD;;;;OAIG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvD;;;;OAIG;IACH,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,iBAAiB,CAAC;CACnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { ModelDefinition } from '../../core/types';
2
+ /**
3
+ * Validates that all required key fields are present in the key object
4
+ * @throws Error if any required key fields are missing
5
+ */
6
+ export declare function validateKeyFields(modelName: string, model: ModelDefinition, key: Record<string, unknown>, operation?: string): void;
7
+ //# sourceMappingURL=key-validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-validation.d.ts","sourceRoot":"","sources":["../../../src/entity/validation/key-validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/C;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI,CAmBN"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.validateKeyFields = validateKeyFields;
5
+ const model_utils_1 = require("../../utils/model-utils");
6
+ /**
7
+ * Validates that all required key fields are present in the key object
8
+ * @throws Error if any required key fields are missing
9
+ */
10
+ function validateKeyFields(modelName, model, key, operation) {
11
+ // Extract required fields from key templates
12
+ const requiredFields = new Set();
13
+ if (model.key) {
14
+ for (const keyDef of Object.values(model.key)) {
15
+ (0, model_utils_1.extractTemplateVars)(keyDef.value).forEach((field) => requiredFields.add(field));
16
+ }
17
+ }
18
+ // Check if all required fields are present
19
+ const missingFields = Array.from(requiredFields).filter((field) => key[field] === undefined);
20
+ if (missingFields.length > 0) {
21
+ const operationSuffix = operation ? ` for ${operation}` : '';
22
+ throw new Error(`[${modelName}] Missing required key field(s)${operationSuffix}: ${missingFields.join(', ')}. ` +
23
+ `Required fields: ${Array.from(requiredFields).join(', ')}`);
24
+ }
25
+ }
package/dist/table.d.ts CHANGED
@@ -17,11 +17,18 @@ export type TableConfig<S extends SchemaDefinition> = {
17
17
  /** The schema definition for all models in the table */
18
18
  schema: S;
19
19
  };
20
+ /**
21
+ * Helper type to force TypeScript to expand/simplify a type.
22
+ * This helps with type inference in callbacks by making the type "concrete".
23
+ */
24
+ type Simplify<T> = {
25
+ [K in keyof T]: T[K];
26
+ } & {};
20
27
  /**
21
28
  * Internal helper type to infer all entity APIs from schema definition
22
29
  */
23
30
  type EntityMap<S extends SchemaDefinition> = {
24
- [K in keyof S['models']]: EntityAPI<InferModelFromSchema<S, K>, InferInputFromSchema<S, K>, InferKeyInput<S['models'][K]>>;
31
+ [K in keyof S['models']]: EntityAPI<Simplify<InferModelFromSchema<S, K>>, Simplify<InferInputFromSchema<S, K>>, Simplify<InferKeyInput<S['models'][K]>>>;
25
32
  };
26
33
  /**
27
34
  * Represents a typed DynamoDB Table with entity APIs
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAA8B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAA4B,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAAI;IACpD,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF;;GAEG;AACH,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,IAAI;KAC1C,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CACjC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1B,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9B;CACF,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,gBAAgB;IAC3C,4BAA4B;IAC5B,SAAgB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvC,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAsBlC;;;;;;;;;;;;;OAaG;IACH,aAAa,IAAI,oBAAoB;IAIrC;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,kBAAkB;CAGlC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAmB,SAAS,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAA8B,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAA4B,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAAI;IACpD,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,uDAAuD;IACvD,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,wDAAwD;IACxD,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF;;;GAGG;AACH,KAAK,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAEjD;;GAEG;AACH,KAAK,SAAS,CAAC,CAAC,SAAS,gBAAgB,IAAI;KAC1C,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CACjC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACpC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACpC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxC;CACF,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,KAAK,CAAC,CAAC,SAAS,gBAAgB;IAC3C,4BAA4B;IAC5B,SAAgB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAEvC,sBAAsB;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAuBlC;;;;;;;;;;;;;OAaG;IACH,aAAa,IAAI,oBAAoB;IAIrC;;;;;;;;;;;;;OAaG;IACH,WAAW,IAAI,kBAAkB;CAGlC"}
package/dist/table.js CHANGED
@@ -27,6 +27,7 @@ class Table {
27
27
  rawEntities[modelName] = (0, entity_1.createEntityAPI)(tableName, modelName, model, client, {
28
28
  logger,
29
29
  timestamps: schema.params?.timestamps ?? false,
30
+ cleanInternalKeys: schema.params?.cleanInternalKeys ?? false,
30
31
  });
31
32
  }
32
33
  this.entities = rawEntities;
@@ -1,4 +1,4 @@
1
- import { InferModel, ModelDefinition } from '@/core/types';
1
+ import { InferModel, ModelDefinition } from '../core/types';
2
2
  /**
3
3
  * Extracts all variable names from a template string
4
4
  * @param template - Template string with ${variable} syntax
@@ -21,4 +21,10 @@ export declare const applyPostDefaults: <M extends ModelDefinition>(model: M, va
21
21
  isUpdate?: boolean;
22
22
  timestamps?: boolean;
23
23
  }) => InferModel<M>;
24
+ /**
25
+ * Removes internal DynamoDB keys from an item or array of items
26
+ * @param data - Single item or array of items from DynamoDB
27
+ * @returns Data with internal keys removed
28
+ */
29
+ export declare const stripInternalKeys: <T>(data: T | T[] | undefined) => T | T[] | undefined;
24
30
  //# sourceMappingURL=model-utils.d.ts.map