34 lines
1.1 KiB
JavaScript
34 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.serde = serde;
|
|
const option_1 = require("./option");
|
|
const ContextKind = Object.freeze({
|
|
Class: 'class',
|
|
Method: 'method',
|
|
Getter: 'getter',
|
|
Setter: 'setter',
|
|
Field: 'field',
|
|
Accessor: 'accessor'
|
|
});
|
|
function decorateClass(target, context, options) {
|
|
const serde = context.metadata.serde;
|
|
context.metadata.serde = new option_1.SerdeOptions(target, options, serde === null || serde === void 0 ? void 0 : serde.properties);
|
|
}
|
|
function decorateField(context, options) {
|
|
const serde = context.metadata.serde || new option_1.SerdeOptions(undefined);
|
|
serde.properties.set(context.name, options);
|
|
context.metadata.serde = serde;
|
|
}
|
|
function serde(options) {
|
|
return function (target, context) {
|
|
switch (context.kind) {
|
|
case ContextKind.Class:
|
|
decorateClass(target, context, options);
|
|
break;
|
|
case ContextKind.Field:
|
|
decorateField(context, options);
|
|
default:
|
|
break;
|
|
}
|
|
};
|
|
}
|