public unmarshallValue()

in packages/dynamodb-auto-marshaller/src/Marshaller.ts [175:236]


    public unmarshallValue(item: AttributeValue): UnmarshalledAttributeValue {
        if (item.S !== undefined) {
            return item.S;
        }

        if (item.N !== undefined) {
            return this.unwrapNumbers
                ? Number(item.N)
                : new NumberValue(item.N);
        }

        if (item.B !== undefined) {
            return item.B as BinaryValue;
        }

        if (item.BOOL !== undefined) {
            return item.BOOL;
        }

        if (item.NULL !== undefined) {
            return null;
        }

        if (item.SS !== undefined) {
            const set = new Set<string>();
            for (let member of item.SS) {
                set.add(member);
            }
            return set;
        }

        if (item.NS !== undefined) {
            if (this.unwrapNumbers) {
                const set = new Set<number>();
                for (let member of item.NS) {
                    set.add(Number(member));
                }
                return set;
            }

            return new NumberValueSet(
                item.NS.map(numberString => new NumberValue(numberString))
            );
        }

        if (item.BS !== undefined) {
            return new BinarySet(item.BS as Array<BinaryValue>);
        }

        if (item.L !== undefined) {
            return item.L.map(this.unmarshallValue.bind(this));
        }

        const {M = {}} = item;
        return Object.keys(M).reduce(
            (map: UnmarshalledMapAttributeValue, key: string) => {
                map[key] = this.unmarshallValue(M[key]);
                return map;
            },
            {}
        );
    }