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;
},
{}
);
}