in packages/dynamodb-auto-marshaller/src/Marshaller.ts [354:388]
private collectSet<T, R = T>(
set: Set<T>,
isEmpty: (element: T) => boolean,
tag: 'BS'|'NS'|'SS',
elementType: 'binary'|'number'|'string',
transform?: (arg: T) => R
): AttributeValue|undefined {
const values: Array<T|R> = [];
for (let element of set) {
if (getSetType(element) !== elementType) {
if (this.onInvalid === 'omit') {
continue;
}
throw new Error(
`Unable to serialize ${typeof element} as a member of a ${elementType} set`
);
}
if (
!isEmpty(element) ||
this.onEmpty === 'leave'
) {
values.push(transform ? transform(element) : element);
}
}
if (values.length > 0 || this.onEmpty === 'leave') {
return {[tag]: values};
}
if (this.onEmpty === 'nullify') {
return {NULL: true};
}
}