Repository: jeremydaly/dynamodb-toolbox (ts)

Issue:
[v0.4.0 Typescript] $append and $prepend not supported to update a list attribute
Tested version : v0.4.0-alpha.2

Issue :
`$append` and `$prepend` are [used in the library](https://github.com/jeremydaly/dynamodb-toolbox/blob/676a42f510bbd7ca0e6598a65d0eeab730784425/src/classes/Entity.ts#L1547), but are not defined in `UpdateItem` Typescript type.

Suggestion :
Add `$append` and `$prepend` in [attribute method possibilities](https://github.com/jeremydaly/dynamodb-toolbox/blob/676a42f510bbd7ca0e6598a65d0eeab730784425/src/classes/Entity.ts#L443).

Pull request description:
feat(types/entity-update): add prepend and append support
closes #244

Patch:
diff --git a/src/classes/Entity/types.ts b/src/classes/Entity/types.ts
index 1b30d5fc..cda5596d 100644
--- a/src/classes/Entity/types.ts
+++ b/src/classes/Entity/types.ts
@@ -378,19 +378,20 @@ export type UpdateItem<MethodItemOverlay extends Overlay,
     {
       [inputAttr in Attributes['always']['input']]:
       | Item[A.Cast<inputAttr, keyof Item>]
-      | { $delete?: string[]; $add?: any }
+      | { $delete?: string[]; $add?: any; $prepend?: any[]; $append?: any[]; }
     } &
     {
       [optAttr in Attributes['required']['all'] | Attributes['always']['default']]?:
       | Item[A.Cast<optAttr, keyof Item>]
-      | { $delete?: string[]; $add?: any }
+      | { $delete?: string[]; $add?: any; $prepend?: any[]; $append?: any[]; }
     } &
     {
       [attr in Attributes['optional']]?:
       | null
       | Item[A.Cast<attr, keyof Item>]
-      | { $delete?: string[]; $add?: any }
-    } & { $remove?: Attributes['optional'] | Attributes['optional'][] }>
+      | { $delete?: string[]; $add?: any; $append?: any[]; $prepend?: any[] }
+    } & { $remove?: Attributes['optional'] | Attributes['optional'][] }
+  >
 ]>
 
 export type DeleteOptionsReturnValues = 'NONE' | 'ALL_OLD'
diff --git a/src/classes/Table/types.ts b/src/classes/Table/types.ts
index 70ec33a1..debc2a81 100644
--- a/src/classes/Table/types.ts
+++ b/src/classes/Table/types.ts
@@ -6,8 +6,6 @@ import type { FilterExpressions } from '../../lib/expressionBuilder'
 import type { $ReadOptions, ConditionsOrFilters } from '../Entity'
 import type Table  from './Table';
 
-
-
 export interface TableConstructor<
   Name extends string,
   PartitionKey extends A.Key,


Test patch:
diff --git a/src/__tests__/entity.update.unit.test.ts b/src/__tests__/entity.update.unit.test.ts
index d50656b2..00aabf25 100644
--- a/src/__tests__/entity.update.unit.test.ts
+++ b/src/__tests__/entity.update.unit.test.ts
@@ -460,9 +460,7 @@ describe('update', () => {
       TestEntity.updateParams({
         email: 'test-pk',
         sort: 'test-sk',
-        // @ts-expect-error 💥 TODO: Improve list support
-        test_list: { $append: [1, 2, 3] },
-        // @ts-expect-error 💥 TODO: Improve list support
+        test_list: { $append: [1,2,3] },
         test_list_coerce: { $prepend: [1, 2, 3] }
       })
     expect(UpdateExpression).toBe(