import { NativeAttributeValue } from '@aws-sdk/lib-dynamodb'; import { $set, $add, $ref, $subtract, $append, $prepend, $addToSet, $delete, $remove } from './update-symbols.js'; export { UpdateParserResult, parseUpdate } from './update-parser.js'; export { ref } from './ref.js'; export { remove } from './remove.js'; export { add } from './add.js'; export { subtract } from './subtract.js'; export { append } from './append.js'; export { prepend } from './prepend.js'; export { addToSet } from './add-to-set.js'; export { removeFromSet } from './remove-from-set.js'; /** * Type representing the different kinds of update operations. */ type UpdateType = 'SET' | 'REMOVE' | 'ADD' | 'DELETE'; /** * Type representing a reference to another attribute's value. */ type ValueReference = { type: typeof $ref; to: string; default?: ValueType; }; /** * Update expression from a REMOVE operation */ type RemoveExpression = { type: typeof $remove; }; /** * Update expression from a DELETE operation */ type DeleteExpression = { type: typeof $delete; values: NativeAttributeValue[] | ValueReference; }; /** * Update expression from an ADD operation */ type AddExpression = { type: typeof $set; op: typeof $add; value: number | ValueReference; }; /** * Update expression from a SUBTRACT operation */ type SubtractExpression = { type: typeof $set; op: typeof $subtract; value: number | ValueReference; }; /** * Update expression from an APPEND operation */ type AppendExpression = { type: typeof $set; op: typeof $append; values: NativeAttributeValue[] | ValueReference; }; /** * Update expression from a PREPEND operation */ type PrependExpression = { type: typeof $set; op: typeof $prepend; values: NativeAttributeValue[] | ValueReference; }; /** * Update expression from an ADD TO SET operation */ type AddToSetExpression = { type: typeof $add; op: typeof $addToSet; values: NativeAttributeValue[] | ValueReference; }; /** * Union type of all possible update expressions. */ type UpdateExpression = AddExpression | SubtractExpression | AppendExpression | PrependExpression | AddToSetExpression | DeleteExpression | RemoveExpression; /** * Type representing an update operation for an entity. */ type UpdateValues = Record; export type { AddExpression, AddToSetExpression, AppendExpression, DeleteExpression, PrependExpression, RemoveExpression, SubtractExpression, UpdateExpression, UpdateType, UpdateValues, ValueReference };