@dasch-swiss/dsp-js
Version:
TypeScript client library for DSP-API
54 lines • 2.19 kB
JavaScript
var ListNodeCommentsConverter_1;
import { __decorate } from "tslib";
import { JsonConvert, JsonConverter, OperationMode, ValueCheckingMode, PropertyMatchingRule, } from 'json2typescript';
import { StringLiteralV2 } from '../string-literal-v2';
/**
* Converter for list node comments that handles both plain strings
* and objects with @language/@value properties.
*
* The API may return comments as:
* - Plain string: "Some comment"
* - Object: { "@language": "en", "@value": "Some comment" }
* - Array of objects: [{ "@language": "en", "@value": "..." }, ...]
*
* @category Internal
*/
let ListNodeCommentsConverter = class ListNodeCommentsConverter {
static { ListNodeCommentsConverter_1 = this; }
static { this.jsonConvert = new JsonConvert(OperationMode.ENABLE, ValueCheckingMode.DISALLOW_NULL, false, PropertyMatchingRule.CASE_STRICT); }
serialize(item) {
if (item.length > 1) {
return ListNodeCommentsConverter_1.jsonConvert.serializeArray(item, StringLiteralV2);
}
else {
return ListNodeCommentsConverter_1.jsonConvert.serializeObject(item[0], StringLiteralV2);
}
}
deserialize(item) {
// Handle plain string (no language tag)
if (typeof item === 'string') {
const literal = new StringLiteralV2();
literal.value = item;
return [literal];
}
if (Array.isArray(item)) {
// Handle array of strings or objects
return item.map(i => {
if (typeof i === 'string') {
const literal = new StringLiteralV2();
literal.value = i;
return literal;
}
return ListNodeCommentsConverter_1.jsonConvert.deserializeObject(i, StringLiteralV2);
});
}
else {
return [ListNodeCommentsConverter_1.jsonConvert.deserializeObject(item, StringLiteralV2)];
}
}
};
ListNodeCommentsConverter = ListNodeCommentsConverter_1 = __decorate([
JsonConverter
], ListNodeCommentsConverter);
export { ListNodeCommentsConverter };
//# sourceMappingURL=list-node-comments-converter.js.map