private collectSet()

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};
        }
    }